)]}'
{"doc/source/dev/code-contribution-guide.rst":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"This document provides some necessary points for developers to consider when"},{"line_number":8,"context_line":"write and review Ironic code. The checklist will help developers to get things"},{"line_number":9,"context_line":"right. Further details about the important reasons for each point can be"},{"line_number":10,"context_line":"linked from here."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_893eb1d8","line":8,"updated":"2015-12-01 22:22:31.000000000","message":"s/write and review/writing and reviewing/\n\ns/to get/get/","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"This document provides some necessary points for developers to consider when"},{"line_number":8,"context_line":"write and review Ironic code. The checklist will help developers to get things"},{"line_number":9,"context_line":"right. Further details about the important reasons for each point can be"},{"line_number":10,"context_line":"linked from here."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Live Upgrade Related Concerns"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":3,"id":"9a8ffd7b_ec1d0b67","line":10,"updated":"2015-12-01 22:22:31.000000000","message":"I\u0027m not sure what you mean by this \u0027Further... \u0027 sentence; I think it can be deleted. (Are you giving instructions for people that might want to add stuff to this page? If so, I don\u0027t think it is necessary.)","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"linked from here."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Live Upgrade Related Concerns"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Ironic API RPC Versions"},{"line_number":16,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_777c8472","line":13,"updated":"2015-12-01 22:22:31.000000000","message":"Might be good to provide references to live upgrades (if you know of any).","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5df51346800222ff636cf012822421fd253926b5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Ironic API RPC Versions"},{"line_number":16,"context_line":"-----------------------"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"*  When RPC method signature is changed, the following things need to be considered:"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_6bda2f4d","line":16,"updated":"2015-12-02 16:44:14.000000000","message":"Hey, didn\u0027t you recently submit a patch to the tests, that will catch when a signature is changed? Oh, it was object version bump [1]. Is it worth mentioning that test/what to do?\n\n[1] I5c12ab72937f05ba46eb58d049f9b7fc7c806218","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"c3cc6d0b27955cfbb5ea1c4ad1efa81a14a71020","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Ironic API RPC Versions"},{"line_number":16,"context_line":"-----------------------"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"*  When RPC method signature is changed, the following things need to be considered:"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_12b0e5dc","line":16,"in_reply_to":"9a8ffd7b_6bda2f4d","updated":"2015-12-04 09:04:12.000000000","message":"I will add it in Object version part.:)","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Ironic API RPC Versions"},{"line_number":16,"context_line":"-----------------------"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"*  When RPC method signature is changed, the following things need to be considered:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":" - Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":21,"context_line":"   should both bump the RPC version."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_0c8c0f7e","line":18,"updated":"2015-12-01 22:22:31.000000000","message":"To make it clearer, how about \u0027When the signature (arguments) of an RPC method is changed\u0027","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"*  When RPC method signature is changed, the following things need to be considered:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":" - Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":21,"context_line":"   should both bump the RPC version."},{"line_number":22,"context_line":" - The arguments of RPC API can only be added as optional, they cannot be"},{"line_number":23,"context_line":"   removed or changed in an incompatible way."},{"line_number":24,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_ac74e39b","line":21,"updated":"2015-12-01 22:22:31.000000000","message":"to the same value, right?","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"c3cc6d0b27955cfbb5ea1c4ad1efa81a14a71020","unresolved":false,"context_lines":[{"line_number":18,"context_line":"*  When RPC method signature is changed, the following things need to be considered:"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":" - Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":21,"context_line":"   should both bump the RPC version."},{"line_number":22,"context_line":" - The arguments of RPC API can only be added as optional, they cannot be"},{"line_number":23,"context_line":"   removed or changed in an incompatible way."},{"line_number":24,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_f2ce7959","line":21,"in_reply_to":"9a8ffd7b_ac74e39b","updated":"2015-12-04 09:04:12.000000000","message":"yes definitely.","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":" - Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":21,"context_line":"   should both bump the RPC version."},{"line_number":22,"context_line":" - The arguments of RPC API can only be added as optional, they cannot be"},{"line_number":23,"context_line":"   removed or changed in an incompatible way."},{"line_number":24,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"},{"line_number":25,"context_line":"   of RPCClient. Methods should run client.can_send_version() to see if the version of"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_2cdeb36d","line":22,"updated":"2015-12-01 22:22:31.000000000","message":"s/The/New/\n\ns/RPC API/the method/\n\ns/, they/. Existing arguments/","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":20,"context_line":" - Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":21,"context_line":"   should both bump the RPC version."},{"line_number":22,"context_line":" - The arguments of RPC API can only be added as optional, they cannot be"},{"line_number":23,"context_line":"   removed or changed in an incompatible way."},{"line_number":24,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"},{"line_number":25,"context_line":"   of RPCClient. Methods should run client.can_send_version() to see if the version of"},{"line_number":26,"context_line":"   request is compatible with the version cap of RPC Client, otherwise formulate the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_ac5e23e7","line":23,"updated":"2015-12-01 22:22:31.000000000","message":"incompatible with what? incompatible with the method in older RPC versions, right?","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"c3cc6d0b27955cfbb5ea1c4ad1efa81a14a71020","unresolved":false,"context_lines":[{"line_number":20,"context_line":" - Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":21,"context_line":"   should both bump the RPC version."},{"line_number":22,"context_line":" - The arguments of RPC API can only be added as optional, they cannot be"},{"line_number":23,"context_line":"   removed or changed in an incompatible way."},{"line_number":24,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"},{"line_number":25,"context_line":"   of RPCClient. Methods should run client.can_send_version() to see if the version of"},{"line_number":26,"context_line":"   request is compatible with the version cap of RPC Client, otherwise formulate the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_7217e9a3","line":23,"in_reply_to":"9a8ffd7b_ac5e23e7","updated":"2015-12-04 09:04:12.000000000","message":"yes, this is what I mean.","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":22,"context_line":" - The arguments of RPC API can only be added as optional, they cannot be"},{"line_number":23,"context_line":"   removed or changed in an incompatible way."},{"line_number":24,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"},{"line_number":25,"context_line":"   of RPCClient. Methods should run client.can_send_version() to see if the version of"},{"line_number":26,"context_line":"   request is compatible with the version cap of RPC Client, otherwise formulate the"},{"line_number":27,"context_line":"   request to an older version."},{"line_number":28,"context_line":" - Server-side should tolerate the older version of requests in order to keep"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_2c7d531c","line":25,"updated":"2015-12-01 22:22:31.000000000","message":"that\u0027s oslo_messaging.RPCClient?","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"c3cc6d0b27955cfbb5ea1c4ad1efa81a14a71020","unresolved":false,"context_lines":[{"line_number":22,"context_line":" - The arguments of RPC API can only be added as optional, they cannot be"},{"line_number":23,"context_line":"   removed or changed in an incompatible way."},{"line_number":24,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"},{"line_number":25,"context_line":"   of RPCClient. Methods should run client.can_send_version() to see if the version of"},{"line_number":26,"context_line":"   request is compatible with the version cap of RPC Client, otherwise formulate the"},{"line_number":27,"context_line":"   request to an older version."},{"line_number":28,"context_line":" - Server-side should tolerate the older version of requests in order to keep"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_d2549d55","line":25,"in_reply_to":"9a8ffd7b_2c7d531c","updated":"2015-12-04 09:04:12.000000000","message":"yes.","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":24,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"},{"line_number":25,"context_line":"   of RPCClient. Methods should run client.can_send_version() to see if the version of"},{"line_number":26,"context_line":"   request is compatible with the version cap of RPC Client, otherwise formulate the"},{"line_number":27,"context_line":"   request to an older version."},{"line_number":28,"context_line":" - Server-side should tolerate the older version of requests in order to keep"},{"line_number":29,"context_line":"   working during the progress of live upgrade."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_7757a402","line":27,"updated":"2015-12-01 22:22:31.000000000","message":"This isn\u0027t clear to me. Which method -- the one that has the changed arguments?\n\nI see common/rpc.py has get_client(target, version_cap\u003dNone, serializer\u003dNone), so I\u0027m guessing that is where the version_cap is passed to RPCClient.\n\nUmm... (if I recall correctly) I think we need to code this part. conductor/rpcapi.py, ConductorAPI.__init__(), there is a call to rpc.get_client() and the version is hardcoded as self.RPC_API_VERSION. I think we need to add a config that can specify the (older) version (or default to the latest version).","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"c3cc6d0b27955cfbb5ea1c4ad1efa81a14a71020","unresolved":false,"context_lines":[{"line_number":24,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"},{"line_number":25,"context_line":"   of RPCClient. Methods should run client.can_send_version() to see if the version of"},{"line_number":26,"context_line":"   request is compatible with the version cap of RPC Client, otherwise formulate the"},{"line_number":27,"context_line":"   request to an older version."},{"line_number":28,"context_line":" - Server-side should tolerate the older version of requests in order to keep"},{"line_number":29,"context_line":"   working during the progress of live upgrade."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_4f4d6671","line":27,"in_reply_to":"9a8ffd7b_7757a402","updated":"2015-12-04 09:04:12.000000000","message":"Yes,  we have it here:\n* https://review.openstack.org/#/c/253355/","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"   request is compatible with the version cap of RPC Client, otherwise formulate the"},{"line_number":27,"context_line":"   request to an older version."},{"line_number":28,"context_line":" - Server-side should tolerate the older version of requests in order to keep"},{"line_number":29,"context_line":"   working during the progress of live upgrade."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Object Versions"},{"line_number":32,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_ec93cbf8","line":29,"updated":"2015-12-01 22:22:31.000000000","message":"Any suggestions on what to look out for?","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"c3cc6d0b27955cfbb5ea1c4ad1efa81a14a71020","unresolved":false,"context_lines":[{"line_number":26,"context_line":"   request is compatible with the version cap of RPC Client, otherwise formulate the"},{"line_number":27,"context_line":"   request to an older version."},{"line_number":28,"context_line":" - Server-side should tolerate the older version of requests in order to keep"},{"line_number":29,"context_line":"   working during the progress of live upgrade."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Object Versions"},{"line_number":32,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_6dd06a54","line":29,"in_reply_to":"9a8ffd7b_ec93cbf8","updated":"2015-12-04 09:04:12.000000000","message":"Done","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Object Versions"},{"line_number":32,"context_line":"---------------"},{"line_number":33,"context_line":"* When Object classes are modified, the following things need to be considered:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" - The change of fields and remotable method signature needs a bump of object"},{"line_number":36,"context_line":"   version."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_6c3b5bec","line":33,"updated":"2015-12-01 22:22:31.000000000","message":"You mean anything that inherits from ironic.objects.base.IronicObject right?","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"c3cc6d0b27955cfbb5ea1c4ad1efa81a14a71020","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Object Versions"},{"line_number":32,"context_line":"---------------"},{"line_number":33,"context_line":"* When Object classes are modified, the following things need to be considered:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" - The change of fields and remotable method signature needs a bump of object"},{"line_number":36,"context_line":"   version."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_4dcfaeb0","line":33,"in_reply_to":"9a8ffd7b_6c3b5bec","updated":"2015-12-04 09:04:12.000000000","message":"Yes, it is.","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":14891,"name":"Lilia Sampaio","email":"liliars@lsd.ufcg.edu.br","username":"liliars"},"change_message_id":"3694ca631ee9109ca057ab1989fecf3aafc48bae","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Object Versions"},{"line_number":32,"context_line":"---------------"},{"line_number":33,"context_line":"* When Object classes are modified, the following things need to be considered:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" - The change of fields and remotable method signature needs a bump of object"},{"line_number":36,"context_line":"   version."},{"line_number":37,"context_line":" - The arguments of methods can only be added as optional, they cannot be"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_6557c05a","line":34,"updated":"2015-12-02 16:33:33.000000000","message":"I think the following guidelines might actually apply to more than IronicObject objects. In my understanding all changes related to method signatures, parameters, fields and such should follow some of the practices you stated. We could make this more general, or even extract more generic bits in another section, dunno. wdyt?","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5df51346800222ff636cf012822421fd253926b5","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Object Versions"},{"line_number":32,"context_line":"---------------"},{"line_number":33,"context_line":"* When Object classes are modified, the following things need to be considered:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" - The change of fields and remotable method signature needs a bump of object"},{"line_number":36,"context_line":"   version."},{"line_number":37,"context_line":" - The arguments of methods can only be added as optional, they cannot be"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_8bf513ee","line":34,"in_reply_to":"9a8ffd7b_6557c05a","updated":"2015-12-02 16:44:14.000000000","message":"It is true that it applies to other methods, but not to all methods. So I think it is OK to start with this, and then someone else can figure out what the other methods might be. (It is the \u0027driver API\u0027 that we want to guarantee doesn\u0027t change so it doesn\u0027t break out-of-tree drivers, but there is no versioning of those methods...)","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":14891,"name":"Lilia Sampaio","email":"liliars@lsd.ufcg.edu.br","username":"liliars"},"change_message_id":"443ed8a6bc7af05b6c1d26e2108f142a8ef763d8","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Object Versions"},{"line_number":32,"context_line":"---------------"},{"line_number":33,"context_line":"* When Object classes are modified, the following things need to be considered:"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":" - The change of fields and remotable method signature needs a bump of object"},{"line_number":36,"context_line":"   version."},{"line_number":37,"context_line":" - The arguments of methods can only be added as optional, they cannot be"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_e648965e","line":34,"in_reply_to":"9a8ffd7b_8bf513ee","updated":"2015-12-02 16:52:30.000000000","message":"Oh I see, I was thinking more on a big picture where changing signatures and such can be problematic/break things in a project (generally), but I now see more specific concerns for us. Also, no problem leaving it for another change. Thanks for clarifying Ruby :)","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":41,"context_line":" - When new version objects communicate with old version objects,"},{"line_number":42,"context_line":"   obj_make_compatible() will be called to convert objects to the target version during"},{"line_number":43,"context_line":"   serialization. So objects should implement their own obj_make_compatible() to"},{"line_number":44,"context_line":"   remove/alter attributes which was added/changed after the target version."},{"line_number":45,"context_line":" "},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_b74d0c74","line":44,"updated":"2015-12-01 22:22:31.000000000","message":"We should add a link here as an example, when the first object makes this obj_make_compatible() call :)","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"c3cc6d0b27955cfbb5ea1c4ad1efa81a14a71020","unresolved":false,"context_lines":[{"line_number":41,"context_line":" - When new version objects communicate with old version objects,"},{"line_number":42,"context_line":"   obj_make_compatible() will be called to convert objects to the target version during"},{"line_number":43,"context_line":"   serialization. So objects should implement their own obj_make_compatible() to"},{"line_number":44,"context_line":"   remove/alter attributes which was added/changed after the target version."},{"line_number":45,"context_line":" "},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_4d148ef4","line":44,"in_reply_to":"9a8ffd7b_b74d0c74","updated":"2015-12-04 09:04:12.000000000","message":"Good point. :)","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"663efe8237bbc76e36ab12092e3b8e182612a7ed","unresolved":false,"context_lines":[{"line_number":42,"context_line":"   obj_make_compatible() will be called to convert objects to the target version during"},{"line_number":43,"context_line":"   serialization. So objects should implement their own obj_make_compatible() to"},{"line_number":44,"context_line":"   remove/alter attributes which was added/changed after the target version."},{"line_number":45,"context_line":" "},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_41eb7013","line":45,"updated":"2015-11-27 10:06:35.000000000","message":"nit: trailing space","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"3e4ed36424a2f68b8f6965282b75eccbb0115477","unresolved":false,"context_lines":[{"line_number":20,"context_line":"   need to be considered:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":" - Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":23,"context_line":"   should both bump with a same RPC version."},{"line_number":24,"context_line":" - New arguments of the method can only be added as optional. Existing arguments cannot be"},{"line_number":25,"context_line":"   removed or changed in an incompatible ways (with the method in older RPC versions)."},{"line_number":26,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a740942_1bc0d6df","line":23,"updated":"2015-12-05 04:05:35.000000000","message":"should both increment the RPC version by one and the RPC versions must be the same on the client and server.","commit_id":"6c1623a2ac8c1ee5b9c2628cf031e9274f08f434"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"3e4ed36424a2f68b8f6965282b75eccbb0115477","unresolved":false,"context_lines":[{"line_number":22,"context_line":" - Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":23,"context_line":"   should both bump with a same RPC version."},{"line_number":24,"context_line":" - New arguments of the method can only be added as optional. Existing arguments cannot be"},{"line_number":25,"context_line":"   removed or changed in an incompatible ways (with the method in older RPC versions)."},{"line_number":26,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"},{"line_number":27,"context_line":"   of RPCClient. Methods which change arguments should run client.can_send_version() to"},{"line_number":28,"context_line":"   see if the version of request is compatible with the version cap of RPC Client,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a740942_bbb66288","line":25,"updated":"2015-12-05 04:05:35.000000000","message":"s/in an incompatible/in incompatible/","commit_id":"6c1623a2ac8c1ee5b9c2628cf031e9274f08f434"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"3e4ed36424a2f68b8f6965282b75eccbb0115477","unresolved":false,"context_lines":[{"line_number":24,"context_line":" - New arguments of the method can only be added as optional. Existing arguments cannot be"},{"line_number":25,"context_line":"   removed or changed in an incompatible ways (with the method in older RPC versions)."},{"line_number":26,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"},{"line_number":27,"context_line":"   of RPCClient. Methods which change arguments should run client.can_send_version() to"},{"line_number":28,"context_line":"   see if the version of request is compatible with the version cap of RPC Client,"},{"line_number":29,"context_line":"   otherwise formulate the request to an older version."},{"line_number":30,"context_line":" - Server-side should tolerate the older version of requests in order to keep"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a740942_5ba65e54","line":27,"updated":"2015-12-05 04:05:35.000000000","message":"s/RPCClient/oslo_messaging.RPCClient/","commit_id":"6c1623a2ac8c1ee5b9c2628cf031e9274f08f434"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"3e4ed36424a2f68b8f6965282b75eccbb0115477","unresolved":false,"context_lines":[{"line_number":25,"context_line":"   removed or changed in an incompatible ways (with the method in older RPC versions)."},{"line_number":26,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"},{"line_number":27,"context_line":"   of RPCClient. Methods which change arguments should run client.can_send_version() to"},{"line_number":28,"context_line":"   see if the version of request is compatible with the version cap of RPC Client,"},{"line_number":29,"context_line":"   otherwise formulate the request to an older version."},{"line_number":30,"context_line":" - Server-side should tolerate the older version of requests in order to keep"},{"line_number":31,"context_line":"   working during the progress of live upgrade. The behavior of server-side should"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a740942_db700edf","line":28,"updated":"2015-12-05 04:05:35.000000000","message":"s/of request/of the request/","commit_id":"6c1623a2ac8c1ee5b9c2628cf031e9274f08f434"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"3e4ed36424a2f68b8f6965282b75eccbb0115477","unresolved":false,"context_lines":[{"line_number":26,"context_line":" - Client-side can pin a version cap by passing \u0027version_cap\u0027 to the constructor"},{"line_number":27,"context_line":"   of RPCClient. Methods which change arguments should run client.can_send_version() to"},{"line_number":28,"context_line":"   see if the version of request is compatible with the version cap of RPC Client,"},{"line_number":29,"context_line":"   otherwise formulate the request to an older version."},{"line_number":30,"context_line":" - Server-side should tolerate the older version of requests in order to keep"},{"line_number":31,"context_line":"   working during the progress of live upgrade. The behavior of server-side should"},{"line_number":32,"context_line":"   depend on the input parameters passing from client-side."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a740942_bb6d0206","line":29,"updated":"2015-12-05 04:05:35.000000000","message":"otherwise the request needs to be created to work with a previous version that is supported.","commit_id":"6c1623a2ac8c1ee5b9c2628cf031e9274f08f434"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"3e4ed36424a2f68b8f6965282b75eccbb0115477","unresolved":false,"context_lines":[{"line_number":29,"context_line":"   otherwise formulate the request to an older version."},{"line_number":30,"context_line":" - Server-side should tolerate the older version of requests in order to keep"},{"line_number":31,"context_line":"   working during the progress of live upgrade. The behavior of server-side should"},{"line_number":32,"context_line":"   depend on the input parameters passing from client-side."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Object Versions"},{"line_number":35,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a740942_9b7366e7","line":32,"updated":"2015-12-05 04:05:35.000000000","message":"s/passing from client-side/passed from the client-side/","commit_id":"6c1623a2ac8c1ee5b9c2628cf031e9274f08f434"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"3e4ed36424a2f68b8f6965282b75eccbb0115477","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Object Versions"},{"line_number":35,"context_line":"---------------"},{"line_number":36,"context_line":"* When Object classes are modified, the following things need to be considered:"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":" - The change of fields and the signature of remotable method needs a bump of object"},{"line_number":39,"context_line":"   version."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a740942_3b59125b","line":36,"updated":"2015-12-05 04:05:35.000000000","message":"s/Object/Object (ironic.objects.base.IronicObject)/","commit_id":"6c1623a2ac8c1ee5b9c2628cf031e9274f08f434"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2c7fec622093a9e112b601fdb9cb63a3ccc337d3","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. _code-contribution-guide:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":"Code Contribution Guide for Ironic"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"This document provides some necessary points for developers to consider when"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a740942_a49b7971","line":4,"updated":"2015-12-07 11:41:29.000000000","message":"nit: \"for Ironic\" is redundant in the ironic documentation","commit_id":"0d75fa62e51dec14a06d8f089e213ca29b2e3aa4"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"dabb312ce5512b36215e02f880ac69a8c12ba25a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Live Upgrade Related Concerns"},{"line_number":12,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":13,"context_line":"Ironic implements upgrade with the same methodology of Nova:"},{"line_number":14,"context_line":"    http://docs.openstack.org/developer/nova/upgrade.html"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Ironic API RPC Versions"},{"line_number":17,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a740942_496bb4b7","line":14,"updated":"2015-12-07 19:18:11.000000000","message":"We should totally write our own version of this in the (near) future :)","commit_id":"0d75fa62e51dec14a06d8f089e213ca29b2e3aa4"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f415c2a8fb8adf224eb67bcd4662b674d90cd2f3","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":" - Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":23,"context_line":"   should both increment the RPC version by one and the RPC versions must be the same of"},{"line_number":24,"context_line":"   the client and server."},{"line_number":25,"context_line":" - New arguments of the method can only be added as optional. Existing arguments cannot be"},{"line_number":26,"context_line":"   removed or changed in incompatible ways (with the method in older RPC versions)."},{"line_number":27,"context_line":" - Client-side can pin a version cap by passing ``version_cap`` to the constructor"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a740942_0ca93a24","line":24,"updated":"2015-12-07 20:00:00.000000000","message":"I would avoid \u0027by one\u0027 cuz it might not be clear. eg, the value is 1.31 and we want it 1.32 not 2.31. It will be obvious when they look at the code.\n\nHow about \u0027The RPC version must be incremented and be the same value for both the client (conductor/rpcapi.py, used by ironic-api) and server (conductor/manager.py, used by ironic-conductor).","commit_id":"0d75fa62e51dec14a06d8f089e213ca29b2e3aa4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2c7fec622093a9e112b601fdb9cb63a3ccc337d3","unresolved":false,"context_lines":[{"line_number":28,"context_line":"   of oslo_messaging.RPCClient. Methods which change arguments should run"},{"line_number":29,"context_line":"   client.can_send_version() to see if the version of the request is compatible with the"},{"line_number":30,"context_line":"   version cap of RPC Client, otherwise the request needs to be created to work with a"},{"line_number":31,"context_line":"   previous version that is suppoted."},{"line_number":32,"context_line":" - Server-side should tolerate the older version of requests in order to keep"},{"line_number":33,"context_line":"   working during the progress of live upgrade. The behavior of server-side should"},{"line_number":34,"context_line":"   depend on the input parameters passed from the client-side."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a740942_44897525","line":31,"updated":"2015-12-07 11:41:29.000000000","message":"typo: supported","commit_id":"0d75fa62e51dec14a06d8f089e213ca29b2e3aa4"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"dabb312ce5512b36215e02f880ac69a8c12ba25a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"   objects need a version bump. The object fingerprint should only be updated with a"},{"line_number":54,"context_line":"   version bump."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a740942_49e09429","line":56,"updated":"2015-12-07 19:18:11.000000000","message":"Nit: blank lines should be removed","commit_id":"0d75fa62e51dec14a06d8f089e213ca29b2e3aa4"}],"doc/source/dev/code-review.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e82f5398a97a17b51803ac8f17c0853700ebeabc","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Ironic API RPC Versions"},{"line_number":16,"context_line":"------------------------------"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"*  When RPC method is modified, the following things need to consider:"},{"line_number":19,"context_line":"    * Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":20,"context_line":"      should both bump the RPC version."},{"line_number":21,"context_line":"    * The arguments of RPC API can only be added as optional, they cannot be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_3a1e0a0d","line":18,"updated":"2015-11-25 09:39:25.000000000","message":"1. to be considered\n\n2. indentation is too big here (see the rendered page), can it be fixed?","commit_id":"2ef76425cf60438732fa1739a222862dee2709f6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"cde23df8562e69256a5e54d999db4eb247e5d215","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Ironic API RPC Versions"},{"line_number":16,"context_line":"------------------------------"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"*  When RPC method is modified, the following things need to consider:"},{"line_number":19,"context_line":"    * Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":20,"context_line":"      should both bump the RPC version."},{"line_number":21,"context_line":"    * The arguments of RPC API can only be added as optional, they cannot be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_9ac7f611","line":18,"updated":"2015-11-25 09:48:16.000000000","message":"I think the RPC method is modified is a bit vague, cause modifying the code in the method is fine if it still behave same (raise the same exceptions, return the same data etc...).\n\nI think you mean the RPC method signature here?","commit_id":"2ef76425cf60438732fa1739a222862dee2709f6"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"05046b7efd50d291088a2d33dcabcbf2233dc2ad","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Ironic API RPC Versions"},{"line_number":16,"context_line":"------------------------------"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"*  When RPC method is modified, the following things need to consider:"},{"line_number":19,"context_line":"    * Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":20,"context_line":"      should both bump the RPC version."},{"line_number":21,"context_line":"    * The arguments of RPC API can only be added as optional, they cannot be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_58bfe8a9","line":18,"in_reply_to":"9a8ffd7b_9ac7f611","updated":"2015-11-27 08:56:49.000000000","message":"Yes, exactly. This is the correct word. :)","commit_id":"2ef76425cf60438732fa1739a222862dee2709f6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e82f5398a97a17b51803ac8f17c0853700ebeabc","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    * Client-side (conductor/rpcapi.py) and server-side (conductor/manager.py)"},{"line_number":20,"context_line":"      should both bump the RPC version."},{"line_number":21,"context_line":"    * The arguments of RPC API can only be added as optional, they cannot be"},{"line_number":22,"context_line":"      removed or changed in an incompatible way ."},{"line_number":23,"context_line":"    * Client-side can pin to a version cap. So methods should be able to"},{"line_number":24,"context_line":"      formulate the call to an older version, which depends on the version"},{"line_number":25,"context_line":"      cap."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_da1a5e17","line":22,"updated":"2015-11-25 09:39:25.000000000","message":"nit: space before dot.","commit_id":"2ef76425cf60438732fa1739a222862dee2709f6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e82f5398a97a17b51803ac8f17c0853700ebeabc","unresolved":false,"context_lines":[{"line_number":20,"context_line":"      should both bump the RPC version."},{"line_number":21,"context_line":"    * The arguments of RPC API can only be added as optional, they cannot be"},{"line_number":22,"context_line":"      removed or changed in an incompatible way ."},{"line_number":23,"context_line":"    * Client-side can pin to a version cap. So methods should be able to"},{"line_number":24,"context_line":"      formulate the call to an older version, which depends on the version"},{"line_number":25,"context_line":"      cap."},{"line_number":26,"context_line":"    * Server-side should tolerate the older version of calls in order to keep"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_fa1722eb","line":23,"updated":"2015-11-25 09:39:25.000000000","message":"sorry, I don\u0027t understand \"Client-side pin to a version cap\", could you elaborate for people like me who don\u0027t have deep understanding of our RPC layer?","commit_id":"2ef76425cf60438732fa1739a222862dee2709f6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e82f5398a97a17b51803ac8f17c0853700ebeabc","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Object Versions"},{"line_number":30,"context_line":"---------------------"},{"line_number":31,"context_line":"* When Object classes are modified, the following things need to consider:"},{"line_number":32,"context_line":"    * The change of fields and remotable methods needs a bump of object"},{"line_number":33,"context_line":"      version."},{"line_number":34,"context_line":"    * The arguments of methods can only be added as optional, they cannot be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_9ad37638","line":31,"updated":"2015-11-25 09:39:25.000000000","message":"ditto about indentation","commit_id":"2ef76425cf60438732fa1739a222862dee2709f6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e82f5398a97a17b51803ac8f17c0853700ebeabc","unresolved":false,"context_lines":[{"line_number":37,"context_line":"      deprecate the old one."},{"line_number":38,"context_line":"    * New attributes should be removed from the primitive in"},{"line_number":39,"context_line":"      obj_make_compatible() if the attribute was added after the target"},{"line_number":40,"context_line":"      version."},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_bad8ba54","line":40,"updated":"2015-11-25 09:39:25.000000000","message":"could you elaborate on this as well? I don\u0027t know what obj_make_compatible does without looking up the source code","commit_id":"2ef76425cf60438732fa1739a222862dee2709f6"}],"doc/source/index.rst":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fcfe7d8f91f90a3fdbef17b97c46bcc9c75e8c7a","unresolved":false,"context_lines":[{"line_number":66,"context_line":".. toctree::"},{"line_number":67,"context_line":"  dev/dev-quickstart"},{"line_number":68,"context_line":"  dev/vendor-passthru"},{"line_number":69,"context_line":"  dev/code-contribution-guide"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"API References"},{"line_number":72,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_e9589d58","line":69,"updated":"2015-12-01 22:22:31.000000000","message":"If you look at the generated index [1], you can see that we have a \u0027Contributing to Ironic\u0027 page (line 64). What do you think about putting this page under the dev/contributing page? (I was actually thinking of this as a subheading of the contributing page but it is probably fine if it is at the same level.\n\n[1] http://docs-draft.openstack.org/47/248647/3/check/gate-ironic-docs/6635551//doc/build/html/","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"},{"author":{"_account_id":14891,"name":"Lilia Sampaio","email":"liliars@lsd.ufcg.edu.br","username":"liliars"},"change_message_id":"3694ca631ee9109ca057ab1989fecf3aafc48bae","unresolved":false,"context_lines":[{"line_number":66,"context_line":".. toctree::"},{"line_number":67,"context_line":"  dev/dev-quickstart"},{"line_number":68,"context_line":"  dev/vendor-passthru"},{"line_number":69,"context_line":"  dev/code-contribution-guide"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"API References"},{"line_number":72,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_c52c6c9b","line":69,"in_reply_to":"9a8ffd7b_e9589d58","updated":"2015-12-02 16:33:33.000000000","message":"+1","commit_id":"82469967baa2483d05f8d28aa74090846a64bfea"}]}
