)]}'
{"etc/freezer/freezer-paste.ini":[{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"00b9aa25cb2b628a9d0660ce83f16a0f901170b9","unresolved":false,"context_lines":[{"line_number":2,"context_line":"paste.app_factory \u003d freezer_api.api.versions:api_versions"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"[app:appv1]"},{"line_number":5,"context_line":"paste.app_factory \u003d freezer_api.service:freezer_appv1_factory"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[app:appv2]"},{"line_number":8,"context_line":"paste.app_factory \u003d freezer_api.service:freezer_appv2_factory"}],"source_content_type":"text/x-properties","patch_set":10,"id":"bff0334d_fea86820","line":5,"updated":"2017-04-11 10:49:03.000000000","message":"Just an idea - what if we use app_v1 instead of appv1 to make it more readable?","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":13940,"name":"Saad Zaher","email":"eng.szaher@gmail.com","username":"szaher"},"change_message_id":"d5081de7af496f138262db86f35058cd7f61bb82","unresolved":false,"context_lines":[{"line_number":2,"context_line":"paste.app_factory \u003d freezer_api.api.versions:api_versions"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"[app:appv1]"},{"line_number":5,"context_line":"paste.app_factory \u003d freezer_api.service:freezer_appv1_factory"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[app:appv2]"},{"line_number":8,"context_line":"paste.app_factory \u003d freezer_api.service:freezer_appv2_factory"}],"source_content_type":"text/x-properties","patch_set":10,"id":"bff0334d_a8af3828","line":5,"in_reply_to":"bff0334d_52797991","updated":"2017-04-11 17:56:02.000000000","message":"Yes!. We will rename in another patch with some additional changes.","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"f77fbc9a09551d12a5bd36f37fb3dee905c9cfe8","unresolved":false,"context_lines":[{"line_number":2,"context_line":"paste.app_factory \u003d freezer_api.api.versions:api_versions"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"[app:appv1]"},{"line_number":5,"context_line":"paste.app_factory \u003d freezer_api.service:freezer_appv1_factory"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[app:appv2]"},{"line_number":8,"context_line":"paste.app_factory \u003d freezer_api.service:freezer_appv2_factory"}],"source_content_type":"text/x-properties","patch_set":10,"id":"bff0334d_52797991","line":5,"in_reply_to":"bff0334d_910b8628","updated":"2017-04-11 16:34:44.000000000","message":"So, does it mean that if you want you can do such renaming later? Did you mean that?","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"76bd9104b30b6337f35ca3835bd9be53b4179648","unresolved":false,"context_lines":[{"line_number":2,"context_line":"paste.app_factory \u003d freezer_api.api.versions:api_versions"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"[app:appv1]"},{"line_number":5,"context_line":"paste.app_factory \u003d freezer_api.service:freezer_appv1_factory"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[app:appv2]"},{"line_number":8,"context_line":"paste.app_factory \u003d freezer_api.service:freezer_appv2_factory"}],"source_content_type":"text/x-properties","patch_set":10,"id":"bff0334d_3e3c652d","line":5,"in_reply_to":"bff0334d_a8af3828","updated":"2017-04-12 11:10:56.000000000","message":"ok","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":13940,"name":"Saad Zaher","email":"eng.szaher@gmail.com","username":"szaher"},"change_message_id":"937c12221cfa47bb2b58a0e77b2e60213017cfd4","unresolved":false,"context_lines":[{"line_number":2,"context_line":"paste.app_factory \u003d freezer_api.api.versions:api_versions"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"[app:appv1]"},{"line_number":5,"context_line":"paste.app_factory \u003d freezer_api.service:freezer_appv1_factory"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[app:appv2]"},{"line_number":8,"context_line":"paste.app_factory \u003d freezer_api.service:freezer_appv2_factory"}],"source_content_type":"text/x-properties","patch_set":10,"id":"bff0334d_910b8628","line":5,"in_reply_to":"bff0334d_fea86820","updated":"2017-04-11 14:31:04.000000000","message":"I think it would be good if we do some refactoring for the paste.ini, we need to provide a way to lunch the service from the egg, so I think it would be relevant to put it their","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"00b9aa25cb2b628a9d0660ce83f16a0f901170b9","unresolved":false,"context_lines":[{"line_number":36,"context_line":"[composite:backupapp]"},{"line_number":37,"context_line":"paste.composite_factory \u003d freezer_api.service:root_app_factory"},{"line_number":38,"context_line":"/: api_versions"},{"line_number":39,"context_line":"/v1: appv1"},{"line_number":40,"context_line":"/v2: appv2"}],"source_content_type":"text/x-properties","patch_set":10,"id":"bff0334d_5ebab46d","line":39,"updated":"2017-04-11 10:49:03.000000000","message":"Just an idea - what if we use app_v1 instead of appv1 to make it more readable?","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":13940,"name":"Saad Zaher","email":"eng.szaher@gmail.com","username":"szaher"},"change_message_id":"937c12221cfa47bb2b58a0e77b2e60213017cfd4","unresolved":false,"context_lines":[{"line_number":36,"context_line":"[composite:backupapp]"},{"line_number":37,"context_line":"paste.composite_factory \u003d freezer_api.service:root_app_factory"},{"line_number":38,"context_line":"/: api_versions"},{"line_number":39,"context_line":"/v1: appv1"},{"line_number":40,"context_line":"/v2: appv2"}],"source_content_type":"text/x-properties","patch_set":10,"id":"bff0334d_dc0a451e","line":39,"in_reply_to":"bff0334d_5ebab46d","updated":"2017-04-11 14:31:04.000000000","message":"check the previous comment","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"}],"freezer_api/api/v2/__init__.py":[{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"00b9aa25cb2b628a9d0660ce83f16a0f901170b9","unresolved":false,"context_lines":[{"line_number":36,"context_line":"}"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def public_endpoints(storage_driver):"},{"line_number":40,"context_line":"    return ["},{"line_number":41,"context_line":"        (\u0027/\u0027,"},{"line_number":42,"context_line":"         homedoc.Resource()),"}],"source_content_type":"text/x-python","patch_set":10,"id":"bff0334d_39994ac3","line":39,"updated":"2017-04-11 10:49:03.000000000","message":"Are we going to use the same terms for oslo.db storage? As you remember database entities in oslo.db specification were changed in comparison with elasticsearch database entities. For example, Backup now called ActionReport.\nI mean, now we\u0027re going to unify v2 public endpoints for both storages and it would be good to think about naming at this stage of development","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":13940,"name":"Saad Zaher","email":"eng.szaher@gmail.com","username":"szaher"},"change_message_id":"937c12221cfa47bb2b58a0e77b2e60213017cfd4","unresolved":false,"context_lines":[{"line_number":36,"context_line":"}"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def public_endpoints(storage_driver):"},{"line_number":40,"context_line":"    return ["},{"line_number":41,"context_line":"        (\u0027/\u0027,"},{"line_number":42,"context_line":"         homedoc.Resource()),"}],"source_content_type":"text/x-python","patch_set":10,"id":"bff0334d_fc5509fb","line":39,"in_reply_to":"bff0334d_39994ac3","updated":"2017-04-11 14:31:04.000000000","message":"I\u0027m not sure about making the api endpoint same like oslo.db. It think url endpoint needs to be short and clear and It has nothing to do with oslo.db or elasticsearch. so I think the endpoints needs to be the same anyway, it easier to understand and easier to deal with.","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"}],"freezer_api/cmd/api.py":[{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"00b9aa25cb2b628a9d0660ce83f16a0f901170b9","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    if not db:"},{"line_number":52,"context_line":"        db \u003d driver.get_db("},{"line_number":53,"context_line":"            driver\u003d\u0027freezer_api.storage.elastic.ElasticSearchEngine\u0027"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # setup freezer policy"}],"source_content_type":"text/x-python","patch_set":10,"id":"bff0334d_99be16b2","line":53,"updated":"2017-04-11 10:49:03.000000000","message":"Let\u0027s use some config parameter here, which will contain name of the used storage(not path to the driver) and judging by this name choose appropriate driver.\nThe defalt parameter for this config option will be elastic search. What do you think?","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"76bd9104b30b6337f35ca3835bd9be53b4179648","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    if not db:"},{"line_number":52,"context_line":"        db \u003d driver.get_db("},{"line_number":53,"context_line":"            driver\u003d\u0027freezer_api.storage.elastic.ElasticSearchEngine\u0027"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # setup freezer policy"}],"source_content_type":"text/x-python","patch_set":10,"id":"bff0334d_79eb2777","line":53,"in_reply_to":"bff0334d_083aa4e5","updated":"2017-04-12 11:10:56.000000000","message":"It\u0027s more about golden middle between good practices and simplicity. As for me, the less hardcoding things the better. It makes reading code way easier if you know that all the hardcoded things resides in the block of constants in the upper part of file with code. \nAnyway, you\u0027re the one who decide where is the golden middle here, so if it\u0027s fine for you, it\u0027s fine for me also.","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":13940,"name":"Saad Zaher","email":"eng.szaher@gmail.com","username":"szaher"},"change_message_id":"d5081de7af496f138262db86f35058cd7f61bb82","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    if not db:"},{"line_number":52,"context_line":"        db \u003d driver.get_db("},{"line_number":53,"context_line":"            driver\u003d\u0027freezer_api.storage.elastic.ElasticSearchEngine\u0027"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # setup freezer policy"}],"source_content_type":"text/x-python","patch_set":10,"id":"bff0334d_083aa4e5","line":53,"in_reply_to":"bff0334d_6fedbab5","updated":"2017-04-11 17:56:02.000000000","message":"I think, it\u0027s still the same the dev has to add entry or something somewhere which importutils can work without it :)\nI can\u0027t see any benefit from using elasticsearchv1 instead of path to es v1. Also this can be added to the setup.cfg as a driver option.","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":13940,"name":"Saad Zaher","email":"eng.szaher@gmail.com","username":"szaher"},"change_message_id":"4e3e3e8fa79d44f5734607a0ca0992a448d232fe","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    if not db:"},{"line_number":52,"context_line":"        db \u003d driver.get_db("},{"line_number":53,"context_line":"            driver\u003d\u0027freezer_api.storage.elastic.ElasticSearchEngine\u0027"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # setup freezer policy"}],"source_content_type":"text/x-python","patch_set":10,"id":"bff0334d_55f49ff0","line":53,"in_reply_to":"bff0334d_79eb2777","updated":"2017-04-12 13:49:24.000000000","message":"The hard coded way might be confusing for people who are using freezer as they need to provide 2 values (driver, backend_name) which might be confusing as the driver might be elasticv1 and the backend_name elasticv1 (which should be a section that contains the credentials related to this driver).\n\nI\u0027m sharing my opinion and I\u0027m open to do whatever we agree on :).","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":13940,"name":"Saad Zaher","email":"eng.szaher@gmail.com","username":"szaher"},"change_message_id":"937c12221cfa47bb2b58a0e77b2e60213017cfd4","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    if not db:"},{"line_number":52,"context_line":"        db \u003d driver.get_db("},{"line_number":53,"context_line":"            driver\u003d\u0027freezer_api.storage.elastic.ElasticSearchEngine\u0027"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # setup freezer policy"}],"source_content_type":"text/x-python","patch_set":10,"id":"bff0334d_fca9898f","line":53,"in_reply_to":"bff0334d_99be16b2","updated":"2017-04-11 14:31:04.000000000","message":"This is here, just for loading a specific driver even if the user used elasticsearch v2 driver we still need to make api v1 work and things work a bit different in both drivers.\nes (elastic search ) v1 functions differ from es v2 as the v2 driver uses project_id mainly not user_id as in v1. \n\nin the [storage] section in the configuration file, you define a driver freezer_api.storage.elastic.ElasticSearchEngine and another section name like [elastic] so the chosen driver will load the specific section and load it\u0027s configuration.\n\n\nWhy did I use freezer_api.storage.elastic.ElasticSearchEngine and not elasticsearch because it\u0027s away cleaner to do get_db this way\n\ndef get_db():\n    \"\"\"Automatically loads the database driver to be used.\"\"\"\n    storage \u003d CONF.get(\u0027storage\u0027)\n    driver_instance \u003d importutils.import_object(\n        storage[\u0027driver\u0027],\n        backend\u003dstorage[\u0027backend\u0027]\n    )\n    return driver_instance\n\nrather than that way:\n\ndef get_db():\n    \"\"\"Automatically loads the database driver to be used.\"\"\"\n    storage \u003d CONF.get(\u0027storage\u0027)\n    if storage[\u0027driver\u0027] \u003d\u003d \u0027elasticsearch\u0027:\n        import elastic.py\n        db \u003d elasticv1(****)\n    elif storage[\u0027driver\u0027] \u003d\u003d \u0027elasticsearch2\u0027:\n        import elastic2.py\n        db \u003d elasticv2(****)\n    elif storage[\u0027driver\u0027] \u003d\u003d \u0027oslo_db\u0027: \n        import sqldb.py\n        db \u003d sqldb(****)\n    else: \n        raise Exception(\"404\")\n    )\n    return db\n\nWhat do you think ? which one is easier and which one uses less code and if we want to add more drivers even we can ?","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"f77fbc9a09551d12a5bd36f37fb3dee905c9cfe8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    if not db:"},{"line_number":52,"context_line":"        db \u003d driver.get_db("},{"line_number":53,"context_line":"            driver\u003d\u0027freezer_api.storage.elastic.ElasticSearchEngine\u0027"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # setup freezer policy"}],"source_content_type":"text/x-python","patch_set":10,"id":"bff0334d_6fedbab5","line":53,"in_reply_to":"bff0334d_fca9898f","updated":"2017-04-11 16:34:44.000000000","message":"What about this one?\n\ndriver_object \u003d {\n\u0027oslo_db\u0027: \u0027path_to_oslo_driver\u0027,\n\u0027elasticv1\u0027: \u0027path_to_elastic_driver_v1\u0027,\n\u0027elasticv2\u0027: \u0027path_to_elastic_driver_v2\u0027\n}\n\ndef get_db():\n    \"\"\"Automatically loads the database driver to be used.\"\"\"\n    storage \u003d CONF.get(\u0027storage\u0027)\n    driver_instance \u003d importutils.import_object(\n        driver_object[storage[\u0027driver\u0027]],\n        backend\u003dstorage[\u0027backend\u0027]\n    )\n    return driver_instance\n\nwhere storage[\u0027driver\u0027] is either oslo_db or elasticv1/elasticv2","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"}],"releasenotes/notes/api-v2-a7802af527489aba.yaml":[{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"00b9aa25cb2b628a9d0660ce83f16a0f901170b9","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"features:"},{"line_number":14,"context_line":"  - |"},{"line_number":15,"context_line":"    Added Freezer-api v2 which changes the structure of freezer-api urls to"},{"line_number":16,"context_line":"    accept the newly added parameter, project_id."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    Fully support role based multi-tenancy with api v2."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"bff0334d_991a96c9","line":15,"updated":"2017-04-11 10:49:03.000000000","message":"It would be great to add couple words about having a door for supporting both storages. There is some gentle hint below, but some people might miss it.","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":6508,"name":"Dmitry Stepanenko","email":"dstepanenko@mirantis.com","username":"dstepanenko"},"change_message_id":"f77fbc9a09551d12a5bd36f37fb3dee905c9cfe8","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"features:"},{"line_number":14,"context_line":"  - |"},{"line_number":15,"context_line":"    Added Freezer-api v2 which changes the structure of freezer-api urls to"},{"line_number":16,"context_line":"    accept the newly added parameter, project_id."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    Fully support role based multi-tenancy with api v2."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"bff0334d_7216bd4b","line":15,"in_reply_to":"bff0334d_3c093195","updated":"2017-04-11 16:34:44.000000000","message":"Hmmm. I think we can either say or not that we support both of them and then in case es will be deprecated we say we\u0027re not supporting es any more. So, both options look good for me","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":13940,"name":"Saad Zaher","email":"eng.szaher@gmail.com","username":"szaher"},"change_message_id":"d5081de7af496f138262db86f35058cd7f61bb82","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"features:"},{"line_number":14,"context_line":"  - |"},{"line_number":15,"context_line":"    Added Freezer-api v2 which changes the structure of freezer-api urls to"},{"line_number":16,"context_line":"    accept the newly added parameter, project_id."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    Fully support role based multi-tenancy with api v2."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"bff0334d_889114f4","line":15,"in_reply_to":"bff0334d_7216bd4b","updated":"2017-04-11 17:56:02.000000000","message":"I think the es support or deprecation should be in oslo.db patch not API v2 or multi-tenancy patch. For api v2 patch we didn\u0027t deprecate api v1 so if we\u0027re going to deprecate it, it will be in a separate patch with some other configurations :)","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"},{"author":{"_account_id":13940,"name":"Saad Zaher","email":"eng.szaher@gmail.com","username":"szaher"},"change_message_id":"937c12221cfa47bb2b58a0e77b2e60213017cfd4","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"features:"},{"line_number":14,"context_line":"  - |"},{"line_number":15,"context_line":"    Added Freezer-api v2 which changes the structure of freezer-api urls to"},{"line_number":16,"context_line":"    accept the newly added parameter, project_id."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    Fully support role based multi-tenancy with api v2."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"bff0334d_3c093195","line":15,"in_reply_to":"bff0334d_991a96c9","updated":"2017-04-11 14:31:04.000000000","message":"I think I didn\u0027t mention anything related to deprecating elastic search at all, so why do we need to add a note about supporting both ?\n\nI can\u0027t see why do we need to mention this :) but if you still want it I definitely can add a line or two about it.","commit_id":"49e934d58955310be372ad9e69590ed0c8cd2660"}]}
