)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2667,"name":"Alex Glikson","email":"glikson@il.ibm.com","username":"glikson"},"change_message_id":"fed9cb8768ae1710b61451c30edb4a38ec9a778a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch implements the Ironic (Bare Metal Provisioning)"},{"line_number":10,"context_line":"driver for Nova."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Early Draft."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"implements bp:deprecate-baremetal-driver"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAAUH%2F9fJg%3D","line":12,"updated":"2014-02-06 15:49:23.000000000","message":"Would be good either to remove \"Early Draft\", or to mark it as \"Work in Progress\".","commit_id":"945850c5bd8df1fecd38bdf26b63c43888bb4554"},{"author":{"_account_id":2667,"name":"Alex Glikson","email":"glikson@il.ibm.com","username":"glikson"},"change_message_id":"fed9cb8768ae1710b61451c30edb4a38ec9a778a","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Author: Chris Krelle \u003cnobodycam@gmail.com\u003e"},{"line_number":17,"context_line":"Co-Author: Lucas Alvares Gomes \u003clucasagomes@gmail.com\u003e"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ia7606cbe8b41dd3a288c522859badcb1f6398465"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAAUH%2F9fIs%3D","line":18,"updated":"2014-02-06 15:49:23.000000000","message":"I would assume that this change is likely to impact documentation..","commit_id":"945850c5bd8df1fecd38bdf26b63c43888bb4554"}],"nova/scheduler/ironic_host_manager.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    \"\"\"Mutable and immutable information tracked for a host."},{"line_number":25,"context_line":"    This is an attempt to remove the ad-hoc data structures"},{"line_number":26,"context_line":"    previously used and lock down access."},{"line_number":27,"context_line":"    \"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def update_from_compute_node(self, compute):"},{"line_number":30,"context_line":"        \"\"\"Update information about a host from its compute_node info.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9CSA%3D","line":27,"updated":"2013-12-17 13:53:18.000000000","message":"PEP257: Multi-line docstrings consist of a summary line just like a one-line docstring, followed by a blank line, followed by a more elaborate description","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    \"\"\"Returns an instance of IronicHostState or HostState according to"},{"line_number":50,"context_line":"    capabilities. If \u0027ironic_driver\u0027 is in capabilities, it returns an"},{"line_number":51,"context_line":"    instance of IronicHostState. If not, returns an instance of HostState."},{"line_number":52,"context_line":"    \"\"\""},{"line_number":53,"context_line":"    if capabilities is None:"},{"line_number":54,"context_line":"        capabilities \u003d {}"},{"line_number":55,"context_line":"    cap \u003d capabilities.get(\u0027compute\u0027, {})"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9CR4%3D","line":52,"updated":"2013-12-17 13:53:18.000000000","message":"ditto PEP257","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"}],"nova/tests/virt/ironic/__init__.py":[{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"5657e740aa0601fbc4de7bf71eae2f13f59a4225","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"# coding\u003dutf-8"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BPts%3D","line":1,"updated":"2014-01-28 18:32:33.000000000","message":"please see http://docs.openstack.org/developer/hacking/#openstack-licensing, Files with no code shouldn\u0027t contain any licensing.","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"}],"nova/tests/virt/ironic/test_driver.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\"Tests for the ironic driver.\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import moch"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo.config import cfg"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9CQw%3D","line":20,"updated":"2013-12-17 13:53:18.000000000","message":"is it supposed to be \"mock\"?","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"#from nova.virt.baremetal import fake"},{"line_number":41,"context_line":"#from nova.virt.baremetal import pxe"},{"line_number":42,"context_line":"#from nova.virt import fake as fake_virt"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9CQs%3D","line":42,"updated":"2013-12-17 13:53:18.000000000","message":"PEP8fy the imports:\n\n1- standard library imports\n\n2- related third party imports\n\n3- local application/library specific imports","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"d69ff7761d3ed5ebd71f8735fe824324fa0a24fe","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        self.assertEqual(disk, result[\u0027local_gb\u0027])"},{"line_number":251,"context_line":"        self.assertEqual(0, result[\u0027local_gb_used\u0027])"},{"line_number":252,"context_line":"        self.assertEqual(node_uuid, result[\u0027hypervisor_hostname\u0027])"},{"line_number":253,"context_line":"        self.assertEqual(arch, result[\u0027stats\u0027][\u0027cpu_arch\u0027])"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def test__retry_on_conflict(self):"},{"line_number":256,"context_line":"        test_list \u003d []"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAU3%2F%2FknA%3D","line":253,"updated":"2014-02-25 21:17:21.000000000","message":"this is incorrect: should be something like:\n        self.assertEqual(\u0027{\"cpu_arch\": \"x86_64\", \"ironic_driver\": \"nova.virt.ironic.driver.IronicDriver\", \"test_spec\": \"test_value\"}\u0027,\n                         result[\u0027stats\u0027])","commit_id":"73e4609084b4ad6bc64fcd27f638735d663c93d9"}],"nova/virt/ironic/__init__.py":[{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"5657e740aa0601fbc4de7bf71eae2f13f59a4225","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BPtI%3D","line":1,"updated":"2014-01-28 18:32:33.000000000","message":"please see http://docs.openstack.org/developer/hacking/#openstack-licensing, Files with no code shouldn\u0027t contain any licensing.","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIVI%3D","line":1,"in_reply_to":"AAAAUH%2F%2BPtI%3D","updated":"2014-01-29 21:48:10.000000000","message":"I see code on lines 16 and 18.","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"6aacd7710ddd8e4401fc06913f54b234ad4e7afc","unresolved":false,"context_lines":[{"line_number":423,"context_line":"        return caps"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    def dhcp_options_for_instance(self, instance):"},{"line_number":426,"context_line":"        LOG.info(\"dhcp options for instance\")"},{"line_number":427,"context_line":"        nm \u003d ironic.node.NodeManager(self._get_client())"},{"line_number":428,"context_line":"        node \u003d nm.get_by_instance_uuid(instance[\u0027uuid\u0027])"},{"line_number":429,"context_line":"        #try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9yDs%3D","line":426,"updated":"2013-12-05 23:38:44.000000000","message":"This may need to be in the ironic/driver/module/pxe. The previous support imported pxe into driver, but driver is meant to\nbe entirely decoupled from specific baremetal drivers. see https://review.openstack.org/#/c/50749/, this maybe necessary, but may call the lower level to get the info.","commit_id":"26c9f54db523c399d78127fbea1d020b459edbb0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":37,"context_line":"from nova.openstack.common import jsonutils"},{"line_number":38,"context_line":"from nova.openstack.common import log as logging"},{"line_number":39,"context_line":"from nova.virt import driver"},{"line_number":40,"context_line":"from nova.virt.ironic import ironic_states"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9CNY%3D","line":40,"updated":"2013-12-17 13:53:18.000000000","message":"ditto PEP8fy","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def get_utility_kernel_id(node_uuid):"},{"line_number":111,"context_line":"    LOG.info(\"get_utility_kernel_id\")"},{"line_number":112,"context_line":"    icli \u003d _get_client()"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    node \u003d icli.node.get(node_uuid)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9CPE%3D","line":112,"updated":"2013-12-17 13:53:18.000000000","message":"You need an IronicDriver instance to access this method","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def get_utility_ramdisk_id(node_uuid):"},{"line_number":121,"context_line":"    LOG.info(\"get_utility_ramdisk_id\")"},{"line_number":122,"context_line":"    icli \u003d _get_client()"},{"line_number":123,"context_line":"    node \u003d icli.node.get(node_uuid)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    return node.driver_info.\\"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9CO0%3D","line":122,"updated":"2013-12-17 13:53:18.000000000","message":"ditto need an IronicDriver instance","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                ]"},{"line_number":158,"context_line":"        self.extra_specs \u003d extra_specs"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def _get_client(self):"},{"line_number":161,"context_line":"        # TODO(deva): save and reuse existing client \u0026 auth token"},{"line_number":162,"context_line":"        #             until it expires or is no longer valid"},{"line_number":163,"context_line":"        ctx \u003d nova_context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9COg%3D","line":160,"updated":"2013-12-17 13:53:18.000000000","message":"If it\u0027s going to be accessed from outside the class scope we should remove the \u0027_\u0027 from the name of the method","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                }"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def macs_for_instance(self, instance):"},{"line_number":321,"context_line":"        LOG.info(\"macs for instance\")"},{"line_number":322,"context_line":"        icli \u003d self._get_client()"},{"line_number":323,"context_line":"        try:"},{"line_number":324,"context_line":"            node \u003d icli.node.get(instance[\u0027node\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9CH8%3D","line":321,"updated":"2013-12-17 13:53:18.000000000","message":"This LOG.info messages doesn\u0027t seems to be consistent, some of them just use the name of the method with underscores, others remove the underscore. I think it would be better to be more consistent on these messages.","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        icli \u003d self._get_client()"},{"line_number":336,"context_line":"        node \u003d icli.node.get(node_uuid)"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"        # new nodes will have power_state \u003d None, This will prevent setting"},{"line_number":339,"context_line":"        # the instance_uuid"},{"line_number":340,"context_line":"        if not node.power_state:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9CJg%3D","line":337,"updated":"2013-12-17 13:53:18.000000000","message":"#TODO: icli.node.validate(node_uuid)","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        # Associate the node to this instance"},{"line_number":348,"context_line":"        try:"},{"line_number":349,"context_line":"            # FIXME: this SHOULD function as a lock, so no other instance"},{"line_number":350,"context_line":"            #        can be associated to this node. BUT IT DOESN\u0027T!"},{"line_number":351,"context_line":"            patch \u003d [{\u0027op\u0027: \u0027replace\u0027,"},{"line_number":352,"context_line":"                     \u0027path\u0027: \u0027/instance_uuid\u0027,"},{"line_number":353,"context_line":"                     \u0027value\u0027: instance[\u0027uuid\u0027]}]"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9CL0%3D","line":350,"updated":"2013-12-17 13:53:18.000000000","message":"Right this is an Ironic bug, I think it would be nice to add the link of the bug to this FIXME. https://bugs.launchpad.net/ironic/+bug/1244541","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":393,"context_line":"                  \u0027path\u0027: \u0027/driver_info/user_image_glance_id\u0027},"},{"line_number":394,"context_line":"                 {\u0027op\u0027: \u0027remove\u0027,"},{"line_number":395,"context_line":"                  \u0027path\u0027: \u0027/instance_uuid\u0027,"},{"line_number":396,"context_line":"                  \u0027value\u0027: None}]"},{"line_number":397,"context_line":"        icli.node.update(node_uuid, patch)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        self.unplug_vifs(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9CLI%3D","line":396,"updated":"2013-12-17 13:53:18.000000000","message":"the \u0027value\u0027 field will be ignored on a remove operation","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cb999ea6bbe5962f239539a4f78798074a65f775","unresolved":false,"context_lines":[{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        icli \u003d self._get_client()"},{"line_number":532,"context_line":"        node \u003d icli.node.get(instance[\u0027node\u0027])"},{"line_number":533,"context_line":"        "},{"line_number":534,"context_line":"        ports \u003d icli.node.list_ports(node.uuid)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        for p in ports:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9CNI%3D","line":533,"updated":"2013-12-17 13:53:18.000000000","message":"tab space","commit_id":"148fcd15308f28d04df54b6599a41ef55c8e9613"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"45f4136705c6ed0fac0f5312cdd88399d22d3b61","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                     \u0027value\u0027: instance[\u0027uuid\u0027]}]"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"            icli.node.update(node_uuid, patch)"},{"line_number":369,"context_line":"        except Exception:"},{"line_number":370,"context_line":"            # FIXME: catch the right exception, log it, and raise"},{"line_number":371,"context_line":"            raise exception.NovaException(_("},{"line_number":372,"context_line":"                    \"Unable to set instance UUID for node: %s\") % node_uuid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2Fgho%3D","line":369,"updated":"2014-01-13 07:25:02.000000000","message":"We prevent instance_uuid overwriting [1] with defect [2], so should catch exception.NodeAssociated exception here:\n\n    except exception.NodeAssociated:\n        # ...\n\n[1] https://github.com/openstack/ironic/blob/master/ironic/db/sqlalchemy/api.py#L371\n[2] https://bugs.launchpad.net/ironic/+bug/1244541","commit_id":"2a07e35b0626ec85323cfc093451c175334719e1"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from ironicclient import client as ironic_client"},{"line_number":27,"context_line":"from ironicclient import exc as ironic_exception"},{"line_number":28,"context_line":"#from ironicclient import v1 as ironic"},{"line_number":29,"context_line":"#from ironicclient.v1.node import NodeManager as ironic_nodemanager"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from oslo.config import cfg"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIVA%3D","line":29,"updated":"2014-01-29 21:48:10.000000000","message":"probably should remove commented out imports.","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"5657e740aa0601fbc4de7bf71eae2f13f59a4225","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"def get_partition_sizes(instance):"},{"line_number":109,"context_line":"    LOG.info(\"get_partition_sizes\")"},{"line_number":110,"context_line":"    instance_type \u003d flavors.extract_flavor(instance)"},{"line_number":111,"context_line":"    root_mb \u003d instance_type[\u0027root_gb\u0027] * 1024"},{"line_number":112,"context_line":"    swap_mb \u003d instance_type[\u0027swap\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BPs8%3D","line":109,"updated":"2014-01-28 18:32:33.000000000","message":"should be: (_(....))","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"5657e740aa0601fbc4de7bf71eae2f13f59a4225","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _node_resource(self, node):"},{"line_number":193,"context_line":"        # TODO(deva): refactor this to match ironic node datastruct"},{"line_number":194,"context_line":"        LOG.info(\"_node resource\")"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        vcpus_used \u003d 0"},{"line_number":197,"context_line":"        memory_mb_used \u003d 0"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BPss%3D","line":194,"updated":"2014-01-28 18:32:33.000000000","message":"should be: LOG.info(_(\"_node resource\"))","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        return dic"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def _detach_block_devices(self, instance, block_device_info):"},{"line_number":232,"context_line":"        LOG.info(\"_detach_block_devices\")"},{"line_number":233,"context_line":"        block_device_mapping \u003d virt_driver.\\"},{"line_number":234,"context_line":"                block_device_info_get_mapping(block_device_info)"},{"line_number":235,"context_line":"        for vol in block_device_mapping:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIUs%3D","line":232,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            self.detach_volume(connection_info, instance, mountpoint)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def _start_firewall(self, instance, network_info):"},{"line_number":241,"context_line":"        LOG.info(\"_start_firewall\")"},{"line_number":242,"context_line":"        self.firewall_driver.setup_basic_filtering(instance, network_info)"},{"line_number":243,"context_line":"        self.firewall_driver.prepare_instance_filter(instance, network_info)"},{"line_number":244,"context_line":"        self.firewall_driver.apply_instance_filter(instance, network_info)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIUU%3D","line":241,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        self.firewall_driver.apply_instance_filter(instance, network_info)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def _stop_firewall(self, instance, network_info):"},{"line_number":247,"context_line":"        LOG.info(\"_stop_firewall\")"},{"line_number":248,"context_line":"        self.firewall_driver.unfilter_instance(instance, network_info)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def _attach_block_devices(self, instance, block_device_info):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIUQ%3D","line":247,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        self.firewall_driver.unfilter_instance(instance, network_info)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def _attach_block_devices(self, instance, block_device_info):"},{"line_number":251,"context_line":"        LOG.info(\"_attach_block_devices\")"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        block_device_mapping \u003d virt_driver.\\"},{"line_number":254,"context_line":"                block_device_info_get_mapping(block_device_info)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIUM%3D","line":251,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                mountpoint \u003d vol[\u0027mount_device\u0027]"},{"line_number":259,"context_line":"                self.attach_volume(connection_info, instance, mountpoint)"},{"line_number":260,"context_line":"        else:"},{"line_number":261,"context_line":"            LOG.info(\u0027No block devices to attach.\u0027)"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    @classmethod"},{"line_number":264,"context_line":"    def instance(cls):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIUI%3D","line":261,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        return CONF.ironic.api_version"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def list_instances(self):"},{"line_number":279,"context_line":"        LOG.info(\"list instances\")"},{"line_number":280,"context_line":"        icli \u003d self._get_client()"},{"line_number":281,"context_line":"        instances \u003d [i for i in icli.node.list() if i.instance_uuid]"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIT8%3D","line":279,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        return instances"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def get_available_nodes(self, refresh\u003dFalse):"},{"line_number":286,"context_line":"        LOG.info(\"get available nodes\")"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        nodes \u003d []"},{"line_number":289,"context_line":"        icli \u003d self._get_client()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIT0%3D","line":286,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            if n.power_state:"},{"line_number":296,"context_line":"                nodes.append(n.uuid)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        LOG.debug(\"Returning Nodes: %s\" % nodes)"},{"line_number":299,"context_line":"        return nodes"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def get_available_resource(self, node):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BITw%3D","line":298,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        return nodes"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def get_available_resource(self, node):"},{"line_number":302,"context_line":"        LOG.info(\"get available resources\")"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        icli \u003d self._get_client()"},{"line_number":305,"context_line":"        resource \u003d {}"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BITs%3D","line":302,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        #    resource \u003d self._node_resource(node)"},{"line_number":309,"context_line":"        # FIXME: this will be an ironicclient exception, not ironic exception"},{"line_number":310,"context_line":"        #except ironic_exception.NodeNotFound:"},{"line_number":311,"context_line":"        #    pass"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        node \u003d icli.node.get(node)"},{"line_number":314,"context_line":"        resource \u003d self._node_resource(node)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BITk%3D","line":311,"updated":"2014-01-29 21:48:10.000000000","message":"need a space after the #","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        return resource"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def get_info(self, instance):"},{"line_number":319,"context_line":"        LOG.info(\"get info\")"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        icli \u003d self._get_client()"},{"line_number":322,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BITg%3D","line":319,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                }"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def macs_for_instance(self, instance):"},{"line_number":340,"context_line":"        LOG.info(\"macs for instance\")"},{"line_number":341,"context_line":"        icli \u003d self._get_client()"},{"line_number":342,"context_line":"        try:"},{"line_number":343,"context_line":"            node \u003d icli.node.get(instance[\u0027node\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BITY%3D","line":340,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def spawn(self, context, instance, image_meta, injected_files,"},{"line_number":350,"context_line":"              admin_password, network_info\u003dNone, block_device_info\u003dNone):"},{"line_number":351,"context_line":"        LOG.info(\"spawn\")"},{"line_number":352,"context_line":"        node_uuid \u003d self._require_node(instance)"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"        icli \u003d self._get_client()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BITI%3D","line":351,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":370,"context_line":""},{"line_number":371,"context_line":"        # Set image id, and other driver info so we can pass it down to Ironic"},{"line_number":372,"context_line":"        # use the ironic_driver_fields file to import"},{"line_number":373,"context_line":"        #flavor \u003d flavors.extract_flavor(instance)"},{"line_number":374,"context_line":"        flavor \u003d self.virtapi.flavor_get(context, instance[\u0027instance_type_id\u0027])"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        if \u0027pxe\u0027 in node.driver:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BITA%3D","line":373,"updated":"2014-01-29 21:48:10.000000000","message":"space after #","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":389,"context_line":""},{"line_number":390,"context_line":"                icli.node.update(node_uuid, patch)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        #validate we ready to do the deploy"},{"line_number":393,"context_line":"        validate_chk \u003d icli.node.validate(node_uuid)"},{"line_number":394,"context_line":"        if not validate_chk.deploy or not validate_chk.power:"},{"line_number":395,"context_line":"            # something is wrong. undo we we have done"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIS0%3D","line":392,"updated":"2014-01-29 21:48:10.000000000","message":"space after #","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                             block_device_info)"},{"line_number":417,"context_line":"        # Do the deploy!"},{"line_number":418,"context_line":"        icli.node.set_provision_state(node_uuid, \u0027active\u0027)"},{"line_number":419,"context_line":"        LOG.info(\"Ironic deploy called!!!!\")"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def destroy(self, context, instance, network_info,"},{"line_number":422,"context_line":"                block_device_info\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BISw%3D","line":419,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def destroy(self, context, instance, network_info,"},{"line_number":422,"context_line":"                block_device_info\u003dNone):"},{"line_number":423,"context_line":"        LOG.info(\"destroy\")"},{"line_number":424,"context_line":"        node_uuid \u003d self._require_node(instance)"},{"line_number":425,"context_line":"        icli \u003d self._get_client()"},{"line_number":426,"context_line":"        node \u003d icli.node.get(node_uuid)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BISs%3D","line":423,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":457,"context_line":"        pass"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    def power_off(self, instance, node\u003dNone):"},{"line_number":460,"context_line":"        LOG.info(\"power_off\")"},{"line_number":461,"context_line":"        # TODO(nobodycam): check the current power state first."},{"line_number":462,"context_line":"        node_uuid \u003d self._require_node(instance)"},{"line_number":463,"context_line":"        icli \u003d self._get_client()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BISc%3D","line":460,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def power_on(self, context, instance, network_info, block_device_info\u003dNone,"},{"line_number":468,"context_line":"                 node\u003dNone):"},{"line_number":469,"context_line":"        LOG.info(\"power_on\")"},{"line_number":470,"context_line":"        # TODO(nobodycam): check the current power state first."},{"line_number":471,"context_line":"        node_uuid \u003d self._require_node(instance)"},{"line_number":472,"context_line":"        icli \u003d self._get_client()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BISY%3D","line":469,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":474,"context_line":"        icli.node.set_power_state(node_uuid, \u0027on\u0027)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    def get_host_stats(self, refresh\u003dFalse):"},{"line_number":477,"context_line":"        LOG.info(\"get host status\")"},{"line_number":478,"context_line":"        # TODO(deva): refactor this"},{"line_number":479,"context_line":"        caps \u003d []"},{"line_number":480,"context_line":"        icli \u003d self._get_client()"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BISU%3D","line":477,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":507,"context_line":"        return caps"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    def manage_image_cache(self, context, all_instances):"},{"line_number":510,"context_line":"        LOG.info(\"manage_image_cache\")"},{"line_number":511,"context_line":"        pass"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def get_console_output(self, instance):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BISM%3D","line":510,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def get_console_output(self, instance):"},{"line_number":514,"context_line":"        LOG.info(\"get_console_output\")"},{"line_number":515,"context_line":"        LOG.info(\"CJK: raise NotImplementedError()\")"},{"line_number":516,"context_line":"        pass"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def get_volume_connector(self, instance):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BISI%3D","line":515,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        pass"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    def get_volume_connector(self, instance):"},{"line_number":519,"context_line":"        LOG.info(\"get_volume_connector\")"},{"line_number":520,"context_line":"        return self.volume_driver.get_volume_connector(instance)"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"    def attach_volume(self, context, connection_info, instance, mountpoint,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BISE%3D","line":519,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":521,"context_line":""},{"line_number":522,"context_line":"    def attach_volume(self, context, connection_info, instance, mountpoint,"},{"line_number":523,"context_line":"                      encryption\u003dNone):"},{"line_number":524,"context_line":"        LOG.info(\"attach_volume\")"},{"line_number":525,"context_line":"        return self.volume_driver.attach_volume(connection_info, instance,"},{"line_number":526,"context_line":"                                                mountpoint)"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BISA%3D","line":524,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    def detach_volume(self, connection_info, instance, mountpoint,"},{"line_number":529,"context_line":"                      encryption\u003dNone):"},{"line_number":530,"context_line":"        LOG.info(\"detach_volume\")"},{"line_number":531,"context_line":"        return self.volume_driver.detach_volume(connection_info,"},{"line_number":532,"context_line":"                                                instance, mountpoint)"},{"line_number":533,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIR8%3D","line":530,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":532,"context_line":"                                                instance, mountpoint)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def refresh_security_group_rules(self, security_group_id):"},{"line_number":535,"context_line":"        LOG.info(\"refresh_security_group_rules\")"},{"line_number":536,"context_line":"        pass"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"    def refresh_security_group_members(self, security_group_id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIR4%3D","line":535,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":536,"context_line":"        pass"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"    def refresh_security_group_members(self, security_group_id):"},{"line_number":539,"context_line":"        LOG.info(\"refresh_security_group_members\")"},{"line_number":540,"context_line":"        pass"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    def refresh_provider_fw_rules(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIRw%3D","line":539,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":540,"context_line":"        pass"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    def refresh_provider_fw_rules(self):"},{"line_number":543,"context_line":"        LOG.info(\"refresh_provider_fw_rules\")"},{"line_number":544,"context_line":"        pass"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"    def refresh_instance_security_rules(self, instance):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIRs%3D","line":543,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":544,"context_line":"        pass"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"    def refresh_instance_security_rules(self, instance):"},{"line_number":547,"context_line":"        LOG.info(\"refresh_instance_security_rules\")"},{"line_number":548,"context_line":"        pass"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"    def ensure_filtering_rules_for_instance(self, instance_ref, network_info):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIRo%3D","line":547,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":548,"context_line":"        pass"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"    def ensure_filtering_rules_for_instance(self, instance_ref, network_info):"},{"line_number":551,"context_line":"        LOG.info(\"ensure_filtering_rules_for_instance\")"},{"line_number":552,"context_line":"        pass"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    def unfilter_instance(self, instance_ref, network_info):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIRk%3D","line":551,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        pass"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    def unfilter_instance(self, instance_ref, network_info):"},{"line_number":555,"context_line":"        LOG.info(\"unfilter_instance\")"},{"line_number":556,"context_line":"        pass"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"    def plug_vifs(self, instance, network_info):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIRg%3D","line":555,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":556,"context_line":"        pass"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"    def plug_vifs(self, instance, network_info):"},{"line_number":559,"context_line":"        LOG.info(\u0027plug_vifs\u0027)"},{"line_number":560,"context_line":"        LOG.debug(_(\"plug: instance_uuid\u003d%(uuid)s vif\u003d%(network_info)s\")"},{"line_number":561,"context_line":"                  % {\u0027uuid\u0027: instance[\u0027uuid\u0027], \u0027network_info\u0027: network_info})"},{"line_number":562,"context_line":"        # start by ensuring the ports are clear"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIRc%3D","line":559,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                icli.port.update(pif.uuid, patch)"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"    def unplug_vifs(self, instance, network_info):"},{"line_number":590,"context_line":"        LOG.info(\u0027unplug_vifs\u0027)"},{"line_number":591,"context_line":"        LOG.debug(_(\"unplug: instance_uuid\u003d%(uuid)s vif\u003d%(network_info)s\")"},{"line_number":592,"context_line":"                  % {\u0027uuid\u0027: instance[\u0027uuid\u0027], \u0027network_info\u0027: network_info})"},{"line_number":593,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BIRU%3D","line":590,"updated":"2014-01-29 21:48:10.000000000","message":"use LOG.info(_())","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"77a2aedb73b9300538e767de3005df9550d408b9","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        else:"},{"line_number":159,"context_line":"            tries +\u003d 1"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    tries \u003d 0"},{"line_number":162,"context_line":"    timer \u003d loopingcall.FixedIntervalLoopingCall(_request_api)"},{"line_number":163,"context_line":"    timer.start(interval\u003dCONF.ironic.api_retry_interval).wait()"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F98o0%3D","line":161,"updated":"2014-01-31 19:16:24.000000000","message":"ops gotta remove it","commit_id":"f959756938873f1def90e5ac5aa2c672b562033c"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"93a2eced0ed892c234012ac5cd930e75ca2b77aa","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        #flavor \u003d flavors.extract_flavor(instance)"},{"line_number":389,"context_line":"        flavor \u003d self.virtapi.flavor_get(context, instance[\u0027instance_type_id\u0027])"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        if \u0027pxe\u0027 in node.driver:"},{"line_number":392,"context_line":"            # add required fields"},{"line_number":393,"context_line":"            pxe_fields \u003d importutils.import_class("},{"line_number":394,"context_line":"                \u0027nova.virt.ironic.ironic_driver_fields.PXE\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F9upk%3D","line":391,"updated":"2014-02-04 16:06:17.000000000","message":"we should not use substring matching here. A list of supported node.driver values should be defined in ironic_driver_fields. This would allow us to support other non-pxe drivers to be added later.","commit_id":"f959756938873f1def90e5ac5aa2c672b562033c"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"93a2eced0ed892c234012ac5cd930e75ca2b77aa","unresolved":false,"context_lines":[{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        if \u0027pxe\u0027 in node.driver:"},{"line_number":392,"context_line":"            # add required fields"},{"line_number":393,"context_line":"            pxe_fields \u003d importutils.import_class("},{"line_number":394,"context_line":"                \u0027nova.virt.ironic.ironic_driver_fields.PXE\u0027)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"            patch \u003d []"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F9uok%3D","line":393,"updated":"2014-02-04 16:06:17.000000000","message":"I think this module should simply be imported at the top of the file. We don\u0027t need to import it every time a node is spawn()ed","commit_id":"f959756938873f1def90e5ac5aa2c672b562033c"},{"author":{"_account_id":2667,"name":"Alex Glikson","email":"glikson@il.ibm.com","username":"glikson"},"change_message_id":"fed9cb8768ae1710b61451c30edb4a38ec9a778a","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    def _get_client(self):"},{"line_number":186,"context_line":"        # TODO(deva): save and reuse existing client \u0026 auth token"},{"line_number":187,"context_line":"        #             until it expires or is no longer valid"},{"line_number":188,"context_line":"        ctx \u003d nova_context.get_admin_context()"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        # FIXME: Figure out correct context handling"},{"line_number":191,"context_line":"        if ctx.auth_token is None:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F9fGM%3D","line":188,"updated":"2014-02-06 15:49:23.000000000","message":"Why admin context is required?","commit_id":"945850c5bd8df1fecd38bdf26b63c43888bb4554"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"f3fa80ce2a377181dbdefafbfe62048418b42f0b","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"            retry_on_conflict(icli.node.update, node_uuid, patch)"},{"line_number":355,"context_line":"        except Exception:"},{"line_number":356,"context_line":"            # FIXME: catch the right exception, log it, and raise"},{"line_number":357,"context_line":"            raise exception.NovaException(_("},{"line_number":358,"context_line":"                    \"Unable to set instance UUID for node: %s\") % node_uuid)"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F9hEs%3D","line":356,"updated":"2014-02-06 11:14:47.000000000","message":"We prevent instance_uuid overwriting [1] with defect [2], \nso should catch exception.NodeAssociated exception here:\n\n    except exception.NodeAssociated:\n        ...\n\n[1] https://github.com/openstack/ironic/blob/master/ironic/db/sqlalchemy/api.py#L371 \n\n[2] https://bugs.launchpad.net/ironic/+bug/1244541","commit_id":"945850c5bd8df1fecd38bdf26b63c43888bb4554"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"332ff8b7c2a42a210e090399bc0cb5dc7ab8cb48","unresolved":false,"context_lines":[{"line_number":394,"context_line":"                self.destroy(context, instance, network_info,"},{"line_number":395,"context_line":"                             block_device_info)"},{"line_number":396,"context_line":"        # Do the deploy!"},{"line_number":397,"context_line":"        self._retry_on_conflict(icli.node.set_provision_state,"},{"line_number":398,"context_line":"                                node_uuid, \u0027active\u0027)"},{"line_number":399,"context_line":"        LOG.info(\"Ironic deploy called!!!!\")"},{"line_number":400,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F9dcw%3D","line":397,"updated":"2014-02-06 19:23:30.000000000","message":"If there was a problem deploying, should self.destroy() be called?","commit_id":"60f7e359b4754e9bd6896014b84e1d854e083b4f"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8ead77f3915e72f06f8dde123cef23d64eebd2d1","unresolved":false,"context_lines":[{"line_number":394,"context_line":"                self.destroy(context, instance, network_info,"},{"line_number":395,"context_line":"                             block_device_info)"},{"line_number":396,"context_line":"        # Do the deploy!"},{"line_number":397,"context_line":"        self._retry_on_conflict(icli.node.set_provision_state,"},{"line_number":398,"context_line":"                                node_uuid, \u0027active\u0027)"},{"line_number":399,"context_line":"        LOG.info(\"Ironic deploy called!!!!\")"},{"line_number":400,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F9YX4%3D","line":397,"in_reply_to":"AAAAUH%2F9dcw%3D","updated":"2014-02-07 10:17:48.000000000","message":"Hi Ruby,\n\nAFAIUI no, if the deploy fails we should give the user an opportunity to dig into it and see why (nova show \u003cinstance uuid\u003e)... It\u0027s up to the user to trigger the deploy when deleting the instance","commit_id":"60f7e359b4754e9bd6896014b84e1d854e083b4f"}],"nova/virt/ironic/ironic_driver_fields.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"332ff8b7c2a42a210e090399bc0cb5dc7ab8cb48","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                 \u0027nova_object\u0027: \u0027image_meta\u0027,"},{"line_number":39,"context_line":"                 \u0027object_field\u0027: \u0027id\u0027},"},{"line_number":40,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"},{"line_number":41,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_instance_name\u0027,"},{"line_number":42,"context_line":"                 \u0027nova_object\u0027: \u0027instance\u0027,"},{"line_number":43,"context_line":"                 \u0027object_field\u0027: \u0027name\u0027},"},{"line_number":44,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F9diI%3D","line":41,"updated":"2014-02-06 19:23:30.000000000","message":"This isn\u0027t required on the ironic side (as of Jan 21).","commit_id":"60f7e359b4754e9bd6896014b84e1d854e083b4f"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8ead77f3915e72f06f8dde123cef23d64eebd2d1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                 \u0027nova_object\u0027: \u0027image_meta\u0027,"},{"line_number":39,"context_line":"                 \u0027object_field\u0027: \u0027id\u0027},"},{"line_number":40,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"},{"line_number":41,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_instance_name\u0027,"},{"line_number":42,"context_line":"                 \u0027nova_object\u0027: \u0027instance\u0027,"},{"line_number":43,"context_line":"                 \u0027object_field\u0027: \u0027name\u0027},"},{"line_number":44,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F9YXI%3D","line":41,"in_reply_to":"AAAAUH%2F9diI%3D","updated":"2014-02-07 10:17:48.000000000","message":"+1\n\nI want to change a bit this mapping here, I will work on it. Thanks for pointing it out.","commit_id":"60f7e359b4754e9bd6896014b84e1d854e083b4f"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"7103baddf8aad4540010869c3241d0fcab15926c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_deploy_kernel\u0027,"},{"line_number":50,"context_line":"                 \u0027nova_object\u0027: \u0027flavor\u0027,"},{"line_number":51,"context_line":"                 \u0027object_field\u0027: \u0027extra_specs/\u0027"},{"line_number":52,"context_line":"                 \u0027baremetal:deploy_kernel_id\u0027},"},{"line_number":53,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"},{"line_number":54,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_deploy_ramdisk\u0027,"},{"line_number":55,"context_line":"                 \u0027nova_object\u0027: \u0027flavor\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUX%2F%2FhiI%3D","line":52,"updated":"2014-02-12 16:00:09.000000000","message":"indentation problem - this is hard to read:\n\n  \u0027object_field\u0027: \u0027extra_specs/\u0027\n  \u0027baremetal:deploy_kernel_id\u0027\n\nthis would be much clearer:\n\n  \u0027object_field\u0027: \u0027extra_specs/\u0027\n                  \u0027baremetal:deploy_kernel_id\u0027","commit_id":"186ef9e71050fe057024d130fffc6facff55a73c"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"2f4b71a1f44cf26d0c38ddb840e3da07c9834c94","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"},{"line_number":37,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_image_source\u0027,"},{"line_number":38,"context_line":"                 \u0027nova_object\u0027: \u0027image_meta\u0027,"},{"line_number":39,"context_line":"                 \u0027object_field\u0027: \u0027id\u0027},"},{"line_number":40,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"},{"line_number":41,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_instance_name\u0027,"},{"line_number":42,"context_line":"                 \u0027nova_object\u0027: \u0027instance\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAU3%2F%2FyxI%3D","line":39,"updated":"2014-02-24 19:03:42.000000000","message":"The image source seems like something generic to me, not pxe driver specific. That said, would it be different from boot to boot, or node to node? If boot to boot then perhaps this should be here, but if node to node, it must not be here as nova doesn\u0027t understand that there are nodes in use.","commit_id":"73e4609084b4ad6bc64fcd27f638735d663c93d9"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"2f4b71a1f44cf26d0c38ddb840e3da07c9834c94","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"},{"line_number":41,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_instance_name\u0027,"},{"line_number":42,"context_line":"                 \u0027nova_object\u0027: \u0027instance\u0027,"},{"line_number":43,"context_line":"                 \u0027object_field\u0027: \u0027name\u0027},"},{"line_number":44,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"},{"line_number":45,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_root_gb\u0027,"},{"line_number":46,"context_line":"                 \u0027nova_object\u0027: \u0027instance\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAU3%2F%2Fywc%3D","line":43,"updated":"2014-02-24 19:03:42.000000000","message":"I don\u0027t know that the instance name should be known by the PXE driver. Whatever identifier Nova uses (e.g. the instance) would make most sense to me as a generic \u0027and this is what the Ironic user wants to call this deployed instance\u0027 feature, not pxe specific.","commit_id":"73e4609084b4ad6bc64fcd27f638735d663c93d9"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"6fcab8917fb253930055ebbf434b6533af66be09","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                 \u0027nova_object\u0027: \u0027instance\u0027,"},{"line_number":43,"context_line":"                 \u0027object_field\u0027: \u0027name\u0027},"},{"line_number":44,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"},{"line_number":45,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_root_gb\u0027,"},{"line_number":46,"context_line":"                 \u0027nova_object\u0027: \u0027instance\u0027,"},{"line_number":47,"context_line":"                 \u0027object_field\u0027: \u0027root_gb\u0027},"},{"line_number":48,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAU3%2F%2FyyA%3D","line":45,"updated":"2014-02-24 19:00:03.000000000","message":"this should be set on node.properties[root_gb]. not node.driver_info[pxe_root_gb]","commit_id":"73e4609084b4ad6bc64fcd27f638735d663c93d9"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"2f4b71a1f44cf26d0c38ddb840e3da07c9834c94","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"},{"line_number":45,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_root_gb\u0027,"},{"line_number":46,"context_line":"                 \u0027nova_object\u0027: \u0027instance\u0027,"},{"line_number":47,"context_line":"                 \u0027object_field\u0027: \u0027root_gb\u0027},"},{"line_number":48,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"},{"line_number":49,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_deploy_kernel\u0027,"},{"line_number":50,"context_line":"                 \u0027nova_object\u0027: \u0027flavor\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAU3%2F%2FywM%3D","line":47,"updated":"2014-02-24 19:03:42.000000000","message":"This is a stock feature of Ironic, not PXE specific. Should always be passed, and always to the same field.","commit_id":"73e4609084b4ad6bc64fcd27f638735d663c93d9"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"2f4b71a1f44cf26d0c38ddb840e3da07c9834c94","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_deploy_kernel\u0027,"},{"line_number":50,"context_line":"                 \u0027nova_object\u0027: \u0027flavor\u0027,"},{"line_number":51,"context_line":"                 \u0027object_field\u0027: \u0027extra_specs/\u0027"},{"line_number":52,"context_line":"                                 \u0027baremetal:deploy_kernel_id\u0027},"},{"line_number":53,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"},{"line_number":54,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_deploy_ramdisk\u0027,"},{"line_number":55,"context_line":"                 \u0027nova_object\u0027: \u0027flavor\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAU3%2F%2FyvQ%3D","line":52,"updated":"2014-02-24 19:03:42.000000000","message":"We had these on flavor as a way in Nova Baremetal to run different ramdisks for either a) different hardware or b) different configurations on the same hardware.\n\nIn Ironic if we pass the flavour definition as a whole down to the deployment layer (e.g. out to the deploy ramdisk) then we will solve B more generally and usefully. That leaves a). And for that, the same problem as above - Nova doesn\u0027t track nodes with Ironic, so having it know intimate details about how to deploy to a specific node seems ugly.","commit_id":"73e4609084b4ad6bc64fcd27f638735d663c93d9"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"2f4b71a1f44cf26d0c38ddb840e3da07c9834c94","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                 \u0027ironic_variable\u0027: \u0027pxe_deploy_ramdisk\u0027,"},{"line_number":55,"context_line":"                 \u0027nova_object\u0027: \u0027flavor\u0027,"},{"line_number":56,"context_line":"                 \u0027object_field\u0027: \u0027extra_specs/\u0027"},{"line_number":57,"context_line":"                                 \u0027baremetal:deploy_ramdisk_id\u0027}"},{"line_number":58,"context_line":"               ]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    optional \u003d []"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAU3%2F%2FyvM%3D","line":57,"updated":"2014-02-24 19:03:42.000000000","message":"Ditto.","commit_id":"73e4609084b4ad6bc64fcd27f638735d663c93d9"},{"author":{"_account_id":10574,"name":"Syed Ismail Faizan Barmawer","email":"faizan.barmawer@gmail.com","username":"barmawer"},"change_message_id":"0f73c02aaed6f7208cfe0827b11db0042ad5f79f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    optional \u003d []"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class PXE(object):"},{"line_number":34,"context_line":"    \"\"\"Required and optional field list for ironic\u0027s PXE driver.\"\"\""},{"line_number":35,"context_line":"    required \u003d ["},{"line_number":36,"context_line":"                {\u0027ironic_path\u0027: \u0027/driver_info\u0027,"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAVX%2F%2F2lE%3D","line":33,"updated":"2014-02-27 20:26:38.000000000","message":"I think few of the ironic PXE driver required fields are generic in nature and will be required by any type of deploy driver, like image_source, root_gb, instance_name, etc, . I think such data should be updated to the ironic node irrespective of the type of deploy driver. Every new driver will end up adding the same set of fields in their respective class in this file. There should be a generic class which should contain such generic fields and other driver specific fields should go in their respective class.","commit_id":"216c5e6c0dae799ce9ca32a2b9c9d84644adbf40"}],"nova/virt/ironic/volume_driver.py":[{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"561022787f89ddbc628d2e2edc75936b556ec58f","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":53,"context_line":"CONF.import_opt(\u0027use_ipv6\u0027, \u0027nova.netconf\u0027)"},{"line_number":54,"context_line":"CONF.import_opt(\u0027volume_drivers\u0027, \u0027nova.virt.libvirt.driver\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2BrK4%3D","line":54,"updated":"2014-01-23 10:18:55.000000000","message":"This line fails for me, check the log: http://paste.openstack.org/show/61723/\nI am testing it on Fedora and the group there is called \u0027libvirtd\u0027.","commit_id":"b6f9e44bd6c43346d524806a573b98364fd28733"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"d95a1aa5dc39dc404d473bd50a05ab4aabd39164","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":53,"context_line":"CONF.import_opt(\u0027use_ipv6\u0027, \u0027nova.netconf\u0027)"},{"line_number":54,"context_line":"CONF.import_opt(\u0027volume_drivers\u0027, \u0027nova.virt.libvirt.driver\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2Bp0s%3D","line":54,"in_reply_to":"AAAAUH%2F%2Bq%2Bg%3D","updated":"2014-01-23 14:25:56.000000000","message":"I think I found why this line throws the exception for me: the libvirt specific configs wasn\u0027t refactored into the libvirt group until I11e79eb5fd79c459374b9bf04707a4e6d79e993f.\n\nBut refs/changes/28/51328/9 doesn\u0027t contain this change, this branch is a couple weeks older.","commit_id":"b6f9e44bd6c43346d524806a573b98364fd28733"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"147b2701a0d31ba8b0baa6281fe335a7f2aa53e0","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":53,"context_line":"CONF.import_opt(\u0027use_ipv6\u0027, \u0027nova.netconf\u0027)"},{"line_number":54,"context_line":"CONF.import_opt(\u0027volume_drivers\u0027, \u0027nova.virt.libvirt.driver\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2Bq%2Bg%3D","line":54,"in_reply_to":"AAAAUH%2F%2BrK4%3D","updated":"2014-01-23 10:54:40.000000000","message":"Sorry, it\u0027s unrelated to system groups. It\u0027s also failing with group\u003d\u0027libvirtd\u0027.","commit_id":"b6f9e44bd6c43346d524806a573b98364fd28733"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"5b525c5bce4ebe2a2667483240697f4e714faff4","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from nova.openstack.common import log as logging"},{"line_number":29,"context_line":"from nova.openstack.common import processutils"},{"line_number":30,"context_line":"from nova import utils"},{"line_number":31,"context_line":"from nova.virt.libvirt import utils as libvirt_utils"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"opts \u003d ["},{"line_number":34,"context_line":"    cfg.BoolOpt(\u0027use_unsafe_iscsi\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BQFo%3D","line":31,"updated":"2014-01-28 17:28:32.000000000","message":"Ewww, no, please do not do this. Virt drivers must *never* use any code from another virt driver\u0027s directory.\n\nIf there is functionality that is useful for multiple drivers it should be refactored into a shared directory.","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"5b525c5bce4ebe2a2667483240697f4e714faff4","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"},{"line_number":52,"context_line":"CONF.import_opt(\u0027use_ipv6\u0027, \u0027nova.netconf\u0027)"},{"line_number":53,"context_line":"CONF.import_opt(\u0027volume_drivers\u0027, \u0027nova.virt.libvirt.driver\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BQFQ%3D","line":53,"updated":"2014-01-28 17:28:32.000000000","message":"Again, this is absolutely not OK. The existing baremetal driver does this and there\u0027s a bug filed to remove it. We don\u0027t want Ironic driver having the same bad practice\n\nhttps://bugs.launchpad.net/nova/+bug/1261827","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"5657e740aa0601fbc4de7bf71eae2f13f59a4225","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"def _get_baremetal_node_by_instance_uuid(instance_uuid):"},{"line_number":59,"context_line":"    LOG.warn(\u0027_get_baremetal_node_by_instance_uuid\u0027)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def _create_iscsi_export_tgtadm(path, tid, iqn):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BPtY%3D","line":59,"updated":"2014-01-28 18:32:33.000000000","message":"should be :\nLOG.warn(_(\u0027_get_baremetal_node_by_instance_uuid\u0027))","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"e59b41b216cb26e3c260ac6832fae18a9da9ca24","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def get_volume_connector(self, instance):"},{"line_number":190,"context_line":"        if not self._initiator:"},{"line_number":191,"context_line":"            self._initiator \u003d libvirt_utils.get_iscsi_initiator()"},{"line_number":192,"context_line":"            if not self._initiator:"},{"line_number":193,"context_line":"                LOG.warn(_(\u0027Could not determine iscsi initiator name\u0027),"},{"line_number":194,"context_line":"                         instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2BINM%3D","line":191,"updated":"2014-01-29 21:48:10.000000000","message":"This is going to return the initiator of the nova node, not the initiator of the baremetal host.   We should be asking ironic for this, and ironic should be generating an iqn using the open-iscsi util iscsi-iname.","commit_id":"bd865a641e928175fd9da78c89a14b96bc024af6"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"ff3b3725d2f690c4381efa3df200a9d4774fcfc4","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def get_volume_connector(self, instance):"},{"line_number":187,"context_line":"        if not self._initiator:"},{"line_number":188,"context_line":"            self._initiator \u003d libvirt_utils.get_iscsi_initiator()"},{"line_number":189,"context_line":"            if not self._initiator:"},{"line_number":190,"context_line":"                LOG.warn(_(\u0027Could not determine iscsi initiator name\u0027),"},{"line_number":191,"context_line":"                         instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F97lM%3D","line":188,"updated":"2014-01-31 22:56:33.000000000","message":"This initiator should be coming from ironic, not the nova compute node.  Ironic needs to generate the iscsi iqn with open-iscsi\u0027s iscsi-iname and/or try and fetch it from the bm node.","commit_id":"f959756938873f1def90e5ac5aa2c672b562033c"}]}
