)]}'
{"zun/api/controllers/v1/containers.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"9959ab91366f527f517645bbe0ccd00e12304aee","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        name \u003d name_gen.generate()"},{"line_number":273,"context_line":"        return name + \u0027-container\u0027"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    @base.Controller.api_version(\"1.1\", \"1.19\")"},{"line_number":276,"context_line":"    @pecan.expose(\u0027json\u0027)"},{"line_number":277,"context_line":"    @api_utils.enforce_content_types([\u0027application/json\u0027])"},{"line_number":278,"context_line":"    @exception.wrap_pecan_controller_exception"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_5aab2cd6","line":275,"range":{"start_line":275,"start_character":21,"end_line":275,"end_character":32},"updated":"2018-06-30 19:44:14.000000000","message":"NOTE: This is for maintaining the backward-compatibility (as a result, make the gate happy). In particular, this means in API version 1.19 or earlier, still take \u0027command\u0027 as string.","commit_id":"b03fbe6dfddea496bc156ee45c44f972d4ebd580"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"9959ab91366f527f517645bbe0ccd00e12304aee","unresolved":false,"context_lines":[{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        return self._do_post(run, **container_dict)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    @base.Controller.api_version(\"1.20\")  # noqa"},{"line_number":294,"context_line":"    @pecan.expose(\u0027json\u0027)"},{"line_number":295,"context_line":"    @api_utils.enforce_content_types([\u0027application/json\u0027])"},{"line_number":296,"context_line":"    @exception.wrap_pecan_controller_exception"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_1ab5b432","line":293,"range":{"start_line":293,"start_character":21,"end_line":293,"end_character":32},"updated":"2018-06-30 19:44:14.000000000","message":"NOTE: We starts the new API behavior (taking \u0027command\u0027 as list) starting from API version 1.20","commit_id":"b03fbe6dfddea496bc156ee45c44f972d4ebd580"}],"zun/api/controllers/v1/schemas/containers.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"9959ab91366f527f517645bbe0ccd00e12304aee","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \u0027additionalProperties\u0027: False"},{"line_number":47,"context_line":"}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"_container_properties \u003d copy.deepcopy(_legacy_container_properties)"},{"line_number":50,"context_line":"_container_properties[\u0027command\u0027] \u003d parameter_types.command_list"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"container_create \u003d {"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_3ab0b040","line":49,"range":{"start_line":49,"start_character":38,"end_line":49,"end_character":66},"updated":"2018-06-30 19:44:14.000000000","message":"_legacy_container_properties is the schema for API version 1.19 or earlier.","commit_id":"b03fbe6dfddea496bc156ee45c44f972d4ebd580"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"9959ab91366f527f517645bbe0ccd00e12304aee","unresolved":false,"context_lines":[{"line_number":47,"context_line":"}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"_container_properties \u003d copy.deepcopy(_legacy_container_properties)"},{"line_number":50,"context_line":"_container_properties[\u0027command\u0027] \u003d parameter_types.command_list"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"container_create \u003d {"},{"line_number":53,"context_line":"    \u0027type\u0027: \u0027object\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_da809c4c","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":21},"updated":"2018-06-30 19:44:14.000000000","message":"We update the schema for API version 1.20 or later.","commit_id":"b03fbe6dfddea496bc156ee45c44f972d4ebd580"}],"zun/api/controllers/v1/schemas/parameter_types.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"b9a1558490a1b865f3d3e4d85f745f1e145d58b1","unresolved":false,"context_lines":[{"line_number":78,"context_line":"}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"command \u003d {"},{"line_number":81,"context_line":"    \u0027type\u0027: [\u0027array\u0027, \u0027null\u0027]"},{"line_number":82,"context_line":"}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"auto_remove \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_0b517f30","line":81,"range":{"start_line":81,"start_character":14,"end_line":81,"end_character":19},"updated":"2018-06-23 19:29:10.000000000","message":"This is considered to be a backward-incompatible change. We would need to follow the API microversion guideline [1], which requires API version bump. Please feel free to ping me in IRC if you need help for that.\n\n[1] https://docs.openstack.org/zun/latest/contributor/api-microversion.html","commit_id":"9b3dec9eeae742901275cf6240b8108bd79beb24"}],"zun/api/controllers/versions.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"359224693259556c00a90dc21c9f7e0596f3244b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    * 1.16 - Modify restart_policy to capsule spec content"},{"line_number":52,"context_line":"    * 1.17 - Add support for detaching ports"},{"line_number":53,"context_line":"    * 1.18 - Modify the response of network list"},{"line_number":54,"context_line":"    * 1.20 - Convert type of \u0027command\u0027 from string to list"},{"line_number":55,"context_line":"\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"BASE_VER \u003d \u00271.1\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_66a6cec3","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":10},"updated":"2018-06-28 04:03:56.000000000","message":"1.19","commit_id":"e5c3d9324049a57d713857ee6f86d6871821e249"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"359224693259556c00a90dc21c9f7e0596f3244b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"BASE_VER \u003d \u00271.1\u0027"},{"line_number":58,"context_line":"CURRENT_MAX_VER \u003d \u00271.20\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class Version(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_86abea86","line":58,"range":{"start_line":58,"start_character":21,"end_line":58,"end_character":23},"updated":"2018-06-28 04:03:56.000000000","message":"1.19","commit_id":"e5c3d9324049a57d713857ee6f86d6871821e249"}],"zun/api/rest_api_version_history.rst":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"359224693259556c00a90dc21c9f7e0596f3244b","unresolved":false,"context_lines":[{"line_number":165,"context_line":"1.20"},{"line_number":166,"context_line":"----"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Convert type of \u0027command\u0027 from string to list"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_e6997e7a","line":168,"range":{"start_line":168,"start_character":0,"end_line":168,"end_character":7},"updated":"2018-06-28 04:03:56.000000000","message":"To align with the format above, put two spaces before \u0027Convert\u0027","commit_id":"e5c3d9324049a57d713857ee6f86d6871821e249"}],"zun/api/utils.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"9959ab91366f527f517645bbe0ccd00e12304aee","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def content_types_decorator(fn):"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        @functools.wraps(fn)"},{"line_number":101,"context_line":"        def content_types_enforcer(inst, *args, **kwargs):"},{"line_number":102,"context_line":"            _do_enforce_content_types(pecan.request, valid_content_types)"},{"line_number":103,"context_line":"            return fn(inst, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_fa831854","line":100,"range":{"start_line":100,"start_character":9,"end_line":100,"end_character":18},"updated":"2018-06-30 19:44:14.000000000","message":"Use @functools to maintain the original method name, which is for resolving an issue on using @api_version decorator.\n\nSee here for details: https://docs.python.org/2/library/functools.html","commit_id":"b03fbe6dfddea496bc156ee45c44f972d4ebd580"}],"zun/container/docker/driver.py":[{"author":{"_account_id":25695,"name":"Deepak Mourya","email":"deepakmoriya7@gmail.com","username":"deepak_mourya"},"change_message_id":"afbbee6139f3d7244a45bf8732bff028153945d9","unresolved":false,"context_lines":[{"line_number":639,"context_line":""},{"line_number":640,"context_line":"    def _populate_command(self, container, config):"},{"line_number":641,"context_line":"        command_list \u003d config.get(\u0027Cmd\u0027)"},{"line_number":642,"context_line":"        # command_str \u003d None"},{"line_number":643,"context_line":"        # if command_list:"},{"line_number":644,"context_line":"        # NOTE(hongbin): We convert the representation of the command"},{"line_number":645,"context_line":"        # from list to string. For example:"},{"line_number":646,"context_line":"        # * list: [\"nginx\", \"-g\", \"daemon off;\"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_afaf7c29","line":643,"range":{"start_line":642,"start_character":7,"end_line":643,"end_character":26},"updated":"2018-06-20 08:53:40.000000000","message":"It should remove from here.","commit_id":"9b3dec9eeae742901275cf6240b8108bd79beb24"},{"author":{"_account_id":25695,"name":"Deepak Mourya","email":"deepakmoriya7@gmail.com","username":"deepak_mourya"},"change_message_id":"afbbee6139f3d7244a45bf8732bff028153945d9","unresolved":false,"context_lines":[{"line_number":649,"context_line":"        # to avoid potential ambiguity (without quoting, the string"},{"line_number":650,"context_line":"        # representation will be \u0027nginx -g daemon off;\u0027 so we don\u0027t"},{"line_number":651,"context_line":"        # how the original command arguments were tokenized)."},{"line_number":652,"context_line":"        # command_str \u003d \u0027 \u0027.join(\u0027\"%s\"\u0027 % x for x in command_list)"},{"line_number":653,"context_line":"        container.command \u003d command_list"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"    def _populate_hostname_and_ports(self, container, config):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_2f612c12","line":652,"range":{"start_line":652,"start_character":7,"end_line":652,"end_character":66},"updated":"2018-06-20 08:53:40.000000000","message":"ditto","commit_id":"9b3dec9eeae742901275cf6240b8108bd79beb24"}],"zun/db/sqlalchemy/alembic/versions/3e80bbfd8da7_convert_type_of_command_from_string_to_.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"b9a1558490a1b865f3d3e4d85f745f1e145d58b1","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def upgrade():"},{"line_number":33,"context_line":"    op.alter_column(\u0027container\u0027, \u0027command\u0027, existing_type\u003dsa.text(\u0027\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_2b231bc0","line":33,"range":{"start_line":33,"start_character":7,"end_line":33,"end_character":19},"updated":"2018-06-23 19:29:10.000000000","message":"I got this error on running this migration script: http://paste.openstack.org/show/724169/ . Please check.","commit_id":"9b3dec9eeae742901275cf6240b8108bd79beb24"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"493fec96d80b90d2e13ea2647385a086cc27c73a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def upgrade():"},{"line_number":33,"context_line":"    op.alter_column(\u0027container\u0027, \u0027command\u0027, existing_type\u003dsa.text(\u0027\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_ab188b83","line":33,"range":{"start_line":33,"start_character":44,"end_line":33,"end_character":69},"updated":"2018-06-23 19:39:27.000000000","message":"It should be:\n\n  type_\u003dsa.Text()\n\nUse \u0027type_\u0027 instead of \u0027existing_type\u0027 because you are switching to a new type (Text), instead of processing the existing type. In addition, use sa.Text() instead.","commit_id":"9b3dec9eeae742901275cf6240b8108bd79beb24"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"9959ab91366f527f517645bbe0ccd00e12304aee","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                command \u003d shlex.split(row[1])"},{"line_number":50,"context_line":"                command \u003d json.dumps(command)"},{"line_number":51,"context_line":"                session.execute("},{"line_number":52,"context_line":"                    TABLE_MODEL.update().values("},{"line_number":53,"context_line":"                        command\u003dcommand).where("},{"line_number":54,"context_line":"                            TABLE_MODEL.c.id \u003d\u003d row[0]))"},{"line_number":55,"context_line":"    session.commit()"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_5a948c8c","line":52,"range":{"start_line":52,"start_character":32,"end_line":52,"end_character":38},"updated":"2018-06-30 19:44:14.000000000","message":"Here is for doing a data migration. Imagine that if users upgrades to a newer version of Zun, the column \u0027command\u0027 needs to be changed from string format to list format. This is what this method is doing: convert column \u0027command\u0027 from string to list.","commit_id":"b03fbe6dfddea496bc156ee45c44f972d4ebd580"}],"zun/db/sqlalchemy/models.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"8c09821fe9c51fc6e795bee3c1bd617cdfcc3d37","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    name \u003d Column(String(255))"},{"line_number":142,"context_line":"    image \u003d Column(String(255))"},{"line_number":143,"context_line":"    cpu \u003d Column(Float)"},{"line_number":144,"context_line":"    command \u003d Column(JSONEncodedList)"},{"line_number":145,"context_line":"    memory \u003d Column(String(255))"},{"line_number":146,"context_line":"    status \u003d Column(String(20))"},{"line_number":147,"context_line":"    status_reason \u003d Column(Text, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_42f7e75a","line":144,"range":{"start_line":144,"start_character":21,"end_line":144,"end_character":36},"updated":"2018-06-16 17:31:08.000000000","message":"Keep in mind that this change the database schema. We need a db migration script to change the type of \u0027command\u0027 column from string to text.\n\nHere explains how to do it: https://stackoverflow.com/questions/29069506/alembic-alter-column-type-with-using","commit_id":"d9f81bf4ffedd057b421f3a9f91e5f31441492bc"}],"zun/tests/unit/api/base.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"359224693259556c00a90dc21c9f7e0596f3244b","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"PATH_PREFIX \u003d \u0027/v1\u0027"},{"line_number":29,"context_line":"CURRENT_VERSION \u003d \"container 1.20\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class FunctionalTest(base.DbTestCase):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_a685c60c","line":29,"range":{"start_line":29,"start_character":31,"end_line":29,"end_character":33},"updated":"2018-06-28 04:03:56.000000000","message":"1.19","commit_id":"e5c3d9324049a57d713857ee6f86d6871821e249"}],"zun/tests/unit/objects/test_objects.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"359224693259556c00a90dc21c9f7e0596f3244b","unresolved":false,"context_lines":[{"line_number":344,"context_line":"# For more information on object version testing, read"},{"line_number":345,"context_line":"# https://docs.openstack.org/zun/latest/"},{"line_number":346,"context_line":"object_data \u003d {"},{"line_number":347,"context_line":"    \u0027Container\u0027: \u00271.32-5eac0a995f25329ca566fdddde45c759\u0027,"},{"line_number":348,"context_line":"    \u0027VolumeMapping\u0027: \u00271.1-50df6202f7846a136a91444c38eba841\u0027,"},{"line_number":349,"context_line":"    \u0027Image\u0027: \u00271.1-330e6205c80b99b59717e1cfc6a79935\u0027,"},{"line_number":350,"context_line":"    \u0027MyObj\u0027: \u00271.0-34c4b1aadefd177b13f9a2f894cc23cd\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_46763242","line":347,"range":{"start_line":347,"start_character":20,"end_line":347,"end_character":22},"updated":"2018-06-28 04:03:56.000000000","message":"The change of the hash means that we need to bump the version to 1.33 in Container object. See line #339 - #345","commit_id":"e5c3d9324049a57d713857ee6f86d6871821e249"}]}
