)]}'
{"nova/cells/scheduler.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"e354e807c012dfa481dad8152486a0c245dd6c93","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        num_instances \u003d len(instance_uuids)"},{"line_number":97,"context_line":"        for i, instance_uuid in enumerate(instance_uuids):"},{"line_number":98,"context_line":"            instance \u003d instance_obj.Instance()"},{"line_number":99,"context_line":"            instance.update(instance_values)"},{"line_number":100,"context_line":"            instance.uuid \u003d instance_uuid"},{"line_number":101,"context_line":"            instance \u003d self.compute_api.create_db_entry_for_new_instance("},{"line_number":102,"context_line":"                    ctxt,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2Fl%2B8%3D","line":99,"updated":"2013-07-26 22:20:17.000000000","message":"Heh, even though the cells gate doesn\u0027t work... I spotted something in its logs for this patch set while trying to work on getting it working.\n\nIt appears as tho instance_values has a list of security group names in it?!\n\nYou can search for this in the screen-n-cell log:\n\n ValueError: An object of class \u003cclass \u0027nova.objects.security_group.SecurityGroupList\u0027\u003e is required here\n2013-07-26 17:22:51.334 25117 TRACE nova.cells.scheduler","commit_id":"abfc214006c68a546574c932a03f5160de2bda6e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e13efb7b44aab0ec8d10f11e1545fb66c588d944","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        for i, instance_uuid in enumerate(instance_uuids):"},{"line_number":103,"context_line":"            instance \u003d instance_obj.Instance()"},{"line_number":104,"context_line":"            instance.update(instance_values)"},{"line_number":105,"context_line":"            instance.uuid \u003d instance_uuid"},{"line_number":106,"context_line":"            instance \u003d self.compute_api.create_db_entry_for_new_instance("},{"line_number":107,"context_line":"                    ctxt,"},{"line_number":108,"context_line":"                    instance_type,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FB6M%3D","line":105,"updated":"2013-08-08 06:50:28.000000000","message":"why was this not updated as part as the instance_values?","commit_id":"2bdf473869f06e9d490b0a69e557b933709c075b"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"84720a7c9f298280d13941e6b50cf61988c9a59d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        for i, instance_uuid in enumerate(instance_uuids):"},{"line_number":103,"context_line":"            instance \u003d instance_obj.Instance()"},{"line_number":104,"context_line":"            instance.update(instance_values)"},{"line_number":105,"context_line":"            instance.uuid \u003d instance_uuid"},{"line_number":106,"context_line":"            instance \u003d self.compute_api.create_db_entry_for_new_instance("},{"line_number":107,"context_line":"                    ctxt,"},{"line_number":108,"context_line":"                    instance_type,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FAOc%3D","line":105,"in_reply_to":"AAAAQn%2F%2FB6M%3D","updated":"2013-08-08 16:04:32.000000000","message":"He replaced line 98 (old line 98) with this line, instead.  Could go either way.","commit_id":"2bdf473869f06e9d490b0a69e557b933709c075b"}],"nova/compute/api.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"7921b1e956aa3029ba942bb405713598b810dbe0","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                            \u0027multi_instance_display_name_template.\u0027))"},{"line_number":534,"context_line":"            new_name \u003d instance[\u0027display_name\u0027]"},{"line_number":535,"context_line":"        instance.display_name \u003d new_name"},{"line_number":536,"context_line":"        if not instance.get(\u0027hostname\u0027):"},{"line_number":537,"context_line":"            instance.hostname \u003d utils.sanitize_hostname(new_name)"},{"line_number":538,"context_line":"        instance.save()"},{"line_number":539,"context_line":"        return instance"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FmXI%3D","line":536,"updated":"2013-07-26 19:43:54.000000000","message":"Wouldn\u0027t this try to do a lazy load if it\u0027s not set yet?","commit_id":"abfc214006c68a546574c932a03f5160de2bda6e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"7921b1e956aa3029ba942bb405713598b810dbe0","unresolved":false,"context_lines":[{"line_number":1019,"context_line":"        instance.task_state \u003d task_states.SCHEDULING"},{"line_number":1020,"context_line":"        info_cache \u003d instance_info_cache.InstanceInfoCache()"},{"line_number":1021,"context_line":"        info_cache.instance_uuid \u003d instance.uuid"},{"line_number":1022,"context_line":"        info_cache.network_info \u003d []"},{"line_number":1023,"context_line":"        instance.info_cache \u003d info_cache"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"        # Store image properties so we can use them later"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FmW4%3D","line":1022,"updated":"2013-07-26 19:43:54.000000000","message":"technically should should be:  network_model.NetworkInfo() instead of []","commit_id":"abfc214006c68a546574c932a03f5160de2bda6e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e13efb7b44aab0ec8d10f11e1545fb66c588d944","unresolved":false,"context_lines":[{"line_number":535,"context_line":"                            \u0027multi_instance_display_name_template.\u0027))"},{"line_number":536,"context_line":"            new_name \u003d instance[\u0027display_name\u0027]"},{"line_number":537,"context_line":"        instance.display_name \u003d new_name"},{"line_number":538,"context_line":"        if not instance.get(\u0027hostname\u0027, None):"},{"line_number":539,"context_line":"            instance.hostname \u003d utils.sanitize_hostname(new_name)"},{"line_number":540,"context_line":"        instance.save()"},{"line_number":541,"context_line":"        return instance"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FB6A%3D","line":538,"updated":"2013-08-08 06:50:28.000000000","message":"Why the None? This should be default of instance.get(\u0027hostname\u0027) if the \u0027hostname\u0027 is not found.","commit_id":"2bdf473869f06e9d490b0a69e557b933709c075b"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"711f1e24b715a0b56c1aff38d1d0f06bf84fdb67","unresolved":false,"context_lines":[{"line_number":535,"context_line":"                            \u0027multi_instance_display_name_template.\u0027))"},{"line_number":536,"context_line":"            new_name \u003d instance[\u0027display_name\u0027]"},{"line_number":537,"context_line":"        instance.display_name \u003d new_name"},{"line_number":538,"context_line":"        if not instance.get(\u0027hostname\u0027, None):"},{"line_number":539,"context_line":"            instance.hostname \u003d utils.sanitize_hostname(new_name)"},{"line_number":540,"context_line":"        instance.save()"},{"line_number":541,"context_line":"        return instance"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2B52k%3D","line":538,"in_reply_to":"AAAAQn%2F%2B6SM%3D","updated":"2013-08-10 12:49:02.000000000","message":"Either way, if that behavior is going to change, it should be in a separate patch","commit_id":"2bdf473869f06e9d490b0a69e557b933709c075b"},{"author":{"_account_id":6661,"name":"Burt Holzman","email":"holzman@gmail.com","username":"burt"},"change_message_id":"b6051a4e52775e43c8f8747ab3dac5664f219406","unresolved":false,"context_lines":[{"line_number":535,"context_line":"                            \u0027multi_instance_display_name_template.\u0027))"},{"line_number":536,"context_line":"            new_name \u003d instance[\u0027display_name\u0027]"},{"line_number":537,"context_line":"        instance.display_name \u003d new_name"},{"line_number":538,"context_line":"        if not instance.get(\u0027hostname\u0027, None):"},{"line_number":539,"context_line":"            instance.hostname \u003d utils.sanitize_hostname(new_name)"},{"line_number":540,"context_line":"        instance.save()"},{"line_number":541,"context_line":"        return instance"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2B6SM%3D","line":538,"in_reply_to":"AAAAQn%2F%2FAPI%3D","updated":"2013-08-10 02:02:35.000000000","message":"This seems to violate the principle of least surprise, I can see everyone making this mistake with objects.\n\nMaybe get should act like dict.get and there should be a different function to do these lazy gets?","commit_id":"2bdf473869f06e9d490b0a69e557b933709c075b"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"84720a7c9f298280d13941e6b50cf61988c9a59d","unresolved":false,"context_lines":[{"line_number":535,"context_line":"                            \u0027multi_instance_display_name_template.\u0027))"},{"line_number":536,"context_line":"            new_name \u003d instance[\u0027display_name\u0027]"},{"line_number":537,"context_line":"        instance.display_name \u003d new_name"},{"line_number":538,"context_line":"        if not instance.get(\u0027hostname\u0027, None):"},{"line_number":539,"context_line":"            instance.hostname \u003d utils.sanitize_hostname(new_name)"},{"line_number":540,"context_line":"        instance.save()"},{"line_number":541,"context_line":"        return instance"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FAPI%3D","line":538,"in_reply_to":"AAAAQn%2F%2FB6A%3D","updated":"2013-08-08 16:04:32.000000000","message":"That is true for dictionaries, but not true for objects.  In the object world, no default parameter will result in the object trying to pull in the attribute from the DB if it\u0027s not been set yet.  It\u0027s possible that \u0027hostname\u0027 is not set since we\u0027re creating a new object.. and querying from the DB doesn\u0027t make sense here, so the default of None is given.","commit_id":"2bdf473869f06e9d490b0a69e557b933709c075b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e13efb7b44aab0ec8d10f11e1545fb66c588d944","unresolved":false,"context_lines":[{"line_number":688,"context_line":"            \u0027availability_zone\u0027: availability_zone,"},{"line_number":689,"context_line":"            \u0027root_device_name\u0027: root_device_name,"},{"line_number":690,"context_line":"            \u0027progress\u0027: 0,"},{"line_number":691,"context_line":"            \u0027system_metadata\u0027: system_metadata}"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"        options_from_image \u003d self._inherit_properties_from_image("},{"line_number":694,"context_line":"                boot_meta, auto_disk_config)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FB58%3D","line":691,"updated":"2013-08-08 06:50:28.000000000","message":"should this be the same treatment as line 685?","commit_id":"2bdf473869f06e9d490b0a69e557b933709c075b"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"61ab814e5e6e7f9351d2f652dae8f0e35481ecf3","unresolved":false,"context_lines":[{"line_number":985,"context_line":"        \"\"\"Populate instance display_name and hostname.\"\"\""},{"line_number":986,"context_line":"        display_name \u003d instance.get(\u0027display_name\u0027)"},{"line_number":987,"context_line":"        if instance.obj_attr_is_set(\u0027hostname\u0027):"},{"line_number":988,"context_line":"            hostname \u003d instance.get(\u0027hostname\u0027)"},{"line_number":989,"context_line":"        else:"},{"line_number":990,"context_line":"            hostname \u003d None"},{"line_number":991,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FEDo%3D","line":988,"updated":"2013-08-07 18:14:04.000000000","message":"This could just be:  instance.hostname","commit_id":"2bdf473869f06e9d490b0a69e557b933709c075b"}],"nova/network/security_group/neutron_driver.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e13efb7b44aab0ec8d10f11e1545fb66c588d944","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        # Setting to emply list since we do not want to populate this field"},{"line_number":463,"context_line":"        # in the nova database if using the neutron driver"},{"line_number":464,"context_line":"        instance[\u0027security_groups\u0027] \u003d security_group.SecurityGroupList()"},{"line_number":465,"context_line":"        instance[\u0027security_groups\u0027].objects \u003d []"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FB5s%3D","line":465,"updated":"2013-08-08 06:50:28.000000000","message":"Would it not be worthwhile having security_group.SecurityGroupList() set the objects as []?","commit_id":"2bdf473869f06e9d490b0a69e557b933709c075b"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"84720a7c9f298280d13941e6b50cf61988c9a59d","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        # Setting to emply list since we do not want to populate this field"},{"line_number":463,"context_line":"        # in the nova database if using the neutron driver"},{"line_number":464,"context_line":"        instance[\u0027security_groups\u0027] \u003d security_group.SecurityGroupList()"},{"line_number":465,"context_line":"        instance[\u0027security_groups\u0027].objects \u003d []"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FAOM%3D","line":465,"in_reply_to":"AAAAQn%2F%2FB5s%3D","updated":"2013-08-08 16:04:32.000000000","message":"I was kinda thinking that too when I reviewed.","commit_id":"2bdf473869f06e9d490b0a69e557b933709c075b"}],"nova/objects/security_group.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e13efb7b44aab0ec8d10f11e1545fb66c588d944","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    attributes they would normally have, but provides a quick way to fill,"},{"line_number":103,"context_line":"    for example, an instance object during create."},{"line_number":104,"context_line":"    \"\"\""},{"line_number":105,"context_line":"    secgroups \u003d SecurityGroupList()"},{"line_number":106,"context_line":"    secgroups.objects \u003d []"},{"line_number":107,"context_line":"    for name in security_groups:"},{"line_number":108,"context_line":"        secgroup \u003d SecurityGroup()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FB5k%3D","line":105,"updated":"2013-08-08 06:50:28.000000000","message":"Same question as before - any reason why SecurityGroupList() should not set the objects as []?","commit_id":"2bdf473869f06e9d490b0a69e557b933709c075b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e13efb7b44aab0ec8d10f11e1545fb66c588d944","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    secgroups \u003d SecurityGroupList()"},{"line_number":106,"context_line":"    secgroups.objects \u003d []"},{"line_number":107,"context_line":"    for name in security_groups:"},{"line_number":108,"context_line":"        secgroup \u003d SecurityGroup()"},{"line_number":109,"context_line":"        secgroup.name \u003d name"},{"line_number":110,"context_line":"        secgroups.objects.append(secgroup)"},{"line_number":111,"context_line":"    return secgroups"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAQn%2F%2FB5g%3D","line":108,"updated":"2013-08-08 06:50:28.000000000","message":"Is there an option to pass the name in the creation of the Security group?","commit_id":"2bdf473869f06e9d490b0a69e557b933709c075b"}]}
