)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"597d060f3a9fc8f0f93aea52f78ce90bea0161b3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This is a proposal to get rid of Nova\u0027s use of python-${service}client"},{"line_number":10,"context_line":"for ${service} in glance, ironic, neutron, cinder, etc and replace them"},{"line_number":11,"context_line":"with the OpenStack SDK."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I9aadc5e653e9f5af0d47028ffe74eaf439658950"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9fb8cfa7_5a0ea13b","line":12,"updated":"2019-06-24 18:06:38.000000000","message":"add\n\n Implements: blueprint openstacksdk-in-nova","commit_id":"b18a8bf66ed87bf8982a41d9801aa15cda151f9a"}],"specs/train/approved/openstacksdk-in-nova.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6848f85ece5aa6c9d098e26496381f601498e1d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Use Cases"},{"line_number":28,"context_line":"---------"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"WIP"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_0fb7d7d7","line":30,"updated":"2019-06-04 19:33:38.000000000","message":"Heh, the commit message title should have a \"WIP:\" prefix IMO until this is clearly laid out because the path laid out by Chris/Eric in detail in the comments means this is going to be a multi-release/year effort and before we go down that road I\u0027d want to know we\u0027re investing our time in doing this and reviewing it for a justifiable reason.\n\nhttp://lists.openstack.org/pipermail/openstack-discuss/2019-May/005810.html summarizes the PTG discussion but only the what/how but not the why and I\u0027ve already forgotten besides \"eventually clouds.yaml so one config for all of these services that nova uses\", but as far as I know operators aren\u0027t clamoring for that. There is also the dog-fooding aspect of using the openstacksdk within/among the services so we can flesh it out and make it better for end users as well, but does that outweigh the cost of the multi-release/year churn of doing this?","commit_id":"cd7d18a3c4cce1e0e1cc052e3cc1ab6ef71eee51"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"96f077358df987e2f44e8ff36f86948e4f0d31a9","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Use Cases"},{"line_number":28,"context_line":"---------"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"WIP"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_6fabf31c","line":30,"in_reply_to":"9fb8cfa7_0fb7d7d7","updated":"2019-06-04 19:58:33.000000000","message":"Agree the motivations (whether phrased as use cases or otherwise) should be enumerated, which as I see it are (including the ones you mentioned):\n\n- Get rid of brittleness and tech debt of maintaining client libs and their touchpoints. For me this is the main thing making this worth doing.\n\n- Dogfood OpenstackSDK.\n\n- Consolidate service config to clouds.yaml. I think this should be mentioned but declared out of scope for this spec, as it\u0027s actually somewhat tangential, has operator and upgrade impact, and has more dependencies on the SDK.\n\nAnd I\u0027d like to mention that while it may turn out to be a multi-release/year project, it\u0027s really not a vast amount of work, or especially invasive, or particularly risky. It\u0027s a lot closer to mox removal than something like placement or cellsv2.","commit_id":"cd7d18a3c4cce1e0e1cc052e3cc1ab6ef71eee51"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"bb22f13404ce453d9a990fca873d5d4052962db4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"Use Cases"},{"line_number":28,"context_line":"---------"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"WIP"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_ef136365","line":30,"in_reply_to":"9fb8cfa7_6fabf31c","updated":"2019-06-04 20:03:31.000000000","message":"\u003e - Consolidate service config to clouds.yaml. I think this should be\n \u003e mentioned but declared out of scope for this spec, as it\u0027s actually\n \u003e somewhat tangential, has operator and upgrade impact, and has more\n \u003e dependencies on the SDK.\n\nI agree that this should be elsewhere because including it could likely hold up all the other good reasons because one could make a very strong point of \"why would I want two places to configure my service when I already have one?\" clouds.yaml makes _great_ sense for clients of multiple clouds, but not so much for a control plane service.\n\nGiven that, punting it (just it) until well down the road would be good","commit_id":"cd7d18a3c4cce1e0e1cc052e3cc1ab6ef71eee51"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"dcf58d2b5e6a30e9e1781e2e8af457fe5d8b767d","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"One possibility that was considered was to replace calls into"},{"line_number":56,"context_line":"``python-${service}client`` with methods that invoke the ``${service}`` APIs"},{"line_number":57,"context_line":"directly through the ksa adapter\u0027s ``get/put/etc`` primitives. This would entail"},{"line_number":58,"context_line":"effectively porting the ``python-${service}client`` code into nova. While this"},{"line_number":59,"context_line":"would give us the opportunity to clean things up, it would involve a lot of"},{"line_number":60,"context_line":"low-level work like version discovery/negotiation, input payload construction"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_9b2b0d93","line":57,"range":{"start_line":57,"start_character":79,"end_line":57,"end_character":80},"updated":"2019-06-04 19:08:24.000000000","message":"pep busted here","commit_id":"cd7d18a3c4cce1e0e1cc052e3cc1ab6ef71eee51"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f9b42447bdc6d6877b5a2958e9368928fface8a6","unresolved":false,"context_lines":[{"line_number":106,"context_line":"In addition, as new methods and services are supported by the OpenStack SDK,"},{"line_number":107,"context_line":"introducing them to Nova should be simpler and more reliable than the current"},{"line_number":108,"context_line":"methods."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Upgrade impact"},{"line_number":111,"context_line":"--------------"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_65aec12f","line":109,"updated":"2019-06-04 11:00:44.000000000","message":"Today nova functional tests rely on stubbing the external clients in different ways:\n* for neutron [1], cinder [2] the tests stub out the service with some python code \n* for placement [3] the tests import and set up a full placement service to be used.\n\nIt would be nice to see how the above proposed change will affect the functional testing in nova.\n\n[1] https://github.com/openstack/nova/blob/2ea6e6f8db9fc6cecf389cacdd0d82d8226b99fb/nova/tests/fixtures.py#L1206\n[2]https://github.com/openstack/nova/blob/2ea6e6f8db9fc6cecf389cacdd0d82d8226b99fb/nova/tests/fixtures.py#L1639\n[3] https://github.com/openstack/nova/blob/2ea6e6f8db9fc6cecf389cacdd0d82d8226b99fb/nova/tests/functional/fixtures.py#L46","commit_id":"cd7d18a3c4cce1e0e1cc052e3cc1ab6ef71eee51"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7c5d9aee78dc28bdc35f047acb3f280516bf8d4b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"In addition, as new methods and services are supported by the OpenStack SDK,"},{"line_number":107,"context_line":"introducing them to Nova should be simpler and more reliable than the current"},{"line_number":108,"context_line":"methods."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Upgrade impact"},{"line_number":111,"context_line":"--------------"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_af5fab3f","line":109,"in_reply_to":"9fb8cfa7_65aec12f","updated":"2019-06-04 20:12:24.000000000","message":"You can see placement in action here [4]. As you can see, the functional tests required zero changes, and the unit tests just needed a teeny bit of re-fixturing. (Note that the changes are okay; it\u0027s the dep chain that\u0027s broken.)\n\nLooking quickly at the neutron and cinder fixtures, they appear to be mostly stubbing out the nova-side wrappers around the client calls. If that\u0027s the case, the test changes will be likewise minimal, since I expect it\u0027s the guts of the nova-side wrapper that will change, leaving the actual contract of the wrapper the same.\n\n[4] https://review.opendev.org/#/c/656023/","commit_id":"cd7d18a3c4cce1e0e1cc052e3cc1ab6ef71eee51"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"dcf58d2b5e6a30e9e1781e2e8af457fe5d8b767d","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    * Introduce plumbing for the construction of an"},{"line_number":134,"context_line":"      openstack.connection.Connection object."},{"line_number":135,"context_line":"    * Replace invocations into ``python-${service}client`` one at a time, with"},{"line_number":136,"context_line":"      calls into the SDK\u0027s baremetal proxy. Once all calls are replaced, remove"},{"line_number":137,"context_line":"      ``python-${service}client`` from nova."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"* Replace the SchedulerReportClient\u0027s ksa Adapter with the SDK\u0027s placement"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_de6653ee","line":136,"range":{"start_line":136,"start_character":27,"end_line":136,"end_character":36},"updated":"2019-06-04 19:08:24.000000000","message":"$service","commit_id":"cd7d18a3c4cce1e0e1cc052e3cc1ab6ef71eee51"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Nova is using both ``python-${service}client`` and keystoneauth1 adapters to"},{"line_number":22,"context_line":"interact with other core services. Adding new services and features require"},{"line_number":23,"context_line":"work that may be duplicated across projects."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_7fc6fc4b","line":22,"range":{"start_line":22,"start_character":42,"end_line":22,"end_character":54},"updated":"2019-06-24 12:50:05.000000000","message":"This is a nice argument, but pretty far down on the priority list since we add interactions with other services extremely rarely (current work with cyborg being the exception to prove the rule).\n\nThe strong point here is \"new [...] features require work that may be duplicated...\" - meaning:\n\nWhen features or fixes are introduced in a $service on which Nova depends, python-${service}client needs to be brought to parity, then Nova needs to be brought to parity in its use of that client. Meanwhile, the SDK also has to be brought to parity as it is (supposed to be) used for the CLI. If we can cut the client out of that cycle, we reduce duplicated effort and streamline the process.\n\nand\n\nThe clients are carrying tech debt and legacy baggage that makes that tech debt tough to address. It also makes the clients difficult to maintain and use. Getting rid of the clients gets rid of the tech debt in one fell swoop.","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"As a developer on OpenStack, I would like to reduce the number of areas where"},{"line_number":29,"context_line":"maintenance must be performed when making changes related to the use of core"},{"line_number":30,"context_line":"OpenStack services."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"As an OpenStack project, Nova should make use of other projects in reliable and"},{"line_number":33,"context_line":"maintainable ways. To this end, we should use the OpenStack SDK for service to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_1fc5803c","line":30,"updated":"2019-06-24 12:50:05.000000000","message":"++","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":45,"context_line":"Target Services:"},{"line_number":46,"context_line":" * Ironic (python-ironicclient -\u003e Baremetal SDK)"},{"line_number":47,"context_line":" * Cinder (python-cinderclient -\u003e Block Storage SDK)"},{"line_number":48,"context_line":" * Glance (python-glanceclient -\u003e Image (v1/2?) SDK)"},{"line_number":49,"context_line":" * Neutron (python-neutronclient -\u003e Network SDK)"},{"line_number":50,"context_line":" * SchedulerReportClient (keystoneauth1 Adapter -\u003e OpenStack SDK Proxy)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_1fda6016","line":48,"range":{"start_line":48,"start_character":41,"end_line":48,"end_character":46},"updated":"2019-06-24 12:50:05.000000000","message":"v2","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":47,"context_line":" * Cinder (python-cinderclient -\u003e Block Storage SDK)"},{"line_number":48,"context_line":" * Glance (python-glanceclient -\u003e Image (v1/2?) SDK)"},{"line_number":49,"context_line":" * Neutron (python-neutronclient -\u003e Network SDK)"},{"line_number":50,"context_line":" * SchedulerReportClient (keystoneauth1 Adapter -\u003e OpenStack SDK Proxy)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"The **first phase** will consist of adding plumbing to construct an"},{"line_number":53,"context_line":"openstack.connection.Connection object to Nova components that interact with"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_3fd5e4e5","line":50,"range":{"start_line":50,"start_character":3,"end_line":50,"end_character":24},"updated":"2019-06-24 12:50:05.000000000","message":"call this \"Placement\"","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":53,"context_line":"openstack.connection.Connection object to Nova components that interact with"},{"line_number":54,"context_line":"other services using a ``python-${service}client``. The service proxy from this"},{"line_number":55,"context_line":"connection can then be used in place of existing keystoneauth1 Adapter to"},{"line_number":56,"context_line":"retrieve the endpoint to configure the client."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"The **second phase** will be to close any feature deficiencies identified in"},{"line_number":59,"context_line":"the OpenStack SDK. See `OpenStack SDK Changes`_ for details."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_5ff9b87d","line":56,"updated":"2019-06-24 12:50:05.000000000","message":"link to the (ready) code in progress: https://review.opendev.org/#/c/643664/","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"connection can then be used in place of existing keystoneauth1 Adapter to"},{"line_number":56,"context_line":"retrieve the endpoint to configure the client."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"The **second phase** will be to close any feature deficiencies identified in"},{"line_number":59,"context_line":"the OpenStack SDK. See `OpenStack SDK Changes`_ for details."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"The **third phase** will swap out individual API calls until the client is no"},{"line_number":62,"context_line":"longer needed."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"For SchedulerReportClient, replace the keystoneauth1 Adapter returned by"},{"line_number":65,"context_line":"``nova.utils.get_ksa_adapter(\u0027placement\u0027)`` with the SDK\u0027s placement proxy."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_9f34104c","line":62,"range":{"start_line":58,"start_character":0,"end_line":62,"end_character":14},"updated":"2019-06-24 12:50:05.000000000","message":"Putting these as \"second\" and \"third\" implies they\u0027re synchronous or have a hard dependency. I would cite this as a single phase:\n\nIteratively swap out individual API calls, identifying and closing gaps in SDK as necessary.","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"For SchedulerReportClient, replace the keystoneauth1 Adapter returned by"},{"line_number":65,"context_line":"``nova.utils.get_ksa_adapter(\u0027placement\u0027)`` with the SDK\u0027s placement proxy."},{"line_number":66,"context_line":"This should be transparent other than a small number of changes to mocks in"},{"line_number":67,"context_line":"tests. Eventually, the SDK may implement more support for placement. With the"},{"line_number":68,"context_line":"framework being in place, we can consider integrating such changes as they"},{"line_number":69,"context_line":"become available."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_7f227c03","line":66,"range":{"start_line":66,"start_character":5,"end_line":66,"end_character":14},"updated":"2019-06-24 12:50:05.000000000","message":"is -- link to code [1] (+A, but waiting on the base patch, which is waiting for this blueprint to be approved).\n\n[1] https://review.opendev.org/#/c/656023/","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":68,"context_line":"framework being in place, we can consider integrating such changes as they"},{"line_number":69,"context_line":"become available."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"The **final phase** will simply be to remove the now-deprecated clients and"},{"line_number":72,"context_line":"clean up any remaining helpers and fixtures."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"OpenStack SDK Changes"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_bf8554d1","line":71,"range":{"start_line":71,"start_character":49,"end_line":71,"end_character":63},"updated":"2019-06-24 12:50:05.000000000","message":"now-unused\n\n\"deprecated\" means we (or someone) recommends they no longer be used, which may or may not be true depending on whether/where they\u0027re used outside of Nova.","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":77,"context_line":"services than others, but at worst provides the same primitives as a"},{"line_number":78,"context_line":"keystoneauth1 Adapter. Development has started with Ironic, which has robust"},{"line_number":79,"context_line":"support within the OpenStack SDK. Other services will require additional work"},{"line_number":80,"context_line":"in the OpenStack SDK, or can need to be implemented using the API primitives"},{"line_number":81,"context_line":"provided by openstack.Proxy. It is more desirable to focus on expanding"},{"line_number":82,"context_line":"OpenStack SDK support for these projects rather than implementing them in Nova."},{"line_number":83,"context_line":"Since there is not a spec repo for OpenStack SDK, we will try to outline the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_7f67dc52","line":80,"range":{"start_line":80,"start_character":25,"end_line":80,"end_character":28},"updated":"2019-06-24 12:50:05.000000000","message":"may","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"missing helpers by service here."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"**Ironic**"},{"line_number":87,"context_line":"None"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"**Cinder**"},{"line_number":90,"context_line":"volumes.attach"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_1f76e007","line":87,"range":{"start_line":87,"start_character":0,"end_line":87,"end_character":4},"updated":"2019-06-24 12:50:05.000000000","message":"is this true, Dmitry?","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":154,"context_line":"Other deployer impact"},{"line_number":155,"context_line":"---------------------"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"None"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Developer impact"},{"line_number":160,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_df94c8ea","line":157,"range":{"start_line":157,"start_character":0,"end_line":157,"end_character":4},"updated":"2019-06-24 12:50:05.000000000","message":"Note to reviewers: This is true since we introduced ksa config opts universally (except cinder, see below). The change will be transparent to deployers.","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":184,"context_line":"  dustinc \u003cdustin.cowles@intel.com\u003e, efried \u003copenstack@fried.cc\u003e"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Other contributors:"},{"line_number":187,"context_line":"  mordred \u003cmordred@inaugust.com\u003e (OpenStack SDK)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Work Items"},{"line_number":190,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_5fda18e9","line":187,"updated":"2019-06-24 12:50:05.000000000","message":"Dmitry as well.","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":213,"context_line":"* OpenStack SDK support for using oslo.config options for keystoneauth1 adapter"},{"line_number":214,"context_line":"  settings."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"  * https://review.opendev.org/#/c/643601/"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"* Nova support for using keystoneauth1 config options for Cinder."},{"line_number":219,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_7f835caa","line":216,"range":{"start_line":216,"start_character":4,"end_line":216,"end_character":42},"updated":"2019-06-24 12:50:05.000000000","message":"merged and released in openstacksdk 0.31.0","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":223,"context_line":"Testing"},{"line_number":224,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"WIP"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_7f5a7c50","line":226,"range":{"start_line":226,"start_character":0,"end_line":226,"end_character":3},"updated":"2019-06-24 12:50:05.000000000","message":"Existing unit tests will need to be tweaked to assert calls to the SDK instead of the client. In cases where the client call was mocked, this should be a matter of swapping out that mock and its assertions. No significant additional unit testing should be required.\n\nExisting functional test cases should be adequate. Changes may be required in fixtures and other framework.\n\nExisting integration tests should continue to function seamlessly. This will be the litmus test of success.","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":229,"context_line":"Documentation Impact"},{"line_number":230,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"None"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_df192888","line":232,"range":{"start_line":232,"start_character":0,"end_line":232,"end_character":4},"updated":"2019-06-24 12:50:05.000000000","message":"Yup.\n\nI don\u0027t even know if a release note is necessary. What would it say?\n\n\"We\u0027ve changed some plumbing - let us know if you notice any leaks\" ?","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c19779ae0fe2619c4e9a91b22ffda7f3cd85c7d9","unresolved":false,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"* http://eavesdrop.openstack.org/irclogs/%23openstack-sdks/%23openstack-sdks.2019-05-20.log.html#t2019-05-20T13:48:07"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"* Ironic Implementation: https://review.opendev.org/#/c/643664/"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"History"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_7f083c2c","line":244,"range":{"start_line":244,"start_character":25,"end_line":244,"end_character":63},"updated":"2019-06-24 12:50:05.000000000","message":"use https://review.opendev.org/#/c/642899/ here (that\u0027s the bottom of the ironic series).","commit_id":"f3822b7bbc672b5de7fa358f1ef22509e5406435"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"597d060f3a9fc8f0f93aea52f78ce90bea0161b3","unresolved":false,"context_lines":[{"line_number":60,"context_line":"openstack.connection.Connection object to Nova components that interact with"},{"line_number":61,"context_line":"other services using a ``python-${service}client``. The service proxy from this"},{"line_number":62,"context_line":"connection can then be used in place of existing keystoneauth1 adapter to"},{"line_number":63,"context_line":"retrieve the endpoint to configure the client. This is in progress at [1]."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"The **main phase** will be to iterate through calls to the"},{"line_number":66,"context_line":"``python-${service}client`` and replace them with calls into the OpenStack SDK"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_1a2b4995","line":63,"range":{"start_line":63,"start_character":70,"end_line":63,"end_character":73},"updated":"2019-06-24 18:06:38.000000000","message":"Assuming this builds, I don\u0027t think it\u0027ll render as a link to your references below. There are a few ways to do this kind of footnoting - see the reference material: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#footnotes","commit_id":"b18a8bf66ed87bf8982a41d9801aa15cda151f9a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"---------"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As a developer on OpenStack, I would like to reduce the number of areas where"},{"line_number":36,"context_line":"maintenance must be performed when making changes related to the use of core"},{"line_number":37,"context_line":"OpenStack services."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"As a core OpenStack project, Nova should make use of other projects in reliable"},{"line_number":40,"context_line":"and maintainable ways. To this end, we should use the OpenStack SDK for service"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_c05c927e","line":37,"range":{"start_line":35,"start_character":0,"end_line":37,"end_character":19},"updated":"2019-06-28 16:10:54.000000000","message":"I guess an example for this is something like the volume-backed rebuild change for the compute service here:\n\nhttps://review.opendev.org/#/c/625893/\n\nwhich depends on a python-cinderclient change:\n\nhttps://review.opendev.org/#/c/622614/\n\nwhich itself depends on the cinder API change:\n\nhttps://review.opendev.org/#/c/606346/\n\nIf we used the SDK, we could potentially remove the middleman dependency on python-cinderclient and just hit the cinder API directly and not have to do the client release / minimum required version bump dance (which would also make testing in the gate easier since we wouldn\u0027t need to hack the test system to use LIBS_FROM_GIT in devstack [legacy jobs] or mess with required-projects for zuulv3 jobs).\n\n^ might be a decent example for your problem description if you need to respin or want to follow up with an example for clarification later.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"53cdc295e64e72c0c83f767e5fb89cc8661ca8ae","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"---------"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As a developer on OpenStack, I would like to reduce the number of areas where"},{"line_number":36,"context_line":"maintenance must be performed when making changes related to the use of core"},{"line_number":37,"context_line":"OpenStack services."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"As a core OpenStack project, Nova should make use of other projects in reliable"},{"line_number":40,"context_line":"and maintainable ways. To this end, we should use the OpenStack SDK for service"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_6aba37c1","line":37,"range":{"start_line":35,"start_character":0,"end_line":37,"end_character":19},"in_reply_to":"9fb8cfa7_67c032e2","updated":"2019-07-02 15:05:27.000000000","message":"\u003e i have not look too much at the sdk but i assume we can just do raw\n \u003e requests liek we do with the keystone auth adapter for endpoints\n \u003e that dont yet have a convince function in the sdk\n\nYup. Note this one-line change to cut SchedulerReportClient over to SDK:\n\nhttps://review.opendev.org/#/c/656023/8/nova/scheduler/client/report.py","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7b36489f6dd058fc18f78210652b036433c20307","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Use Cases"},{"line_number":33,"context_line":"---------"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As a developer on OpenStack, I would like to reduce the number of areas where"},{"line_number":36,"context_line":"maintenance must be performed when making changes related to the use of core"},{"line_number":37,"context_line":"OpenStack services."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"As a core OpenStack project, Nova should make use of other projects in reliable"},{"line_number":40,"context_line":"and maintainable ways. To this end, we should use the OpenStack SDK for service"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_67c032e2","line":37,"range":{"start_line":35,"start_character":0,"end_line":37,"end_character":19},"in_reply_to":"9fb8cfa7_c05c927e","updated":"2019-07-02 14:55:47.000000000","message":"it would require us to do an sdk release instead fo python-cinderclient instead but i think its still a win.\n\ni have not look too much at the sdk but i assume we can just do raw requests liek we do with the keystone auth adapter for endpoints that dont yet have a convince function in the sdk which is how we avoid the need for an sdk release and remove the middelman in your example.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":40,"context_line":"and maintainable ways. To this end, we should use the OpenStack SDK for service"},{"line_number":41,"context_line":"to service interaction in place of direct API or ``python-${service}client``"},{"line_number":42,"context_line":"implementations."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Proposed change"},{"line_number":46,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_a0b5de7f","line":43,"updated":"2019-06-28 16:10:54.000000000","message":"To maybe a lesser extent, as an OpenStack contributor in general, I would like to dog-food our own tooling (the sdk) so that developers working on the core services are using the same tools that end-users of the cloud would use which will (1) fill feature gaps in the sdk and (2) expand adoption and coverage which should make the sdk tooling more robust. Especially with the long-term goals of pushing OSC CLIs more and more to using the SDK rather than the legacy python-*client repos for interacting with the service APIs, this would compliment that goal.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7b36489f6dd058fc18f78210652b036433c20307","unresolved":false,"context_lines":[{"line_number":40,"context_line":"and maintainable ways. To this end, we should use the OpenStack SDK for service"},{"line_number":41,"context_line":"to service interaction in place of direct API or ``python-${service}client``"},{"line_number":42,"context_line":"implementations."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Proposed change"},{"line_number":46,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_2748fa85","line":43,"in_reply_to":"9fb8cfa7_a0b5de7f","updated":"2019-07-02 14:55:47.000000000","message":"this is one of the major wins i think.\n\npersonally i learned a lot by running a small dev cloud internally for my team, e.g. bugs that were only found becasue i was testing combindation of features that most peole would not know about.\n\ni think dog foodign the sdk by using it interally will expose similar bugs and we will improve the sdk as we work through them meaning end users dont have to deal with them.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":49,"context_line":"``python-${service}client`` and other methods across Nova in three phases for"},{"line_number":50,"context_line":"each of the target services."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Target Services:"},{"line_number":53,"context_line":" * Ironic (python-ironicclient -\u003e Baremetal SDK)"},{"line_number":54,"context_line":" * Cinder (python-cinderclient -\u003e Block Storage SDK)"},{"line_number":55,"context_line":" * Glance (python-glanceclient -\u003e Image v2 SDK)"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_20fb2e47","line":52,"updated":"2019-06-28 16:10:54.000000000","message":"Nova also uses barbican but through the castellan library so I guess we don\u0027t hit the barbican API directly (castellan is supposed to be an abstraction over the backing service I think so you can use barbican or vault, etc).","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":50,"context_line":"each of the target services."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Target Services:"},{"line_number":53,"context_line":" * Ironic (python-ironicclient -\u003e Baremetal SDK)"},{"line_number":54,"context_line":" * Cinder (python-cinderclient -\u003e Block Storage SDK)"},{"line_number":55,"context_line":" * Glance (python-glanceclient -\u003e Image v2 SDK)"},{"line_number":56,"context_line":" * Neutron (python-neutronclient -\u003e Network SDK)"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_20e24ea1","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":1},"updated":"2019-06-28 16:10:54.000000000","message":"Two formatting nits here:\n\n1. Nix the spaces on the bullet list.\n\n2. Add a new line before the bullet list\n\nhttp://logs.openstack.org/81/662881/8/check/openstack-tox-docs/a5fbbe7/html/specs/train/approved/openstacksdk-in-nova.html#proposed-change","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":54,"context_line":" * Cinder (python-cinderclient -\u003e Block Storage SDK)"},{"line_number":55,"context_line":" * Glance (python-glanceclient -\u003e Image v2 SDK)"},{"line_number":56,"context_line":" * Neutron (python-neutronclient -\u003e Network SDK)"},{"line_number":57,"context_line":" * Placement (keystoneauth1 adapter -\u003e OpenStack SDK Proxy)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"The **initial phase** will consist of adding plumbing to construct an"},{"line_number":60,"context_line":"openstack.connection.Connection object to Nova components that interact with"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_e01bd67d","line":57,"updated":"2019-06-28 16:10:54.000000000","message":"Presumably Cyborg falls into this camp as well - we just aren\u0027t using it yet but will rely on the sdk for nova\u0027s interaction with cyborg.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2790429746d0043a9555f903a9f8bd0c2bd05ab0","unresolved":false,"context_lines":[{"line_number":61,"context_line":"other services using a ``python-${service}client``. The service proxy from this"},{"line_number":62,"context_line":"connection can then be used in place of existing keystoneauth1 adapter to"},{"line_number":63,"context_line":"retrieve the endpoint to configure the client. This is in progress at"},{"line_number":64,"context_line":"[[#sdk_in_nova]_]."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"The **main phase** will be to iterate through calls to the"},{"line_number":67,"context_line":"``python-${service}client`` and replace them with calls into the OpenStack SDK"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_48a69bc3","line":64,"updated":"2019-06-27 16:45:20.000000000","message":"Nit: I am not a fan of linking to in progress changes in specs, but I will not block on them being here, as clearly some people find them helpful.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2790429746d0043a9555f903a9f8bd0c2bd05ab0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"until the client is no longer needed. During this phase, we will close"},{"line_number":69,"context_line":"feature deficiencies identified in the OpenStack SDK as necessary. See"},{"line_number":70,"context_line":"`OpenStack SDK Changes`_ for a list of identified deficiencies. This process is"},{"line_number":71,"context_line":"in progress for ``python-ironicclient`` at [[#sdk_for_ironic]_]."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"For Placement, replace the keystoneauth1 adapter returned by"},{"line_number":74,"context_line":"``nova.utils.get_ksa_adapter(\u0027placement\u0027)`` with the SDK\u0027s placement proxy."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_88a573a1","line":71,"updated":"2019-06-27 16:45:20.000000000","message":"Nit: for me I like the end goal, I don\u0027t think progress should block releasing the SDK fixes, which you might be implying here.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f15b0f32c89a14840e9af1d8d0698b826d2d1c10","unresolved":false,"context_lines":[{"line_number":68,"context_line":"until the client is no longer needed. During this phase, we will close"},{"line_number":69,"context_line":"feature deficiencies identified in the OpenStack SDK as necessary. See"},{"line_number":70,"context_line":"`OpenStack SDK Changes`_ for a list of identified deficiencies. This process is"},{"line_number":71,"context_line":"in progress for ``python-ironicclient`` at [[#sdk_for_ironic]_]."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"For Placement, replace the keystoneauth1 adapter returned by"},{"line_number":74,"context_line":"``nova.utils.get_ksa_adapter(\u0027placement\u0027)`` with the SDK\u0027s placement proxy."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_c8528b67","line":71,"in_reply_to":"9fb8cfa7_88a573a1","updated":"2019-06-27 16:55:23.000000000","message":"Definitely not, SDK fixes can be released any time. The dependency only flows one way.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7b36489f6dd058fc18f78210652b036433c20307","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The **final phase** will simply be to remove the now-unused clients and clean"},{"line_number":81,"context_line":"up any remaining helpers and fixtures."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"OpenStack SDK Changes"},{"line_number":84,"context_line":"---------------------"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_ea3aa7c2","line":82,"updated":"2019-07-02 14:55:47.000000000","message":"this might be covered later but i assume we will still use the same config values we already have for keystone and auth rather then using a cloud.yaml file.\n\nim hoping the answer is yes at least initially.\nsupport a clouds.yaml file might be nice at somepoint but requireing it woudl be an unnessary change so ill assume we will make this change transparent to operators modulo the need to install the sdk.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"53cdc295e64e72c0c83f767e5fb89cc8661ca8ae","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The **final phase** will simply be to remove the now-unused clients and clean"},{"line_number":81,"context_line":"up any remaining helpers and fixtures."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"OpenStack SDK Changes"},{"line_number":84,"context_line":"---------------------"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_0ae4dbdf","line":82,"in_reply_to":"9fb8cfa7_ea3aa7c2","updated":"2019-07-02 15:05:27.000000000","message":"Yes, work already done and released in SDK allows it to make use of the exact ksa oslo.config vars we\u0027re using today, so it\u0027s transparent.\n\nThere was concern expressed earlier about the merit of moving to clouds.yaml at all, so we punted that aspect from the current scope.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":92,"context_line":"OpenStack SDK support for these projects rather than implementing them in Nova."},{"line_number":93,"context_line":"Since there is not a spec repo for OpenStack SDK, we will try to outline the"},{"line_number":94,"context_line":"missing helpers by service here."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"| **Ironic**"},{"line_number":97,"context_line":"| node.get_console"},{"line_number":98,"context_line":"| node.inject_nmi"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_0b040b14","line":95,"updated":"2019-06-28 16:10:54.000000000","message":"I won\u0027t actually audit these since I\u0027m sure we\u0027ll hit whatever we need as it arises. The only thing that makes me slightly nervous is we likely don\u0027t have integration test coverage for many of these features.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":109,"context_line":"| volumes.attach"},{"line_number":110,"context_line":"| volumes.begin_detaching"},{"line_number":111,"context_line":"| volumes.detach"},{"line_number":112,"context_line":"| volumes.initialize_connection"},{"line_number":113,"context_line":"| volumes.migrate_volume_completion"},{"line_number":114,"context_line":"| volumes.reserve"},{"line_number":115,"context_line":"| volumes.roll_detaching"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_eb297789","line":112,"updated":"2019-06-28 16:10:54.000000000","message":"This...","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":111,"context_line":"| volumes.detach"},{"line_number":112,"context_line":"| volumes.initialize_connection"},{"line_number":113,"context_line":"| volumes.migrate_volume_completion"},{"line_number":114,"context_line":"| volumes.reserve"},{"line_number":115,"context_line":"| volumes.roll_detaching"},{"line_number":116,"context_line":"| volumes.terminate_connection"},{"line_number":117,"context_line":"| volumes.unreserve"},{"line_number":118,"context_line":"|"},{"line_number":119,"context_line":"| **Glance**"},{"line_number":120,"context_line":"| image.add_location"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_2b330ff8","line":117,"range":{"start_line":114,"start_character":0,"end_line":117,"end_character":19},"updated":"2019-06-28 16:10:54.000000000","message":"...and these (except maybe roll_detaching) are legacy cinder v2 API kind of things which we only use in nova for compatibility but if we actually got off the pot for migrating this stuff to new-style attachments we could eventually drop our old compat code, i.e. part of that is:\n\nhttps://review.opendev.org/541420\n\nhttps://review.opendev.org/549130\n\nThere might be other/better ways to do the migration on-demand than that latter patch, and I realize this is all unrelated to your spec, but I just wanted to whine about it a bit since those patches have been around for a long time now.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7b36489f6dd058fc18f78210652b036433c20307","unresolved":false,"context_lines":[{"line_number":119,"context_line":"| **Glance**"},{"line_number":120,"context_line":"| image.add_location"},{"line_number":121,"context_line":"|"},{"line_number":122,"context_line":"| **Neutron**"},{"line_number":123,"context_line":"| None"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Alternatives"},{"line_number":126,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_ca66c3ef","line":123,"range":{"start_line":122,"start_character":2,"end_line":123,"end_character":6},"updated":"2019-07-02 14:55:47.000000000","message":"that is surprising to me but ok :)\n\nim guessing its because all the things we support are in sdk rather then the sdk has full support for every neutorn api extension.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e0f99dc94d98c1f32f1e685cc50b6d9c040ff89f","unresolved":false,"context_lines":[{"line_number":119,"context_line":"| **Glance**"},{"line_number":120,"context_line":"| image.add_location"},{"line_number":121,"context_line":"|"},{"line_number":122,"context_line":"| **Neutron**"},{"line_number":123,"context_line":"| None"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Alternatives"},{"line_number":126,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_f33dbbbc","line":123,"range":{"start_line":122,"start_character":2,"end_line":123,"end_character":6},"in_reply_to":"9fb8cfa7_ca66c3ef","updated":"2019-07-02 22:27:47.000000000","message":"Richard Theis at IBM (back when I was there and we were working on OpenStack) did a lot of work to support neutron in the SDK so they could deprecate python-neutronclient and have OSC just use the SDK for neutron stuff.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":131,"context_line":"would entail effectively porting the ``python-${service}client`` code into"},{"line_number":132,"context_line":"nova. While this would give us the opportunity to clean things up, it would"},{"line_number":133,"context_line":"involve a lot of low-level work like version discovery/negotiation, input"},{"line_number":134,"context_line":"payload construction and validation, and output processing."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Data model impact"},{"line_number":137,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_cb57d300","line":134,"range":{"start_line":134,"start_character":58,"end_line":134,"end_character":59},"updated":"2019-06-28 16:10:54.000000000","message":",in other words, things the openstacksdk already provides.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":169,"context_line":"Other deployer impact"},{"line_number":170,"context_line":"---------------------"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"None"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Developer impact"},{"line_number":175,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_cba59304","line":172,"updated":"2019-06-28 16:10:54.000000000","message":"Well, package maintainers and deployment tools might need to install a new dependency for nova to work, right? IDK if nova is already pulling in the sdk somehow as a transitive dependency.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"53cdc295e64e72c0c83f767e5fb89cc8661ca8ae","unresolved":false,"context_lines":[{"line_number":169,"context_line":"Other deployer impact"},{"line_number":170,"context_line":"---------------------"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"None"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Developer impact"},{"line_number":175,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_0afdbb6d","line":172,"in_reply_to":"9fb8cfa7_2a119f05","updated":"2019-07-02 15:05:27.000000000","message":"All true.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7b36489f6dd058fc18f78210652b036433c20307","unresolved":false,"context_lines":[{"line_number":169,"context_line":"Other deployer impact"},{"line_number":170,"context_line":"---------------------"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"None"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Developer impact"},{"line_number":175,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_2a119f05","line":172,"in_reply_to":"9fb8cfa7_cba59304","updated":"2019-07-02 14:55:47.000000000","message":"yes the sdk would be a new depency at least as far as i can tell by looking at the kolla containers\nthey currently dont install the sdk in any container so packaging project would need to update the dependencies.\n\ndeployers shoudl not however as the package maintainer shoudl have already fixed this before it gets to them","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":175,"context_line":"----------------"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"By using the OpenStack SDK as the single method of contact with other services,"},{"line_number":178,"context_line":"the maintenance footprint can be reduced. This also moves us towards a more"},{"line_number":179,"context_line":"stable OpenStack SDK as more consumers generally mean more chances to find and"},{"line_number":180,"context_line":"resolve bugs."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"In addition, as new methods and services are supported by the OpenStack SDK,"},{"line_number":183,"context_line":"introducing them to Nova should be simpler and more reliable than the current"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_2b48ef59","line":180,"range":{"start_line":178,"start_character":42,"end_line":180,"end_character":13},"updated":"2019-06-28 16:10:54.000000000","message":"Yup I mentioned this above.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":179,"context_line":"stable OpenStack SDK as more consumers generally mean more chances to find and"},{"line_number":180,"context_line":"resolve bugs."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"In addition, as new methods and services are supported by the OpenStack SDK,"},{"line_number":183,"context_line":"introducing them to Nova should be simpler and more reliable than the current"},{"line_number":184,"context_line":"methods."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Upgrade impact"},{"line_number":187,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_eb77379f","line":184,"range":{"start_line":182,"start_character":0,"end_line":184,"end_character":8},"updated":"2019-06-28 16:10:54.000000000","message":"Yup, also mentioned above.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":210,"context_line":"   openstack.connection.Connection object for each ``$service``."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"3. For each target ``$service`` (excluding Placement), close"},{"line_number":213,"context_line":"   deficiencies in OpenStack SDK while replace invocations into"},{"line_number":214,"context_line":"   ``python-${service}client`` one at a time, with calls into the SDK\u0027s"},{"line_number":215,"context_line":"   ``$service`` proxy."},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_8bab1bd4","line":213,"range":{"start_line":213,"start_character":39,"end_line":213,"end_character":46},"updated":"2019-06-28 16:10:54.000000000","message":"replacing","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974e20cbd7535166168fa8025ed41c87bf0ea347","unresolved":false,"context_lines":[{"line_number":240,"context_line":"Existing functional test cases should be adequate. Changes may be required in"},{"line_number":241,"context_line":"fixtures and other framework."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"Existing integration tests should continue to function seamlessly. This will be"},{"line_number":244,"context_line":"the litmus test of success."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9fb8cfa7_8bc23b84","line":244,"range":{"start_line":243,"start_character":67,"end_line":244,"end_character":27},"updated":"2019-06-28 16:10:54.000000000","message":"Sure, except as noted for the features/scenarios where we\u0027re changing something that isn\u0027t covered by tempest integration testing, but that might be hard to determine.","commit_id":"13184aea4b7f54c4c980334441e5ac342dac9662"}]}
