)]}'
{"workbooks/derive_params.yaml":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"3bdc8c4924a80ddae7c8b271e3df1fd58d29b706","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        on-success:"},{"line_number":106,"context_line":"          - fail: \u003c% $.get(\u0027status\u0027) \u003d \"FAILED\" %\u003e"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"  check_service_state_on_role:"},{"line_number":109,"context_line":"    description: |"},{"line_number":110,"context_line":"      Workflow which runs to check if the given serivce is anbled on a role or not"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7ffa3b31_d5e49be2","line":108,"updated":"2017-04-19 18:05:54.000000000","message":"I\u0027m working on an alternate approach (*) in which I collect the list of services enabled on a given role. This provides workflows with role_name and \"services\" (the published variable that contains the list of active services).\n\nThis will let subsequent tasks/workflows make easy decisions based on whether $.services.contains(SomeService)\n\n(*) The heat_resource_tree seems to provide all the information required to build a list of services, but this is where I\u0027m running into a problem running a perfectly valid yaql expression. My PoC is stuck until I can resolve the problem.","commit_id":"795c5c16780a8ce60808efa3163d54643c0d9010"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"7bde84a670c3e2b9dc4c4e055eeafd6cb92ba1c9","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        on-success:"},{"line_number":106,"context_line":"          - fail: \u003c% $.get(\u0027status\u0027) \u003d \"FAILED\" %\u003e"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"  check_service_state_on_role:"},{"line_number":109,"context_line":"    description: |"},{"line_number":110,"context_line":"      Workflow which runs to check if the given serivce is anbled on a role or not"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7ffa3b31_9fb0698c","line":108,"in_reply_to":"7ffa3b31_d5e49be2","updated":"2017-04-20 01:19:41.000000000","message":"Which information from the heat_resource_tree are you talking about Alan?","commit_id":"795c5c16780a8ce60808efa3163d54643c0d9010"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"383378ca546ac0803cfdd5ef105cb37c3425e918","unresolved":false,"context_lines":[{"line_number":194,"context_line":"      get_service_list_from_service_chain:"},{"line_number":195,"context_line":"        on-success: get_service_chain"},{"line_number":196,"context_line":"        publish:"},{"line_number":197,"context_line":"          role_name : \u003c% $.role_name %\u003e"},{"line_number":198,"context_line":"          role_service: \u003c% let(chain_name\u003d\u003econcat($.role_name, \"ServiceChain\"))-\u003e $.heat_resource_tree.resources.values().where($.name \u003d $chain_name).first() %\u003e"},{"line_number":199,"context_line":"          resource_chains: \u003c% $.heat_resource_tree.resources.values().where($.get(\"type\", \"\") \u003d \"OS::Heat::ResourceChain\") %\u003e"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5ff73747_242e5843","line":197,"updated":"2017-04-24 14:45:27.000000000","message":"This can be removed. I had it in my PoC for convenience.","commit_id":"c569066bee25efcba06cc6e152740407d142846a"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"ce0ebef6ee912ba6cdb47bf708ba1a954cc2c87c","unresolved":false,"context_lines":[{"line_number":206,"context_line":"      get_services:"},{"line_number":207,"context_line":"        on-success: check_service_params"},{"line_number":208,"context_line":"        publish:"},{"line_number":209,"context_line":"          services: \u003c% let(resources\u003d\u003e$.heat_resource_tree.resources)-\u003e $.service_chain.nestedParameters.select($resources.get($).get(\"type\")) %\u003e"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"      check_service_params:"},{"line_number":212,"context_line":"        on-success: send_message"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5ff73747_070a3ed1","line":209,"updated":"2017-04-24 15:10:09.000000000","message":"Adding a comment on what we have discussed on IRC, how to use this change to extract what we need.\n\nWe cannot identify DPDK service\u0027s presence with service\u0027s type as it will same type for regular ovs and ovs-dpdk. What we need to do is get the list of parameters and check if the given parameter (service_params) is present on the parameters of services.","commit_id":"c569066bee25efcba06cc6e152740407d142846a"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"cceff25d49c34986a9f09d2b6019c97702331671","unresolved":false,"context_lines":[{"line_number":216,"context_line":"          # to be specific to DPDK, which suggests we need to reorganize things so tests"},{"line_number":217,"context_line":"          # like this are associated with the appropriate topic (DPDK, HCI, etc.)."},{"line_number":218,"context_line":"          # This is only an example."},{"line_number":219,"context_line":"          service_state: \u003c% .services.any($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::TripleO::Services::ComputeNeutronOvsAgent\u0027 and $.get(\u0027parameters\u0027, []).contains(\u0027NeutronDpdkCoreList\u0027)) %\u003e"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"      set_status_failed_get_service_list_from_service_chain:"},{"line_number":222,"context_line":"        on-success: send_message"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5ff73747_7fc5cb5a","line":219,"updated":"2017-04-26 06:14:23.000000000","message":"This is really a good. Only change that we may need to do is instead of checking the service type, lets stick with only parameters. Any of the service having the parameters, means the role has the service enabled.\n\nAnd the list of parameters will be provided as input - \"service_params\"","commit_id":"1a37529f64aa32f24c56f5d011bc499ce590a338"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"bff8b03ef0f44be863792a120c493a79ee9862c3","unresolved":false,"context_lines":[{"line_number":216,"context_line":"          # to be specific to DPDK, which suggests we need to reorganize things so tests"},{"line_number":217,"context_line":"          # like this are associated with the appropriate topic (DPDK, HCI, etc.)."},{"line_number":218,"context_line":"          # This is only an example."},{"line_number":219,"context_line":"          service_state: \u003c% .services.any($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::TripleO::Services::ComputeNeutronOvsAgent\u0027 and $.get(\u0027parameters\u0027, []).contains(\u0027NeutronDpdkCoreList\u0027)) %\u003e"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"      set_status_failed_get_service_list_from_service_chain:"},{"line_number":222,"context_line":"        on-success: send_message"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5ff73747_b1e25f00","line":219,"in_reply_to":"5ff73747_7fc5cb5a","updated":"2017-04-26 12:37:02.000000000","message":"I think there\u0027s room for both approaches, which is why I chose to export the full services dictionary on L209. Some derivation workflows might be interested in just parameters (perhaps DPDK), and others might be interested in knowing the service types (HCI). Publishing the \"services\" on L209 satisfies everyone\u0027s needs.\n\nI\u0027d actually like to revisit the notion of this check_service_state_on_role workflow. I believe it\u0027s intended to help determine which derivation algorithms should run (DPDK, HCI, etc.) How/where will this check_service_state_on_role workflow get invoked?","commit_id":"1a37529f64aa32f24c56f5d011bc499ce590a338"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"78cd8d85e40b6e33e3da8c85195d56528b282b1e","unresolved":false,"context_lines":[{"line_number":216,"context_line":"          # to be specific to DPDK, which suggests we need to reorganize things so tests"},{"line_number":217,"context_line":"          # like this are associated with the appropriate topic (DPDK, HCI, etc.)."},{"line_number":218,"context_line":"          # This is only an example."},{"line_number":219,"context_line":"          service_state: \u003c% .services.any($.get(\u0027type\u0027, \u0027\u0027) \u003d \u0027OS::TripleO::Services::ComputeNeutronOvsAgent\u0027 and $.get(\u0027parameters\u0027, []).contains(\u0027NeutronDpdkCoreList\u0027)) %\u003e"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"      set_status_failed_get_service_list_from_service_chain:"},{"line_number":222,"context_line":"        on-success: send_message"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5ff73747_311e4f70","line":219,"in_reply_to":"5ff73747_b1e25f00","updated":"2017-04-26 12:51:00.000000000","message":"There are 2 ways we ca do it:\n1) Before invoking the dpdk workflow we can invoke this \"check\" workflow with NeutronDpdkCoreList as parameter to check if it is presence\n2) Another way is to design this \"check\" workflow to return the list of features enabled by adding as like you have added now, \n\nI am fine with both approach.","commit_id":"1a37529f64aa32f24c56f5d011bc499ce590a338"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"c60f6e706dba2cb002c83f8b35d2f216ef62b5eb","unresolved":false,"context_lines":[{"line_number":109,"context_line":"      - queue_name: tripleo"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    tasks:"},{"line_number":112,"context_line":"      get_service_list_from_service_chain:"},{"line_number":113,"context_line":"        on-success: get_service_chain"},{"line_number":114,"context_line":"        publish:"},{"line_number":115,"context_line":"          role_name : \u003c% $.role_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f044301_d5a7febc","line":112,"updated":"2017-05-10 06:48:10.000000000","message":"I think, need to update task name based on task functionality. Can we change it as get_role_service if we move resource_chains query in service_chain.","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"850abf374b71d446bfc4df4d2697aeda78ca106b","unresolved":false,"context_lines":[{"line_number":109,"context_line":"      - queue_name: tripleo"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    tasks:"},{"line_number":112,"context_line":"      get_service_list_from_service_chain:"},{"line_number":113,"context_line":"        on-success: get_service_chain"},{"line_number":114,"context_line":"        publish:"},{"line_number":115,"context_line":"          role_name : \u003c% $.role_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f044301_2457f65a","line":112,"in_reply_to":"3f044301_d5a7febc","updated":"2017-05-11 14:16:34.000000000","message":"Will definitely reconsider the name, but I\u0027m not sure the queries can be moved around so freely. While it\u0027s handy when a task publishes the results of just one query (it\u0027s name can match the query), there are instances where you can publish multiple queries and so the task name needs to cover both.","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"c60f6e706dba2cb002c83f8b35d2f216ef62b5eb","unresolved":false,"context_lines":[{"line_number":112,"context_line":"      get_service_list_from_service_chain:"},{"line_number":113,"context_line":"        on-success: get_service_chain"},{"line_number":114,"context_line":"        publish:"},{"line_number":115,"context_line":"          role_name : \u003c% $.role_name %\u003e"},{"line_number":116,"context_line":"          role_service: \u003c% let(chain_name\u003d\u003econcat($.role_name, \"ServiceChain\"))-\u003e $.heat_resource_tree.resources.values().where($.name \u003d $chain_name).first() %\u003e"},{"line_number":117,"context_line":"          resource_chains: \u003c% $.heat_resource_tree.resources.values().where($.get(\"type\", \"\") \u003d \"OS::Heat::ResourceChain\") %\u003e"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f044301_d5901e4d","line":115,"updated":"2017-05-10 06:48:10.000000000","message":"This is not required, since role_name is available as input.","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"850abf374b71d446bfc4df4d2697aeda78ca106b","unresolved":false,"context_lines":[{"line_number":112,"context_line":"      get_service_list_from_service_chain:"},{"line_number":113,"context_line":"        on-success: get_service_chain"},{"line_number":114,"context_line":"        publish:"},{"line_number":115,"context_line":"          role_name : \u003c% $.role_name %\u003e"},{"line_number":116,"context_line":"          role_service: \u003c% let(chain_name\u003d\u003econcat($.role_name, \"ServiceChain\"))-\u003e $.heat_resource_tree.resources.values().where($.name \u003d $chain_name).first() %\u003e"},{"line_number":117,"context_line":"          resource_chains: \u003c% $.heat_resource_tree.resources.values().where($.get(\"type\", \"\") \u003d \"OS::Heat::ResourceChain\") %\u003e"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f044301_a4c8a621","line":115,"in_reply_to":"3f044301_d5901e4d","updated":"2017-05-11 14:16:34.000000000","message":"True, I\u0027ll fix this. I think this is left over from early debug effort.","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"c60f6e706dba2cb002c83f8b35d2f216ef62b5eb","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        publish:"},{"line_number":115,"context_line":"          role_name : \u003c% $.role_name %\u003e"},{"line_number":116,"context_line":"          role_service: \u003c% let(chain_name\u003d\u003econcat($.role_name, \"ServiceChain\"))-\u003e $.heat_resource_tree.resources.values().where($.name \u003d $chain_name).first() %\u003e"},{"line_number":117,"context_line":"          resource_chains: \u003c% $.heat_resource_tree.resources.values().where($.get(\"type\", \"\") \u003d \"OS::Heat::ResourceChain\") %\u003e"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"      get_service_chain:"},{"line_number":120,"context_line":"        on-success: get_services"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f044301_f52c3a03","line":117,"updated":"2017-05-10 06:48:10.000000000","message":"resource_chains is used in only service_chain query, so can we move resource_chains query in let part of service_chain?","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"ddc3bbf31e1545640c444b302ff06ee732619785","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        publish:"},{"line_number":115,"context_line":"          role_name : \u003c% $.role_name %\u003e"},{"line_number":116,"context_line":"          role_service: \u003c% let(chain_name\u003d\u003econcat($.role_name, \"ServiceChain\"))-\u003e $.heat_resource_tree.resources.values().where($.name \u003d $chain_name).first() %\u003e"},{"line_number":117,"context_line":"          resource_chains: \u003c% $.heat_resource_tree.resources.values().where($.get(\"type\", \"\") \u003d \"OS::Heat::ResourceChain\") %\u003e"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"      get_service_chain:"},{"line_number":120,"context_line":"        on-success: get_services"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ff0f0b1f_f91817d4","line":117,"in_reply_to":"3f044301_446fa2fb","updated":"2017-05-18 08:28:11.000000000","message":"I prefer to keep the queries smaller so that it is easy to read and maintain in future. Having multiple publish will not harm as it is specific this internal workflow.","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"850abf374b71d446bfc4df4d2697aeda78ca106b","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        publish:"},{"line_number":115,"context_line":"          role_name : \u003c% $.role_name %\u003e"},{"line_number":116,"context_line":"          role_service: \u003c% let(chain_name\u003d\u003econcat($.role_name, \"ServiceChain\"))-\u003e $.heat_resource_tree.resources.values().where($.name \u003d $chain_name).first() %\u003e"},{"line_number":117,"context_line":"          resource_chains: \u003c% $.heat_resource_tree.resources.values().where($.get(\"type\", \"\") \u003d \"OS::Heat::ResourceChain\") %\u003e"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"      get_service_chain:"},{"line_number":120,"context_line":"        on-success: get_services"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f044301_446fa2fb","line":117,"in_reply_to":"3f044301_f52c3a03","updated":"2017-05-11 14:16:34.000000000","message":"The trade off is it will make the service_chain query really long! Unless there\u0027s a real downside to having these extra query tasks, I\u0027d prefer to split things up when it enhances the overall readability. This yaql stuff is hard enough on the eyes without forcing the reader to visually parse extra long lines.\n\nI\u0027m just explaining why I chose this initial approach. I won\u0027t object to merging this task into the \"let\" clause if that\u0027s the team consensus.","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"c60f6e706dba2cb002c83f8b35d2f216ef62b5eb","unresolved":false,"context_lines":[{"line_number":124,"context_line":"      get_services:"},{"line_number":125,"context_line":"        on-success: get_features"},{"line_number":126,"context_line":"        publish:"},{"line_number":127,"context_line":"          services: \u003c% let(resources\u003d\u003e$.heat_resource_tree.resources)-\u003e $.service_chain.nestedParameters.select($resources.get($)) %\u003e"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"      get_features:"},{"line_number":130,"context_line":"        workflow: tripleo.derive_params.v1.get_role_features"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f044301_55264e17","line":127,"updated":"2017-05-10 06:48:10.000000000","message":"$resources.get($) - default value and filtering default value in the service_chain list part is missing if key is not available in $resources.","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"850abf374b71d446bfc4df4d2697aeda78ca106b","unresolved":false,"context_lines":[{"line_number":124,"context_line":"      get_services:"},{"line_number":125,"context_line":"        on-success: get_features"},{"line_number":126,"context_line":"        publish:"},{"line_number":127,"context_line":"          services: \u003c% let(resources\u003d\u003e$.heat_resource_tree.resources)-\u003e $.service_chain.nestedParameters.select($resources.get($)) %\u003e"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"      get_features:"},{"line_number":130,"context_line":"        workflow: tripleo.derive_params.v1.get_role_features"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f044301_240ff637","line":127,"in_reply_to":"3f044301_55264e17","updated":"2017-05-11 14:16:34.000000000","message":"I think you\u0027re saying it will be safer to enhance the get() to include a default value (which would be []). That seems reasonable. I just want to point out such an occurrence would indicate the deployment plan\u0027s resource tree is horribly broken.","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"ddc3bbf31e1545640c444b302ff06ee732619785","unresolved":false,"context_lines":[{"line_number":127,"context_line":"          services: \u003c% let(resources\u003d\u003e$.heat_resource_tree.resources)-\u003e $.service_chain.nestedParameters.select($resources.get($)) %\u003e"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"      get_features:"},{"line_number":130,"context_line":"        workflow: tripleo.derive_params.v1.get_role_features"},{"line_number":131,"context_line":"        input:"},{"line_number":132,"context_line":"          role_services: \u003c% $.services %\u003e"},{"line_number":133,"context_line":"          queue_name: \u003c% $.queue_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ff0f0b1f_1fd28b5d","line":130,"range":{"start_line":130,"start_character":18,"end_line":130,"end_character":60},"updated":"2017-05-18 08:28:11.000000000","message":"Instead of getting the role_services (which includes parameters also), why not pass the heat_resource_tree itself and then parse it in the same workflow, with which, it will be easy for use if we need to expose it outside (UI) in future. \n\nI remember we discussed this face to face, can you remind me again? Do you think role_services will be used by other workflows like HCI (I am sure DPDK don\u0027t use it).","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"3acffaf39997c7c2d154a3b33073bb3053e80d63","unresolved":false,"context_lines":[{"line_number":127,"context_line":"          services: \u003c% let(resources\u003d\u003e$.heat_resource_tree.resources)-\u003e $.service_chain.nestedParameters.select($resources.get($)) %\u003e"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"      get_features:"},{"line_number":130,"context_line":"        workflow: tripleo.derive_params.v1.get_role_features"},{"line_number":131,"context_line":"        input:"},{"line_number":132,"context_line":"          role_services: \u003c% $.services %\u003e"},{"line_number":133,"context_line":"          queue_name: \u003c% $.queue_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f044301_b8fa4272","line":130,"updated":"2017-05-08 20:37:07.000000000","message":"This is a new workflow that returns the list of features (DPDK, HCI, etc.) based on the role_services. It takes the place of what we used to call \"check_service_params.\"","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"612951b330d1cc7777f838f1990619a158767143","unresolved":false,"context_lines":[{"line_number":127,"context_line":"          services: \u003c% let(resources\u003d\u003e$.heat_resource_tree.resources)-\u003e $.service_chain.nestedParameters.select($resources.get($)) %\u003e"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"      get_features:"},{"line_number":130,"context_line":"        workflow: tripleo.derive_params.v1.get_role_features"},{"line_number":131,"context_line":"        input:"},{"line_number":132,"context_line":"          role_services: \u003c% $.services %\u003e"},{"line_number":133,"context_line":"          queue_name: \u003c% $.queue_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ff0f0b1f_316562e2","line":130,"range":{"start_line":130,"start_character":18,"end_line":130,"end_character":60},"in_reply_to":"ff0f0b1f_0c601ca5","updated":"2017-05-19 04:57:39.000000000","message":"Yes, I would like to see get_features work with the input as heat_resource_tree with role_name.","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"ab5c2955cfb889f9b81f2bfe554d097e6b91376f","unresolved":false,"context_lines":[{"line_number":127,"context_line":"          services: \u003c% let(resources\u003d\u003e$.heat_resource_tree.resources)-\u003e $.service_chain.nestedParameters.select($resources.get($)) %\u003e"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"      get_features:"},{"line_number":130,"context_line":"        workflow: tripleo.derive_params.v1.get_role_features"},{"line_number":131,"context_line":"        input:"},{"line_number":132,"context_line":"          role_services: \u003c% $.services %\u003e"},{"line_number":133,"context_line":"          queue_name: \u003c% $.queue_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ff0f0b1f_0c601ca5","line":130,"range":{"start_line":130,"start_character":18,"end_line":130,"end_character":60},"in_reply_to":"ff0f0b1f_1fd28b5d","updated":"2017-05-18 13:54:10.000000000","message":"I think you\u0027re suggesting the actions used to determine the role_services be absorbed into the get_features workflow. That\u0027s reasonable if we\u0027re relatively certain that get_features is the only place where role_services is needed, and I think this might be true. If that\u0027s the case, then perhaps the proper input to get_features is the heat_resource_tree.\n\nLet me know if I understand you correctly, and you agree with the change I just described. I will make the change when it\u0027s time to rebase to the latest \"part1\"","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"50abbe576f4c784d6940340599f882bd0520bdd6","unresolved":false,"context_lines":[{"line_number":127,"context_line":"          services: \u003c% let(resources\u003d\u003e$.heat_resource_tree.resources)-\u003e $.service_chain.nestedParameters.select($resources.get($)) %\u003e"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"      get_features:"},{"line_number":130,"context_line":"        workflow: tripleo.derive_params.v1.get_role_features"},{"line_number":131,"context_line":"        input:"},{"line_number":132,"context_line":"          role_services: \u003c% $.services %\u003e"},{"line_number":133,"context_line":"          queue_name: \u003c% $.queue_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ff0f0b1f_9ae837b3","line":130,"range":{"start_line":130,"start_character":18,"end_line":130,"end_character":60},"in_reply_to":"ff0f0b1f_316562e2","updated":"2017-05-24 13:49:30.000000000","message":"Done","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"3acffaf39997c7c2d154a3b33073bb3053e80d63","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        on-completion: build_feature_dict"},{"line_number":223,"context_line":"        publish:"},{"line_number":224,"context_line":"          # The role supports the DPDK feature if the NeutronDpdkCoreList parameter is present."},{"line_number":225,"context_line":"          dpdk: \u003c% $.role_services.any($.get(\u0027parameters\u0027, []).contains(\u0027NeutronDpdkCoreList\u0027)) %\u003e"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"          # The role supports the HCI feature if it includes both NovaCompute and CephOSD services."},{"line_number":228,"context_line":"          hci: \u003c% $.role_services.any($.get(\u0027type\u0027, \u0027\u0027).endsWith(\u0027::NovaCompute\u0027)) and $.role_services.any($.get(\u0027type\u0027, \u0027\u0027).endsWith(\u0027::CephOSD\u0027)) %\u003e"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"      build_feature_dict:"},{"line_number":231,"context_line":"        on-completion: filter_features"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f044301_382cf200","line":228,"range":{"start_line":225,"start_character":1,"end_line":228,"end_character":150},"updated":"2017-05-08 20:37:07.000000000","message":"These are simple booleans, one per feature.","commit_id":"e5449ab506d8ef7daf48bcff2586aa5736279864"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"688f2a42823de4c4450ea650a4c3c7ee32f218f3","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    tasks:"},{"line_number":98,"context_line":"      get_role_features:"},{"line_number":99,"context_line":"        workflow: tripleo.baremetal.v1.get_role_features"},{"line_number":100,"context_line":"        input:"},{"line_number":101,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":102,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_dad565b9","line":99,"range":{"start_line":99,"start_character":26,"end_line":99,"end_character":35},"updated":"2017-05-25 15:24:13.000000000","message":"derive_params?","commit_id":"bc33829cee825b607518bc9bc203e65b437c5ae5"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"4fb7650c734a1323351c7f62adda05847f1d9fec","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    tasks:"},{"line_number":98,"context_line":"      get_role_features:"},{"line_number":99,"context_line":"        workflow: tripleo.baremetal.v1.get_role_features"},{"line_number":100,"context_line":"        input:"},{"line_number":101,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":102,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_774f8792","line":99,"range":{"start_line":99,"start_character":26,"end_line":99,"end_character":35},"in_reply_to":"ff0f0b1f_dad565b9","updated":"2017-05-25 20:57:09.000000000","message":"Whoops, good catch. Done","commit_id":"bc33829cee825b607518bc9bc203e65b437c5ae5"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"7905a446325d63d1097b160c554e59eb09beff49","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        input:"},{"line_number":101,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":102,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":103,"context_line":"          queue_name: \u0027\u0027"},{"line_number":104,"context_line":"        publish:"},{"line_number":105,"context_line":"          role_features: \u003c% task(get_role_features).result.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":106,"context_line":"        on-success:"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_da8fcf27","line":103,"updated":"2017-05-24 13:48:37.000000000","message":"Here I set the queue_name to an empty string because we have an internal workflow (with no message queue) invoking an external workflow. See how this is handled below.","commit_id":"bc33829cee825b607518bc9bc203e65b437c5ae5"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"688f2a42823de4c4450ea650a4c3c7ee32f218f3","unresolved":false,"context_lines":[{"line_number":102,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":103,"context_line":"          queue_name: \u0027\u0027"},{"line_number":104,"context_line":"        publish:"},{"line_number":105,"context_line":"          role_features: \u003c% task(get_role_features).result.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":106,"context_line":"        on-success:"},{"line_number":107,"context_line":"          - get_flavor_name: \u003c% $.role_features %\u003e"},{"line_number":108,"context_line":"          - set_status_no_role_features: \u003c% not $.role_features %\u003e"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_dafe8537","line":105,"range":{"start_line":105,"start_character":33,"end_line":105,"end_character":50},"updated":"2017-05-25 15:24:13.000000000","message":"nit: I have seen it in some reviews, where we can use task().result to get the current task\u0027s result. use if it helps in making stmts shorter.","commit_id":"bc33829cee825b607518bc9bc203e65b437c5ae5"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"4fb7650c734a1323351c7f62adda05847f1d9fec","unresolved":false,"context_lines":[{"line_number":102,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":103,"context_line":"          queue_name: \u0027\u0027"},{"line_number":104,"context_line":"        publish:"},{"line_number":105,"context_line":"          role_features: \u003c% task(get_role_features).result.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":106,"context_line":"        on-success:"},{"line_number":107,"context_line":"          - get_flavor_name: \u003c% $.role_features %\u003e"},{"line_number":108,"context_line":"          - set_status_no_role_features: \u003c% not $.role_features %\u003e"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_f71f176e","line":105,"range":{"start_line":105,"start_character":33,"end_line":105,"end_character":50},"in_reply_to":"ff0f0b1f_dafe8537","updated":"2017-05-25 20:57:09.000000000","message":"If task() works that way then I agree we should take advantage of the capability. I\u0027m holding off making the change for now because it might be good to make similar changes in part 1 (which I would pick up on a rebase).","commit_id":"bc33829cee825b607518bc9bc203e65b437c5ae5"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"7905a446325d63d1097b160c554e59eb09beff49","unresolved":false,"context_lines":[{"line_number":175,"context_line":"          status: FAILED"},{"line_number":176,"context_line":"          message: \u003c% task(get_introspection_data).result %\u003e"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"  get_role_features:"},{"line_number":179,"context_line":"    description: |"},{"line_number":180,"context_line":"      Workflow that determines the list of derived parameter features (DPDK,"},{"line_number":181,"context_line":"      HCI, etc.) for a role based on the services assigned to the role."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_bab41bf3","line":178,"updated":"2017-05-24 13:48:37.000000000","message":"This is a public workflow for internal and external use (UI will likely use it).","commit_id":"bc33829cee825b607518bc9bc203e65b437c5ae5"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"7905a446325d63d1097b160c554e59eb09beff49","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"      finish:"},{"line_number":244,"context_line":"        on-completion:"},{"line_number":245,"context_line":"          - send_message: \u003c% $.queue_name %\u003e"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"      send_message:"},{"line_number":248,"context_line":"        action: zaqar.queue_post"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_1a71c744","line":245,"updated":"2017-05-24 13:48:37.000000000","message":"Only send a message if the queue_name is defined. This allows the internal _derive_parameters_per_role workflow can signal that it isn\u0027t interested in a response message.","commit_id":"bc33829cee825b607518bc9bc203e65b437c5ae5"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"d8ec66b9ca27880c6df8831df15446c589fb379d","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    tasks:"},{"line_number":89,"context_line":"      get_role_features:"},{"line_number":90,"context_line":"        workflow: tripleo.derive_params.v1.get_role_features"},{"line_number":91,"context_line":"        input:"},{"line_number":92,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":93,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff0f0b1f_85177352","line":90,"updated":"2017-05-26 10:26:10.000000000","message":"Because you are in the same workbook, you can just reference the workflow with \"get_role_features\"","commit_id":"77495b61fd02fd4b0d07df1dbc17b3eb5b758cca"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"d114337ba3a60fa998484a1b315eb1dd797891e2","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    tasks:"},{"line_number":89,"context_line":"      get_role_features:"},{"line_number":90,"context_line":"        workflow: tripleo.derive_params.v1.get_role_features"},{"line_number":91,"context_line":"        input:"},{"line_number":92,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":93,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff0f0b1f_540c6b41","line":90,"in_reply_to":"ff0f0b1f_85177352","updated":"2017-05-26 11:57:19.000000000","message":"Done","commit_id":"77495b61fd02fd4b0d07df1dbc17b3eb5b758cca"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"d8ec66b9ca27880c6df8831df15446c589fb379d","unresolved":false,"context_lines":[{"line_number":93,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":94,"context_line":"          queue_name: \u0027\u0027"},{"line_number":95,"context_line":"        publish:"},{"line_number":96,"context_line":"          role_features: \u003c% task(get_role_features).result.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":97,"context_line":"        on-success:"},{"line_number":98,"context_line":"          - get_flavor_name: \u003c% $.role_features %\u003e"},{"line_number":99,"context_line":"          - set_status_no_role_features: \u003c% not $.role_features %\u003e"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff0f0b1f_05efe3b0","line":96,"updated":"2017-05-26 10:26:10.000000000","message":"task()","commit_id":"77495b61fd02fd4b0d07df1dbc17b3eb5b758cca"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"d114337ba3a60fa998484a1b315eb1dd797891e2","unresolved":false,"context_lines":[{"line_number":93,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":94,"context_line":"          queue_name: \u0027\u0027"},{"line_number":95,"context_line":"        publish:"},{"line_number":96,"context_line":"          role_features: \u003c% task(get_role_features).result.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":97,"context_line":"        on-success:"},{"line_number":98,"context_line":"          - get_flavor_name: \u003c% $.role_features %\u003e"},{"line_number":99,"context_line":"          - set_status_no_role_features: \u003c% not $.role_features %\u003e"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff0f0b1f_3409f730","line":96,"in_reply_to":"ff0f0b1f_05efe3b0","updated":"2017-05-26 11:57:19.000000000","message":"Done","commit_id":"77495b61fd02fd4b0d07df1dbc17b3eb5b758cca"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"d8ec66b9ca27880c6df8831df15446c589fb379d","unresolved":false,"context_lines":[{"line_number":195,"context_line":"      - queue_name: tripleo"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    output:"},{"line_number":198,"context_line":"      role_name: \u003c% $.role_name %\u003e"},{"line_number":199,"context_line":"      role_features: \u003c% $.get(role_features, []) %\u003e"},{"line_number":200,"context_line":"      status: \u003c% $.get(\u0027status\u0027, \u0027SUCCESS\u0027) %\u003e"},{"line_number":201,"context_line":"      message: \u003c% $.get(\u0027message\u0027, \u0027\u0027) %\u003e"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff0f0b1f_be92884a","line":198,"updated":"2017-05-26 10:26:10.000000000","message":"Is there a reason to output the input?","commit_id":"77495b61fd02fd4b0d07df1dbc17b3eb5b758cca"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"d114337ba3a60fa998484a1b315eb1dd797891e2","unresolved":false,"context_lines":[{"line_number":195,"context_line":"      - queue_name: tripleo"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    output:"},{"line_number":198,"context_line":"      role_name: \u003c% $.role_name %\u003e"},{"line_number":199,"context_line":"      role_features: \u003c% $.get(role_features, []) %\u003e"},{"line_number":200,"context_line":"      status: \u003c% $.get(\u0027status\u0027, \u0027SUCCESS\u0027) %\u003e"},{"line_number":201,"context_line":"      message: \u003c% $.get(\u0027message\u0027, \u0027\u0027) %\u003e"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff0f0b1f_763774e5","line":198,"in_reply_to":"ff0f0b1f_be92884a","updated":"2017-05-26 11:57:19.000000000","message":"In earlier iterations there was talk of making sure the workflow output was self describing in case of an error (anything could view the output and know what role triggered the error). That view is obsolete now because we embed the role name in error messages where appropriate.\n\nSo, I removed it from this workflow\u0027s output.","commit_id":"77495b61fd02fd4b0d07df1dbc17b3eb5b758cca"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"d8ec66b9ca27880c6df8831df15446c589fb379d","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    output:"},{"line_number":198,"context_line":"      role_name: \u003c% $.role_name %\u003e"},{"line_number":199,"context_line":"      role_features: \u003c% $.get(role_features, []) %\u003e"},{"line_number":200,"context_line":"      status: \u003c% $.get(\u0027status\u0027, \u0027SUCCESS\u0027) %\u003e"},{"line_number":201,"context_line":"      message: \u003c% $.get(\u0027message\u0027, \u0027\u0027) %\u003e"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff0f0b1f_3e9e7854","line":199,"updated":"2017-05-26 10:26:10.000000000","message":"This should probably be quoted to keep it consistent. \u0027role_features\u0027","commit_id":"77495b61fd02fd4b0d07df1dbc17b3eb5b758cca"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"d114337ba3a60fa998484a1b315eb1dd797891e2","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    output:"},{"line_number":198,"context_line":"      role_name: \u003c% $.role_name %\u003e"},{"line_number":199,"context_line":"      role_features: \u003c% $.get(role_features, []) %\u003e"},{"line_number":200,"context_line":"      status: \u003c% $.get(\u0027status\u0027, \u0027SUCCESS\u0027) %\u003e"},{"line_number":201,"context_line":"      message: \u003c% $.get(\u0027message\u0027, \u0027\u0027) %\u003e"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff0f0b1f_563470de","line":199,"in_reply_to":"ff0f0b1f_3e9e7854","updated":"2017-05-26 11:57:19.000000000","message":"Done","commit_id":"77495b61fd02fd4b0d07df1dbc17b3eb5b758cca"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"d8ec66b9ca27880c6df8831df15446c589fb379d","unresolved":false,"context_lines":[{"line_number":252,"context_line":"      finish:"},{"line_number":253,"context_line":"        on-success:"},{"line_number":254,"context_line":"          - send_message: \u003c% $.queue_name %\u003e"},{"line_number":255,"context_line":"          - fail: \u003c% not $.queue_name and $.get(\u0027status\u0027) \u003d \u0027FAILED\u0027 %\u003e"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"      send_message:"},{"line_number":258,"context_line":"        action: zaqar.queue_post"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff0f0b1f_be1728a4","line":255,"updated":"2017-05-26 10:26:10.000000000","message":"Do we expect a queue_name to not be provided sometimes? We don\u0027t normally do this check.","commit_id":"77495b61fd02fd4b0d07df1dbc17b3eb5b758cca"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"d114337ba3a60fa998484a1b315eb1dd797891e2","unresolved":false,"context_lines":[{"line_number":252,"context_line":"      finish:"},{"line_number":253,"context_line":"        on-success:"},{"line_number":254,"context_line":"          - send_message: \u003c% $.queue_name %\u003e"},{"line_number":255,"context_line":"          - fail: \u003c% not $.queue_name and $.get(\u0027status\u0027) \u003d \u0027FAILED\u0027 %\u003e"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"      send_message:"},{"line_number":258,"context_line":"        action: zaqar.queue_post"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff0f0b1f_d66e40c8","line":255,"in_reply_to":"ff0f0b1f_be1728a4","updated":"2017-05-26 11:57:19.000000000","message":"Yes, that\u0027s exactly the case. We expect the UI to invoke it as an external workflow, but it\u0027s also invoked by _derive_parameters_per_role, which is an internal workflow that doesn\u0027t use a message queue.","commit_id":"77495b61fd02fd4b0d07df1dbc17b3eb5b758cca"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"58106c1f17edc0e4010c04fb0a9eb0b8039bbd4c","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    tasks:"},{"line_number":103,"context_line":"      get_role_features:"},{"line_number":104,"context_line":"        workflow: tripleo.derive_params.v1.get_role_features"},{"line_number":105,"context_line":"        input:"},{"line_number":106,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":107,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_f9ca5718","line":104,"updated":"2017-05-26 13:17:19.000000000","message":"I think, you have missed to remove tripleo.derive_params.v1 in workflow, only \nget_role_features is enough since workflow available in the same workbook.","commit_id":"2f27edbca2451c7290f75836721684f66b5ee130"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"daaa18efa186d1f17b2344f709e9c91eaf79c147","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    tasks:"},{"line_number":103,"context_line":"      get_role_features:"},{"line_number":104,"context_line":"        workflow: tripleo.derive_params.v1.get_role_features"},{"line_number":105,"context_line":"        input:"},{"line_number":106,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":107,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_1cdcd916","line":104,"in_reply_to":"ff0f0b1f_f9ca5718","updated":"2017-05-26 13:31:53.000000000","message":"Done","commit_id":"2f27edbca2451c7290f75836721684f66b5ee130"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"58106c1f17edc0e4010c04fb0a9eb0b8039bbd4c","unresolved":false,"context_lines":[{"line_number":150,"context_line":"          introspection_data: \u003c% task().result %\u003e"},{"line_number":151,"context_line":"        # TODO-Follow up patches workflows will actually be used here to derive parameters for each role"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"      set_status_no_role_features:"},{"line_number":154,"context_line":"        publish:"},{"line_number":155,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":156,"context_line":"          status: SUCCESS"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_f97c97ec","line":153,"updated":"2017-05-26 13:17:19.000000000","message":"I think, this task is not required now, since this workflow output part is not considered now. only failures is handled with role_name, status and message variables.","commit_id":"2f27edbca2451c7290f75836721684f66b5ee130"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"daaa18efa186d1f17b2344f709e9c91eaf79c147","unresolved":false,"context_lines":[{"line_number":150,"context_line":"          introspection_data: \u003c% task().result %\u003e"},{"line_number":151,"context_line":"        # TODO-Follow up patches workflows will actually be used here to derive parameters for each role"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"      set_status_no_role_features:"},{"line_number":154,"context_line":"        publish:"},{"line_number":155,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":156,"context_line":"          status: SUCCESS"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_3cef9db1","line":153,"in_reply_to":"ff0f0b1f_f97c97ec","updated":"2017-05-26 13:31:53.000000000","message":"I originally added it to aid debug, but I concede it\u0027s not necessary and will remove it.","commit_id":"2f27edbca2451c7290f75836721684f66b5ee130"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"58106c1f17edc0e4010c04fb0a9eb0b8039bbd4c","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    output:"},{"line_number":212,"context_line":"      role_features: \u003c% $.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":213,"context_line":"      status: \u003c% $.get(\u0027status\u0027, \u0027SUCCESS\u0027) %\u003e"},{"line_number":214,"context_line":"      message: \u003c% $.get(\u0027message\u0027, \u0027\u0027) %\u003e"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    tasks:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_d9b6738b","line":213,"updated":"2017-05-26 13:17:19.000000000","message":"This workflow fails and throw published variables to called task if any task (status) is FAILED. so status and message are not required in output.","commit_id":"2f27edbca2451c7290f75836721684f66b5ee130"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"daaa18efa186d1f17b2344f709e9c91eaf79c147","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    output:"},{"line_number":212,"context_line":"      role_features: \u003c% $.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":213,"context_line":"      status: \u003c% $.get(\u0027status\u0027, \u0027SUCCESS\u0027) %\u003e"},{"line_number":214,"context_line":"      message: \u003c% $.get(\u0027message\u0027, \u0027\u0027) %\u003e"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    tasks:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_3c72fd12","line":213,"in_reply_to":"ff0f0b1f_d9b6738b","updated":"2017-05-26 13:31:53.000000000","message":"I did some earlier experiments that helped me understand that workflow \"output\" clauses can be used to essentially publish just those outputs, and if no \"output\" clause is present that *all* published variables are made available. I will clean this up in the next patch.","commit_id":"2f27edbca2451c7290f75836721684f66b5ee130"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"58106c1f17edc0e4010c04fb0a9eb0b8039bbd4c","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"      get_role_service:"},{"line_number":225,"context_line":"        publish:"},{"line_number":226,"context_line":"          role_service: \u003c% let(chain_name\u003d\u003econcat($.role_name, \u0027ServiceChain\u0027))-\u003e $.heat_resource_tree.resources.values().where($.name \u003d $chain_name).first() %\u003e"},{"line_number":227,"context_line":"        on-success:"},{"line_number":228,"context_line":"          - get_service_chain: \u003c% $.role_service %\u003e"},{"line_number":229,"context_line":"          - set_status_failed_get_role_service: \u003c% not $.role_service %\u003e"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_b93e1fd8","line":226,"updated":"2017-05-26 13:17:19.000000000","message":"Space in left and right is missing for operators \u003d\u003e and\n-\u003e . please update in all the places in unique.","commit_id":"2f27edbca2451c7290f75836721684f66b5ee130"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"daaa18efa186d1f17b2344f709e9c91eaf79c147","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"      get_role_service:"},{"line_number":225,"context_line":"        publish:"},{"line_number":226,"context_line":"          role_service: \u003c% let(chain_name\u003d\u003econcat($.role_name, \u0027ServiceChain\u0027))-\u003e $.heat_resource_tree.resources.values().where($.name \u003d $chain_name).first() %\u003e"},{"line_number":227,"context_line":"        on-success:"},{"line_number":228,"context_line":"          - get_service_chain: \u003c% $.role_service %\u003e"},{"line_number":229,"context_line":"          - set_status_failed_get_role_service: \u003c% not $.role_service %\u003e"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_1c61793a","line":226,"in_reply_to":"ff0f0b1f_b93e1fd8","updated":"2017-05-26 13:31:53.000000000","message":"Done","commit_id":"2f27edbca2451c7290f75836721684f66b5ee130"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"58106c1f17edc0e4010c04fb0a9eb0b8039bbd4c","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        on-success: build_feature_dict"},{"line_number":247,"context_line":"        publish:"},{"line_number":248,"context_line":"          # The role supports the DPDK feature if the NeutronDpdkCoreList parameter is present."},{"line_number":249,"context_line":"          dpdk: \u003c% $.role_services.any($.get(\u0027parameters\u0027, []).contains(\u0027NeutronDpdkCoreList\u0027)) %\u003e"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"          # The role supports the HCI feature if it includes both NovaCompute and CephOSD services."},{"line_number":252,"context_line":"          hci: \u003c% $.role_services.any($.get(\u0027type\u0027, \u0027\u0027).endsWith(\u0027::NovaCompute\u0027)) and $.role_services.any($.get(\u0027type\u0027, \u0027\u0027).endsWith(\u0027::CephOSD\u0027)) %\u003e"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_9c72297c","line":249,"updated":"2017-05-26 13:17:19.000000000","message":"$.role_services is not defined in previous tasks. \nmissed to use either services or rename services as role_services.","commit_id":"2f27edbca2451c7290f75836721684f66b5ee130"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"daaa18efa186d1f17b2344f709e9c91eaf79c147","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        on-success: build_feature_dict"},{"line_number":247,"context_line":"        publish:"},{"line_number":248,"context_line":"          # The role supports the DPDK feature if the NeutronDpdkCoreList parameter is present."},{"line_number":249,"context_line":"          dpdk: \u003c% $.role_services.any($.get(\u0027parameters\u0027, []).contains(\u0027NeutronDpdkCoreList\u0027)) %\u003e"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"          # The role supports the HCI feature if it includes both NovaCompute and CephOSD services."},{"line_number":252,"context_line":"          hci: \u003c% $.role_services.any($.get(\u0027type\u0027, \u0027\u0027).endsWith(\u0027::NovaCompute\u0027)) and $.role_services.any($.get(\u0027type\u0027, \u0027\u0027).endsWith(\u0027::CephOSD\u0027)) %\u003e"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_fcca4518","line":249,"in_reply_to":"ff0f0b1f_9c72297c","updated":"2017-05-26 13:31:53.000000000","message":"Whoops, yes. As I noted in patch 7, I haven\u0027t tested this yet, but am doing that right now. It will be fixed in the next patch set.","commit_id":"2f27edbca2451c7290f75836721684f66b5ee130"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"58106c1f17edc0e4010c04fb0a9eb0b8039bbd4c","unresolved":false,"context_lines":[{"line_number":262,"context_line":"          # The list of features that are enabled (i.e. are true in the feature_dict)."},{"line_number":263,"context_line":"          role_features: \u003c% let(feature_dict\u003d\u003e$.feature_dict)-\u003e $feature_dict.keys().where($feature_dict[$]) %\u003e"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"      finish:"},{"line_number":266,"context_line":"        on-success:"},{"line_number":267,"context_line":"          - send_message: \u003c% $.queue_name %\u003e"},{"line_number":268,"context_line":"          - fail: \u003c% not $.queue_name and $.get(\u0027status\u0027) \u003d \u0027FAILED\u0027 %\u003e"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_9c110957","line":265,"updated":"2017-05-26 13:17:19.000000000","message":"finish task is not needed if we move on-success part to previous step itself.","commit_id":"2f27edbca2451c7290f75836721684f66b5ee130"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"daaa18efa186d1f17b2344f709e9c91eaf79c147","unresolved":false,"context_lines":[{"line_number":262,"context_line":"          # The list of features that are enabled (i.e. are true in the feature_dict)."},{"line_number":263,"context_line":"          role_features: \u003c% let(feature_dict\u003d\u003e$.feature_dict)-\u003e $feature_dict.keys().where($feature_dict[$]) %\u003e"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"      finish:"},{"line_number":266,"context_line":"        on-success:"},{"line_number":267,"context_line":"          - send_message: \u003c% $.queue_name %\u003e"},{"line_number":268,"context_line":"          - fail: \u003c% not $.queue_name and $.get(\u0027status\u0027) \u003d \u0027FAILED\u0027 %\u003e"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ff0f0b1f_dccf8127","line":265,"in_reply_to":"ff0f0b1f_9c110957","updated":"2017-05-26 13:31:53.000000000","message":"Done","commit_id":"2f27edbca2451c7290f75836721684f66b5ee130"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"981152c987a4b422fcee54dc736c218316692f3e","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        input:"},{"line_number":106,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":107,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":108,"context_line":"          queue_name: \u0027\u0027"},{"line_number":109,"context_line":"        publish:"},{"line_number":110,"context_line":"          role_features: \u003c% task().result.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":111,"context_line":"        on-success:"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df140735_042d9c94","line":108,"range":{"start_line":108,"start_character":10,"end_line":108,"end_character":24},"updated":"2017-05-30 04:55:56.000000000","message":"I understand the logic behind using the queue_name as empty for internal workflows. But rather than this, we could have internal workflow wrapped by an another workflow, specifically for UI needs. I guess clubbing these 2 requirements is causing confusion. \n\nThere are few other things which UI needs, like inputs and possible values for each formula\u0027s workflow (dpdk, hci) which will also be specific to UI. We can include all in to a single workflow for UI, which would be more clear. \n\nI prefer to keep this workflow as internal and avoid using queue_name here. WDYT?","commit_id":"a090893e23f3f14586e6d247550d8d2229711e09"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"7d30640d5e59e802bf5c77579e122fb2b73cda06","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        input:"},{"line_number":106,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":107,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":108,"context_line":"          queue_name: \u0027\u0027"},{"line_number":109,"context_line":"        publish:"},{"line_number":110,"context_line":"          role_features: \u003c% task().result.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":111,"context_line":"        on-success:"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df140735_e88ef22c","line":108,"range":{"start_line":108,"start_character":10,"end_line":108,"end_character":24},"in_reply_to":"df140735_042d9c94","updated":"2017-05-30 13:05:49.000000000","message":"Frankly I don\u0027t think there\u0027s much confusion (we all understand how the queue_name is handled for internal and external callers). But I also prefer to hold off investing too much energy surmising the UI\u0027s future needs. To that end, I completely agree it seems a good idea to convert this to an internal workflow with no queue_name, and handle the UI\u0027s requirements separately. I\u0027ll do that in the next update.","commit_id":"a090893e23f3f14586e6d247550d8d2229711e09"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"79aa63933051a3a69e5ed6d2999e02229bd47799","unresolved":false,"context_lines":[{"line_number":120,"context_line":"      # TODO-Nova placement api based mapping is pending, we will enchance it later."},{"line_number":121,"context_line":"      get_flavor_name:"},{"line_number":122,"context_line":"        publish:"},{"line_number":123,"context_line":"          flavor_name: \u003c% let(param_name \u003d\u003e concat(\u0027Overcloud\u0027, $.role_name, \u0027Flavor\u0027).replace(\u0027OvercloudControllerFlavor\u0027, \u0027OvercloudControlFlavor\u0027)) -\u003e $.heat_resource_tree.parameters.get($param_name, {}).get(\u0027default\u0027, \u0027\u0027) %\u003e"},{"line_number":124,"context_line":"        on-success:"},{"line_number":125,"context_line":"          - get_profile_name: \u003c% $.flavor_name %\u003e"},{"line_number":126,"context_line":"          - set_status_failed_get_flavor_name: \u003c% not $.flavor_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ff0f0b1f_e7e061cf","line":123,"updated":"2017-05-26 20:08:56.000000000","message":"I dropped the code that looks for the parameter in the environment. As Saravanan observed, anything in the environment has been merged into the heat resource tree.","commit_id":"a090893e23f3f14586e6d247550d8d2229711e09"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"981152c987a4b422fcee54dc736c218316692f3e","unresolved":false,"context_lines":[{"line_number":120,"context_line":"      # TODO-Nova placement api based mapping is pending, we will enchance it later."},{"line_number":121,"context_line":"      get_flavor_name:"},{"line_number":122,"context_line":"        publish:"},{"line_number":123,"context_line":"          flavor_name: \u003c% let(param_name \u003d\u003e concat(\u0027Overcloud\u0027, $.role_name, \u0027Flavor\u0027).replace(\u0027OvercloudControllerFlavor\u0027, \u0027OvercloudControlFlavor\u0027)) -\u003e $.heat_resource_tree.parameters.get($param_name, {}).get(\u0027default\u0027, \u0027\u0027) %\u003e"},{"line_number":124,"context_line":"        on-success:"},{"line_number":125,"context_line":"          - get_profile_name: \u003c% $.flavor_name %\u003e"},{"line_number":126,"context_line":"          - set_status_failed_get_flavor_name: \u003c% not $.flavor_name %\u003e"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df140735_a92489c7","line":123,"in_reply_to":"ff0f0b1f_e7e061cf","updated":"2017-05-30 04:55:56.000000000","message":"Jagan has modified it in base version, i guess you should rebase it.","commit_id":"a090893e23f3f14586e6d247550d8d2229711e09"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"85d8faa5e5de7af66128df5d76f2e6c7136e318b","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        on-success: fail"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"  get_role_features:"},{"line_number":196,"context_line":"    description: |"},{"line_number":197,"context_line":"      Workflow that determines the list of derived parameter features (DPDK,"},{"line_number":198,"context_line":"      HCI, etc.) for a role based on the services assigned to the role."},{"line_number":199,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df140735_d83444e1","line":196,"updated":"2017-05-28 18:14:55.000000000","message":"I think, we need use \u003e instead of |?\n\nExamples:\nhttps://github.com/openstack/tripleo-common/blob/master/workbooks/baremetal.yaml#L397\n\nhttps://github.com/openstack/tripleo-common/blob/master/workbooks/deployment.yaml#L106","commit_id":"a090893e23f3f14586e6d247550d8d2229711e09"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"7d30640d5e59e802bf5c77579e122fb2b73cda06","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        on-success: fail"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"  get_role_features:"},{"line_number":196,"context_line":"    description: |"},{"line_number":197,"context_line":"      Workflow that determines the list of derived parameter features (DPDK,"},{"line_number":198,"context_line":"      HCI, etc.) for a role based on the services assigned to the role."},{"line_number":199,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df140735_a89d9a5a","line":196,"in_reply_to":"df140735_d83444e1","updated":"2017-05-30 13:05:49.000000000","message":"Done","commit_id":"a090893e23f3f14586e6d247550d8d2229711e09"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"85d8faa5e5de7af66128df5d76f2e6c7136e318b","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    input:"},{"line_number":201,"context_line":"      - role_name"},{"line_number":202,"context_line":"      - heat_resource_tree"},{"line_number":203,"context_line":"      - queue_name: tripleo"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    tasks:"},{"line_number":206,"context_line":"      get_resource_chains:"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df140735_385b402f","line":203,"updated":"2017-05-28 18:14:55.000000000","message":"Can we have the default value for queue_name as \u0027 \u0027 instead tripleo to avaoid passing queue_name from calling in internal workflow?\n\nso that we can avoid passing queue_name and always same \u0027 \u0027 for calling from internal workflow (line 108).\nSince we need to pass queue name and queue name cannot be same (tripleo) for calling from external workflow.","commit_id":"a090893e23f3f14586e6d247550d8d2229711e09"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"7d30640d5e59e802bf5c77579e122fb2b73cda06","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    input:"},{"line_number":201,"context_line":"      - role_name"},{"line_number":202,"context_line":"      - heat_resource_tree"},{"line_number":203,"context_line":"      - queue_name: tripleo"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    tasks:"},{"line_number":206,"context_line":"      get_resource_chains:"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df140735_c8832e04","line":203,"in_reply_to":"df140735_385b402f","updated":"2017-05-30 13:05:49.000000000","message":"This will be converted to an internal workflow, and so the queue_name will be eliminated.","commit_id":"a090893e23f3f14586e6d247550d8d2229711e09"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"79aa63933051a3a69e5ed6d2999e02229bd47799","unresolved":false,"context_lines":[{"line_number":251,"context_line":"          # The list of features that are enabled (i.e. are true in the feature_dict)."},{"line_number":252,"context_line":"          role_features: \u003c% let(feature_dict \u003d\u003e $.feature_dict)-\u003e $feature_dict.keys().where($feature_dict[$]) %\u003e"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"      finish:"},{"line_number":255,"context_line":"        on-success:"},{"line_number":256,"context_line":"          - send_message: \u003c% $.queue_name %\u003e"},{"line_number":257,"context_line":"          - fail: \u003c% not $.queue_name and $.get(\u0027status\u0027) \u003d \u0027FAILED\u0027 %\u003e"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ff0f0b1f_47f26d9c","line":254,"updated":"2017-05-26 20:08:56.000000000","message":"I retained this \"finish\" task because it centralizes the logic of determining whether a response message is necessary. This task is invoked from several places, so it serves to avoid duplicating the logic everywhere.","commit_id":"a090893e23f3f14586e6d247550d8d2229711e09"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"7d30640d5e59e802bf5c77579e122fb2b73cda06","unresolved":false,"context_lines":[{"line_number":251,"context_line":"          # The list of features that are enabled (i.e. are true in the feature_dict)."},{"line_number":252,"context_line":"          role_features: \u003c% let(feature_dict \u003d\u003e $.feature_dict)-\u003e $feature_dict.keys().where($feature_dict[$]) %\u003e"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"      finish:"},{"line_number":255,"context_line":"        on-success:"},{"line_number":256,"context_line":"          - send_message: \u003c% $.queue_name %\u003e"},{"line_number":257,"context_line":"          - fail: \u003c% not $.queue_name and $.get(\u0027status\u0027) \u003d \u0027FAILED\u0027 %\u003e"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df140735_48771e3c","line":254,"in_reply_to":"ff0f0b1f_47f26d9c","updated":"2017-05-30 13:05:49.000000000","message":"All this will be cleaned up when it\u0027s converted to an entirely internal workflow.","commit_id":"a090893e23f3f14586e6d247550d8d2229711e09"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"893f22266e1d351b18611c80161540ad1be8403a","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        input:"},{"line_number":106,"context_line":"          role_name: \u003c% $.role_name %\u003e"},{"line_number":107,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":108,"context_line":"          queue_name: \u0027\u0027"},{"line_number":109,"context_line":"        publish:"},{"line_number":110,"context_line":"          role_features: \u003c% task().result.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":111,"context_line":"        on-success:"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"df140735_a070f7a6","line":108,"range":{"start_line":108,"start_character":10,"end_line":108,"end_character":24},"updated":"2017-05-31 08:41:55.000000000","message":"has to be removed as the workflow no more takes this input.","commit_id":"06bdeb6cffee21dfaaa5fde534975dd94697d8d8"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"583e0a8b8f886f7610562ef7c98a058a68296583","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"      set_status_failed_get_resource_chains:"},{"line_number":252,"context_line":"        publish:"},{"line_number":253,"context_line":"          message: \u003c% \u0027Unable to locate any resource chains in the heat resource tree\u0027 %\u003e"},{"line_number":254,"context_line":"        on-success: fail"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"      set_status_failed_get_role_service:"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"df140735_92b8a4c8","line":253,"updated":"2017-05-31 12:50:48.000000000","message":"nit: status field is not published, so can we update task name as different like set_failed_message_XX_task.","commit_id":"bcbfd5f961651a47ce780d8de6c4f8dc8c11cede"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"9da27621d08d43a52057ef66bbed9556d5f7ef7c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"      get_flattened_parameters:"},{"line_number":18,"context_line":"        action: tripleo.parameters.get_flatten container\u003d\u003c% $.plan %\u003e"},{"line_number":19,"context_line":"        publish:"},{"line_number":20,"context_line":"          environment_parameters: \u003c% task().result.mistral_environment_parameters %\u003e"},{"line_number":21,"context_line":"          heat_resource_tree: \u003c% task().result.heat_resource_tree %\u003e"},{"line_number":22,"context_line":"        on-success:"},{"line_number":23,"context_line":"          - get_roles: \u003c% $.environment_parameters and $.heat_resource_tree %\u003e"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7f231b9d_4b1d9064","line":20,"range":{"start_line":20,"start_character":51,"end_line":20,"end_character":59},"updated":"2017-06-14 11:22:25.000000000","message":"This has to be removed as it have been renamed upstream.","commit_id":"6d0e67aef815e24aa7ecef6e19ec4b1f75000e79"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"bcf8c57326d0710cedfc665c4504c2d5223a109d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"      get_flattened_parameters:"},{"line_number":18,"context_line":"        action: tripleo.parameters.get_flatten container\u003d\u003c% $.plan %\u003e"},{"line_number":19,"context_line":"        publish:"},{"line_number":20,"context_line":"          environment_parameters: \u003c% task().result.mistral_environment_parameters %\u003e"},{"line_number":21,"context_line":"          heat_resource_tree: \u003c% task().result.heat_resource_tree %\u003e"},{"line_number":22,"context_line":"        on-success:"},{"line_number":23,"context_line":"          - get_roles: \u003c% $.environment_parameters and $.heat_resource_tree %\u003e"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7f231b9d_267cc9b3","line":20,"range":{"start_line":20,"start_character":51,"end_line":20,"end_character":59},"in_reply_to":"7f231b9d_4b1d9064","updated":"2017-06-14 12:28:37.000000000","message":"Done","commit_id":"6d0e67aef815e24aa7ecef6e19ec4b1f75000e79"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"e21fc7f75a2a191089edfacc5f6525da3d85dcc0","unresolved":false,"context_lines":[{"line_number":118,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":119,"context_line":"        publish:"},{"line_number":120,"context_line":"          role_features: \u003c% task().result.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":121,"context_line":"          role_services: \u003c% task().result.get(\u0027role_services\u0027, []) %\u003e"},{"line_number":122,"context_line":"        on-success:"},{"line_number":123,"context_line":"          # Continue only if there are features associated with this role. Otherwise, we\u0027re done."},{"line_number":124,"context_line":"          - get_flavor_name: \u003c% $.role_features %\u003e"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7f231b9d_b625b6c4","line":121,"range":{"start_line":121,"start_character":10,"end_line":121,"end_character":23},"updated":"2017-06-14 05:25:49.000000000","message":"We have to be cautious in using this, as the service name is not defined and it can be overridden to a different name. Do you haven any specific usage for it, in the HCI workflow?","commit_id":"6d0e67aef815e24aa7ecef6e19ec4b1f75000e79"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"bcf8c57326d0710cedfc665c4504c2d5223a109d","unresolved":false,"context_lines":[{"line_number":118,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":119,"context_line":"        publish:"},{"line_number":120,"context_line":"          role_features: \u003c% task().result.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":121,"context_line":"          role_services: \u003c% task().result.get(\u0027role_services\u0027, []) %\u003e"},{"line_number":122,"context_line":"        on-success:"},{"line_number":123,"context_line":"          # Continue only if there are features associated with this role. Otherwise, we\u0027re done."},{"line_number":124,"context_line":"          - get_flavor_name: \u003c% $.role_features %\u003e"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7f231b9d_c6dd1543","line":121,"range":{"start_line":121,"start_character":10,"end_line":121,"end_character":23},"in_reply_to":"7f231b9d_b625b6c4","updated":"2017-06-14 12:28:37.000000000","message":"What service name are you referring to? This variable contains the actual list of services and their corresponding parameter values associated with the role. Perhaps not every derived feature algorithm will need the data, but it was somewhat tricky to extract and I see no reason to discard it. And I do think the HCI algorithm will need it when I resolve one of the TODOs.","commit_id":"6d0e67aef815e24aa7ecef6e19ec4b1f75000e79"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"041bf99450e69b89b95d440cdfdcf807ab0a2aff","unresolved":false,"context_lines":[{"line_number":118,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":119,"context_line":"        publish:"},{"line_number":120,"context_line":"          role_features: \u003c% task().result.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":121,"context_line":"          role_services: \u003c% task().result.get(\u0027role_services\u0027, []) %\u003e"},{"line_number":122,"context_line":"        on-success:"},{"line_number":123,"context_line":"          # Continue only if there are features associated with this role. Otherwise, we\u0027re done."},{"line_number":124,"context_line":"          - get_flavor_name: \u003c% $.role_features %\u003e"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"7f231b9d_81fa6772","line":121,"range":{"start_line":121,"start_character":10,"end_line":121,"end_character":23},"in_reply_to":"7f231b9d_c6dd1543","updated":"2017-06-14 12:46:44.000000000","message":"OK. I was under the impression that it is a list of service types (with the name role_services). I would say if we really need it, we can use it (not because we have it). \n\nAgain, we can discuss the use case, but service associated with parameter is something we may not need on formula workflows (I may be wrong). The fact that there is a \"parameters\" list in the \"heat_resource_tree\" should give all the list of parameters. \n\nCan we change the name to specific about the service and parameter association? Something like, service_params_list?","commit_id":"6d0e67aef815e24aa7ecef6e19ec4b1f75000e79"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"71ce64a468470aafacc78b1d29346fe69a13f104","unresolved":false,"context_lines":[{"line_number":118,"context_line":"          heat_resource_tree: \u003c% $.heat_resource_tree %\u003e"},{"line_number":119,"context_line":"        publish:"},{"line_number":120,"context_line":"          role_features: \u003c% task().result.get(\u0027role_features\u0027, []) %\u003e"},{"line_number":121,"context_line":"          role_services: \u003c% task().result.get(\u0027role_services\u0027, []) %\u003e"},{"line_number":122,"context_line":"        on-success:"},{"line_number":123,"context_line":"          # Continue only if there are features associated with this role. Otherwise, we\u0027re done."},{"line_number":124,"context_line":"          - get_flavor_name: \u003c% $.role_features %\u003e"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"7f231b9d_fece40b2","line":121,"range":{"start_line":121,"start_character":10,"end_line":121,"end_character":23},"updated":"2017-06-15 05:39:52.000000000","message":"Thanks Alan. As discussed in the call, the role_services variable will NOT be useful for formulas workflow as the nested data and parameters have been flattened out. I will leave it to you as mistral does not complain about unused variables.","commit_id":"4fd8470d06a37dd6952f01335a10b68c47aa32a0"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"2d1b784b507db65abadaef9593cad3e2c8aae479","unresolved":false,"context_lines":[{"line_number":108,"context_line":"      - role_name"},{"line_number":109,"context_line":"      - environment_parameters"},{"line_number":110,"context_line":"      - heat_resource_tree"},{"line_number":111,"context_line":"      - user_inputs"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    tasks:"},{"line_number":114,"context_line":"      get_role_info:"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"5f201791_c0ea610d","line":111,"updated":"2017-06-27 08:16:10.000000000","message":"I can\u0027t see where this is used.","commit_id":"e5b36945e76f0d720d8049068aab932c0def44d1"}]}
