)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"fc6d9c05e2d07f3d18eddfd0e4305e013cd1052b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"here.  This speeds up template processing functions drastically"},{"line_number":14,"context_line":"which makes the UI experience much better."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-On: I21caef1a3e6206d6c427140fd28b5f2ea6c68ef0"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I50f33b0074b147ad3c902b372f8c747fa88811b4"},{"line_number":19,"context_line":"Co-Authored-By: Dan Prince \u003cdprince@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5f7c97a3_5a3cfe2b","line":16,"updated":"2018-08-01 04:15:54.000000000","message":"Does this change really depend on ^^?","commit_id":"47402c0609bb58ab3f1f84f6042e8644b0369a3b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"bf19d4cd56e5ab62d2a94c7eeae877815310224a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"here.  This speeds up template processing functions drastically"},{"line_number":14,"context_line":"which makes the UI experience much better."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-On: I21caef1a3e6206d6c427140fd28b5f2ea6c68ef0"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I50f33b0074b147ad3c902b372f8c747fa88811b4"},{"line_number":19,"context_line":"Co-Authored-By: Dan Prince \u003cdprince@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5f7c97a3_5a15de93","line":16,"in_reply_to":"5f7c97a3_5a3cfe2b","updated":"2018-08-01 04:19:18.000000000","message":"Oh, I understand now","commit_id":"47402c0609bb58ab3f1f84f6042e8644b0369a3b"}],"sudoers":[{"author":{"_account_id":13039,"name":"Martin André","email":"m.andre@redhat.com","username":"mandre"},"change_message_id":"6b4cc8d85853ee480e8549e5b67f20a72e6d7509","unresolved":false,"context_lines":[{"line_number":10,"context_line":"mistral ALL \u003d NOPASSWD: /usr/bin/tar --xattrs --ignore-failed-read -C / -cf /var/tmp/undercloud-backup-*.tar *"},{"line_number":11,"context_line":"mistral ALL \u003d NOPASSWD: /usr/bin/chown mistral. /var/tmp/undercloud-backup-*/filesystem-*.tar"},{"line_number":12,"context_line":"mistral ALL \u003d NOPASSWD: /usr/bin/yum -y install octavia-amphora-image"},{"line_number":13,"context_line":"mistral ALL \u003d NOPASSWD: /usr/bin/rm -r /var/lib/tripleo/plan_cache/*"},{"line_number":14,"context_line":"mistral ALL \u003d NOPASSWD: /usr/bin/mkdir -p /var/lib/tripleo/plan_cache/*"},{"line_number":15,"context_line":"mistral ALL \u003d NOPASSWD: /usr/bin/chown mistral. /var/lib/tripleo/plan_cache/*"},{"line_number":16,"context_line":"validations ALL \u003d NOPASSWD: ALL"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3f79a3b5_237c11b4","line":13,"updated":"2018-08-08 11:19:08.000000000","message":"We should be more specific than \u0027*\u0027 otherwise the mistral user can do real damage with a command such as \"rm -r /var/lib/tripleo/plan_cache/../../../..\"","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"},{"author":{"_account_id":2011,"name":"Ian Main","email":"imain@redhat.com","username":"imain"},"change_message_id":"27c6af05519407a86c2fe70e0c5840375406fd15","unresolved":false,"context_lines":[{"line_number":10,"context_line":"mistral ALL \u003d NOPASSWD: /usr/bin/tar --xattrs --ignore-failed-read -C / -cf /var/tmp/undercloud-backup-*.tar *"},{"line_number":11,"context_line":"mistral ALL \u003d NOPASSWD: /usr/bin/chown mistral. /var/tmp/undercloud-backup-*/filesystem-*.tar"},{"line_number":12,"context_line":"mistral ALL \u003d NOPASSWD: /usr/bin/yum -y install octavia-amphora-image"},{"line_number":13,"context_line":"mistral ALL \u003d NOPASSWD: /usr/bin/rm -r /var/lib/tripleo/plan_cache/*"},{"line_number":14,"context_line":"mistral ALL \u003d NOPASSWD: /usr/bin/mkdir -p /var/lib/tripleo/plan_cache/*"},{"line_number":15,"context_line":"mistral ALL \u003d NOPASSWD: /usr/bin/chown mistral. /var/lib/tripleo/plan_cache/*"},{"line_number":16,"context_line":"validations ALL \u003d NOPASSWD: ALL"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3f79a3b5_f98f7a20","line":13,"in_reply_to":"3f79a3b5_237c11b4","updated":"2018-08-09 19:48:52.000000000","message":"Done","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"}],"tripleo_common/actions/parameters.py":[{"author":{"_account_id":7509,"name":"Jiri Tomasek","email":"jtomasek@redhat.com","username":"jtomasek"},"change_message_id":"a94acdf0605efadaf132d91b9e09c49a71f3a1dc","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        heat \u003d self.get_orchestration_client(context)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        try:"},{"line_number":150,"context_line":"            env \u003d plan_utils.get_env(swift, self.container)"},{"line_number":151,"context_line":"        except swiftexceptions.ClientException as err:"},{"line_number":152,"context_line":"            err_msg \u003d (\"Error retrieving environment for plan %s: %s\" % ("},{"line_number":153,"context_line":"                self.container, err))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_2038639e","line":150,"updated":"2018-08-09 13:08:01.000000000","message":"This is going to fail as there is no plan-environment.yaml in the swift container. The updates would have to be done on the cache directory but then I am struggling to understand the point of keeping the Swift tarball object around.","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"},{"author":{"_account_id":2011,"name":"Ian Main","email":"imain@redhat.com","username":"imain"},"change_message_id":"7caa186043f5cde7e01044f05955d61bcedbb673","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        heat \u003d self.get_orchestration_client(context)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        try:"},{"line_number":150,"context_line":"            env \u003d plan_utils.get_env(swift, self.container)"},{"line_number":151,"context_line":"        except swiftexceptions.ClientException as err:"},{"line_number":152,"context_line":"            err_msg \u003d (\"Error retrieving environment for plan %s: %s\" % ("},{"line_number":153,"context_line":"                self.container, err))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_c628a035","line":150,"in_reply_to":"3f79a3b5_2038639e","updated":"2018-08-09 17:44:03.000000000","message":"It\u0027s still there.  The tarball contains the bulk of the templates but not everything.  When we unpack the tarball locally we do not overwrite anything in swift.  Swift is still the canonical source of the templates and any individual files in swift take precedence over the tarball contents.","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"}],"tripleo_common/actions/templates.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"732d8ce7a4c7bb6e8894bc768306d5748d421874","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        os.remove(tarball_file)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        # run process_templates.py"},{"line_number":103,"context_line":"        LOG.debug(\u0027Calling process_templates on tarball\u0027)"},{"line_number":104,"context_line":"        command \u003d [\u0027/bin/python\u0027, \u0027tools/process-templates.py\u0027]"},{"line_number":105,"context_line":"        stdout, stderr \u003d processutils.execute(*command, cwd\u003dplan_cache_dir)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # create tarball.  We\u0027re using shell globbing here so we don\u0027t include"},{"line_number":108,"context_line":"        # the tarball file itself in the tarball."}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_5ace3e58","line":105,"range":{"start_line":103,"start_character":0,"end_line":105,"end_character":75},"updated":"2018-08-01 04:14:00.000000000","message":"yes, finally we de-duplicate our jinja rendering tools!","commit_id":"47402c0609bb58ab3f1f84f6042e8644b0369a3b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"732d8ce7a4c7bb6e8894bc768306d5748d421874","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        LOG.debug(\u0027Template: %s\u0027 % template_name)"},{"line_number":130,"context_line":"        LOG.debug(\u0027Environments: %s\u0027 % environments)"},{"line_number":131,"context_line":"        try:"},{"line_number":132,"context_line":"            for env in environments:"},{"line_number":133,"context_line":"                if env.get(\u0027path\u0027):"},{"line_number":134,"context_line":"                    env_paths.append(env[\u0027path\u0027])"},{"line_number":135,"context_line":"                elif env.get(\u0027data\u0027):"},{"line_number":136,"context_line":"                    env_temp_file \u003d _create_temp_file(env[\u0027data\u0027])"},{"line_number":137,"context_line":"                    temp_files.append(env_temp_file)"},{"line_number":138,"context_line":"                    env_paths.append(env_temp_file)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            # create a dict to hold all user set params and merge"},{"line_number":141,"context_line":"            # them in the appropriate order"},{"line_number":142,"context_line":"            merged_params \u003d {}"},{"line_number":143,"context_line":"            # merge generated passwords into params first"},{"line_number":144,"context_line":"            passwords \u003d plan_env.get(\u0027passwords\u0027, {})"},{"line_number":145,"context_line":"            merged_params.update(passwords)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"            # derived parameters are merged before \u0027parameter defaults\u0027"},{"line_number":148,"context_line":"            # so that user-specified values can override the derived values."},{"line_number":149,"context_line":"            derived_params \u003d plan_env.get(\u0027derived_parameters\u0027, {})"},{"line_number":150,"context_line":"            merged_params.update(derived_params)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"            # handle user set parameter values next in case a user has set"},{"line_number":153,"context_line":"            # a new value for a password parameter"},{"line_number":154,"context_line":"            params \u003d plan_env.get(\u0027parameter_defaults\u0027, {})"},{"line_number":155,"context_line":"            merged_params \u003d template_utils.deep_update(merged_params, params)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"            if merged_params:"},{"line_number":158,"context_line":"                env_temp_file \u003d _create_temp_file("},{"line_number":159,"context_line":"                    {\u0027parameter_defaults\u0027: merged_params})"},{"line_number":160,"context_line":"                temp_files.append(env_temp_file)"},{"line_number":161,"context_line":"                env_paths.append(env_temp_file)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"            registry \u003d plan_env.get(\u0027resource_registry\u0027, {})"},{"line_number":164,"context_line":"            if registry:"},{"line_number":165,"context_line":"                env_temp_file \u003d _create_temp_file("},{"line_number":166,"context_line":"                    {\u0027resource_registry\u0027: registry})"},{"line_number":167,"context_line":"                temp_files.append(env_temp_file)"},{"line_number":168,"context_line":"                env_paths.append(env_temp_file)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"            # this is required so the tempate_utils can use local files below"},{"line_number":171,"context_line":"            os.chdir(plan_cache_dir)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            template_files, template \u003d template_utils.get_template_contents("},{"line_number":174,"context_line":"                template_file\u003dtemplate_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_dae24ed3","line":171,"range":{"start_line":132,"start_character":0,"end_line":171,"end_character":36},"updated":"2018-08-01 04:14:00.000000000","message":"I can\u0027t quite tell, but it looks like this block does exactly what process_multiple_environments_and_files already does","commit_id":"47402c0609bb58ab3f1f84f6042e8644b0369a3b"},{"author":{"_account_id":13039,"name":"Martin André","email":"m.andre@redhat.com","username":"mandre"},"change_message_id":"6b4cc8d85853ee480e8549e5b67f20a72e6d7509","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        plan_cache_dir \u003d plan_utils.ensure_local_cache_dir(swift,"},{"line_number":95,"context_line":"                                                           self.container)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # Remove the old tarball so it doesn\u0027t end up in the new tarball."},{"line_number":98,"context_line":"        tarball_file \u003d os.path.join(plan_cache_dir,"},{"line_number":99,"context_line":"                                    constants.TEMPLATES_TARBALL_NAME)"},{"line_number":100,"context_line":"        os.remove(tarball_file)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_b75ff770","line":97,"updated":"2018-08-08 11:19:08.000000000","message":"Maybe the tarball downloaded from swift should be extracted in another directory than where it is saved then?","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"},{"author":{"_account_id":2011,"name":"Ian Main","email":"imain@redhat.com","username":"imain"},"change_message_id":"27c6af05519407a86c2fe70e0c5840375406fd15","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        plan_cache_dir \u003d plan_utils.ensure_local_cache_dir(swift,"},{"line_number":95,"context_line":"                                                           self.container)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # Remove the old tarball so it doesn\u0027t end up in the new tarball."},{"line_number":98,"context_line":"        tarball_file \u003d os.path.join(plan_cache_dir,"},{"line_number":99,"context_line":"                                    constants.TEMPLATES_TARBALL_NAME)"},{"line_number":100,"context_line":"        os.remove(tarball_file)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_59a8ee75","line":97,"in_reply_to":"3f79a3b5_b75ff770","updated":"2018-08-09 19:48:52.000000000","message":"It\u0027s tricky because we are just downloading the whole contents of swift here in one go.  I think this works well enough..  this is only for the initial creation of the tarball.","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"}],"tripleo_common/constants.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"732d8ce7a4c7bb6e8894bc768306d5748d421874","unresolved":false,"context_lines":[{"line_number":18,"context_line":"OVERCLOUD_YAML_NAME \u003d \"overcloud.yaml\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"#: Local filesystem directory for the plan cache"},{"line_number":21,"context_line":"PLAN_CACHE_DIR \u003d \"/var/lib/tripleo/plan_cache\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#: The names of the root template in a standard tripleo-heat-template layout."},{"line_number":24,"context_line":"CAPABILITIES_MAP \u003d \"capabilities-map.yaml\""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_9af13699","line":21,"updated":"2018-08-01 04:14:00.000000000","message":"Can this be /var/lib/mistral/plan_cache? this would put it near the config-download rendered files.","commit_id":"47402c0609bb58ab3f1f84f6042e8644b0369a3b"},{"author":{"_account_id":2011,"name":"Ian Main","email":"imain@redhat.com","username":"imain"},"change_message_id":"27c6af05519407a86c2fe70e0c5840375406fd15","unresolved":false,"context_lines":[{"line_number":18,"context_line":"OVERCLOUD_YAML_NAME \u003d \"overcloud.yaml\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"#: Local filesystem directory for the plan cache"},{"line_number":21,"context_line":"PLAN_CACHE_DIR \u003d \"/var/lib/tripleo/plan_cache\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#: The names of the root template in a standard tripleo-heat-template layout."},{"line_number":24,"context_line":"CAPABILITIES_MAP \u003d \"capabilities-map.yaml\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_391c1211","line":21,"in_reply_to":"5f7c97a3_9af13699","updated":"2018-08-09 19:48:52.000000000","message":"Done","commit_id":"47402c0609bb58ab3f1f84f6042e8644b0369a3b"},{"author":{"_account_id":13039,"name":"Martin André","email":"m.andre@redhat.com","username":"mandre"},"change_message_id":"6b4cc8d85853ee480e8549e5b67f20a72e6d7509","unresolved":false,"context_lines":[{"line_number":20,"context_line":"#: Local filesystem directory for the plan cache"},{"line_number":21,"context_line":"PLAN_CACHE_DIR \u003d \"/var/lib/tripleo/plan_cache\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#: The names of the root template in a standard tripleo-heat-template layout."},{"line_number":24,"context_line":"CAPABILITIES_MAP \u003d \"capabilities-map.yaml\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#: The name of the overcloud root template in jinja2 format."}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_061d6365","line":23,"updated":"2018-08-08 11:19:08.000000000","message":"Comment needs to be updated","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"},{"author":{"_account_id":2011,"name":"Ian Main","email":"imain@redhat.com","username":"imain"},"change_message_id":"27c6af05519407a86c2fe70e0c5840375406fd15","unresolved":false,"context_lines":[{"line_number":20,"context_line":"#: Local filesystem directory for the plan cache"},{"line_number":21,"context_line":"PLAN_CACHE_DIR \u003d \"/var/lib/tripleo/plan_cache\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#: The names of the root template in a standard tripleo-heat-template layout."},{"line_number":24,"context_line":"CAPABILITIES_MAP \u003d \"capabilities-map.yaml\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#: The name of the overcloud root template in jinja2 format."}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_d9eabeaa","line":23,"in_reply_to":"3f79a3b5_061d6365","updated":"2018-08-09 19:48:52.000000000","message":"Done","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"},{"author":{"_account_id":13039,"name":"Martin André","email":"m.andre@redhat.com","username":"mandre"},"change_message_id":"6b4cc8d85853ee480e8549e5b67f20a72e6d7509","unresolved":false,"context_lines":[{"line_number":23,"context_line":"#: The names of the root template in a standard tripleo-heat-template layout."},{"line_number":24,"context_line":"CAPABILITIES_MAP \u003d \"capabilities-map.yaml\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#: The name of the overcloud root template in jinja2 format."},{"line_number":27,"context_line":"TEMPLATES_TARBALL_NAME \u003d \"tripleo-heat-templates.tar.gz\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"#: The name of the overcloud root template in jinja2 format."}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_c31afd7b","line":26,"updated":"2018-08-08 11:19:08.000000000","message":"ditto","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"},{"author":{"_account_id":2011,"name":"Ian Main","email":"imain@redhat.com","username":"imain"},"change_message_id":"27c6af05519407a86c2fe70e0c5840375406fd15","unresolved":false,"context_lines":[{"line_number":23,"context_line":"#: The names of the root template in a standard tripleo-heat-template layout."},{"line_number":24,"context_line":"CAPABILITIES_MAP \u003d \"capabilities-map.yaml\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#: The name of the overcloud root template in jinja2 format."},{"line_number":27,"context_line":"TEMPLATES_TARBALL_NAME \u003d \"tripleo-heat-templates.tar.gz\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"#: The name of the overcloud root template in jinja2 format."}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_79d12afb","line":26,"in_reply_to":"3f79a3b5_c31afd7b","updated":"2018-08-09 19:48:52.000000000","message":"Done","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"}],"tripleo_common/utils/plan.py":[{"author":{"_account_id":13039,"name":"Martin André","email":"m.andre@redhat.com","username":"mandre"},"change_message_id":"6b4cc8d85853ee480e8549e5b67f20a72e6d7509","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    swiftutils.download_container(swift, plan_name, plan_cache_dir)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    LOG.debug(\u0027Plan ops: untarring templates %s\u0027 % plan_cache_dir)"},{"line_number":98,"context_line":"    # use skip-old-files so that we don\u0027t overwrite anything in the swift"},{"line_number":99,"context_line":"    # container that was created outside the tarball.  This lets existing"},{"line_number":100,"context_line":"    # template processing upload specific files to the swift container that"},{"line_number":101,"context_line":"    # take precedence over the contents of the tarball."}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_17558bc6","line":98,"range":{"start_line":98,"start_character":10,"end_line":98,"end_character":24},"updated":"2018-08-08 11:19:08.000000000","message":"Does it really apply though? since you\u0027re deleting the plan_cache_dir anyway each time.","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"},{"author":{"_account_id":2011,"name":"Ian Main","email":"imain@redhat.com","username":"imain"},"change_message_id":"27c6af05519407a86c2fe70e0c5840375406fd15","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    swiftutils.download_container(swift, plan_name, plan_cache_dir)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    LOG.debug(\u0027Plan ops: untarring templates %s\u0027 % plan_cache_dir)"},{"line_number":98,"context_line":"    # use skip-old-files so that we don\u0027t overwrite anything in the swift"},{"line_number":99,"context_line":"    # container that was created outside the tarball.  This lets existing"},{"line_number":100,"context_line":"    # template processing upload specific files to the swift container that"},{"line_number":101,"context_line":"    # take precedence over the contents of the tarball."}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_59d6aef3","line":98,"range":{"start_line":98,"start_character":10,"end_line":98,"end_character":24},"in_reply_to":"3f79a3b5_17558bc6","updated":"2018-08-09 19:48:52.000000000","message":"Yes, we don\u0027t want to overwrite files from the swift container with the contents of the tarball.  This lets us upload specific files into swift which override the contents of the tarball.","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"},{"author":{"_account_id":13039,"name":"Martin André","email":"m.andre@redhat.com","username":"mandre"},"change_message_id":"6b4cc8d85853ee480e8549e5b67f20a72e6d7509","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    # container that was created outside the tarball.  This lets existing"},{"line_number":100,"context_line":"    # template processing upload specific files to the swift container that"},{"line_number":101,"context_line":"    # take precedence over the contents of the tarball."},{"line_number":102,"context_line":"    command \u003d [\u0027/bin/tar\u0027, \u0027--skip-old-files\u0027, \u0027-x\u0027, \u0027-f\u0027,"},{"line_number":103,"context_line":"               constants.TEMPLATES_TARBALL_NAME]"},{"line_number":104,"context_line":"    stdout, stderr \u003d processutils.execute(*command, cwd\u003dplan_cache_dir)"},{"line_number":105,"context_line":"    return plan_cache_dir"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_d77633a5","line":102,"updated":"2018-08-08 11:19:08.000000000","message":"You should probably add the -C param to untar in plan_cache_dir. IMO it\u0027s cleaner than what you do on line 104.\n\nAlso, same comment as https://review.openstack.org/#/c/581141/6/tripleoclient/v1/overcloud_deploy.py@347, please consider using the python tarfile module.","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"},{"author":{"_account_id":2011,"name":"Ian Main","email":"imain@redhat.com","username":"imain"},"change_message_id":"27c6af05519407a86c2fe70e0c5840375406fd15","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    # container that was created outside the tarball.  This lets existing"},{"line_number":100,"context_line":"    # template processing upload specific files to the swift container that"},{"line_number":101,"context_line":"    # take precedence over the contents of the tarball."},{"line_number":102,"context_line":"    command \u003d [\u0027/bin/tar\u0027, \u0027--skip-old-files\u0027, \u0027-x\u0027, \u0027-f\u0027,"},{"line_number":103,"context_line":"               constants.TEMPLATES_TARBALL_NAME]"},{"line_number":104,"context_line":"    stdout, stderr \u003d processutils.execute(*command, cwd\u003dplan_cache_dir)"},{"line_number":105,"context_line":"    return plan_cache_dir"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_b9002269","line":102,"in_reply_to":"3f79a3b5_d77633a5","updated":"2018-08-09 19:48:52.000000000","message":"Will do, thanks Martin.","commit_id":"f1d465bc273c963fed3930149af608d6dc52a1a8"}]}
