)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f7dcea7e337d75cf2a835a1f365d0f3578d0d444","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As we want to provide a per-compute allocation ratio for both CPU and RAM,"},{"line_number":10,"context_line":"we need to persist them to the compute_nodes table and add them to the"},{"line_number":11,"context_line":"ComputeNode object."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I83074644c35e151927c23f6d7d50c9dc32e9bd2d"},{"line_number":14,"context_line":"Partially-Implements: blueprint allocation-ratio-to-resource-tracker"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa1b9901_727f8e66","line":11,"updated":"2015-08-25 09:11:31.000000000","message":"I think we need to describe here why we don\u0027t want this to go in the existing Text fields.\n\nI guess these ratios change much less frequently, and that might be a good reason, but then I wonder if we want a separate Text field for stuff that doesn\u0027t change very often.","commit_id":"ffa98236de9c90c5c245d005e16ebe3656c5e1e9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a44f98129d9d878e071d514cbabbc8e65386e842","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As we want to provide a per-compute allocation ratio for both CPU and RAM,"},{"line_number":10,"context_line":"we need to persist them to the compute_nodes table and add them to the"},{"line_number":11,"context_line":"ComputeNode object."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I83074644c35e151927c23f6d7d50c9dc32e9bd2d"},{"line_number":14,"context_line":"Partially-Implements: blueprint allocation-ratio-to-resource-tracker"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa1b9901_7388ed22","line":11,"in_reply_to":"fa1b9901_727f8e66","updated":"2015-08-25 11:30:38.000000000","message":"So I thought about that one after discussing with Dan last week. There are 2 possibilities for leaving the scheduler knowing the ratios and update the related HostState :\n- either using the ComputeNode table for providing the new fields, here that change\n- or, do like we did for Aggregates and Instances infos, and create an RPC API so the RT would call that RPC API anytime it\u0027s needed. That said, I think that alternative is more bad for me : first, it adds an API method (and consequently adds another fanout) for something really quite stable - and gosh, I hate fanouts (that\u0027s not because I wrote some that I like those, I definitely would prefer a distributed HostState rather than fanouts). Secondly, we could get some race conditions when starting the scheduler where it would not know the allocation ratios and would have to call the computes, which is a layer isolation violation to me.","commit_id":"ffa98236de9c90c5c245d005e16ebe3656c5e1e9"}],"nova/db/sqlalchemy/migrate_repo/versions/300_add_cpu_and_ram_ratios_for_compute_nodes.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8f1cf11dfa9de36714e02eb8323a32ae6310db79","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    cn \u003d Table(\u0027compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":25,"context_line":"    shadow_cn \u003d Table(\u0027shadow_compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float))"},{"line_number":27,"context_line":"    cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float))"},{"line_number":28,"context_line":"    shadow_cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float))"},{"line_number":29,"context_line":"    shadow_cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float))"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_27e53da3","line":27,"updated":"2015-08-25 16:28:12.000000000","message":"I assume these are nullable if not otherwise specified, right?\n\nIt\u0027s much more clear if we mark them explicitly as nullable or not, IMHO, both here and the model.\n\nSo, if these are nullable then all existing compute nodes have no value. I assume we should default them to the config value in the object? /me looks","commit_id":"12667465cabc45f0578d86270245eefd03d7bcbe"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"92936ffe45f2b2053612bff7a5cf42a877a8edbb","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    cn \u003d Table(\u0027compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":25,"context_line":"    shadow_cn \u003d Table(\u0027shadow_compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float, nullable\u003dTrue))"},{"line_number":27,"context_line":"    cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float, nullable\u003dTrue))"},{"line_number":28,"context_line":"    shadow_cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float))"},{"line_number":29,"context_line":"    shadow_cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float))"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_0854ca50","line":27,"updated":"2015-08-28 20:54:55.000000000","message":"So, here\u0027s another thought on this...\n\nThis code here is almost certainly going to be executed on the controller nodes. Why not just make the default values for the database columns be the value of the CONF.xxx_allocation_ratio on the controller here?\n\nThat way, the default would be the current behaviour of the scheduler\u0027s CONF value, and then on startup of the compute node, don\u0027t even bother reading the CONF value at all. Just read it from the DB, and then allow the admin to change the allocation ratios via the REST API, and deprecate the CONF option for this entirely over the next cycle.","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"aff6457e3b74f41b84c417ed66eb51501028c029","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    cn \u003d Table(\u0027compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":25,"context_line":"    shadow_cn \u003d Table(\u0027shadow_compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float, nullable\u003dTrue))"},{"line_number":27,"context_line":"    cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float, nullable\u003dTrue))"},{"line_number":28,"context_line":"    shadow_cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float))"},{"line_number":29,"context_line":"    shadow_cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float))"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_0bafe4e2","line":27,"in_reply_to":"da20952f_0854ca50","updated":"2015-08-28 21:05:05.000000000","message":"Several reasons, but the few off the top of my head:\n\n1. We don\u0027t ever want the schema to depend on the config. That would mean two people on the same version of the schema will (likely) have different actual definitions. We\u0027ve scolded Neutron for that, and have undone similar things in the past in nova (there was an oslo.messaging blocker on this for a long time -- yes really).\n\n2. We can\u0027t ensure that the migrations will be run from a machine with this configured the way they have it in their cluster. So, we\u0027d likely default the values to something other than what they have set, if it\u0027s set.\n\n3. If they were to run the migrations and then change the config before they roll out all their compute nodes, they\u0027ll be confused about why some random older value is being used.\n\nOn the second point, changing via the API is not in scope of this change, but setting the value per-compute in the config is. If you have 10k compute nodes, having to make 10k (or a bunch of large) REST calls to set the values seems less than ideal. The config is for rarely-changed values, and this fits that bill I think. We\u0027re storing them in the database so they can be set per-compute, but I don\u0027t think that means it\u0027s not a config option. Arguing about the appropriateness aside, we won\u0027t land this blueprint in liberty if we have to go the API route. If that\u0027s something people want, we could do it later, but I\u0027ve seen nobody asking for that...","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"26e8b1dc4f33db40e1f646f740bc5fe55a988554","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    cn \u003d Table(\u0027compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":25,"context_line":"    shadow_cn \u003d Table(\u0027shadow_compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float, nullable\u003dTrue))"},{"line_number":27,"context_line":"    cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float, nullable\u003dTrue))"},{"line_number":28,"context_line":"    shadow_cn.create_column(Column(\u0027ram_allocation_ratio\u0027, Float))"},{"line_number":29,"context_line":"    shadow_cn.create_column(Column(\u0027cpu_allocation_ratio\u0027, Float))"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_ad27c3c8","line":27,"in_reply_to":"da20952f_0bafe4e2","updated":"2015-08-31 08:12:25.000000000","message":"Jay, I\u0027m very against using CONF flags for defaulting DB values exactly for the same reason that Dan said.\n\nAlso, adding an API resource just for modifying allocation ratios does sound overkill, since it\u0027s already possible to do that using CONF options.\n\nThe 0.0 hack is just a temporary modification for Liberty allowing operators to defer their choices *after* the upgrade is done - it will be removed for Mitaka (I can even drop a change now and mark it as DNM so that we\u0027re sure to land it only after the branch is done.","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"}],"nova/db/sqlalchemy/models.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f1d70e9c7449aa851c4cac4ea44a19f39aad59c4","unresolved":false,"context_lines":[{"line_number":166,"context_line":"    extra_resources \u003d Column(Text)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    # json-encode string containing compute node statistics"},{"line_number":169,"context_line":"    stats \u003d Column(Text, default\u003d\u0027{}\u0027)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    # json-encoded dict that contains NUMA topology as generated by"},{"line_number":172,"context_line":"    # objects.NUMATopoloogy._to_json()"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_4f3bc3eb","line":169,"updated":"2015-08-25 09:08:28.000000000","message":"we could just add these in here, I think.\n\nany reason you don\u0027t?\n\nI am just thinking about this:\nhttp://specs.openstack.org/openstack/nova-specs/specs/liberty/approved/allocation-ratio-to-resource-tracker.html#data-model-impact","commit_id":"ffa98236de9c90c5c245d005e16ebe3656c5e1e9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a44f98129d9d878e071d514cbabbc8e65386e842","unresolved":false,"context_lines":[{"line_number":166,"context_line":"    extra_resources \u003d Column(Text)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    # json-encode string containing compute node statistics"},{"line_number":169,"context_line":"    stats \u003d Column(Text, default\u003d\u0027{}\u0027)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    # json-encoded dict that contains NUMA topology as generated by"},{"line_number":172,"context_line":"    # objects.NUMATopoloogy._to_json()"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_5347e976","line":169,"in_reply_to":"fa1b9901_4f3bc3eb","updated":"2015-08-25 11:30:38.000000000","message":"Oh, I misunderstood your previous comment, but I\u0027m leaving my answer to make sure it understands why we still need to update the ComputeNode object.\n\nSo, here, you made a really good point about possibly using the stats field. That said, I\u0027m a little worried by that very unconstrained field (free JSON form) which is really errorprone. For example, Ironic has a totally different string for that field because it uses that field totally differently from what the vanilla Scheduler uses.\nEg. https://github.com/openstack/nova/blob/master/nova/virt/ironic/driver.py#L335\n(in the vanilla scheduler, stats are instead a JSON string for getting the Stats class)\n\nSo, adding 2 keys (ram and cpu ratios) would totally be okay if we were at least having a DictOfStrings or rather a clear Stats NovaObject but unfortunately this is not the case :/\n\nLast point, I apologize because I missed to update the spec mentioning the data impact when I rewrote the spec. I could write a Depends-On change based on that specific change so if we agree with adding 2 new fields, it would update the spec as well.","commit_id":"ffa98236de9c90c5c245d005e16ebe3656c5e1e9"}],"nova/objects/compute_node.py":[{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"ca9b4d95be15212e6b04400d4ab65913dd16cc3b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":88,"context_line":"        super(ComputeNode, self).obj_make_compatible(primitive, target_version)"},{"line_number":89,"context_line":"        target_version \u003d utils.convert_version_to_tuple(target_version)"},{"line_number":90,"context_line":"        if target_version \u003c (1, 7):"},{"line_number":91,"context_line":"            if \u0027ram_allocation_ratio\u0027 in primitive:"},{"line_number":92,"context_line":"                del primitive[\u0027ram_allocation_ratio\u0027]"},{"line_number":93,"context_line":"            if \u0027cpu_allocation_ratio\u0027 in primitive:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_a31a44c4","line":90,"updated":"2015-08-21 08:54:37.000000000","message":"why 1.7? maybe here should be 1.14?","commit_id":"a170e04207e21982a83a5e8852abf9bb568efa4a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dc859665f586d16de5bd88833236742fdac09900","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":88,"context_line":"        super(ComputeNode, self).obj_make_compatible(primitive, target_version)"},{"line_number":89,"context_line":"        target_version \u003d utils.convert_version_to_tuple(target_version)"},{"line_number":90,"context_line":"        if target_version \u003c (1, 7):"},{"line_number":91,"context_line":"            if \u0027ram_allocation_ratio\u0027 in primitive:"},{"line_number":92,"context_line":"                del primitive[\u0027ram_allocation_ratio\u0027]"},{"line_number":93,"context_line":"            if \u0027cpu_allocation_ratio\u0027 in primitive:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_c30cfc3d","line":90,"in_reply_to":"fa1b9901_a31a44c4","updated":"2015-08-21 16:33:45.000000000","message":"*facepalm* here is what happens when you\u0027re pretty lazily copying and paste","commit_id":"a170e04207e21982a83a5e8852abf9bb568efa4a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8f1cf11dfa9de36714e02eb8323a32ae6310db79","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        \u0027pci_device_pools\u0027: fields.ObjectField(\u0027PciDevicePoolList\u0027,"},{"line_number":77,"context_line":"                                               nullable\u003dTrue),"},{"line_number":78,"context_line":"        \u0027cpu_allocation_ratio\u0027: fields.FloatField(nullable\u003dTrue),"},{"line_number":79,"context_line":"        \u0027ram_allocation_ratio\u0027: fields.FloatField(nullable\u003dTrue),"},{"line_number":80,"context_line":"        }"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    obj_relationships \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_a77e2dad","line":79,"updated":"2015-08-25 16:28:12.000000000","message":"So these will be \u003dNone for everything as soon as we roll past this. Does it not make sense to default these to the values set in the local service\u0027s config when we load them if they\u0027re unset? Meaning, long-term do we want these to be nullable or are they just nullable because we\u0027re adding a thing to the DB?\n\nIf we don\u0027t want to have to always check to see if they\u0027re None, we might as well initialize these during load (if they\u0027re None in the DB) to the current config and then let the compute update that later once it\u0027s new enough to do so, right?","commit_id":"12667465cabc45f0578d86270245eefd03d7bcbe"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"935982de8b9d1175507328c8ac3cae6c0edaec47","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            # we break compatibilility with old Kilo computes"},{"line_number":168,"context_line":"            if key \u003d\u003d \u0027cpu_allocation_ratio\u0027 or key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":169,"context_line":"                if value is None:"},{"line_number":170,"context_line":"                    value \u003d getattr(CONF, key)"},{"line_number":171,"context_line":"            compute[key] \u003d value"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        stats \u003d db_compute[\u0027stats\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_b3e6f8e6","line":170,"updated":"2015-08-26 17:29:39.000000000","message":"So this assumes that the value was present in the CONF of compute nodes which totally does not have to be the case as they were not at all used on compute nodes.\n\nIMHO this is in no way backwards compatible.\n\nA backwards compatible way would be to have a way to still honour the old stuff during a deprecation cycle.","commit_id":"0869873e9a440358ffc6afcd7be1374f18b4df11"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"8425b07dd36d026b4aec2f9f07672b13ea16883e","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            # we break compatibilility with old Kilo computes"},{"line_number":168,"context_line":"            if key \u003d\u003d \u0027cpu_allocation_ratio\u0027 or key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":169,"context_line":"                if value is None:"},{"line_number":170,"context_line":"                    value \u003d getattr(CONF, key)"},{"line_number":171,"context_line":"            compute[key] \u003d value"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        stats \u003d db_compute[\u0027stats\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_72358c44","line":170,"in_reply_to":"da20952f_926869f7","updated":"2015-08-27 12:58:51.000000000","message":"So turns out this does run in the context of the scheduler, so we can actually hide defaulting the config value in here, which is nice.","commit_id":"0869873e9a440358ffc6afcd7be1374f18b4df11"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"57b4245dfa7542f04267c83155b19184e573fff4","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            # we break compatibilility with old Kilo computes"},{"line_number":168,"context_line":"            if key \u003d\u003d \u0027cpu_allocation_ratio\u0027 or key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":169,"context_line":"                if value is None:"},{"line_number":170,"context_line":"                    value \u003d getattr(CONF, key)"},{"line_number":171,"context_line":"            compute[key] \u003d value"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        stats \u003d db_compute[\u0027stats\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_e77101e2","line":170,"in_reply_to":"da20952f_b3e6f8e6","updated":"2015-08-26 21:14:27.000000000","message":"That has been properly identified in the Release Notes here :\nhttps://wiki.openstack.org/wiki/ReleaseNotes/Liberty#Upgrade_Notes\n\nTo be clear, all the computes can set their own stuff provided they\u0027re Liberty, if not it\u0027s defaulted to the scheduler\u0027s nova.conf as it is already.","commit_id":"0869873e9a440358ffc6afcd7be1374f18b4df11"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"8f377b13259931ecb31bd73a14b5308a15fb0120","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            # we break compatibilility with old Kilo computes"},{"line_number":168,"context_line":"            if key \u003d\u003d \u0027cpu_allocation_ratio\u0027 or key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":169,"context_line":"                if value is None:"},{"line_number":170,"context_line":"                    value \u003d getattr(CONF, key)"},{"line_number":171,"context_line":"            compute[key] \u003d value"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        stats \u003d db_compute[\u0027stats\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_926869f7","line":170,"in_reply_to":"da20952f_e77101e2","updated":"2015-08-27 10:28:04.000000000","message":"So I think this would default to the config value in nova-conductor?\n\nThis all seems a little confused, maybe lets go back to the model having None, when the compute node is not reporting the details, to help with the transition.\n\nMaybe we change the default, so we can tell more easily when the config has been set on the compute nodes?\n\nNot really sure the best way forward, but this does feel like we our violating our upgrade rules here.","commit_id":"0869873e9a440358ffc6afcd7be1374f18b4df11"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"84eff6e338066c8dc6d33df69f1153d22477e5b6","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            # restored for both cpu (16.0) and ram (1.5) allocation ratios."},{"line_number":171,"context_line":"            # TODO(sbauza): Remove that in the next major version bump where"},{"line_number":172,"context_line":"            # we break compatibilility with old Kilo computes"},{"line_number":173,"context_line":"            if key \u003d\u003d \u0027cpu_allocation_ratio\u0027 or key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":174,"context_line":"                if value \u003d\u003d 0.0:"},{"line_number":175,"context_line":"                    # Operator has not yet provided a new value for that ratio"},{"line_number":176,"context_line":"                    # on the compute node"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_299c3d5c","line":173,"updated":"2015-08-28 17:01:54.000000000","message":"nit: could use a simpler form\n\n    if key in (\u0027cpu_allocation_ratio\u0027, \u0027ram_allocation_ratio\u0027):","commit_id":"e4a2eeffc4e1c9ea1a0ee250c0705b840d25142e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2a31d400a515f85ba2a963c669ed083e0e4c6eff","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                if value is None:"},{"line_number":179,"context_line":"                    # ResourceTracker is not updating the value (old node)"},{"line_number":180,"context_line":"                    # or the compute node is updated but the default value has"},{"line_number":181,"context_line":"                    # not been changed"},{"line_number":182,"context_line":"                    value \u003d getattr(CONF, key)"},{"line_number":183,"context_line":"                    if value \u003d\u003d 0.0 and key \u003d\u003d \u0027cpu_allocation_ratio\u0027:"},{"line_number":184,"context_line":"                        # It\u0027s not specified either on the controller"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_36cfff57","line":181,"updated":"2015-08-27 15:29:46.000000000","message":"Nit: might be worth adding a note we expect this to run on the scheduler node.","commit_id":"e4a2eeffc4e1c9ea1a0ee250c0705b840d25142e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3595c4fd6f63cd322459cd5f422fcfc5957c4b9","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            # the next release (Mitaka) where the opt default values will be"},{"line_number":170,"context_line":"            # restored for both cpu (16.0) and ram (1.5) allocation ratios."},{"line_number":171,"context_line":"            # TODO(sbauza): Remove that in the next major version bump where"},{"line_number":172,"context_line":"            # we break compatibilility with old Kilo computes"},{"line_number":173,"context_line":"            if key \u003d\u003d \u0027cpu_allocation_ratio\u0027 or key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":174,"context_line":"                if value \u003d\u003d 0.0:"},{"line_number":175,"context_line":"                    # Operator has not yet provided a new value for that ratio"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_4f33b114","line":172,"updated":"2015-08-28 18:03:00.000000000","message":"I don\u0027t understand why we don\u0027t just keep the value None here. Why would value be set to 0.0 at all?","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"04d872e2046b796413244a62e89e0f6799904b9f","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            # the next release (Mitaka) where the opt default values will be"},{"line_number":170,"context_line":"            # restored for both cpu (16.0) and ram (1.5) allocation ratios."},{"line_number":171,"context_line":"            # TODO(sbauza): Remove that in the next major version bump where"},{"line_number":172,"context_line":"            # we break compatibilility with old Kilo computes"},{"line_number":173,"context_line":"            if key \u003d\u003d \u0027cpu_allocation_ratio\u0027 or key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":174,"context_line":"                if value \u003d\u003d 0.0:"},{"line_number":175,"context_line":"                    # Operator has not yet provided a new value for that ratio"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_5d65ab1b","line":172,"in_reply_to":"da20952f_12e642b0","updated":"2015-08-28 18:36:56.000000000","message":"What about the situation where a deployer has set cpu_allocation_ratio in the nova.conf of their compute nodes, thinking (incorrectly) that it had an effect on resource tracking? I don\u0027t understand why you think this code here won\u0027t be run on new compute nodes. Seems to me that it definitely WILL be run on new compute nodes, and when it does, the local nova.conf value for cpu_allocation_ratio will initially be None (coming back from the database from the RT\u0027s call to ComputeNode.get_by_host_and_node()). And therefore the compute node will slide into the block of code from 178 through 188, and the value will be the local compute node\u0027s nova.conf option value...","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9459db751964b5eae81a24670e79f7489ad09f01","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            # the next release (Mitaka) where the opt default values will be"},{"line_number":170,"context_line":"            # restored for both cpu (16.0) and ram (1.5) allocation ratios."},{"line_number":171,"context_line":"            # TODO(sbauza): Remove that in the next major version bump where"},{"line_number":172,"context_line":"            # we break compatibilility with old Kilo computes"},{"line_number":173,"context_line":"            if key \u003d\u003d \u0027cpu_allocation_ratio\u0027 or key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":174,"context_line":"                if value \u003d\u003d 0.0:"},{"line_number":175,"context_line":"                    # Operator has not yet provided a new value for that ratio"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_b2ed16b9","line":172,"in_reply_to":"da20952f_4f33b114","updated":"2015-08-28 18:11:59.000000000","message":"Because we need an indication of whether the value is unset or not. Since the config can\u0027t be null, we are using 0.0 as the sentinel. We could make it nullable, but we want to revert this change in mitaka so going back to non-nullable would be hard.\n\nThe point of this dance is to avoid breaking things during the transition from honoring this on the scheduler nodes to honoring it on the compute nodes (where the value may not have been set, and thus the default of 16/1.5 might be wrong).","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"56e63ee5db15343c4c57431d3a9188d21761774e","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            # the next release (Mitaka) where the opt default values will be"},{"line_number":170,"context_line":"            # restored for both cpu (16.0) and ram (1.5) allocation ratios."},{"line_number":171,"context_line":"            # TODO(sbauza): Remove that in the next major version bump where"},{"line_number":172,"context_line":"            # we break compatibilility with old Kilo computes"},{"line_number":173,"context_line":"            if key \u003d\u003d \u0027cpu_allocation_ratio\u0027 or key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":174,"context_line":"                if value \u003d\u003d 0.0:"},{"line_number":175,"context_line":"                    # Operator has not yet provided a new value for that ratio"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_12e642b0","line":172,"in_reply_to":"da20952f_4f33b114","updated":"2015-08-28 18:15:45.000000000","message":"sorry but you missed the context.\nSo, we want to provide a way to prevent the operators to modify their nova.conf *before upgrading. That way, John, Nikola, danms and I decided to use the 0.0 flag as a signal that the compute nova.conf is untouched and needs to keep the scheduler allocation ratios.\n\nas the sched is now importing the RT values, we also need to care that specific case and make sure we can default to the original values","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"950cdf6e629813d849f40a17c79ed172a92c6d60","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            # the next release (Mitaka) where the opt default values will be"},{"line_number":170,"context_line":"            # restored for both cpu (16.0) and ram (1.5) allocation ratios."},{"line_number":171,"context_line":"            # TODO(sbauza): Remove that in the next major version bump where"},{"line_number":172,"context_line":"            # we break compatibilility with old Kilo computes"},{"line_number":173,"context_line":"            if key \u003d\u003d \u0027cpu_allocation_ratio\u0027 or key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":174,"context_line":"                if value \u003d\u003d 0.0:"},{"line_number":175,"context_line":"                    # Operator has not yet provided a new value for that ratio"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_186c21cf","line":172,"in_reply_to":"da20952f_5d65ab1b","updated":"2015-08-28 18:44:17.000000000","message":"Because compute nodes can\u0027t run _from_db_compute by definition. They don\u0027t load things from the database and thus should never call this.\n\nIf they did, then we\u0027d take the value from their config below (line 182) and everything would be cool, right? If they didn\u0027t have it set, then the new default of 0.0 would be our signal below to take the old default.","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3595c4fd6f63cd322459cd5f422fcfc5957c4b9","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                        value \u003d 16.0"},{"line_number":186,"context_line":"                    if value \u003d\u003d 0.0 and key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":187,"context_line":"                        # It\u0027s not specified either on the controller"},{"line_number":188,"context_line":"                        value \u003d 1.5"},{"line_number":189,"context_line":"            compute[key] \u003d value"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        stats \u003d db_compute[\u0027stats\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_ef0ba528","line":188,"updated":"2015-08-28 18:03:00.000000000","message":"Wait, what? Why do you assume this code is *only* running on a controller if we get here?","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"04d872e2046b796413244a62e89e0f6799904b9f","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                        value \u003d 16.0"},{"line_number":186,"context_line":"                    if value \u003d\u003d 0.0 and key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":187,"context_line":"                        # It\u0027s not specified either on the controller"},{"line_number":188,"context_line":"                        value \u003d 1.5"},{"line_number":189,"context_line":"            compute[key] \u003d value"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        stats \u003d db_compute[\u0027stats\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_5d060b87","line":188,"in_reply_to":"da20952f_32858606","updated":"2015-08-28 18:36:56.000000000","message":"Why not?","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"950cdf6e629813d849f40a17c79ed172a92c6d60","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                        value \u003d 16.0"},{"line_number":186,"context_line":"                    if value \u003d\u003d 0.0 and key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":187,"context_line":"                        # It\u0027s not specified either on the controller"},{"line_number":188,"context_line":"                        value \u003d 1.5"},{"line_number":189,"context_line":"            compute[key] \u003d value"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        stats \u003d db_compute[\u0027stats\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_d898e9c2","line":188,"in_reply_to":"da20952f_5d060b87","updated":"2015-08-28 18:44:17.000000000","message":"Because compute nodes can\u0027t talk directly to the database. However, if they did, I still think the above would do the proper thing for taking the value from the config, or the original default if it\u0027s unset (after the final patch in the series).","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"56e63ee5db15343c4c57431d3a9188d21761774e","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                        value \u003d 16.0"},{"line_number":186,"context_line":"                    if value \u003d\u003d 0.0 and key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":187,"context_line":"                        # It\u0027s not specified either on the controller"},{"line_number":188,"context_line":"                        value \u003d 1.5"},{"line_number":189,"context_line":"            compute[key] \u003d value"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        stats \u003d db_compute[\u0027stats\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_32a2664c","line":188,"in_reply_to":"da20952f_ef0ba528","updated":"2015-08-28 18:15:45.000000000","message":"See my explanation above, the later change in the series changes the default value to 0.0\n\nNote: all of that is just for Liberty, we\u0027ll get rid of the default 0.0 in Mitaka","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9459db751964b5eae81a24670e79f7489ad09f01","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                        value \u003d 16.0"},{"line_number":186,"context_line":"                    if value \u003d\u003d 0.0 and key \u003d\u003d \u0027ram_allocation_ratio\u0027:"},{"line_number":187,"context_line":"                        # It\u0027s not specified either on the controller"},{"line_number":188,"context_line":"                        value \u003d 1.5"},{"line_number":189,"context_line":"            compute[key] \u003d value"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        stats \u003d db_compute[\u0027stats\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_32858606","line":188,"in_reply_to":"da20952f_ef0ba528","updated":"2015-08-28 18:11:59.000000000","message":"The computes can\u0027t run this code.","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"}],"nova/objects/request_spec.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3595c4fd6f63cd322459cd5f422fcfc5957c4b9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    # Version 1.0: Initial version"},{"line_number":25,"context_line":"    # Version 1.1: ImageMeta version 1.6"},{"line_number":26,"context_line":"    # Version 1.2: SchedulerRetries version 1.1"},{"line_number":27,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    fields \u003d {"},{"line_number":30,"context_line":"        \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_72069e1e","line":27,"updated":"2015-08-28 18:03:00.000000000","message":"this change does not seem to be related to this patch functionality.","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9459db751964b5eae81a24670e79f7489ad09f01","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    # Version 1.0: Initial version"},{"line_number":25,"context_line":"    # Version 1.1: ImageMeta version 1.6"},{"line_number":26,"context_line":"    # Version 1.2: SchedulerRetries version 1.1"},{"line_number":27,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    fields \u003d {"},{"line_number":30,"context_line":"        \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_b21bd6c9","line":27,"in_reply_to":"da20952f_72069e1e","updated":"2015-08-28 18:11:59.000000000","message":"It is because SchedulerRetries has a computenodelist and we changed computenode","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"56e63ee5db15343c4c57431d3a9188d21761774e","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    # Version 1.0: Initial version"},{"line_number":25,"context_line":"    # Version 1.1: ImageMeta version 1.6"},{"line_number":26,"context_line":"    # Version 1.2: SchedulerRetries version 1.1"},{"line_number":27,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    fields \u003d {"},{"line_number":30,"context_line":"        \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_d228cae4","line":27,"in_reply_to":"da20952f_72069e1e","updated":"2015-08-28 18:15:45.000000000","message":"It\u0027s because of the dependency chain, since I\u0027m modifying ComputeNode -\u003e ComputeNodeList -\u003e SchedulerRetries -\u003e ReqSpec\n\nYou have to thank Dan for providing a version manifest in o.vo which will prevent us of all of that in the next release","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3595c4fd6f63cd322459cd5f422fcfc5957c4b9","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                                   \u0027id\u0027: 2,"},{"line_number":195,"context_line":"                                   \u0027host\u0027: \u0027fake_phyp1\u0027,"},{"line_number":196,"context_line":"                                   \u0027cpu_allocation_ratio\u0027: 16.0,"},{"line_number":197,"context_line":"                                   \u0027ram_allocation_ratio\u0027: 1.5,"},{"line_number":198,"context_line":"                                   \u0027host_ip\u0027: \u0027127.0.0.1\u0027}]"},{"line_number":199,"context_line":"            return [objects.ComputeNode._from_db_object("},{"line_number":200,"context_line":"                        context, objects.ComputeNode(), cn)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_f2394ed8","line":197,"updated":"2015-08-28 18:03:00.000000000","message":"these should both be None if we want to test the default code path where a node starts off using the scheduler\u0027s idea of the allocation ratios.","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"56e63ee5db15343c4c57431d3a9188d21761774e","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                                   \u0027id\u0027: 2,"},{"line_number":195,"context_line":"                                   \u0027host\u0027: \u0027fake_phyp1\u0027,"},{"line_number":196,"context_line":"                                   \u0027cpu_allocation_ratio\u0027: 16.0,"},{"line_number":197,"context_line":"                                   \u0027ram_allocation_ratio\u0027: 1.5,"},{"line_number":198,"context_line":"                                   \u0027host_ip\u0027: \u0027127.0.0.1\u0027}]"},{"line_number":199,"context_line":"            return [objects.ComputeNode._from_db_object("},{"line_number":200,"context_line":"                        context, objects.ComputeNode(), cn)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_d2b20a94","line":197,"in_reply_to":"da20952f_12cf222a","updated":"2015-08-28 18:15:45.000000000","message":"Zactly","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9459db751964b5eae81a24670e79f7489ad09f01","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                                   \u0027id\u0027: 2,"},{"line_number":195,"context_line":"                                   \u0027host\u0027: \u0027fake_phyp1\u0027,"},{"line_number":196,"context_line":"                                   \u0027cpu_allocation_ratio\u0027: 16.0,"},{"line_number":197,"context_line":"                                   \u0027ram_allocation_ratio\u0027: 1.5,"},{"line_number":198,"context_line":"                                   \u0027host_ip\u0027: \u0027127.0.0.1\u0027}]"},{"line_number":199,"context_line":"            return [objects.ComputeNode._from_db_object("},{"line_number":200,"context_line":"                        context, objects.ComputeNode(), cn)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_12cf222a","line":197,"in_reply_to":"da20952f_f2394ed8","updated":"2015-08-28 18:11:59.000000000","message":"The normal path going forward will be having these values always set. So, I think we want this to look like it does here, which is the normal case and then test the online migration case separately and specifically.","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"}],"nova/tests/unit/db/test_db_api.py":[{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"ca9b4d95be15212e6b04400d4ab65913dd16cc3b","unresolved":false,"context_lines":[{"line_number":6947,"context_line":"                                 metrics\u003d\u0027\u0027,"},{"line_number":6948,"context_line":"                                 extra_resources\u003d\u0027\u0027,"},{"line_number":6949,"context_line":"                                 cpu_allocation_ratio\u003dNone,"},{"line_number":6950,"context_line":"                                 ram_allocation_ratio\u003dNone,"},{"line_number":6951,"context_line":"                                 stats\u003d\u0027\u0027, numa_topology\u003d\u0027\u0027)"},{"line_number":6952,"context_line":"        # add some random stats"},{"line_number":6953,"context_line":"        self.stats \u003d dict(num_instances\u003d3, num_proj_12345\u003d2,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_35050b10","line":6950,"updated":"2015-08-21 08:54:37.000000000","message":"You can\u0027t use None for float fields","commit_id":"a170e04207e21982a83a5e8852abf9bb568efa4a"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3595c4fd6f63cd322459cd5f422fcfc5957c4b9","unresolved":false,"context_lines":[{"line_number":6990,"context_line":"                                 metrics\u003d\u0027\u0027,"},{"line_number":6991,"context_line":"                                 extra_resources\u003d\u0027\u0027,"},{"line_number":6992,"context_line":"                                 cpu_allocation_ratio\u003d16.0,"},{"line_number":6993,"context_line":"                                 ram_allocation_ratio\u003d1.5,"},{"line_number":6994,"context_line":"                                 stats\u003d\u0027\u0027, numa_topology\u003d\u0027\u0027)"},{"line_number":6995,"context_line":"        # add some random stats"},{"line_number":6996,"context_line":"        self.stats \u003d dict(num_instances\u003d3, num_proj_12345\u003d2,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_5276faa4","line":6993,"updated":"2015-08-28 18:03:00.000000000","message":"should be None","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"56e63ee5db15343c4c57431d3a9188d21761774e","unresolved":false,"context_lines":[{"line_number":6990,"context_line":"                                 metrics\u003d\u0027\u0027,"},{"line_number":6991,"context_line":"                                 extra_resources\u003d\u0027\u0027,"},{"line_number":6992,"context_line":"                                 cpu_allocation_ratio\u003d16.0,"},{"line_number":6993,"context_line":"                                 ram_allocation_ratio\u003d1.5,"},{"line_number":6994,"context_line":"                                 stats\u003d\u0027\u0027, numa_topology\u003d\u0027\u0027)"},{"line_number":6995,"context_line":"        # add some random stats"},{"line_number":6996,"context_line":"        self.stats \u003d dict(num_instances\u003d3, num_proj_12345\u003d2,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_7251be35","line":6993,"in_reply_to":"da20952f_5276faa4","updated":"2015-08-28 18:15:45.000000000","message":"I prefer to leave the defaults here","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"}],"nova/tests/unit/objects/test_compute_node.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9459db751964b5eae81a24670e79f7489ad09f01","unresolved":false,"context_lines":[{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        self.assertEqual(16.0, compute.cpu_allocation_ratio)"},{"line_number":554,"context_line":"        self.assertEqual(1.5, compute.ram_allocation_ratio)"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"class TestComputeNodeObject(test_objects._LocalTest,"},{"line_number":558,"context_line":"                            _TestComputeNodeObject):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_52f03a67","line":555,"updated":"2015-08-28 18:11:59.000000000","message":"These are the tests for the migration.","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"56e63ee5db15343c4c57431d3a9188d21761774e","unresolved":false,"context_lines":[{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        self.assertEqual(16.0, compute.cpu_allocation_ratio)"},{"line_number":554,"context_line":"        self.assertEqual(1.5, compute.ram_allocation_ratio)"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"class TestComputeNodeObject(test_objects._LocalTest,"},{"line_number":558,"context_line":"                            _TestComputeNodeObject):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_721f7e6c","line":555,"in_reply_to":"da20952f_52f03a67","updated":"2015-08-28 18:15:45.000000000","message":"tbh, one test is missing : defaulting the flags to 0.0 and see that we keep the 16/1.5 values","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8e83ee8025540f940bf1b32485e5c94f1b24ce4b","unresolved":false,"context_lines":[{"line_number":552,"context_line":""},{"line_number":553,"context_line":"        self.assertEqual(16.0, compute.cpu_allocation_ratio)"},{"line_number":554,"context_line":"        self.assertEqual(1.5, compute.ram_allocation_ratio)"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"class TestComputeNodeObject(test_objects._LocalTest,"},{"line_number":558,"context_line":"                            _TestComputeNodeObject):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_1d7ad377","line":555,"in_reply_to":"da20952f_721f7e6c","updated":"2015-08-28 18:20:40.000000000","message":"just to make things clear, I tested that case and it\u0027s working\n\nhttp://paste.openstack.org/show/431192/","commit_id":"c3e7d169195c8286f61fd8123465ee1d89237208"}]}
