)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"6e792a76acf83da0b4059038764f04fd4d9cd100","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-03-24 16:58:47 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Introduce objects into sahara. This enables objects to be passed over RPC and"},{"line_number":8,"context_line":"decouple the database implementation from SQLAlchemy."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: If65d2d0e8cf5ddab9ca1cb5d004468614204480b"},{"line_number":11,"context_line":"Implements: blueprint versioned-objects"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7aa08908_ce2bf4e9","line":8,"updated":"2016-06-13 20:15:24.000000000","message":"+1 to that. Please refer to https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"71785b9482fd7ad548a345797bb4201e82478472","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-03-24 16:58:47 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Introduce objects into sahara. This enables objects to be passed over RPC and"},{"line_number":8,"context_line":"decouple the database implementation from SQLAlchemy."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: If65d2d0e8cf5ddab9ca1cb5d004468614204480b"},{"line_number":11,"context_line":"Implements: blueprint versioned-objects"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a6ced46_85e6b413","line":8,"updated":"2015-03-25 16:53:57.000000000","message":"the first line should be no more than 50 characters, without a period at the end, and a blank line following. maybe this should be split after the first sentence.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":8090,"name":"Chad Roberts","email":"croberts@redhat.com","username":"croberts"},"change_message_id":"644d93e34efce43a995ebba73949c548b7aea416","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-03-24 16:58:47 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Introduce objects into sahara. This enables objects to be passed over RPC and"},{"line_number":8,"context_line":"decouple the database implementation from SQLAlchemy."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: If65d2d0e8cf5ddab9ca1cb5d004468614204480b"},{"line_number":11,"context_line":"Implements: blueprint versioned-objects"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"dac4157f_87e33705","line":8,"in_reply_to":"1a6ced46_85e6b413","updated":"2015-05-13 20:58:17.000000000","message":"+1","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"}],"specs/liberty/versioned-object.rst":[{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"1eb30a8b3166d4847f9d7d185fe331f5540c51bf","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The proposed changes are:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Create a directory sahara/objects/ that will contain wrapper objects"},{"line_number":43,"context_line":"  that are a layer above the db objects."},{"line_number":44,"context_line":"* Objects will be database schema independent."},{"line_number":45,"context_line":"* Objects will be sent over RPC instead of ids, reducing the additional"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a6ced46_aa0d8292","line":42,"updated":"2015-03-24 10:43:59.000000000","message":"We already have some object wrappers that provides helpers and etc. We\u0027re converting SQLA objects to dicts and wrap them to objects - https://github.com/openstack/sahara/blob/master/sahara/conductor/objects.py and https://github.com/openstack/sahara/blob/master/sahara/conductor/resource.py\n\nHow the versioned objects correlates with our approach? Could we extend versioned objects with currently supported functionality?\n\nP.S. I really like the versioned objects approach, thank you for proposing this spec!","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"71785b9482fd7ad548a345797bb4201e82478472","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The proposed changes are:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Create a directory sahara/objects/ that will contain wrapper objects"},{"line_number":43,"context_line":"  that are a layer above the db objects."},{"line_number":44,"context_line":"* Objects will be database schema independent."},{"line_number":45,"context_line":"* Objects will be sent over RPC instead of ids, reducing the additional"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a6ced46_e57be8f2","line":42,"in_reply_to":"1a6ced46_aa0d8292","updated":"2015-03-25 16:53:57.000000000","message":"+1","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":13662,"name":"Ken Chen","email":"ken.chen@intel.com","username":"singinforest"},"change_message_id":"17767b5beddb0ff8f4e1b5b95c061dd211ded0d0","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The proposed changes are:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Create a directory sahara/objects/ that will contain wrapper objects"},{"line_number":43,"context_line":"  that are a layer above the db objects."},{"line_number":44,"context_line":"* Objects will be database schema independent."},{"line_number":45,"context_line":"* Objects will be sent over RPC instead of ids, reducing the additional"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da9b358b_ee4d6173","line":42,"in_reply_to":"1a6ced46_aa0d8292","updated":"2015-03-30 17:07:40.000000000","message":"In my opinion, sahara conductor by functionality is quite like the versionedobject. For the other projects not having conductor exist, they have to create a middle layer to present the objects (like in heat). Fortunately, we already have conductor, so I think the right thing is to let conductor resource classes inherited from oslo_versionedobject.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":11189,"name":"yuntongjin","email":"yuntong.jin@intel.com","username":"yuntong"},"change_message_id":"254123f567b70e22d7e8d5a528efddce786bdcba","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The proposed changes are:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Create a directory sahara/objects/ that will contain wrapper objects"},{"line_number":43,"context_line":"  that are a layer above the db objects."},{"line_number":44,"context_line":"* Objects will be database schema independent."},{"line_number":45,"context_line":"* Objects will be sent over RPC instead of ids, reducing the additional"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aa53dc9_aaff5300","line":42,"in_reply_to":"1a6ced46_aa0d8292","updated":"2015-04-07 08:54:38.000000000","message":"The existing object functionality  in Sahara is subset of oslo.versionedobject, so, the currently supported functionality can be covered by oslo.versionedobject.\n\nIt\u0027d be much easier to implement and maintain to use oslo.versionedobject replace existing implement, and having consistency with other OS projects.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":13662,"name":"Ken Chen","email":"ken.chen@intel.com","username":"singinforest"},"change_message_id":"5b4ed9020c1609e86a43d1bd254dc5950bac06c7","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The proposed changes are:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Create a directory sahara/objects/ that will contain wrapper objects"},{"line_number":43,"context_line":"  that are a layer above the db objects."},{"line_number":44,"context_line":"* Objects will be database schema independent."},{"line_number":45,"context_line":"* Objects will be sent over RPC instead of ids, reducing the additional"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3ab451fb_592fa4a1","line":42,"in_reply_to":"9aa53dc9_aaff5300","updated":"2015-04-17 03:00:38.000000000","message":"I have done a sample patch for node-group-template object. Now I just add an objects layer above conductor.resource layer. I think we can remove the old resource layer later in other patches.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":13662,"name":"Ken Chen","email":"ken.chen@intel.com","username":"singinforest"},"change_message_id":"5b4ed9020c1609e86a43d1bd254dc5950bac06c7","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The proposed changes are:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Create a directory sahara/objects/ that will contain wrapper objects"},{"line_number":43,"context_line":"  that are a layer above the db objects."},{"line_number":44,"context_line":"* Objects will be database schema independent."},{"line_number":45,"context_line":"* Objects will be sent over RPC instead of ids, reducing the additional"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3ab451fb_795b8055","line":42,"in_reply_to":"baa041b7_d2cb4c52","updated":"2015-04-17 03:00:38.000000000","message":"Yes. I currently implement a sample for node-group-template object, and put them in objects directory.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"a95a9642d4dd9d36528e584ddf33e7e527040900","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The proposed changes are:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Create a directory sahara/objects/ that will contain wrapper objects"},{"line_number":43,"context_line":"  that are a layer above the db objects."},{"line_number":44,"context_line":"* Objects will be database schema independent."},{"line_number":45,"context_line":"* Objects will be sent over RPC instead of ids, reducing the additional"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baa041b7_d2cb4c52","line":42,"in_reply_to":"da9b358b_a6275911","updated":"2015-04-03 02:22:33.000000000","message":"I think move them to sahara/objects/ would be better.\r\nObjects works for the whole project.\r\nSahara case is only conductor is using them currently.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":13662,"name":"Ken Chen","email":"ken.chen@intel.com","username":"singinforest"},"change_message_id":"e4c69b05b380ad2e6ad8af9a2e197a2e6e6b605b","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The proposed changes are:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Create a directory sahara/objects/ that will contain wrapper objects"},{"line_number":43,"context_line":"  that are a layer above the db objects."},{"line_number":44,"context_line":"* Objects will be database schema independent."},{"line_number":45,"context_line":"* Objects will be sent over RPC instead of ids, reducing the additional"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da9b358b_a6275911","line":42,"in_reply_to":"da9b358b_ee4d6173","updated":"2015-03-31 14:44:14.000000000","message":"I checked again the heat and nova codes. We have nova-conductor in nova, but unlike in Sahara, it does not deal with the objects or classes like Instance, Flavor, and so on. Those classes are defined in nova/objects directory. In Sahara we do not have a objects directory, instead we have objects.py and resource.py files in conductor directory including the classes to present Cluster, Nodegroup-template, and so on. We can either move them to sahara/objects/, or just leave them here and let the classes derived from oslo_versionedobject.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"a95a9642d4dd9d36528e584ddf33e7e527040900","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  have been changed when the object is in flight, additional arguments"},{"line_number":52,"context_line":"  (e.g. expected_cluster_state and expected_nodegroup_state) would be included"},{"line_number":53,"context_line":"  in the object save method, which would check against the in-database copy of"},{"line_number":54,"context_line":"  the icluster, nodeGroup, instance before updates are made and fail gracefully"},{"line_number":55,"context_line":"  or appropriately sync up the data."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Once the objects are in place the rest of the code will be changed to use the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baa041b7_12e894b3","line":54,"updated":"2015-04-03 02:22:33.000000000","message":"s/icluster/cluster","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"1eb30a8b3166d4847f9d7d185fe331f5540c51bf","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Sahara could continue to be tightly tied to SQLAlchemy, limiting support to"},{"line_number":65,"context_line":"only SQL databases. Also, the existing implementation of sending ids over RPC"},{"line_number":66,"context_line":"can be left as-is."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a6ced46_ad583c33","line":64,"updated":"2015-03-24 10:43:59.000000000","message":"The overall comment is that we already not using SQLA objects.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":13662,"name":"Ken Chen","email":"ken.chen@intel.com","username":"singinforest"},"change_message_id":"17767b5beddb0ff8f4e1b5b95c061dd211ded0d0","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Sahara could continue to be tightly tied to SQLAlchemy, limiting support to"},{"line_number":65,"context_line":"only SQL databases. Also, the existing implementation of sending ids over RPC"},{"line_number":66,"context_line":"can be left as-is."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da9b358b_8e81354d","line":64,"in_reply_to":"1a6ced46_a51e50b9","updated":"2015-03-30 17:07:40.000000000","message":"I think current implementation need not be modified. After I read some projects codes like heat, there IMPL methods are called and IMPL is determined by CONF. That is the same as we do now in Sahara.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":11189,"name":"yuntongjin","email":"yuntong.jin@intel.com","username":"yuntong"},"change_message_id":"254123f567b70e22d7e8d5a528efddce786bdcba","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Sahara could continue to be tightly tied to SQLAlchemy, limiting support to"},{"line_number":65,"context_line":"only SQL databases. Also, the existing implementation of sending ids over RPC"},{"line_number":66,"context_line":"can be left as-is."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aa53dc9_ca5297dd","line":64,"in_reply_to":"1a6ced46_a51e50b9","updated":"2015-04-07 08:54:38.000000000","message":"The versioned object is not intend to be a layer of separation between the internal API and the db impl.\nIn fact, it\u0027s another abstract layer on SQLAlchemy object to decouple DB/DB schema.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"71785b9482fd7ad548a345797bb4201e82478472","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Sahara could continue to be tightly tied to SQLAlchemy, limiting support to"},{"line_number":65,"context_line":"only SQL databases. Also, the existing implementation of sending ids over RPC"},{"line_number":66,"context_line":"can be left as-is."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a6ced46_a51e50b9","line":64,"in_reply_to":"1a6ced46_ad583c33","updated":"2015-03-25 16:53:57.000000000","message":"yea, curious about this too as i thought we have a layer of separation between the internal API and the db impl.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"65e8e3b26e801cf47fb8a2861ba41af462120f02","unresolved":false,"context_lines":[{"line_number":140,"context_line":"  yuntongjin"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Other contributors:"},{"line_number":143,"context_line":"  Any help is welcome"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Work Items"},{"line_number":146,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a6ced46_340499bf","line":143,"updated":"2015-03-24 09:36:28.000000000","message":"is this acceptable comment in spec? I\u0027m just curious.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"71785b9482fd7ad548a345797bb4201e82478472","unresolved":false,"context_lines":[{"line_number":140,"context_line":"  yuntongjin"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Other contributors:"},{"line_number":143,"context_line":"  Any help is welcome"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Work Items"},{"line_number":146,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a6ced46_856cf436","line":143,"in_reply_to":"1a6ced46_340499bf","updated":"2015-03-25 16:53:57.000000000","message":"agreed, we should either leave this empty or sign some people up.","commit_id":"6588c7d6c3bc50df9250ff62da9826a4001a1c06"}]}
