)]}'
{"nova/conf/scheduler.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"10b24d18a2fc8301493130d32596298a3d115fd5","unresolved":false,"context_lines":[{"line_number":137,"context_line":"enabled, where others may prefer to manually discover hosts when one"},{"line_number":138,"context_line":"is added to avoid any overhead from constantly checking. If enabled,"},{"line_number":139,"context_line":"every time this runs, we will select any unmapped hosts out of each"},{"line_number":140,"context_line":"cell database on every run. If no new hosts have been added, this will"},{"line_number":141,"context_line":"select zero rows from each cell database based on an integer comparison."},{"line_number":142,"context_line":"\"\"\"),"},{"line_number":143,"context_line":"]"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_9fd4caea","line":141,"range":{"start_line":140,"start_character":28,"end_line":141,"end_character":72},"updated":"2017-04-28 00:57:31.000000000","message":"I\u0027d remove this. It\u0027s implementation details that the end user (the operator) doesn\u0027t need to care about I don\u0027t think. I\u0027d probably just say \"If no new hosts have been added, this is a noop.\"","commit_id":"8a6b4a19848b593e2991f2e09364ffaf63096f9a"}],"nova/objects/host_mapping.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"031239bcbfeac32a901846120ac5f8e2052a3938","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            status_fn(_(\"Getting compute nodes from cell: %(uuid)s\") %"},{"line_number":198,"context_line":"                      {\u0027uuid\u0027: cm.uuid})"},{"line_number":199,"context_line":"        with context.target_cell(ctxt, cm):"},{"line_number":200,"context_line":"            compute_nodes \u003d objects.ComputeNodeList.get_all_by_not_mapped("},{"line_number":201,"context_line":"                ctxt, 1)"},{"line_number":202,"context_line":"            status_fn(_(\u0027Found %(num)s unmapped computes in cell: %(uuid)s\u0027) %"},{"line_number":203,"context_line":"                      {\u0027num\u0027: len(compute_nodes),"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a1ced50_0ad7f623","line":200,"updated":"2017-03-20 00:35:01.000000000","message":"I\u0027d consider updating the caveat wording in the config option:\n\nhttps://github.com/openstack/nova/blob/47d90a3028438ee8ddc541a807dee3915dcf62aa/nova/conf/scheduler.py#L140\n\nAnd maybe a small feature release note.","commit_id":"4acd7bdf6b55cf21c58e7fd936814e438de2a484"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"10b24d18a2fc8301493130d32596298a3d115fd5","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            status_fn(_(\"Getting compute nodes from cell: %(uuid)s\") %"},{"line_number":198,"context_line":"                      {\u0027uuid\u0027: cm.uuid})"},{"line_number":199,"context_line":"        with context.target_cell(ctxt, cm):"},{"line_number":200,"context_line":"            compute_nodes \u003d objects.ComputeNodeList.get_all_by_not_mapped("},{"line_number":201,"context_line":"                ctxt, 1)"},{"line_number":202,"context_line":"            status_fn(_(\u0027Found %(num)s unmapped computes in cell: %(uuid)s\u0027) %"},{"line_number":203,"context_line":"                      {\u0027num\u0027: len(compute_nodes),"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_df3c9230","line":200,"range":{"start_line":200,"start_character":52,"end_line":200,"end_character":73},"updated":"2017-04-28 00:57:31.000000000","message":"So I\u0027ve got an interesting rolling upgrade question here now. Say we have two cells, one is ocata and one is pike running with the db schema migration to add the compute_nodes.mapped column. What happens when we call this on the ocata cell that doesn\u0027t have this db schema change? I\u0027m thinking about rolling upgrades with computes where we support n-1 and we perform things like minimum compute service checks. Or is the assumption that when you have multiple cells, you have to upgrade the top-level control services at the very end after you\u0027ve upgraded the db schema and computes in all of the cells?","commit_id":"8a6b4a19848b593e2991f2e09364ffaf63096f9a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a4f1fded89f882a0b9f8e062a23fcb14c97d7a77","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            status_fn(_(\"Getting compute nodes from cell: %(uuid)s\") %"},{"line_number":198,"context_line":"                      {\u0027uuid\u0027: cm.uuid})"},{"line_number":199,"context_line":"        with context.target_cell(ctxt, cm):"},{"line_number":200,"context_line":"            compute_nodes \u003d objects.ComputeNodeList.get_all_by_not_mapped("},{"line_number":201,"context_line":"                ctxt, 1)"},{"line_number":202,"context_line":"            status_fn(_(\u0027Found %(num)s unmapped computes in cell: %(uuid)s\u0027) %"},{"line_number":203,"context_line":"                      {\u0027num\u0027: len(compute_nodes),"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_d5667bbb","line":200,"range":{"start_line":200,"start_character":52,"end_line":200,"end_character":73},"in_reply_to":"5ff73747_df3c9230","updated":"2017-05-01 16:33:00.000000000","message":"Yep, API last for this reason.","commit_id":"8a6b4a19848b593e2991f2e09364ffaf63096f9a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"10b24d18a2fc8301493130d32596298a3d115fd5","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                host_mapping \u003d objects.HostMapping("},{"line_number":216,"context_line":"                    ctxt, host\u003dcompute.host,"},{"line_number":217,"context_line":"                    cell_mapping\u003dcm)"},{"line_number":218,"context_line":"                host_mapping.create()"},{"line_number":219,"context_line":"                host_mappings.append(host_mapping)"},{"line_number":220,"context_line":"    return host_mappings"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_1fec3a8d","line":218,"updated":"2017-04-28 00:57:31.000000000","message":"Don\u0027t we need to set compute.mapped \u003d 1 and compute.save() now so we don\u0027t process this one again later? Like, aren\u0027t the tests just all passing because we\u0027re not getting HostMappingNotFound anymore?","commit_id":"8a6b4a19848b593e2991f2e09364ffaf63096f9a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a4f1fded89f882a0b9f8e062a23fcb14c97d7a77","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                host_mapping \u003d objects.HostMapping("},{"line_number":216,"context_line":"                    ctxt, host\u003dcompute.host,"},{"line_number":217,"context_line":"                    cell_mapping\u003dcm)"},{"line_number":218,"context_line":"                host_mapping.create()"},{"line_number":219,"context_line":"                host_mappings.append(host_mapping)"},{"line_number":220,"context_line":"    return host_mappings"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_f56bb781","line":218,"in_reply_to":"5ff73747_1fec3a8d","updated":"2017-05-01 16:33:00.000000000","message":"Yeah, I refactored this at one point but never pushed it up. I hadn\u0027t fixed the test though, so I\u0027m glad you caught why that was passing.","commit_id":"8a6b4a19848b593e2991f2e09364ffaf63096f9a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"77f862d81c5ca0309a825d034f3b10ab5039d71f","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                cell_mapping\u003dcm)"},{"line_number":185,"context_line":"            host_mapping.create()"},{"line_number":186,"context_line":"            host_mappings.append(host_mapping)"},{"line_number":187,"context_line":"            compute.mapped \u003d 1"},{"line_number":188,"context_line":"            compute.save()"},{"line_number":189,"context_line":"    return host_mappings"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1f013ff3_22952ce5","line":187,"range":{"start_line":187,"start_character":12,"end_line":187,"end_character":30},"updated":"2017-05-15 14:37:48.000000000","message":"Asserting this was set in the unit tests would be nice, because when I pulled this change down and commented this out, the unit tests still pass. The functional DB test fails, however, so I\u0027m OK with it.","commit_id":"82ab26e22f70ee0d18f0c59b8b1dfa1a044ef966"}],"nova/tests/functional/db/test_host_mapping.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"10b24d18a2fc8301493130d32596298a3d115fd5","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                    cn.create()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def test_discover_hosts(self):"},{"line_number":183,"context_line":"        def status(msg):"},{"line_number":184,"context_line":"            LOG.debug(msg)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_df25b20a","line":184,"range":{"start_line":183,"start_character":8,"end_line":184,"end_character":26},"updated":"2017-04-28 00:57:31.000000000","message":"Did you have this for debugging while testing this? Seems we could just pass a noop lambda.","commit_id":"8a6b4a19848b593e2991f2e09364ffaf63096f9a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a4f1fded89f882a0b9f8e062a23fcb14c97d7a77","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                    cn.create()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def test_discover_hosts(self):"},{"line_number":183,"context_line":"        def status(msg):"},{"line_number":184,"context_line":"            LOG.debug(msg)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_353ebfc0","line":184,"range":{"start_line":183,"start_character":8,"end_line":184,"end_character":26},"in_reply_to":"5ff73747_df25b20a","updated":"2017-05-01 16:33:00.000000000","message":"Yep, I just wanted to see it.","commit_id":"8a6b4a19848b593e2991f2e09364ffaf63096f9a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"10b24d18a2fc8301493130d32596298a3d115fd5","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        # NOTE(danms): All hosts should be mapped now"},{"line_number":193,"context_line":"        mappings \u003d host_mapping.discover_hosts(ctxt, status_fn\u003dstatus)"},{"line_number":194,"context_line":"        self.assertEqual(0, len(mappings))"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def test_discover_hosts_one_cell(self):"},{"line_number":197,"context_line":"        def status(msg):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_1fa1da46","line":194,"updated":"2017-04-28 00:57:31.000000000","message":"You should assert that objects.HostMapping.get_by_host wasn\u0027t called and/or that the compute nodes have mapped\u003d1 now.","commit_id":"8a6b4a19848b593e2991f2e09364ffaf63096f9a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a4f1fded89f882a0b9f8e062a23fcb14c97d7a77","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        # NOTE(danms): All hosts should be mapped now"},{"line_number":193,"context_line":"        mappings \u003d host_mapping.discover_hosts(ctxt, status_fn\u003dstatus)"},{"line_number":194,"context_line":"        self.assertEqual(0, len(mappings))"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def test_discover_hosts_one_cell(self):"},{"line_number":197,"context_line":"        def status(msg):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_952d9396","line":194,"in_reply_to":"5ff73747_1fa1da46","updated":"2017-05-01 16:33:00.000000000","message":"Yep, this is why the test wasn\u0027t catching that the mapping\u003d1 wasn\u0027t being set.","commit_id":"8a6b4a19848b593e2991f2e09364ffaf63096f9a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"10b24d18a2fc8301493130d32596298a3d115fd5","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # NOTE(danms): All hosts should be mapped now"},{"line_number":213,"context_line":"        mappings \u003d host_mapping.discover_hosts(ctxt, status_fn\u003dstatus)"},{"line_number":214,"context_line":"        self.assertEqual(0, len(mappings))"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ff73747_ff898ec9","line":214,"updated":"2017-04-28 00:57:31.000000000","message":"same as above.","commit_id":"8a6b4a19848b593e2991f2e09364ffaf63096f9a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"77f862d81c5ca0309a825d034f3b10ab5039d71f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from nova.tests import uuidsentinel as uuids"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":"sample_mapping \u003d {\u0027host\u0027: \u0027fake-host\u0027,"},{"line_number":29,"context_line":"                  \u0027cell_mapping\u0027: None}"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1f013ff3_02c350ef","line":27,"updated":"2017-05-15 14:37:48.000000000","message":"This is no longer used.","commit_id":"82ab26e22f70ee0d18f0c59b8b1dfa1a044ef966"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0274571921870d80949fe77ce708cdabdad60763","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                    cn \u003d objects.ComputeNode("},{"line_number":171,"context_line":"                        context\u003dctxt, vcpus\u003d1, memory_mb\u003d1, local_gb\u003d1,"},{"line_number":172,"context_line":"                        vcpus_used\u003d0, memory_mb_used\u003d0, local_gb_used\u003d0,"},{"line_number":173,"context_line":"                        hypervisor_type\u003d\u0027danvm\u0027, hypervisor_version\u003d\u00271\u0027,"},{"line_number":174,"context_line":"                        cpu_info\u003d\u0027foo\u0027,"},{"line_number":175,"context_line":"                        cpu_allocation_ratio\u003d1.0,"},{"line_number":176,"context_line":"                        ram_allocation_ratio\u003d1.0,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f013ff3_a5270613","line":173,"range":{"start_line":173,"start_character":41,"end_line":173,"end_character":46},"updated":"2017-05-15 15:04:57.000000000","message":"ooh, fancy :)","commit_id":"95c190c23dda3206499ca240b10e39af7c4624b3"}]}
