)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dan Offek \u003cdan.offek@nokia.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-06-25 14:09:29 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"persistent DB support using sqlalchemy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I77338b9183830847455d7e4a091130cd3c9bb6a1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f201791_d35ee674","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":38},"updated":"2017-06-26 06:55:02.000000000","message":"Please add a blueprint in launchpad for this, and then add the following line to the commit message:\n\nImplements: blueprint db-support","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"}],"specs/pike/persistent-db-support.rst":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"persistend-db-support"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/vitrage/+spec/persistent-db-support"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_f30b227a","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":21},"updated":"2017-06-26 06:55:02.000000000","message":"I think you can remove the word \"persistent\", it\u0027s quite obvious.\nWe used to talk about \"persistent *graph* DB\" vs. \"in-memory graph DB\", but that\u0027s irrelevant to this blueprint.\n\nAnd in any case - the title should contain spaces (\"DB Support\")","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":8,"context_line":"persistend-db-support"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/vitrage/+spec/persistent-db-support"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"There is a need in Vitrage for persistent DB. The main reasons are history and"},{"line_number":14,"context_line":"high availability, but there are additional uses for persistent DB, such as"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_d3d386d4","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":68},"updated":"2017-06-26 06:55:02.000000000","message":"There is no such blueprint","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Problem description"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Vitrage should support persistent db management, using sqlalchemy."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_13f7be61","line":24,"range":{"start_line":24,"start_character":47,"end_line":24,"end_character":65},"updated":"2017-06-26 06:55:02.000000000","message":"This is part of the proposed change.","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"a913395ef7553a3cc8611637241db0a95f9601ab","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"|"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Basic configuration in vitrage.conf :"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# The SQLAlchemy connection string to use to connect to the database."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_c75745ca","line":40,"range":{"start_line":40,"start_character":35,"end_line":40,"end_character":37},"updated":"2017-06-26 01:32:55.000000000","message":"Shall we use block quote for better formatting? See http://www.sphinx-doc.org/en/stable/rest.html#source-code","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":166,"context_line":"#db_max_retries \u003d 20"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Step 1:"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Build a basic sqlalchemy implementation for connecting to the DB,"},{"line_number":172,"context_line":"Create a Vitrage schema in the db and required tables (from Vitrage history"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_b38a4abc","line":169,"range":{"start_line":169,"start_character":0,"end_line":169,"end_character":7},"updated":"2017-06-26 06:55:02.000000000","message":"Make it a header","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":169,"context_line":"Step 1:"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Build a basic sqlalchemy implementation for connecting to the DB,"},{"line_number":172,"context_line":"Create a Vitrage schema in the db and required tables (from Vitrage history"},{"line_number":173,"context_line":"spec and Vitrage httppost registration spec)."},{"line_number":174,"context_line":"The schema and tables should be created dinamically from Vitrage, each time"},{"line_number":175,"context_line":"Vitrage loads. Vitrage will test existence of the database tables and if they"},{"line_number":176,"context_line":"do not exist, create them, using a \"model\" data representation."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_9323cebd","line":173,"range":{"start_line":172,"start_character":34,"end_line":173,"end_character":45},"updated":"2017-06-26 06:55:02.000000000","message":"Are you going to create all of the tables as part of this blueprint? I think every one should create (and test) only the table that is needed for his own blueprint","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":171,"context_line":"Build a basic sqlalchemy implementation for connecting to the DB,"},{"line_number":172,"context_line":"Create a Vitrage schema in the db and required tables (from Vitrage history"},{"line_number":173,"context_line":"spec and Vitrage httppost registration spec)."},{"line_number":174,"context_line":"The schema and tables should be created dinamically from Vitrage, each time"},{"line_number":175,"context_line":"Vitrage loads. Vitrage will test existence of the database tables and if they"},{"line_number":176,"context_line":"do not exist, create them, using a \"model\" data representation."},{"line_number":177,"context_line":"Testing validity of existing tables or even fixing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_33651a1f","line":174,"range":{"start_line":174,"start_character":40,"end_line":174,"end_character":51},"updated":"2017-06-26 06:55:02.000000000","message":"dynamically","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":175,"context_line":"Vitrage loads. Vitrage will test existence of the database tables and if they"},{"line_number":176,"context_line":"do not exist, create them, using a \"model\" data representation."},{"line_number":177,"context_line":"Testing validity of existing tables or even fixing"},{"line_number":178,"context_line":"them is not required in the first stage."},{"line_number":179,"context_line":"Cinder Data Model example :"},{"line_number":180,"context_line":"https://github.com/openstack/cinder/blob/master/cinder/db/sqlalchemy/models.py"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_b3612a08","line":178,"range":{"start_line":178,"start_character":0,"end_line":178,"end_character":40},"updated":"2017-06-26 06:55:02.000000000","message":"Please continue the previous line","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Create DAO that will perform hard coded CRUD on the tables."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Step 2:"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"- Upgrade / versioning with alembic."},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_5329b698","line":184,"range":{"start_line":184,"start_character":0,"end_line":184,"end_character":7},"updated":"2017-06-26 06:55:02.000000000","message":"Should be a header","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Step 2:"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"- Upgrade / versioning with alembic."},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"- Generic sql support."},{"line_number":189,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_d316e655","line":186,"range":{"start_line":186,"start_character":2,"end_line":186,"end_character":9},"updated":"2017-06-26 06:55:02.000000000","message":"Only in Queens - emphasize that it\u0027s a future step","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"a913395ef7553a3cc8611637241db0a95f9601ab","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"- Generic sql support."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"- Pagination for big queries, such as all of the entity graph."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_a7ad699c","line":190,"updated":"2017-06-26 01:32:55.000000000","message":"How will entity graph be stored is not clear to me. If it is an exported JSON, then it is likely to one record which is big, but not a long list of many records.","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"- Generic sql support."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"- Pagination for big queries, such as all of the entity graph."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_963a9cc9","line":190,"in_reply_to":"5f201791_a7ad699c","updated":"2017-06-26 06:55:02.000000000","message":"I agree. We did not discuss the details yet, but I understood that NetworkX supports export to MariaDB, probably as a blob and not as a list.\nPagination might be needed to get the list of events that happened since a certain snapshot, but hopefully there won\u0027t be too many (if we store snapshots often enough)","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"6c25d5114902c55c4d94fc0d75d6e1b170c70407","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"- Generic sql support."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"- Pagination for big queries, such as all of the entity graph."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_078bf46d","line":190,"in_reply_to":"5f201791_a7ad699c","updated":"2017-06-26 08:51:31.000000000","message":"The entity graph will be stored once in a while. NetworkX has an option to store / import the graph to / from the DB.\nIt\u0027s not that important, since the graph creation / update is going to be based on events. This rst won\u0027t depict detailed tables for every implementation (EX : graph, events, rest registration, CRUD templates.....). These topics should have their own rst, and detail the tables.\nIf it\u0027s stored in BLOB (probably), in this case pagination isn\u0027t relevant. Pagination should still be supported, for example, for the large events table.","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":198,"context_line":"Data model impact"},{"line_number":199,"context_line":"-----------------"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"This whole design is one big Data Model impact."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"REST API impact"},{"line_number":204,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_f6543000","line":201,"range":{"start_line":201,"start_character":0,"end_line":201,"end_character":47},"updated":"2017-06-26 06:55:02.000000000","message":":-)","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":246,"context_line":"-----------"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"Primary assignees:"},{"line_number":249,"context_line":"Dan Offek."},{"line_number":250,"context_line":"Alexey Weyl."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Work Items"},{"line_number":253,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_369d08bc","line":250,"range":{"start_line":249,"start_character":0,"end_line":250,"end_character":12},"updated":"2017-06-26 06:55:02.000000000","message":"Please write your gerrit ids instead","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"a913395ef7553a3cc8611637241db0a95f9601ab","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"- Create a basic SQLAlchemy implementation to connect to the DB."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"- Create Data Model for events and other tables."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"- Create simple CRUD methods for event storage."},{"line_number":260,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_e790014d","line":257,"range":{"start_line":257,"start_character":35,"end_line":257,"end_character":40},"updated":"2017-06-26 01:32:55.000000000","message":"Which other tables are planned in the first stage? Templates?\n\nBetter to be explicit so we are clear about the scope.","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19194,"name":"Dan Offek","email":"dany.offek@gmail.com","username":"danoffek"},"change_message_id":"6c25d5114902c55c4d94fc0d75d6e1b170c70407","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"- Create a basic SQLAlchemy implementation to connect to the DB."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"- Create Data Model for events and other tables."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"- Create simple CRUD methods for event storage."},{"line_number":260,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_8796e492","line":257,"range":{"start_line":257,"start_character":35,"end_line":257,"end_character":40},"in_reply_to":"5f201791_e790014d","updated":"2017-06-26 08:51:31.000000000","message":"This rst won\u0027t depict detailed tables for every implementation (EX : graph, events, rest registration, CRUD templates.....). These topics should have their own rst, and detail the tables.","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Tempest tests:"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"- Create alarms / resources events, and poll the system afterwards. In case the data"},{"line_number":295,"context_line":"  wasn\u0027t stored in the events table properly, errors should be issued."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Documentation Impact"},{"line_number":298,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_b69918c5","line":295,"range":{"start_line":294,"start_character":0,"end_line":295,"end_character":70},"updated":"2017-06-26 06:55:02.000000000","message":"This should be part of a blueprint that handles the history, since storing the events is controlled by the persister - which is not in the scope of this blueprint","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9db70844ba6d462669b46c0e630e2ef6dcd834b3","unresolved":false,"context_lines":[{"line_number":294,"context_line":"- Create alarms / resources events, and poll the system afterwards. In case the data"},{"line_number":295,"context_line":"  wasn\u0027t stored in the events table properly, errors should be issued."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"Documentation Impact"},{"line_number":298,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f201791_568c047e","line":298,"range":{"start_line":297,"start_character":0,"end_line":298,"end_character":20},"updated":"2017-06-26 06:55:02.000000000","message":"The DB configuration should be documented in an .rst file, and there should be a link to it from https://github.com/openstack/vitrage/blob/master/doc/source/installation-and-configuration.rst","commit_id":"84c0340a8e1b39a1034d97fda605686373a940c2"}]}
