)]}'
{"tripleo_common/actions/derive_parameters.py":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"edf94ab72bbc6792d1e2a1e718154a2fc763e82f","unresolved":false,"context_lines":[{"line_number":27,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":28,"context_line":"# under the License."},{"line_number":29,"context_line":"from tripleo_common.actions import base"},{"line_number":30,"context_line":"from tripleo_common.utils import derive_parameters"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class GetProfileNameAction(base.TripleOAction):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f013ff3_251ad67c","line":30,"updated":"2017-05-15 15:31:01.000000000","message":"Per subsequent comment, I think this can be added to the existing parameters.py file.","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"669e32ba2719deaac368779c4d34f43a6d4ef2fb","unresolved":false,"context_lines":[{"line_number":27,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":28,"context_line":"# under the License."},{"line_number":29,"context_line":"from tripleo_common.actions import base"},{"line_number":30,"context_line":"from tripleo_common.utils import derive_parameters"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class GetProfileNameAction(base.TripleOAction):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f013ff3_dadbcdea","line":30,"in_reply_to":"1f013ff3_251ad67c","updated":"2017-05-17 09:17:46.000000000","message":"Done","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"}],"tripleo_common/tests/actions/test_parameters.py":[{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"8e7e5b094a10ee4f01e6620871d02893983fd73b","unresolved":false,"context_lines":[{"line_number":830,"context_line":""},{"line_number":831,"context_line":"class GetProfileOfFlavorActionTest(base.TestCase):"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"    @mock.patch(\u0027tripleo_common.utils.parameters.get_profile_of_flavor\u0027)"},{"line_number":834,"context_line":"    @mock.patch(\u0027tripleo_common.actions.base.TripleOAction.\u0027"},{"line_number":835,"context_line":"                \u0027get_compute_client\u0027)"},{"line_number":836,"context_line":"    @mock.patch(\u0027mistral.context.ctx\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff0f0b1f_8a52d766","line":833,"range":{"start_line":833,"start_character":17,"end_line":833,"end_character":70},"updated":"2017-05-18 09:29:23.000000000","message":"Instead of mocking this function, can we mock the novaclient function - flavor.get_keys().get, so that we endup testing the get_profile_of_flavor too? Or, test function should be added to util function too.","commit_id":"66e78430e499ec144e28e6801c0e44c8bce22c08"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"1c79104d7abc7b111cd8a6bbec71406a91ef58e9","unresolved":false,"context_lines":[{"line_number":830,"context_line":""},{"line_number":831,"context_line":"class GetProfileOfFlavorActionTest(base.TestCase):"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"    @mock.patch(\u0027tripleo_common.utils.parameters.get_profile_of_flavor\u0027)"},{"line_number":834,"context_line":"    @mock.patch(\u0027tripleo_common.actions.base.TripleOAction.\u0027"},{"line_number":835,"context_line":"                \u0027get_compute_client\u0027)"},{"line_number":836,"context_line":"    @mock.patch(\u0027mistral.context.ctx\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ff0f0b1f_a0ba57db","line":833,"range":{"start_line":833,"start_character":17,"end_line":833,"end_character":70},"in_reply_to":"ff0f0b1f_8a52d766","updated":"2017-05-18 12:01:15.000000000","message":"Done","commit_id":"66e78430e499ec144e28e6801c0e44c8bce22c08"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"8e7e5b094a10ee4f01e6620871d02893983fd73b","unresolved":false,"context_lines":[{"line_number":834,"context_line":"    @mock.patch(\u0027tripleo_common.actions.base.TripleOAction.\u0027"},{"line_number":835,"context_line":"                \u0027get_compute_client\u0027)"},{"line_number":836,"context_line":"    @mock.patch(\u0027mistral.context.ctx\u0027)"},{"line_number":837,"context_line":"    def test_run(self, mock_ctx, mock_get_compute_client,"},{"line_number":838,"context_line":"                 mock_get_profile_name):"},{"line_number":839,"context_line":"        mock_ctx.return_value \u003d mock.MagicMock()"},{"line_number":840,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ff0f0b1f_2abe2b65","line":837,"updated":"2017-05-18 09:29:23.000000000","message":"Add another test case for failure case, where the flavor is not found.","commit_id":"66e78430e499ec144e28e6801c0e44c8bce22c08"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"1c79104d7abc7b111cd8a6bbec71406a91ef58e9","unresolved":false,"context_lines":[{"line_number":834,"context_line":"    @mock.patch(\u0027tripleo_common.actions.base.TripleOAction.\u0027"},{"line_number":835,"context_line":"                \u0027get_compute_client\u0027)"},{"line_number":836,"context_line":"    @mock.patch(\u0027mistral.context.ctx\u0027)"},{"line_number":837,"context_line":"    def test_run(self, mock_ctx, mock_get_compute_client,"},{"line_number":838,"context_line":"                 mock_get_profile_name):"},{"line_number":839,"context_line":"        mock_ctx.return_value \u003d mock.MagicMock()"},{"line_number":840,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ff0f0b1f_40c93b76","line":837,"in_reply_to":"ff0f0b1f_2abe2b65","updated":"2017-05-18 12:01:15.000000000","message":"Done","commit_id":"66e78430e499ec144e28e6801c0e44c8bce22c08"}],"tripleo_common/utils/derive_parameters.py":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"edf94ab72bbc6792d1e2a1e718154a2fc763e82f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# limitations under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"def get_profile_name(flavor_name, compute_client):"},{"line_number":19,"context_line":"    profile_name \u003d \u0027\u0027"},{"line_number":20,"context_line":"    flavor \u003d compute_client.flavors.find(name\u003dflavor_name)"},{"line_number":21,"context_line":"    if flavor:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f013ff3_6580de8c","line":18,"updated":"2017-05-15 15:31:01.000000000","message":"This function seems to be a parallel to the get_flavor() function in utils/parameters.py. Perhaps this function should be named get_profile() and the code be added to the other file (no need to spread code across multiple files). This in turn suggests the \"action\" code could be located in the actions/paramters.py file.","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"669e32ba2719deaac368779c4d34f43a6d4ef2fb","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# limitations under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"def get_profile_name(flavor_name, compute_client):"},{"line_number":19,"context_line":"    profile_name \u003d \u0027\u0027"},{"line_number":20,"context_line":"    flavor \u003d compute_client.flavors.find(name\u003dflavor_name)"},{"line_number":21,"context_line":"    if flavor:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f013ff3_9a9305fb","line":18,"in_reply_to":"1f013ff3_6580de8c","updated":"2017-05-17 09:17:46.000000000","message":"Function name is changed as get_profile_of_flavor and placed in actions/parameters.py","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"}],"tripleo_common/utils/parameters.py":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"d4d52432dfd2d4c8612f2dcac30df13e692361cf","unresolved":false,"context_lines":[{"line_number":96,"context_line":"def get_profile_of_flavor(flavor_name, compute_client):"},{"line_number":97,"context_line":"    \"\"\"Returns profile name for given flavor name. \"\"\""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    profile_name \u003d \u0027\u0027"},{"line_number":100,"context_line":"    flavor \u003d compute_client.flavors.find(name\u003dflavor_name)"},{"line_number":101,"context_line":"    if flavor:"},{"line_number":102,"context_line":"        profile_name \u003d flavor.get_keys().get(\u0027capabilities:profile\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff0f0b1f_b3b193e4","line":99,"updated":"2017-05-18 12:55:07.000000000","message":"I\u0027m not sure if it matters, but the default value could be \"baremetal\" instead of an empty string. Just flagging this in case it triggers further discussion.","commit_id":"6e44c281e9d36e4c2c1342236fbdea1095046abb"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"4bed9b4a96cc12829af6c2660607f2d036529fcc","unresolved":false,"context_lines":[{"line_number":96,"context_line":"def get_profile_of_flavor(flavor_name, compute_client):"},{"line_number":97,"context_line":"    \"\"\"Returns profile name for given flavor name. \"\"\""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    profile_name \u003d \u0027\u0027"},{"line_number":100,"context_line":"    flavor \u003d compute_client.flavors.find(name\u003dflavor_name)"},{"line_number":101,"context_line":"    if flavor:"},{"line_number":102,"context_line":"        profile_name \u003d flavor.get_keys().get(\u0027capabilities:profile\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff0f0b1f_671a0e7e","line":99,"in_reply_to":"ff0f0b1f_b3b193e4","updated":"2017-05-18 15:57:14.000000000","message":"We are failing task in workflow if this method returns \u0027\u0027 ( no flavor found or no profile set)\nso i think default value need not be \"baremetal\"","commit_id":"6e44c281e9d36e4c2c1342236fbdea1095046abb"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"464c9bd2df2939f5d750929bc1ca9d3087252158","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    try:"},{"line_number":108,"context_line":"        flavor \u003d compute_client.flavors.find(name\u003dflavor_name)"},{"line_number":109,"context_line":"    except Exception as err:"},{"line_number":110,"context_line":"        raise exception.DeriveParamsError("},{"line_number":111,"context_line":"            \u0027Flavor is not found for a given flavor name: \u0027"},{"line_number":112,"context_line":"            \u0027%(flavor_name)s. Error:%(err)s\u0027 % {\u0027flavor_name\u0027: flavor_name,"},{"line_number":113,"context_line":"                                                \u0027err\u0027: err})"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_7783b9cd","line":110,"updated":"2017-05-19 16:41:37.000000000","message":"I  prefer the previous API that simply returned an empty string. Is it really an error (i.e. exceptional) for flavors not having an associated capabilities profile? This seems a lot more complicated.","commit_id":"59a55f255f5a81fbb8c9040e08096d518896b0d8"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"b49b4cc4c1b80315f2bdd24518aa938037c4f65b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    try:"},{"line_number":108,"context_line":"        flavor \u003d compute_client.flavors.find(name\u003dflavor_name)"},{"line_number":109,"context_line":"    except Exception as err:"},{"line_number":110,"context_line":"        raise exception.DeriveParamsError("},{"line_number":111,"context_line":"            \u0027Flavor is not found for a given flavor name: \u0027"},{"line_number":112,"context_line":"            \u0027%(flavor_name)s. Error:%(err)s\u0027 % {\u0027flavor_name\u0027: flavor_name,"},{"line_number":113,"context_line":"                                                \u0027err\u0027: err})"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff0f0b1f_4138eb3b","line":110,"in_reply_to":"ff0f0b1f_7783b9cd","updated":"2017-05-19 19:47:41.000000000","message":"I agree that it is not really an error but we need to pass proper message to the workflow like whether flavor is available or not for given flavor name or whether profile is set or not if flavor is available for given flavor name.\n\nUpdated error messages here also as mentioned in workflow.","commit_id":"59a55f255f5a81fbb8c9040e08096d518896b0d8"}],"workbooks/derive_params.yaml":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"33769833cfb81e87fde6cd9cca8764e4e43a66ae","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    tasks:"},{"line_number":16,"context_line":"      get_flattened_parameters:"},{"line_number":17,"context_line":"        action: tripleo.parameters.get_flatten"},{"line_number":18,"context_line":"        on-success: find_roles"},{"line_number":19,"context_line":"        on-error: set_status_failed_get_flattended_parameters"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7ffa3b31_63f8707a","line":17,"updated":"2017-04-19 17:46:07.000000000","message":"Based on my own (unpublished) PoC experiments, it\u0027s probably good to publish the environment_parameters and heat_resource_tree. I found them useful for just about any subsequent task, including find_roles.","commit_id":"df6f3123cac24489971e086d50d3bfb146d81a4c"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"33769833cfb81e87fde6cd9cca8764e4e43a66ae","unresolved":false,"context_lines":[{"line_number":18,"context_line":"        on-success: find_roles"},{"line_number":19,"context_line":"        on-error: set_status_failed_get_flattended_parameters"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"      # TODO: with the flattened list, find out the list of Roles in the heat resource tree"},{"line_number":22,"context_line":"      find_roles:"},{"line_number":23,"context_line":"        action: std.noop"},{"line_number":24,"context_line":"        on-success: for_each_role"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7ffa3b31_e368001e","line":21,"range":{"start_line":21,"start_character":7,"end_line":21,"end_character":8},"updated":"2017-04-19 17:46:07.000000000","message":"I have a PoC with this working:\n\n      find_roles:\n        on-success: for_each_role\n        publish:\n          role_name_list: \u003c% $.heat_resource_tree.resources.values().where($.containsValue(\u0027OS::Heat::ResourceGroup\u0027)).select($.name) %\u003e\n\nThis will give you a list of *all* roles, which can be further refined in the for_each_role task so that it only iterates over roles that are actually deployed (XCount \u003e 0).","commit_id":"df6f3123cac24489971e086d50d3bfb146d81a4c"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"33769833cfb81e87fde6cd9cca8764e4e43a66ae","unresolved":false,"context_lines":[{"line_number":26,"context_line":"          role_name_list: [\u0027Compute\u0027] # role name list"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"      # Excute the basic preparation workflow for each role (checking and getting introspection data)"},{"line_number":29,"context_line":"      for_each_role:"},{"line_number":30,"context_line":"        on-success: send-message"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"      set_status_failed_get_flattended_parameters:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7ffa3b31_a3ec388f","line":29,"updated":"2017-04-19 17:46:07.000000000","message":"with-items: role_name in \u003c% let(ep\u003d\u003e$.environment_parameters)-\u003e $.role_name_list.where($ep.get(concat($, \"Count\"), 0) \u003e 0) %\u003e","commit_id":"df6f3123cac24489971e086d50d3bfb146d81a4c"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"9f5f11424f391f068953eed71004991801e744ff","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    tasks:"},{"line_number":16,"context_line":"      get_flattened_parameters:"},{"line_number":17,"context_line":"        action: tripleo.parameters.get_flatten"},{"line_number":18,"context_line":"        on-success: get_roles"},{"line_number":19,"context_line":"        on-error: set_status_failed_get_flattened_parameters"},{"line_number":20,"context_line":"        publish:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3f044301_38007201","line":17,"updated":"2017-05-08 19:55:23.000000000","message":"Need to append \"container\u003d\u003c% $.plan %\u003e\"","commit_id":"51b6ae98152660b184ea3036dc9e01aa7e494972"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"1a452dd8ecf12a1e8a173cc1f0a6f73c10e13e71","unresolved":false,"context_lines":[{"line_number":21,"context_line":"          environment_parameters: \u003c% task(get_flattened_parameters).result.mistral_environment_parameters %\u003e"},{"line_number":22,"context_line":"          heat_resource_tree: \u003c% task(get_flattened_parameters).result.heat_resource_tree %\u003e"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"      get_roles:"},{"line_number":25,"context_line":"        on-success: for_each_role"},{"line_number":26,"context_line":"        publish:"},{"line_number":27,"context_line":"          role_name_list: \u003c% $.heat_resource_tree.resources.values().where($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::Heat::ResourceGroup\u0027).select($.name) %\u003e"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5ff73747_5dbcbbba","line":24,"updated":"2017-04-21 20:47:18.000000000","message":"This was find_roles, but I think we should be consistent in the verbs we use (get/find/fetch \u003d\u003e get)","commit_id":"51b6ae98152660b184ea3036dc9e01aa7e494972"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"1a452dd8ecf12a1e8a173cc1f0a6f73c10e13e71","unresolved":false,"context_lines":[{"line_number":22,"context_line":"          heat_resource_tree: \u003c% task(get_flattened_parameters).result.heat_resource_tree %\u003e"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"      get_roles:"},{"line_number":25,"context_line":"        on-success: for_each_role"},{"line_number":26,"context_line":"        publish:"},{"line_number":27,"context_line":"          role_name_list: \u003c% $.heat_resource_tree.resources.values().where($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::Heat::ResourceGroup\u0027).select($.name) %\u003e"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5ff73747_ddf56b85","line":25,"updated":"2017-04-21 20:47:18.000000000","message":"From mistral\u0027s perspective this is a std.noop action that always succeeds, and it\u0027s the published data we\u0027re after. We eventually need to add error checks to be sure the published data is valid. I found mistral lets you refer to published data as long as you do things in the correct order:\n\npublish:\n  data: \u003c% \u003csome yaql expression\u003e %\u003e\non-success:\n  - next_step \u003c% if $.data is good %\u003e\n  - failed \u003c% if $.data is bad %\u003e","commit_id":"51b6ae98152660b184ea3036dc9e01aa7e494972"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"823a13d119855f778ad62163e5fbb1e40c856c88","unresolved":false,"context_lines":[{"line_number":24,"context_line":"      get_roles:"},{"line_number":25,"context_line":"        on-success: for_each_role"},{"line_number":26,"context_line":"        publish:"},{"line_number":27,"context_line":"          role_name_list: \u003c% $.heat_resource_tree.resources.values().where($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::Heat::ResourceGroup\u0027).select($.name) %\u003e"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"      # Excute the basic preparation workflow for each role (checking and getting introspection data)"},{"line_number":30,"context_line":"      for_each_role:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5ff73747_9745691a","line":27,"updated":"2017-04-24 11:01:50.000000000","message":"One thing which we need to make sure is that, this has to provide only valid roles which has count \u003e 0, in which case, the execution time will be lesser. It can be identified based on the presence of nestedParameters\u0027s contents (which will depict the number of instances of this type).","commit_id":"51b6ae98152660b184ea3036dc9e01aa7e494972"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"d0862118821f994ce52450d15ce719835fb1e73c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"      get_roles:"},{"line_number":25,"context_line":"        on-success: for_each_role"},{"line_number":26,"context_line":"        publish:"},{"line_number":27,"context_line":"          role_name_list: \u003c% $.heat_resource_tree.resources.values().where($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::Heat::ResourceGroup\u0027).select($.name) %\u003e"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"      # Excute the basic preparation workflow for each role (checking and getting introspection data)"},{"line_number":30,"context_line":"      for_each_role:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5ff73747_ed04dac8","line":27,"in_reply_to":"5ff73747_9745691a","updated":"2017-04-24 12:10:08.000000000","message":"Yes, I agree, and have accounted for this in my own PoC. The location where I implement this happens to be in code that appears in part 2 of this WIP [1], and I plan to post an update later today.\n\nhttps://review.openstack.org/#/c/456470/","commit_id":"51b6ae98152660b184ea3036dc9e01aa7e494972"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"edf94ab72bbc6792d1e2a1e718154a2fc763e82f","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    tasks:"},{"line_number":16,"context_line":"      get_flattened_parameters:"},{"line_number":17,"context_line":"        action: tripleo.parameters.get_flatten"},{"line_number":18,"context_line":"        on-success: get_roles"},{"line_number":19,"context_line":"        on-error: set_status_failed_get_flattened_parameters"},{"line_number":20,"context_line":"        publish:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_e8084329","line":17,"updated":"2017-05-15 15:31:01.000000000","message":"Need to pass in container\u003d\u003c% $.plan %\u003e","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"669e32ba2719deaac368779c4d34f43a6d4ef2fb","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    tasks:"},{"line_number":16,"context_line":"      get_flattened_parameters:"},{"line_number":17,"context_line":"        action: tripleo.parameters.get_flatten"},{"line_number":18,"context_line":"        on-success: get_roles"},{"line_number":19,"context_line":"        on-error: set_status_failed_get_flattened_parameters"},{"line_number":20,"context_line":"        publish:"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_fabb296f","line":17,"in_reply_to":"1f013ff3_e8084329","updated":"2017-05-17 09:17:46.000000000","message":"Done","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"edf94ab72bbc6792d1e2a1e718154a2fc763e82f","unresolved":false,"context_lines":[{"line_number":69,"context_line":"          - fail: \u003c% $.get(\u0027status\u0027) \u003d \"FAILED\" %\u003e"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  derive_parameters_per_role:"},{"line_number":73,"context_line":"    description: \u003e"},{"line_number":74,"context_line":"      Workflow which runs per role to validate the introspection data on the nodes assigned to role."},{"line_number":75,"context_line":"      Once introspection data is fetched, this worklow will trigger the actual derive parameters workflow"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_28dd0b14","line":72,"updated":"2017-05-15 15:31:01.000000000","message":"Since this is an internal workflow then it should be named with a leading underscore.","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"669e32ba2719deaac368779c4d34f43a6d4ef2fb","unresolved":false,"context_lines":[{"line_number":69,"context_line":"          - fail: \u003c% $.get(\u0027status\u0027) \u003d \"FAILED\" %\u003e"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  derive_parameters_per_role:"},{"line_number":73,"context_line":"    description: \u003e"},{"line_number":74,"context_line":"      Workflow which runs per role to validate the introspection data on the nodes assigned to role."},{"line_number":75,"context_line":"      Once introspection data is fetched, this worklow will trigger the actual derive parameters workflow"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_dab2ad94","line":72,"in_reply_to":"1f013ff3_28dd0b14","updated":"2017-05-17 09:17:46.000000000","message":"Done","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"edf94ab72bbc6792d1e2a1e718154a2fc763e82f","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  derive_parameters_per_role:"},{"line_number":73,"context_line":"    description: \u003e"},{"line_number":74,"context_line":"      Workflow which runs per role to validate the introspection data on the nodes assigned to role."},{"line_number":75,"context_line":"      Once introspection data is fetched, this worklow will trigger the actual derive parameters workflow"},{"line_number":76,"context_line":"    input:"},{"line_number":77,"context_line":"      - role_name"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_a8c59b90","line":74,"updated":"2017-05-15 15:31:01.000000000","message":"I don\u0027t think we\u0027re actually validating any introspection data, so this comment seems misleading.","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"669e32ba2719deaac368779c4d34f43a6d4ef2fb","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  derive_parameters_per_role:"},{"line_number":73,"context_line":"    description: \u003e"},{"line_number":74,"context_line":"      Workflow which runs per role to validate the introspection data on the nodes assigned to role."},{"line_number":75,"context_line":"      Once introspection data is fetched, this worklow will trigger the actual derive parameters workflow"},{"line_number":76,"context_line":"    input:"},{"line_number":77,"context_line":"      - role_name"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_9aac2535","line":74,"in_reply_to":"1f013ff3_a8c59b90","updated":"2017-05-17 09:17:46.000000000","message":"Done","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"edf94ab72bbc6792d1e2a1e718154a2fc763e82f","unresolved":false,"context_lines":[{"line_number":77,"context_line":"      - role_name"},{"line_number":78,"context_line":"      - environment_parameters"},{"line_number":79,"context_line":"      - heat_resource_tree"},{"line_number":80,"context_line":"      - queue_name: tripleo"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    output:"},{"line_number":83,"context_line":"      status: \u003c% $.get(\u0027status\u0027, \u0027SUCCESS\u0027) %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_a8f91b81","line":80,"updated":"2017-05-15 15:31:01.000000000","message":"queue_name is not necessary unless the workflow finishes with send_message.","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"669e32ba2719deaac368779c4d34f43a6d4ef2fb","unresolved":false,"context_lines":[{"line_number":77,"context_line":"      - role_name"},{"line_number":78,"context_line":"      - environment_parameters"},{"line_number":79,"context_line":"      - heat_resource_tree"},{"line_number":80,"context_line":"      - queue_name: tripleo"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    output:"},{"line_number":83,"context_line":"      status: \u003c% $.get(\u0027status\u0027, \u0027SUCCESS\u0027) %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_5a645d22","line":80,"in_reply_to":"1f013ff3_a8f91b81","updated":"2017-05-17 09:17:46.000000000","message":"Done","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"edf94ab72bbc6792d1e2a1e718154a2fc763e82f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"      # 1) profile and flavor based mapping"},{"line_number":89,"context_line":"      # 2) Nova placement api based mapping"},{"line_number":90,"context_line":"      get_flavor_name:"},{"line_number":91,"context_line":"        on-success:"},{"line_number":92,"context_line":"          - get_profile_name: \u003c% $.flavor_name !\u003d \u0027\u0027 %\u003e"},{"line_number":93,"context_line":"          - set_status_failed_get_flavor_name: \u003c% $.flavor_name \u003d \u0027\u0027 %\u003e"},{"line_number":94,"context_line":"        on-error: set_status_failed_get_flavor_name"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_48edf7ed","line":91,"updated":"2017-05-15 15:31:01.000000000","message":"I could be wrong, but I believe this needs to be located below the publish statement.\n\nI also think it will be good form to rely on strings evaluating to true/false based on whether they\u0027re empty (similar to python convention). So these would be:\n\n- get_profile_name: \u003c% $.flavor_name %\u003e\n- set_status_failed_get_flavor_name: \u003c% not $.flavor_name %\u003e","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"669e32ba2719deaac368779c4d34f43a6d4ef2fb","unresolved":false,"context_lines":[{"line_number":88,"context_line":"      # 1) profile and flavor based mapping"},{"line_number":89,"context_line":"      # 2) Nova placement api based mapping"},{"line_number":90,"context_line":"      get_flavor_name:"},{"line_number":91,"context_line":"        on-success:"},{"line_number":92,"context_line":"          - get_profile_name: \u003c% $.flavor_name !\u003d \u0027\u0027 %\u003e"},{"line_number":93,"context_line":"          - set_status_failed_get_flavor_name: \u003c% $.flavor_name \u003d \u0027\u0027 %\u003e"},{"line_number":94,"context_line":"        on-error: set_status_failed_get_flavor_name"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_3a675128","line":91,"in_reply_to":"1f013ff3_48edf7ed","updated":"2017-05-17 09:17:46.000000000","message":"Done","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"edf94ab72bbc6792d1e2a1e718154a2fc763e82f","unresolved":false,"context_lines":[{"line_number":93,"context_line":"          - set_status_failed_get_flavor_name: \u003c% $.flavor_name \u003d \u0027\u0027 %\u003e"},{"line_number":94,"context_line":"        on-error: set_status_failed_get_flavor_name"},{"line_number":95,"context_line":"        publish:"},{"line_number":96,"context_line":"          flavor_name: \u003c% let(role_flavor \u003d\u003e $.heat_resource_tree.parameters.get(concat(\u0027Overcloud\u0027, $.role_name, \u0027Flavor\u0027), {})) -\u003e $role_flavor.get(\u0027default\u0027, \u0027\u0027) %\u003e"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"      get_profile_name:"},{"line_number":99,"context_line":"        action: tripleo.derive_parameters.get_profile_name flavor_name\u003d\u003c% $.flavor_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_489bb771","line":96,"updated":"2017-05-15 15:31:01.000000000","message":"I don\u0027t think this is sufficient for a couple of reasons. First, this code will only ever return the default flavor, which is hard-coded to \"baremetal.\" User can override flavors in the deploy command, in which case the value needs to be fetched from the environment.\n\nSecond, there\u0027s a special case that needs to be dealt with, and that is the Compute role\u0027s flavor is OvercloudNovaComputeFlavor (extra \"Nova\").\n\nI have code I can share that covers both of these issues.","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"8c285b97fbaa43e86d6381227aae1dc2150f2316","unresolved":false,"context_lines":[{"line_number":93,"context_line":"          - set_status_failed_get_flavor_name: \u003c% $.flavor_name \u003d \u0027\u0027 %\u003e"},{"line_number":94,"context_line":"        on-error: set_status_failed_get_flavor_name"},{"line_number":95,"context_line":"        publish:"},{"line_number":96,"context_line":"          flavor_name: \u003c% let(role_flavor \u003d\u003e $.heat_resource_tree.parameters.get(concat(\u0027Overcloud\u0027, $.role_name, \u0027Flavor\u0027), {})) -\u003e $role_flavor.get(\u0027default\u0027, \u0027\u0027) %\u003e"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"      get_profile_name:"},{"line_number":99,"context_line":"        action: tripleo.derive_parameters.get_profile_name flavor_name\u003d\u003c% $.flavor_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_d9baf7dc","line":96,"in_reply_to":"1f013ff3_489bb771","updated":"2017-05-15 16:56:22.000000000","message":"Whoops, sorry, wrong exception. It\u0027s the \"Controller\" role that uses the \"OvercloudControlFlavor.\"","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"669e32ba2719deaac368779c4d34f43a6d4ef2fb","unresolved":false,"context_lines":[{"line_number":93,"context_line":"          - set_status_failed_get_flavor_name: \u003c% $.flavor_name \u003d \u0027\u0027 %\u003e"},{"line_number":94,"context_line":"        on-error: set_status_failed_get_flavor_name"},{"line_number":95,"context_line":"        publish:"},{"line_number":96,"context_line":"          flavor_name: \u003c% let(role_flavor \u003d\u003e $.heat_resource_tree.parameters.get(concat(\u0027Overcloud\u0027, $.role_name, \u0027Flavor\u0027), {})) -\u003e $role_flavor.get(\u0027default\u0027, \u0027\u0027) %\u003e"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"      get_profile_name:"},{"line_number":99,"context_line":"        action: tripleo.derive_parameters.get_profile_name flavor_name\u003d\u003c% $.flavor_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_9dfe5f35","line":96,"in_reply_to":"1f013ff3_d9baf7dc","updated":"2017-05-17 09:17:46.000000000","message":"Done","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"edf94ab72bbc6792d1e2a1e718154a2fc763e82f","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        publish:"},{"line_number":121,"context_line":"          introspection_data: \u003c% task(get_introspection_data).result %\u003e"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"      set_status_failed_get_flavor_name:"},{"line_number":124,"context_line":"        publish:"},{"line_number":125,"context_line":"          status: FAILED"},{"line_number":126,"context_line":"          message: \u003c% task(get_flavor_name).result %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_c8b6a7da","line":123,"updated":"2017-05-15 15:31:01.000000000","message":"Since we\u0027re not sending a zaqar message for internal workflows such as this, then the set_status_failed_XXX tasks need to invoke the std.fail action.","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"669e32ba2719deaac368779c4d34f43a6d4ef2fb","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        publish:"},{"line_number":121,"context_line":"          introspection_data: \u003c% task(get_introspection_data).result %\u003e"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"      set_status_failed_get_flavor_name:"},{"line_number":124,"context_line":"        publish:"},{"line_number":125,"context_line":"          status: FAILED"},{"line_number":126,"context_line":"          message: \u003c% task(get_flavor_name).result %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"1f013ff3_207164aa","line":123,"in_reply_to":"1f013ff3_c8b6a7da","updated":"2017-05-17 09:17:46.000000000","message":"Workflow is not providing result as expected and returns only message for all roles if std.fail action is invoked.","commit_id":"7b6acfb0f8a57bdf33eae874b6c39d2e587be61b"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"8e7e5b094a10ee4f01e6620871d02893983fd73b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        on-success: send_message"},{"line_number":42,"context_line":"        on-error: set_status_failed_for_each_role"},{"line_number":43,"context_line":"        publish:"},{"line_number":44,"context_line":"          roles_derive_params_info: \u003c% task(for_each_role).result %\u003e"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"      set_status_failed_get_flattened_parameters:"},{"line_number":47,"context_line":"        on-success: send_message"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_05047814","line":44,"updated":"2017-05-18 09:29:23.000000000","message":"When running in loop, how is the output of the for_each_role will look like? With the output will be populated for each loop?","commit_id":"66e78430e499ec144e28e6801c0e44c8bce22c08"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"1c79104d7abc7b111cd8a6bbec71406a91ef58e9","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        on-success: send_message"},{"line_number":42,"context_line":"        on-error: set_status_failed_for_each_role"},{"line_number":43,"context_line":"        publish:"},{"line_number":44,"context_line":"          roles_derive_params_info: \u003c% task(for_each_role).result %\u003e"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"      set_status_failed_get_flattened_parameters:"},{"line_number":47,"context_line":"        on-success: send_message"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_20a9a77a","line":44,"in_reply_to":"ff0f0b1f_05047814","updated":"2017-05-18 12:01:15.000000000","message":"Output will be populated as below\n    \"roles_derive_params_info\": [\n        {\n            \"status\": \"SUCCESS\",\n            \"message\": \"\"\n        },\n        {\n            \"status\": \"FAILED\",\n            \"message\": \"Error Message\"\n        }\n    ]","commit_id":"66e78430e499ec144e28e6801c0e44c8bce22c08"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"8e7e5b094a10ee4f01e6620871d02893983fd73b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            body:"},{"line_number":71,"context_line":"              type: tripleo.derive_params.v1.derive_parameters"},{"line_number":72,"context_line":"              payload:"},{"line_number":73,"context_line":"                status: \u003c% $.get(\u0027status\u0027, \u0027FAILED\u0027) %\u003e"},{"line_number":74,"context_line":"                message: \u003c% $.get(\u0027message\u0027, \u0027\u0027) %\u003e"},{"line_number":75,"context_line":"                execution: \u003c% execution() %\u003e"},{"line_number":76,"context_line":"        on-success:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_650214b7","line":73,"range":{"start_line":73,"start_character":15,"end_line":73,"end_character":55},"updated":"2017-05-18 09:29:23.000000000","message":"SUCCESS should be set somewhere else the default should b. Refer - https://github.com/openstack/tripleo-common/blob/master/workbooks/baremetal.yaml#L772","commit_id":"66e78430e499ec144e28e6801c0e44c8bce22c08"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"1c79104d7abc7b111cd8a6bbec71406a91ef58e9","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            body:"},{"line_number":71,"context_line":"              type: tripleo.derive_params.v1.derive_parameters"},{"line_number":72,"context_line":"              payload:"},{"line_number":73,"context_line":"                status: \u003c% $.get(\u0027status\u0027, \u0027FAILED\u0027) %\u003e"},{"line_number":74,"context_line":"                message: \u003c% $.get(\u0027message\u0027, \u0027\u0027) %\u003e"},{"line_number":75,"context_line":"                execution: \u003c% execution() %\u003e"},{"line_number":76,"context_line":"        on-success:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_40c5bb3b","line":73,"range":{"start_line":73,"start_character":15,"end_line":73,"end_character":55},"in_reply_to":"ff0f0b1f_650214b7","updated":"2017-05-18 12:01:15.000000000","message":"Done","commit_id":"66e78430e499ec144e28e6801c0e44c8bce22c08"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"d4d52432dfd2d4c8612f2dcac30df13e692361cf","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"      get_roles:"},{"line_number":25,"context_line":"        publish:"},{"line_number":26,"context_line":"          role_name_list: \u003c% let(hr \u003d\u003e $.heat_resource_tree, ep \u003d\u003e $.environment_parameters) -\u003e $hr.resources.values().where($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::Heat::ResourceGroup\u0027).select($.name).where(int($ep.get(concat($, \"Count\"), 0)) \u003e 0) %\u003e"},{"line_number":27,"context_line":"        on-success:"},{"line_number":28,"context_line":"          - for_each_role: \u003c% $.role_name_list %\u003e"},{"line_number":29,"context_line":"          - set_status_failed_get_roles: \u003c% not $.role_name_list %\u003e"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"ff0f0b1f_3376a308","line":26,"updated":"2017-05-18 12:55:07.000000000","message":"Nit, but if another patch set is necessary then I\u0027d like to see all double quotes be converted to single quotes simply for consistency. \"Count\" \u003d\u003e \u0027Count\u0027\n\nThere are a few instances of this, but I\u0027m flagging just this one.","commit_id":"6e44c281e9d36e4c2c1342236fbdea1095046abb"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"4bed9b4a96cc12829af6c2660607f2d036529fcc","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"      get_roles:"},{"line_number":25,"context_line":"        publish:"},{"line_number":26,"context_line":"          role_name_list: \u003c% let(hr \u003d\u003e $.heat_resource_tree, ep \u003d\u003e $.environment_parameters) -\u003e $hr.resources.values().where($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::Heat::ResourceGroup\u0027).select($.name).where(int($ep.get(concat($, \"Count\"), 0)) \u003e 0) %\u003e"},{"line_number":27,"context_line":"        on-success:"},{"line_number":28,"context_line":"          - for_each_role: \u003c% $.role_name_list %\u003e"},{"line_number":29,"context_line":"          - set_status_failed_get_roles: \u003c% not $.role_name_list %\u003e"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"ff0f0b1f_6aff7501","line":26,"in_reply_to":"ff0f0b1f_3376a308","updated":"2017-05-18 15:57:14.000000000","message":"Done","commit_id":"6e44c281e9d36e4c2c1342236fbdea1095046abb"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"d4d52432dfd2d4c8612f2dcac30df13e692361cf","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        on-success:"},{"line_number":28,"context_line":"          - for_each_role: \u003c% $.role_name_list %\u003e"},{"line_number":29,"context_line":"          - set_status_failed_get_roles: \u003c% not $.role_name_list %\u003e"},{"line_number":30,"context_line":"        on-error: set_status_failed_get_roles"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"      # Excute the basic preparation workflow for each role to get introspection data"},{"line_number":33,"context_line":"      for_each_role:"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"ff0f0b1f_f394abea","line":30,"updated":"2017-05-18 12:55:07.000000000","message":"I prefer to not have on-error clauses when the action is std.noop because that action never fails.","commit_id":"6e44c281e9d36e4c2c1342236fbdea1095046abb"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"4bed9b4a96cc12829af6c2660607f2d036529fcc","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        on-success:"},{"line_number":28,"context_line":"          - for_each_role: \u003c% $.role_name_list %\u003e"},{"line_number":29,"context_line":"          - set_status_failed_get_roles: \u003c% not $.role_name_list %\u003e"},{"line_number":30,"context_line":"        on-error: set_status_failed_get_roles"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"      # Excute the basic preparation workflow for each role to get introspection data"},{"line_number":33,"context_line":"      for_each_role:"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"ff0f0b1f_8a32c9f0","line":30,"in_reply_to":"ff0f0b1f_f394abea","updated":"2017-05-18 15:57:14.000000000","message":"Done","commit_id":"6e44c281e9d36e4c2c1342236fbdea1095046abb"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"d4d52432dfd2d4c8612f2dcac30df13e692361cf","unresolved":false,"context_lines":[{"line_number":98,"context_line":"      # TODO-Nova placement api based mapping is pending, we will enchance it later."},{"line_number":99,"context_line":"      get_flavor_name:"},{"line_number":100,"context_line":"        publish:"},{"line_number":101,"context_line":"          flavor_name: \u003c% let(param_name \u003d\u003e concat(\u0027Overcloud\u0027, $.role_name.replace(\u0027Controller\u0027, \u0027Control\u0027), \u0027Flavor\u0027)) -\u003e $.environment_parameters.get($param_name, \u0027\u0027) or $.heat_resource_tree.parameters.get($param_name, {}).get(\u0027default\u0027, \u0027\u0027) %\u003e"},{"line_number":102,"context_line":"        on-success:"},{"line_number":103,"context_line":"          - get_profile_name: \u003c% $.flavor_name %\u003e"},{"line_number":104,"context_line":"          - set_status_failed_get_flavor_name: \u003c% not $.flavor_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"ff0f0b1f_563d85b9","line":101,"updated":"2017-05-18 12:55:07.000000000","message":"Please re-examine the sample code I shared earlier, and note how I used replace() to only trigger when the input string is \u0027OvercloudControllerFlavor\u0027. Globally changing any ocurrence of \u0027Controller\u0027 in the role name is too agressive.","commit_id":"6e44c281e9d36e4c2c1342236fbdea1095046abb"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"4bed9b4a96cc12829af6c2660607f2d036529fcc","unresolved":false,"context_lines":[{"line_number":98,"context_line":"      # TODO-Nova placement api based mapping is pending, we will enchance it later."},{"line_number":99,"context_line":"      get_flavor_name:"},{"line_number":100,"context_line":"        publish:"},{"line_number":101,"context_line":"          flavor_name: \u003c% let(param_name \u003d\u003e concat(\u0027Overcloud\u0027, $.role_name.replace(\u0027Controller\u0027, \u0027Control\u0027), \u0027Flavor\u0027)) -\u003e $.environment_parameters.get($param_name, \u0027\u0027) or $.heat_resource_tree.parameters.get($param_name, {}).get(\u0027default\u0027, \u0027\u0027) %\u003e"},{"line_number":102,"context_line":"        on-success:"},{"line_number":103,"context_line":"          - get_profile_name: \u003c% $.flavor_name %\u003e"},{"line_number":104,"context_line":"          - set_status_failed_get_flavor_name: \u003c% not $.flavor_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"ff0f0b1f_4a527115","line":101,"in_reply_to":"ff0f0b1f_563d85b9","updated":"2017-05-18 15:57:14.000000000","message":"Done","commit_id":"6e44c281e9d36e4c2c1342236fbdea1095046abb"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"d4d52432dfd2d4c8612f2dcac30df13e692361cf","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        input:"},{"line_number":117,"context_line":"          profile: \u003c% $.profile_name %\u003e"},{"line_number":118,"context_line":"        publish:"},{"line_number":119,"context_line":"          profile_node_uuid: \u003c% task(get_profile_node).result.matching_nodes.first() %\u003e"},{"line_number":120,"context_line":"        on-success:"},{"line_number":121,"context_line":"          - get_introspection_data: \u003c% $.profile_node_uuid %\u003e"},{"line_number":122,"context_line":"          - set_status_failed_get_profile_node: \u003c% not $.profile_node_uuid %\u003e"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"ff0f0b1f_d63bd599","line":119,"updated":"2017-05-18 12:55:07.000000000","message":"If no nodes match the profile then first() will throw an exception, but first(\u0027\u0027) will do the right thing and return an empty string.","commit_id":"6e44c281e9d36e4c2c1342236fbdea1095046abb"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"4bed9b4a96cc12829af6c2660607f2d036529fcc","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        input:"},{"line_number":117,"context_line":"          profile: \u003c% $.profile_name %\u003e"},{"line_number":118,"context_line":"        publish:"},{"line_number":119,"context_line":"          profile_node_uuid: \u003c% task(get_profile_node).result.matching_nodes.first() %\u003e"},{"line_number":120,"context_line":"        on-success:"},{"line_number":121,"context_line":"          - get_introspection_data: \u003c% $.profile_node_uuid %\u003e"},{"line_number":122,"context_line":"          - set_status_failed_get_profile_node: \u003c% not $.profile_node_uuid %\u003e"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"ff0f0b1f_6a7655a7","line":119,"in_reply_to":"ff0f0b1f_d63bd599","updated":"2017-05-18 15:57:14.000000000","message":"Done","commit_id":"6e44c281e9d36e4c2c1342236fbdea1095046abb"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"719fcf79950f47c4fcc8ec899df8b097b95c5114","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        on-success: send_message"},{"line_number":43,"context_line":"        on-error: set_status_failed_for_each_role"},{"line_number":44,"context_line":"        publish:"},{"line_number":45,"context_line":"          roles_derive_params_info: \u003c% task(for_each_role).result %\u003e"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"      set_status_failed_get_flattened_parameters:"},{"line_number":48,"context_line":"        on-success: send_message"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"ff0f0b1f_1c92759f","line":45,"updated":"2017-05-19 05:56:53.000000000","message":"We we need to ensure is that if derive params for one role is failing, the derive_parameters workflow should fail. The role for which it has failed and the error information should be provided via the send message. \n\nWhat happens if the first role is failed and second role is successful? We have given concurrency as 1, will it stop running the second role after first role\u0027s failure? If it doesn\u0027t stop, then we have ensure that all the failure has been provided as a list.","commit_id":"99ad221bd10d2632d8e41b81ef74205dbe477c89"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"846c51957a03597f339c67faeeef80bc5778dcc1","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        on-success: send_message"},{"line_number":43,"context_line":"        on-error: set_status_failed_for_each_role"},{"line_number":44,"context_line":"        publish:"},{"line_number":45,"context_line":"          roles_derive_params_info: \u003c% task(for_each_role).result %\u003e"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"      set_status_failed_get_flattened_parameters:"},{"line_number":48,"context_line":"        on-success: send_message"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"ff0f0b1f_d3abc01a","line":45,"in_reply_to":"ff0f0b1f_1c92759f","updated":"2017-05-19 13:19:23.000000000","message":"Updated the derive_parameters workflow to fail and provides error message when derive_parameters_per_role workflow fails for any roles.\nCurrent flow will not stop running if any role is failed. continues for all roles and provides the list for failures with role info.","commit_id":"99ad221bd10d2632d8e41b81ef74205dbe477c89"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"464c9bd2df2939f5d750929bc1ca9d3087252158","unresolved":false,"context_lines":[{"line_number":40,"context_line":"          environment_parameters: \u003c% $.environment_parameters %\u003e"},{"line_number":41,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":42,"context_line":"        publish:"},{"line_number":43,"context_line":"          roles_derive_params_status: \u003c% task(for_each_role).result.all($.get(\u0027status\u0027) \u003d \u0027SUCCESS\u0027) %\u003e"},{"line_number":44,"context_line":"        on-success:"},{"line_number":45,"context_line":"          - send_message: \u003c% $.roles_derive_params_status %\u003e"},{"line_number":46,"context_line":"          - set_status_failed_for_each_role: \u003c% not $.roles_derive_params_status %\u003e"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff0f0b1f_f759095a","line":43,"updated":"2017-05-19 16:41:37.000000000","message":"This looks like the published variable is now a simple boolean, which will be True only if all the with-items status are SUCCESS. Is that the intent? It that\u0027s the case then perhaps another name for the variable would be something like derive_params_summary_status.","commit_id":"59a55f255f5a81fbb8c9040e08096d518896b0d8"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"b49b4cc4c1b80315f2bdd24518aa938037c4f65b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"          environment_parameters: \u003c% $.environment_parameters %\u003e"},{"line_number":41,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":42,"context_line":"        publish:"},{"line_number":43,"context_line":"          roles_derive_params_status: \u003c% task(for_each_role).result.all($.get(\u0027status\u0027) \u003d \u0027SUCCESS\u0027) %\u003e"},{"line_number":44,"context_line":"        on-success:"},{"line_number":45,"context_line":"          - send_message: \u003c% $.roles_derive_params_status %\u003e"},{"line_number":46,"context_line":"          - set_status_failed_for_each_role: \u003c% not $.roles_derive_params_status %\u003e"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff0f0b1f_21f977c7","line":43,"in_reply_to":"ff0f0b1f_f759095a","updated":"2017-05-19 19:47:41.000000000","message":"This variable is used to identify whether derive_parameters_per_role workflow is SUCCESS for all the roles or not.\nRenamed as derive_params_summary_status","commit_id":"59a55f255f5a81fbb8c9040e08096d518896b0d8"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"464c9bd2df2939f5d750929bc1ca9d3087252158","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        on-success: send_message"},{"line_number":57,"context_line":"        publish:"},{"line_number":58,"context_line":"          status: FAILED"},{"line_number":59,"context_line":"          message: \u003c% \u0027Roles data is not found.\u0027  %\u003e"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"      set_status_failed_for_each_role:"},{"line_number":62,"context_line":"        on-success: send_message"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff0f0b1f_c59e4e62","line":59,"updated":"2017-05-19 16:41:37.000000000","message":"Simple string is adequate (no need to wrap in \u003c% %\u003e yaql tags)\n\nI think the text of the message could be expanded to something like \u0027Unable to determine the list of roles in the deployment plan.\u0027 Others may have their own suggestions.","commit_id":"59a55f255f5a81fbb8c9040e08096d518896b0d8"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"b49b4cc4c1b80315f2bdd24518aa938037c4f65b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        on-success: send_message"},{"line_number":57,"context_line":"        publish:"},{"line_number":58,"context_line":"          status: FAILED"},{"line_number":59,"context_line":"          message: \u003c% \u0027Roles data is not found.\u0027  %\u003e"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"      set_status_failed_for_each_role:"},{"line_number":62,"context_line":"        on-success: send_message"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff0f0b1f_813163a5","line":59,"in_reply_to":"ff0f0b1f_c59e4e62","updated":"2017-05-19 19:47:41.000000000","message":"Done","commit_id":"59a55f255f5a81fbb8c9040e08096d518896b0d8"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"464c9bd2df2939f5d750929bc1ca9d3087252158","unresolved":false,"context_lines":[{"line_number":135,"context_line":"      set_status_failed_get_flavor_name:"},{"line_number":136,"context_line":"        publish:"},{"line_number":137,"context_line":"          status: FAILED"},{"line_number":138,"context_line":"          message: \u003c% \u0027Flavor name is not found for a role:{0}\u0027.format($.role_name) %\u003e"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"      set_status_failed_get_profile_name:"},{"line_number":141,"context_line":"        publish:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff0f0b1f_450ebe8d","line":138,"updated":"2017-05-19 16:41:37.000000000","message":"Many people will have differing opinions on how to word error messages like this. Here\u0027s mine:\n\n\u0027Unable to determine flavor ({0}) for role {1}\u0027.format($.flavor_name, $.role_name)\n\nThe important part is including the $.flavor_name in the message.","commit_id":"59a55f255f5a81fbb8c9040e08096d518896b0d8"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"b49b4cc4c1b80315f2bdd24518aa938037c4f65b","unresolved":false,"context_lines":[{"line_number":135,"context_line":"      set_status_failed_get_flavor_name:"},{"line_number":136,"context_line":"        publish:"},{"line_number":137,"context_line":"          status: FAILED"},{"line_number":138,"context_line":"          message: \u003c% \u0027Flavor name is not found for a role:{0}\u0027.format($.role_name) %\u003e"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"      set_status_failed_get_profile_name:"},{"line_number":141,"context_line":"        publish:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"ff0f0b1f_a1a107ac","line":138,"in_reply_to":"ff0f0b1f_450ebe8d","updated":"2017-05-19 19:47:41.000000000","message":"We can\u0027t include flavor_name here because this message will be displayed when flavor name is empty or null. otherwise this message won\u0027t be displayed.\nUpdated error message as mentioned above but not included flavor name.","commit_id":"59a55f255f5a81fbb8c9040e08096d518896b0d8"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"4c142502b19fc079f0b7ff07272d577b38651b66","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        on-success: send_message"},{"line_number":59,"context_line":"        publish:"},{"line_number":60,"context_line":"          status: FAILED"},{"line_number":61,"context_line":"          message: \u003c% task(for_each_role).result.select([list($.role_name).toDict(\u0027role_name\u0027, $) + list($.status).toDict(\u0027status\u0027, $) + list($.message).toDict(\u0027message\u0027,$)]) %\u003e"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"      send_message:"},{"line_number":64,"context_line":"        action: zaqar.queue_post"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"ff0f0b1f_fd6703ea","line":61,"range":{"start_line":61,"start_character":10,"end_line":61,"end_character":17},"updated":"2017-05-25 15:30:21.000000000","message":"Just wondering if there is any case that this can fail? If i remember, this has been generated based on the outputs of the inner workflows. If there is no failures case in the yaql, then its file. \n\nAdd a comment on what we are doing here.","commit_id":"37deef6771196dbd23808fda74994cfc11ee22fc"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"132e0d151783cd670ae556f1103b8966f4b7c49e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"          status: FAILED"},{"line_number":55,"context_line":"          message: \u0027Unable to determine the list of roles in the deployment plan.\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      set_status_failed_for_each_role:"},{"line_number":58,"context_line":"        on-success: send_message"},{"line_number":59,"context_line":"        publish:"},{"line_number":60,"context_line":"          status: FAILED"},{"line_number":61,"context_line":"          message: \u003c% task(for_each_role).result.select([list($.role_name).toDict(\u0027role_name\u0027, $) + list($.status).toDict(\u0027status\u0027, $) + list($.message).toDict(\u0027message\u0027,$)]) %\u003e"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"      send_message:"},{"line_number":64,"context_line":"        action: zaqar.queue_post"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"ff0f0b1f_7d77730a","line":61,"range":{"start_line":57,"start_character":0,"end_line":61,"end_character":177},"updated":"2017-05-25 15:51:49.000000000","message":"You use list() to create a single-entry list, and then toDict() to create the dictionary. Is it really necessary to do that? Can\u0027t you just use dict() to create the dictionary directly, without the intermediate collection?","commit_id":"37deef6771196dbd23808fda74994cfc11ee22fc"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"f462055512377ef2fc4438b1be29ce9a94724d84","unresolved":false,"context_lines":[{"line_number":54,"context_line":"          status: FAILED"},{"line_number":55,"context_line":"          message: \u0027Unable to determine the list of roles in the deployment plan.\u0027"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"      set_status_failed_for_each_role:"},{"line_number":58,"context_line":"        on-success: send_message"},{"line_number":59,"context_line":"        publish:"},{"line_number":60,"context_line":"          status: FAILED"},{"line_number":61,"context_line":"          message: \u003c% task(for_each_role).result.select([list($.role_name).toDict(\u0027role_name\u0027, $) + list($.status).toDict(\u0027status\u0027, $) + list($.message).toDict(\u0027message\u0027,$)]) %\u003e"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"      send_message:"},{"line_number":64,"context_line":"        action: zaqar.queue_post"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"ff0f0b1f_4033a263","line":61,"range":{"start_line":57,"start_character":0,"end_line":61,"end_character":177},"in_reply_to":"ff0f0b1f_7d77730a","updated":"2017-05-25 16:18:38.000000000","message":"Updated with dict.","commit_id":"37deef6771196dbd23808fda74994cfc11ee22fc"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"0edfe9676766d6554f13fd05446121fd2059c95d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        on-success: send_message"},{"line_number":59,"context_line":"        publish:"},{"line_number":60,"context_line":"          status: FAILED"},{"line_number":61,"context_line":"          message: \u003c% task(for_each_role).result.select([list($.role_name).toDict(\u0027role_name\u0027, $) + list($.status).toDict(\u0027status\u0027, $) + list($.message).toDict(\u0027message\u0027,$)]) %\u003e"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"      send_message:"},{"line_number":64,"context_line":"        action: zaqar.queue_post"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"ff0f0b1f_0096ca95","line":61,"range":{"start_line":61,"start_character":10,"end_line":61,"end_character":17},"in_reply_to":"ff0f0b1f_fd6703ea","updated":"2017-05-25 15:59:55.000000000","message":"Inner workflow throws failure message as role_name, status, message and other published variables If inner workflow fails.\nThis logic prevents capturing published variables in inner workflows. \nThis will not be failed except interpreter errors if inner workflow fails with role_name, status and message.","commit_id":"37deef6771196dbd23808fda74994cfc11ee22fc"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"132e0d151783cd670ae556f1103b8966f4b7c49e","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        publish:"},{"line_number":128,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":129,"context_line":"          status: FAILED"},{"line_number":130,"context_line":"          message: \u003c% \u0027Unable to determine flavor for role:{0}\u0027.format($.role_name) %\u003e"},{"line_number":131,"context_line":"        on-success: fail"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"      set_status_failed_get_profile_name:"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"ff0f0b1f_5d982f1a","line":130,"updated":"2017-05-25 15:51:49.000000000","message":"Trivial nit, but would the message be easier to read if there were a space between the \u0027:\u0027 and the role name? I\u0027d like to establish a good precedent to follow everywhere.","commit_id":"37deef6771196dbd23808fda74994cfc11ee22fc"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"f462055512377ef2fc4438b1be29ce9a94724d84","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        publish:"},{"line_number":128,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":129,"context_line":"          status: FAILED"},{"line_number":130,"context_line":"          message: \u003c% \u0027Unable to determine flavor for role:{0}\u0027.format($.role_name) %\u003e"},{"line_number":131,"context_line":"        on-success: fail"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"      set_status_failed_get_profile_name:"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"ff0f0b1f_40fe026c","line":130,"in_reply_to":"ff0f0b1f_5d982f1a","updated":"2017-05-25 16:18:38.000000000","message":"Done","commit_id":"37deef6771196dbd23808fda74994cfc11ee22fc"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"334b9f3a26a51f89ea2a84d0964ccbc9de08cacb","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        publish:"},{"line_number":128,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":129,"context_line":"          status: FAILED"},{"line_number":130,"context_line":"          message: \u003c% \u0027Unable to determine flavor for role:{0}{1}\u0027.format(\u0027 \u0027, $.role_name) %\u003e"},{"line_number":131,"context_line":"        on-success: fail"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"      set_status_failed_get_profile_name:"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"ff0f0b1f_43cf2c29","line":130,"updated":"2017-05-25 16:48:32.000000000","message":"Thank you for considering my comment, but can\u0027t you just insert a space in the string? Like this:\n\n\u0027Unable to determine flavor for role: {0}\u0027.format($.role_name)","commit_id":"8118b820e9c927b600d8907287e87ca849d9ef1c"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"ded4f87f158d94be88c53c46587f4d627514be0c","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        publish:"},{"line_number":128,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":129,"context_line":"          status: FAILED"},{"line_number":130,"context_line":"          message: \u003c% \u0027Unable to determine flavor for role:{0}{1}\u0027.format(\u0027 \u0027, $.role_name) %\u003e"},{"line_number":131,"context_line":"        on-success: fail"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"      set_status_failed_get_profile_name:"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"ff0f0b1f_d41ad46d","line":130,"in_reply_to":"ff0f0b1f_0996f595","updated":"2017-05-25 18:01:51.000000000","message":"Hmm, OK, so it\u0027s an issue when used in a mistral expression. That\u0027s unfortunate. I guess we can go with your original method. Or would another viable alternative be to simply drop the \u0027:\u0027 ?","commit_id":"8118b820e9c927b600d8907287e87ca849d9ef1c"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"66c2b1de26877ba1a297de0bc37ec366fabf821b","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        publish:"},{"line_number":128,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":129,"context_line":"          status: FAILED"},{"line_number":130,"context_line":"          message: \u003c% \u0027Unable to determine flavor for role:{0}{1}\u0027.format(\u0027 \u0027, $.role_name) %\u003e"},{"line_number":131,"context_line":"        on-success: fail"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"      set_status_failed_get_profile_name:"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"ff0f0b1f_2eed3f8b","line":130,"in_reply_to":"ff0f0b1f_2ecf7fb1","updated":"2017-05-25 17:17:33.000000000","message":"I don\u0027t understand. Based on my own tests, the colon \u0027:\u0027 has no significance to the formatter. It\u0027s treated the same as any other character in the string, except for the {} tokens.\n\nyaql\u003e \u0027this is a test {}\u0027.format(\u0027foo\u0027)\n\"this is a test foo\"\nyaql\u003e \u0027this is a test {0}\u0027.format(\u0027foo\u0027)\n\"this is a test foo\"\nyaql\u003e \u0027this is a test {0}{1}\u0027.format(\u0027foo\u0027, \u0027bar\u0027)\n\"this is a test foobar\"\nyaql\u003e \u0027this is a test {1}{0}\u0027.format(\u0027foo\u0027, \u0027bar\u0027)\n\"this is a test barfoo\"\nyaql\u003e \u0027this is a test:{0}{1}\u0027.format(\u0027foo\u0027, \u0027bar\u0027)\n\"this is a test:foobar\"\nyaql\u003e \u0027this is a test: {0}{1}\u0027.format(\u0027foo\u0027, \u0027bar\u0027)\n\"this is a test: foobar\"","commit_id":"8118b820e9c927b600d8907287e87ca849d9ef1c"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"30563a94324c9831ac6fc8f261521cc4a33d9990","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        publish:"},{"line_number":128,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":129,"context_line":"          status: FAILED"},{"line_number":130,"context_line":"          message: \u003c% \u0027Unable to determine flavor for role:{0}{1}\u0027.format(\u0027 \u0027, $.role_name) %\u003e"},{"line_number":131,"context_line":"        on-success: fail"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"      set_status_failed_get_profile_name:"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"ff0f0b1f_0996f595","line":130,"in_reply_to":"ff0f0b1f_2eed3f8b","updated":"2017-05-25 17:29:17.000000000","message":"Getting below error in mistral execution.\nERROR (app) Definition could not be parsed: mapping values are not allowed here\n  in \"\u003cunicode string\u003e\", line 146, column 69:\n     ... ermine matching node for profile: {0}\u0027.format($.profile_name) %\u003e\n\nPlease check once same in mistral environment on your machine.","commit_id":"8118b820e9c927b600d8907287e87ca849d9ef1c"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"e3c4773ca8f1279e742d85d39c1138b532a10c91","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        publish:"},{"line_number":128,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":129,"context_line":"          status: FAILED"},{"line_number":130,"context_line":"          message: \u003c% \u0027Unable to determine flavor for role:{0}{1}\u0027.format(\u0027 \u0027, $.role_name) %\u003e"},{"line_number":131,"context_line":"        on-success: fail"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"      set_status_failed_get_profile_name:"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"ff0f0b1f_2ecf7fb1","line":130,"in_reply_to":"ff0f0b1f_43cf2c29","updated":"2017-05-25 17:02:56.000000000","message":"Getting mapping values are not allowed here error if we use \u0027: \u0027 directly. So i have used format method to include \u0027 \u0027 after :","commit_id":"8118b820e9c927b600d8907287e87ca849d9ef1c"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"91e4b455497b98b1238ad3aaa7e7e5bd8a7d918a","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        publish:"},{"line_number":128,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":129,"context_line":"          status: FAILED"},{"line_number":130,"context_line":"          message: \u003c% \u0027Unable to determine flavor for role:{0}{1}\u0027.format(\u0027 \u0027, $.role_name) %\u003e"},{"line_number":131,"context_line":"        on-success: fail"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"      set_status_failed_get_profile_name:"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"ff0f0b1f_54cfe428","line":130,"in_reply_to":"ff0f0b1f_d41ad46d","updated":"2017-05-25 18:29:56.000000000","message":"As discussed, Updated error message format like\n\u003c% \"Unable to determine matching node for profile \u0027{0}\u0027\".format($.profile_name) %\u003e instead of \u0027: \u0027","commit_id":"8118b820e9c927b600d8907287e87ca849d9ef1c"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"74d78bded7e87f3900e698c348dc50abe880c151","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      get_flattened_parameters:"},{"line_number":17,"context_line":"        action: tripleo.parameters.get_flatten container\u003d\u003c% $.plan %\u003e"},{"line_number":18,"context_line":"        publish:"},{"line_number":19,"context_line":"          environment_parameters: \u003c% task(get_flattened_parameters).result.mistral_environment_parameters %\u003e"},{"line_number":20,"context_line":"          heat_resource_tree: \u003c% task(get_flattened_parameters).result.heat_resource_tree %\u003e"},{"line_number":21,"context_line":"        on-success:"},{"line_number":22,"context_line":"          - get_roles: \u003c% $.environment_parameters and $.heat_resource_tree %\u003e"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ff0f0b1f_3220eff7","line":19,"updated":"2017-05-26 08:36:23.000000000","message":"task() can be used here rather than task(get_flattened_parameters), it defaults to the current task.","commit_id":"57703c01b0bec13eadc9c428da9f9a519dc75f69"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"fab75a7a01857d17a22e58e896222082d71cd9c3","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      get_flattened_parameters:"},{"line_number":17,"context_line":"        action: tripleo.parameters.get_flatten container\u003d\u003c% $.plan %\u003e"},{"line_number":18,"context_line":"        publish:"},{"line_number":19,"context_line":"          environment_parameters: \u003c% task(get_flattened_parameters).result.mistral_environment_parameters %\u003e"},{"line_number":20,"context_line":"          heat_resource_tree: \u003c% task(get_flattened_parameters).result.heat_resource_tree %\u003e"},{"line_number":21,"context_line":"        on-success:"},{"line_number":22,"context_line":"          - get_roles: \u003c% $.environment_parameters and $.heat_resource_tree %\u003e"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ff0f0b1f_39e21203","line":19,"in_reply_to":"ff0f0b1f_3220eff7","updated":"2017-05-26 10:56:09.000000000","message":"Done","commit_id":"57703c01b0bec13eadc9c428da9f9a519dc75f69"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"74d78bded7e87f3900e698c348dc50abe880c151","unresolved":false,"context_lines":[{"line_number":17,"context_line":"        action: tripleo.parameters.get_flatten container\u003d\u003c% $.plan %\u003e"},{"line_number":18,"context_line":"        publish:"},{"line_number":19,"context_line":"          environment_parameters: \u003c% task(get_flattened_parameters).result.mistral_environment_parameters %\u003e"},{"line_number":20,"context_line":"          heat_resource_tree: \u003c% task(get_flattened_parameters).result.heat_resource_tree %\u003e"},{"line_number":21,"context_line":"        on-success:"},{"line_number":22,"context_line":"          - get_roles: \u003c% $.environment_parameters and $.heat_resource_tree %\u003e"},{"line_number":23,"context_line":"          - set_status_failed_get_flattened_parameters: \u003c% (not $.environment_parameters) or (not $.heat_resource_tree) %\u003e"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ff0f0b1f_b25abf80","line":20,"updated":"2017-05-26 08:36:23.000000000","message":"here too","commit_id":"57703c01b0bec13eadc9c428da9f9a519dc75f69"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"fab75a7a01857d17a22e58e896222082d71cd9c3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"        action: tripleo.parameters.get_flatten container\u003d\u003c% $.plan %\u003e"},{"line_number":18,"context_line":"        publish:"},{"line_number":19,"context_line":"          environment_parameters: \u003c% task(get_flattened_parameters).result.mistral_environment_parameters %\u003e"},{"line_number":20,"context_line":"          heat_resource_tree: \u003c% task(get_flattened_parameters).result.heat_resource_tree %\u003e"},{"line_number":21,"context_line":"        on-success:"},{"line_number":22,"context_line":"          - get_roles: \u003c% $.environment_parameters and $.heat_resource_tree %\u003e"},{"line_number":23,"context_line":"          - set_status_failed_get_flattened_parameters: \u003c% (not $.environment_parameters) or (not $.heat_resource_tree) %\u003e"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ff0f0b1f_19ef4eea","line":20,"in_reply_to":"ff0f0b1f_b25abf80","updated":"2017-05-26 10:56:09.000000000","message":"Done","commit_id":"57703c01b0bec13eadc9c428da9f9a519dc75f69"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"74d78bded7e87f3900e698c348dc50abe880c151","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"      get_roles:"},{"line_number":27,"context_line":"        publish:"},{"line_number":28,"context_line":"          role_name_list: \u003c% let(hr \u003d\u003e $.heat_resource_tree, ep \u003d\u003e $.environment_parameters) -\u003e $hr.resources.values().where($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::Heat::ResourceGroup\u0027).select($.name).where(int($ep.get(concat($, \u0027Count\u0027), 0)) \u003e 0) %\u003e"},{"line_number":29,"context_line":"        on-success:"},{"line_number":30,"context_line":"          - for_each_role: \u003c% $.role_name_list %\u003e"},{"line_number":31,"context_line":"          - set_status_failed_get_roles: \u003c% not $.role_name_list %\u003e"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ff0f0b1f_b2cf5f28","line":28,"updated":"2017-05-26 08:36:23.000000000","message":"This YAQL is beyond me - I\u0027m realising that YAQL is quite hard to read at times. I wonder if a general comment above describing it would be a good idea?","commit_id":"57703c01b0bec13eadc9c428da9f9a519dc75f69"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"fab75a7a01857d17a22e58e896222082d71cd9c3","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"      get_roles:"},{"line_number":27,"context_line":"        publish:"},{"line_number":28,"context_line":"          role_name_list: \u003c% let(hr \u003d\u003e $.heat_resource_tree, ep \u003d\u003e $.environment_parameters) -\u003e $hr.resources.values().where($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::Heat::ResourceGroup\u0027).select($.name).where(int($ep.get(concat($, \u0027Count\u0027), 0)) \u003e 0) %\u003e"},{"line_number":29,"context_line":"        on-success:"},{"line_number":30,"context_line":"          - for_each_role: \u003c% $.role_name_list %\u003e"},{"line_number":31,"context_line":"          - set_status_failed_get_roles: \u003c% not $.role_name_list %\u003e"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ff0f0b1f_f9eb7ad9","line":28,"in_reply_to":"ff0f0b1f_b2cf5f28","updated":"2017-05-26 10:56:09.000000000","message":"Done","commit_id":"57703c01b0bec13eadc9c428da9f9a519dc75f69"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"74d78bded7e87f3900e698c348dc50abe880c151","unresolved":false,"context_lines":[{"line_number":101,"context_line":"      get_profile_name:"},{"line_number":102,"context_line":"        action: tripleo.parameters.get_profile_of_flavor flavor_name\u003d\u003c% $.flavor_name %\u003e"},{"line_number":103,"context_line":"        publish:"},{"line_number":104,"context_line":"          profile_name: \u003c% task(get_profile_name).result %\u003e"},{"line_number":105,"context_line":"        on-success: get_profile_node"},{"line_number":106,"context_line":"        on-error: set_status_failed_get_profile_name"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ff0f0b1f_92d45bbf","line":104,"updated":"2017-05-26 08:36:23.000000000","message":"task()","commit_id":"57703c01b0bec13eadc9c428da9f9a519dc75f69"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"fab75a7a01857d17a22e58e896222082d71cd9c3","unresolved":false,"context_lines":[{"line_number":101,"context_line":"      get_profile_name:"},{"line_number":102,"context_line":"        action: tripleo.parameters.get_profile_of_flavor flavor_name\u003d\u003c% $.flavor_name %\u003e"},{"line_number":103,"context_line":"        publish:"},{"line_number":104,"context_line":"          profile_name: \u003c% task(get_profile_name).result %\u003e"},{"line_number":105,"context_line":"        on-success: get_profile_node"},{"line_number":106,"context_line":"        on-error: set_status_failed_get_profile_name"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ff0f0b1f_d9baf6df","line":104,"in_reply_to":"ff0f0b1f_92d45bbf","updated":"2017-05-26 10:56:09.000000000","message":"Done","commit_id":"57703c01b0bec13eadc9c428da9f9a519dc75f69"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"74d78bded7e87f3900e698c348dc50abe880c151","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        input:"},{"line_number":111,"context_line":"          profile: \u003c% $.profile_name %\u003e"},{"line_number":112,"context_line":"        publish:"},{"line_number":113,"context_line":"          profile_node_uuid: \u003c% task(get_profile_node).result.matching_nodes.first(\u0027\u0027) %\u003e"},{"line_number":114,"context_line":"        on-success:"},{"line_number":115,"context_line":"          - get_introspection_data: \u003c% $.profile_node_uuid %\u003e"},{"line_number":116,"context_line":"          - set_status_failed_no_matching_node_get_profile_node: \u003c% not $.profile_node_uuid %\u003e"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ff0f0b1f_72d9c7f2","line":113,"updated":"2017-05-26 08:36:23.000000000","message":"task()","commit_id":"57703c01b0bec13eadc9c428da9f9a519dc75f69"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"fab75a7a01857d17a22e58e896222082d71cd9c3","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        input:"},{"line_number":111,"context_line":"          profile: \u003c% $.profile_name %\u003e"},{"line_number":112,"context_line":"        publish:"},{"line_number":113,"context_line":"          profile_node_uuid: \u003c% task(get_profile_node).result.matching_nodes.first(\u0027\u0027) %\u003e"},{"line_number":114,"context_line":"        on-success:"},{"line_number":115,"context_line":"          - get_introspection_data: \u003c% $.profile_node_uuid %\u003e"},{"line_number":116,"context_line":"          - set_status_failed_no_matching_node_get_profile_node: \u003c% not $.profile_node_uuid %\u003e"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ff0f0b1f_b9bf42cf","line":113,"in_reply_to":"ff0f0b1f_72d9c7f2","updated":"2017-05-26 10:56:09.000000000","message":"Done","commit_id":"57703c01b0bec13eadc9c428da9f9a519dc75f69"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"74d78bded7e87f3900e698c348dc50abe880c151","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        on-error: set_status_failed_get_introspection_data"},{"line_number":121,"context_line":"        action: baremetal_introspection.get_data uuid\u003d\u003c% $.profile_node_uuid %\u003e"},{"line_number":122,"context_line":"        publish:"},{"line_number":123,"context_line":"          introspection_data: \u003c% task(get_introspection_data).result %\u003e"},{"line_number":124,"context_line":"        # TODO-Follow up patches workflows will actually be used here to derive parameters for each role"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"      set_status_failed_get_flavor_name:"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ff0f0b1f_32e34fa7","line":123,"updated":"2017-05-26 08:36:23.000000000","message":"task()","commit_id":"57703c01b0bec13eadc9c428da9f9a519dc75f69"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"fab75a7a01857d17a22e58e896222082d71cd9c3","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        on-error: set_status_failed_get_introspection_data"},{"line_number":121,"context_line":"        action: baremetal_introspection.get_data uuid\u003d\u003c% $.profile_node_uuid %\u003e"},{"line_number":122,"context_line":"        publish:"},{"line_number":123,"context_line":"          introspection_data: \u003c% task(get_introspection_data).result %\u003e"},{"line_number":124,"context_line":"        # TODO-Follow up patches workflows will actually be used here to derive parameters for each role"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"      set_status_failed_get_flavor_name:"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ff0f0b1f_99b47ef4","line":123,"in_reply_to":"ff0f0b1f_32e34fa7","updated":"2017-05-26 10:56:09.000000000","message":"Done","commit_id":"57703c01b0bec13eadc9c428da9f9a519dc75f69"},{"author":{"_account_id":7509,"name":"Jiri Tomasek","email":"jtomasek@redhat.com","username":"jtomasek"},"change_message_id":"5c26937fbd22e3004eb52bb1a7794d3129afa1a8","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"      get_roles:"},{"line_number":27,"context_line":"        publish:"},{"line_number":28,"context_line":"          role_name_list: \u003c% $.heat_resource_tree.resources.values().where($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::Heat::ResourceGroup\u0027).select($.name) %\u003e"},{"line_number":29,"context_line":"        on-success:"},{"line_number":30,"context_line":"          - get_valid_roles: \u003c% $.role_name_list %\u003e"},{"line_number":31,"context_line":"          - set_status_failed_get_roles: \u003c% not $.role_name_list %\u003e"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"df140735_047b8e27","line":28,"updated":"2017-06-06 11:28:03.000000000","message":"there is already an action available which lists role names (ListRolesAction)","commit_id":"3c460e62f48d4eff45995a1adf5f4a4db0835d6d"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"e0db891b1bf856112c7176a25a42f90a6bff038d","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"      get_roles:"},{"line_number":27,"context_line":"        publish:"},{"line_number":28,"context_line":"          role_name_list: \u003c% $.heat_resource_tree.resources.values().where($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::Heat::ResourceGroup\u0027).select($.name) %\u003e"},{"line_number":29,"context_line":"        on-success:"},{"line_number":30,"context_line":"          - get_valid_roles: \u003c% $.role_name_list %\u003e"},{"line_number":31,"context_line":"          - set_status_failed_get_roles: \u003c% not $.role_name_list %\u003e"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"df140735_cf1fefb4","line":28,"in_reply_to":"df140735_047b8e27","updated":"2017-06-06 12:08:19.000000000","message":"Done","commit_id":"3c460e62f48d4eff45995a1adf5f4a4db0835d6d"},{"author":{"_account_id":7509,"name":"Jiri Tomasek","email":"jtomasek@redhat.com","username":"jtomasek"},"change_message_id":"5c26937fbd22e3004eb52bb1a7794d3129afa1a8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"      # Obtain only the roles which has count \u003e 0, by checking \u003cRoleName\u003eCount parameter, like ComputeCount"},{"line_number":34,"context_line":"      get_valid_roles:"},{"line_number":35,"context_line":"        publish:"},{"line_number":36,"context_line":"          valid_role_name_list: \u003c% let(hr \u003d\u003e $.heat_resource_tree.parameters) -\u003e $.role_name_list.where(int($hr.get(concat($, \u0027Count\u0027), {}).get(\u0027default\u0027, 0)) \u003e 0) %\u003e"},{"line_number":37,"context_line":"        on-success:"},{"line_number":38,"context_line":"          - for_each_role: \u003c% $.valid_role_name_list %\u003e"},{"line_number":39,"context_line":"          - set_status_failed_get_valid_roles: \u003c% not $.valid_role_name_list %\u003e"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"df140735_44b3c6e9","line":36,"updated":"2017-06-06 11:28:03.000000000","message":"note that some roles name does not match the \u0027count\u0027 parameter name","commit_id":"3c460e62f48d4eff45995a1adf5f4a4db0835d6d"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"e0db891b1bf856112c7176a25a42f90a6bff038d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"      # Obtain only the roles which has count \u003e 0, by checking \u003cRoleName\u003eCount parameter, like ComputeCount"},{"line_number":34,"context_line":"      get_valid_roles:"},{"line_number":35,"context_line":"        publish:"},{"line_number":36,"context_line":"          valid_role_name_list: \u003c% let(hr \u003d\u003e $.heat_resource_tree.parameters) -\u003e $.role_name_list.where(int($hr.get(concat($, \u0027Count\u0027), {}).get(\u0027default\u0027, 0)) \u003e 0) %\u003e"},{"line_number":37,"context_line":"        on-success:"},{"line_number":38,"context_line":"          - for_each_role: \u003c% $.valid_role_name_list %\u003e"},{"line_number":39,"context_line":"          - set_status_failed_get_valid_roles: \u003c% not $.valid_role_name_list %\u003e"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"df140735_ef52b366","line":36,"in_reply_to":"df140735_44b3c6e9","updated":"2017-06-06 12:08:19.000000000","message":"\u0027count\u0027 parameter is available for all the default roles.","commit_id":"3c460e62f48d4eff45995a1adf5f4a4db0835d6d"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"73291d23d54d17aecce76e8ca27d432e930b7c1b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"      # Obtain only the roles which has count \u003e 0, by checking \u003cRoleName\u003eCount parameter, like ComputeCount"},{"line_number":34,"context_line":"      get_valid_roles:"},{"line_number":35,"context_line":"        publish:"},{"line_number":36,"context_line":"          valid_role_name_list: \u003c% let(hr \u003d\u003e $.heat_resource_tree.parameters) -\u003e $.role_name_list.where(int($hr.get(concat($, \u0027Count\u0027), {}).get(\u0027default\u0027, 0)) \u003e 0) %\u003e"},{"line_number":37,"context_line":"        on-success:"},{"line_number":38,"context_line":"          - for_each_role: \u003c% $.valid_role_name_list %\u003e"},{"line_number":39,"context_line":"          - set_status_failed_get_valid_roles: \u003c% not $.valid_role_name_list %\u003e"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"df140735_8edb2720","line":36,"in_reply_to":"df140735_44b3c6e9","updated":"2017-06-06 20:48:48.000000000","message":"Looking over overcloud.j2.yaml, it looks like the \u0027count\u0027 parameter is always named {{role.name}}Count. Are you aware of a specific exception to this rule?","commit_id":"3c460e62f48d4eff45995a1adf5f4a4db0835d6d"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"73291d23d54d17aecce76e8ca27d432e930b7c1b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        on-success: send_message"},{"line_number":73,"context_line":"        publish:"},{"line_number":74,"context_line":"          status: FAILED"},{"line_number":75,"context_line":"          message: \u003c% task(for_each_role).result.select(dict(\u0027role_name\u0027 \u003d\u003e $.role_name, \u0027status\u0027\u003d\u003e $.status, \u0027message\u0027 \u003d\u003e $.message)) %\u003e"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"      send_message:"},{"line_number":78,"context_line":"        action: zaqar.queue_post"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"df140735_2ed41bbd","line":75,"updated":"2017-06-06 20:48:48.000000000","message":"In my tests, this will execute for _all_ for_each_role tasks, even the ones that succeed. We only set $.status and $.message on failed tasks, and so this line will generate an exception when it encounters a for_each_role task that was successful.\n\nWe either need to set successful task\u0027s status and message fields, or change this to use constructs like $.get(\u0027status\u0027, SUCCESS) and $.get(\u0027message\u0027, \u0027\u0027) to supply default values.","commit_id":"3c460e62f48d4eff45995a1adf5f4a4db0835d6d"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"acda5c43c6200e1883583ca534f5c77f74242109","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        on-success: send_message"},{"line_number":73,"context_line":"        publish:"},{"line_number":74,"context_line":"          status: FAILED"},{"line_number":75,"context_line":"          message: \u003c% task(for_each_role).result.select(dict(\u0027role_name\u0027 \u003d\u003e $.role_name, \u0027status\u0027\u003d\u003e $.status, \u0027message\u0027 \u003d\u003e $.message)) %\u003e"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"      send_message:"},{"line_number":78,"context_line":"        action: zaqar.queue_post"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"df140735_dcdf8bd4","line":75,"in_reply_to":"df140735_2ed41bbd","updated":"2017-06-07 08:20:15.000000000","message":"Done","commit_id":"3c460e62f48d4eff45995a1adf5f4a4db0835d6d"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"171825580a6ed5175d2d81f997eee6ebf29f4e3c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        on-error: set_status_failed_get_flattened_parameters"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"      get_roles:"},{"line_number":27,"context_line":"        publish:"},{"line_number":28,"context_line":"          role_name_list: \u003c% $.heat_resource_tree.resources.values().where($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::Heat::ResourceGroup\u0027).select($.name) %\u003e"},{"line_number":29,"context_line":"        on-success:"},{"line_number":30,"context_line":"          - get_valid_roles: \u003c% $.role_name_list %\u003e"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"bf091321_760d3336","line":27,"updated":"2017-06-08 13:53:26.000000000","message":"Why is this no longer using the tripleo.role.list action?","commit_id":"07fece85e2f75f5eccce093d1b6b0fec1f0eed1e"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"171825580a6ed5175d2d81f997eee6ebf29f4e3c","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        on-success: send_message"},{"line_number":73,"context_line":"        publish:"},{"line_number":74,"context_line":"          status: FAILED"},{"line_number":75,"context_line":"          message: \u003c% task(for_each_role).result.select(dict(\u0027role_name\u0027 \u003d\u003e $.role_name, \u0027status\u0027\u003d\u003e $.status, \u0027message\u0027 \u003d\u003e $.message)) %\u003e"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"      send_message:"},{"line_number":78,"context_line":"        action: zaqar.queue_post"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"bf091321_96ffa766","line":75,"updated":"2017-06-08 13:53:26.000000000","message":"Why was last change to this reverted? I think we still need default values for \u0027status\u0027 and \u0027message\u0027 to cover the situation where one of with-items tasks succeeds.","commit_id":"07fece85e2f75f5eccce093d1b6b0fec1f0eed1e"}]}
