)]}'
{"zun/api/controllers/v1/containers.py":[{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"2e08bfc094587dfa20aa41f322ec36f2d19d5697","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                                         expand\u003dexpand, sort_key\u003dsort_key,"},{"line_number":261,"context_line":"                                         sort_dir\u003dsort_dir)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def _build_list_response(self, rpc_containers, limit, url\u003dNone,"},{"line_number":264,"context_line":"                             expand\u003dFalse, **kwargs):"},{"line_number":265,"context_line":"        containers \u003d []"},{"line_number":266,"context_line":"        for c in rpc_containers:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_3ad1a723","line":263,"range":{"start_line":263,"start_character":8,"end_line":263,"end_character":28},"updated":"2016-11-20 10:38:27.000000000","message":"This method looks same to me as convert_with_links. Any specific reason to change the name?","commit_id":"b8aeba31260ca5a88480b9495c63f7742ba0c55f"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"916f5dd92412bb31a989443f82a354419ec783a2","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                                         expand\u003dexpand, sort_key\u003dsort_key,"},{"line_number":261,"context_line":"                                         sort_dir\u003dsort_dir)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def _build_list_response(self, rpc_containers, limit, url\u003dNone,"},{"line_number":264,"context_line":"                             expand\u003dFalse, **kwargs):"},{"line_number":265,"context_line":"        containers \u003d []"},{"line_number":266,"context_line":"        for c in rpc_containers:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_7b4f9e33","line":263,"range":{"start_line":263,"start_character":8,"end_line":263,"end_character":28},"in_reply_to":"7a77a97e_3ad1a723","updated":"2016-11-20 20:52:20.000000000","message":"Done. Reverted this change.","commit_id":"b8aeba31260ca5a88480b9495c63f7742ba0c55f"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"2e08bfc094587dfa20aa41f322ec36f2d19d5697","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                                            container, kw.get(\u0027signal\u0027, None))"},{"line_number":452,"context_line":"        return self._build_show_response(container)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    def _build_show_response(self, rpc_container):"},{"line_number":455,"context_line":"        container \u003d Container.convert_with_links(rpc_container)"},{"line_number":456,"context_line":"        return container"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_1aadcb9a","line":454,"range":{"start_line":454,"start_character":8,"end_line":454,"end_character":28},"updated":"2016-11-20 10:38:27.000000000","message":"convert_with_links method will also work.","commit_id":"b8aeba31260ca5a88480b9495c63f7742ba0c55f"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"916f5dd92412bb31a989443f82a354419ec783a2","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                                            container, kw.get(\u0027signal\u0027, None))"},{"line_number":452,"context_line":"        return self._build_show_response(container)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    def _build_show_response(self, rpc_container):"},{"line_number":455,"context_line":"        container \u003d Container.convert_with_links(rpc_container)"},{"line_number":456,"context_line":"        return container"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_bb63f6af","line":454,"range":{"start_line":454,"start_character":8,"end_line":454,"end_character":28},"in_reply_to":"7a77a97e_1aadcb9a","updated":"2016-11-20 20:52:20.000000000","message":"Done","commit_id":"b8aeba31260ca5a88480b9495c63f7742ba0c55f"}],"zun/compute/manager.py":[{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"fa98dd2c93c7d131e1bd3b7b4119780aed98f79b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        container.task_state \u003d fields.TaskState.SANDBOX_CREATING"},{"line_number":71,"context_line":"        container.save()"},{"line_number":72,"context_line":"        try:"},{"line_number":73,"context_line":"            sandbox_id \u003d self.driver.create_sandbox(context, container)"},{"line_number":74,"context_line":"        except Exception as e:"},{"line_number":75,"context_line":"            LOG.exception(_LE(\"Unexpected exception: %s\"), six.text_type(e))"},{"line_number":76,"context_line":"            self._fail_container(container, six.text_type(e))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_d9e8a119","line":73,"updated":"2016-11-15 06:23:54.000000000","message":"You are not pulling the image, i think its necessary to pull the image kubernetes/pause before creating the sandbox, am i right?","commit_id":"8d0f99e7722acb78b269fb86365755f1b01356e1"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"f2017bfe938d4fef443bf0be489302c230166c9e","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        container.task_state \u003d fields.TaskState.SANDBOX_CREATING"},{"line_number":71,"context_line":"        container.save()"},{"line_number":72,"context_line":"        try:"},{"line_number":73,"context_line":"            sandbox_id \u003d self.driver.create_sandbox(context, container)"},{"line_number":74,"context_line":"        except Exception as e:"},{"line_number":75,"context_line":"            LOG.exception(_LE(\"Unexpected exception: %s\"), six.text_type(e))"},{"line_number":76,"context_line":"            self._fail_container(container, six.text_type(e))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_c116bcf0","line":73,"in_reply_to":"7a77a97e_d9e8a119","updated":"2016-11-15 23:01:15.000000000","message":"Done","commit_id":"8d0f99e7722acb78b269fb86365755f1b01356e1"},{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"74a9fc3174c154786fb7798ce92af7e09fbf0b44","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        container.save()"},{"line_number":105,"context_line":"        try:"},{"line_number":106,"context_line":"            container \u003d self.driver.create(container, sandbox_id, image)"},{"line_number":107,"context_line":"            container.addresses \u003d self._get_container_addresses(context,"},{"line_number":108,"context_line":"                                                                container)"},{"line_number":109,"context_line":"        except exception.DockerError as e:"},{"line_number":110,"context_line":"            LOG.error(_LE(\"Error occured while calling docker create API: %s\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_45a0f143","line":107,"updated":"2016-11-16 04:19:08.000000000","message":"I think IP address is assigned to a container once its started, wouldn\u0027t it be confusing having IP address in stopped state. Am i right? What do you think?","commit_id":"3d5c2ca5659c0bfdc91fdbf5e898d2070a383088"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"512fb563dbdd782d90387817d4a04b907b8455b7","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        container.save()"},{"line_number":105,"context_line":"        try:"},{"line_number":106,"context_line":"            container \u003d self.driver.create(container, sandbox_id, image)"},{"line_number":107,"context_line":"            container.addresses \u003d self._get_container_addresses(context,"},{"line_number":108,"context_line":"                                                                container)"},{"line_number":109,"context_line":"        except exception.DockerError as e:"},{"line_number":110,"context_line":"            LOG.error(_LE(\"Error occured while calling docker create API: %s\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_b99be571","line":107,"in_reply_to":"7a77a97e_1e0bdf7e","updated":"2016-11-21 15:24:49.000000000","message":"We can hide the IP address if the container is stopped though.","commit_id":"3d5c2ca5659c0bfdc91fdbf5e898d2070a383088"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"369c7d0ce3fe4d5815d0091302a20f05c9e7b8b8","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        container.save()"},{"line_number":105,"context_line":"        try:"},{"line_number":106,"context_line":"            container \u003d self.driver.create(container, sandbox_id, image)"},{"line_number":107,"context_line":"            container.addresses \u003d self._get_container_addresses(context,"},{"line_number":108,"context_line":"                                                                container)"},{"line_number":109,"context_line":"        except exception.DockerError as e:"},{"line_number":110,"context_line":"            LOG.error(_LE(\"Error occured while calling docker create API: %s\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_58764fd9","line":107,"in_reply_to":"7a77a97e_45a0f143","updated":"2016-11-21 14:34:39.000000000","message":"A container in \u0027Stopped\u0027 state still have IP address. That is because IP addresses are assigned to the sandbox container, which is always running whenever there is a container.","commit_id":"3d5c2ca5659c0bfdc91fdbf5e898d2070a383088"},{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"eedf92c8023dd42d93d056732bbd02e6e24d4712","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        container.save()"},{"line_number":105,"context_line":"        try:"},{"line_number":106,"context_line":"            container \u003d self.driver.create(container, sandbox_id, image)"},{"line_number":107,"context_line":"            container.addresses \u003d self._get_container_addresses(context,"},{"line_number":108,"context_line":"                                                                container)"},{"line_number":109,"context_line":"        except exception.DockerError as e:"},{"line_number":110,"context_line":"            LOG.error(_LE(\"Error occured while calling docker create API: %s\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_1e0bdf7e","line":107,"in_reply_to":"7a77a97e_58764fd9","updated":"2016-11-21 15:06:48.000000000","message":"@hongbin, thanks. I was thinking from the users perspective, i was thinking that user don\u0027t have any idea about sandbox, it\u0027s our internal implementation. I am not sure and may be wrong.","commit_id":"3d5c2ca5659c0bfdc91fdbf5e898d2070a383088"},{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"99ee9100148216e579506a5b909873d3f418141c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        container.save()"},{"line_number":105,"context_line":"        try:"},{"line_number":106,"context_line":"            container \u003d self.driver.create(container, sandbox_id, image)"},{"line_number":107,"context_line":"            container.addresses \u003d self._get_container_addresses(context,"},{"line_number":108,"context_line":"                                                                container)"},{"line_number":109,"context_line":"        except exception.DockerError as e:"},{"line_number":110,"context_line":"            LOG.error(_LE(\"Error occured while calling docker create API: %s\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_4b8114fb","line":107,"in_reply_to":"7a77a97e_b99be571","updated":"2016-11-21 15:43:44.000000000","message":"Thanks :) ,\nAgree, lets merge this patch.","commit_id":"3d5c2ca5659c0bfdc91fdbf5e898d2070a383088"},{"author":{"_account_id":12407,"name":"Shubham Kumar Sharma","email":"shubham.git@gmail.com","username":"shubham.git"},"change_message_id":"b1ff1de6493be165b37515a71d2be7ada839b0d5","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            with excutils.save_and_reraise_exception(reraise\u003dreraise):"},{"line_number":142,"context_line":"                LOG.exception(_LE(\"Unexpected exception: %s\"),"},{"line_number":143,"context_line":"                              six.text_type(e))"},{"line_number":144,"context_line":"                self._fail_container(container, six.text_type(e))"},{"line_number":145,"context_line":"            return"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def _do_container_start(self, context, container):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a74a57a_f2d0e655","line":144,"updated":"2016-11-24 07:47:16.000000000","message":"If we are at this line then we can safely assume that sandbox container for this container was started successfully. But here container creation has failed but respective sandbox container will still be in running state. Should we stop corresponding sandbox container?\nIf we do not do that then we will have sandbox containers piled up for each failed instance of container create .","commit_id":"b7698ffe3b8f9b1a74b80aaa74ebb216b687554c"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"d3898943ad4469a92afadc2c70930be328fcd865","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            with excutils.save_and_reraise_exception(reraise\u003dreraise):"},{"line_number":142,"context_line":"                LOG.exception(_LE(\"Unexpected exception: %s\"),"},{"line_number":143,"context_line":"                              six.text_type(e))"},{"line_number":144,"context_line":"                self._fail_container(container, six.text_type(e))"},{"line_number":145,"context_line":"            return"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def _do_container_start(self, context, container):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a74a57a_cbb96bcd","line":144,"in_reply_to":"5a74a57a_f2d0e655","updated":"2016-11-24 10:58:01.000000000","message":"Good point!","commit_id":"b7698ffe3b8f9b1a74b80aaa74ebb216b687554c"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"5e30811274b7d0a7bdf02588be823af5744b712c","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            with excutils.save_and_reraise_exception(reraise\u003dreraise):"},{"line_number":142,"context_line":"                LOG.exception(_LE(\"Unexpected exception: %s\"),"},{"line_number":143,"context_line":"                              six.text_type(e))"},{"line_number":144,"context_line":"                self._fail_container(container, six.text_type(e))"},{"line_number":145,"context_line":"            return"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def _do_container_start(self, context, container):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a74a57a_37ba3d6f","line":144,"in_reply_to":"5a74a57a_f2d0e655","updated":"2016-11-24 14:31:55.000000000","message":"Thanks for pointing it out. Created a bug for that: https://bugs.launchpad.net/zun/+bug/1644570","commit_id":"b7698ffe3b8f9b1a74b80aaa74ebb216b687554c"}],"zun/container/docker/driver.py":[{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"fa98dd2c93c7d131e1bd3b7b4119780aed98f79b","unresolved":false,"context_lines":[{"line_number":230,"context_line":"            container.meta[\u0027sandbox_id\u0027] \u003d id"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def get_sandbox_name(self, container):"},{"line_number":233,"context_line":"        return \u0027zun-\u0027 + container.name"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def get_addresses(self, context, container):"},{"line_number":236,"context_line":"        sandbox_id \u003d self.get_sandbox_id(container)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_99be29fe","line":233,"updated":"2016-11-15 06:23:54.000000000","message":"I Think for two containers wit same name, sandbox name would be same and sandbox creation will fail because you are passing \u0027name\u0027 to container create api for sandbox creation. Am i right?","commit_id":"8d0f99e7722acb78b269fb86365755f1b01356e1"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"f2017bfe938d4fef443bf0be489302c230166c9e","unresolved":false,"context_lines":[{"line_number":230,"context_line":"            container.meta[\u0027sandbox_id\u0027] \u003d id"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def get_sandbox_name(self, container):"},{"line_number":233,"context_line":"        return \u0027zun-\u0027 + container.name"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def get_addresses(self, context, container):"},{"line_number":236,"context_line":"        sandbox_id \u003d self.get_sandbox_id(container)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a77a97e_41b8ece5","line":233,"in_reply_to":"7a77a97e_99be29fe","updated":"2016-11-15 23:01:15.000000000","message":"Good catch. Switch to uuid to avoid the name collision.","commit_id":"8d0f99e7722acb78b269fb86365755f1b01356e1"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"2e08bfc094587dfa20aa41f322ec36f2d19d5697","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            docker.start(sandbox_id)"},{"line_number":213,"context_line":"            return sandbox_id"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def delete_sandbox(self, context, id):"},{"line_number":216,"context_line":"        with docker_utils.docker_client() as docker:"},{"line_number":217,"context_line":"            docker.remove_container(id, force\u003dTrue)"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_ba913749","line":215,"range":{"start_line":215,"start_character":38,"end_line":215,"end_character":40},"updated":"2016-11-20 10:38:27.000000000","message":"Can we change it to sandbox_id? `id` used here is python variable.","commit_id":"b8aeba31260ca5a88480b9495c63f7742ba0c55f"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"916f5dd92412bb31a989443f82a354419ec783a2","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            docker.start(sandbox_id)"},{"line_number":213,"context_line":"            return sandbox_id"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def delete_sandbox(self, context, id):"},{"line_number":216,"context_line":"        with docker_utils.docker_client() as docker:"},{"line_number":217,"context_line":"            docker.remove_container(id, force\u003dTrue)"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_fb59eefd","line":215,"range":{"start_line":215,"start_character":38,"end_line":215,"end_character":40},"in_reply_to":"7a77a97e_ba913749","updated":"2016-11-20 20:52:20.000000000","message":"Done","commit_id":"b8aeba31260ca5a88480b9495c63f7742ba0c55f"},{"author":{"_account_id":12407,"name":"Shubham Kumar Sharma","email":"shubham.git@gmail.com","username":"shubham.git"},"change_message_id":"b1ff1de6493be165b37515a71d2be7ada839b0d5","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            LOG.warning(_LW(\"Unexpected missing of sandbox_id\"))"},{"line_number":224,"context_line":"            return None"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def set_sandbox_id(self, container, id):"},{"line_number":227,"context_line":"        if container.meta is None:"},{"line_number":228,"context_line":"            container.meta \u003d {\u0027sandbox_id\u0027: id}"},{"line_number":229,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a74a57a_f718d886","line":226,"updated":"2016-11-24 07:47:16.000000000","message":"Will it be better to use \"sandbox_id\" instead of \"id\" as \"id\" is the name of in-built function ?","commit_id":"b7698ffe3b8f9b1a74b80aaa74ebb216b687554c"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"f2d28003ec7a5dad1b80bb8ea2a6d318f58de76b","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            LOG.warning(_LW(\"Unexpected missing of sandbox_id\"))"},{"line_number":224,"context_line":"            return None"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def set_sandbox_id(self, container, id):"},{"line_number":227,"context_line":"        if container.meta is None:"},{"line_number":228,"context_line":"            container.meta \u003d {\u0027sandbox_id\u0027: id}"},{"line_number":229,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a74a57a_59fe0839","line":226,"in_reply_to":"5a74a57a_577899c4","updated":"2016-11-24 16:24:57.000000000","message":"https://review.openstack.org/#/c/402129/","commit_id":"b7698ffe3b8f9b1a74b80aaa74ebb216b687554c"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"5e30811274b7d0a7bdf02588be823af5744b712c","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            LOG.warning(_LW(\"Unexpected missing of sandbox_id\"))"},{"line_number":224,"context_line":"            return None"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def set_sandbox_id(self, container, id):"},{"line_number":227,"context_line":"        if container.meta is None:"},{"line_number":228,"context_line":"            container.meta \u003d {\u0027sandbox_id\u0027: id}"},{"line_number":229,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a74a57a_577899c4","line":226,"in_reply_to":"5a74a57a_f718d886","updated":"2016-11-24 14:31:55.000000000","message":"Will fix it in next patch.","commit_id":"b7698ffe3b8f9b1a74b80aaa74ebb216b687554c"}],"zun/db/sqlalchemy/alembic/versions/b1bb4aea1f99_add_addresses_to_container.py":[{"author":{"_account_id":16277,"name":"Pradeep Kumar Singh","email":"ps4openstack@gmail.com","username":"pradeep_singh"},"change_message_id":"74a9fc3174c154786fb7798ce92af7e09fbf0b44","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from zun.db.sqlalchemy import models"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    op.add_column(\u0027container\u0027,"},{"line_number":35,"context_line":"                  sa.Column(\u0027addresses\u0027, models.JSONEncodedDict(),"},{"line_number":36,"context_line":"                            nullable\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_c5308104","line":33,"updated":"2016-11-16 04:19:08.000000000","message":"Could you please suggest why two scripts to add the columns? asking just for curiosity.","commit_id":"3d5c2ca5659c0bfdc91fdbf5e898d2070a383088"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"369c7d0ce3fe4d5815d0091302a20f05c9e7b8b8","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from zun.db.sqlalchemy import models"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    op.add_column(\u0027container\u0027,"},{"line_number":35,"context_line":"                  sa.Column(\u0027addresses\u0027, models.JSONEncodedDict(),"},{"line_number":36,"context_line":"                            nullable\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_b33064ea","line":33,"in_reply_to":"7a77a97e_c5308104","updated":"2016-11-21 14:34:39.000000000","message":"Done. Combine them into one.","commit_id":"3d5c2ca5659c0bfdc91fdbf5e898d2070a383088"}]}
