)]}'
{"nova/rc_fields.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d20c2cbb0db7fbd026f53eb52668c95d5c5962a2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    IPV4_ADDRESS \u003d \u0027IPV4_ADDRESS\u0027"},{"line_number":42,"context_line":"    VGPU \u003d \u0027VGPU\u0027"},{"line_number":43,"context_line":"    VGPU_DISPLAY_HEAD \u003d \u0027VGPU_DISPLAY_HEAD\u0027"},{"line_number":44,"context_line":"    NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND \u003d ("},{"line_number":45,"context_line":"        \u0027NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\u0027)"},{"line_number":46,"context_line":"    NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND \u003d ("},{"line_number":47,"context_line":"        \u0027NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_da3b2ee7","line":44,"range":{"start_line":44,"start_character":4,"end_line":44,"end_character":44},"updated":"2018-05-31 16:20:43.000000000","message":"yay, a 40c label.  That\u0027s half your allowed line width gone right there.","commit_id":"ee40726ae9f140d3946711d3a6d93620391bedbe"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d20c2cbb0db7fbd026f53eb52668c95d5c5962a2","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    VGPU_DISPLAY_HEAD \u003d \u0027VGPU_DISPLAY_HEAD\u0027"},{"line_number":44,"context_line":"    NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND \u003d ("},{"line_number":45,"context_line":"        \u0027NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\u0027)"},{"line_number":46,"context_line":"    NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND \u003d ("},{"line_number":47,"context_line":"        \u0027NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    # The ordering here is relevant. If you must add a value, only"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_1a1f666c","line":46,"range":{"start_line":46,"start_character":4,"end_line":46,"end_character":45},"updated":"2018-05-31 16:20:43.000000000","message":"So I\u0027m going to refer to this as:\n\n rc_fields.ResourceClass.NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\n\n?  That\u0027s what, 65c?","commit_id":"ee40726ae9f140d3946711d3a6d93620391bedbe"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc155a41437833c45c41e1ab19d619b04d12501a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    VGPU_DISPLAY_HEAD \u003d \u0027VGPU_DISPLAY_HEAD\u0027"},{"line_number":44,"context_line":"    NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND \u003d ("},{"line_number":45,"context_line":"        \u0027NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\u0027)"},{"line_number":46,"context_line":"    NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND \u003d ("},{"line_number":47,"context_line":"        \u0027NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    # The ordering here is relevant. If you must add a value, only"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_24a473a5","line":46,"range":{"start_line":46,"start_character":4,"end_line":46,"end_character":45},"in_reply_to":"5f7c97a3_1a1f666c","updated":"2018-06-01 15:22:34.000000000","message":"But it still fits in 79 chars :D\nPoint taken. I\u0027ve introduced some abbrev for the label.","commit_id":"ee40726ae9f140d3946711d3a6d93620391bedbe"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"46d6cae636272d867aa37c98dc2414190d4c2210","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    VGPU \u003d \u0027VGPU\u0027"},{"line_number":43,"context_line":"    VGPU_DISPLAY_HEAD \u003d \u0027VGPU_DISPLAY_HEAD\u0027"},{"line_number":44,"context_line":"    NET_BW_EGRESS \u003d \u0027NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":45,"context_line":"    NET_BW_INGRESS \u003d \u0027NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The ordering here is relevant. If you must add a value, only"},{"line_number":48,"context_line":"    # append."}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_fa6ec6fe","line":45,"updated":"2018-06-18 16:20:32.000000000","message":"This is a big change we should consider rather strongly before doing. Every core resource class symbol is the same as its string value. From my standpoint that\u0027s been on purpose and not something we should change. If the string values are so long that we need abbreviations to use them well, then they are too long for use in raw calls to the API (or by someone who doesn\u0027t have access to this file or the forthcoming os-resource-classes (or whatever the thing might be).\n\nThat we have symbols in code for these things is a convenience. What we have in the API is strings, and those strings need to be usable by a wide variety of things.","commit_id":"f45d14b3c973a9a15a22363aaa98e6ed72c1fca6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e388984a326b9cb17fcbdd767d0eb33c1e59c307","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    VGPU \u003d \u0027VGPU\u0027"},{"line_number":43,"context_line":"    VGPU_DISPLAY_HEAD \u003d \u0027VGPU_DISPLAY_HEAD\u0027"},{"line_number":44,"context_line":"    NET_BW_EGRESS \u003d \u0027NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":45,"context_line":"    NET_BW_INGRESS \u003d \u0027NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The ordering here is relevant. If you must add a value, only"},{"line_number":48,"context_line":"    # append."}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_641f3ab8","line":45,"in_reply_to":"3f79a3b5_04d1a6f9","updated":"2018-11-05 22:31:28.000000000","message":"Done","commit_id":"f45d14b3c973a9a15a22363aaa98e6ed72c1fca6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"75338f5517c031865eb78f4ced8dcbb933ad8ddb","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    VGPU \u003d \u0027VGPU\u0027"},{"line_number":43,"context_line":"    VGPU_DISPLAY_HEAD \u003d \u0027VGPU_DISPLAY_HEAD\u0027"},{"line_number":44,"context_line":"    NET_BW_EGRESS \u003d \u0027NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":45,"context_line":"    NET_BW_INGRESS \u003d \u0027NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The ordering here is relevant. If you must add a value, only"},{"line_number":48,"context_line":"    # append."}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_04d1a6f9","line":45,"in_reply_to":"3f79a3b5_649ada60","updated":"2018-11-05 22:25:04.000000000","message":"\u003e Matt asked about this in IRC so repeating my comments there, here:\n \u003e \n \u003e [10:17pm] cdent: did we consider NET_BW_EGRESS_KBPS or is that too\n \u003e ambiguous for bits and bytes? (although historicall *bps has always\n \u003e been bits?)\n \u003e [10:18pm] cdent: mriedem: I don\u0027t have a huge opinion on that\n \u003e actual name, just that the symbol and the string in the canonical\n \u003e location be the same thing\n \u003e [10:18pm] cdent: given the canonical location is going to change\n \u003e soonish *shrug*\n\nGibi considered it above:\n\n\u003e I needed to include the unit of the resource as it is not trivial and as the name needs to be all upper case the bit and byte difference (the capital B in KB means byte officially) in the unit cannot be expressed if abbreviated.\n\nSo I\u0027m just going to update to NET_BW_EGR_KILOBIT_PER_SEC and NET_BW_IGR_KILOBIT_PER_SEC and we can move on.","commit_id":"f45d14b3c973a9a15a22363aaa98e6ed72c1fca6"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"85af57b923d4444e185435f4c9c8422704d51315","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    VGPU \u003d \u0027VGPU\u0027"},{"line_number":43,"context_line":"    VGPU_DISPLAY_HEAD \u003d \u0027VGPU_DISPLAY_HEAD\u0027"},{"line_number":44,"context_line":"    NET_BW_EGRESS \u003d \u0027NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":45,"context_line":"    NET_BW_INGRESS \u003d \u0027NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The ordering here is relevant. If you must add a value, only"},{"line_number":48,"context_line":"    # append."}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_649ada60","line":45,"in_reply_to":"3f79a3b5_a365c4b2","updated":"2018-11-05 22:20:17.000000000","message":"Matt asked about this in IRC so repeating my comments there, here:\n\n[10:17pm] cdent: did we consider NET_BW_EGRESS_KBPS or is that too ambiguous for bits and bytes? (although historicall *bps has always been bits?)\n[10:18pm] cdent: mriedem: I don\u0027t have a huge opinion on that actual name, just that the symbol and the string in the canonical location be the same thing\n[10:18pm] cdent: given the canonical location is going to change soonish *shrug*","commit_id":"f45d14b3c973a9a15a22363aaa98e6ed72c1fca6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7d847db8458e3dc455fa90ac8c87554404395c9d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    VGPU \u003d \u0027VGPU\u0027"},{"line_number":43,"context_line":"    VGPU_DISPLAY_HEAD \u003d \u0027VGPU_DISPLAY_HEAD\u0027"},{"line_number":44,"context_line":"    NET_BW_EGRESS \u003d \u0027NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":45,"context_line":"    NET_BW_INGRESS \u003d \u0027NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The ordering here is relevant. If you must add a value, only"},{"line_number":48,"context_line":"    # append."}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_68c122e4","line":45,"in_reply_to":"5f7c97a3_09ba27e0","updated":"2018-06-22 16:19:50.000000000","message":"I\u0027m having a hard time agreeing that the symbols need to match the names, or that what\u0027s appropriate for HTTP-based APIs is appropriate for development in a given language - especially one like python where horizontal space is at a premium.\n\nIn addition to providing some rudimentary \"compile-time\" error checking, these symbols are as you say a convenience for the python developer.  So they might as well be a convenience.\n\nI\u0027d be interested to see what Jay has to say about this.","commit_id":"f45d14b3c973a9a15a22363aaa98e6ed72c1fca6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"69378b33223e9980464c0728eb1e10d16f371d28","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    VGPU \u003d \u0027VGPU\u0027"},{"line_number":43,"context_line":"    VGPU_DISPLAY_HEAD \u003d \u0027VGPU_DISPLAY_HEAD\u0027"},{"line_number":44,"context_line":"    NET_BW_EGRESS \u003d \u0027NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":45,"context_line":"    NET_BW_INGRESS \u003d \u0027NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The ordering here is relevant. If you must add a value, only"},{"line_number":48,"context_line":"    # append."}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_a365c4b2","line":45,"in_reply_to":"5f7c97a3_6344ea73","updated":"2018-10-30 14:46:10.000000000","message":"\u003e I could think about abbreviations like NET_BW_EGR_KILOBIT_PER_SEC, NET_BW_IGR_KILOBIT_PER_SEC if the goal is to make the name shorter. Thoughts?\n\nThat seems OK, or even KBIT for KILOBIT if you want to go further.","commit_id":"f45d14b3c973a9a15a22363aaa98e6ed72c1fca6"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"dfd74cebf3aa09ef86a464b55c20c9d4060cd716","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    VGPU \u003d \u0027VGPU\u0027"},{"line_number":43,"context_line":"    VGPU_DISPLAY_HEAD \u003d \u0027VGPU_DISPLAY_HEAD\u0027"},{"line_number":44,"context_line":"    NET_BW_EGRESS \u003d \u0027NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":45,"context_line":"    NET_BW_INGRESS \u003d \u0027NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The ordering here is relevant. If you must add a value, only"},{"line_number":48,"context_line":"    # append."}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_0b674826","line":45,"in_reply_to":"5f7c97a3_68c122e4","updated":"2018-06-22 17:19:39.000000000","message":"\u003e I\u0027m having a hard time agreeing that the symbols need to match the\n \u003e names, or that what\u0027s appropriate for HTTP-based APIs is\n \u003e appropriate for development in a given language - especially one\n \u003e like python where horizontal space is at a premium.\n\nI didn\u0027t say that (or perhaps \"just\" that). What I said was that until now we\u0027ve matched symbol to string so changing it is not something we should do lightly.","commit_id":"f45d14b3c973a9a15a22363aaa98e6ed72c1fca6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"13e61e42ba1171612b45b34c68c0548122661918","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    VGPU \u003d \u0027VGPU\u0027"},{"line_number":43,"context_line":"    VGPU_DISPLAY_HEAD \u003d \u0027VGPU_DISPLAY_HEAD\u0027"},{"line_number":44,"context_line":"    NET_BW_EGRESS \u003d \u0027NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":45,"context_line":"    NET_BW_INGRESS \u003d \u0027NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The ordering here is relevant. If you must add a value, only"},{"line_number":48,"context_line":"    # append."}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_6344ea73","line":45,"in_reply_to":"5f7c97a3_fa6ec6fe","updated":"2018-07-05 15:14:13.000000000","message":"\"If the string values are so long that we need abbreviations to use them well, then they are too long for use in raw calls to the API\"\n\nThe string names of these resource classes need to contain the unit -- since unfortunately we don\u0027t have unit as a separate attribute of the resource class itself. And, as Gibi mentions, there\u0027s good reason to spell out KILOBITS_PER_SECOND: we need to be explicit given the potential for confusion around byte vs. bit as well as the time period the bandwidth is measured in.\n\nWhile I agree that we haven\u0027t had any resource class names that are different from the ResourceClassField constants, that\u0027s probably just because we haven\u0027t required a long name like this before.\n\nThat said, I think it\u0027s probably best to be consistent, as Chris says. Python developers needing to use these constants can easily make an abbreviated variable name if they really want...\n\nsomething like:\n\n from nova.objects import fields\n ...\n NET_BW_INGRESS \u003d fields.ResourceClass.NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND","commit_id":"f45d14b3c973a9a15a22363aaa98e6ed72c1fca6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e64e794cb1a05b516951fd7493e03f207275e716","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    VGPU \u003d \u0027VGPU\u0027"},{"line_number":43,"context_line":"    VGPU_DISPLAY_HEAD \u003d \u0027VGPU_DISPLAY_HEAD\u0027"},{"line_number":44,"context_line":"    NET_BW_EGRESS \u003d \u0027NET_BANDWIDTH_EGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":45,"context_line":"    NET_BW_INGRESS \u003d \u0027NET_BANDWIDTH_INGRESS_KILOBITS_PER_SECOND\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # The ordering here is relevant. If you must add a value, only"},{"line_number":48,"context_line":"    # append."}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_09ba27e0","line":45,"in_reply_to":"5f7c97a3_fa6ec6fe","updated":"2018-06-20 13:41:42.000000000","message":"Good point about API usability. \n\n* I tried to follow the (seems to be) rule that the resource class name should be self describing, like VGPU_DISPLAY_HEAD. \n* I needed to include the unit of the resource as it is not trivial and as the name needs to be all upper case the bit and byte difference (the capital B in KB means byte officially) in the unit cannot be expressed if abbreviated.\n\nI don\u0027t see any information I can leave out from the name without loosing meaning.\n* NET: we are not talking about memory bandwidth \n* BANDWIDTH: that is the core of the resource\n* EGRESS/INGRESS: direction. Unfortunately we need separate class per direction even if direction is just a qualitative information as traits are per RP not per resource\n* KILOBITS_PER_SECOND: non trivial unit so we need to be explicit.\n\nI could think about abbreviations like NET_BW_EGR_KILOBIT_PER_SEC, NET_BW_IGR_KILOBIT_PER_SEC if the goal is to make the name shorter. Thoughts?","commit_id":"f45d14b3c973a9a15a22363aaa98e6ed72c1fca6"}],"nova/tests/unit/objects/test_fields.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5e487103c8c4655563b88e1d30ccd3d438b9d1dc","unresolved":false,"context_lines":[{"line_number":336,"context_line":"    def setUp(self):"},{"line_number":337,"context_line":"        super(TestResourceClass, self).setUp()"},{"line_number":338,"context_line":"        self.field \u003d rc_fields.ResourceClassField()"},{"line_number":339,"context_line":"        self.coerce_good_values \u003d ["},{"line_number":340,"context_line":"            (\u0027VCPU\u0027, \u0027VCPU\u0027),"},{"line_number":341,"context_line":"            (\u0027MEMORY_MB\u0027, \u0027MEMORY_MB\u0027),"},{"line_number":342,"context_line":"            (\u0027DISK_GB\u0027, \u0027DISK_GB\u0027),"},{"line_number":343,"context_line":"            (\u0027PCI_DEVICE\u0027, \u0027PCI_DEVICE\u0027),"},{"line_number":344,"context_line":"            (\u0027SRIOV_NET_VF\u0027, \u0027SRIOV_NET_VF\u0027),"},{"line_number":345,"context_line":"            (\u0027NUMA_SOCKET\u0027, \u0027NUMA_SOCKET\u0027),"},{"line_number":346,"context_line":"            (\u0027NUMA_CORE\u0027, \u0027NUMA_CORE\u0027),"},{"line_number":347,"context_line":"            (\u0027NUMA_THREAD\u0027, \u0027NUMA_THREAD\u0027),"},{"line_number":348,"context_line":"            (\u0027NUMA_MEMORY_MB\u0027, \u0027NUMA_MEMORY_MB\u0027),"},{"line_number":349,"context_line":"            (\u0027IPV4_ADDRESS\u0027, \u0027IPV4_ADDRESS\u0027),"},{"line_number":350,"context_line":"            (\u0027VGPU\u0027, \u0027VGPU\u0027),"},{"line_number":351,"context_line":"            (\u0027VGPU_DISPLAY_HEAD\u0027, \u0027VGPU_DISPLAY_HEAD\u0027),"},{"line_number":352,"context_line":"        ]"},{"line_number":353,"context_line":"        self.coerce_bad_values \u003d [object(), dict()]"},{"line_number":354,"context_line":"        self.to_primitive_values \u003d self.coerce_good_values[0:1]"},{"line_number":355,"context_line":"        self.from_primitive_values \u003d self.coerce_good_values[0:1]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_ba43d26b","line":352,"range":{"start_line":339,"start_character":0,"end_line":352,"end_character":9},"updated":"2018-05-31 16:15:27.000000000","message":"The new fields should be added here too.\n\nAnd/or perhaps we ought to tweak this in such a way that this is caught automatically in the future.  Assuming there\u0027s never a case where the coerced value differs from the input value for standard RCs, we could change this to:\n\n self.coerce_good_values \u003d [(v, v) for v in rc_fields.ResourceClass.STANDARD]","commit_id":"ee40726ae9f140d3946711d3a6d93620391bedbe"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc155a41437833c45c41e1ab19d619b04d12501a","unresolved":false,"context_lines":[{"line_number":336,"context_line":"    def setUp(self):"},{"line_number":337,"context_line":"        super(TestResourceClass, self).setUp()"},{"line_number":338,"context_line":"        self.field \u003d rc_fields.ResourceClassField()"},{"line_number":339,"context_line":"        self.coerce_good_values \u003d ["},{"line_number":340,"context_line":"            (\u0027VCPU\u0027, \u0027VCPU\u0027),"},{"line_number":341,"context_line":"            (\u0027MEMORY_MB\u0027, \u0027MEMORY_MB\u0027),"},{"line_number":342,"context_line":"            (\u0027DISK_GB\u0027, \u0027DISK_GB\u0027),"},{"line_number":343,"context_line":"            (\u0027PCI_DEVICE\u0027, \u0027PCI_DEVICE\u0027),"},{"line_number":344,"context_line":"            (\u0027SRIOV_NET_VF\u0027, \u0027SRIOV_NET_VF\u0027),"},{"line_number":345,"context_line":"            (\u0027NUMA_SOCKET\u0027, \u0027NUMA_SOCKET\u0027),"},{"line_number":346,"context_line":"            (\u0027NUMA_CORE\u0027, \u0027NUMA_CORE\u0027),"},{"line_number":347,"context_line":"            (\u0027NUMA_THREAD\u0027, \u0027NUMA_THREAD\u0027),"},{"line_number":348,"context_line":"            (\u0027NUMA_MEMORY_MB\u0027, \u0027NUMA_MEMORY_MB\u0027),"},{"line_number":349,"context_line":"            (\u0027IPV4_ADDRESS\u0027, \u0027IPV4_ADDRESS\u0027),"},{"line_number":350,"context_line":"            (\u0027VGPU\u0027, \u0027VGPU\u0027),"},{"line_number":351,"context_line":"            (\u0027VGPU_DISPLAY_HEAD\u0027, \u0027VGPU_DISPLAY_HEAD\u0027),"},{"line_number":352,"context_line":"        ]"},{"line_number":353,"context_line":"        self.coerce_bad_values \u003d [object(), dict()]"},{"line_number":354,"context_line":"        self.to_primitive_values \u003d self.coerce_good_values[0:1]"},{"line_number":355,"context_line":"        self.from_primitive_values \u003d self.coerce_good_values[0:1]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_44f64f91","line":352,"range":{"start_line":339,"start_character":0,"end_line":352,"end_character":9},"in_reply_to":"5f7c97a3_ba43d26b","updated":"2018-06-01 15:22:34.000000000","message":"Good point. Let\u0027s make that assumption for now. Done.","commit_id":"ee40726ae9f140d3946711d3a6d93620391bedbe"}]}
