)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"81c2ba01e62e59d321096eab926d08cb81c0e58d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"OfficialClientTest to ScenarioTest. Create and update as well all"},{"line_number":11,"context_line":"needed functions:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"- create_(server_from_volume|snapshot_from_volume)"},{"line_number":14,"context_line":"- server api schema"},{"line_number":15,"context_line":"- waiters"},{"line_number":16,"context_line":"- servers_client"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_1e984268","line":13,"updated":"2014-08-08 16:58:05.000000000","message":"these functions are not added anymore","commit_id":"1d1bfc8ec91e51dfb6cc823f4185d3a38343a83b"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"81c2ba01e62e59d321096eab926d08cb81c0e58d","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"- create_(server_from_volume|snapshot_from_volume)"},{"line_number":14,"context_line":"- server api schema"},{"line_number":15,"context_line":"- waiters"},{"line_number":16,"context_line":"- servers_client"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Partially implements: bp:tempest-client-scenarios"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_9e6c526d","line":15,"updated":"2014-08-08 16:58:05.000000000","message":"no changes to waiters anymore","commit_id":"1d1bfc8ec91e51dfb6cc823f4185d3a38343a83b"}],"tempest/api_schema/compute/servers.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        \u0027id\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":95,"context_line":"        \u0027name\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":96,"context_line":"        \u0027status\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":97,"context_line":"        \u0027image\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]},"},{"line_number":98,"context_line":"        \u0027flavor\u0027: {"},{"line_number":99,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":100,"context_line":"            \u0027properties\u0027: {"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_d2dedd69","line":97,"updated":"2014-08-07 20:41:13.000000000","message":"instead of creating a different schema, what about making the schema validate all possible server show responses?\n\ne.g something like\n\n\u0027image\u0027: { \u0027oneOf\u0027: {\n  [ {\u0027type\u0027: \u0027object\u0027 ... },\n    {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]} ]\n}}","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    }"},{"line_number":133,"context_line":"}"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"base_update_get_server_from_volume \u003d {"},{"line_number":136,"context_line":"    \u0027status_code\u0027: [200],"},{"line_number":137,"context_line":"    \u0027response_body\u0027: {"},{"line_number":138,"context_line":"        \u0027type\u0027: \u0027object\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_f2ccc1c0","line":135,"updated":"2014-08-07 20:41:13.000000000","message":"See comment on L97 - this would not be necessary","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"}],"tempest/api_schema/compute/v2/servers.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    \u0027hostId\u0027"},{"line_number":94,"context_line":")"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"get_server_from_volume \u003d copy.deepcopy("},{"line_number":97,"context_line":"    servers.base_update_get_server_from_volume)"},{"line_number":98,"context_line":"get_server_from_volume["},{"line_number":99,"context_line":"    \u0027response_body\u0027][\u0027properties\u0027][\u0027server\u0027][\u0027properties\u0027].update({"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_32fb997c","line":96,"updated":"2014-08-07 20:41:13.000000000","message":"All this is not needed if we have a single schema in the first place.","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"}],"tempest/clients.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"from tempest.services.compute.json.keypairs_client import KeyPairsClientJSON"},{"line_number":50,"context_line":"from tempest.services.compute.json.limits_client import LimitsClientJSON"},{"line_number":51,"context_line":"from tempest.services.compute.json.migrations_client import \\"},{"line_number":52,"context_line":"    MigrationsClientJSON"},{"line_number":53,"context_line":"from tempest.services.compute.json.quotas_client import QuotaClassesClientJSON"},{"line_number":54,"context_line":"from tempest.services.compute.json.quotas_client import QuotasClientJSON"},{"line_number":55,"context_line":"from tempest.services.compute.json.security_group_default_rules_client import \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_f233e1c1","line":52,"updated":"2014-08-07 20:41:13.000000000","message":"The following line is missing in patch-set 5\n\nfrom tempest.services.compute.json.networks_client import NetworksClientJSON","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"}],"tempest/common/waiters.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        old_task_state \u003d task_state"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"def wait_for_server_from_vol_status(client, server_id, status, ready_wait\u003dTrue,"},{"line_number":103,"context_line":"                                    extra_timeout\u003d0, raise_on_error\u003dTrue):"},{"line_number":104,"context_line":"    \"\"\"Waits for a server to reach a given status.\"\"\""},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_b2c0892c","line":102,"updated":"2014-08-07 20:41:13.000000000","message":"We don\u0027t need an exact copy of the waiter function here.\nI think the two get functions can be collapsed into one.\nEven if you have two functions, I would add a get_callable parameter to allow specify which getter function to use.","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"}],"tempest/scenario/manager.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        self.assertEqual(server[\u0027name\u0027], name)"},{"line_number":239,"context_line":"        return server"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def create_server_from_volume(self, name\u003dNone, image\u003dNone, flavor\u003dNone,"},{"line_number":242,"context_line":"                                  wait_on_boot\u003dTrue, wait_on_delete\u003dTrue,"},{"line_number":243,"context_line":"                                  create_kwargs\u003d{}):"},{"line_number":244,"context_line":"        \"\"\"Creates VM instance from a volume."}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_0d4d9a71","line":241,"updated":"2014-08-07 20:41:13.000000000","message":"I don\u0027t think an additional almost identical method is used here.\n\nHandling of the image parameter. The assumption of the original create_server is that if image\u003dNone the configured image id is used. This cannot be easily changed because many tests depend on it. So either we code some special value for image (e.g. __ignore__), or (better) we provide an additional boolean parameter like skip_image\u003dFalse. When default is overwritten and set to True the image parameter is not passed downstream.\n\nDifferent getter / waiter methods: I think we don\u0027t need different methods (see other comments).","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":467,"context_line":"                  snapshot_image[\u0027name\u0027], server[\u0027name\u0027])"},{"line_number":468,"context_line":"        return snapshot_image"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    def create_snapshot_from_volume(self, vol_id, name\u003dNone):"},{"line_number":471,"context_line":"        _client \u003d self.snapshots_client"},{"line_number":472,"context_line":"        if name is None:"},{"line_number":473,"context_line":"            name \u003d data_utils.rand_name(\u0027snapshot\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_2dc7be99","line":470,"updated":"2014-08-07 20:41:13.000000000","message":"Nice to have the possibility to specify the name, but it seems to be an unrelated change.\n\nAlso moving this from the test to the manager seems to be an unrelated change.","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":471,"context_line":"        _client \u003d self.snapshots_client"},{"line_number":472,"context_line":"        if name is None:"},{"line_number":473,"context_line":"            name \u003d data_utils.rand_name(\u0027snapshot\u0027)"},{"line_number":474,"context_line":"        LOG.debug(\"Creating a snapshot image from volume: %s\", vol_id)"},{"line_number":475,"context_line":"        resp, snap \u003d _client.create_snapshot(volume_id\u003dvol_id,"},{"line_number":476,"context_line":"                                             force\u003dTrue,"},{"line_number":477,"context_line":"                                             display_name\u003dname)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_cd4c8242","line":474,"updated":"2014-08-07 20:41:13.000000000","message":"Somewhat unrelated change...","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":476,"context_line":"                                             force\u003dTrue,"},{"line_number":477,"context_line":"                                             display_name\u003dname)"},{"line_number":478,"context_line":"        self.addCleanup_with_wait("},{"line_number":479,"context_line":"        waiter_callable\u003d_client.wait_for_resource_deletion,"},{"line_number":480,"context_line":"        thing_id\u003dsnap[\u0027id\u0027], thing_id_param\u003d\u0027id\u0027,"},{"line_number":481,"context_line":"        cleanup_callable\u003dself.delete_wrapper,"},{"line_number":482,"context_line":"        cleanup_args\u003d[_client.delete_snapshot, snap[\u0027id\u0027]])"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_4d0f92e0","line":479,"updated":"2014-08-07 20:41:13.000000000","message":"Missing indentation (next three lines as well)","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":481,"context_line":"        cleanup_callable\u003dself.delete_wrapper,"},{"line_number":482,"context_line":"        cleanup_args\u003d[_client.delete_snapshot, snap[\u0027id\u0027]])"},{"line_number":483,"context_line":"        _client.wait_for_snapshot_status(snap[\u0027id\u0027], \u0027available\u0027)"},{"line_number":484,"context_line":"        self.assertEqual(name, snap[\u0027display_name\u0027])"},{"line_number":485,"context_line":"        LOG.debug(\"Created snapshot %s from volume %s\","},{"line_number":486,"context_line":"                  snap[\u0027display_name\u0027], vol_id)"},{"line_number":487,"context_line":"        return snap"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_8d17eaee","line":484,"updated":"2014-08-07 20:41:13.000000000","message":"Somewhat unrelated change...","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        cleanup_args\u003d[_client.delete_snapshot, snap[\u0027id\u0027]])"},{"line_number":483,"context_line":"        _client.wait_for_snapshot_status(snap[\u0027id\u0027], \u0027available\u0027)"},{"line_number":484,"context_line":"        self.assertEqual(name, snap[\u0027display_name\u0027])"},{"line_number":485,"context_line":"        LOG.debug(\"Created snapshot %s from volume %s\","},{"line_number":486,"context_line":"                  snap[\u0027display_name\u0027], vol_id)"},{"line_number":487,"context_line":"        return snap"},{"line_number":488,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_ed5a26f4","line":485,"updated":"2014-08-07 20:41:13.000000000","message":"Somewhat unrelated change...","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"771748814317b32daacb8d5adce6454d977b4036","unresolved":false,"context_lines":[{"line_number":840,"context_line":"        return linux_client"},{"line_number":841,"context_line":""},{"line_number":842,"context_line":"    def _log_console_output(self, servers\u003dNone):"},{"line_number":843,"context_line":"        if not CONF.compute_feature_enabled.console_output:"},{"line_number":844,"context_line":"            LOG.debug(\u0027Console output not supported, cannot log\u0027)"},{"line_number":845,"context_line":"            return"},{"line_number":846,"context_line":"        if not servers:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_1a40bd55","side":"PARENT","line":843,"updated":"2014-08-25 18:29:45.000000000","message":"Why is this removed?","commit_id":"882595e1d59971df51f6bbb4b3337e297cf349e5"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"a6c676f1fb8122eabd0d9cd74b021741fb240ec8","unresolved":false,"context_lines":[{"line_number":702,"context_line":"        self._create_loginable_secgroup_rule_nova(client, secgroup.id)"},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"        return secgroup"},{"line_number":705,"context_line":""},{"line_number":706,"context_line":"    def rebuild_server(self, server, client\u003dNone, image\u003dNone,"},{"line_number":707,"context_line":"                       preserve_ephemeral\u003dFalse, wait\u003dTrue,"},{"line_number":708,"context_line":"                       rebuild_kwargs\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_08baf2bf","side":"PARENT","line":705,"updated":"2014-08-27 07:31:09.000000000","message":"Why did you remove this function?","commit_id":"f0b76a14273f4af84e552e3c0024b9bd09dc8a53"}],"tempest/scenario/test_volume_boot_pattern.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # dev_name\u003did:type:size:delete_on_terminate"},{"line_number":53,"context_line":"        # where type needs to be \"snap\" if the server is booted"},{"line_number":54,"context_line":"        # from a snapshot, size instead can be safely left empty"},{"line_number":55,"context_line":"        bd_map \u003d {"},{"line_number":56,"context_line":"            \u0027vda\u0027: vol_id + \u0027:::0\u0027"},{"line_number":57,"context_line":"        }"},{"line_number":58,"context_line":"        security_groups \u003d [self.security_group[\u0027name\u0027]]"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_adc02e2c","line":55,"updated":"2014-08-07 20:41:13.000000000","message":"This should be a list of dicts (see comments on the client)","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        bd_map \u003d {"},{"line_number":56,"context_line":"            \u0027vda\u0027: vol_id + \u0027:::0\u0027"},{"line_number":57,"context_line":"        }"},{"line_number":58,"context_line":"        security_groups \u003d [self.security_group[\u0027name\u0027]]"},{"line_number":59,"context_line":"        create_kwargs \u003d {"},{"line_number":60,"context_line":"            \u0027block_device_mapping\u0027: bd_map,"},{"line_number":61,"context_line":"            \u0027key_name\u0027: keypair[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_ada90e7e","line":58,"updated":"2014-08-07 20:41:13.000000000","message":"This should be a dict (see comments on the client)","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"81c2ba01e62e59d321096eab926d08cb81c0e58d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            \u0027volume_id\u0027: vol_id,"},{"line_number":58,"context_line":"            \u0027delete_on_termination\u0027: \u00270\u0027}]"},{"line_number":59,"context_line":"        self.security_group \u003d self._create_security_group_nova()"},{"line_number":60,"context_line":"        security_groups \u003d [self.security_group]"},{"line_number":61,"context_line":"        create_kwargs \u003d {"},{"line_number":62,"context_line":"            \u0027block_device_mapping\u0027: bd_map,"},{"line_number":63,"context_line":"            \u0027key_name\u0027: keypair[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_3e926658","line":60,"updated":"2014-08-08 16:58:05.000000000","message":"I think this should be something like\n\n[{\u0027name\u0027: self.security_group[\u0027name\u0027]}]","commit_id":"1d1bfc8ec91e51dfb6cc823f4185d3a38343a83b"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"81c2ba01e62e59d321096eab926d08cb81c0e58d","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                 \u0027destination_type\u0027: \u0027volume\u0027, \u0027boot_index\u0027: 0,"},{"line_number":191,"context_line":"                 \u0027delete_on_termination\u0027: False}]"},{"line_number":192,"context_line":"        self.security_group \u003d self._create_security_group_nova()"},{"line_number":193,"context_line":"        security_groups \u003d [self.security_group]"},{"line_number":194,"context_line":"        create_kwargs \u003d {"},{"line_number":195,"context_line":"            \u0027block_device_mapping_v2\u0027: bdms,"},{"line_number":196,"context_line":"            \u0027key_name\u0027: keypair[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_1e8122fa","line":193,"updated":"2014-08-08 16:58:05.000000000","message":"Same as L60","commit_id":"1d1bfc8ec91e51dfb6cc823f4185d3a38343a83b"}],"tempest/services/compute/json/servers_client.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            if value is not None:"},{"line_number":83,"context_line":"                post_body[post_param] \u003d value"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        if \u0027security_groups\u0027 in kwargs:"},{"line_number":86,"context_line":"            post_body[\u0027security_groups\u0027] \u003d\\"},{"line_number":87,"context_line":"                [{\u0027name\u0027: sg} for sg in kwargs[\u0027security_groups\u0027]]"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_d2633da9","line":85,"updated":"2014-08-07 20:41:13.000000000","message":"Security group is now handled twice, if you want a different behaviour you should remove it from the list above.\nIn fact this change mimics the behaviour of novaclient, instead of adapting the scenario test to the interface of the tempest client. \n\nThe docstring says this method expects a list of dicts and not a list of names, I think it should stay the same.\n\nBesides, other tests already use the current syntax, and should be adapted as well otherwise (e.g. https://git.openstack.org/cgit/openstack/tempest/tree/tempest/api/compute/servers/test_servers_negative.py#n304)","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # Block device mappings are passed as a list of dictionaries"},{"line_number":90,"context_line":"        # Parse the mapping to be in the format:"},{"line_number":91,"context_line":"        # \u003cid\u003e:[\u003ctype\u003e]:[\u003csize(GB)\u003e]:[\u003cdelete_on_termination\u003e]"},{"line_number":92,"context_line":"        if \u0027block_device_mapping\u0027 in kwargs:"},{"line_number":93,"context_line":"            bdm \u003d []"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_f20121b6","line":91,"updated":"2014-08-07 20:41:13.000000000","message":"Similar to L85, the block_device_mapping is already handled above. The format with colon-separated values is handy for CLI tools, but I would prefer here to keep the dict syntax (like for the block_device_mapping_v2). \nThe scenario test should be adapted to create the proper dict.","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"            post_body[\u0027block_device_mapping\u0027] \u003d bdm"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        elif \u0027block_device_mapping_v2\u0027 in kwargs:"},{"line_number":123,"context_line":"            # Append the image to the list only if we have new style BDMs"},{"line_number":124,"context_line":"            if \u0027image\u0027 in kwargs:"},{"line_number":125,"context_line":"                bdm_dict \u003d {\u0027uuid\u0027: kwargs[\u0027image\u0027], \u0027source_type\u0027: \u0027image\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_1205b5c0","line":122,"updated":"2014-08-07 20:41:13.000000000","message":"This is implemented to match the novaclient implementation, but it\u0027s not useful for the existing scenario test. TestVolumeBootPatternV2 already specifies the bdms as list of dictionaries, and it also specifies image as an empty string, which would match the condition below.\nI think for the tempest client it\u0027s better to leave full control of what is sent to the API to the caller.\nSo I would simply add block_device_mapping_v2 to L74 as well as in the docstring.","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        self.validate_response(schema.get_server, resp, body)"},{"line_number":192,"context_line":"        return resp, body[\u0027server\u0027]"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def get_server_from_volume(self, server_id):"},{"line_number":195,"context_line":"        \"\"\"Returns the details of an existing server.\"\"\""},{"line_number":196,"context_line":"        resp, body \u003d self.get(\"servers/%s\" % str(server_id))"},{"line_number":197,"context_line":"        body \u003d json.loads(body)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_32239959","line":194,"updated":"2014-08-07 20:41:13.000000000","message":"Do we really need a separate method here? (see comments on the schema)","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c88400afd26390a415ea4e8ae72b39529f2ab68d","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        return resp, body[\u0027server\u0027]"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def get_server_from_volume(self, server_id):"},{"line_number":195,"context_line":"        \"\"\"Returns the details of an existing server.\"\"\""},{"line_number":196,"context_line":"        resp, body \u003d self.get(\"servers/%s\" % str(server_id))"},{"line_number":197,"context_line":"        body \u003d json.loads(body)"},{"line_number":198,"context_line":"        self.validate_response(schema.get_server_from_volume, resp, body)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_b216c9f0","line":195,"updated":"2014-08-07 20:41:13.000000000","message":"Returns the details of an existing server that was booted from a volume.","commit_id":"8e170dcc0a4cf8afb31741806804a92b16d1dccf"}]}
