)]}'
{"doc/source/specs/cassandra_driver.rst":[{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"9ea238bc8ab2dbea153e0faf18323fa1e5058a54","unresolved":false,"context_lines":[{"line_number":42,"context_line":"data cluster is fully implemented without support of external applications."},{"line_number":43,"context_line":"It also provides an operation portal for daily maintainance."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Currenly, we implements control plane of clustering for Redis inside dragonflow,"},{"line_number":46,"context_line":"which is actually beyond the scope of dragonflow project. The reason why we"},{"line_number":47,"context_line":"implement db-api layer is that we do not want to maintain the details of data"},{"line_number":48,"context_line":"backend as it is not the responsibility of dragonflow project."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_7eb2a9e6","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":8},"updated":"2016-10-20 08:38:04.000000000","message":"Currently","commit_id":"581457f71c65191d38adb20790ac92995b03ca72"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"9ea238bc8ab2dbea153e0faf18323fa1e5058a54","unresolved":false,"context_lines":[{"line_number":42,"context_line":"data cluster is fully implemented without support of external applications."},{"line_number":43,"context_line":"It also provides an operation portal for daily maintainance."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Currenly, we implements control plane of clustering for Redis inside dragonflow,"},{"line_number":46,"context_line":"which is actually beyond the scope of dragonflow project. The reason why we"},{"line_number":47,"context_line":"implement db-api layer is that we do not want to maintain the details of data"},{"line_number":48,"context_line":"backend as it is not the responsibility of dragonflow project."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_bec8c156","line":45,"range":{"start_line":45,"start_character":13,"end_line":45,"end_character":23},"updated":"2016-10-20 08:38:04.000000000","message":"implement","commit_id":"581457f71c65191d38adb20790ac92995b03ca72"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"9ea238bc8ab2dbea153e0faf18323fa1e5058a54","unresolved":false,"context_lines":[{"line_number":65,"context_line":"#. The data written to Cassandra node is going to append-only CommitLog first and"},{"line_number":66,"context_line":"fsync to disk next. You also can adjust the policy of fsync. It guarantees the durability."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Proposed Change"},{"line_number":69,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"#. Implement devstack script for Cassandra all-in-one node."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_be7521cc","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":15},"updated":"2016-10-20 08:38:04.000000000","message":"Do we need to add description about Cassandra HA? Or is it similar with Redis?","commit_id":"581457f71c65191d38adb20790ac92995b03ca72"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"3494927e991a67a69094e73b28d50151c8232c95","unresolved":false,"context_lines":[{"line_number":65,"context_line":"#. The data written to Cassandra node is going to append-only CommitLog first and"},{"line_number":66,"context_line":"fsync to disk next. You also can adjust the policy of fsync. It guarantees the durability."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Proposed Change"},{"line_number":69,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"#. Implement devstack script for Cassandra all-in-one node."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_d9690f8e","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":15},"in_reply_to":"fa6399be_be7521cc","updated":"2016-10-20 08:49:16.000000000","message":"It is not similar to Redis. You can set up replication factor and distributed consistency algorithm to achieve a high available cluster. For dragonflow, you just need to specify a set of nodes ip, because each node is IDENTICAL.","commit_id":"581457f71c65191d38adb20790ac92995b03ca72"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"cf61e1f1fe9e7b8c280d5a5ef8d4bd407f22f959","unresolved":false,"context_lines":[{"line_number":42,"context_line":"data cluster is fully implemented without support of external applications."},{"line_number":43,"context_line":"It also provides an operation portal for daily maintainance."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Currently, we implement control plane of clustering for Redis inside dragonflow,"},{"line_number":46,"context_line":"which is actually beyond the scope of dragonflow project. The reason why we"},{"line_number":47,"context_line":"implement db-api layer is that we do not want to maintain the details of data"},{"line_number":48,"context_line":"backend as it is not the responsibility of dragonflow project."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_3bc83822","line":45,"range":{"start_line":45,"start_character":69,"end_line":45,"end_character":79},"updated":"2016-10-20 12:56:11.000000000","message":"You really ought to capitalize the project name in documentation.","commit_id":"2741bc45e8a021d566c5ad18709cd7e93007e149"},{"author":{"_account_id":7776,"name":"Paul Carver","email":"pcarver@att.com","username":"pcarver"},"change_message_id":"cf61e1f1fe9e7b8c280d5a5ef8d4bd407f22f959","unresolved":false,"context_lines":[{"line_number":51,"context_line":"for example, Zookeeper or ZeroMQ. The latter has been implemented in dragonflow,"},{"line_number":52,"context_line":"so it is usable for now."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"It is noted that Cassandra is run over JVM."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Highlights"},{"line_number":57,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_5b9b2c18","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":43},"updated":"2016-10-20 12:56:11.000000000","message":"This is worth expanding on. We\u0027ve run into JVM garbage collection related performance issues in Contrail (which also uses Cassandra) so this is something that should be given attention. That\u0027s not to say it\u0027s insurmountable, but just something that the design should address.","commit_id":"2741bc45e8a021d566c5ad18709cd7e93007e149"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"5de71d23fad40eaf46e6ec4992f29105c8a7bc7e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"for example, Zookeeper or ZeroMQ. The latter has been implemented in dragonflow,"},{"line_number":52,"context_line":"so it is usable for now."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"It is noted that Cassandra is run over JVM."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Highlights"},{"line_number":57,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da6895a0_71925359","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":43},"in_reply_to":"fa6399be_5b9b2c18","updated":"2016-10-21 02:26:40.000000000","message":"JVM tuning depends on the production environment, physical server configuration, how the application consumes memory, etc. GC in JVM is critical and lots of work has been done to make it stable and efficient.\n\nFor dragonflow, it seems that the responsibility is to integrate Cassandra to its data store api. The tuning of JVM is the devops responsibility. Moreover, Cassandra official is also responsible for providing best practice of the usage.\n\nAnyway, I will try to provide hints on how to make it better for Cassandra in dragonflow.","commit_id":"2741bc45e8a021d566c5ad18709cd7e93007e149"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"35d806a78d3c67ce5c6974c380cc49a9d2f2d4f0","unresolved":false,"context_lines":[{"line_number":82,"context_line":"#. https://docs.datastax.com/en/cassandra/3.x/cassandra/operations/opsTuneJVM.html"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"It is observed that the operations on data store in Dragonflow is read intensive according to"},{"line_number":85,"context_line":"monitering in the production. This is actually not the Dragonflow\u0027s characteristic but the"},{"line_number":86,"context_line":"Neutron\u0027s. Most of the operations on data store in Neutron are *high concurrent read*."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Here is another link [#]_ that provides hints on how to optimize JVM in Cassandra for"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da6895a0_cc9aa2c5","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":10},"updated":"2016-10-21 02:56:47.000000000","message":"monitoring?","commit_id":"f68bf34a4b99093c28832dc32f32b8e8fc40ff50"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5090be9bb0abaeddb74e1e720ce96f52a1a4254b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ba5da102_5316574c","updated":"2016-11-03 15:26:08.000000000","message":"Please verify this file is in legal .rst format.","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"31743f6acf634f7a46a56d7cb2abdda59b7d9a84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ba5da102_5980268b","in_reply_to":"ba5da102_5316574c","updated":"2016-11-04 02:06:38.000000000","message":"Done","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5090be9bb0abaeddb74e1e720ce96f52a1a4254b","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Apache Cassandra [#]_ is widely used in large-scale real-time internet"},{"line_number":18,"context_line":"applications, such as Netflix, Reddit, The Weather Channel, etc."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":".. [#] http://cassandra.apache.org/"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_33848309","line":18,"updated":"2016-11-03 15:26:08.000000000","message":"Please mention that Cassandra is a key-value store. While it is obvious from the context, I think it will prevent confusion.","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"31743f6acf634f7a46a56d7cb2abdda59b7d9a84","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Apache Cassandra [#]_ is widely used in large-scale real-time internet"},{"line_number":18,"context_line":"applications, such as Netflix, Reddit, The Weather Channel, etc."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":".. [#] http://cassandra.apache.org/"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_797b2abe","line":18,"in_reply_to":"ba5da102_33848309","updated":"2016-11-04 02:06:38.000000000","message":"Done","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5090be9bb0abaeddb74e1e720ce96f52a1a4254b","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Besides performance, it also has many noticeable advantages such as"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"#. Fault-tolerant: Data is automatically replicated to multiple nodes"},{"line_number":30,"context_line":"for fault-tolerance. Replication across multiple data centers is supported."},{"line_number":31,"context_line":"Failed nodes can be replaced with no downtime."},{"line_number":32,"context_line":"#. Decentralized: There are no single points of failure. There are no network"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_93338ff5","line":29,"updated":"2016-11-03 15:26:08.000000000","message":"When parsed, the #. don\u0027t turn into a numbered list. I think you need to indent the wrapped lines. e.g.:\n\n#. Fault-tolerant: Data is automatically replicated to multiple nodes\n   for fault-tolerance. Replication across multiple data centers is supported.\n   Failed nodes can be replaced with no downtime.","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5090be9bb0abaeddb74e1e720ce96f52a1a4254b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"Currently, we implement control plane of clustering for Redis inside Dragonflow,"},{"line_number":46,"context_line":"which is actually beyond the scope of Dragonflow project. The reason why we"},{"line_number":47,"context_line":"implement db-api layer is that we do not want to maintain the details of data"},{"line_number":48,"context_line":"backend as it is not the responsibility of Dragonflow project."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The disadvantage of Cassandra is that it needs external mechanism for PUB/SUB,"},{"line_number":51,"context_line":"for example, Zookeeper or ZeroMQ. The latter has been implemented in Dragonflow,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_d34fc768","line":48,"updated":"2016-11-03 15:26:08.000000000","message":"Very true.","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5090be9bb0abaeddb74e1e720ce96f52a1a4254b","unresolved":false,"context_lines":[{"line_number":63,"context_line":"#. You can adjust ConsistencyLevel to use different algorithms, like Quorum."},{"line_number":64,"context_line":"#. Every node in the cluster is identical. No Master or Slave roles."},{"line_number":65,"context_line":"#. The data written to Cassandra node is going to append-only CommitLog first and"},{"line_number":66,"context_line":"fsync to disk next. You also can adjust the policy of fsync. It guarantees the durability."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"High Availability"},{"line_number":69,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_b345f343","line":66,"updated":"2016-11-03 15:26:08.000000000","message":"Same here: Indentation needed.","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"31743f6acf634f7a46a56d7cb2abdda59b7d9a84","unresolved":false,"context_lines":[{"line_number":63,"context_line":"#. You can adjust ConsistencyLevel to use different algorithms, like Quorum."},{"line_number":64,"context_line":"#. Every node in the cluster is identical. No Master or Slave roles."},{"line_number":65,"context_line":"#. The data written to Cassandra node is going to append-only CommitLog first and"},{"line_number":66,"context_line":"fsync to disk next. You also can adjust the policy of fsync. It guarantees the durability."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"High Availability"},{"line_number":69,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_395c524a","line":66,"in_reply_to":"ba5da102_b345f343","updated":"2016-11-04 02:06:38.000000000","message":"Done","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5090be9bb0abaeddb74e1e720ce96f52a1a4254b","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"You just need to specify a set of nodes in configuration, *remote_db_hosts* in [df] section."},{"line_number":72,"context_line":"The nodes will automatically form a Quorum-like cluster with replications and consistency"},{"line_number":73,"context_line":"you specify in Cassandra configuration."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"JVM in Production"},{"line_number":76,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_f3876b5e","line":73,"updated":"2016-11-03 15:26:08.000000000","message":"Is this a property of cassandra? Or of the DF plugin implementation.","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"31743f6acf634f7a46a56d7cb2abdda59b7d9a84","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"You just need to specify a set of nodes in configuration, *remote_db_hosts* in [df] section."},{"line_number":72,"context_line":"The nodes will automatically form a Quorum-like cluster with replications and consistency"},{"line_number":73,"context_line":"you specify in Cassandra configuration."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"JVM in Production"},{"line_number":76,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_f96e5afe","line":73,"in_reply_to":"ba5da102_f3876b5e","updated":"2016-11-04 02:06:38.000000000","message":"It depends on the database client sdk. Etcd and Zookeeper SDK can support a list of hosts when connecting to multiple backends. When it is set, the client will use build-in policy to schedule connections to different host (backend server), for example, randomly or round robin. When the first host is not able to connect, the client will automatically fail over to the next host.\n\nThis feature depicts that each DB backend is identical and it supports replication and failover internally. We do not need to care how the cluster is formed.\n\nIn dragonflow, we just implement an option \u0027remote_db_hosts\u0027 and pass it to DB client, if the client SDK supports it. But for redis, we implement the whole feature inside the db driver, because the client SDK doesn\u0027t support it.","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5090be9bb0abaeddb74e1e720ce96f52a1a4254b","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"It is observed that the operations on data store in Dragonflow is read intensive according to"},{"line_number":85,"context_line":"monitoring in the production. This is actually not the Dragonflow\u0027s characteristic but the"},{"line_number":86,"context_line":"Neutron\u0027s. Most of the operations on data store in Neutron are *high concurrent read*."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Here is another link [#]_ that provides hints on how to optimize JVM in Cassandra for"},{"line_number":89,"context_line":"read heavy workloads."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_335ac3f2","line":86,"updated":"2016-11-03 15:26:08.000000000","message":"This can maybe be improved by more rigorous use of the db_store cache, and reading the NB in Neutron Server only when writing (but I haven\u0027t actually checked). But my comment is beyond the scope of this spec.","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5090be9bb0abaeddb74e1e720ce96f52a1a4254b","unresolved":false,"context_lines":[{"line_number":93,"context_line":"Proposed Change"},{"line_number":94,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"#. Implement devstack script for Cassandra all-in-one node."},{"line_number":97,"context_line":"#. Implement Cassandra driver"},{"line_number":98,"context_line":"#. Implement unit tests"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_f3d84b55","line":97,"range":{"start_line":96,"start_character":0,"end_line":97,"end_character":29},"updated":"2016-11-03 15:26:08.000000000","message":"I would change the order of these two, but whatever is more convenient for you.","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5090be9bb0abaeddb74e1e720ce96f52a1a4254b","unresolved":false,"context_lines":[{"line_number":110,"context_line":"---------"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"#. Devstack script for Cassandra single node"},{"line_number":113,"context_line":"#. Data Model of Cassandra"},{"line_number":114,"context_line":"#. Object Mapping between Cassandra and Dragonflow"},{"line_number":115,"context_line":"#. Cassandra driver logic"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_13985f69","line":114,"range":{"start_line":113,"start_character":0,"end_line":114,"end_character":50},"updated":"2016-11-03 15:26:08.000000000","message":"I am not sure I understand what these two action items mean. Could you please elaborate?","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"31743f6acf634f7a46a56d7cb2abdda59b7d9a84","unresolved":false,"context_lines":[{"line_number":110,"context_line":"---------"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"#. Devstack script for Cassandra single node"},{"line_number":113,"context_line":"#. Data Model of Cassandra"},{"line_number":114,"context_line":"#. Object Mapping between Cassandra and Dragonflow"},{"line_number":115,"context_line":"#. Cassandra driver logic"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_991abe7b","line":114,"range":{"start_line":113,"start_character":0,"end_line":114,"end_character":50},"in_reply_to":"ba5da102_13985f69","updated":"2016-11-04 02:06:38.000000000","message":"Cassandra has an object-mapping mechanism to map the python object model to cassandra query language model, which is similar to SQLalchemy. We need to first define the object class for each neutron object and write the function wrapper for each class to do select/create/update/delete.","commit_id":"32c34972e68e5bec67ed13b65c7c2801fef0ff02"}]}
