)]}'
{"cue/taskflow/flow/create_cluster.py":[{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"dbbcbe6e330bc23b3c1705e8f4f41145d8886f91","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                                                user_network_id,"},{"line_number":79,"context_line":"                                                management_network_id)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    #todo(dagnello): make retry times configurable"},{"line_number":82,"context_line":"    check_rabbit_online \u003d linear_flow.Flow("},{"line_number":83,"context_line":"        name\u003d\"wait for RabbitMQ ready state\","},{"line_number":84,"context_line":"        retry\u003dretry.Times(node_check_max_count, revert_all\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_c6197d89","line":81,"updated":"2015-07-29 22:35:32.000000000","message":"this todo can be removed since we are already grabbing retry from config file","commit_id":"80b2472d1a2b74efd443dcf052bb447870e804b3"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"e47ee2102695d8b2adb0e1fd773a8143f1697840","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                                                user_network_id,"},{"line_number":79,"context_line":"                                                management_network_id)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    #todo(dagnello): make retry times configurable"},{"line_number":82,"context_line":"    check_rabbit_online \u003d linear_flow.Flow("},{"line_number":83,"context_line":"        name\u003d\"wait for RabbitMQ ready state\","},{"line_number":84,"context_line":"        retry\u003dretry.Times(node_check_max_count, revert_all\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_dc606d10","line":81,"in_reply_to":"3a50d1a3_c6197d89","updated":"2015-07-29 23:09:50.000000000","message":"Done","commit_id":"80b2472d1a2b74efd443dcf052bb447870e804b3"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"dbbcbe6e330bc23b3c1705e8f4f41145d8886f91","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            name\u003d\"get RabbitMQ status\","},{"line_number":88,"context_line":"            rebind\u003d{\u0027vm_ip\u0027: \"vm_management_ip_0\"},"},{"line_number":89,"context_line":"            retry_delay_seconds\u003dnode_check_timeout))"},{"line_number":90,"context_line":"    flow.add(check_rabbit_online)"},{"line_number":91,"context_line":"    flow.link(generate_userdata, check_rabbit_online)"},{"line_number":92,"context_line":"    return flow"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_fc9d29bc","line":90,"updated":"2015-07-29 22:35:32.000000000","message":"the way you currently have the flow structured will result in the cluster being updated to ACTIVE state before we are actually checking that the nodes are indeed clustered.  \n\nwe should swap this task with the \"end_task\" above.  This way we will check for rabbit cluster first then update cluster/node records accordingly.","commit_id":"80b2472d1a2b74efd443dcf052bb447870e804b3"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"e47ee2102695d8b2adb0e1fd773a8143f1697840","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            name\u003d\"get RabbitMQ status\","},{"line_number":88,"context_line":"            rebind\u003d{\u0027vm_ip\u0027: \"vm_management_ip_0\"},"},{"line_number":89,"context_line":"            retry_delay_seconds\u003dnode_check_timeout))"},{"line_number":90,"context_line":"    flow.add(check_rabbit_online)"},{"line_number":91,"context_line":"    flow.link(generate_userdata, check_rabbit_online)"},{"line_number":92,"context_line":"    return flow"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_1ca81520","line":90,"in_reply_to":"3a50d1a3_fc9d29bc","updated":"2015-07-29 23:09:50.000000000","message":"Done","commit_id":"80b2472d1a2b74efd443dcf052bb447870e804b3"},{"author":{"_account_id":11316,"name":"Steve Leon","email":"kokhang@gmail.com","username":"kokhang"},"change_message_id":"a98d0de0e2f345e6bbff34171f9fad55898c200b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    node_check_timeout \u003d cfg.CONF.taskflow.cluster_node_check_timeout"},{"line_number":63,"context_line":"    node_check_max_count \u003d cfg.CONF.taskflow.cluster_node_check_max_count"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    check_rabbit_online \u003d linear_flow.Flow("},{"line_number":66,"context_line":"        name\u003d\"wait for RabbitMQ ready state\","},{"line_number":67,"context_line":"        retry\u003dretry.Times(node_check_max_count, revert_all\u003dTrue))"},{"line_number":68,"context_line":"    check_rabbit_online.add("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_c1c5b20a","line":65,"updated":"2015-07-30 21:47:26.000000000","message":"I dont think we should define the flow here. Here is to define the start and end tasks. Any intermediate task/flow should be added in create_cluster_node.py \nhttps://github.com/openstack/cue/blob/master/cue/taskflow/flow/create_cluster_node.py","commit_id":"619bf0cf394e33ef52bcde0b11cc7ef802e7a085"},{"author":{"_account_id":11316,"name":"Steve Leon","email":"kokhang@gmail.com","username":"kokhang"},"change_message_id":"cae8c7257e243cff408d088f7189e9922f4e1884","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    node_check_timeout \u003d cfg.CONF.taskflow.cluster_node_check_timeout"},{"line_number":63,"context_line":"    node_check_max_count \u003d cfg.CONF.taskflow.cluster_node_check_max_count"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    check_rabbit_online \u003d linear_flow.Flow("},{"line_number":66,"context_line":"        name\u003d\"wait for RabbitMQ ready state\","},{"line_number":67,"context_line":"        retry\u003dretry.Times(node_check_max_count, revert_all\u003dTrue))"},{"line_number":68,"context_line":"    check_rabbit_online.add("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_c7fdc209","line":65,"in_reply_to":"3a50d1a3_4ce6b917","updated":"2015-07-30 22:20:11.000000000","message":"If this is  the case, can we rename check_rabbit_online to be end_task. It just doesnt look like it is going with the flow (pun intended). Ie, we are just adding a task arbitrary here. Even create_cluster_node is expecting and \"end_task\" to be passed.","commit_id":"619bf0cf394e33ef52bcde0b11cc7ef802e7a085"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"07ee2c1e9b51c2f7470183a36e9fd4d3418af092","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    node_check_timeout \u003d cfg.CONF.taskflow.cluster_node_check_timeout"},{"line_number":63,"context_line":"    node_check_max_count \u003d cfg.CONF.taskflow.cluster_node_check_max_count"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    check_rabbit_online \u003d linear_flow.Flow("},{"line_number":66,"context_line":"        name\u003d\"wait for RabbitMQ ready state\","},{"line_number":67,"context_line":"        retry\u003dretry.Times(node_check_max_count, revert_all\u003dTrue))"},{"line_number":68,"context_line":"    check_rabbit_online.add("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_4ce6b917","line":65,"in_reply_to":"3a50d1a3_c1c5b20a","updated":"2015-07-30 21:57:57.000000000","message":"We are not using subflows, we\u0027re using a single graph flow","commit_id":"619bf0cf394e33ef52bcde0b11cc7ef802e7a085"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"1383159c7bcec25349874e956685104e634a932f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    node_check_timeout \u003d cfg.CONF.taskflow.cluster_node_check_timeout"},{"line_number":63,"context_line":"    node_check_max_count \u003d cfg.CONF.taskflow.cluster_node_check_max_count"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    check_rabbit_online \u003d linear_flow.Flow("},{"line_number":66,"context_line":"        name\u003d\"wait for RabbitMQ ready state\","},{"line_number":67,"context_line":"        retry\u003dretry.Times(node_check_max_count, revert_all\u003dTrue))"},{"line_number":68,"context_line":"    check_rabbit_online.add("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_d78006fa","line":65,"in_reply_to":"3a50d1a3_c7fdc209","updated":"2015-07-31 06:19:23.000000000","message":"I agree that create_cluster_node\u0027s argument name of \u0027end_task\u0027 is subjective.  Before, it literally meant the last task in the overall flow.  Now it more represents the task/subflow to run immediately after the subflow created by create_cluster_node has completed. I\u0027ll rename the arg in create_cluster_node to be something more appropriate like \u0027post_task\u0027 in my next patch (I\u0027m waiting to push due to some code-coverage gate checking going on).  \n\nThe \u0027end_task\u0027 task should stay named as is because it is still the last task to be ran (due to the link created between \u0027check_rabbit_online\u0027 and \u0027end_task\u0027 at line 75)","commit_id":"619bf0cf394e33ef52bcde0b11cc7ef802e7a085"},{"author":{"_account_id":11316,"name":"Steve Leon","email":"kokhang@gmail.com","username":"kokhang"},"change_message_id":"c339d0d02097ef3b2dd215a54d6f019541f0ca3e","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        create_cluster_node.create_cluster_node(cluster_id, i, node_id, flow,"},{"line_number":86,"context_line":"                                                generate_userdata, start_task,"},{"line_number":87,"context_line":"                                                check_rabbit_online,"},{"line_number":88,"context_line":"                                                node_check_timeout,"},{"line_number":89,"context_line":"                                                node_check_max_count,"},{"line_number":90,"context_line":"                                                user_network_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_a75af628","line":87,"range":{"start_line":87,"start_character":48,"end_line":87,"end_character":67},"updated":"2015-07-30 22:25:24.000000000","message":"It is confusing how the end_task is not being passed at the end_task that create_cluster_node expects. Can we rename these tasks?","commit_id":"986c9972af131921e18f5e414f5b14f1b02c5a47"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"bb769cc97c8b169c32e069a56fb0071f8c6350a2","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        create_cluster_node.create_cluster_node(cluster_id, i, node_id, flow,"},{"line_number":86,"context_line":"                                                generate_userdata, start_task,"},{"line_number":87,"context_line":"                                                check_rabbit_online,"},{"line_number":88,"context_line":"                                                node_check_timeout,"},{"line_number":89,"context_line":"                                                node_check_max_count,"},{"line_number":90,"context_line":"                                                user_network_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_97259e0b","line":87,"in_reply_to":"3a50d1a3_a75af628","updated":"2015-07-31 06:20:21.000000000","message":"Will address in my next patch","commit_id":"986c9972af131921e18f5e414f5b14f1b02c5a47"}],"cue/taskflow/flow/create_cluster_node.py":[{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"fef06ba1c01e9792e141b7748da8765e2ca9cebd","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        name\u003d\"wait for RabbitMQ ready state %s\" % node_name,"},{"line_number":164,"context_line":"        retry\u003dretry.Times(node_check_max_count, revert_all\u003dTrue))"},{"line_number":165,"context_line":"    check_rabbit_online.add("},{"line_number":166,"context_line":"        cue_tasks.GetRabbitClusterStatus("},{"line_number":167,"context_line":"            name\u003d\"get RabbitMQ status %s\" % node_name,"},{"line_number":168,"context_line":"            rebind\u003d{\u0027vm_ip\u0027: \"vm_management_ip_%d\" % node_number},"},{"line_number":169,"context_line":"            retry_delay_seconds\u003dnode_check_timeout))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_dc38b7d5","line":166,"updated":"2015-07-28 17:13:07.000000000","message":"we should move this task to the cluster check level.  It wouldn\u0027t really make sense to check if Rabbit is clustered n times for a cluster of size n.","commit_id":"c169ae95182084cc85c164ce79e4ad571c1e4e71"},{"author":{"_account_id":11316,"name":"Steve Leon","email":"kokhang@gmail.com","username":"kokhang"},"change_message_id":"4777d46a2afd3a648b704258ab9165e1bb94db8b","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        name\u003d\"wait for RabbitMQ ready state %s\" % node_name,"},{"line_number":164,"context_line":"        retry\u003dretry.Times(node_check_max_count, revert_all\u003dTrue))"},{"line_number":165,"context_line":"    check_rabbit_online.add("},{"line_number":166,"context_line":"        os_common.VerifyNetwork("},{"line_number":167,"context_line":"            name\u003d\"get RabbitMQ status %s\" % node_name,"},{"line_number":168,"context_line":"            rebind\u003d{\u0027vm_ip\u0027: \"vm_management_ip_%d\" % node_number},"},{"line_number":169,"context_line":"            retry_delay_seconds\u003dnode_check_timeout))"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a4dcd0f_ed3fa785","side":"PARENT","line":166,"updated":"2015-08-08 02:53:01.000000000","message":"You removed VerifyNetwork but you didnt remove verify_network_task.py. Please remove this file because it is not needed","commit_id":"28741928142941c760687967afb936170593c230"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"cc08bc49e86fd8153786457e0f66c30dbfcd62e9","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        name\u003d\"wait for RabbitMQ ready state %s\" % node_name,"},{"line_number":164,"context_line":"        retry\u003dretry.Times(node_check_max_count, revert_all\u003dTrue))"},{"line_number":165,"context_line":"    check_rabbit_online.add("},{"line_number":166,"context_line":"        os_common.VerifyNetwork("},{"line_number":167,"context_line":"            name\u003d\"get RabbitMQ status %s\" % node_name,"},{"line_number":168,"context_line":"            rebind\u003d{\u0027vm_ip\u0027: \"vm_management_ip_%d\" % node_number},"},{"line_number":169,"context_line":"            retry_delay_seconds\u003dnode_check_timeout))"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a4dcd0f_21ea3dad","side":"PARENT","line":166,"in_reply_to":"1a4dcd0f_ed3fa785","updated":"2015-08-10 17:20:37.000000000","message":"Done","commit_id":"28741928142941c760687967afb936170593c230"}],"cue/taskflow/task/get_rabbit_cluster_status.py":[{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"fef06ba1c01e9792e141b7748da8765e2ca9cebd","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        :param vm_ip: VM ip address"},{"line_number":55,"context_line":"        :type vm_ip: string"},{"line_number":56,"context_line":"        \"\"\""},{"line_number":57,"context_line":"        vhosts_url \u003d \u0027http://\u0027 + vm_ip + \u0027:15672/api/vhosts\u0027"},{"line_number":58,"context_line":"        aliveness_url \u003d \u0027http://\u0027 + vm_ip + \u0027:15672/api/aliveness-test/\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        password_mgr \u003d urllib2.HTTPPasswordMgrWithDefaultRealm()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_d1f6608e","line":57,"updated":"2015-07-28 17:13:07.000000000","message":"can we add more comments to make this procedure more clear?","commit_id":"c169ae95182084cc85c164ce79e4ad571c1e4e71"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"2f8e868420f3009c7d547bc78d41476d3c415c53","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        :param vm_ip: VM ip address"},{"line_number":55,"context_line":"        :type vm_ip: string"},{"line_number":56,"context_line":"        \"\"\""},{"line_number":57,"context_line":"        vhosts_url \u003d \u0027http://\u0027 + vm_ip + \u0027:15672/api/vhosts\u0027"},{"line_number":58,"context_line":"        aliveness_url \u003d \u0027http://\u0027 + vm_ip + \u0027:15672/api/aliveness-test/\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        password_mgr \u003d urllib2.HTTPPasswordMgrWithDefaultRealm()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_26b70122","line":57,"in_reply_to":"3a50d1a3_d1f6608e","updated":"2015-07-29 22:21:05.000000000","message":"Done","commit_id":"c169ae95182084cc85c164ce79e4ad571c1e4e71"},{"author":{"_account_id":11316,"name":"Steve Leon","email":"kokhang@gmail.com","username":"kokhang"},"change_message_id":"a98d0de0e2f345e6bbff34171f9fad55898c200b","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class GetRabbitClusterStatus(taskflow.task.Task):"},{"line_number":25,"context_line":"    def __init__(self,"},{"line_number":26,"context_line":"                 retry_delay_seconds\u003dNone,"},{"line_number":27,"context_line":"                 retry_delay_ms\u003dNone,"},{"line_number":28,"context_line":"                 name\u003dNone,"},{"line_number":29,"context_line":"                 **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_61737ee8","line":26,"range":{"start_line":26,"start_character":17,"end_line":26,"end_character":36},"updated":"2015-07-30 21:47:26.000000000","message":"Just wondering when we would use both seconds and ms for the retry delay to be. I think second is sufficient. We should also have a default value (i think 1 second).","commit_id":"619bf0cf394e33ef52bcde0b11cc7ef802e7a085"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"2aa1ce26b5d742b137fc7a2d3cdf014b0c51bc74","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        :type vm_ip: string"},{"line_number":56,"context_line":"        \"\"\""},{"line_number":57,"context_line":"        # RMQ management url to get a list of the existing vhosts"},{"line_number":58,"context_line":"        vhosts_url \u003d \u0027http://\u0027 + vm_ip + \u0027:15672/api/vhosts\u0027"},{"line_number":59,"context_line":"        # RMQ management url to query whether the RMQ nodes have clustered"},{"line_number":60,"context_line":"        aliveness_url \u003d \u0027http://\u0027 + vm_ip + \u0027:15672/api/aliveness-test/\u0027"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_40852705","line":58,"updated":"2015-07-30 17:21:44.000000000","message":"{proto}://{ip}:{port} should be passed in rather than constructed unless a proto and port attribute are passed in to the task","commit_id":"619bf0cf394e33ef52bcde0b11cc7ef802e7a085"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"2aa1ce26b5d742b137fc7a2d3cdf014b0c51bc74","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        # RMQ management url to get a list of the existing vhosts"},{"line_number":58,"context_line":"        vhosts_url \u003d \u0027http://\u0027 + vm_ip + \u0027:15672/api/vhosts\u0027"},{"line_number":59,"context_line":"        # RMQ management url to query whether the RMQ nodes have clustered"},{"line_number":60,"context_line":"        aliveness_url \u003d \u0027http://\u0027 + vm_ip + \u0027:15672/api/aliveness-test/\u0027"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        password_mgr \u003d urllib2.HTTPPasswordMgrWithDefaultRealm()"},{"line_number":63,"context_line":"        password_mgr.add_password(None,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_a0d98b24","line":60,"updated":"2015-07-30 17:21:44.000000000","message":"generally if you\u0027re going to reuse a constructed value multiple times (like http://vm_ip:15672) it\u0027s better to create a variable then reuse that.\n\nmakes the code easier to read/follow, and easier to update","commit_id":"619bf0cf394e33ef52bcde0b11cc7ef802e7a085"},{"author":{"_account_id":11316,"name":"Steve Leon","email":"kokhang@gmail.com","username":"kokhang"},"change_message_id":"a98d0de0e2f345e6bbff34171f9fad55898c200b","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            if all(val \u003d\u003d \u0027ok\u0027 for val in result.values()):"},{"line_number":90,"context_line":"                rabbit_up \u003d True"},{"line_number":91,"context_line":"            else:"},{"line_number":92,"context_line":"                time.sleep(0.5)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def revert(self, *args, **kwargs):"},{"line_number":95,"context_line":"        \"\"\"Revert GetRabbitClusterStatus"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_81100a5b","line":92,"updated":"2015-07-30 21:47:26.000000000","message":"You defined self.sleep_time but you are not using it.","commit_id":"619bf0cf394e33ef52bcde0b11cc7ef802e7a085"},{"author":{"_account_id":11316,"name":"Steve Leon","email":"kokhang@gmail.com","username":"kokhang"},"change_message_id":"c339d0d02097ef3b2dd215a54d6f019541f0ca3e","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class GetRabbitClusterStatus(taskflow.task.Task):"},{"line_number":25,"context_line":"    def __init__(self,"},{"line_number":26,"context_line":"                 retry_delay_seconds\u003dNone,"},{"line_number":27,"context_line":"                 retry_delay_ms\u003dNone,"},{"line_number":28,"context_line":"                 name\u003dNone,"},{"line_number":29,"context_line":"                 **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_e7779e9d","line":26,"range":{"start_line":26,"start_character":37,"end_line":26,"end_character":41},"updated":"2015-07-30 22:25:24.000000000","message":"I had a comment that was not addressed about not needing a retry_delay_ms. Retry in sec will suffice. Also provide a default instead of None","commit_id":"986c9972af131921e18f5e414f5b14f1b02c5a47"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"bb769cc97c8b169c32e069a56fb0071f8c6350a2","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class GetRabbitClusterStatus(taskflow.task.Task):"},{"line_number":25,"context_line":"    def __init__(self,"},{"line_number":26,"context_line":"                 retry_delay_seconds\u003dNone,"},{"line_number":27,"context_line":"                 retry_delay_ms\u003dNone,"},{"line_number":28,"context_line":"                 name\u003dNone,"},{"line_number":29,"context_line":"                 **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_374fea6b","line":26,"in_reply_to":"3a50d1a3_e7779e9d","updated":"2015-07-31 06:20:21.000000000","message":"I had modeled this class after check_or_restart_rabbitmq.py (which I believe is deprecated now), which this is replacing.  retry_delay_seconds is intended only to represent how often TaskFlow should retry a failed task(referenced in the revert function below), which would mean any time the execute method throws an exception (exceptions are expected while the vm\u0027s are coming up and until rabbit is listening/responding to port 15672).  These two delay vars are for overriding the default of 0 (at line 40).","commit_id":"986c9972af131921e18f5e414f5b14f1b02c5a47"},{"author":{"_account_id":11316,"name":"Steve Leon","email":"kokhang@gmail.com","username":"kokhang"},"change_message_id":"c339d0d02097ef3b2dd215a54d6f019541f0ca3e","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            if all(val \u003d\u003d \u0027ok\u0027 for val in result.values()):"},{"line_number":90,"context_line":"                rabbit_up \u003d True"},{"line_number":91,"context_line":"            else:"},{"line_number":92,"context_line":"                time.sleep(0.5)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def revert(self, *args, **kwargs):"},{"line_number":95,"context_line":"        \"\"\"Revert GetRabbitClusterStatus"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_e79ebeb7","line":92,"range":{"start_line":92,"start_character":28,"end_line":92,"end_character":29},"updated":"2015-07-30 22:25:24.000000000","message":"self.sleep_time is defined but not used here.","commit_id":"986c9972af131921e18f5e414f5b14f1b02c5a47"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"bb769cc97c8b169c32e069a56fb0071f8c6350a2","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            if all(val \u003d\u003d \u0027ok\u0027 for val in result.values()):"},{"line_number":90,"context_line":"                rabbit_up \u003d True"},{"line_number":91,"context_line":"            else:"},{"line_number":92,"context_line":"                time.sleep(0.5)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def revert(self, *args, **kwargs):"},{"line_number":95,"context_line":"        \"\"\"Revert GetRabbitClusterStatus"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_17818e4d","line":92,"in_reply_to":"3a50d1a3_e79ebeb7","updated":"2015-07-31 06:20:21.000000000","message":"The values represented in the above comment does not apply for this sleep call.  This sleep is for when rabbit is up and responding to port 15672 but before the vms have finished clustering.  0.5 was fairly arbitrarily chosen.  If you feel it needs to be changed, please suggest a value and why.  I would agree 0.5s is on the lower bound of what is likely appropriate, but I leaned towards having a more accurate response over losing the extra cpu/network cycles.","commit_id":"986c9972af131921e18f5e414f5b14f1b02c5a47"}],"cue/templates/install_rabbit.sh.tmpl":[{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"fef06ba1c01e9792e141b7748da8765e2ca9cebd","unresolved":false,"context_lines":[{"line_number":51,"context_line":"rabbitmq soft nofile 65536"},{"line_number":52,"context_line":"EOF"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"sudo rabbitmq-plugins enable rabbitmq_management"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"update-rc.d rabbitmq-server enable"},{"line_number":57,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"3a50d1a3_5137b0fe","line":54,"updated":"2015-07-28 17:13:07.000000000","message":"user data should be executed with privileged rights, shouldn\u0027t need sudo here","commit_id":"c169ae95182084cc85c164ce79e4ad571c1e4e71"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"2f8e868420f3009c7d547bc78d41476d3c415c53","unresolved":false,"context_lines":[{"line_number":51,"context_line":"rabbitmq soft nofile 65536"},{"line_number":52,"context_line":"EOF"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"sudo rabbitmq-plugins enable rabbitmq_management"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"update-rc.d rabbitmq-server enable"},{"line_number":57,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"3a50d1a3_c65f3de3","line":54,"in_reply_to":"3a50d1a3_5137b0fe","updated":"2015-07-29 22:21:05.000000000","message":"Done","commit_id":"c169ae95182084cc85c164ce79e4ad571c1e4e71"}],"tests/integration/api/v1/clusters/test_clusters.py":[{"author":{"_account_id":11316,"name":"Steve Leon","email":"kokhang@gmail.com","username":"kokhang"},"change_message_id":"4cc0103ed80019006bd1dea85ddf54b2fd48a8c1","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        print \"Printing cluster logs for \" + str(cluster_resp[\u0027id\u0027]) + \" findme\""},{"line_number":80,"context_line":"        self.get_logs(cluster_resp[\u0027id\u0027])"},{"line_number":81,"context_line":"        import subprocess"},{"line_number":82,"context_line":"        out \u003d subprocess.check_output([\u0027netstat\u0027, \u0027-anp\u0027])"},{"line_number":83,"context_line":"        print \"netstat findme\\n\" + str(out)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        self.assertEqual(cluster_resp[\u0027status\u0027], \u0027ACTIVE\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_80dcef46","line":82,"range":{"start_line":82,"start_character":14,"end_line":82,"end_character":24},"updated":"2015-08-06 18:58:56.000000000","message":"This will run netstat on the devstack node. You want it run in the rabbitmq vm. Look below. This is where the command should run","commit_id":"7102213eee77d22f7210a7531296c56f350bb803"},{"author":{"_account_id":11316,"name":"Steve Leon","email":"kokhang@gmail.com","username":"kokhang"},"change_message_id":"4cc0103ed80019006bd1dea85ddf54b2fd48a8c1","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                    \"tail -n +1 /var/log/rabbitmq/*\")"},{"line_number":149,"context_line":"                print(\"Printing all logs in /var/log/rabbitmq/\")"},{"line_number":150,"context_line":"                result \u003d stdout.readlines()"},{"line_number":151,"context_line":"                print(\u0027\u0027.join(result))"},{"line_number":152,"context_line":"                ssh.close()"},{"line_number":153,"context_line":"            except Exception:"},{"line_number":154,"context_line":"                print(\"Could not SSH to %s, IP: %s\" % (node[\u0027name\u0027], ip))"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_a0b6cbf6","line":151,"updated":"2015-08-06 18:58:56.000000000","message":"Add netstat command here. Look at how im calling the \u0027tail\u0027 command.\nDo something similar.","commit_id":"7102213eee77d22f7210a7531296c56f350bb803"},{"author":{"_account_id":11316,"name":"Steve Leon","email":"kokhang@gmail.com","username":"kokhang"},"change_message_id":"4777d46a2afd3a648b704258ab9165e1bb94db8b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            if time.time() - start_time \u003e 1800:"},{"line_number":74,"context_line":"                self.get_logs(cluster_resp[\u0027id\u0027])"},{"line_number":75,"context_line":"                self.fail(\u0027Waited 30 minutes for cluster to get ACTIVE\u0027)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        self.assertEqual(cluster_resp[\u0027status\u0027], \u0027ACTIVE\u0027,"},{"line_number":78,"context_line":"                         \u0027Create cluster failed\u0027)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1a4dcd0f_adc3df89","line":76,"updated":"2015-08-08 02:53:01.000000000","message":"this blank line is not needed","commit_id":"bf86588c82e4464bed9b1fa1d5f66d608723a652"},{"author":{"_account_id":15904,"name":"Daniel Allegood","email":"daniel.allegood@hp.com","username":"dkalleg"},"change_message_id":"cc08bc49e86fd8153786457e0f66c30dbfcd62e9","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            if time.time() - start_time \u003e 1800:"},{"line_number":74,"context_line":"                self.get_logs(cluster_resp[\u0027id\u0027])"},{"line_number":75,"context_line":"                self.fail(\u0027Waited 30 minutes for cluster to get ACTIVE\u0027)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        self.assertEqual(cluster_resp[\u0027status\u0027], \u0027ACTIVE\u0027,"},{"line_number":78,"context_line":"                         \u0027Create cluster failed\u0027)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1a4dcd0f_2101dd6a","line":76,"in_reply_to":"1a4dcd0f_adc3df89","updated":"2015-08-10 17:20:37.000000000","message":"Done","commit_id":"bf86588c82e4464bed9b1fa1d5f66d608723a652"}]}
