)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9fa380b91ffdaa8639294b65d7a91ee50a945716","unresolved":false,"context_lines":[{"line_number":17,"context_line":"as \"COMPUTE0.example.com\". And after that if instance creation request"},{"line_number":18,"context_line":"with flavor matching metadata as host-aggregate metadata comes, this"},{"line_number":19,"context_line":"host is not filtered by scheduler, since there is no host with hostname"},{"line_number":20,"context_line":"COMPUTE0.example.com, as added in host-aggregate."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Fixed the issue by changing the collation type to utf8_bin for host_mappings"},{"line_number":23,"context_line":"and services tables on mysql backend."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f287b81_b6ed77f1","line":20,"updated":"2017-09-07 10:30:00.000000000","message":"after thinking more of that, RFC4343 clarifies that hostnames and FQDNs are case insensitive [1].\n\nGiven that, I don\u0027t think we should stop supporting hostnames having for example uppercases in there if that\u0027s just because of our DBMS. \n\nRather, we should try to fix the filters call to be case-insensitive. As we have an in-memory cache of aggregates in the HostManager that is case-sensitive (because dictionary keys are indexed by being case-sensitive), I\u0027d rather fix that problem by just lowercasing all hostnames in the host_aggregate_map dictionary and making sure we correctly lookup the right hostname when we build the aggregates list of the HostState object by lowercasing too.\n\n[1] https://tools.ietf.org/html/rfc4343","commit_id":"3fbf5dd9b3288d7b492e946a5181340edc15c299"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"686c6ebc9a007058e75b0bcf5315fcbc9f3e3a8a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"as \"COMPUTE0.example.com\". And after that if instance creation request"},{"line_number":18,"context_line":"with flavor matching metadata as host-aggregate metadata comes, this"},{"line_number":19,"context_line":"host is not filtered by scheduler, since there is no host with hostname"},{"line_number":20,"context_line":"COMPUTE0.example.com, as added in host-aggregate."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Fixed the issue by changing the collation type to utf8_bin for host_mappings"},{"line_number":23,"context_line":"and services tables on mysql backend."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f287b81_169b2b66","line":20,"in_reply_to":"7f287b81_b6ed77f1","updated":"2017-09-07 10:36:04.000000000","message":"To make it clearer, here are a few pointers I\u0027d like to see changed :\n\nhttps://github.com/openstack/nova/blob/0b25082843ef9118f2c01b5f6098fed92554b584/nova/scheduler/host_manager.py#L377\n\nhttps://github.com/openstack/nova/blob/0b25082843ef9118f2c01b5f6098fed92554b584/nova/scheduler/host_manager.py#L390\n\nhttps://github.com/openstack/nova/blob/0b25082843ef9118f2c01b5f6098fed92554b584/nova/scheduler/host_manager.py#L717\n\nHope that helps.","commit_id":"3fbf5dd9b3288d7b492e946a5181340edc15c299"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b4e1b52d027e82df55c39979949c6043c98d1fc8","unresolved":false,"context_lines":[{"line_number":570,"context_line":"@pick_context_manager_reader_allow_async"},{"line_number":571,"context_line":"def service_get_by_compute_host(context, host):"},{"line_number":572,"context_line":"    result \u003d model_query(context, models.Service, read_deleted\u003d\"no\").\\"},{"line_number":573,"context_line":"                filter(models.Service.host \u003d\u003d host).\\"},{"line_number":574,"context_line":"                filter_by(binary\u003d\u0027nova-compute\u0027).\\"},{"line_number":575,"context_line":"                first()"},{"line_number":576,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_96b822e5","line":573,"updated":"2017-08-29 07:45:50.000000000","message":"was this change necessary for some reason? unless I\u0027m mistaken, SQLAlchemy should transform both expressions into the same thing...","commit_id":"655d032eefb64bd96882fcaaa55c41c477e91026"},{"author":{"_account_id":20733,"name":"Rajesh Tailor","email":"ratailor@redhat.com","username":"rajesht"},"change_message_id":"f1a8f9b870dad7da44654e3f32a0d84cf110477a","unresolved":false,"context_lines":[{"line_number":570,"context_line":"@pick_context_manager_reader_allow_async"},{"line_number":571,"context_line":"def service_get_by_compute_host(context, host):"},{"line_number":572,"context_line":"    result \u003d model_query(context, models.Service, read_deleted\u003d\"no\").\\"},{"line_number":573,"context_line":"                filter(models.Service.host \u003d\u003d host).\\"},{"line_number":574,"context_line":"                filter_by(binary\u003d\u0027nova-compute\u0027).\\"},{"line_number":575,"context_line":"                first()"},{"line_number":576,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_ae86e564","line":573,"in_reply_to":"7f287b81_96b822e5","updated":"2017-08-31 06:23:39.000000000","message":"Done","commit_id":"655d032eefb64bd96882fcaaa55c41c477e91026"}],"nova/db/sqlalchemy/api_migrations/migrate_repo/versions/045_mysql_host_mappings_binary_collation.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b4e1b52d027e82df55c39979949c6043c98d1fc8","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    if migrate_engine.name \u003d\u003d \"mysql\":"},{"line_number":16,"context_line":"        migrate_engine.execute(\"ALTER TABLE host_mappings \""},{"line_number":17,"context_line":"                               \"CONVERT TO CHARACTER SET utf8 \""},{"line_number":18,"context_line":"                               \"COLLATE utf8_bin;\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_56a19a93","line":18,"updated":"2017-08-29 07:45:50.000000000","message":"Just making a note for reviewers... the above is upgrade-friendly -- i.e. it\u0027s appropriate for live schema migration. We\u0027re going from less restrictive matching (case-insensitive) to more restrictive matching (case-sensitive). Therefore we do not have the possibility of the above producing constraint violations.","commit_id":"655d032eefb64bd96882fcaaa55c41c477e91026"}],"nova/tests/functional/db/api/test_migrations.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"a60a663f0f191003d99776aa547f83b8b0e0b59d","unresolved":false,"context_lines":[{"line_number":647,"context_line":"        build_requests_host_map \u003d db_utils.get_table(engine, \u0027host_mappings\u0027)"},{"line_number":648,"context_line":"        build_requests_cell_map \u003d db_utils.get_table(engine, \u0027cell_mappings\u0027)"},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"        fake_build_req_cell_map \u003d {\u0027id\u0027: 1, \u0027name\u0027: \u0027cell1\u0027}"},{"line_number":651,"context_line":"        fake_build_req1 \u003d {\u0027id\u0027: 2020,"},{"line_number":652,"context_line":"                           \u0027host\u0027: \u0027COMPUTE1.EXAMPLE.com\u0027,"},{"line_number":653,"context_line":"                           \u0027cell_id\u0027: 1}"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f515b1d_7482eaca","line":650,"range":{"start_line":650,"start_character":34,"end_line":650,"end_character":60},"updated":"2017-09-22 06:58:37.000000000","message":"\u0027uuid\u0027 is required.","commit_id":"582d98855740a9270276f8001df1373d18dc99e2"}]}
