)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"9e8664ccd22587a2f964826d25eba3bcb6ac1847","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"python-ironic-client doesn\u0027t recognize API micro-version parameter."},{"line_number":10,"context_line":"Reuse --ironic-api-version to recognize this."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-Bug: #1417430"},{"line_number":13,"context_line":"Change-Id: I1db6e2f4e57d6d47d86f068018f143d0044b7211"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba7be1f8_2e4e5397","line":11,"updated":"2015-02-26 20:21:01.000000000","message":"I would like it if this message had more details about what is done. In addition to sending the version header in the request, it looks like it is also setting the version to \u0027latest\u0027 if the user doesn\u0027t specify a version.","commit_id":"5f5f1dcbb2986b06299eb5017879e1222d23d7a1"}],"ironicclient/client.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"981c87de28740863af14826a3faf22ace6aa63d0","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        \u0027cert_file\u0027: kwargs.get(\u0027cert_file\u0027),"},{"line_number":112,"context_line":"        \u0027key_file\u0027: kwargs.get(\u0027key_file\u0027),"},{"line_number":113,"context_line":"        \u0027auth_ref\u0027: auth_ref,"},{"line_number":114,"context_line":"        \u0027api_verbose_version\u0027: kwargs.get(\u0027api_verbose_version\u0027),"},{"line_number":115,"context_line":"    }"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    return Client(api_version, endpoint, **cli_kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_80fcff40","line":114,"updated":"2015-02-17 11:49:59.000000000","message":"why is it called \u0027verbose_version\u0027? I haven\u0027t seen us using this term anywhere. I\u0027d prefer just \u0027api_version\u0027.","commit_id":"b27a19aa11bf0cbb77e326acd1f4f8fb0b0c42ec"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"28a603c98c573f5a954ffd3c3e6e9d72b09a716a","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        \u0027api_verbose_version\u0027: kwargs.get(\u0027api_verbose_version\u0027),"},{"line_number":115,"context_line":"    }"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    return Client(api_version, endpoint, **cli_kwargs)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def Client(version, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_7013385c","line":117,"updated":"2015-02-18 04:23:44.000000000","message":"We already have  \u0027api_version\u0027 here, which is \u00271\u0027 and is used to call v1 api. We definitely need a new name. What about \u0027api_micro_version\u0027?","commit_id":"b27a19aa11bf0cbb77e326acd1f4f8fb0b0c42ec"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ceb9defd7516a32df6e99e1385e6b3b4899e0557","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        \u0027api_verbose_version\u0027: kwargs.get(\u0027api_verbose_version\u0027),"},{"line_number":115,"context_line":"    }"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    return Client(api_version, endpoint, **cli_kwargs)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def Client(version, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_fb03440a","line":117,"in_reply_to":"da86d52c_7013385c","updated":"2015-02-19 15:04:18.000000000","message":"api_micro_version LGTM","commit_id":"b27a19aa11bf0cbb77e326acd1f4f8fb0b0c42ec"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"95b642f87fee88a58898c45f6e245542de9013c2","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        \u0027cert_file\u0027: kwargs.get(\u0027cert_file\u0027),"},{"line_number":112,"context_line":"        \u0027key_file\u0027: kwargs.get(\u0027key_file\u0027),"},{"line_number":113,"context_line":"        \u0027auth_ref\u0027: auth_ref,"},{"line_number":114,"context_line":"        \u0027api_micro_version\u0027: kwargs.get(\u0027api_micro_version\u0027),"},{"line_number":115,"context_line":"    }"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    return Client(api_version, endpoint, **cli_kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_ff9f2e5d","line":114,"updated":"2015-02-23 16:22:21.000000000","message":"option should be called \"os-ironic-api-version\"","commit_id":"541f5f7cff9da429eec55f40a54f5d8d1f8defda"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c801ce85957baed0abb365bee631361d06c87315","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        \u0027cert_file\u0027: kwargs.get(\u0027cert_file\u0027),"},{"line_number":112,"context_line":"        \u0027key_file\u0027: kwargs.get(\u0027key_file\u0027),"},{"line_number":113,"context_line":"        \u0027auth_ref\u0027: auth_ref,"},{"line_number":114,"context_line":"        \u0027api_micro_version\u0027: kwargs.get(\u0027api_micro_version\u0027),"},{"line_number":115,"context_line":"    }"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    return Client(api_version, endpoint, **cli_kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_2a34f148","line":114,"in_reply_to":"ba7be1f8_ff9f2e5d","updated":"2015-02-24 17:36:20.000000000","message":"@Devananda. Does that mean we should support --os-ironic-api-version (and --os-ironic-url) in the CLI? They are currently --ironic-api-version \u0026 --ironic-url.","commit_id":"541f5f7cff9da429eec55f40a54f5d8d1f8defda"}],"ironicclient/common/http.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"95b642f87fee88a58898c45f6e245542de9013c2","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        # Copy the kwargs so we can reuse the original in case of redirects"},{"line_number":148,"context_line":"        kwargs[\u0027headers\u0027] \u003d copy.deepcopy(kwargs.get(\u0027headers\u0027, {}))"},{"line_number":149,"context_line":"        kwargs[\u0027headers\u0027].setdefault(\u0027User-Agent\u0027, USER_AGENT)"},{"line_number":150,"context_line":"        if self.api_micro_version:"},{"line_number":151,"context_line":"            kwargs[\u0027headers\u0027].setdefault(\u0027X-OpenStack-Ironic-API-Version\u0027,"},{"line_number":152,"context_line":"                                         self.api_micro_version)"},{"line_number":153,"context_line":"        if self.auth_token:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_1f9b2273","line":150,"updated":"2015-02-23 16:22:21.000000000","message":"we should start always sending this header in every request, not just when it was passed on the CLI.\n\nDefault value should be \"latest\" -- though I think we need to add support for that to the server, so that could be done in a separate patch","commit_id":"541f5f7cff9da429eec55f40a54f5d8d1f8defda"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"abdbe5fb19e20a9a42da97ba7e7cebe5dc3b79d5","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        # Copy the kwargs so we can reuse the original in case of redirects"},{"line_number":148,"context_line":"        kwargs[\u0027headers\u0027] \u003d copy.deepcopy(kwargs.get(\u0027headers\u0027, {}))"},{"line_number":149,"context_line":"        kwargs[\u0027headers\u0027].setdefault(\u0027User-Agent\u0027, USER_AGENT)"},{"line_number":150,"context_line":"        if self.api_micro_version:"},{"line_number":151,"context_line":"            kwargs[\u0027headers\u0027].setdefault(\u0027X-OpenStack-Ironic-API-Version\u0027,"},{"line_number":152,"context_line":"                                         self.api_micro_version)"},{"line_number":153,"context_line":"        if self.auth_token:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_a8eb3eda","line":150,"in_reply_to":"ba7be1f8_1f9b2273","updated":"2015-02-26 04:49:41.000000000","message":"This has now been added to ironic server (i.e. review/158601) so we can now support this here as the default.","commit_id":"541f5f7cff9da429eec55f40a54f5d8d1f8defda"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"39a2500e305ace14740ef6328b6e646f9ab3b0fc","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        # Copy the kwargs so we can reuse the original in case of redirects"},{"line_number":148,"context_line":"        kwargs[\u0027headers\u0027] \u003d copy.deepcopy(kwargs.get(\u0027headers\u0027, {}))"},{"line_number":149,"context_line":"        kwargs[\u0027headers\u0027].setdefault(\u0027User-Agent\u0027, USER_AGENT)"},{"line_number":150,"context_line":"        if self.api_micro_version:"},{"line_number":151,"context_line":"            kwargs[\u0027headers\u0027].setdefault(\u0027X-OpenStack-Ironic-API-Version\u0027,"},{"line_number":152,"context_line":"                                         self.api_micro_version)"},{"line_number":153,"context_line":"        if self.auth_token:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_5f083a91","line":150,"in_reply_to":"ba7be1f8_1f9b2273","updated":"2015-02-23 16:26:27.000000000","message":"won\u0027t default being latest break people?","commit_id":"541f5f7cff9da429eec55f40a54f5d8d1f8defda"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"9e8664ccd22587a2f964826d25eba3bcb6ac1847","unresolved":false,"context_lines":[{"line_number":385,"context_line":"                                       region_name\u003dregion_name,"},{"line_number":386,"context_line":"                                       service_name\u003dNone,"},{"line_number":387,"context_line":"                                       user_agent\u003d\u0027python-ironicclient\u0027)"},{"line_number":388,"context_line":"        # Append an ironic specific vairable to session"},{"line_number":389,"context_line":"        session_client.os_ironic_api_version \u003d os_ironic_api_version"},{"line_number":390,"context_line":"        return session_client"},{"line_number":391,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_cec69768","line":388,"updated":"2015-02-26 20:21:01.000000000","message":"nit: s/vairable/variable/","commit_id":"5f5f1dcbb2986b06299eb5017879e1222d23d7a1"}],"ironicclient/shell.py":[{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"adf24b481441183f9ea36f01959ff1ac24bf5b96","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        api_versions \u003d options.ironic_api_version.split(\u0027.\u0027)"},{"line_number":360,"context_line":"        api_major_version \u003d api_versions[0]"},{"line_number":361,"context_line":"        api_verbose_version \u003d None"},{"line_number":362,"context_line":"        if len(api_versions) \u003d\u003d 1:"},{"line_number":363,"context_line":"            pass"},{"line_number":364,"context_line":"        elif len(api_versions) \u003d\u003d 2:"},{"line_number":365,"context_line":"            api_verbose_version \u003d options.ironic_api_version"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_29500d0a","line":362,"updated":"2015-02-13 08:23:42.000000000","message":"why is this check required if no action is to be taken? we can simply raise an exception if api_version is not 2?","commit_id":"d016cd059d1c28c35856f269df8cfcaf90b9899b"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"b988e891a182f66655d56d14f59a4291d3aca352","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        api_versions \u003d options.ironic_api_version.split(\u0027.\u0027)"},{"line_number":360,"context_line":"        api_major_version \u003d api_versions[0]"},{"line_number":361,"context_line":"        api_verbose_version \u003d None"},{"line_number":362,"context_line":"        if len(api_versions) \u003d\u003d 1:"},{"line_number":363,"context_line":"            pass"},{"line_number":364,"context_line":"        elif len(api_versions) \u003d\u003d 2:"},{"line_number":365,"context_line":"            api_verbose_version \u003d options.ironic_api_version"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_ec1a83c5","line":362,"in_reply_to":"da86d52c_29500d0a","updated":"2015-02-13 09:12:58.000000000","message":"default ironic-api-version value is \u00271\u0027 and this is also for backward compatible.","commit_id":"d016cd059d1c28c35856f269df8cfcaf90b9899b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"981c87de28740863af14826a3faf22ace6aa63d0","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        elif len(api_versions) \u003d\u003d 2:"},{"line_number":365,"context_line":"            api_verbose_version \u003d options.ironic_api_version"},{"line_number":366,"context_line":"        else:"},{"line_number":367,"context_line":"            raise exc.CommandError(\u0027Unable to determine the api version\u0027)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        subcommand_parser \u003d self.get_subcommand_parser(api_major_version)"},{"line_number":370,"context_line":"        self.parser \u003d subcommand_parser"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_a02e63a3","line":367,"updated":"2015-02-17 11:49:59.000000000","message":"1. this does not seem to work correctly if version is not provided\n\n2. you can replace sll this with:\n\n try:\n   float(options.ironic_api_version)\n except ValueError:\n   raise exc.CommandError(\u0027Incorrect API version %s, expected X.Y\u0027 % ...)","commit_id":"b27a19aa11bf0cbb77e326acd1f4f8fb0b0c42ec"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"28a603c98c573f5a954ffd3c3e6e9d72b09a716a","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        elif len(api_versions) \u003d\u003d 2:"},{"line_number":365,"context_line":"            api_verbose_version \u003d options.ironic_api_version"},{"line_number":366,"context_line":"        else:"},{"line_number":367,"context_line":"            raise exc.CommandError(\u0027Unable to determine the api version\u0027)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        subcommand_parser \u003d self.get_subcommand_parser(api_major_version)"},{"line_number":370,"context_line":"        self.parser \u003d subcommand_parser"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_d05b0420","line":367,"in_reply_to":"da86d52c_a02e63a3","updated":"2015-02-18 04:23:44.000000000","message":"If version is not provided, it will be the default value \u00271\u0027 IMHO, see  above line #187\nBut I like the exception.","commit_id":"b27a19aa11bf0cbb77e326acd1f4f8fb0b0c42ec"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ceb9defd7516a32df6e99e1385e6b3b4899e0557","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        elif len(api_versions) \u003d\u003d 2:"},{"line_number":365,"context_line":"            api_verbose_version \u003d options.ironic_api_version"},{"line_number":366,"context_line":"        else:"},{"line_number":367,"context_line":"            raise exc.CommandError(\u0027Unable to determine the api version\u0027)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        subcommand_parser \u003d self.get_subcommand_parser(api_major_version)"},{"line_number":370,"context_line":"        self.parser \u003d subcommand_parser"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_db9cc0c2","line":367,"in_reply_to":"da86d52c_d05b0420","updated":"2015-02-19 15:04:18.000000000","message":"ok, disregard 1., but 2. still holds","commit_id":"b27a19aa11bf0cbb77e326acd1f4f8fb0b0c42ec"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"981c87de28740863af14826a3faf22ace6aa63d0","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                \u0027endpoint_type\u0027: endpoint_type,"},{"line_number":474,"context_line":"                \u0027region_name\u0027: args.os_region_name,"},{"line_number":475,"context_line":"                \u0027username\u0027: args.os_username,"},{"line_number":476,"context_line":"                \u0027password\u0027: args.os_password,"},{"line_number":477,"context_line":"            }"},{"line_number":478,"context_line":"        kwargs[\u0027api_verbose_version\u0027] \u003d api_verbose_version"},{"line_number":479,"context_line":"        client \u003d iroclient.Client(api_major_version, endpoint, **kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_20127362","line":476,"updated":"2015-02-17 11:49:59.000000000","message":"if you make above change, it will be:\n\n \u0027api_version\u0027: options.ironic_api_version,","commit_id":"b27a19aa11bf0cbb77e326acd1f4f8fb0b0c42ec"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"28a603c98c573f5a954ffd3c3e6e9d72b09a716a","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                \u0027endpoint_type\u0027: endpoint_type,"},{"line_number":474,"context_line":"                \u0027region_name\u0027: args.os_region_name,"},{"line_number":475,"context_line":"                \u0027username\u0027: args.os_username,"},{"line_number":476,"context_line":"                \u0027password\u0027: args.os_password,"},{"line_number":477,"context_line":"            }"},{"line_number":478,"context_line":"        kwargs[\u0027api_verbose_version\u0027] \u003d api_verbose_version"},{"line_number":479,"context_line":"        client \u003d iroclient.Client(api_major_version, endpoint, **kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_903eecb6","line":476,"in_reply_to":"da86d52c_20127362","updated":"2015-02-18 04:23:44.000000000","message":"We have another kwargs in #430 above. So I assign the value below.","commit_id":"b27a19aa11bf0cbb77e326acd1f4f8fb0b0c42ec"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ceb9defd7516a32df6e99e1385e6b3b4899e0557","unresolved":false,"context_lines":[{"line_number":473,"context_line":"                \u0027endpoint_type\u0027: endpoint_type,"},{"line_number":474,"context_line":"                \u0027region_name\u0027: args.os_region_name,"},{"line_number":475,"context_line":"                \u0027username\u0027: args.os_username,"},{"line_number":476,"context_line":"                \u0027password\u0027: args.os_password,"},{"line_number":477,"context_line":"            }"},{"line_number":478,"context_line":"        kwargs[\u0027api_verbose_version\u0027] \u003d api_verbose_version"},{"line_number":479,"context_line":"        client \u003d iroclient.Client(api_major_version, endpoint, **kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_7b3d94ba","line":476,"in_reply_to":"da86d52c_903eecb6","updated":"2015-02-19 15:04:18.000000000","message":"ETOOMANYKWARGS :) Ok, understood. but please replace with api_minor_version","commit_id":"b27a19aa11bf0cbb77e326acd1f4f8fb0b0c42ec"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"95b642f87fee88a58898c45f6e245542de9013c2","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        self._setup_debugging(options.debug)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        # build available subcommands based on version"},{"line_number":359,"context_line":"        try:"},{"line_number":360,"context_line":"            float(options.ironic_api_version)"},{"line_number":361,"context_line":"        except ValueError:"},{"line_number":362,"context_line":"            raise exc.CommandError(\u0027Incorrect API version %s, expect value \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_3f89c626","line":359,"updated":"2015-02-23 16:22:21.000000000","message":"this block ought to be a separate function for readability and testability.\n\nalso, the server does not expect a float, and I do not think the client should treat it as such. The server expects a string containing two integers separated by a \u0027.\u0027","commit_id":"541f5f7cff9da429eec55f40a54f5d8d1f8defda"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"39a2500e305ace14740ef6328b6e646f9ab3b0fc","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        self._setup_debugging(options.debug)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        # build available subcommands based on version"},{"line_number":359,"context_line":"        try:"},{"line_number":360,"context_line":"            float(options.ironic_api_version)"},{"line_number":361,"context_line":"        except ValueError:"},{"line_number":362,"context_line":"            raise exc.CommandError(\u0027Incorrect API version %s, expect value \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_9fb472d2","line":359,"in_reply_to":"ba7be1f8_3f89c626","updated":"2015-02-23 16:26:27.000000000","message":"I recommended using float, because it\u0027s the easiest way to test on X.Y, but maybe it allows too much...","commit_id":"541f5f7cff9da429eec55f40a54f5d8d1f8defda"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"abdbe5fb19e20a9a42da97ba7e7cebe5dc3b79d5","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        self._setup_debugging(options.debug)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        # build available subcommands based on version"},{"line_number":359,"context_line":"        try:"},{"line_number":360,"context_line":"            float(options.ironic_api_version)"},{"line_number":361,"context_line":"        except ValueError:"},{"line_number":362,"context_line":"            raise exc.CommandError(\u0027Incorrect API version %s, expect value \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_48a642af","line":359,"in_reply_to":"ba7be1f8_9fb472d2","updated":"2015-02-26 04:49:41.000000000","message":"I think X.Y as a string is best here.  We don\u0027t want 1.600000000001 as a version coming across.","commit_id":"541f5f7cff9da429eec55f40a54f5d8d1f8defda"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c801ce85957baed0abb365bee631361d06c87315","unresolved":false,"context_lines":[{"line_number":360,"context_line":"            float(options.ironic_api_version)"},{"line_number":361,"context_line":"        except ValueError:"},{"line_number":362,"context_line":"            raise exc.CommandError(\u0027Incorrect API version %s, expect value \u0027"},{"line_number":363,"context_line":"                                   \u0027like X.Y\u0027 % options.ironic_api_version)"},{"line_number":364,"context_line":"        api_versions \u003d options.ironic_api_version.split(\u0027.\u0027)"},{"line_number":365,"context_line":"        api_major_version \u003d api_versions[0]"},{"line_number":366,"context_line":"        if len(api_versions) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_aafaa140","line":363,"updated":"2015-02-24 17:36:20.000000000","message":"how about something like \u0027Invalid API version specified: \"%s\". Expected X or X.Y\u0027","commit_id":"541f5f7cff9da429eec55f40a54f5d8d1f8defda"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"abdbe5fb19e20a9a42da97ba7e7cebe5dc3b79d5","unresolved":false,"context_lines":[{"line_number":360,"context_line":"            float(options.ironic_api_version)"},{"line_number":361,"context_line":"        except ValueError:"},{"line_number":362,"context_line":"            raise exc.CommandError(\u0027Incorrect API version %s, expect value \u0027"},{"line_number":363,"context_line":"                                   \u0027like X.Y\u0027 % options.ironic_api_version)"},{"line_number":364,"context_line":"        api_versions \u003d options.ironic_api_version.split(\u0027.\u0027)"},{"line_number":365,"context_line":"        api_major_version \u003d api_versions[0]"},{"line_number":366,"context_line":"        if len(api_versions) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_08828aff","line":363,"in_reply_to":"ba7be1f8_aafaa140","updated":"2015-02-26 04:49:41.000000000","message":"This needs to be X.Y  The server doesn\u0027t support X by itself.","commit_id":"541f5f7cff9da429eec55f40a54f5d8d1f8defda"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c801ce85957baed0abb365bee631361d06c87315","unresolved":false,"context_lines":[{"line_number":478,"context_line":"                \u0027username\u0027: args.os_username,"},{"line_number":479,"context_line":"                \u0027password\u0027: args.os_password,"},{"line_number":480,"context_line":"            }"},{"line_number":481,"context_line":"        kwargs[\u0027api_micro_version\u0027] \u003d api_micro_version"},{"line_number":482,"context_line":"        client \u003d iroclient.Client(api_major_version, endpoint, **kwargs)"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_6d98c3c0","line":481,"updated":"2015-02-24 17:36:20.000000000","message":"I think we should pass the version, regardless if it is only a major number, or major.minor","commit_id":"541f5f7cff9da429eec55f40a54f5d8d1f8defda"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ba9dd18b094d65e1c8817611eee404643fa728ab","unresolved":false,"context_lines":[{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def _get_os_ironic_api_version(self, ironic_api_version):"},{"line_number":353,"context_line":"        api_versions \u003d ironic_api_version.split(\u0027.\u0027)"},{"line_number":354,"context_line":"        api_major_version \u003d api_versions[0]"},{"line_number":355,"context_line":"        if len(api_versions) \u003d\u003d 1:"},{"line_number":356,"context_line":"            # Default value of ironic_api_version is \u00271\u0027."},{"line_number":357,"context_line":"            # If user not specify the value of api version, passing \u0027latest\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_b281d9fc","line":354,"updated":"2015-02-26 12:48:40.000000000","message":"this can raise IndexError, do it on line #359 instead","commit_id":"5f5f1dcbb2986b06299eb5017879e1222d23d7a1"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"23945a993399f6b748e860b3bdfcf9c7730f13c1","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                    os_ironic_api_version \u003d None"},{"line_number":374,"context_line":"            else:"},{"line_number":375,"context_line":"                raise exc.CommandError(\"Incorrect API version %s, expect \""},{"line_number":376,"context_line":"                                       \"value ike X.Y\" % api_version)"},{"line_number":377,"context_line":"            api_major_version \u003d versions[0]"},{"line_number":378,"context_line":"            return (api_major_version, os_ironic_api_version)"},{"line_number":379,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_68b428d1","line":376,"updated":"2015-03-06 19:23:48.000000000","message":"typo: \"ike\" -\u003e \"like\"","commit_id":"53095aaa8f38b4152082778e6b92de85334ddefc"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"ee08493fd6640ab7afaa181fc6ab11754fabb150","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                    os_ironic_api_version \u003d None"},{"line_number":374,"context_line":"            else:"},{"line_number":375,"context_line":"                raise exc.CommandError(\"Incorrect API version %s, expect \""},{"line_number":376,"context_line":"                                       \"value ike X.Y\" % api_version)"},{"line_number":377,"context_line":"            api_major_version \u003d versions[0]"},{"line_number":378,"context_line":"            return (api_major_version, os_ironic_api_version)"},{"line_number":379,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_4b403e07","line":376,"in_reply_to":"9a80dd14_68b428d1","updated":"2015-03-06 19:28:34.000000000","message":"should this have i18n wrapper _()?","commit_id":"53095aaa8f38b4152082778e6b92de85334ddefc"}],"ironicclient/tests/test_client.py":[{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"adf24b481441183f9ea36f01959ff1ac24bf5b96","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            \u0027os_password\u0027: \u0027PASSWORD\u0027,"},{"line_number":151,"context_line":"            \u0027os_auth_url\u0027: \u0027http://localhost:35357/v2.0\u0027,"},{"line_number":152,"context_line":"            \u0027os_auth_token\u0027: \u0027\u0027,"},{"line_number":153,"context_line":"            \u0027api_verbose_version\u0027: \u00271.2\u0027,"},{"line_number":154,"context_line":"        }"},{"line_number":155,"context_line":"        client \u003d get_client(\u00271\u0027, **kwargs)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_d903c40d","line":153,"updated":"2015-02-13 08:23:42.000000000","message":"at API i can see the check like \"pecan.request.version.minor \u003c 4\". Are you sure it needs to be 2 here?","commit_id":"d016cd059d1c28c35856f269df8cfcaf90b9899b"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"b988e891a182f66655d56d14f59a4291d3aca352","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            \u0027os_password\u0027: \u0027PASSWORD\u0027,"},{"line_number":151,"context_line":"            \u0027os_auth_url\u0027: \u0027http://localhost:35357/v2.0\u0027,"},{"line_number":152,"context_line":"            \u0027os_auth_token\u0027: \u0027\u0027,"},{"line_number":153,"context_line":"            \u0027api_verbose_version\u0027: \u00271.2\u0027,"},{"line_number":154,"context_line":"        }"},{"line_number":155,"context_line":"        client \u003d get_client(\u00271\u0027, **kwargs)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_0cec3792","line":153,"in_reply_to":"da86d52c_d903c40d","updated":"2015-02-13 09:12:58.000000000","message":"1.2 is not necessary. This is only for testing to recognize the api_verbose_version, value itself is not so important I guess.","commit_id":"d016cd059d1c28c35856f269df8cfcaf90b9899b"}],"ironicclient/tests/test_shell.py":[{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"abdbe5fb19e20a9a42da97ba7e7cebe5dc3b79d5","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                            matchers.MatchesRegex(r, self.re_options))"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_ironic_api_version(self):"},{"line_number":174,"context_line":"        self.shell(\u0027--ironic-api-version 1 help\u0027)"},{"line_number":175,"context_line":"        self.shell(\u0027--ironic-api-version 1.2 help\u0027)"},{"line_number":176,"context_line":"        self.assertRaises(exc.CommandError,"},{"line_number":177,"context_line":"            self.shell, \u0027--ironic-api-version 1.2.1 help\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_28b3cee9","line":174,"updated":"2015-02-26 04:49:41.000000000","message":"I don\u0027t think we want to support this form, just X.Y","commit_id":"541f5f7cff9da429eec55f40a54f5d8d1f8defda"}]}
