)]}'
{"network/ports/net_ip_list_map.j2.yaml":[{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"f8da2da057af37d46ad704dabd164a40dfc455f0","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        map_merge:"},{"line_number":81,"context_line":"          repeat:"},{"line_number":82,"context_line":"            template:"},{"line_number":83,"context_line":"              SERVICE_node_ips: $$ groups[\u0027SERVICE\u0027] | default ([]) | map(\u0027extract\u0027, hostvars, service_net_map[\u0027SERVICE_network\u0027] | default(\u0027ctlplane\u0027) ~ \u0027_ip\u0027) | list | to_json $$"},{"line_number":84,"context_line":"            for_each:"},{"line_number":85,"context_line":"              SERVICE:"},{"line_number":86,"context_line":"                yaql:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"bfb3d3c7_7737c14e","line":83,"range":{"start_line":83,"start_character":32,"end_line":83,"end_character":34},"updated":"2019-05-29 08:22:09.000000000","message":"nit, I think it would be helpful to have a comment explaining a bit what is happening here? This is passed to ansible to evaluate the expression, and the $$ syntax?\n\n(The code comment can be a follow up.)","commit_id":"c6220c4d3e4a722700109dbcd5effcc19278df5c"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"87aab643337ff77f362e1240f81a8307937b5351","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        map_merge:"},{"line_number":81,"context_line":"          repeat:"},{"line_number":82,"context_line":"            template:"},{"line_number":83,"context_line":"              # $$ is used here to indicate the start/end of an ansible jinja"},{"line_number":84,"context_line":"              # expression. we could use {{ and }} but the escaping would make it"},{"line_number":85,"context_line":"              # difficult to read, and it would still come out surrounded by"},{"line_number":86,"context_line":"              # quotes. On the ansible side,"},{"line_number":87,"context_line":"              # we then set variable_start_string/variable_end_string to $$ for"},{"line_number":88,"context_line":"              # use with the template module"},{"line_number":89,"context_line":"              SERVICE_node_ips: $$ groups[\u0027SERVICE\u0027] | default ([]) | map(\u0027extract\u0027, hostvars, service_net_map[\u0027SERVICE_network\u0027] | default(\u0027ctlplane\u0027) ~ \u0027_ip\u0027) | list | to_json $$"},{"line_number":90,"context_line":"            for_each:"},{"line_number":91,"context_line":"              SERVICE:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bfb3d3c7_603daf8d","line":88,"range":{"start_line":83,"start_character":14,"end_line":88,"end_character":44},"updated":"2019-05-29 17:49:16.000000000","message":"Thanks James!","commit_id":"03d2436060fb77575da962f86e5ae406e003a21b"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"683e0ca0d55b326b2f33876fbf32503491d6c6bd","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        map_merge:"},{"line_number":81,"context_line":"          repeat:"},{"line_number":82,"context_line":"            template:"},{"line_number":83,"context_line":"              # $$ is used here to indicate the start/end of an ansible jinja"},{"line_number":84,"context_line":"              # expression. we could use {{ and }} but the escaping would make it"},{"line_number":85,"context_line":"              # difficult to read, and it would still come out surrounded by"},{"line_number":86,"context_line":"              # quotes. On the ansible side,"},{"line_number":87,"context_line":"              # we then set variable_start_string/variable_end_string to $$ for"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"bfb3d3c7_b767444d","line":84,"range":{"start_line":83,"start_character":16,"end_line":84,"end_character":81},"updated":"2019-05-31 12:48:23.000000000","message":"there is a way to avoid escaping problems with {% raw %}{% endraw %} sections, see https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/deployment/octavia/octavia-deployment-config.j2.yaml#L208 example\n\nWe could use the same approach here instead of $$ perhaps","commit_id":"1c4304aeac88ce9595af1098d142948655856c96"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"292c72ba6599fc2fa29f87161b79ba7b763de740","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        map_merge:"},{"line_number":81,"context_line":"          repeat:"},{"line_number":82,"context_line":"            template:"},{"line_number":83,"context_line":"              # $$ is used here to indicate the start/end of an ansible jinja"},{"line_number":84,"context_line":"              # expression. we could use {{ and }} but the escaping would make it"},{"line_number":85,"context_line":"              # difficult to read, and it would still come out surrounded by"},{"line_number":86,"context_line":"              # quotes. On the ansible side,"},{"line_number":87,"context_line":"              # we then set variable_start_string/variable_end_string to $$ for"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"bfb3d3c7_97c9e026","line":84,"range":{"start_line":83,"start_character":16,"end_line":84,"end_character":81},"in_reply_to":"bfb3d3c7_b767444d","updated":"2019-05-31 12:49:52.000000000","message":"another example https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/deployment/ceph-ansible/ceph-base.yaml#L468","commit_id":"1c4304aeac88ce9595af1098d142948655856c96"}],"overcloud.j2.yaml":[{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"b7921311545f5cefd4c5e318656ab725f3fedf0a","unresolved":false,"context_lines":[{"line_number":777,"context_line":"      controller_ips: {get_attr: [{{primary_role_name}}, ip_address]}"},{"line_number":778,"context_line":"      controller_names: {get_attr: [{{primary_role_name}}, hostname]}"},{"line_number":779,"context_line":"      service_ips:"},{"line_number":780,"context_line":"        map_merge:"},{"line_number":781,"context_line":"{%- for role in roles %}"},{"line_number":782,"context_line":"          - {get_attr: [{{role.name}}IpListMap, service_ips]}"},{"line_number":783,"context_line":"{%- endfor %}"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ffb9cba7_3fc09450","line":780,"updated":"2019-04-25 23:33:25.000000000","message":"so do we not need the yaql still?","commit_id":"08dffbc4ce585182ffef0f9abb230758ddb0b107"},{"author":{"_account_id":7144,"name":"James Slagle","email":"jslagle@redhat.com","username":"slagle"},"change_message_id":"959e6e704c8bd82839a63bce9257f2ef2793f02e","unresolved":false,"context_lines":[{"line_number":777,"context_line":"      controller_ips: {get_attr: [{{primary_role_name}}, ip_address]}"},{"line_number":778,"context_line":"      controller_names: {get_attr: [{{primary_role_name}}, hostname]}"},{"line_number":779,"context_line":"      service_ips:"},{"line_number":780,"context_line":"        map_merge:"},{"line_number":781,"context_line":"{%- for role in roles %}"},{"line_number":782,"context_line":"          - {get_attr: [{{role.name}}IpListMap, service_ips]}"},{"line_number":783,"context_line":"{%- endfor %}"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"ffb9cba7_682082b1","line":780,"in_reply_to":"ffb9cba7_3fc09450","updated":"2019-04-26 21:10:01.000000000","message":"we shouldn\u0027t. the point of the yaql was to merge the list of ips when a service was deployed on different roles.\n\nthat is automatically handled by the service groups created in the ansible inventory.","commit_id":"08dffbc4ce585182ffef0f9abb230758ddb0b107"}]}
