)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"81e40a24ca9b00cee6210eede9f28944ad118ba7","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u0027keyboard.typematicMinDelay\u0027 with value 2000000."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"DocImpact:"},{"line_number":19,"context_line":"The extra configuration values will be passed as part of the flavor"},{"line_number":20,"context_line":"extra_specs. This will be with a key \u0027vmware:extra_config\u0027."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"An example of this will be:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a961159_d421304e","line":19,"updated":"2014-12-11 17:47:10.000000000","message":"you need to say that extra config is json encoded","commit_id":"db19e81e2aedcde51974d9c62ade80a811f4676b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a25cd301d7faa3b95d6e6e275d52f1c31a5d0a09","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Gary Kotton \u003cgkotton@vmware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-03-16 02:49:52 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VMware: enable configuring of addition information for virtual machine"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This describes a set of modifications to the additional options. If the key"},{"line_number":10,"context_line":"is already present, it will be reset with the new value provided. Otherwise,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"baa041b7_b8657fe2","line":7,"updated":"2015-04-01 20:57:21.000000000","message":"s/addition/additional/","commit_id":"4a58b461e4d6810914b3759451b585ff6941b367"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a25cd301d7faa3b95d6e6e275d52f1c31a5d0a09","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"An example of this will be:"},{"line_number":24,"context_line":"nova flavor-key eli set \\"},{"line_number":25,"context_line":"  vmware:extra_config\u003d\u0027{\"keyboard.typematicMinDelay\":2000000}\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I1b4e89d8b4a236e5f1e328be3d8ee54eceb37e2a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"baa041b7_d8ce0383","line":25,"updated":"2015-04-01 20:57:21.000000000","message":"Eww. :( Honestly, this is just leaking way too much of the ugly VMWare internals into the public API (yes, the public API here is the key/values that must be set by an administrator.\n\nHow about something like this instead?\n\n nova flavor-key myflavor set vmware:console_delay_seconds\u003d2\n\nAlso, I might add that network latency is dependent on the underlying compute nodes and network connectivity. It seems very awkward to create a flavor type that has extra_specs that are predicting the underlying compute node latency. Flavors are supposed to be an abstraction over the instance resources, not the compute node resources.\n\nPerhaps this is better left as an *aggregate extra spec*, not a flavor extra spec?","commit_id":"4a58b461e4d6810914b3759451b585ff6941b367"}],"nova/tests/unit/virt/vmwareapi/test_vm_util.py":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"d2b65ff0d7f56fea1fd77bf0dde5df714db5f1f5","unresolved":false,"context_lines":[{"line_number":1220,"context_line":""},{"line_number":1221,"context_line":"        expected.version \u003d None"},{"line_number":1222,"context_line":"        expected.memoryMB \u003d 2048"},{"line_number":1223,"context_line":"        expected.guestId \u003d \u0027otherGuest\u0027"},{"line_number":1224,"context_line":"        expected.extraConfig \u003d []"},{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"        extra_config \u003d fake_factory.create(\"ns0:OptionValue\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_13c7e265","line":1223,"updated":"2015-03-10 21:22:58.000000000","message":"Where is the \u0027guestId\u0027 set?","commit_id":"b7c9a9c28c23ca02370bd54564951fff72f97173"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"7c04715d63f897b5c716e4f44ddca6e537d74058","unresolved":false,"context_lines":[{"line_number":1220,"context_line":""},{"line_number":1221,"context_line":"        expected.version \u003d None"},{"line_number":1222,"context_line":"        expected.memoryMB \u003d 2048"},{"line_number":1223,"context_line":"        expected.guestId \u003d \u0027otherGuest\u0027"},{"line_number":1224,"context_line":"        expected.extraConfig \u003d []"},{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"        extra_config \u003d fake_factory.create(\"ns0:OptionValue\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_47b2a549","line":1223,"in_reply_to":"9a80dd14_13c7e265","updated":"2015-03-16 09:41:34.000000000","message":"please see - https://github.com/openstack/nova/blob/master/nova/virt/vmwareapi/vm_util.py#L171","commit_id":"b7c9a9c28c23ca02370bd54564951fff72f97173"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"2a6712280de6918d2f4e698dc2babde8dd1efa69","unresolved":false,"context_lines":[{"line_number":1263,"context_line":""},{"line_number":1264,"context_line":"        expected.version \u003d None"},{"line_number":1265,"context_line":"        expected.memoryMB \u003d 2048"},{"line_number":1266,"context_line":"        expected.guestId \u003d \u0027otherGuest\u0027"},{"line_number":1267,"context_line":"        expected.extraConfig \u003d []"},{"line_number":1268,"context_line":""},{"line_number":1269,"context_line":"        extra_config \u003d fake_factory.create(\"ns0:OptionValue\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_16428faa","line":1266,"updated":"2015-03-16 15:12:14.000000000","message":"Would be nice to use the existing constant rather than its current value. (Unless there\u0027s a good reason not to use the constant.)","commit_id":"4a58b461e4d6810914b3759451b585ff6941b367"}],"nova/tests/unit/virt/vmwareapi/test_vmops.py":[{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"f87ca14e7885cbeb0e77d3f582f322cc7b5899fc","unresolved":false,"context_lines":[{"line_number":1470,"context_line":"        extra_specs \u003d self._vmops._get_extra_specs(flavor)"},{"line_number":1471,"context_line":"        self.assertEqual(\u0027flavor-policy\u0027, extra_specs.storage_policy)"},{"line_number":1472,"context_line":""},{"line_number":1473,"context_line":"    def test_get_iextra_config_from_flavor(self):"},{"line_number":1474,"context_line":"        extra_specs \u003d {\u0027vmware:extra_config\u0027:"},{"line_number":1475,"context_line":"                       \u0027{\"keyboard.typematicMinDelay\":2000000}\u0027}"},{"line_number":1476,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_41212fb3","line":1473,"updated":"2014-12-10 17:18:44.000000000","message":"Nit: name of the test. test_get_extra_config_from_flavor","commit_id":"a506b1b0f91ab1bea745d60ac5ed1fb36a2a476c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"61bc1ccb2b2b5a7d6556ff3659658025d3c05909","unresolved":false,"context_lines":[{"line_number":1470,"context_line":"        extra_specs \u003d self._vmops._get_extra_specs(flavor)"},{"line_number":1471,"context_line":"        self.assertEqual(\u0027flavor-policy\u0027, extra_specs.storage_policy)"},{"line_number":1472,"context_line":""},{"line_number":1473,"context_line":"    def test_get_iextra_config_from_flavor(self):"},{"line_number":1474,"context_line":"        extra_specs \u003d {\u0027vmware:extra_config\u0027:"},{"line_number":1475,"context_line":"                       \u0027{\"keyboard.typematicMinDelay\":2000000}\u0027}"},{"line_number":1476,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_119d9c0b","line":1473,"in_reply_to":"3a961159_41212fb3","updated":"2014-12-11 09:49:55.000000000","message":"Done","commit_id":"a506b1b0f91ab1bea745d60ac5ed1fb36a2a476c"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"58118987ccd4a5e54473bdc78b16e76996e6ea23","unresolved":false,"context_lines":[{"line_number":1684,"context_line":""},{"line_number":1685,"context_line":"    def test_get_invalid_extra_config_from_flavor(self):"},{"line_number":1686,"context_line":"        extra_specs \u003d {\u0027vmware:extra_config\u0027:"},{"line_number":1687,"context_line":"                       \"{\u0027keyboard.typematicMinDelay\u0027:2000000}\"}"},{"line_number":1688,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027,"},{"line_number":1689,"context_line":"                                memory_mb\u003d6,"},{"line_number":1690,"context_line":"                                vcpus\u003d28,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_3dbd0769","line":1687,"updated":"2015-03-03 12:53:15.000000000","message":"Sorry to be obtuse, but the only difference I see between this extra_specs dictionary and the valid one above is swapping the double quotes for single quotes. Is that the expected difference to make it invalid JSON? If so, an inline comment might be helpful because otherwise they\u0027re so similar.","commit_id":"0669d9b29e566f828db4d58ca3a3ee82c5e0b277"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"9aaf96e24cc26aadc2418c2dd0544d313bed802d","unresolved":false,"context_lines":[{"line_number":1684,"context_line":""},{"line_number":1685,"context_line":"    def test_get_invalid_extra_config_from_flavor(self):"},{"line_number":1686,"context_line":"        extra_specs \u003d {\u0027vmware:extra_config\u0027:"},{"line_number":1687,"context_line":"                       \"{\u0027keyboard.typematicMinDelay\u0027:2000000}\"}"},{"line_number":1688,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027,"},{"line_number":1689,"context_line":"                                memory_mb\u003d6,"},{"line_number":1690,"context_line":"                                vcpus\u003d28,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_cb9df70b","line":1687,"in_reply_to":"ba7be1f8_3dbd0769","updated":"2015-03-08 08:33:31.000000000","message":"Done","commit_id":"0669d9b29e566f828db4d58ca3a3ee82c5e0b277"}],"nova/virt/vmwareapi/vm_util.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a25cd301d7faa3b95d6e6e275d52f1c31a5d0a09","unresolved":false,"context_lines":[{"line_number":66,"context_line":"class ExtraSpecs(object):"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def __init__(self, cpu_limits\u003dNone, hw_version\u003dNone,"},{"line_number":69,"context_line":"                 storage_policy\u003dNone, extra_config\u003dNone):"},{"line_number":70,"context_line":"        \"\"\"ExtraSpecs object holds extra_specs for the instance.\"\"\""},{"line_number":71,"context_line":"        if cpu_limits is None:"},{"line_number":72,"context_line":"            cpu_limits \u003d CpuLimits()"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_585e73ea","line":69,"updated":"2015-04-01 20:57:21.000000000","message":"This is so open ended :( How about adding a keyboard_delay keyword argument (or console_delay_seconds argument) instead of just a random dictionary of undocumented key/value pairs?","commit_id":"4a58b461e4d6810914b3759451b585ff6941b367"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"38bdcb41b7d2e6369f423048e1b6d525824a9b30","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"vmware_utils_opts \u003d ["},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027console_delay_seconds\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027In order to prevent repeated characters when typing in \u0027"},{"line_number":45,"context_line":"                    \u0027remote console this value needs to be set\u0027)"},{"line_number":46,"context_line":"    ]"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7aaa499b_c62504c3","line":44,"updated":"2015-04-12 13:47:01.000000000","message":"The help implies this value should always be set to avoid repeated characters.  So why not apply a default?  Or maybe the help needs to be clearer when to use it.","commit_id":"9df9f155113a185b84697d5c9c5674587919cea4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"38bdcb41b7d2e6369f423048e1b6d525824a9b30","unresolved":false,"context_lines":[{"line_number":238,"context_line":"    if CONF.vmware.console_delay_seconds:"},{"line_number":239,"context_line":"        opt \u003d client_factory.create(\u0027ns0:OptionValue\u0027)"},{"line_number":240,"context_line":"        opt.key \u003d \u0027keyboard.typematicMinDelay\u0027"},{"line_number":241,"context_line":"        opt.value \u003d CONF.vmware.console_delay_seconds * 1000000"},{"line_number":242,"context_line":"        extra_config.append(opt)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    config_spec.extraConfig \u003d extra_config"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aaa499b_862ffca0","line":241,"updated":"2015-04-12 13:47:01.000000000","message":"Do things break if a negative number is passed?","commit_id":"9df9f155113a185b84697d5c9c5674587919cea4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"44eba712c48a50f9557e916925a387274a0b421a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"vmware_utils_opts \u003d ["},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027console_delay_seconds\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027In order to prevent repeated characters when typing in \u0027"},{"line_number":45,"context_line":"                    \u0027remote console this value needs to be set. This may be \u0027"},{"line_number":46,"context_line":"                    \u0027a result of network latency.\u0027)"},{"line_number":47,"context_line":"    ]"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7aaa499b_5fa0569f","line":45,"updated":"2015-04-14 14:57:37.000000000","message":"...in the remote console...","commit_id":"1e2b49d61aec0507b43ddd7aefd04e2f51521ba8"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"44eba712c48a50f9557e916925a387274a0b421a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    cfg.IntOpt(\u0027console_delay_seconds\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027In order to prevent repeated characters when typing in \u0027"},{"line_number":45,"context_line":"                    \u0027remote console this value needs to be set. This may be \u0027"},{"line_number":46,"context_line":"                    \u0027a result of network latency.\u0027)"},{"line_number":47,"context_line":"    ]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aaa499b_1fbbeee6","line":46,"updated":"2015-04-14 14:57:37.000000000","message":"Maybe better as:\n\nSet this value if affected by an increased network latency causing repeated characters when typing in a remote console.","commit_id":"1e2b49d61aec0507b43ddd7aefd04e2f51521ba8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"db0a6acf3a832f7fc706647fb27f93e98594d339","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    cfg.IntOpt(\u0027console_delay_seconds\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027In order to prevent repeated characters when typing in \u0027"},{"line_number":45,"context_line":"                    \u0027remote console this value needs to be set. This may be \u0027"},{"line_number":46,"context_line":"                    \u0027a result of network latency.\u0027)"},{"line_number":47,"context_line":"    ]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":13,"id":"dac4157f_87a0f2a0","line":46,"in_reply_to":"7aaa499b_1fbbeee6","updated":"2015-04-21 08:27:30.000000000","message":"Done","commit_id":"1e2b49d61aec0507b43ddd7aefd04e2f51521ba8"}],"nova/virt/vmwareapi/vmops.py":[{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"f87ca14e7885cbeb0e77d3f582f322cc7b5899fc","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            storage_policy \u003d flavor.extra_specs.get(\u0027vmware:storage_policy\u0027,"},{"line_number":274,"context_line":"                    CONF.vmware.pbm_default_policy)"},{"line_number":275,"context_line":"            extra_specs.storage_policy \u003d storage_policy"},{"line_number":276,"context_line":"        hw_version \u003d flavor.extra_specs.get(\u0027vmware:hw_version\u0027)"},{"line_number":277,"context_line":"        extra_config \u003d flavor.extra_specs.get(\u0027vmware:extra_config\u0027)"},{"line_number":278,"context_line":"        if extra_config:"},{"line_number":279,"context_line":"            extra_specs.extra_config \u003d jsonutils.loads(extra_config)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_c12fdff4","line":276,"updated":"2014-12-10 17:18:44.000000000","message":"Nit: hw_version is already retrieved. Probably bad rebase :)","commit_id":"a506b1b0f91ab1bea745d60ac5ed1fb36a2a476c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"61bc1ccb2b2b5a7d6556ff3659658025d3c05909","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            storage_policy \u003d flavor.extra_specs.get(\u0027vmware:storage_policy\u0027,"},{"line_number":274,"context_line":"                    CONF.vmware.pbm_default_policy)"},{"line_number":275,"context_line":"            extra_specs.storage_policy \u003d storage_policy"},{"line_number":276,"context_line":"        hw_version \u003d flavor.extra_specs.get(\u0027vmware:hw_version\u0027)"},{"line_number":277,"context_line":"        extra_config \u003d flavor.extra_specs.get(\u0027vmware:extra_config\u0027)"},{"line_number":278,"context_line":"        if extra_config:"},{"line_number":279,"context_line":"            extra_specs.extra_config \u003d jsonutils.loads(extra_config)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_31b5387e","line":276,"in_reply_to":"3a961159_c12fdff4","updated":"2014-12-11 09:49:55.000000000","message":"Done","commit_id":"a506b1b0f91ab1bea745d60ac5ed1fb36a2a476c"},{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"f87ca14e7885cbeb0e77d3f582f322cc7b5899fc","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        hw_version \u003d flavor.extra_specs.get(\u0027vmware:hw_version\u0027)"},{"line_number":277,"context_line":"        extra_config \u003d flavor.extra_specs.get(\u0027vmware:extra_config\u0027)"},{"line_number":278,"context_line":"        if extra_config:"},{"line_number":279,"context_line":"            extra_specs.extra_config \u003d jsonutils.loads(extra_config)"},{"line_number":280,"context_line":"        return extra_specs"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def _fetch_image_as_file(self, context, vi, image_ds_loc):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_e4278962","line":279,"updated":"2014-12-10 17:18:44.000000000","message":"Should we catch ValueError and throw an appropriate nova exception ?","commit_id":"a506b1b0f91ab1bea745d60ac5ed1fb36a2a476c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"61bc1ccb2b2b5a7d6556ff3659658025d3c05909","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        hw_version \u003d flavor.extra_specs.get(\u0027vmware:hw_version\u0027)"},{"line_number":277,"context_line":"        extra_config \u003d flavor.extra_specs.get(\u0027vmware:extra_config\u0027)"},{"line_number":278,"context_line":"        if extra_config:"},{"line_number":279,"context_line":"            extra_specs.extra_config \u003d jsonutils.loads(extra_config)"},{"line_number":280,"context_line":"        return extra_specs"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def _fetch_image_as_file(self, context, vi, image_ds_loc):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_51bac46e","line":279,"in_reply_to":"3a961159_e4278962","updated":"2014-12-11 09:49:55.000000000","message":"Done","commit_id":"a506b1b0f91ab1bea745d60ac5ed1fb36a2a476c"}]}
