)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f517305c7ce7792cffff2278a179427841742efa","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Propose Scheduler library blueprint"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Scheduler library client is a necessary prerequisite for the Gantt"},{"line_number":10,"context_line":"forklift, we need to target it for Juno-1."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I06f99e5c0b0119ce79d33b31a59e5250c3930e86"},{"line_number":13,"context_line":"Implements: blueprint scheduler-lib"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAWH%2F95WQ%3D","line":10,"updated":"2014-04-01 11:02:32.000000000","message":"Not sure we want to include tracking info in here.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Propose Scheduler library blueprint"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Scheduler library client is a necessary prerequisite for the Gantt"},{"line_number":10,"context_line":"forklift, we need to target it for Juno-1."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I06f99e5c0b0119ce79d33b31a59e5250c3930e86"},{"line_number":13,"context_line":"Implements: blueprint scheduler-lib"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAWH%2F94x0%3D","line":10,"in_reply_to":"AAAAWH%2F95WQ%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"}],"specs/juno/scheduler-lib.rst":[{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"a3bf0fc97f7847e2de0b6fd06cf5f4945cafa86b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"when applying the forklift and how, in particular how it should be staged."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Recent debates led to the agreement that Nova should first :"},{"line_number":24,"context_line":"#. deproxify calls to the scheduler "},{"line_number":25,"context_line":"#. isolate scheduler code within a single library"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"before doing the split itself."}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F9598%3D","line":24,"updated":"2014-04-01 09:53:18.000000000","message":"It is better remove those blank spaces","commit_id":"59b189f62219b5e56a07747b06b11e3f8d938809"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6df0bd167f7478aa4e2c6be958c69b65b22b9de6","unresolved":false,"context_lines":[{"line_number":21,"context_line":"when applying the forklift and how, in particular how it should be staged."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Recent debates led to the agreement that Nova should first :"},{"line_number":24,"context_line":"#. deproxify calls to the scheduler "},{"line_number":25,"context_line":"#. isolate scheduler code within a single library"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"before doing the split itself."}],"source_content_type":"text/x-rst","patch_set":3,"id":"AAAAWH%2F952Y%3D","line":24,"in_reply_to":"AAAAWH%2F9598%3D","updated":"2014-04-01 09:58:11.000000000","message":"Done","commit_id":"59b189f62219b5e56a07747b06b11e3f8d938809"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/scheduler-lib"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In order to help splitting out Nova scheduler into its own project, there is"},{"line_number":14,"context_line":"need to export seamlessly all the scheduler interfaces into a single library."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95rg%3D","line":14,"updated":"2014-04-01 11:01:57.000000000","message":"export does feel like the right verb, maybe \"refactor all the scheduler interfaces to the rest of Nova into a single seam\"?","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/scheduler-lib"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In order to help splitting out Nova scheduler into its own project, there is"},{"line_number":14,"context_line":"need to export seamlessly all the scheduler interfaces into a single library."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94xQ%3D","line":14,"in_reply_to":"AAAAWH%2F95rg%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":21,"context_line":"when applying the forklift and how, in particular how it should be staged."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Recent debates led to the agreement that Nova should first :"},{"line_number":24,"context_line":"#. deproxify calls to the scheduler"},{"line_number":25,"context_line":"#. isolate scheduler code within a single library"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"before doing the split itself."}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95lk%3D","line":24,"updated":"2014-04-01 11:01:57.000000000","message":"Sorry, I don\u0027t know what this means.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":21,"context_line":"when applying the forklift and how, in particular how it should be staged."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Recent debates led to the agreement that Nova should first :"},{"line_number":24,"context_line":"#. deproxify calls to the scheduler"},{"line_number":25,"context_line":"#. isolate scheduler code within a single library"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"before doing the split itself."}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94wY%3D","line":24,"in_reply_to":"AAAAWH%2F95lk%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Recent debates led to the agreement that Nova should first :"},{"line_number":24,"context_line":"#. deproxify calls to the scheduler"},{"line_number":25,"context_line":"#. isolate scheduler code within a single library"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"before doing the split itself."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95lA%3D","line":25,"updated":"2014-04-01 11:01:57.000000000","message":"I hope we are not doing that.\n\nWe are ensuring all calls to the scheduler are going through a single driver-style interface, so we can later replace the nova-scheduler implementation with a gantt, as we transition to an external scheduler.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Recent debates led to the agreement that Nova should first :"},{"line_number":24,"context_line":"#. deproxify calls to the scheduler"},{"line_number":25,"context_line":"#. isolate scheduler code within a single library"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"before doing the split itself."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94v8%3D","line":25,"in_reply_to":"AAAAWH%2F95lA%3D","updated":"2014-04-01 13:59:39.000000000","message":"At the moment, all scheduler code is located in nova.scheduler, so that\u0027s only matter of interfaces for delivering a client\n\nIf we consider that calls are all going through a same interface, that\u0027s a library :-)\n\nAnyway, I don\u0027t want to bikesheding, so OK with your change.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Recent debates led to the agreement that Nova should first :"},{"line_number":24,"context_line":"#. deproxify calls to the scheduler"},{"line_number":25,"context_line":"#. isolate scheduler code within a single library"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"before doing the split itself."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"We can find the debate in the etherpad here :"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95lo%3D","line":26,"updated":"2014-04-01 11:01:57.000000000","message":"Bad formatting, * or - will give you bullets","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Recent debates led to the agreement that Nova should first :"},{"line_number":24,"context_line":"#. deproxify calls to the scheduler"},{"line_number":25,"context_line":"#. isolate scheduler code within a single library"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"before doing the split itself."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"We can find the debate in the etherpad here :"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94uE%3D","line":26,"in_reply_to":"AAAAWH%2F95lo%3D","updated":"2014-04-01 13:59:39.000000000","message":"I forgot a white line, now the layout is fine for bullets.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"to expose are :"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- ``select_destinations(context, request_spec)``"},{"line_number":46,"context_line":"- ``update_node_stats(context, service_name, service_stats)``"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"These methods will only be pure refactoring of the existing scheduler methods"},{"line_number":49,"context_line":"by splitting out DB calls depending on if they are looking at scheduler DB"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95dU%3D","line":46,"updated":"2014-04-01 11:01:57.000000000","message":"Please specify the format of these parameters.\n\nrequest_sepc, just \"stays the same\" for now.\n\nservice_name, right now just the compute host name, represents the host name passed back from select_destinations, when it is picked. Maybe it should be host and node? I am not 100% sure.\n\nservice status, this is a dict, we should really define the format of this more clearly here...\n\n\nI think you are missing \"service_type\" and \"location\", but they could be included in the service_stats I guess. But they are two things we might want to include in this API, for clarity. Not totally sure at this point.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":43,"context_line":"to expose are :"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- ``select_destinations(context, request_spec)``"},{"line_number":46,"context_line":"- ``update_node_stats(context, service_name, service_stats)``"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"These methods will only be pure refactoring of the existing scheduler methods"},{"line_number":49,"context_line":"by splitting out DB calls depending on if they are looking at scheduler DB"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94Yo%3D","line":46,"in_reply_to":"AAAAWH%2F95dU%3D","updated":"2014-04-01 13:59:39.000000000","message":"what do you mean by location ?\n\nas the current forklift is delivered only for Nova, I was implicitely defining service_type\u003d\u0027compute\u0027 in my draft, but ok for giving an attribute here","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Nova DB calls (here service table) must be considered to be accessed using"},{"line_number":57,"context_line":"conductor as a first attempt, but need to be performed eventually by accessing"},{"line_number":58,"context_line":"Nova API or have their own local state within Scheduler tables."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95gQ%3D","line":58,"updated":"2014-04-01 11:01:57.000000000","message":"We shouldn\u0027t need to access that table in the scheduler. The key DB call only accesses the compute node database:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/scheduler/host_manager.py#n448","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Nova DB calls (here service table) must be considered to be accessed using"},{"line_number":57,"context_line":"conductor as a first attempt, but need to be performed eventually by accessing"},{"line_number":58,"context_line":"Nova API or have their own local state within Scheduler tables."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94Vw%3D","line":58,"in_reply_to":"AAAAWH%2F95gQ%3D","updated":"2014-04-01 13:59:39.000000000","message":"IIRC, we need to access services table for checking if hosts asking to publish are defined in Nova\n\nSee http://git.openstack.org/cgit/openstack/nova/tree/nova/compute/resource_tracker.py#n352","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This option is highly risky and imposes a code freeze for a certain amount of"},{"line_number":70,"context_line":"time which can slip if problems raise. As said, the consensus led to the"},{"line_number":71,"context_line":"proposal given in the description."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95gI%3D","line":71,"updated":"2014-04-01 11:01:57.000000000","message":"Probably worth mentioning the topic was raised at the Icehouse Nova mid-cycle meetup.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This option is highly risky and imposes a code freeze for a certain amount of"},{"line_number":70,"context_line":"time which can slip if problems raise. As said, the consensus led to the"},{"line_number":71,"context_line":"proposal given in the description."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94VA%3D","line":71,"in_reply_to":"AAAAWH%2F95gI%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":81,"context_line":"stay in Nova until Gantt is forklifted."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Rolling upgrade and downgrade is still possible to be performed seamlessly as"},{"line_number":84,"context_line":"this blueprint only targets some code refactoring without having new features."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95fo%3D","line":84,"updated":"2014-04-01 11:01:57.000000000","message":"\"No database changes, this is just refactoring.\" Would be good enough for me.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":81,"context_line":"stay in Nova until Gantt is forklifted."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Rolling upgrade and downgrade is still possible to be performed seamlessly as"},{"line_number":84,"context_line":"this blueprint only targets some code refactoring without having new features."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94Uc%3D","line":84,"in_reply_to":"AAAAWH%2F95fo%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Notifications impact"},{"line_number":101,"context_line":"--------------------"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"None (notifications are not yet sent by scheduler)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Other end user impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95ak%3D","line":103,"updated":"2014-04-01 11:01:57.000000000","message":"The scheduler does send notifications, but this is just a refactor.\n\nAll these sections can just be \"None.\"","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Notifications impact"},{"line_number":101,"context_line":"--------------------"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"None (notifications are not yet sent by scheduler)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Other end user impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94UM%3D","line":103,"in_reply_to":"AAAAWH%2F95ak%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Nova conductor methods calling scheduler should import a configuration variable"},{"line_number":127,"context_line":"defining the path of the scheduler client, so that eventually it could be"},{"line_number":128,"context_line":"changed to Gantt without impacting code."},{"line_number":129,"context_line":"(e.g. ``scheduler_client \u003d \"nova.scheduler.client.SchedulerClient\"``)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The library client will still handle scheduler releases as it will rely on RPC"},{"line_number":132,"context_line":"API for versioning."}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95ZU%3D","line":129,"updated":"2014-04-01 11:01:57.000000000","message":"We need to be more specific about this.\n\nDoes this change add a configuration value or not? I vote not. We can add the config when we know how we will hook this into gnatt.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Nova conductor methods calling scheduler should import a configuration variable"},{"line_number":127,"context_line":"defining the path of the scheduler client, so that eventually it could be"},{"line_number":128,"context_line":"changed to Gantt without impacting code."},{"line_number":129,"context_line":"(e.g. ``scheduler_client \u003d \"nova.scheduler.client.SchedulerClient\"``)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The library client will still handle scheduler releases as it will rely on RPC"},{"line_number":132,"context_line":"API for versioning."}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94DY%3D","line":129,"in_reply_to":"AAAAWH%2F95ZU%3D","updated":"2014-04-01 13:59:39.000000000","message":"we need to know the path of the client, hence the config option\n\nanother way would be to make use of stevedore\u0027s entrypoint in setup.cfg but I don\u0027t think it\u0027s worth it for our usage.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Developer impact"},{"line_number":138,"context_line":"----------------"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"All scheduler calls must go through this scheduler client library."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95aM%3D","line":140,"updated":"2014-04-01 11:01:57.000000000","message":"Also, there should (eventually) be no calls to other parts of nova from the scheduler, and by the end of Juno, the ones that remain should only be there for backwards compatibility.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Developer impact"},{"line_number":138,"context_line":"----------------"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"All scheduler calls must go through this scheduler client library."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94Gs%3D","line":140,"in_reply_to":"AAAAWH%2F95aM%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":160,"context_line":"- Disallow any outbound RPC from nova-scheduler: TODO"},{"line_number":161,"context_line":"- Disallow any DB calls except compute node stats, from nova-scheduler: TODO"},{"line_number":162,"context_line":"- Disallow any DB calls to compute node stats from any other nova service: TODO"},{"line_number":163,"context_line":"- Disallow any node to make scheduler RPC except via scheduler client"},{"line_number":164,"context_line":"  (only if not pinned to a specific RPC version before that is possible): TODO"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95Ys%3D","line":163,"updated":"2014-04-01 11:01:57.000000000","message":"Please describe these later points in the proposed changes.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":160,"context_line":"- Disallow any outbound RPC from nova-scheduler: TODO"},{"line_number":161,"context_line":"- Disallow any DB calls except compute node stats, from nova-scheduler: TODO"},{"line_number":162,"context_line":"- Disallow any DB calls to compute node stats from any other nova service: TODO"},{"line_number":163,"context_line":"- Disallow any node to make scheduler RPC except via scheduler client"},{"line_number":164,"context_line":"  (only if not pinned to a specific RPC version before that is possible): TODO"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94CA%3D","line":163,"in_reply_to":"AAAAWH%2F95Ys%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Dependencies"},{"line_number":167,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Blueprints :"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"- None"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95kg%3D","line":168,"updated":"2014-04-01 11:01:57.000000000","message":"A single None would be sufficient here, except...","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Dependencies"},{"line_number":167,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Blueprints :"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"- None"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94QI%3D","line":168,"in_reply_to":"AAAAWH%2F95kg%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Blueprints :"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"- None"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Other projects :"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95jk%3D","line":171,"updated":"2014-04-01 11:01:57.000000000","message":"I am fairly sure this is at least related to:\n* resource manager move to objects\n* remove-cast-to-schedule-run-instance\n\nThese are in launchpad, but should be discussed here.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Blueprints :"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"- None"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"Other projects :"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94QQ%3D","line":171,"in_reply_to":"AAAAWH%2F95jk%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Unittests will cover new scheduler client."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Devstack based CI and turbo-hipster CI should seamlessly provide test coverage."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95jQ%3D","line":190,"updated":"2014-04-01 11:01:57.000000000","message":"A single sentence saying \"Covered by existing tempest tests.\" would be fine here.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Unittests will cover new scheduler client."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Devstack based CI and turbo-hipster CI should seamlessly provide test coverage."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94TA%3D","line":190,"in_reply_to":"AAAAWH%2F95jQ%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":193,"context_line":"Documentation Impact"},{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Only configuration option (scheduler_client) is needed to be commented"},{"line_number":197,"context_line":"properly."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95iE%3D","line":196,"updated":"2014-04-01 11:01:57.000000000","message":"Thats not really true, there are several places that configuration values is discussed. I would just put, \"Need to document new config value XXX\",\n\nWe probably want some developer docs that describe the new interface, but thats probably optional at this stage.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":193,"context_line":"Documentation Impact"},{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Only configuration option (scheduler_client) is needed to be commented"},{"line_number":197,"context_line":"properly."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94OE%3D","line":196,"in_reply_to":"AAAAWH%2F95iE%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7702e5398e319efb73568f3c77d2fb7743f14a8","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"* https://etherpad.openstack.org/p/icehouse-external-scheduler"},{"line_number":205,"context_line":"* http://eavesdrop.openstack.org/meetings/gantt/2014/gantt.2014-03-18-15.00.html"},{"line_number":206,"context_line":"* https://blueprints.launchpad.net/nova/+spec/remove-cast-to-schedule-run-instance"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F95hk%3D","line":206,"updated":"2014-04-01 11:01:57.000000000","message":"Seems a bit odd to have this here, it should be in the dependencies link, and its relevance explained.","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dce187bcc365f69706fd4b37484423a021086706","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"* https://etherpad.openstack.org/p/icehouse-external-scheduler"},{"line_number":205,"context_line":"* http://eavesdrop.openstack.org/meetings/gantt/2014/gantt.2014-03-18-15.00.html"},{"line_number":206,"context_line":"* https://blueprints.launchpad.net/nova/+spec/remove-cast-to-schedule-run-instance"}],"source_content_type":"text/x-rst","patch_set":4,"id":"AAAAWH%2F94QU%3D","line":206,"in_reply_to":"AAAAWH%2F95hk%3D","updated":"2014-04-01 13:59:39.000000000","message":"Done","commit_id":"30201fb09a3eeb80ae2ed21dec179abf80ab721c"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0cc7de4b0fb2a80d13d31e94b0a22030db2b3935","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Recent debates led to the agreement that Nova should first :"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#. let the conductor responsible for running instances on compute hosts"},{"line_number":27,"context_line":"#. ensure all calls to the scheduler are going through a single driver-style"},{"line_number":28,"context_line":"   interface"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F90Ms%3D","line":26,"updated":"2014-04-01 23:20:18.000000000","message":"I don\u0027t know what this means","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e86a95fda587e40cfb4cd4f0bcce976b8a607c","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Recent debates led to the agreement that Nova should first :"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#. let the conductor responsible for running instances on compute hosts"},{"line_number":27,"context_line":"#. ensure all calls to the scheduler are going through a single driver-style"},{"line_number":28,"context_line":"   interface"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9v0Q%3D","line":26,"in_reply_to":"AAAAWH%2F90Ms%3D","updated":"2014-04-02 12:49:48.000000000","message":"Done","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1981,"name":"Don Dugger","email":"n0ano@n0ano.com","username":"n0ano"},"change_message_id":"fe242c8d8943f04e1b0d3277bb40e9551d40190b","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#. let the conductor responsible for running instances on compute hosts"},{"line_number":27,"context_line":"#. ensure all calls to the scheduler are going through a single driver-style"},{"line_number":28,"context_line":"   interface"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"before doing the split itself."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F91IY%3D","line":28,"updated":"2014-04-01 20:41:05.000000000","message":"I think there\u0027s a 3rd task that needs to be done and that is to abstract all calls from the scheduler into the nova code and turn these into cleanly defined interfaces.  Currently there are multiple places where scheduler utilizes internal nova methods just by importing nova files.  Once we find these methods and turn them into a defined interface it will be possible to split out the scheduler into the gantt tree.","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e86a95fda587e40cfb4cd4f0bcce976b8a607c","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#. let the conductor responsible for running instances on compute hosts"},{"line_number":27,"context_line":"#. ensure all calls to the scheduler are going through a single driver-style"},{"line_number":28,"context_line":"   interface"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"before doing the split itself."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9vyA%3D","line":28,"in_reply_to":"AAAAWH%2F90MY%3D","updated":"2014-04-02 12:49:48.000000000","message":"Agree, my problem description is a bit unclear, rewriting it.","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0cc7de4b0fb2a80d13d31e94b0a22030db2b3935","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#. let the conductor responsible for running instances on compute hosts"},{"line_number":27,"context_line":"#. ensure all calls to the scheduler are going through a single driver-style"},{"line_number":28,"context_line":"   interface"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"before doing the split itself."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F90MY%3D","line":28,"in_reply_to":"AAAAWH%2F91IY%3D","updated":"2014-04-01 23:20:18.000000000","message":"Agreed, I would like to see a list of these too","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"f90579ce49189c22bc79a6a427d45c54824ee82e","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"This blueprint aims to solve stage #2, ie. provide all the external interfaces"},{"line_number":37,"context_line":"to the scheduler into a single client library, so that Nova could reuse for"},{"line_number":38,"context_line":"replacing direct imports to scheduler modules."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F92aI%3D","line":38,"updated":"2014-04-01 17:04:53.000000000","message":"I\u0027m not sure I agree with the problem statement.  On the client side, the code is already pretty abstracted.  The only interface used to scheduler code is nova.scheduler.rpcapi, which is effectively the layer needed according to the problem statement.","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1981,"name":"Don Dugger","email":"n0ano@n0ano.com","username":"n0ano"},"change_message_id":"fe242c8d8943f04e1b0d3277bb40e9551d40190b","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"This blueprint aims to solve stage #2, ie. provide all the external interfaces"},{"line_number":37,"context_line":"to the scheduler into a single client library, so that Nova could reuse for"},{"line_number":38,"context_line":"replacing direct imports to scheduler modules."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F91AE%3D","line":38,"in_reply_to":"AAAAWH%2F92aI%3D","updated":"2014-04-01 20:41:05.000000000","message":"I think the client library is a good idea, we even started the python-ganttclient project as a repository to contain this library.  Hopefully this BP is to create such a library in nova first so we can then split it out into the python-ganttclient project.","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e86a95fda587e40cfb4cd4f0bcce976b8a607c","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"This blueprint aims to solve stage #2, ie. provide all the external interfaces"},{"line_number":37,"context_line":"to the scheduler into a single client library, so that Nova could reuse for"},{"line_number":38,"context_line":"replacing direct imports to scheduler modules."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9vyE%3D","line":38,"in_reply_to":"AAAAWH%2F92aI%3D","updated":"2014-04-02 12:49:48.000000000","message":"The goal of this library is to decouple scheduler from Nova by defining isolation in between scheduler code and other Nova code.\nA good example of the need of this library is for posting stats to ComputeNode, where ResourceTracker directly accesses ComputeNode table, which is scheduler-related.\nAt least, we should provide an interface for this so the resourcetracker would use it.","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1981,"name":"Don Dugger","email":"n0ano@n0ano.com","username":"n0ano"},"change_message_id":"fe242c8d8943f04e1b0d3277bb40e9551d40190b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        :type service_stats: dict"},{"line_number":59,"context_line":"        :param node_name: Hypervisor name if different from the service_name"},{"line_number":60,"context_line":"        :param service_type: Type of service to publish"},{"line_number":61,"context_line":"        :param pci_tracker: PCITracker object if needed"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"These methods will only be pure refactoring of the existing scheduler methods"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F91EU%3D","line":61,"updated":"2014-04-01 20:41:05.000000000","message":"If these are the only two APIs for the scheduler what happened to `run_instance\u0027, `prep_resize\u0027, `live_migration\u0027, and maybe others?  This is a forklift so we have to keep all current APIs.","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e86a95fda587e40cfb4cd4f0bcce976b8a607c","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        :type service_stats: dict"},{"line_number":59,"context_line":"        :param node_name: Hypervisor name if different from the service_name"},{"line_number":60,"context_line":"        :param service_type: Type of service to publish"},{"line_number":61,"context_line":"        :param pci_tracker: PCITracker object if needed"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"These methods will only be pure refactoring of the existing scheduler methods"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9vwo%3D","line":61,"in_reply_to":"AAAAWH%2F91EU%3D","updated":"2014-04-02 12:49:48.000000000","message":"Sched RPC API v3 only includes select_destinations() and run_instance(). See https://review.openstack.org/#/c/84430/1/nova/scheduler/manager.py\n\nrun_instance() is planned to be deprecated thanks to https://review.openstack.org/#/c/43194/31/nova/conductor/manager.py\nhttps://blueprints.launchpad.net/nova/+spec/remove-cast-to-schedule-run-instance","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"f90579ce49189c22bc79a6a427d45c54824ee82e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"the scheduler client for knowing them."},{"line_number":79,"context_line":"Also, nothing in the scheduler should access other but scheduler table, so"},{"line_number":80,"context_line":"any external resource for filters should be tracked thanks to the Resource"},{"line_number":81,"context_line":"Tracker within scheduler ComputeNode table."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F92ZU%3D","line":81,"updated":"2014-04-01 17:04:53.000000000","message":"The DB stuff discussed here is solving a different (but real) problem, I think.  There is a need to abstract the scheduler away from Nova\u0027s database a bit better, but that really seems like a different problem than what is described in the original problem statement.","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e86a95fda587e40cfb4cd4f0bcce976b8a607c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"the scheduler client for knowing them."},{"line_number":79,"context_line":"Also, nothing in the scheduler should access other but scheduler table, so"},{"line_number":80,"context_line":"any external resource for filters should be tracked thanks to the Resource"},{"line_number":81,"context_line":"Tracker within scheduler ComputeNode table."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9vvg%3D","line":81,"in_reply_to":"AAAAWH%2F92ZU%3D","updated":"2014-04-02 12:49:48.000000000","message":"Agree, the problem statement is incorrect, rewriting it","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0cc7de4b0fb2a80d13d31e94b0a22030db2b3935","unresolved":false,"context_lines":[{"line_number":78,"context_line":"the scheduler client for knowing them."},{"line_number":79,"context_line":"Also, nothing in the scheduler should access other but scheduler table, so"},{"line_number":80,"context_line":"any external resource for filters should be tracked thanks to the Resource"},{"line_number":81,"context_line":"Tracker within scheduler ComputeNode table."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F90LQ%3D","line":81,"in_reply_to":"AAAAWH%2F92ZU%3D","updated":"2014-04-01 23:20:18.000000000","message":"I read this differently and thought that is exactly what this was doing. Clearly more clarification is needed.","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0cc7de4b0fb2a80d13d31e94b0a22030db2b3935","unresolved":false,"context_lines":[{"line_number":134,"context_line":"Performance Impact"},{"line_number":135,"context_line":"------------------"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Access to DB will remain the same in terms of performance."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"That\u0027s only if we consider to perform an API call for accessing services table"},{"line_number":140,"context_line":"that we could potentially hit performance concerns for the Nova API."}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F90LE%3D","line":137,"updated":"2014-04-01 23:20:18.000000000","message":"adding the conductor will change things","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e86a95fda587e40cfb4cd4f0bcce976b8a607c","unresolved":false,"context_lines":[{"line_number":134,"context_line":"Performance Impact"},{"line_number":135,"context_line":"------------------"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Access to DB will remain the same in terms of performance."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"That\u0027s only if we consider to perform an API call for accessing services table"},{"line_number":140,"context_line":"that we could potentially hit performance concerns for the Nova API."}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9vuk%3D","line":137,"in_reply_to":"AAAAWH%2F90LE%3D","updated":"2014-04-02 12:49:48.000000000","message":"Conductor must be used for other but scheduler code. Will put a note on it, agree.","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0cc7de4b0fb2a80d13d31e94b0a22030db2b3935","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"That\u0027s only if we consider to perform an API call for accessing services table"},{"line_number":140,"context_line":"that we could potentially hit performance concerns for the Nova API."},{"line_number":141,"context_line":"We can consider a caching system for accessing services table."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"Currently locking management and persistence layer will remain the same."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F90K4%3D","line":141,"updated":"2014-04-01 23:20:18.000000000","message":"can you expand on this point","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e86a95fda587e40cfb4cd4f0bcce976b8a607c","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"That\u0027s only if we consider to perform an API call for accessing services table"},{"line_number":140,"context_line":"that we could potentially hit performance concerns for the Nova API."},{"line_number":141,"context_line":"We can consider a caching system for accessing services table."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"Currently locking management and persistence layer will remain the same."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9vug%3D","line":141,"in_reply_to":"AAAAWH%2F90K4%3D","updated":"2014-04-02 12:49:48.000000000","message":"Sure, will do","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0cc7de4b0fb2a80d13d31e94b0a22030db2b3935","unresolved":false,"context_lines":[{"line_number":149,"context_line":"Nova conductor methods calling scheduler should import a configuration variable"},{"line_number":150,"context_line":"defining the path of the scheduler client, so that eventually it could be"},{"line_number":151,"context_line":"changed to Gantt without impacting code."},{"line_number":152,"context_line":"``scheduler_client \u003d \"nova.scheduler.client.SchedulerClient\"``"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"The library client will still handle scheduler releases as it will rely on RPC"},{"line_number":155,"context_line":"API for versioning."}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F90K0%3D","line":152,"updated":"2014-04-01 23:20:18.000000000","message":"I don\u0027t see why this needs to be part of this BP, this sounds like a future BP","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e86a95fda587e40cfb4cd4f0bcce976b8a607c","unresolved":false,"context_lines":[{"line_number":149,"context_line":"Nova conductor methods calling scheduler should import a configuration variable"},{"line_number":150,"context_line":"defining the path of the scheduler client, so that eventually it could be"},{"line_number":151,"context_line":"changed to Gantt without impacting code."},{"line_number":152,"context_line":"``scheduler_client \u003d \"nova.scheduler.client.SchedulerClient\"``"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"The library client will still handle scheduler releases as it will rely on RPC"},{"line_number":155,"context_line":"API for versioning."}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9vuU%3D","line":152,"in_reply_to":"AAAAWH%2F90K0%3D","updated":"2014-04-02 12:49:48.000000000","message":"Done","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0cc7de4b0fb2a80d13d31e94b0a22030db2b3935","unresolved":false,"context_lines":[{"line_number":152,"context_line":"``scheduler_client \u003d \"nova.scheduler.client.SchedulerClient\"``"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"The library client will still handle scheduler releases as it will rely on RPC"},{"line_number":155,"context_line":"API for versioning."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Nova-conductor will solely take use of the client. If client is considered to"},{"line_number":158,"context_line":"be upgraded, nova-conductor should be upgraded first."}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F90Kk%3D","line":155,"updated":"2014-04-01 23:20:18.000000000","message":"If the library is still only a pseudo library that lives in nova for now, why is this relevant?","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e86a95fda587e40cfb4cd4f0bcce976b8a607c","unresolved":false,"context_lines":[{"line_number":152,"context_line":"``scheduler_client \u003d \"nova.scheduler.client.SchedulerClient\"``"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"The library client will still handle scheduler releases as it will rely on RPC"},{"line_number":155,"context_line":"API for versioning."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Nova-conductor will solely take use of the client. If client is considered to"},{"line_number":158,"context_line":"be upgraded, nova-conductor should be upgraded first."}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9vt0%3D","line":155,"in_reply_to":"AAAAWH%2F90Kk%3D","updated":"2014-04-02 12:49:48.000000000","message":"Done","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0cc7de4b0fb2a80d13d31e94b0a22030db2b3935","unresolved":false,"context_lines":[{"line_number":163,"context_line":"All scheduler calls must go through this scheduler client library."},{"line_number":164,"context_line":"Also, by end of Juno, no calls from the scheduler should go to Nova except"},{"line_number":165,"context_line":"the ones for scheduling (eg. aggregates), unless needed for backwards"},{"line_number":166,"context_line":"compatibility."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F90KY%3D","line":166,"updated":"2014-04-01 23:20:18.000000000","message":"How can we enforce this automatically?","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"474785be0282f0e1339946b69be495856dc07500","unresolved":false,"context_lines":[{"line_number":163,"context_line":"All scheduler calls must go through this scheduler client library."},{"line_number":164,"context_line":"Also, by end of Juno, no calls from the scheduler should go to Nova except"},{"line_number":165,"context_line":"the ones for scheduling (eg. aggregates), unless needed for backwards"},{"line_number":166,"context_line":"compatibility."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9u3U%3D","line":166,"in_reply_to":"AAAAWH%2F90KY%3D","updated":"2014-04-02 14:08:14.000000000","message":"Good question, I\u0027m up to any idea here :-)","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0cc7de4b0fb2a80d13d31e94b0a22030db2b3935","unresolved":false,"context_lines":[{"line_number":175,"context_line":"Primary assignee:"},{"line_number":176,"context_line":"  sylvain-bauza"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"Other contributors:"},{"line_number":179,"context_line":"  None (yet)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F90KU%3D","line":178,"updated":"2014-04-01 23:20:18.000000000","message":"this sounds like work for more then one person ...","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e86a95fda587e40cfb4cd4f0bcce976b8a607c","unresolved":false,"context_lines":[{"line_number":175,"context_line":"Primary assignee:"},{"line_number":176,"context_line":"  sylvain-bauza"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"Other contributors:"},{"line_number":179,"context_line":"  None (yet)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9vtg%3D","line":178,"in_reply_to":"AAAAWH%2F90KU%3D","updated":"2014-04-02 12:49:48.000000000","message":"Well, that\u0027s basically baby-steps here","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0cc7de4b0fb2a80d13d31e94b0a22030db2b3935","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Blueprints :"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"- nova/remove-cast-to-schedule-run-instance (alaski)"},{"line_number":198,"context_line":"- nova/make-resource-tracker-use-objects (pmurray)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F90JY%3D","line":197,"updated":"2014-04-01 23:20:18.000000000","message":"Can you include the launchpad links to these as well.\n\nIf these are dependencies, then we cannot approve this until those are approved.","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e86a95fda587e40cfb4cd4f0bcce976b8a607c","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Blueprints :"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"- nova/remove-cast-to-schedule-run-instance (alaski)"},{"line_number":198,"context_line":"- nova/make-resource-tracker-use-objects (pmurray)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9vr4%3D","line":197,"in_reply_to":"AAAAWH%2F90JY%3D","updated":"2014-04-02 12:49:48.000000000","message":"For launchpad link, will do\n\nThese BPs are related work, but independent. Should I consider moving them to elsewhere ?","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0cc7de4b0fb2a80d13d31e94b0a22030db2b3935","unresolved":false,"context_lines":[{"line_number":207,"context_line":"Documentation Impact"},{"line_number":208,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Need to document new config value (scheduler_client)."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F90JQ%3D","line":210,"updated":"2014-04-01 23:20:18.000000000","message":"once again I don\u0027t think we need the config value yet.","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90e86a95fda587e40cfb4cd4f0bcce976b8a607c","unresolved":false,"context_lines":[{"line_number":207,"context_line":"Documentation Impact"},{"line_number":208,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Need to document new config value (scheduler_client)."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"AAAAWH%2F9vr0%3D","line":210,"in_reply_to":"AAAAWH%2F90JQ%3D","updated":"2014-04-02 12:49:48.000000000","message":"Done","commit_id":"8b1534209944797c2d31a24c1f9213879e13f9eb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f9abeb8bc36cc1ca44b81d7b71575c13922fff71","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In order to help splitting out Nova scheduler into its own project, there is"},{"line_number":14,"context_line":"need to refactor all the scheduler interfaces to the rest of Nova into a single"},{"line_number":15,"context_line":"seam."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAWH%2F9lQA%3D","line":15,"updated":"2014-04-03 15:01:36.000000000","message":"Maybe we need to split this blueprint into two. But there are three clear parts in my head...\n\nFirst is drawing a line in the sand:\n* single query scheduler method (currently implemented by the scheduler rpcapi)\n* single method to report your status to the scheduler (currently implemented by writing to the nova-db)\n\nThen I see the next steps are cleaning up, so that line in the sand is a hard firewall between the scheduler and the rest of nova.\n\nThe next bit being:\n* scheduler only access ComputeNode table\n* rest of nova doesn\u0027t access ComputeNode table\n\nThis will involve putting more data into the compute node table, like aggregate info, heartbeat timestaps, etc.\n\nThe final part is to make sure the rest of nova only uses the scheduler lib to talk to the scheduler. This is the dependent blueprint for that step: https://blueprints.launchpad.net/nova/+spec/remove-cast-to-schedule-run-instance","commit_id":"be2237650893c932c247cfdbffc5ab2126c2f60e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f9abeb8bc36cc1ca44b81d7b71575c13922fff71","unresolved":false,"context_lines":[{"line_number":78,"context_line":"these interfaces."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Later on, before forklifting scheduler code into Gantt, we will need to"},{"line_number":81,"context_line":"consider replacing use of conductor inside these methods by either a call"},{"line_number":82,"context_line":"to a cached local storage duplicating Nova information, or an external RPC or"},{"line_number":83,"context_line":"REST call to Nova. The above change is not in the scope of this current"},{"line_number":84,"context_line":"blueprint."}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAWH%2F9lLw%3D","line":81,"updated":"2014-04-03 15:01:36.000000000","message":"There should be a single access to the ComputeNode table when reading out the data. That should not really use the conductor at this point.\n\nOther services can use the conductor to write into the ComputeNode table, to send their updates to the scheduler, just as they do today.","commit_id":"be2237650893c932c247cfdbffc5ab2126c2f60e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f9abeb8bc36cc1ca44b81d7b71575c13922fff71","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"This option is highly risky and imposes a code freeze for a certain amount of"},{"line_number":96,"context_line":"time which can slip if problems raise. As said, the consensus at mid-cycle"},{"line_number":97,"context_line":"meetup led to the proposal given in the description."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAWH%2F9lLU%3D","line":97,"updated":"2014-04-03 15:01:36.000000000","message":"we could not freeze the code, and resolve the issues later, but thats even worse really.","commit_id":"be2237650893c932c247cfdbffc5ab2126c2f60e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f9abeb8bc36cc1ca44b81d7b71575c13922fff71","unresolved":false,"context_lines":[{"line_number":137,"context_line":"------------------"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"There will be change in performance with Scheduler -\u003e Nova interfaces as we"},{"line_number":140,"context_line":"will remove direct calls to DB objects by calls to conductor."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Except that, no other impacts are planned, as it is only refactoring effort."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAWH%2F9lLI%3D","line":140,"updated":"2014-04-03 15:01:36.000000000","message":"erm, I don\u0027t understand why that is part of this blueprint.","commit_id":"be2237650893c932c247cfdbffc5ab2126c2f60e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f9abeb8bc36cc1ca44b81d7b71575c13922fff71","unresolved":false,"context_lines":[{"line_number":175,"context_line":"- Disallow any DB calls to compute node stats from any other nova service: TODO"},{"line_number":176,"context_line":"- Disallow any DB calls except compute node stats, from nova-scheduler: TODO"},{"line_number":177,"context_line":"- Disallow any outbound RPC from nova-scheduler: TODO"},{"line_number":178,"context_line":"- Disallow any node to make scheduler RPC except via scheduler client"},{"line_number":179,"context_line":"  (only if not pinned to a specific RPC version before that is possible): TODO"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAWH%2F9lNs%3D","line":178,"updated":"2014-04-03 15:01:36.000000000","message":"This feels like it should be in the follow up blueprints?","commit_id":"be2237650893c932c247cfdbffc5ab2126c2f60e"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"b443d92202aa037cfd072dbd2842cb94b9a627c2","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"In this blueprint, we remove any direct access from Nova to the Scheduler and"},{"line_number":18,"context_line":"the ComputeNode DB table. Over time, we will remove any direct access from"},{"line_number":19,"context_line":"nova-scheduler to nova, and all db access, except for the ComputeNode table."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAWn%2F%2F6lw%3D","line":19,"updated":"2014-04-08 15:21:25.000000000","message":"So this becomes a shared DB table then ?  That sounds kind of odd","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0bb78bbcc437d35d28e3be94ed720055e2b24a42","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"In this blueprint, we remove any direct access from Nova to the Scheduler and"},{"line_number":18,"context_line":"the ComputeNode DB table. Over time, we will remove any direct access from"},{"line_number":19,"context_line":"nova-scheduler to nova, and all db access, except for the ComputeNode table."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAW3%2F%2F9AY%3D","line":19,"in_reply_to":"AAAAWn%2F%2F6lw%3D","updated":"2014-04-09 09:36:32.000000000","message":"Oh, bad wording, sorry.\n\nIts a DB table only used by the scheduler, that can eventually move to the control of gantt.","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":1981,"name":"Don Dugger","email":"n0ano@n0ano.com","username":"n0ano"},"change_message_id":"8f9bc87c03283c97f24849bb9a94136c6502cdb0","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* No change in behaviour. This is just a refactor."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Produce a scheduler lib, a prototype interface for python-ganttclient"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"* Assume select_destination will be the single call to the scheduler from nova"},{"line_number":50,"context_line":"  by the end of Juno. This is the first bit of the interface."}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAWn%2F%2F6hE%3D","line":47,"updated":"2014-04-08 14:39:36.000000000","message":"I think we need another task here (that I\u0027m working on) - `identify all direct references from the scheduler into nova code and turn those into externally callable interfaces\u0027","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0bb78bbcc437d35d28e3be94ed720055e2b24a42","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* No change in behaviour. This is just a refactor."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Produce a scheduler lib, a prototype interface for python-ganttclient"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"* Assume select_destination will be the single call to the scheduler from nova"},{"line_number":50,"context_line":"  by the end of Juno. This is the first bit of the interface."}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAW3%2F%2F8%2Fw%3D","line":47,"in_reply_to":"AAAAWn%2F%2F6hE%3D","updated":"2014-04-09 09:36:32.000000000","message":"I think thats the wrong approach... so I didn\u0027t include that here.\n\nI think we need to remove all of those, and we do that by providing extra data to the update_resource_stats call. See line 58.\n\nBut thats a follow on blueprint, in my view. Else this blueprint will never be \"complete\", this is meant to be a chunk of work for Juno-1, at least that was my plan.","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"b443d92202aa037cfd072dbd2842cb94b9a627c2","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  is the second part of the interface."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"This is just drawing a line in the sand. In the future we will need to make"},{"line_number":56,"context_line":"more invasive changes, such as:"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* Adding more data into ComputeNode, so the scheduler doesn\u0027t need access to"},{"line_number":59,"context_line":"  any other DB tables. For example, filters that need to know about the AZ,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAWn%2F%2F6Rg%3D","line":56,"updated":"2014-04-08 15:21:25.000000000","message":"I\u0027m a tad confused now about whether these \"in the future\" changes are in included in the scope of this BP or not ?","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0bb78bbcc437d35d28e3be94ed720055e2b24a42","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  is the second part of the interface."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"This is just drawing a line in the sand. In the future we will need to make"},{"line_number":56,"context_line":"more invasive changes, such as:"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* Adding more data into ComputeNode, so the scheduler doesn\u0027t need access to"},{"line_number":59,"context_line":"  any other DB tables. For example, filters that need to know about the AZ,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAW3%2F%2F8%2Bk%3D","line":56,"in_reply_to":"AAAAWn%2F%2F6Rg%3D","updated":"2014-04-09 09:36:32.000000000","message":"Ah, yes, I put them here to exclude the work from this blueprint, but they are important to understand why we are bothering, I feel.\n\nThe work items intends to clear that up a bit, maybe I should put is somewhere else? Not sure.","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":1981,"name":"Don Dugger","email":"n0ano@n0ano.com","username":"n0ano"},"change_message_id":"8f9bc87c03283c97f24849bb9a94136c6502cdb0","unresolved":false,"context_lines":[{"line_number":63,"context_line":"  the resource tracker to the scheduler in a format that the matches the"},{"line_number":64,"context_line":"  filters and/or weights on the receiving end. Also ensuring, only the data"},{"line_number":65,"context_line":"  that is required for your particular set of filters and/or weights are sent."},{"line_number":66,"context_line":"  This is very similar to the extensible resource tracker blueprint."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Here we need to define a line in the sand by exposing a Scheduler interface"},{"line_number":69,"context_line":"that Nova can use (mostly the ResourceTracker) for updating stats to the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAWn%2F%2F6fc%3D","line":66,"updated":"2014-04-08 14:39:36.000000000","message":"Not sure I\u0027d even talk about these `invasive changes\u0027 yet, this is speculative and these items would require their own separate BPs anyway.","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0bb78bbcc437d35d28e3be94ed720055e2b24a42","unresolved":false,"context_lines":[{"line_number":63,"context_line":"  the resource tracker to the scheduler in a format that the matches the"},{"line_number":64,"context_line":"  filters and/or weights on the receiving end. Also ensuring, only the data"},{"line_number":65,"context_line":"  that is required for your particular set of filters and/or weights are sent."},{"line_number":66,"context_line":"  This is very similar to the extensible resource tracker blueprint."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Here we need to define a line in the sand by exposing a Scheduler interface"},{"line_number":69,"context_line":"that Nova can use (mostly the ResourceTracker) for updating stats to the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAW3%2F%2F8%2BU%3D","line":66,"in_reply_to":"AAAAWn%2F%2F6fc%3D","updated":"2014-04-09 09:36:32.000000000","message":"Yep, the idea was to exclude them from this BP. Bad wording I guess.","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"b443d92202aa037cfd072dbd2842cb94b9a627c2","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    get_resource_placements(context, resource_request, placements\u003d1)"},{"line_number":83,"context_line":"        :param context: security context"},{"line_number":84,"context_line":"        :param requested_resources: specification of requested resources"},{"line_number":85,"context_line":"        :param placements how many placements to return"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    update_resource_stats(context, name, stats, resource_type\u003d\u0027compute\u0027)"},{"line_number":88,"context_line":"        :param context: context"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAWn%2F%2F6Q0%3D","line":85,"updated":"2014-04-08 15:21:25.000000000","message":"How would information on something like scheduler groups be passed in via this interface ?    The represent a data set that the  scheduler needs to know about, but they don\u0027t seem to fit the update_resource_stats model ?","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e48c8163bd73f89e6f59eaca1043caec63ebeed4","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    get_resource_placements(context, resource_request, placements\u003d1)"},{"line_number":83,"context_line":"        :param context: security context"},{"line_number":84,"context_line":"        :param requested_resources: specification of requested resources"},{"line_number":85,"context_line":"        :param placements how many placements to return"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    update_resource_stats(context, name, stats, resource_type\u003d\u0027compute\u0027)"},{"line_number":88,"context_line":"        :param context: context"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAW3%2F%2Fq7o%3D","line":85,"in_reply_to":"AAAAW3%2F%2F68c%3D","updated":"2014-04-11 09:11:35.000000000","message":"Yeah, +1\n\nWe should get that dict sorted before this is approved, leaving that to bauzas who is working on a prototype :)","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"868f175a791f838acc9e7a57c13e082acc64faeb","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    get_resource_placements(context, resource_request, placements\u003d1)"},{"line_number":83,"context_line":"        :param context: security context"},{"line_number":84,"context_line":"        :param requested_resources: specification of requested resources"},{"line_number":85,"context_line":"        :param placements how many placements to return"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    update_resource_stats(context, name, stats, resource_type\u003d\u0027compute\u0027)"},{"line_number":88,"context_line":"        :param context: context"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAW3%2F%2F68c%3D","line":85,"in_reply_to":"AAAAW3%2F%2F89c%3D","updated":"2014-04-09 13:40:24.000000000","message":"I don\u0027t think you need B approval to do the prototyping to  see how this might look - but equally I\u0027m not sure we should be approving BPs where the level of detail is vague on how things will work.   The idea of having this stage more formalised was, I though, so that we could make sure some of this thinking has happened before we get to reviewing implementation and finding that there is wide scale disagreement.\n\nMaybe including some strawman of what that dict would look like now would at least help us to spot any obvious issues, etc and get a degree of confidence that the interface can be as simple as it appears here.\n\nAt the moment i think we\u0027re one level of abstraction to high in this regard.","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0bb78bbcc437d35d28e3be94ed720055e2b24a42","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    get_resource_placements(context, resource_request, placements\u003d1)"},{"line_number":83,"context_line":"        :param context: security context"},{"line_number":84,"context_line":"        :param requested_resources: specification of requested resources"},{"line_number":85,"context_line":"        :param placements how many placements to return"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    update_resource_stats(context, name, stats, resource_type\u003d\u0027compute\u0027)"},{"line_number":88,"context_line":"        :param context: context"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAW3%2F%2F89c%3D","line":85,"in_reply_to":"AAAAWn%2F%2F6Q0%3D","updated":"2014-04-09 09:36:32.000000000","message":"Its part of the resource_request, that includes group membership, scheduler hints, etc.\n\nIts very vague, so I kinda hoped the dict format would evolve. Its not really discussed here, because I don\u0027t really know what we need yet.\n\nI just want to draw these lines in the sand, pull stuff apart a bit, and see how it looks.","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"b443d92202aa037cfd072dbd2842cb94b9a627c2","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Notifications impact"},{"line_number":123,"context_line":"--------------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"None"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Other end user impact"},{"line_number":128,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAWn%2F%2F6Eg%3D","line":125,"updated":"2014-04-08 15:21:25.000000000","message":"How would a broken out scheduler send notifications ?","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e48c8163bd73f89e6f59eaca1043caec63ebeed4","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Notifications impact"},{"line_number":123,"context_line":"--------------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"None"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Other end user impact"},{"line_number":128,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAW3%2F%2Fq58%3D","line":125,"in_reply_to":"AAAAW3%2F%2F66U%3D","updated":"2014-04-11 09:11:35.000000000","message":"Thats not part of this blueprint though. If its a new service it will need its own notification system. It should work without nova being present.\n\nI am strongly against designing everything up front though. The major gaps/issues with this line in the sand are discussed in the future work above.\n\nI really see this as tidying up the current Nova code so things are less... entangled, with an eye to making a new separate project later on.","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"868f175a791f838acc9e7a57c13e082acc64faeb","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Notifications impact"},{"line_number":123,"context_line":"--------------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"None"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Other end user impact"},{"line_number":128,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAW3%2F%2F66U%3D","line":125,"in_reply_to":"AAAAW3%2F%2F89A%3D","updated":"2014-04-09 13:40:24.000000000","message":"Even though its line in the sand work we should be trying to satisfy ourselves that there are no obvious gaps.\n\nUsing oslo seems to imply that a broken out scheduler would have its own MQ service on which to send notifications, which seems like a fairly signiificant architecture point and hence worth  surfacing at this stage I think.","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0bb78bbcc437d35d28e3be94ed720055e2b24a42","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Notifications impact"},{"line_number":123,"context_line":"--------------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"None"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Other end user impact"},{"line_number":128,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"AAAAW3%2F%2F89A%3D","line":125,"in_reply_to":"AAAAWn%2F%2F6Eg%3D","updated":"2014-04-09 09:36:32.000000000","message":"Eventually, in the same way through oslo, but this is really just the initial Juno-1 \"draw line in sand work\"","commit_id":"56b3e6455c2386e069eb014c85718c860352bfda"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"669c2ff3e11bdbbc4538982529d633f2a50dd4eb","unresolved":false,"context_lines":[{"line_number":14,"context_line":"isolate the scheduler from the rest of nova, in a similar way to how direct"},{"line_number":15,"context_line":"database access was removed from nova-compute."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"In this blueprint, we remove any direct access from Nova to the Scheduler and"},{"line_number":18,"context_line":"the ComputeNode DB table, meaning that ComputeNode table will be dedicated to"},{"line_number":19,"context_line":"the solely use of Scheduler."},{"line_number":20,"context_line":"Over time, we will remove any direct access from nova-scheduler to nova and"}],"source_content_type":"text/x-rst","patch_set":10,"id":"AAAAW3%2F%2FpQc%3D","line":17,"updated":"2014-04-11 15:05:03.000000000","message":"What direct access exists from Nova to the scheduler?","commit_id":"fad08eff779b01194ded1081d32204b4eb6ec028"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"07d59fb77bad38945f837ad6efc007ce3bab6426","unresolved":false,"context_lines":[{"line_number":14,"context_line":"isolate the scheduler from the rest of nova, in a similar way to how direct"},{"line_number":15,"context_line":"database access was removed from nova-compute."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"In this blueprint, we remove any direct access from Nova to the Scheduler and"},{"line_number":18,"context_line":"the ComputeNode DB table, meaning that ComputeNode table will be dedicated to"},{"line_number":19,"context_line":"the solely use of Scheduler."},{"line_number":20,"context_line":"Over time, we will remove any direct access from nova-scheduler to nova and"}],"source_content_type":"text/x-rst","patch_set":10,"id":"AAAAW3%2F%2FjZo%3D","line":17,"in_reply_to":"AAAAW3%2F%2FpQc%3D","updated":"2014-04-12 20:49:53.000000000","message":"Correct, will rewrite this sentence : the main problem is the direct access to ComputeNode, that\u0027s it.","commit_id":"fad08eff779b01194ded1081d32204b4eb6ec028"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"669c2ff3e11bdbbc4538982529d633f2a50dd4eb","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"In this blueprint, we remove any direct access from Nova to the Scheduler and"},{"line_number":18,"context_line":"the ComputeNode DB table, meaning that ComputeNode table will be dedicated to"},{"line_number":19,"context_line":"the solely use of Scheduler."},{"line_number":20,"context_line":"Over time, we will remove any direct access from nova-scheduler to nova and"},{"line_number":21,"context_line":"other DB tables except ComputeNode but this is not in the scope of that"},{"line_number":22,"context_line":"blueprint."}],"source_content_type":"text/x-rst","patch_set":10,"id":"AAAAW3%2F%2FpP4%3D","line":19,"updated":"2014-04-11 15:05:03.000000000","message":"This part sounds like maybe it\u0027s a better place to start.  \"Make nova-scheduler the only service that touches the computenode db table\" is enough for a blueprint of its own.\n\nHowever, that goal seems quite directly in conflict with the other effort to remove db access from the scheduler completely.","commit_id":"fad08eff779b01194ded1081d32204b4eb6ec028"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"07d59fb77bad38945f837ad6efc007ce3bab6426","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"In this blueprint, we remove any direct access from Nova to the Scheduler and"},{"line_number":18,"context_line":"the ComputeNode DB table, meaning that ComputeNode table will be dedicated to"},{"line_number":19,"context_line":"the solely use of Scheduler."},{"line_number":20,"context_line":"Over time, we will remove any direct access from nova-scheduler to nova and"},{"line_number":21,"context_line":"other DB tables except ComputeNode but this is not in the scope of that"},{"line_number":22,"context_line":"blueprint."}],"source_content_type":"text/x-rst","patch_set":10,"id":"AAAAW3%2F%2FjZY%3D","line":19,"in_reply_to":"AAAAW3%2F%2FpP4%3D","updated":"2014-04-12 20:49:53.000000000","message":"Okay, sounds clear, I will propose to amend the bp by proposing a library for replacing the direct access to ComputeNode + proxying the API\n\nPlease note that I said below that access from the sched to other tables is not part of this bp. Will propose another one for that task.","commit_id":"fad08eff779b01194ded1081d32204b4eb6ec028"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6a7fb8ef99658c2096f167b24de13da9ccfde993","unresolved":false,"context_lines":[{"line_number":17,"context_line":"In this blueprint, we need to define in a clear library all accesses to the"},{"line_number":18,"context_line":"Scheduler and its dependencies, such as the compute_nodes table which has to be"},{"line_number":19,"context_line":"dedicated to the solely use of Scheduler, instead of being directly accessed"},{"line_number":20,"context_line":"by Nova ResourceTracker."},{"line_number":21,"context_line":"Over time, we will remove any direct access from nova-scheduler to nova and"},{"line_number":22,"context_line":"other DB tables except compute_nodes but this is not in the scope of that"},{"line_number":23,"context_line":"blueprint."}],"source_content_type":"text/x-rst","patch_set":12,"id":"AAAAW3%2F%2FbiM%3D","line":20,"updated":"2014-04-14 16:20:56.000000000","message":"Now I think this spec is mixing up the following two things that I think are separate:\n\n1) A library for access *to* the scheduler\n\n2) abstracting away the scheduler\u0027s access to a specific nova db table?","commit_id":"f1769249e17018aaa23c994b30f4dca47cea2387"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9222ca3771c1d9be6ce9ec65cc7f215015f6371a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"In this blueprint, we need to define in a clear library all accesses to the"},{"line_number":18,"context_line":"Scheduler and its dependencies, such as the compute_nodes table which has to be"},{"line_number":19,"context_line":"dedicated to the solely use of Scheduler, instead of being directly accessed"},{"line_number":20,"context_line":"by Nova ResourceTracker."},{"line_number":21,"context_line":"Over time, we will remove any direct access from nova-scheduler to nova and"},{"line_number":22,"context_line":"other DB tables except compute_nodes but this is not in the scope of that"},{"line_number":23,"context_line":"blueprint."}],"source_content_type":"text/x-rst","patch_set":12,"id":"AAAAW3%2F%2FWq4%3D","line":20,"in_reply_to":"AAAAW3%2F%2FbiM%3D","updated":"2014-04-15 07:53:41.000000000","message":"Uh, seems like I misexplained my thoughts. No, we\u0027re just trying to remove access to compute_nodes (which is a scheduler table) from other bits of Nova (ResourceTracker here). \nSched access to compute_nodes is not planned to be changed in this blueprint.\n\nWill deliver another explanation here to make things clear (hope so at least ;-) )","commit_id":"f1769249e17018aaa23c994b30f4dca47cea2387"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"18d1bb542e2f40f1c618fe2529bca1e2df2c6834","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"We want to split out nova-scheduler into gantt. To do this, we need to"},{"line_number":14,"context_line":"isolate the scheduler from the rest of nova, in a similar way to how direct"},{"line_number":15,"context_line":"database access was removed from nova-compute."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"In this blueprint, we need to define in a clear library all accesses to the"},{"line_number":18,"context_line":"Scheduler code or data (compute_nodes DB table) from other Nova bits (conductor"}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAW3%2F%2FRUI%3D","line":15,"updated":"2014-04-15 16:50:21.000000000","message":"I would remove the mention of nova-compute here.  I think the two situations and their goals are actually quite different.  I would just remove everything after \"in a similar way ...\".","commit_id":"2747dfe613554753a4757354758157854a2c0f3f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6abb71f1cdc1ad114f875ff95566583498218fdc","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"We want to split out nova-scheduler into gantt. To do this, we need to"},{"line_number":14,"context_line":"isolate the scheduler from the rest of nova, in a similar way to how direct"},{"line_number":15,"context_line":"database access was removed from nova-compute."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"In this blueprint, we need to define in a clear library all accesses to the"},{"line_number":18,"context_line":"Scheduler code or data (compute_nodes DB table) from other Nova bits (conductor"}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAW3%2F%2FPkw%3D","line":15,"in_reply_to":"AAAAW3%2F%2FRUI%3D","updated":"2014-04-15 20:21:35.000000000","message":"Agreed.","commit_id":"2747dfe613554753a4757354758157854a2c0f3f"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"18d1bb542e2f40f1c618fe2529bca1e2df2c6834","unresolved":false,"context_lines":[{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"To create the gantt project we need to introduce a much cleaner \"seam\" between"},{"line_number":29,"context_line":"nova-scheduler and the rest of the scheduler. This will allow the existing"},{"line_number":30,"context_line":"nova-scheduler code to remain in nova, while at the same time giving us a clean"},{"line_number":31,"context_line":"way to test the new gantt scheduler."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAW3%2F%2FRSw%3D","line":29,"updated":"2014-04-15 16:50:21.000000000","message":"I\u0027m confused by \"nova-scheduler and the rest of the scheduler\" here.\n\nDid you mean \"nova-scheduler and the rest of nova\" ?","commit_id":"2747dfe613554753a4757354758157854a2c0f3f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6abb71f1cdc1ad114f875ff95566583498218fdc","unresolved":false,"context_lines":[{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"To create the gantt project we need to introduce a much cleaner \"seam\" between"},{"line_number":29,"context_line":"nova-scheduler and the rest of the scheduler. This will allow the existing"},{"line_number":30,"context_line":"nova-scheduler code to remain in nova, while at the same time giving us a clean"},{"line_number":31,"context_line":"way to test the new gantt scheduler."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAW3%2F%2FPks%3D","line":29,"in_reply_to":"AAAAW3%2F%2FRSw%3D","updated":"2014-04-15 20:21:35.000000000","message":"Done","commit_id":"2747dfe613554753a4757354758157854a2c0f3f"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"18d1bb542e2f40f1c618fe2529bca1e2df2c6834","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"* Produce a scheduler lib, a prototype interface for python-ganttclient"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"* Assume select_destination will be the single call to the scheduler from nova"},{"line_number":52,"context_line":"  by the end of Juno. This is the first bit of the interface."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* Move all accesses to the compute_nodes table behind the new scheduler lib."}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAW3%2F%2FRSE%3D","line":51,"updated":"2014-04-15 16:50:21.000000000","message":"technically \"select_destinations\" (missing \u0027s\u0027)","commit_id":"2747dfe613554753a4757354758157854a2c0f3f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6abb71f1cdc1ad114f875ff95566583498218fdc","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"* Produce a scheduler lib, a prototype interface for python-ganttclient"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"* Assume select_destination will be the single call to the scheduler from nova"},{"line_number":52,"context_line":"  by the end of Juno. This is the first bit of the interface."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* Move all accesses to the compute_nodes table behind the new scheduler lib."}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAW3%2F%2FPkg%3D","line":51,"in_reply_to":"AAAAW3%2F%2FRSE%3D","updated":"2014-04-15 20:21:35.000000000","message":"Done","commit_id":"2747dfe613554753a4757354758157854a2c0f3f"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"18d1bb542e2f40f1c618fe2529bca1e2df2c6834","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        :param context: security context"},{"line_number":75,"context_line":"        :param requested_resources: specification of requested resources"},{"line_number":76,"context_line":"        :param placements: how many placements to return"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    update_resource_stats(context, name, stats, resource_type\u003d\u0027compute\u0027)"},{"line_number":79,"context_line":"        \"\"\"Update Scheduler state for a set of resources.\"\"\""}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAW3%2F%2FRQE%3D","line":76,"updated":"2014-04-15 16:50:21.000000000","message":"You mention select_destinations() above.  I guess you\u0027re proposing a different API here?  Perhaps some text explaining what\u0027s different from the current API and why?\n\nFor example, what is the format of the arguments?  How does the old API map to this?","commit_id":"2747dfe613554753a4757354758157854a2c0f3f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6abb71f1cdc1ad114f875ff95566583498218fdc","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        :param context: security context"},{"line_number":75,"context_line":"        :param requested_resources: specification of requested resources"},{"line_number":76,"context_line":"        :param placements: how many placements to return"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    update_resource_stats(context, name, stats, resource_type\u003d\u0027compute\u0027)"},{"line_number":79,"context_line":"        \"\"\"Update Scheduler state for a set of resources.\"\"\""}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAW3%2F%2FPkA%3D","line":76,"in_reply_to":"AAAAW3%2F%2FRQE%3D","updated":"2014-04-15 20:21:35.000000000","message":"The goal is to proxify select_destinations by proposing something less dedicated to Nova. \nNo worries, I\u0027ll rewrite this section to make things more clear. Tks.","commit_id":"2747dfe613554753a4757354758157854a2c0f3f"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"18d1bb542e2f40f1c618fe2529bca1e2df2c6834","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        :param resource_type: Type of resource: compute or volume or network"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"If we still need to support the node and host distinction in nova, this can be"},{"line_number":86,"context_line":"done by passing and returning \"host.node\" as the resource name."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"In a similar way, resource_request, will, for now, contain both"},{"line_number":89,"context_line":"request_spec and filter_properties."}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAW3%2F%2FRPM%3D","line":86,"updated":"2014-04-15 16:50:21.000000000","message":"I don\u0027t think this works.  A valid hostname or nodename could include \u0027.\u0027.","commit_id":"2747dfe613554753a4757354758157854a2c0f3f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6abb71f1cdc1ad114f875ff95566583498218fdc","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        :param resource_type: Type of resource: compute or volume or network"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"If we still need to support the node and host distinction in nova, this can be"},{"line_number":86,"context_line":"done by passing and returning \"host.node\" as the resource name."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"In a similar way, resource_request, will, for now, contain both"},{"line_number":89,"context_line":"request_spec and filter_properties."}],"source_content_type":"text/x-rst","patch_set":13,"id":"AAAAW3%2F%2FPjw%3D","line":86,"in_reply_to":"AAAAW3%2F%2FRPM%3D","updated":"2014-04-15 20:21:35.000000000","message":"Agreed.","commit_id":"2747dfe613554753a4757354758157854a2c0f3f"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"857d0f618185cb544d25c35bcd3c28d153b26eab","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Assume select_destinations will be the single call to the scheduler from nova"},{"line_number":51,"context_line":"  by the end of Juno. This is the first bit of the interface, but will be"},{"line_number":52,"context_line":"  proxified to be less Nova-specific in terms of interface."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* Move all accesses to the compute_nodes table behind the new scheduler lib."},{"line_number":55,"context_line":"  This is the second part of the interface."}],"source_content_type":"text/x-rst","patch_set":15,"id":"AAAAXH%2F%2F3Kk%3D","line":52,"updated":"2014-04-16 21:35:37.000000000","message":"Is there BP to make select_destinations the only call to the scheduler  by the end of Juno?\n\nnot sure what this last sentence means.","commit_id":"c09acc8dc1bfde285cb9d0101d8ec5925123f892"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6d363d6cd0e3a4c67665fd2f6cec41901778b831","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Assume select_destinations will be the single call to the scheduler from nova"},{"line_number":51,"context_line":"  by the end of Juno. This is the first bit of the interface, but will be"},{"line_number":52,"context_line":"  proxified to be less Nova-specific in terms of interface."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* Move all accesses to the compute_nodes table behind the new scheduler lib."},{"line_number":55,"context_line":"  This is the second part of the interface."}],"source_content_type":"text/x-rst","patch_set":15,"id":"AAAAXH%2F%2Fr24%3D","line":52,"in_reply_to":"AAAAXH%2F%2F3Kk%3D","updated":"2014-04-18 08:54:12.000000000","message":"I was planning to proxify select_destinations() by a less Nova-specific method called get_resource_placements(), but your point is valid.\n\nAs the current code will only be located within Nova, there is no need to un-Nova things until we do the fork by itself.","commit_id":"c09acc8dc1bfde285cb9d0101d8ec5925123f892"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"857d0f618185cb544d25c35bcd3c28d153b26eab","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Scheduler instead of directly calling DB for updating compute_nodes table."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"In addition, calls to the Scheduler RPC API will now go through the scheduler"},{"line_number":62,"context_line":"lib, as python-ganttclient may end up making that a REST call. But given the"},{"line_number":63,"context_line":"above assumptions, we need only do this for select_destinations."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"As said, all interfaces will go into a single module (nova.scheduler.client)."}],"source_content_type":"text/x-rst","patch_set":15,"id":"AAAAXH%2F%2F3KU%3D","line":62,"updated":"2014-04-16 21:35:37.000000000","message":"I don\u0027t see why python-gantt client potentially going to REST is relevant. This item seems out of scope of this BP.","commit_id":"c09acc8dc1bfde285cb9d0101d8ec5925123f892"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6d363d6cd0e3a4c67665fd2f6cec41901778b831","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Scheduler instead of directly calling DB for updating compute_nodes table."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"In addition, calls to the Scheduler RPC API will now go through the scheduler"},{"line_number":62,"context_line":"lib, as python-ganttclient may end up making that a REST call. But given the"},{"line_number":63,"context_line":"above assumptions, we need only do this for select_destinations."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"As said, all interfaces will go into a single module (nova.scheduler.client)."}],"source_content_type":"text/x-rst","patch_set":15,"id":"AAAAXH%2F%2Fr2I%3D","line":62,"in_reply_to":"AAAAXH%2F%2F3KU%3D","updated":"2014-04-18 08:54:12.000000000","message":"Agreed, will rephrase this by removing note to REST.","commit_id":"c09acc8dc1bfde285cb9d0101d8ec5925123f892"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"857d0f618185cb544d25c35bcd3c28d153b26eab","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    get_resource_placements(context, resource_request, placements\u003d1)"},{"line_number":70,"context_line":"        \"\"\"Returns a list of resources based on request criterias."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        Proxifies select_destinations with generic attributes."},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        :param context: security context"},{"line_number":75,"context_line":"        :param requested_resources: specification of requested resources"}],"source_content_type":"text/x-rst","patch_set":15,"id":"AAAAXH%2F%2F3Ic%3D","line":72,"updated":"2014-04-16 21:35:37.000000000","message":"why does this have to be generic if its just for nova?\n\nCan\u0027t we make it generic later once we move to gantt?","commit_id":"c09acc8dc1bfde285cb9d0101d8ec5925123f892"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6d363d6cd0e3a4c67665fd2f6cec41901778b831","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    get_resource_placements(context, resource_request, placements\u003d1)"},{"line_number":70,"context_line":"        \"\"\"Returns a list of resources based on request criterias."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        Proxifies select_destinations with generic attributes."},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        :param context: security context"},{"line_number":75,"context_line":"        :param requested_resources: specification of requested resources"}],"source_content_type":"text/x-rst","patch_set":15,"id":"AAAAXH%2F%2Fr1s%3D","line":72,"in_reply_to":"AAAAXH%2F%2F3Ic%3D","updated":"2014-04-18 08:54:12.000000000","message":"Done","commit_id":"c09acc8dc1bfde285cb9d0101d8ec5925123f892"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"857d0f618185cb544d25c35bcd3c28d153b26eab","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        :param context: context"},{"line_number":82,"context_line":"        :param name: name, as returned by get_resource_placements"},{"line_number":83,"context_line":"        :param stats: dict of stats to send to scheduler"},{"line_number":84,"context_line":"        :param resource_type: Type of resource: compute or volume or network"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"If we still need to support the node and host distinction in nova, this can be"},{"line_number":87,"context_line":"done by passing a tuple (host, node) as the resource name, instead of a string."}],"source_content_type":"text/x-rst","patch_set":15,"id":"AAAAXH%2F%2F3I0%3D","line":84,"updated":"2014-04-16 21:35:37.000000000","message":"Generalizing this to things that nova scheduler doesn\u0027t do today (volume or network) seems to go against the  \"No change in behaviour.\" point","commit_id":"c09acc8dc1bfde285cb9d0101d8ec5925123f892"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6d363d6cd0e3a4c67665fd2f6cec41901778b831","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        :param context: context"},{"line_number":82,"context_line":"        :param name: name, as returned by get_resource_placements"},{"line_number":83,"context_line":"        :param stats: dict of stats to send to scheduler"},{"line_number":84,"context_line":"        :param resource_type: Type of resource: compute or volume or network"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"If we still need to support the node and host distinction in nova, this can be"},{"line_number":87,"context_line":"done by passing a tuple (host, node) as the resource name, instead of a string."}],"source_content_type":"text/x-rst","patch_set":15,"id":"AAAAXH%2F%2Fr1o%3D","line":84,"in_reply_to":"AAAAXH%2F%2F3I0%3D","updated":"2014-04-18 08:54:12.000000000","message":"Done","commit_id":"c09acc8dc1bfde285cb9d0101d8ec5925123f892"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"6068e18804b42583697ef452fd06501446ddf224","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        :type requested_resources: dict"},{"line_number":74,"context_line":"        :param filter_properties: scheduler hints and instance spec"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    update_resource_stats(context, name, stats, resource_type\u003d\u0027compute\u0027)"},{"line_number":77,"context_line":"        \"\"\"Update Scheduler state for a set of resources.\"\"\""},{"line_number":78,"context_line":"        :param context: context"},{"line_number":79,"context_line":"        :param name: name, as returned by select_destinations"}],"source_content_type":"text/x-rst","patch_set":18,"id":"AAAAXH%2F%2FV2w%3D","line":76,"updated":"2014-04-22 12:23:25.000000000","message":"Joe was -1 on having resource_type included, until we\u0027re actually in a position to support more than compute.","commit_id":"9655b73e0c8e2dda38e41b1f03a00b0efd78e5a6"},{"author":{"_account_id":6699,"name":"Scott Devoid","email":"devoid@anl.gov","username":"scott-devoid"},"change_message_id":"87f590189caa72eb7c702d048d9d9b14e908b59a","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":" Create Scheduler Python Library"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/scheduler-lib"}],"source_content_type":"text/x-rst","patch_set":19,"id":"AAAAXH%2F%2FUc8%3D","line":8,"updated":"2014-04-22 14:33:40.000000000","message":"Any chance that we can rename this to some other term, since the library is not making scheduling decisions in a formal sense? \"Placement Engine\" for example.","commit_id":"2e724b04380ba7c23ccc0132d4ea79b60d2d5853"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9550f8df3cb63f7d90ada3e72ab3ef58e74398b5","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":" Create Scheduler Python Library"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/scheduler-lib"}],"source_content_type":"text/x-rst","patch_set":19,"id":"AAAAXX%2F%2F6bE%3D","line":8,"in_reply_to":"AAAAXH%2F%2FUc8%3D","updated":"2014-04-25 10:53:30.000000000","message":"We can rename it later, but the scheduler is a bit too engrained at this point.\n\nI think the gantt project should probably become a placement engine, and that will help drive the change.","commit_id":"2e724b04380ba7c23ccc0132d4ea79b60d2d5853"},{"author":{"_account_id":6699,"name":"Scott Devoid","email":"devoid@anl.gov","username":"scott-devoid"},"change_message_id":"3499c80559f0c63eb671b1c335ecfb975e3c29c9","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":" Create Scheduler Python Library"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/scheduler-lib"}],"source_content_type":"text/x-rst","patch_set":19,"id":"7adec928_dcb41437","line":8,"in_reply_to":"AAAAXX%2F%2F6bE%3D","updated":"2014-05-16 14:50:41.000000000","message":"Done","commit_id":"2e724b04380ba7c23ccc0132d4ea79b60d2d5853"}]}
