)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"f4b360eda003d9c921e24ee55b35e90a619052be","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This change is to manage an empty /etc/machine-id file as if the file"},{"line_number":14,"context_line":"was missing."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Fixes bug 1475353"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I2b163d6a42f66ab660c3728b1e29b4b64efbceba"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a50d1a3_2cf8df48","line":16,"updated":"2015-07-27 10:14:46.000000000","message":"this should look like https://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references says, without a blank line below it","commit_id":"7225405da0a70fc494c23661fa3e9952a4402558"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"242f0fe0aa7eb9ce1fea75dd0bd06f860dbb3079","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This change is to manage an empty /etc/machine-id file as if the file"},{"line_number":14,"context_line":"was missing."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Fixes bug 1475353"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I2b163d6a42f66ab660c3728b1e29b4b64efbceba"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3a50d1a3_4d42c23f","line":16,"in_reply_to":"3a50d1a3_2cf8df48","updated":"2015-07-28 14:22:17.000000000","message":"Done","commit_id":"7225405da0a70fc494c23661fa3e9952a4402558"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"5e93eb141fe8f2a5579495ea030e4377534558c5","unresolved":false,"context_lines":[{"line_number":3533,"context_line":"        self.flags(sysinfo_serial\u003d\"os\", group\u003d\"libvirt\")"},{"line_number":3534,"context_line":""},{"line_number":3535,"context_line":"        real_open \u003d __builtin__.open"},{"line_number":3536,"context_line":"        with contextlib.nested("},{"line_number":3537,"context_line":"                mock.patch.object(__builtin__, \"open\"),"},{"line_number":3538,"context_line":"        ) as (mock_open, ):"},{"line_number":3539,"context_line":"            theuuid \u003d \"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_cc793bfe","line":3536,"updated":"2015-07-27 10:13:17.000000000","message":"You don\u0027t need this when you\u0027re only mocking one thing and it\u0027s ugly enough for consistency to be outweighed (imo). It looks like you copied the prior test; it\u0027d be better to update that test.","commit_id":"7225405da0a70fc494c23661fa3e9952a4402558"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"242f0fe0aa7eb9ce1fea75dd0bd06f860dbb3079","unresolved":false,"context_lines":[{"line_number":3533,"context_line":"        self.flags(sysinfo_serial\u003d\"os\", group\u003d\"libvirt\")"},{"line_number":3534,"context_line":""},{"line_number":3535,"context_line":"        real_open \u003d __builtin__.open"},{"line_number":3536,"context_line":"        with contextlib.nested("},{"line_number":3537,"context_line":"                mock.patch.object(__builtin__, \"open\"),"},{"line_number":3538,"context_line":"        ) as (mock_open, ):"},{"line_number":3539,"context_line":"            theuuid \u003d \"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_8d6a0ab4","line":3536,"in_reply_to":"3a50d1a3_cc793bfe","updated":"2015-07-28 14:22:17.000000000","message":"Done","commit_id":"7225405da0a70fc494c23661fa3e9952a4402558"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"5e93eb141fe8f2a5579495ea030e4377534558c5","unresolved":false,"context_lines":[{"line_number":3535,"context_line":"        real_open \u003d __builtin__.open"},{"line_number":3536,"context_line":"        with contextlib.nested("},{"line_number":3537,"context_line":"                mock.patch.object(__builtin__, \"open\"),"},{"line_number":3538,"context_line":"        ) as (mock_open, ):"},{"line_number":3539,"context_line":"            theuuid \u003d \"\""},{"line_number":3540,"context_line":""},{"line_number":3541,"context_line":"            def fake_open(filename, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_0c4ac3c5","line":3538,"updated":"2015-07-27 10:13:17.000000000","message":"Check out http://www.voidspace.org.uk/python/mock/helpers.html?highlight\u003dopen#mock.mock_open","commit_id":"7225405da0a70fc494c23661fa3e9952a4402558"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"242f0fe0aa7eb9ce1fea75dd0bd06f860dbb3079","unresolved":false,"context_lines":[{"line_number":3535,"context_line":"        real_open \u003d __builtin__.open"},{"line_number":3536,"context_line":"        with contextlib.nested("},{"line_number":3537,"context_line":"                mock.patch.object(__builtin__, \"open\"),"},{"line_number":3538,"context_line":"        ) as (mock_open, ):"},{"line_number":3539,"context_line":"            theuuid \u003d \"\""},{"line_number":3540,"context_line":""},{"line_number":3541,"context_line":"            def fake_open(filename, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_4d972290","line":3538,"in_reply_to":"3a50d1a3_0c4ac3c5","updated":"2015-07-28 14:22:17.000000000","message":"Thanks for the pointer. Done","commit_id":"7225405da0a70fc494c23661fa3e9952a4402558"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"71caaa4a5831f97a935924f5672bb3289009d467","unresolved":false,"context_lines":[{"line_number":3509,"context_line":"        real_exists \u003d os.path.exists"},{"line_number":3510,"context_line":"        mock_exists \u003d mock.patch.object(os.path, \"exists\")"},{"line_number":3511,"context_line":""},{"line_number":3512,"context_line":"        def fake_exists(filename):"},{"line_number":3513,"context_line":"            if filename \u003d\u003d \"/etc/machine-id\":"},{"line_number":3514,"context_line":"                return False"},{"line_number":3515,"context_line":"            return real_exists(filename)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_d0a017f7","line":3512,"updated":"2015-08-04 12:40:31.000000000","message":"This code is repeated 3 times. It would be better to refactor it out into a separate method that is referenced by these three tests.","commit_id":"2fccccbfd25c12eab7c08f0fa180451a108e7a86"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"cb2d65d3781607a7b2f0407ac3779fd48061aded","unresolved":false,"context_lines":[{"line_number":3308,"context_line":"            # so we parse \u0026 reformat the value"},{"line_number":3309,"context_line":"            machine_id \u003d f.read().split()"},{"line_number":3310,"context_line":"            if len(machine_id) \u003d\u003d 0:"},{"line_number":3311,"context_line":"                return"},{"line_number":3312,"context_line":"            return str(uuid.UUID(machine_id[0]))"},{"line_number":3313,"context_line":""},{"line_number":3314,"context_line":"    def _get_host_sysinfo_serial_auto(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_0c77233b","line":3311,"updated":"2015-07-27 10:08:39.000000000","message":"If the file doesn\u0027t exist, the open() will produce an IOError. Whereas if the file is empty,  None will be returned. It\u0027s not obvious to me that these produce the same outcome, please would you explain?","commit_id":"7225405da0a70fc494c23661fa3e9952a4402558"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"ea7344591cccca2911ac4907491170fb051b0c2a","unresolved":false,"context_lines":[{"line_number":3308,"context_line":"            # so we parse \u0026 reformat the value"},{"line_number":3309,"context_line":"            machine_id \u003d f.read().split()"},{"line_number":3310,"context_line":"            if len(machine_id) \u003d\u003d 0:"},{"line_number":3311,"context_line":"                return"},{"line_number":3312,"context_line":"            return str(uuid.UUID(machine_id[0]))"},{"line_number":3313,"context_line":""},{"line_number":3314,"context_line":"    def _get_host_sysinfo_serial_auto(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_7038ea3d","line":3311,"in_reply_to":"3a50d1a3_0c77233b","updated":"2015-07-27 14:25:24.000000000","message":"We should raise an exception if the file is empty - we want that to be treated same as if it were missing.","commit_id":"7225405da0a70fc494c23661fa3e9952a4402558"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"242f0fe0aa7eb9ce1fea75dd0bd06f860dbb3079","unresolved":false,"context_lines":[{"line_number":3308,"context_line":"            # so we parse \u0026 reformat the value"},{"line_number":3309,"context_line":"            machine_id \u003d f.read().split()"},{"line_number":3310,"context_line":"            if len(machine_id) \u003d\u003d 0:"},{"line_number":3311,"context_line":"                return"},{"line_number":3312,"context_line":"            return str(uuid.UUID(machine_id[0]))"},{"line_number":3313,"context_line":""},{"line_number":3314,"context_line":"    def _get_host_sysinfo_serial_auto(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_6d1e9e0d","line":3311,"in_reply_to":"3a50d1a3_0c77233b","updated":"2015-07-28 14:22:17.000000000","message":"You are right Alexis the change as is doesn\u0027t produce the same outcome.\nI had a chat with Daniel on IRC and he suggested me, as reported below, to treat an empty file as a missing one, which means to raise an exception.\nThat will be implemented in the next patch","commit_id":"7225405da0a70fc494c23661fa3e9952a4402558"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"242f0fe0aa7eb9ce1fea75dd0bd06f860dbb3079","unresolved":false,"context_lines":[{"line_number":3308,"context_line":"            # so we parse \u0026 reformat the value"},{"line_number":3309,"context_line":"            machine_id \u003d f.read().split()"},{"line_number":3310,"context_line":"            if len(machine_id) \u003d\u003d 0:"},{"line_number":3311,"context_line":"                return"},{"line_number":3312,"context_line":"            return str(uuid.UUID(machine_id[0]))"},{"line_number":3313,"context_line":""},{"line_number":3314,"context_line":"    def _get_host_sysinfo_serial_auto(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_2d1416e7","line":3311,"in_reply_to":"3a50d1a3_7038ea3d","updated":"2015-07-28 14:22:17.000000000","message":"Done","commit_id":"7225405da0a70fc494c23661fa3e9952a4402558"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"41d0441ce70f78f084ab9599bd2ea95d00838b3a","unresolved":false,"context_lines":[{"line_number":3258,"context_line":"        \"\"\""},{"line_number":3259,"context_line":"        msg \u003d _(\"Invalid machine-id, the file is not present or empty\")"},{"line_number":3260,"context_line":"        if not os.path.exists(\"/etc/machine-id\"):"},{"line_number":3261,"context_line":"            raise exception.NovaException(msg)"},{"line_number":3262,"context_line":""},{"line_number":3263,"context_line":"        with open(\"/etc/machine-id\") as f:"},{"line_number":3264,"context_line":"            # We want to have \u0027-\u0027 in the right place"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_6ba75fbd","line":3261,"updated":"2015-07-28 16:27:59.000000000","message":"I\u0027m not sure it\u0027s OK to change the exception raised from IOError to NovaException, have you checked through the call stack for except clauses?","commit_id":"f9571e594b54d98088f30abf704a54fe262c5184"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"7f5ba628080032d4f7170a72c6a5f312db1a3e60","unresolved":false,"context_lines":[{"line_number":3258,"context_line":"        \"\"\""},{"line_number":3259,"context_line":"        msg \u003d _(\"Invalid machine-id, the file is not present or empty\")"},{"line_number":3260,"context_line":"        if not os.path.exists(\"/etc/machine-id\"):"},{"line_number":3261,"context_line":"            raise exception.NovaException(msg)"},{"line_number":3262,"context_line":""},{"line_number":3263,"context_line":"        with open(\"/etc/machine-id\") as f:"},{"line_number":3264,"context_line":"            # We want to have \u0027-\u0027 in the right place"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_b3e5b538","line":3261,"in_reply_to":"3a50d1a3_1dc83a54","updated":"2015-07-29 10:19:01.000000000","message":"AFAICT no it doesn\u0027t, the API has an \"except Exception\"","commit_id":"f9571e594b54d98088f30abf704a54fe262c5184"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"12aadea202ac581ffcad48238f31a930d22c8c8f","unresolved":false,"context_lines":[{"line_number":3258,"context_line":"        \"\"\""},{"line_number":3259,"context_line":"        msg \u003d _(\"Invalid machine-id, the file is not present or empty\")"},{"line_number":3260,"context_line":"        if not os.path.exists(\"/etc/machine-id\"):"},{"line_number":3261,"context_line":"            raise exception.NovaException(msg)"},{"line_number":3262,"context_line":""},{"line_number":3263,"context_line":"        with open(\"/etc/machine-id\") as f:"},{"line_number":3264,"context_line":"            # We want to have \u0027-\u0027 in the right place"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_1dc83a54","line":3261,"in_reply_to":"3a50d1a3_31646420","updated":"2015-07-29 09:37:09.000000000","message":"OK - and it doesn\u0027t escape across the API?","commit_id":"f9571e594b54d98088f30abf704a54fe262c5184"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"507a0f163da2f2d646b5bd67bf495e5a022d5b08","unresolved":false,"context_lines":[{"line_number":3258,"context_line":"        \"\"\""},{"line_number":3259,"context_line":"        msg \u003d _(\"Invalid machine-id, the file is not present or empty\")"},{"line_number":3260,"context_line":"        if not os.path.exists(\"/etc/machine-id\"):"},{"line_number":3261,"context_line":"            raise exception.NovaException(msg)"},{"line_number":3262,"context_line":""},{"line_number":3263,"context_line":"        with open(\"/etc/machine-id\") as f:"},{"line_number":3264,"context_line":"            # We want to have \u0027-\u0027 in the right place"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_31646420","line":3261,"in_reply_to":"3a50d1a3_6ba75fbd","updated":"2015-07-28 17:15:32.000000000","message":"yes It is not managed at the moment, so it is safe to change it to a NovaException","commit_id":"f9571e594b54d98088f30abf704a54fe262c5184"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"41d0441ce70f78f084ab9599bd2ea95d00838b3a","unresolved":false,"context_lines":[{"line_number":3263,"context_line":"        with open(\"/etc/machine-id\") as f:"},{"line_number":3264,"context_line":"            # We want to have \u0027-\u0027 in the right place"},{"line_number":3265,"context_line":"            # so we parse \u0026 reformat the value"},{"line_number":3266,"context_line":"            machine_id \u003d f.read().split()"},{"line_number":3267,"context_line":"            if len(machine_id) \u003d\u003d 0:"},{"line_number":3268,"context_line":"                raise exception.NovaException(msg)"},{"line_number":3269,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_2b5ab7f2","line":3266,"updated":"2015-07-28 16:27:59.000000000","message":"machine_id is a pretty confusing name for this; I\u0027d call it \"lines\" or \"text\"","commit_id":"f9571e594b54d98088f30abf704a54fe262c5184"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"507a0f163da2f2d646b5bd67bf495e5a022d5b08","unresolved":false,"context_lines":[{"line_number":3263,"context_line":"        with open(\"/etc/machine-id\") as f:"},{"line_number":3264,"context_line":"            # We want to have \u0027-\u0027 in the right place"},{"line_number":3265,"context_line":"            # so we parse \u0026 reformat the value"},{"line_number":3266,"context_line":"            machine_id \u003d f.read().split()"},{"line_number":3267,"context_line":"            if len(machine_id) \u003d\u003d 0:"},{"line_number":3268,"context_line":"                raise exception.NovaException(msg)"},{"line_number":3269,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_9c5c6f1a","line":3266,"in_reply_to":"3a50d1a3_2b5ab7f2","updated":"2015-07-28 17:15:32.000000000","message":"sorry but I disagree the content of the file is the machine-id so it seems correct to me call it in that way.\nfrom http://man7.org/linux/man-pages/man5/machine-id.5.html\n\"The /etc/machine-id file contains the unique machine ID of the local\n       system that is set during installation. The machine ID is a single\n       newline-terminated, hexadecimal, 32-character, lowercase machine ID\n       string. When decoded from hexadecimal, this corresponds with a\n       16-byte/128-bit string.\"","commit_id":"f9571e594b54d98088f30abf704a54fe262c5184"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"7f5ba628080032d4f7170a72c6a5f312db1a3e60","unresolved":false,"context_lines":[{"line_number":3263,"context_line":"        with open(\"/etc/machine-id\") as f:"},{"line_number":3264,"context_line":"            # We want to have \u0027-\u0027 in the right place"},{"line_number":3265,"context_line":"            # so we parse \u0026 reformat the value"},{"line_number":3266,"context_line":"            machine_id \u003d f.read().split()"},{"line_number":3267,"context_line":"            if len(machine_id) \u003d\u003d 0:"},{"line_number":3268,"context_line":"                raise exception.NovaException(msg)"},{"line_number":3269,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_73d2cd5d","line":3266,"in_reply_to":"3a50d1a3_5db1e2de","updated":"2015-07-29 10:19:01.000000000","message":"Done","commit_id":"f9571e594b54d98088f30abf704a54fe262c5184"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"12aadea202ac581ffcad48238f31a930d22c8c8f","unresolved":false,"context_lines":[{"line_number":3263,"context_line":"        with open(\"/etc/machine-id\") as f:"},{"line_number":3264,"context_line":"            # We want to have \u0027-\u0027 in the right place"},{"line_number":3265,"context_line":"            # so we parse \u0026 reformat the value"},{"line_number":3266,"context_line":"            machine_id \u003d f.read().split()"},{"line_number":3267,"context_line":"            if len(machine_id) \u003d\u003d 0:"},{"line_number":3268,"context_line":"                raise exception.NovaException(msg)"},{"line_number":3269,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_5db1e2de","line":3266,"in_reply_to":"3a50d1a3_9c5c6f1a","updated":"2015-07-29 09:37:09.000000000","message":"Yes I understand all that, but the type of machine-id should be String not String[].","commit_id":"f9571e594b54d98088f30abf704a54fe262c5184"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7baea3a5b58e8f9a262815324042484eef611ac1","unresolved":false,"context_lines":[{"line_number":3256,"context_line":"        systemd based containers and can be provided by other"},{"line_number":3257,"context_line":"        init systems too, since it is just a plain text file."},{"line_number":3258,"context_line":"        \"\"\""},{"line_number":3259,"context_line":"        msg \u003d _(\"Invalid machine-id, the file is not present or empty\")"},{"line_number":3260,"context_line":"        if not os.path.exists(\"/etc/machine-id\"):"},{"line_number":3261,"context_line":"            raise exception.NovaException(msg)"},{"line_number":3262,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_133d892a","line":3259,"updated":"2015-07-29 10:22:22.000000000","message":"This kind of message is really very unhelpful as you force the admin to now figure out which scenario it was, when nova already knows \u0026 could have told them. Please use a separate message for each scenario, so the admin actually gets directly useful info.","commit_id":"d5f8d26c4558016de74d165bbc6b69ee2466ca5a"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"032b15711da61a2bc9c3bfef07623982362a52eb","unresolved":false,"context_lines":[{"line_number":3256,"context_line":"        systemd based containers and can be provided by other"},{"line_number":3257,"context_line":"        init systems too, since it is just a plain text file."},{"line_number":3258,"context_line":"        \"\"\""},{"line_number":3259,"context_line":"        msg \u003d _(\"Invalid machine-id, the file is not present or empty\")"},{"line_number":3260,"context_line":"        if not os.path.exists(\"/etc/machine-id\"):"},{"line_number":3261,"context_line":"            raise exception.NovaException(msg)"},{"line_number":3262,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_b3561528","line":3259,"in_reply_to":"3a50d1a3_133d892a","updated":"2015-07-29 10:29:11.000000000","message":"Done","commit_id":"d5f8d26c4558016de74d165bbc6b69ee2466ca5a"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9cabcd9bc9fb9384fe57f81995c585b37f426132","unresolved":false,"context_lines":[{"line_number":3256,"context_line":"        systemd based containers and can be provided by other"},{"line_number":3257,"context_line":"        init systems too, since it is just a plain text file."},{"line_number":3258,"context_line":"        \"\"\""},{"line_number":3259,"context_line":"        msg \u003d _(\"Invalid machine-id: the /etc/machine-id file is not present\")"},{"line_number":3260,"context_line":"        if not os.path.exists(\"/etc/machine-id\"):"},{"line_number":3261,"context_line":"            raise exception.NovaException(msg)"},{"line_number":3262,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_769ddbba","line":3259,"updated":"2015-07-29 10:34:28.000000000","message":"Hmm now danpb has me looking closer... this would be more helpful and accurate as \"Unable to get host UUID: /etc/machine-id does not exist\".","commit_id":"94f65a39f84300bfc4c4619b3444a4d14f6cb605"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"4410006acd594e2e489c0e09d31efbeb9e54230e","unresolved":false,"context_lines":[{"line_number":3256,"context_line":"        systemd based containers and can be provided by other"},{"line_number":3257,"context_line":"        init systems too, since it is just a plain text file."},{"line_number":3258,"context_line":"        \"\"\""},{"line_number":3259,"context_line":"        msg \u003d _(\"Invalid machine-id: the /etc/machine-id file is not present\")"},{"line_number":3260,"context_line":"        if not os.path.exists(\"/etc/machine-id\"):"},{"line_number":3261,"context_line":"            raise exception.NovaException(msg)"},{"line_number":3262,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_96d50744","line":3259,"in_reply_to":"3a50d1a3_769ddbba","updated":"2015-07-29 10:37:41.000000000","message":"yes I like it","commit_id":"94f65a39f84300bfc4c4619b3444a4d14f6cb605"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"71caaa4a5831f97a935924f5672bb3289009d467","unresolved":false,"context_lines":[{"line_number":3265,"context_line":"            # We want to have \u0027-\u0027 in the right place"},{"line_number":3266,"context_line":"            # so we parse \u0026 reformat the value"},{"line_number":3267,"context_line":"            lines \u003d f.read().split()"},{"line_number":3268,"context_line":"            if len(lines) \u003d\u003d 0:"},{"line_number":3269,"context_line":"                msg \u003d _(\"Unable to get host UUID: /etc/machine-id is empty\")"},{"line_number":3270,"context_line":"                raise exception.NovaException(msg)"},{"line_number":3271,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_3014db42","line":3268,"updated":"2015-08-04 12:40:31.000000000","message":"Minor nit: it is more pythonic to simply say\n\n    if not lines:","commit_id":"2fccccbfd25c12eab7c08f0fa180451a108e7a86"}]}
