)]}'
{"openstackclient/image/v1/image.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f18e5a66833950303d59bd04cd66675021ab69d4","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        for attr in copy_attrs:"},{"line_number":178,"context_line":"            if attr in parsed_args:"},{"line_number":179,"context_line":"                val \u003d getattr(parsed_args, attr, None)"},{"line_number":180,"context_line":"                if val:"},{"line_number":181,"context_line":"                    kwargs[attr] \u003d val"},{"line_number":182,"context_line":"        # Handle exclusive booleans with care"},{"line_number":183,"context_line":"        if parsed_args.protected:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_ef779b00","line":180,"updated":"2014-05-28 22:34:01.000000000","message":"I don\u0027t think we need this conditional.\n\nworst case is kwargs[attr] \u003d None\n\nbest case is kwargs[attr] \u003d val","commit_id":"a59ca4030cd408374b729a9acb4211a8725e5311"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"3e05991d96121bdd8bcfc13701c5a85074c25906","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        for attr in copy_attrs:"},{"line_number":178,"context_line":"            if attr in parsed_args:"},{"line_number":179,"context_line":"                val \u003d getattr(parsed_args, attr, None)"},{"line_number":180,"context_line":"                if val:"},{"line_number":181,"context_line":"                    kwargs[attr] \u003d val"},{"line_number":182,"context_line":"        # Handle exclusive booleans with care"},{"line_number":183,"context_line":"        if parsed_args.protected:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_d04537b4","line":180,"in_reply_to":"3ae8d1ca_ef779b00","updated":"2014-06-09 16:51:24.000000000","message":"The correct case for val \u003d\u003d None is kwargs[attr] should not exist.  Existing with a value of None is not the same.","commit_id":"a59ca4030cd408374b729a9acb4211a8725e5311"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"d247ab401f5f3a50d12e5921bd241ff6cd3bb53a","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        if parsed_args.public:"},{"line_number":188,"context_line":"            kwargs[\u0027is_public\u0027] \u003d True"},{"line_number":189,"context_line":"        if parsed_args.private:"},{"line_number":190,"context_line":"            kwargs[\u0027is_public\u0027] \u003d False"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        if not parsed_args.location and not parsed_args.copy_from:"},{"line_number":193,"context_line":"            if parsed_args.volume:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_d347f375","line":190,"updated":"2014-05-22 17:06:23.000000000","message":"What is wrong with using dest\u003d\u0027is_public\u0027 and then add this to the copy_attrs?  You seem to be intentionally avoiding that.","commit_id":"a59ca4030cd408374b729a9acb4211a8725e5311"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"3e05991d96121bdd8bcfc13701c5a85074c25906","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        if parsed_args.public:"},{"line_number":188,"context_line":"            kwargs[\u0027is_public\u0027] \u003d True"},{"line_number":189,"context_line":"        if parsed_args.private:"},{"line_number":190,"context_line":"            kwargs[\u0027is_public\u0027] \u003d False"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        if not parsed_args.location and not parsed_args.copy_from:"},{"line_number":193,"context_line":"            if parsed_args.volume:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_70dc6375","line":190,"in_reply_to":"3ae8d1ca_cfd65fc3","updated":"2014-06-09 16:51:24.000000000","message":"This is specifically like this to avoid changing the existing values...  the attr is only set in kwargs if one of the options is present, otherwise kwargs[attr] does not exist.","commit_id":"a59ca4030cd408374b729a9acb4211a8725e5311"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f18e5a66833950303d59bd04cd66675021ab69d4","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        if parsed_args.public:"},{"line_number":188,"context_line":"            kwargs[\u0027is_public\u0027] \u003d True"},{"line_number":189,"context_line":"        if parsed_args.private:"},{"line_number":190,"context_line":"            kwargs[\u0027is_public\u0027] \u003d False"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        if not parsed_args.location and not parsed_args.copy_from:"},{"line_number":193,"context_line":"            if parsed_args.volume:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_cfd65fc3","line":190,"in_reply_to":"7adec928_d347f375","updated":"2014-05-28 22:34:01.000000000","message":"Alternatively:\n\n  kwargs[\u0027protected\u0027] \u003d True\n  if parsed_args.unprotected:\n    kwargs[\u0027protected\u0027] \u003d False\n\nsaves one line of code, and a conditional.\n\nrepeat for is_public","commit_id":"a59ca4030cd408374b729a9acb4211a8725e5311"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"d247ab401f5f3a50d12e5921bd241ff6cd3bb53a","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                )"},{"line_number":206,"context_line":"                info \u003d body[\u0027os-volume_upload_image\u0027]"},{"line_number":207,"context_line":"            elif parsed_args.file:"},{"line_number":208,"context_line":"                kwargs[\"data\"] \u003d open(parsed_args.file, \"rb\")"},{"line_number":209,"context_line":"            else:"},{"line_number":210,"context_line":"                # Read file from stdin"},{"line_number":211,"context_line":"                kwargs[\"data\"] \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_b3126760","line":208,"updated":"2014-05-22 17:06:23.000000000","message":"common.utils.read_blob_file_contents?","commit_id":"a59ca4030cd408374b729a9acb4211a8725e5311"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"3e05991d96121bdd8bcfc13701c5a85074c25906","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                )"},{"line_number":206,"context_line":"                info \u003d body[\u0027os-volume_upload_image\u0027]"},{"line_number":207,"context_line":"            elif parsed_args.file:"},{"line_number":208,"context_line":"                kwargs[\"data\"] \u003d open(parsed_args.file, \"rb\")"},{"line_number":209,"context_line":"            else:"},{"line_number":210,"context_line":"                # Read file from stdin"},{"line_number":211,"context_line":"                kwargs[\"data\"] \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_10307f55","line":208,"in_reply_to":"3ae8d1ca_0f720749","updated":"2014-06-09 16:51:24.000000000","message":"We are passing in an open file handle so glanceclient does chunked transfers.\n\ncommon.utils.read_blob_file_contents() does file.read().strip(), these are binary files.\n\nReading arbitrarily large files into memory is a potential DOS attack.","commit_id":"a59ca4030cd408374b729a9acb4211a8725e5311"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f18e5a66833950303d59bd04cd66675021ab69d4","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                )"},{"line_number":206,"context_line":"                info \u003d body[\u0027os-volume_upload_image\u0027]"},{"line_number":207,"context_line":"            elif parsed_args.file:"},{"line_number":208,"context_line":"                kwargs[\"data\"] \u003d open(parsed_args.file, \"rb\")"},{"line_number":209,"context_line":"            else:"},{"line_number":210,"context_line":"                # Read file from stdin"},{"line_number":211,"context_line":"                kwargs[\"data\"] \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_0f720749","line":208,"in_reply_to":"7adec928_b3126760","updated":"2014-05-28 22:34:01.000000000","message":"++","commit_id":"a59ca4030cd408374b729a9acb4211a8725e5311"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"9a40feb751f1f63714736434119b23bef755c114","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            metavar\u003d\"\u003cchecksum\u003e\","},{"line_number":132,"context_line":"            help\u003d\"Image hash used for verification\","},{"line_number":133,"context_line":"        )"},{"line_number":134,"context_line":"        protected_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":135,"context_line":"        protected_group.add_argument("},{"line_number":136,"context_line":"            \"--protected\","},{"line_number":137,"context_line":"            action\u003d\"store_true\","}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_27f29a9a","line":134,"updated":"2014-06-09 21:19:02.000000000","message":"dest\u003d\u0027protected\u0027","commit_id":"a0fee4af8a7f022341444a9a0783e94282f3f4c1"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"9a40feb751f1f63714736434119b23bef755c114","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            action\u003d\"store_true\","},{"line_number":143,"context_line":"            help\u003d\"Allow image to be deleted (default)\","},{"line_number":144,"context_line":"        )"},{"line_number":145,"context_line":"        public_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":146,"context_line":"        public_group.add_argument("},{"line_number":147,"context_line":"            \"--public\","},{"line_number":148,"context_line":"            action\u003d\"store_true\","}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_672bc2eb","line":145,"updated":"2014-06-09 21:19:02.000000000","message":"dest\u003d\u0027is_public\u0027","commit_id":"a0fee4af8a7f022341444a9a0783e94282f3f4c1"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"9a40feb751f1f63714736434119b23bef755c114","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        copy_attrs \u003d (\u0027name\u0027, \u0027id\u0027, \u0027store\u0027, \u0027container_format\u0027,"},{"line_number":174,"context_line":"                      \u0027disk_format\u0027, \u0027owner\u0027, \u0027size\u0027, \u0027min_disk\u0027, \u0027min_ram\u0027,"},{"line_number":175,"context_line":"                      \u0027localtion\u0027, \u0027copy_from\u0027, \u0027volume\u0027, \u0027force\u0027,"},{"line_number":176,"context_line":"                      \u0027checksum\u0027, \u0027properties\u0027)"},{"line_number":177,"context_line":"        for attr in copy_attrs:"},{"line_number":178,"context_line":"            if attr in parsed_args:"},{"line_number":179,"context_line":"                val \u003d getattr(parsed_args, attr, None)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_e73ef228","line":176,"updated":"2014-06-09 21:19:02.000000000","message":"\u0027protected\u0027, \u0027is_public\u0027","commit_id":"a0fee4af8a7f022341444a9a0783e94282f3f4c1"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"9a40feb751f1f63714736434119b23bef755c114","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        for attr in copy_attrs:"},{"line_number":178,"context_line":"            if attr in parsed_args:"},{"line_number":179,"context_line":"                val \u003d getattr(parsed_args, attr, None)"},{"line_number":180,"context_line":"                if val:"},{"line_number":181,"context_line":"                    # Only include a value in kwargs for attributes that are"},{"line_number":182,"context_line":"                    # actually present on the command line"},{"line_number":183,"context_line":"                    kwargs[attr] \u003d val"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_474406b7","line":180,"updated":"2014-06-09 21:19:02.000000000","message":"this should be\n\n    if val is not None:\n\nfor booleans to work.","commit_id":"a0fee4af8a7f022341444a9a0783e94282f3f4c1"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"9a40feb751f1f63714736434119b23bef755c114","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        # present on the command line.  These exclusive booleans are not"},{"line_number":187,"context_line":"        # a single value for the pair of options because the default must be"},{"line_number":188,"context_line":"        # to do nothing when no options are present as opposed to always"},{"line_number":189,"context_line":"        # setting a default."},{"line_number":190,"context_line":"        if parsed_args.protected:"},{"line_number":191,"context_line":"            kwargs[\u0027protected\u0027] \u003d True"},{"line_number":192,"context_line":"        if parsed_args.unprotected:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_e725120b","line":189,"updated":"2014-06-09 21:19:02.000000000","message":"Get rid of all this.","commit_id":"a0fee4af8a7f022341444a9a0783e94282f3f4c1"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"9a40feb751f1f63714736434119b23bef755c114","unresolved":false,"context_lines":[{"line_number":374,"context_line":"            type\u003dint,"},{"line_number":375,"context_line":"            help\u003d\"Minimum RAM size needed to boot image, in megabytes\","},{"line_number":376,"context_line":"        )"},{"line_number":377,"context_line":"        protected_group \u003d parser.add_mutually_exclusive_group()"},{"line_number":378,"context_line":"        protected_group.add_argument("},{"line_number":379,"context_line":"            \"--protected\","},{"line_number":380,"context_line":"            action\u003d\"store_true\","}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_e76c3239","line":377,"updated":"2014-06-09 21:19:02.000000000","message":"Same here.","commit_id":"a0fee4af8a7f022341444a9a0783e94282f3f4c1"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"9a40feb751f1f63714736434119b23bef755c114","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        for attr in copy_attrs:"},{"line_number":416,"context_line":"            if attr in parsed_args:"},{"line_number":417,"context_line":"                val \u003d getattr(parsed_args, attr, None)"},{"line_number":418,"context_line":"                if val:"},{"line_number":419,"context_line":"                    # Only include a value in kwargs for attributes that are"},{"line_number":420,"context_line":"                    # actually present on the command line"},{"line_number":421,"context_line":"                    kwargs[attr] \u003d val"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_a75a2a81","line":418,"updated":"2014-06-09 21:19:02.000000000","message":"Same here and copy_attrs","commit_id":"a0fee4af8a7f022341444a9a0783e94282f3f4c1"}]}
