)]}'
{"specs/train/add_push_dataframes_api_endpoint.rst":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"67984fe81aa7cc1be990baa38cb5c0756f849d55","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Problem Description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"With the current state of CloudKitty, there is no standard way to push"},{"line_number":22,"context_line":"DataFrames into the CloudKitty storage and certainly not through its API."},{"line_number":23,"context_line":"This inconvenience prevents CloudKitty from being easily provisionned with"},{"line_number":24,"context_line":"DataFrame fixtures so it can be functionally tested with OpenStack Tempest."},{"line_number":25,"context_line":"A new admin API endpoint is needed to allow this. These tests would"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_ca81c74c","line":22,"range":{"start_line":21,"start_character":47,"end_line":22,"end_character":10},"updated":"2019-07-23 15:09:42.000000000","message":"Not true: The standard way is to load a storage driver and call the \"push\" method.","commit_id":"630df8f136c57e2588a52db05373391f014f1fc6"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"67984fe81aa7cc1be990baa38cb5c0756f849d55","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"With the current state of CloudKitty, there is no standard way to push"},{"line_number":22,"context_line":"DataFrames into the CloudKitty storage and certainly not through its API."},{"line_number":23,"context_line":"This inconvenience prevents CloudKitty from being easily provisionned with"},{"line_number":24,"context_line":"DataFrame fixtures so it can be functionally tested with OpenStack Tempest."},{"line_number":25,"context_line":"A new admin API endpoint is needed to allow this. These tests would"},{"line_number":26,"context_line":"enable a more efficient workflow to validate forthcoming features and"},{"line_number":27,"context_line":"therefore improve the overall quality and stability of them in a long term"},{"line_number":28,"context_line":"goal."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_ca2b072e","line":25,"range":{"start_line":23,"start_character":1,"end_line":25,"end_character":49},"updated":"2019-07-23 15:09:42.000000000","message":"And would allow to have external processors pushing data to cloudkitty. It would be nice to add a \"do_rating\" (or equivalent) parameter to the endpoint, to aplly rating rules on the pushed data.","commit_id":"630df8f136c57e2588a52db05373391f014f1fc6"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"67984fe81aa7cc1be990baa38cb5c0756f849d55","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Alternatives"},{"line_number":37,"context_line":"------------"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"CloudKitty could be provisioned by using more hackish ways such as manipulating directly"},{"line_number":40,"context_line":"the storage backend and the database metadata but this is a laborious and error-prone process."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Data model impact"},{"line_number":43,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_aadb2b4d","line":40,"range":{"start_line":38,"start_character":0,"end_line":40,"end_character":94},"updated":"2019-07-23 15:09:42.000000000","message":"And external processor would need to be written in python to be able to load the storage driver + they would need to have the credentials of the sotrage backend.","commit_id":"630df8f136c57e2588a52db05373391f014f1fc6"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"4e28c6194e8978d6163479f6017f32edc5af6faf","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Proposed Change"},{"line_number":38,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"A new endpoint will be made available to admin users on ``POST /v2/dataframe``."},{"line_number":41,"context_line":"This will allow end users to push DataFrames in the form of JSON objects."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_b7aaee80","line":40,"range":{"start_line":40,"start_character":56,"end_line":40,"end_character":78},"updated":"2019-08-21 09:01:17.000000000","message":"Should \"dataframe\" take an s ? seems like a list of dataframes is expected anyway. Other OpenStack APIs use plural forms too: https://docs.openstack.org/api-ref/identity/v3/?expanded\u003dlist-domains-detail#list-domains","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":29503,"name":"Justin Ferrieu","email":"jferrieu@objectif-libre.com","username":"jferrieu"},"change_message_id":"0675dc88d1782709133e45374256e813c17f8d0b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Proposed Change"},{"line_number":38,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"A new endpoint will be made available to admin users on ``POST /v2/dataframe``."},{"line_number":41,"context_line":"This will allow end users to push DataFrames in the form of JSON objects."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_e9188a76","line":40,"range":{"start_line":40,"start_character":56,"end_line":40,"end_character":78},"in_reply_to":"7faddb67_b7aaee80","updated":"2019-08-21 09:50:46.000000000","message":"You\u0027re right. Done","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"4e28c6194e8978d6163479f6017f32edc5af6faf","unresolved":false,"context_lines":[{"line_number":47,"context_line":"to be able to load the storage driver modules plus they would need the storage backend"},{"line_number":48,"context_line":"credentials exposed to them."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Else CloudKitty could be provisioned by using more hackish ways"},{"line_number":51,"context_line":"such as manipulating directly the storage backend and the database metadata but"},{"line_number":52,"context_line":"this is a laborious and error-prone process that should definitely be avoided."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_17c66269","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":15},"updated":"2019-08-21 09:01:17.000000000","message":"Sounds a bit french","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":29503,"name":"Justin Ferrieu","email":"jferrieu@objectif-libre.com","username":"jferrieu"},"change_message_id":"0675dc88d1782709133e45374256e813c17f8d0b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"to be able to load the storage driver modules plus they would need the storage backend"},{"line_number":48,"context_line":"credentials exposed to them."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"Else CloudKitty could be provisioned by using more hackish ways"},{"line_number":51,"context_line":"such as manipulating directly the storage backend and the database metadata but"},{"line_number":52,"context_line":"this is a laborious and error-prone process that should definitely be avoided."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_897d566e","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":15},"in_reply_to":"7faddb67_17c66269","updated":"2019-08-21 09:50:46.000000000","message":"Done","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"4e28c6194e8978d6163479f6017f32edc5af6faf","unresolved":false,"context_lines":[{"line_number":60,"context_line":"REST API impact"},{"line_number":61,"context_line":"---------------"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"This will add and endpoint on ``/v2/dataframe`` with support for the ``POST``"},{"line_number":64,"context_line":"HTTP method."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"The endpoint will support the following body parameters:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_179bc272","line":63,"range":{"start_line":63,"start_character":14,"end_line":63,"end_character":17},"updated":"2019-08-21 09:01:17.000000000","message":"an","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":29503,"name":"Justin Ferrieu","email":"jferrieu@objectif-libre.com","username":"jferrieu"},"change_message_id":"0675dc88d1782709133e45374256e813c17f8d0b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"REST API impact"},{"line_number":61,"context_line":"---------------"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"This will add and endpoint on ``/v2/dataframe`` with support for the ``POST``"},{"line_number":64,"context_line":"HTTP method."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"The endpoint will support the following body parameters:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_2998e2bd","line":63,"range":{"start_line":63,"start_character":14,"end_line":63,"end_character":17},"in_reply_to":"7faddb67_179bc272","updated":"2019-08-21 09:50:46.000000000","message":"Done","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"4e28c6194e8978d6163479f6017f32edc5af6faf","unresolved":false,"context_lines":[{"line_number":115,"context_line":"The user will be able to consult DataFrames through a ``GET /v2/dataframe``"},{"line_number":116,"context_line":"endpoint that will be available in the future."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Expected HTTP error response code for a ``POST`` request on this endpoint are:"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* ``400 Bad Request``: Malformed request."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_f78dc630","line":118,"range":{"start_line":118,"start_character":29,"end_line":118,"end_character":33},"updated":"2019-08-21 09:01:17.000000000","message":"codes","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":29503,"name":"Justin Ferrieu","email":"jferrieu@objectif-libre.com","username":"jferrieu"},"change_message_id":"0675dc88d1782709133e45374256e813c17f8d0b","unresolved":false,"context_lines":[{"line_number":115,"context_line":"The user will be able to consult DataFrames through a ``GET /v2/dataframe``"},{"line_number":116,"context_line":"endpoint that will be available in the future."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Expected HTTP error response code for a ``POST`` request on this endpoint are:"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* ``400 Bad Request``: Malformed request."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_4993dea3","line":118,"range":{"start_line":118,"start_character":29,"end_line":118,"end_character":33},"in_reply_to":"7faddb67_f78dc630","updated":"2019-08-21 09:50:46.000000000","message":"Done","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"4e28c6194e8978d6163479f6017f32edc5af6faf","unresolved":false,"context_lines":[{"line_number":159,"context_line":"Developer impact"},{"line_number":160,"context_line":"----------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Importing DataFrame objects will allow pushing fixtures into"},{"line_number":163,"context_line":"CloudKitty storage. This will be handy to write integration tests"},{"line_number":164,"context_line":"thereafter."},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_376fde60","line":162,"range":{"start_line":162,"start_character":39,"end_line":162,"end_character":46},"updated":"2019-08-21 09:01:17.000000000","message":"\"to push\" sounds better to me, but I don\u0027t know if there\u0027s a rule here","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":29503,"name":"Justin Ferrieu","email":"jferrieu@objectif-libre.com","username":"jferrieu"},"change_message_id":"0675dc88d1782709133e45374256e813c17f8d0b","unresolved":false,"context_lines":[{"line_number":159,"context_line":"Developer impact"},{"line_number":160,"context_line":"----------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Importing DataFrame objects will allow pushing fixtures into"},{"line_number":163,"context_line":"CloudKitty storage. This will be handy to write integration tests"},{"line_number":164,"context_line":"thereafter."},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_0989666d","line":162,"range":{"start_line":162,"start_character":39,"end_line":162,"end_character":46},"in_reply_to":"7faddb67_376fde60","updated":"2019-08-21 09:50:46.000000000","message":"Done","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"4e28c6194e8978d6163479f6017f32edc5af6faf","unresolved":false,"context_lines":[{"line_number":160,"context_line":"----------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Importing DataFrame objects will allow pushing fixtures into"},{"line_number":163,"context_line":"CloudKitty storage. This will be handy to write integration tests"},{"line_number":164,"context_line":"thereafter."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_b798ae68","line":163,"range":{"start_line":163,"start_character":0,"end_line":163,"end_character":18},"updated":"2019-08-21 09:01:17.000000000","message":"\"ck\u0027s\" or \"the ck storage\"","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"4e28c6194e8978d6163479f6017f32edc5af6faf","unresolved":false,"context_lines":[{"line_number":160,"context_line":"----------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Importing DataFrame objects will allow pushing fixtures into"},{"line_number":163,"context_line":"CloudKitty storage. This will be handy to write integration tests"},{"line_number":164,"context_line":"thereafter."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_97aed27e","line":163,"range":{"start_line":163,"start_character":30,"end_line":163,"end_character":65},"updated":"2019-08-21 09:01:17.000000000","message":"Could you please also specify that it will allow to add scenarios to the tempest plugin ?","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":29503,"name":"Justin Ferrieu","email":"jferrieu@objectif-libre.com","username":"jferrieu"},"change_message_id":"0675dc88d1782709133e45374256e813c17f8d0b","unresolved":false,"context_lines":[{"line_number":160,"context_line":"----------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Importing DataFrame objects will allow pushing fixtures into"},{"line_number":163,"context_line":"CloudKitty storage. This will be handy to write integration tests"},{"line_number":164,"context_line":"thereafter."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_e9e2ca2f","line":163,"range":{"start_line":163,"start_character":30,"end_line":163,"end_character":65},"in_reply_to":"7faddb67_97aed27e","updated":"2019-08-21 09:50:46.000000000","message":"Done","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":29503,"name":"Justin Ferrieu","email":"jferrieu@objectif-libre.com","username":"jferrieu"},"change_message_id":"0675dc88d1782709133e45374256e813c17f8d0b","unresolved":false,"context_lines":[{"line_number":160,"context_line":"----------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Importing DataFrame objects will allow pushing fixtures into"},{"line_number":163,"context_line":"CloudKitty storage. This will be handy to write integration tests"},{"line_number":164,"context_line":"thereafter."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_09de4669","line":163,"range":{"start_line":163,"start_character":0,"end_line":163,"end_character":18},"in_reply_to":"7faddb67_b798ae68","updated":"2019-08-21 09:50:46.000000000","message":"Done","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"4e28c6194e8978d6163479f6017f32edc5af6faf","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Importing DataFrame objects will allow pushing fixtures into"},{"line_number":163,"context_line":"CloudKitty storage. This will be handy to write integration tests"},{"line_number":164,"context_line":"thereafter."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Implementation"},{"line_number":167,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_779eb654","line":164,"range":{"start_line":164,"start_character":0,"end_line":164,"end_character":11},"updated":"2019-08-21 09:01:17.000000000","message":"formal, could you please use \"afterwards\" instead ?","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"},{"author":{"_account_id":29503,"name":"Justin Ferrieu","email":"jferrieu@objectif-libre.com","username":"jferrieu"},"change_message_id":"0675dc88d1782709133e45374256e813c17f8d0b","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Importing DataFrame objects will allow pushing fixtures into"},{"line_number":163,"context_line":"CloudKitty storage. This will be handy to write integration tests"},{"line_number":164,"context_line":"thereafter."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Implementation"},{"line_number":167,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_c9d58e44","line":164,"range":{"start_line":164,"start_character":0,"end_line":164,"end_character":11},"in_reply_to":"7faddb67_779eb654","updated":"2019-08-21 09:50:46.000000000","message":"Done","commit_id":"212813df41d139702cebed16faf2cb20f6d68080"}]}
