)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"15929d0be8050311535799d8252991a21868edb8","unresolved":false,"context_lines":[{"line_number":22,"context_line":" - register_extension - registers a new extension"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Note that the onus is on the caller to validate that the extension exists."},{"line_number":25,"context_line":"If not they should handle the exception returned ffrom the backend."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The pseudo code should be as follows:"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"baada198_42368a53","line":25,"updated":"2014-07-10 15:34:23.000000000","message":"typo: from","commit_id":"1bb7622a33dce7a896cb8318d6c441229c7cf7b2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1725b91b70df4df383f2dbee0749932a3deb1f5d","unresolved":false,"context_lines":[{"line_number":22,"context_line":" - register_extension - registers a new extension"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Note that the onus is on the caller to validate that the extension exists."},{"line_number":25,"context_line":"If not they should handle the exception returned ffrom the backend."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The pseudo code should be as follows:"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"baada198_d16c229f","line":25,"in_reply_to":"baada198_42368a53","updated":"2014-07-10 17:01:02.000000000","message":"Done","commit_id":"1bb7622a33dce7a896cb8318d6c441229c7cf7b2"}],"oslo/vmware/vim_util.py":[{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"996a672428aed0b04dcb2c31b890ca68f536a159","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"def create_extension(vim, key, type):"},{"line_number":419,"context_line":"    \"\"\"Create a new key and type.\"\"\""},{"line_number":420,"context_line":"    service_content \u003d vim.get_service_content()"},{"line_number":421,"context_line":"    extension_manager \u003d service_content.extensionManager"},{"line_number":422,"context_line":"    client_factory \u003d vim.client.factory"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_49693824","line":419,"updated":"2014-07-03 08:54:58.000000000","message":"this docstring looks wrong","commit_id":"767efe6943d2126f085ed4b908f02e3b69d40d60"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ee7592bab94f0450fad947b8705b62c8cde66750","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"def create_extension(vim, key, type):"},{"line_number":419,"context_line":"    \"\"\"Create a new key and type.\"\"\""},{"line_number":420,"context_line":"    service_content \u003d vim.get_service_content()"},{"line_number":421,"context_line":"    extension_manager \u003d service_content.extensionManager"},{"line_number":422,"context_line":"    client_factory \u003d vim.client.factory"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_faa9e8df","line":419,"in_reply_to":"baada198_49693824","updated":"2014-07-03 10:03:34.000000000","message":"Done","commit_id":"767efe6943d2126f085ed4b908f02e3b69d40d60"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"1dbbd5c7977ccc03fb22ae0e2857d2b9aec18abb","unresolved":false,"context_lines":[{"line_number":425,"context_line":"    entity_info \u003d client_factory.create(\u0027ns0:ExtManagedEntityInfo\u0027)"},{"line_number":426,"context_line":"    entity_info.type \u003d type"},{"line_number":427,"context_line":"    os_ext.managedEntityInfo \u003d [entity_info]"},{"line_number":428,"context_line":"    os_ext.version \u003d \u00271\u0027"},{"line_number":429,"context_line":"    desc \u003d client_factory.create(\u0027ns0:Description\u0027)"},{"line_number":430,"context_line":"    desc.label \u003d \u0027OpenStack\u0027"},{"line_number":431,"context_line":"    desc.summary \u003d \u0027OpenStack services\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_e9de8c3e","line":428,"updated":"2014-07-03 08:53:50.000000000","message":"this must be passed as an argument; we don\u0027t know if our clients will want to register multiple versions of an extension (it can have default value \u00271.0\u0027)","commit_id":"767efe6943d2126f085ed4b908f02e3b69d40d60"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ee7592bab94f0450fad947b8705b62c8cde66750","unresolved":false,"context_lines":[{"line_number":425,"context_line":"    entity_info \u003d client_factory.create(\u0027ns0:ExtManagedEntityInfo\u0027)"},{"line_number":426,"context_line":"    entity_info.type \u003d type"},{"line_number":427,"context_line":"    os_ext.managedEntityInfo \u003d [entity_info]"},{"line_number":428,"context_line":"    os_ext.version \u003d \u00271\u0027"},{"line_number":429,"context_line":"    desc \u003d client_factory.create(\u0027ns0:Description\u0027)"},{"line_number":430,"context_line":"    desc.label \u003d \u0027OpenStack\u0027"},{"line_number":431,"context_line":"    desc.summary \u003d \u0027OpenStack services\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_9fbd3e6b","line":428,"in_reply_to":"baada198_e9de8c3e","updated":"2014-07-03 10:03:34.000000000","message":"Done","commit_id":"767efe6943d2126f085ed4b908f02e3b69d40d60"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"1dbbd5c7977ccc03fb22ae0e2857d2b9aec18abb","unresolved":false,"context_lines":[{"line_number":427,"context_line":"    os_ext.managedEntityInfo \u003d [entity_info]"},{"line_number":428,"context_line":"    os_ext.version \u003d \u00271\u0027"},{"line_number":429,"context_line":"    desc \u003d client_factory.create(\u0027ns0:Description\u0027)"},{"line_number":430,"context_line":"    desc.label \u003d \u0027OpenStack\u0027"},{"line_number":431,"context_line":"    desc.summary \u003d \u0027OpenStack services\u0027"},{"line_number":432,"context_line":"    os_ext.description \u003d desc"},{"line_number":433,"context_line":"    os_ext.lastHeartbeatTime \u003d timeutils.strtime()"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_a93814a1","line":430,"updated":"2014-07-03 08:53:50.000000000","message":"consider making \u0027label\u0027 and \u0027summary\u0027 optional arguments with default values","commit_id":"767efe6943d2126f085ed4b908f02e3b69d40d60"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ee7592bab94f0450fad947b8705b62c8cde66750","unresolved":false,"context_lines":[{"line_number":427,"context_line":"    os_ext.managedEntityInfo \u003d [entity_info]"},{"line_number":428,"context_line":"    os_ext.version \u003d \u00271\u0027"},{"line_number":429,"context_line":"    desc \u003d client_factory.create(\u0027ns0:Description\u0027)"},{"line_number":430,"context_line":"    desc.label \u003d \u0027OpenStack\u0027"},{"line_number":431,"context_line":"    desc.summary \u003d \u0027OpenStack services\u0027"},{"line_number":432,"context_line":"    os_ext.description \u003d desc"},{"line_number":433,"context_line":"    os_ext.lastHeartbeatTime \u003d timeutils.strtime()"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_3aab60d7","line":430,"in_reply_to":"baada198_a93814a1","updated":"2014-07-03 10:03:34.000000000","message":"Done","commit_id":"767efe6943d2126f085ed4b908f02e3b69d40d60"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"34d4c02c512c6618808ca521b654d6c3f2a7913c","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        return \u0027%s://%s:%d/%s\u0027 % (protocol, host, port, path)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"def find_extension(vim, key):"},{"line_number":412,"context_line":"    \"\"\"Looks for an existing extension.\"\"\""},{"line_number":413,"context_line":"    service_content \u003d vim.get_service_content()"},{"line_number":414,"context_line":"    extension_manager \u003d service_content.extensionManager"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_950bfad4","line":411,"updated":"2014-07-07 16:32:16.000000000","message":"What if this extension doesn\u0027t exist? What exception will it throw? May be we should define a new exception for this.","commit_id":"0f7394178534192e9c923323e8134628b734a4ee"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6ada12bfd1e83e3f1ff24a785d3a7de1744a057a","unresolved":false,"context_lines":[{"line_number":408,"context_line":"        return \u0027%s://%s:%d/%s\u0027 % (protocol, host, port, path)"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"def find_extension(vim, key):"},{"line_number":412,"context_line":"    \"\"\"Looks for an existing extension.\"\"\""},{"line_number":413,"context_line":"    service_content \u003d vim.get_service_content()"},{"line_number":414,"context_line":"    extension_manager \u003d service_content.extensionManager"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_38eda926","line":411,"in_reply_to":"baada198_950bfad4","updated":"2014-07-08 11:05:25.000000000","message":"If the extension does not exist then the method returns None. I will update docstring to reflect that.","commit_id":"0f7394178534192e9c923323e8134628b734a4ee"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"34d4c02c512c6618808ca521b654d6c3f2a7913c","unresolved":false,"context_lines":[{"line_number":415,"context_line":"    return vim.client.service.FindExtension(extension_manager, key)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"def create_extension(vim, key, type, label\u003d\u0027OpenStack\u0027,"},{"line_number":419,"context_line":"                     summary\u003d\u0027OpenStack services\u0027, version\u003d\u00271.0\u0027):"},{"line_number":420,"context_line":"    \"\"\"Create a new extention.\"\"\""},{"line_number":421,"context_line":"    service_content \u003d vim.get_service_content()"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_f5e996e6","line":418,"updated":"2014-07-07 16:32:16.000000000","message":"What about register_extension?\n\nWhat is type here?","commit_id":"0f7394178534192e9c923323e8134628b734a4ee"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6ada12bfd1e83e3f1ff24a785d3a7de1744a057a","unresolved":false,"context_lines":[{"line_number":415,"context_line":"    return vim.client.service.FindExtension(extension_manager, key)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"def create_extension(vim, key, type, label\u003d\u0027OpenStack\u0027,"},{"line_number":419,"context_line":"                     summary\u003d\u0027OpenStack services\u0027, version\u003d\u00271.0\u0027):"},{"line_number":420,"context_line":"    \"\"\"Create a new extention.\"\"\""},{"line_number":421,"context_line":"    service_content \u003d vim.get_service_content()"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_f8e2512e","line":418,"in_reply_to":"baada198_f5e996e6","updated":"2014-07-08 11:05:25.000000000","message":"Done","commit_id":"0f7394178534192e9c923323e8134628b734a4ee"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"34d4c02c512c6618808ca521b654d6c3f2a7913c","unresolved":false,"context_lines":[{"line_number":432,"context_line":"    desc.summary \u003d summary"},{"line_number":433,"context_line":"    os_ext.description \u003d desc"},{"line_number":434,"context_line":"    os_ext.lastHeartbeatTime \u003d timeutils.strtime()"},{"line_number":435,"context_line":"    vim.client.service.RegisterExtension(extension_manager, os_ext)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_f5d0b620","line":435,"updated":"2014-07-07 16:32:16.000000000","message":"Same question related to exception. What if the extension already exists?","commit_id":"0f7394178534192e9c923323e8134628b734a4ee"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6ada12bfd1e83e3f1ff24a785d3a7de1744a057a","unresolved":false,"context_lines":[{"line_number":432,"context_line":"    desc.summary \u003d summary"},{"line_number":433,"context_line":"    os_ext.description \u003d desc"},{"line_number":434,"context_line":"    os_ext.lastHeartbeatTime \u003d timeutils.strtime()"},{"line_number":435,"context_line":"    vim.client.service.RegisterExtension(extension_manager, os_ext)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_183625b5","line":435,"in_reply_to":"baada198_f5d0b620","updated":"2014-07-08 11:05:25.000000000","message":"i think that there are two options:\n1. check if the extension exists - if so then just return and log a warning\n2. throw an exception if it already exists.\nI prefer #1","commit_id":"0f7394178534192e9c923323e8134628b734a4ee"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"0d38f7291da241c13a486e75c5716878ed4a66b7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"The VMware API utility module."},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import logging"},{"line_number":21,"context_line":"import netaddr"},{"line_number":22,"context_line":"import suds"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_26047c14","line":20,"updated":"2014-07-09 13:36:26.000000000","message":"logging is not a 3rd party lib, should be in a separate section","commit_id":"1932e9b6150fb86447ead1f77cd83a9813ede72f"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"0d38f7291da241c13a486e75c5716878ed4a66b7","unresolved":false,"context_lines":[{"line_number":419,"context_line":"    :param key: the key to search for"},{"line_number":420,"context_line":"    :returns: the data object Extension or None"},{"line_number":421,"context_line":"    \"\"\""},{"line_number":422,"context_line":"    service_content \u003d vim.get_service_content()"},{"line_number":423,"context_line":"    extension_manager \u003d service_content.extensionManager"},{"line_number":424,"context_line":"    return vim.client.service.FindExtension(extension_manager, key)"},{"line_number":425,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e651a4d9","line":422,"updated":"2014-07-09 13:36:26.000000000","message":"you should use vim.service_content","commit_id":"1932e9b6150fb86447ead1f77cd83a9813ede72f"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"0d38f7291da241c13a486e75c5716878ed4a66b7","unresolved":false,"context_lines":[{"line_number":432,"context_line":"    :param key: the key for the extension"},{"line_number":433,"context_line":"    :param type: Managed entity type, as defined by the extension. This"},{"line_number":434,"context_line":"                 matches the type field in the configuration about a"},{"line_number":435,"context_line":"                 virtual machine or vAppi"},{"line_number":436,"context_line":"    :param label: Display label"},{"line_number":437,"context_line":"    :param summary: Summary description"},{"line_number":438,"context_line":"    :param version: Extension version number as a dot-separated string"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_866708ea","line":435,"updated":"2014-07-09 13:36:26.000000000","message":"typo: vApp","commit_id":"1932e9b6150fb86447ead1f77cd83a9813ede72f"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"0d38f7291da241c13a486e75c5716878ed4a66b7","unresolved":false,"context_lines":[{"line_number":440,"context_line":"    if find_extension(vim, key):"},{"line_number":441,"context_line":"        LOG.warning(_LW(\u0027Extension already exists for key %s\u0027), key)"},{"line_number":442,"context_line":"        return"},{"line_number":443,"context_line":"    service_content \u003d vim.get_service_content()"},{"line_number":444,"context_line":"    extension_manager \u003d service_content.extensionManager"},{"line_number":445,"context_line":"    client_factory \u003d vim.client.factory"},{"line_number":446,"context_line":"    os_ext \u003d client_factory.create(\u0027ns0:Extension\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_465890fa","line":443,"updated":"2014-07-09 13:36:26.000000000","message":"you should use vim.service_content","commit_id":"1932e9b6150fb86447ead1f77cd83a9813ede72f"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"2b048f448f4dd8d46cd19d82b72a5d5a15acf3fa","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    :param summary: Summary description"},{"line_number":438,"context_line":"    :param version: Extension version number as a dot-separated string"},{"line_number":439,"context_line":"    \"\"\""},{"line_number":440,"context_line":"    if find_extension(vim, key):"},{"line_number":441,"context_line":"        LOG.warning(_LW(\u0027Extension already exists for key %s\u0027), key)"},{"line_number":442,"context_line":"        return"},{"line_number":443,"context_line":"    extension_manager \u003d vim.service_content.extensionManager"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_63cab71b","line":440,"updated":"2014-07-10 14:24:10.000000000","message":"There are 2 problems with this check:\n1. it creates a race condition\n2. it makes a remote call which the client may not want\n\nI prefer to give the clients choice to either call find and then register with a lock held or handle the exception thrown when there is already an existing extesion","commit_id":"ac05b2a58df5434e06e9fc235a6150e385aa7c1a"}],"tests/test_vim_util.py":[{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"1dbbd5c7977ccc03fb22ae0e2857d2b9aec18abb","unresolved":false,"context_lines":[{"line_number":311,"context_line":"    def test_find_extension(self):"},{"line_number":312,"context_line":"        vim \u003d mock.Mock()"},{"line_number":313,"context_line":"        ret \u003d vim_util.find_extension(vim, \u0027fake-key\u0027)"},{"line_number":314,"context_line":"        self.assertIsNotNone(ret)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    def test_create_extension(self):"},{"line_number":317,"context_line":"        vim \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_a9de540f","line":314,"updated":"2014-07-03 08:53:50.000000000","message":"maybe you can add assert that vim.client.service.FindExtension was called (no need to check each and every argument)","commit_id":"767efe6943d2126f085ed4b908f02e3b69d40d60"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ee7592bab94f0450fad947b8705b62c8cde66750","unresolved":false,"context_lines":[{"line_number":311,"context_line":"    def test_find_extension(self):"},{"line_number":312,"context_line":"        vim \u003d mock.Mock()"},{"line_number":313,"context_line":"        ret \u003d vim_util.find_extension(vim, \u0027fake-key\u0027)"},{"line_number":314,"context_line":"        self.assertIsNotNone(ret)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    def test_create_extension(self):"},{"line_number":317,"context_line":"        vim \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_3a91a052","line":314,"in_reply_to":"baada198_a9de540f","updated":"2014-07-03 10:03:34.000000000","message":"Done","commit_id":"767efe6943d2126f085ed4b908f02e3b69d40d60"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"1dbbd5c7977ccc03fb22ae0e2857d2b9aec18abb","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    def test_create_extension(self):"},{"line_number":317,"context_line":"        vim \u003d mock.Mock()"},{"line_number":318,"context_line":"        ret \u003d vim_util.create_extension(vim, \u0027fake-key\u0027, \u0027fake-type\u0027)"},{"line_number":319,"context_line":"        self.assertIsNone(ret)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_89d7d0ec","line":319,"updated":"2014-07-03 08:53:50.000000000","message":"same comment for vim.client.service.RegisterExtension","commit_id":"767efe6943d2126f085ed4b908f02e3b69d40d60"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ee7592bab94f0450fad947b8705b62c8cde66750","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    def test_create_extension(self):"},{"line_number":317,"context_line":"        vim \u003d mock.Mock()"},{"line_number":318,"context_line":"        ret \u003d vim_util.create_extension(vim, \u0027fake-key\u0027, \u0027fake-type\u0027)"},{"line_number":319,"context_line":"        self.assertIsNone(ret)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_7a9b1872","line":319,"in_reply_to":"baada198_89d7d0ec","updated":"2014-07-03 10:03:34.000000000","message":"Done","commit_id":"767efe6943d2126f085ed4b908f02e3b69d40d60"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"34d4c02c512c6618808ca521b654d6c3f2a7913c","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                         wsdl_url)"},{"line_number":309,"context_line":"        self.assertEqual(\"https://[::1]/sdk\", url)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def test_find_extension(self):"},{"line_number":312,"context_line":"        vim \u003d mock.Mock()"},{"line_number":313,"context_line":"        ret \u003d vim_util.find_extension(vim, \u0027fake-key\u0027)"},{"line_number":314,"context_line":"        self.assertIsNotNone(ret)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_b598fe6a","line":311,"updated":"2014-07-07 16:32:16.000000000","message":"You may need to add a test case for non-existing extension.","commit_id":"0f7394178534192e9c923323e8134628b734a4ee"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6ada12bfd1e83e3f1ff24a785d3a7de1744a057a","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                         wsdl_url)"},{"line_number":309,"context_line":"        self.assertEqual(\"https://[::1]/sdk\", url)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def test_find_extension(self):"},{"line_number":312,"context_line":"        vim \u003d mock.Mock()"},{"line_number":313,"context_line":"        ret \u003d vim_util.find_extension(vim, \u0027fake-key\u0027)"},{"line_number":314,"context_line":"        self.assertIsNotNone(ret)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_fb8b2b66","line":311,"in_reply_to":"baada198_b598fe6a","updated":"2014-07-08 11:05:25.000000000","message":"Done","commit_id":"0f7394178534192e9c923323e8134628b734a4ee"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"15929d0be8050311535799d8252991a21868edb8","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        vim.client.service.FindExtension.assert_called_once_with("},{"line_number":317,"context_line":"            service_content.extensionManager, \u0027fake-key\u0027)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    @mock.patch(\u0027oslo.vmware.vim_util.find_extension\u0027, return_value\u003dNone)"},{"line_number":320,"context_line":"    def test_register_extension(self, mock_find_extension):"},{"line_number":321,"context_line":"        vim \u003d mock.Mock()"},{"line_number":322,"context_line":"        ret \u003d vim_util.register_extension(vim, \u0027fake-key\u0027, \u0027fake-type\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_a24f66bd","line":319,"updated":"2014-07-10 15:34:23.000000000","message":"delete this line and the argument below","commit_id":"1bb7622a33dce7a896cb8318d6c441229c7cf7b2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1725b91b70df4df383f2dbee0749932a3deb1f5d","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        vim.client.service.FindExtension.assert_called_once_with("},{"line_number":317,"context_line":"            service_content.extensionManager, \u0027fake-key\u0027)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    @mock.patch(\u0027oslo.vmware.vim_util.find_extension\u0027, return_value\u003dNone)"},{"line_number":320,"context_line":"    def test_register_extension(self, mock_find_extension):"},{"line_number":321,"context_line":"        vim \u003d mock.Mock()"},{"line_number":322,"context_line":"        ret \u003d vim_util.register_extension(vim, \u0027fake-key\u0027, \u0027fake-type\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_b16dee9b","line":319,"in_reply_to":"baada198_a24f66bd","updated":"2014-07-10 17:01:02.000000000","message":"Done","commit_id":"1bb7622a33dce7a896cb8318d6c441229c7cf7b2"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"751e48e9e732029bb94462e250088e5de47b7578","unresolved":false,"context_lines":[{"line_number":319,"context_line":"    def test_register_extension(self):"},{"line_number":320,"context_line":"        vim \u003d mock.Mock()"},{"line_number":321,"context_line":"        ret \u003d vim_util.register_extension(vim, \u0027fake-key\u0027, \u0027fake-type\u0027)"},{"line_number":322,"context_line":"        self.assertIsNone(ret)"},{"line_number":323,"context_line":"        service_content \u003d vim.service_content"},{"line_number":324,"context_line":"        vim.client.service.RegisterExtension.assert_called_once_with("},{"line_number":325,"context_line":"            service_content.extensionManager, mock.ANY)"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_f9a8088e","line":322,"updated":"2014-07-11 14:02:10.000000000","message":"why do we need this check? register_extension doesn\u0027t have a return.","commit_id":"36bc4e142e7e6a6d0a087a94c63a8a80256b19fc"}]}
