)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":35148,"name":"Joshua Kraitberg","email":"joshua.kraitberg@windriver.com","username":"jkraitbe-wr"},"change_message_id":"8a030f3567eeed0652fee232fe4c642b5b5d73be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"58005975_06233860","updated":"2024-08-14 14:55:50.000000000","message":"Adding deploy-failed tests","commit_id":"5df6f6882934e88cc3829f5d4b120e05daeb48dc"}],"nfv/nfv-plugins/nfv_plugins/nfvi_plugins/nfvi_infrastructure_api.py":[{"author":{"_account_id":35748,"name":"Vanathi Selvaraju","display_name":"Vanathi Selvaraju","email":"Vanathi.Selvaraju@windriver.com","username":"vselvara"},"change_message_id":"eddaf1547d72f1750cbbf388c8fd0d6aa2e968f7","unresolved":true,"context_lines":[{"line_number":2368,"context_line":"                error_msg \u003d f\"Caught exception while trying to query deployment info, error\u003d{e}\""},{"line_number":2369,"context_line":""},{"line_number":2370,"context_line":"            if error_msg:"},{"line_number":2371,"context_line":"                response[\"error-message\"] \u003d error_msg.strip()"},{"line_number":2372,"context_line":"                DLOG.exception(error_msg)"},{"line_number":2373,"context_line":""},{"line_number":2374,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":12,"id":"08250f89_6bae95c9","line":2371,"updated":"2024-08-13 21:20:27.000000000","message":"setting of response[\u0027error_message\u0027](line #2371 and #2372 )can be moved to line #2368","commit_id":"cde67bc4ad7e2dfb7799f9efa81908b2e2018789"},{"author":{"_account_id":35148,"name":"Joshua Kraitberg","email":"joshua.kraitberg@windriver.com","username":"jkraitbe-wr"},"change_message_id":"6f7ff698d1bb03c2c1032e1a58e6ee97068013c1","unresolved":true,"context_lines":[{"line_number":2368,"context_line":"                error_msg \u003d f\"Caught exception while trying to query deployment info, error\u003d{e}\""},{"line_number":2369,"context_line":""},{"line_number":2370,"context_line":"            if error_msg:"},{"line_number":2371,"context_line":"                response[\"error-message\"] \u003d error_msg.strip()"},{"line_number":2372,"context_line":"                DLOG.exception(error_msg)"},{"line_number":2373,"context_line":""},{"line_number":2374,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":12,"id":"94508c9f_8ba9f77d","line":2371,"in_reply_to":"08250f89_6bae95c9","updated":"2024-08-13 23:26:19.000000000","message":"This one can be moved up but I\u0027d rather keep it same style as the other functions.","commit_id":"cde67bc4ad7e2dfb7799f9efa81908b2e2018789"},{"author":{"_account_id":35748,"name":"Vanathi Selvaraju","display_name":"Vanathi Selvaraju","email":"Vanathi.Selvaraju@windriver.com","username":"vselvara"},"change_message_id":"1b8db1a099f6c173044ab0ecbdb50718415e7965","unresolved":false,"context_lines":[{"line_number":2368,"context_line":"                error_msg \u003d f\"Caught exception while trying to query deployment info, error\u003d{e}\""},{"line_number":2369,"context_line":""},{"line_number":2370,"context_line":"            if error_msg:"},{"line_number":2371,"context_line":"                response[\"error-message\"] \u003d error_msg.strip()"},{"line_number":2372,"context_line":"                DLOG.exception(error_msg)"},{"line_number":2373,"context_line":""},{"line_number":2374,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":12,"id":"0103a15a_8ce21b61","line":2371,"in_reply_to":"94508c9f_8ba9f77d","updated":"2024-08-14 14:44:40.000000000","message":"Acknowledged","commit_id":"cde67bc4ad7e2dfb7799f9efa81908b2e2018789"},{"author":{"_account_id":35748,"name":"Vanathi Selvaraju","display_name":"Vanathi Selvaraju","email":"Vanathi.Selvaraju@windriver.com","username":"vselvara"},"change_message_id":"eddaf1547d72f1750cbbf388c8fd0d6aa2e968f7","unresolved":true,"context_lines":[{"line_number":2435,"context_line":"                error_msg \u003d f\"Caught exception while trying software deploy precheck, error\u003d{e}\""},{"line_number":2436,"context_line":""},{"line_number":2437,"context_line":"            if error_msg:"},{"line_number":2438,"context_line":"                response[\"error-message\"] \u003d error_msg.strip()"},{"line_number":2439,"context_line":"                DLOG.exception(error_msg)"},{"line_number":2440,"context_line":""},{"line_number":2441,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":12,"id":"d881a32b_d943183b","line":2438,"updated":"2024-08-13 21:20:27.000000000","message":"same as above in all places","commit_id":"cde67bc4ad7e2dfb7799f9efa81908b2e2018789"},{"author":{"_account_id":35148,"name":"Joshua Kraitberg","email":"joshua.kraitberg@windriver.com","username":"jkraitbe-wr"},"change_message_id":"6f7ff698d1bb03c2c1032e1a58e6ee97068013c1","unresolved":false,"context_lines":[{"line_number":2435,"context_line":"                error_msg \u003d f\"Caught exception while trying software deploy precheck, error\u003d{e}\""},{"line_number":2436,"context_line":""},{"line_number":2437,"context_line":"            if error_msg:"},{"line_number":2438,"context_line":"                response[\"error-message\"] \u003d error_msg.strip()"},{"line_number":2439,"context_line":"                DLOG.exception(error_msg)"},{"line_number":2440,"context_line":""},{"line_number":2441,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":12,"id":"8696d05c_ea3e0298","line":2438,"in_reply_to":"d881a32b_d943183b","updated":"2024-08-13 23:26:19.000000000","message":"It has to happen at the end in all the function except get_upgrade so it can hit all the logic of setting error_msg.","commit_id":"cde67bc4ad7e2dfb7799f9efa81908b2e2018789"}],"nfv/nfv-vim/nfv_vim/strategy/_strategy_steps.py":[{"author":{"_account_id":35748,"name":"Vanathi Selvaraju","display_name":"Vanathi Selvaraju","email":"Vanathi.Selvaraju@windriver.com","username":"vselvara"},"change_message_id":"fedc9c745205b27ecd2fbe46cf9a4e5bb002eb4f","unresolved":true,"context_lines":[{"line_number":1035,"context_line":"                failed_hosts.add(host_name)"},{"line_number":1036,"context_line":"            elif \"deployed\" in hosts_states[host_name]:"},{"line_number":1037,"context_line":"                deployed_hosts.add(host_name)"},{"line_number":1038,"context_line":"            else:"},{"line_number":1039,"context_line":"                deploying_hosts.add(host_name)"},{"line_number":1040,"context_line":""},{"line_number":1041,"context_line":"        if deploying_hosts:"}],"source_content_type":"text/x-python","patch_set":7,"id":"82cd457f_de8f6383","line":1038,"updated":"2024-08-09 17:48:14.000000000","message":"do we have to consider \u0027deploying\u0027 state?\nelif deploying:\n   deployed_hosts.add(host_name)","commit_id":"1d0d47ccb71cdcddd6319309bc831c1bfcbad8ce"},{"author":{"_account_id":35748,"name":"Vanathi Selvaraju","display_name":"Vanathi Selvaraju","email":"Vanathi.Selvaraju@windriver.com","username":"vselvara"},"change_message_id":"fedc9c745205b27ecd2fbe46cf9a4e5bb002eb4f","unresolved":true,"context_lines":[{"line_number":1035,"context_line":"                failed_hosts.add(host_name)"},{"line_number":1036,"context_line":"            elif \"deployed\" in hosts_states[host_name]:"},{"line_number":1037,"context_line":"                deployed_hosts.add(host_name)"},{"line_number":1038,"context_line":"            else:"},{"line_number":1039,"context_line":"                deploying_hosts.add(host_name)"},{"line_number":1040,"context_line":""},{"line_number":1041,"context_line":"        if deploying_hosts:"}],"source_content_type":"text/x-python","patch_set":7,"id":"cfaeb30f_adc9958e","line":1038,"updated":"2024-08-09 17:48:14.000000000","message":"else condition is something not in any one of the above states,\nso something like this?\nelse:\n   failed_hosts.add ---- \u003e else, refers to unknown state other than the defined one?","commit_id":"1d0d47ccb71cdcddd6319309bc831c1bfcbad8ce"},{"author":{"_account_id":35148,"name":"Joshua Kraitberg","email":"joshua.kraitberg@windriver.com","username":"jkraitbe-wr"},"change_message_id":"e651ecfd68ea6369cbcd25955dd5a2e6edb5e856","unresolved":false,"context_lines":[{"line_number":1035,"context_line":"                failed_hosts.add(host_name)"},{"line_number":1036,"context_line":"            elif \"deployed\" in hosts_states[host_name]:"},{"line_number":1037,"context_line":"                deployed_hosts.add(host_name)"},{"line_number":1038,"context_line":"            else:"},{"line_number":1039,"context_line":"                deploying_hosts.add(host_name)"},{"line_number":1040,"context_line":""},{"line_number":1041,"context_line":"        if deploying_hosts:"}],"source_content_type":"text/x-python","patch_set":7,"id":"d9e6d376_ed2e9cd1","line":1038,"in_reply_to":"82cd457f_de8f6383","updated":"2024-08-12 14:46:23.000000000","message":"N/A after change from https://review.opendev.org/c/starlingx/nfv/+/925899/comment/cfaeb30f_adc9958e/","commit_id":"1d0d47ccb71cdcddd6319309bc831c1bfcbad8ce"},{"author":{"_account_id":35148,"name":"Joshua Kraitberg","email":"joshua.kraitberg@windriver.com","username":"jkraitbe-wr"},"change_message_id":"e651ecfd68ea6369cbcd25955dd5a2e6edb5e856","unresolved":false,"context_lines":[{"line_number":1035,"context_line":"                failed_hosts.add(host_name)"},{"line_number":1036,"context_line":"            elif \"deployed\" in hosts_states[host_name]:"},{"line_number":1037,"context_line":"                deployed_hosts.add(host_name)"},{"line_number":1038,"context_line":"            else:"},{"line_number":1039,"context_line":"                deploying_hosts.add(host_name)"},{"line_number":1040,"context_line":""},{"line_number":1041,"context_line":"        if deploying_hosts:"}],"source_content_type":"text/x-python","patch_set":7,"id":"2228d000_75e9f94e","line":1038,"in_reply_to":"cfaeb30f_adc9958e","updated":"2024-08-12 14:46:23.000000000","message":"Acknowledged","commit_id":"1d0d47ccb71cdcddd6319309bc831c1bfcbad8ce"},{"author":{"_account_id":35748,"name":"Vanathi Selvaraju","display_name":"Vanathi Selvaraju","email":"Vanathi.Selvaraju@windriver.com","username":"vselvara"},"change_message_id":"fedc9c745205b27ecd2fbe46cf9a4e5bb002eb4f","unresolved":true,"context_lines":[{"line_number":1104,"context_line":""},{"line_number":1105,"context_line":"        DLOG.debug(\"Step (%s) handle event (%s).\" % (self._name, event))"},{"line_number":1106,"context_line":""},{"line_number":1107,"context_line":"        if self._query_inprogress or self._step_complete:"},{"line_number":1108,"context_line":"            return True"},{"line_number":1109,"context_line":""},{"line_number":1110,"context_line":"        elif event in [STRATEGY_EVENT.HOST_AUDIT]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fac2ac7c_5d9c6990","line":1107,"updated":"2024-08-09 17:48:14.000000000","message":"this is a good check, helps in different state conditions.","commit_id":"1d0d47ccb71cdcddd6319309bc831c1bfcbad8ce"},{"author":{"_account_id":35748,"name":"Vanathi Selvaraju","display_name":"Vanathi Selvaraju","email":"Vanathi.Selvaraju@windriver.com","username":"vselvara"},"change_message_id":"eddaf1547d72f1750cbbf388c8fd0d6aa2e968f7","unresolved":false,"context_lines":[{"line_number":1104,"context_line":""},{"line_number":1105,"context_line":"        DLOG.debug(\"Step (%s) handle event (%s).\" % (self._name, event))"},{"line_number":1106,"context_line":""},{"line_number":1107,"context_line":"        if self._query_inprogress or self._step_complete:"},{"line_number":1108,"context_line":"            return True"},{"line_number":1109,"context_line":""},{"line_number":1110,"context_line":"        elif event in [STRATEGY_EVENT.HOST_AUDIT]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"d60b3a0c_92f627d0","line":1107,"in_reply_to":"30237341_8539cb5a","updated":"2024-08-13 21:20:27.000000000","message":"I was referring to the new change that was made(if self._query_inprogress or self._step_complete)","commit_id":"1d0d47ccb71cdcddd6319309bc831c1bfcbad8ce"},{"author":{"_account_id":35148,"name":"Joshua Kraitberg","email":"joshua.kraitberg@windriver.com","username":"jkraitbe-wr"},"change_message_id":"3535e00a4f17c9abde0de7b77a4317b9924fa619","unresolved":false,"context_lines":[{"line_number":1104,"context_line":""},{"line_number":1105,"context_line":"        DLOG.debug(\"Step (%s) handle event (%s).\" % (self._name, event))"},{"line_number":1106,"context_line":""},{"line_number":1107,"context_line":"        if self._query_inprogress or self._step_complete:"},{"line_number":1108,"context_line":"            return True"},{"line_number":1109,"context_line":""},{"line_number":1110,"context_line":"        elif event in [STRATEGY_EVENT.HOST_AUDIT]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"30237341_8539cb5a","line":1107,"in_reply_to":"d32b10f3_6f7f13a1","updated":"2024-08-12 23:17:25.000000000","message":"I have added it back in with a tweak.  See the code comment on my reasoning for removing it.","commit_id":"1d0d47ccb71cdcddd6319309bc831c1bfcbad8ce"},{"author":{"_account_id":35148,"name":"Joshua Kraitberg","email":"joshua.kraitberg@windriver.com","username":"jkraitbe-wr"},"change_message_id":"504ffa8e11963b9c8a648e67d096b526cd60ee08","unresolved":true,"context_lines":[{"line_number":1104,"context_line":""},{"line_number":1105,"context_line":"        DLOG.debug(\"Step (%s) handle event (%s).\" % (self._name, event))"},{"line_number":1106,"context_line":""},{"line_number":1107,"context_line":"        if self._query_inprogress or self._step_complete:"},{"line_number":1108,"context_line":"            return True"},{"line_number":1109,"context_line":""},{"line_number":1110,"context_line":"        elif event in [STRATEGY_EVENT.HOST_AUDIT]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"d32b10f3_6f7f13a1","line":1107,"in_reply_to":"fac2ac7c_5d9c6990","updated":"2024-08-12 20:36:25.000000000","message":"Are you referring to STRATEGY_EVENT.HOST_UPGRADE_FAILED or the change I made?","commit_id":"1d0d47ccb71cdcddd6319309bc831c1bfcbad8ce"},{"author":{"_account_id":35748,"name":"Vanathi Selvaraju","display_name":"Vanathi Selvaraju","email":"Vanathi.Selvaraju@windriver.com","username":"vselvara"},"change_message_id":"eddaf1547d72f1750cbbf388c8fd0d6aa2e968f7","unresolved":true,"context_lines":[{"line_number":1113,"context_line":""},{"line_number":1114,"context_line":"        if event \u003d\u003d STRATEGY_EVENT.HOST_UPGRADE_FAILED:"},{"line_number":1115,"context_line":"            host \u003d event_data"},{"line_number":1116,"context_line":"            if host is not None and host.name in self._host_names:"},{"line_number":1117,"context_line":"                # We don\u0027t want to fail here because we want"},{"line_number":1118,"context_line":"                # all hosts to be done/failed, so just log instead."},{"line_number":1119,"context_line":"                DLOG.error(f\"Software deploy host call failed: {host}\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"28072efe_53966d9d","line":1116,"updated":"2024-08-13 21:20:27.000000000","message":"Since we have a particular order of execution of hosts especially in case of upgrade, should we not fail on encountering the first failure of host?\nexample: if \ncontroller-1 passes\ncontroller-0 fails\nshould we proceed with storage nodes?","commit_id":"cde67bc4ad7e2dfb7799f9efa81908b2e2018789"},{"author":{"_account_id":35148,"name":"Joshua Kraitberg","email":"joshua.kraitberg@windriver.com","username":"jkraitbe-wr"},"change_message_id":"6f7ff698d1bb03c2c1032e1a58e6ee97068013c1","unresolved":true,"context_lines":[{"line_number":1113,"context_line":""},{"line_number":1114,"context_line":"        if event \u003d\u003d STRATEGY_EVENT.HOST_UPGRADE_FAILED:"},{"line_number":1115,"context_line":"            host \u003d event_data"},{"line_number":1116,"context_line":"            if host is not None and host.name in self._host_names:"},{"line_number":1117,"context_line":"                # We don\u0027t want to fail here because we want"},{"line_number":1118,"context_line":"                # all hosts to be done/failed, so just log instead."},{"line_number":1119,"context_line":"                DLOG.error(f\"Software deploy host call failed: {host}\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"7e3cfbfb_b3f0cb6d","line":1116,"in_reply_to":"28072efe_53966d9d","updated":"2024-08-13 23:26:19.000000000","message":"controller-0 and controller-1 are not done in the same step.  Only parallel hosts are in the same step.  I will make a small update so serial hosts fail faster and don\u0027t need to wait for HOST_AUDIT.","commit_id":"cde67bc4ad7e2dfb7799f9efa81908b2e2018789"},{"author":{"_account_id":35148,"name":"Joshua Kraitberg","email":"joshua.kraitberg@windriver.com","username":"jkraitbe-wr"},"change_message_id":"7f86efb5944a25abbc2b67c87d9ef24df6d12885","unresolved":false,"context_lines":[{"line_number":1113,"context_line":""},{"line_number":1114,"context_line":"        if event \u003d\u003d STRATEGY_EVENT.HOST_UPGRADE_FAILED:"},{"line_number":1115,"context_line":"            host \u003d event_data"},{"line_number":1116,"context_line":"            if host is not None and host.name in self._host_names:"},{"line_number":1117,"context_line":"                # We don\u0027t want to fail here because we want"},{"line_number":1118,"context_line":"                # all hosts to be done/failed, so just log instead."},{"line_number":1119,"context_line":"                DLOG.error(f\"Software deploy host call failed: {host}\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"bd2418ef_e9f9e101","line":1116,"in_reply_to":"7e3cfbfb_b3f0cb6d","updated":"2024-08-14 14:36:02.000000000","message":"Done","commit_id":"cde67bc4ad7e2dfb7799f9efa81908b2e2018789"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"7696ebfeea514e64487b08c474494135af9f79fd","unresolved":true,"context_lines":[{"line_number":1040,"context_line":"            fail_reason \u003d None"},{"line_number":1041,"context_line":"            if v not in hosts_states:"},{"line_number":1042,"context_line":"                fail_reason \u003d self._failed_hosts.get(v, \"Missing host from software deploy host-list\")"},{"line_number":1043,"context_line":"            elif \"pending\" in hosts_states[v]:"},{"line_number":1044,"context_line":"                fail_reason \u003d self._failed_hosts.get(v, \"Host was detected in pending state\")"},{"line_number":1045,"context_line":"            elif \"failed\" in hosts_states[v]:"},{"line_number":1046,"context_line":"                fail_reason \u003d self._failed_hosts.get(v, \"Host was detected in failed state\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"823a9ea9_881ffbea","line":1043,"range":{"start_line":1043,"start_character":17,"end_line":1043,"end_character":26},"updated":"2024-08-19 17:51:20.000000000","message":"nit: should be defined constants; vim convention appears to be \u0027Constant\u0027","commit_id":"1693d3a5da563b1e355ac38ac641ad80bab753c1"},{"author":{"_account_id":35148,"name":"Joshua Kraitberg","email":"joshua.kraitberg@windriver.com","username":"jkraitbe-wr"},"change_message_id":"0ef8927ab8c93a5c839c2c1ac89abdba9a3dbdd1","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"            fail_reason \u003d None"},{"line_number":1041,"context_line":"            if v not in hosts_states:"},{"line_number":1042,"context_line":"                fail_reason \u003d self._failed_hosts.get(v, \"Missing host from software deploy host-list\")"},{"line_number":1043,"context_line":"            elif \"pending\" in hosts_states[v]:"},{"line_number":1044,"context_line":"                fail_reason \u003d self._failed_hosts.get(v, \"Host was detected in pending state\")"},{"line_number":1045,"context_line":"            elif \"failed\" in hosts_states[v]:"},{"line_number":1046,"context_line":"                fail_reason \u003d self._failed_hosts.get(v, \"Host was detected in failed state\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"25219b7c_f2733f3b","line":1043,"range":{"start_line":1043,"start_character":17,"end_line":1043,"end_character":26},"in_reply_to":"823a9ea9_881ffbea","updated":"2024-08-19 18:17:57.000000000","message":"Done","commit_id":"1693d3a5da563b1e355ac38ac641ad80bab753c1"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"7696ebfeea514e64487b08c474494135af9f79fd","unresolved":true,"context_lines":[{"line_number":1046,"context_line":"                fail_reason \u003d self._failed_hosts.get(v, \"Host was detected in failed state\")"},{"line_number":1047,"context_line":"            elif \"deploying\" in hosts_states[v]:"},{"line_number":1048,"context_line":"                fail_reason \u003d self._failed_hosts.get(v, \"Host was still deploying when it was expected to be done\")"},{"line_number":1049,"context_line":"            elif \"deployed\" not in hosts_states[v]:"},{"line_number":1050,"context_line":"                fail_reason \u003d self._failed_hosts.get(v, f\"Host was detected in invalid state: {hosts_states[v]}\")"},{"line_number":1051,"context_line":""},{"line_number":1052,"context_line":"            if fail_reason:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3db85a55_4a7844f5","line":1049,"updated":"2024-08-19 17:51:20.000000000","message":"consider logging potential else condition (i.e. if a new state were to get introduced by software-api)","commit_id":"1693d3a5da563b1e355ac38ac641ad80bab753c1"},{"author":{"_account_id":35148,"name":"Joshua Kraitberg","email":"joshua.kraitberg@windriver.com","username":"jkraitbe-wr"},"change_message_id":"0ef8927ab8c93a5c839c2c1ac89abdba9a3dbdd1","unresolved":false,"context_lines":[{"line_number":1046,"context_line":"                fail_reason \u003d self._failed_hosts.get(v, \"Host was detected in failed state\")"},{"line_number":1047,"context_line":"            elif \"deploying\" in hosts_states[v]:"},{"line_number":1048,"context_line":"                fail_reason \u003d self._failed_hosts.get(v, \"Host was still deploying when it was expected to be done\")"},{"line_number":1049,"context_line":"            elif \"deployed\" not in hosts_states[v]:"},{"line_number":1050,"context_line":"                fail_reason \u003d self._failed_hosts.get(v, f\"Host was detected in invalid state: {hosts_states[v]}\")"},{"line_number":1051,"context_line":""},{"line_number":1052,"context_line":"            if fail_reason:"}],"source_content_type":"text/x-python","patch_set":14,"id":"d4ea0d45_0e202b1b","line":1049,"in_reply_to":"3db85a55_4a7844f5","updated":"2024-08-19 18:17:57.000000000","message":"New states would be caught be `elif \"deployed\" not in hosts_states[v]:`.  The else condition would just capture deployed hosts.","commit_id":"1693d3a5da563b1e355ac38ac641ad80bab753c1"}]}
