)]}'
{"specs/approved/container-infrastructure.rst":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dffed21c4ed07f90045b9b9df128c0695071bd1b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://storyboard.openstack.org/#!/story/XXXXXXX"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"OpenStack\u0027s Bare Metal as a Service project has long served to solve an"},{"line_number":14,"context_line":"important problem in the deployment and management of infrastucture."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_2d3fec23","line":12,"updated":"2018-12-18 10:17:40.000000000","message":"Perhaps a short comment up front stating the futuristic, hand wavey, all-encompassing nature of this spec to set the reader\u0027s expectations?","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://storyboard.openstack.org/#!/story/XXXXXXX"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"OpenStack\u0027s Bare Metal as a Service project has long served to solve an"},{"line_number":14,"context_line":"important problem in the deployment and management of infrastucture."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_d721e5b4","line":12,"in_reply_to":"3f79a3b5_2d3fec23","updated":"2018-12-20 18:41:01.000000000","message":"Great idea!","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dffed21c4ed07f90045b9b9df128c0695071bd1b","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"At the same time, the capabilitites that we have don\u0027t always need"},{"line_number":28,"context_line":"all of the same supporting infrastucture. As such, we should evolve"},{"line_number":29,"context_line":"to better support living with and co-existing with containers given"},{"line_number":30,"context_line":"so many deployers of containers are already using Ironic."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_cda438ba","line":29,"range":{"start_line":29,"start_character":51,"end_line":29,"end_character":61},"updated":"2018-12-18 10:17:40.000000000","message":"Can we make it clear that this is about deploying ironic within existing container-based infrastructure, rather than using ironic to deploy containers.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"At the same time, the capabilitites that we have don\u0027t always need"},{"line_number":28,"context_line":"all of the same supporting infrastucture. As such, we should evolve"},{"line_number":29,"context_line":"to better support living with and co-existing with containers given"},{"line_number":30,"context_line":"so many deployers of containers are already using Ironic."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_f71e6170","line":29,"range":{"start_line":29,"start_character":51,"end_line":29,"end_character":61},"in_reply_to":"3f79a3b5_cda438ba","updated":"2018-12-20 18:41:01.000000000","message":"Absolutely","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dffed21c4ed07f90045b9b9df128c0695071bd1b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"to better support living with and co-existing with containers given"},{"line_number":30,"context_line":"so many deployers of containers are already using Ironic."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Problem description"},{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Users want an application, such as ironic, that can be their swiss-army knife"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_6dc6446d","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":19},"updated":"2018-12-18 10:17:40.000000000","message":"We state here which dependencies deployers of containers don\u0027t like or want, but we don\u0027t really describe the typical environments that do exist. I think that would help provide some context.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"to better support living with and co-existing with containers given"},{"line_number":30,"context_line":"so many deployers of containers are already using Ironic."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Problem description"},{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Users want an application, such as ironic, that can be their swiss-army knife"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_c926aeb8","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":19},"in_reply_to":"3f79a3b5_6dc6446d","updated":"2019-01-04 22:20:00.000000000","message":"I think that is fair.  I\u0027m sure we can add words, but I think largely it is an adoption barrier sort of issue, so they presently don\u0027t want to because of the extra requirements beyond the base service.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dffed21c4ed07f90045b9b9df128c0695071bd1b","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Problem description"},{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Users want an application, such as ironic, that can be their swiss-army knife"},{"line_number":36,"context_line":"to manage thier baremetal nodes."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_ad79bcfa","line":34,"updated":"2018-12-18 10:17:40.000000000","message":"Given that this is such a broad, blue sky spec, I\u0027d like to see more focus on the problem  description rather than the proposed solution. Of course a strawman solution is also useful.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Problem description"},{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Users want an application, such as ironic, that can be their swiss-army knife"},{"line_number":36,"context_line":"to manage thier baremetal nodes."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_0904b614","line":34,"in_reply_to":"3f79a3b5_8166c052","updated":"2019-01-04 22:20:00.000000000","message":"s/problem/problems/ ;)","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Problem description"},{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Users want an application, such as ironic, that can be their swiss-army knife"},{"line_number":36,"context_line":"to manage thier baremetal nodes."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_d7fa4511","line":34,"in_reply_to":"3f79a3b5_ad79bcfa","updated":"2018-12-20 18:41:01.000000000","message":"Mark, Do you feel that it would just be better to explicitly state the problem in clear text? I feel like it would be controversial and I guess I jumped one level down to individual hurdles....","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"d32ac2c438b39d92a1e16b091b0e72256bf1aa69","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Problem description"},{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Users want an application, such as ironic, that can be their swiss-army knife"},{"line_number":36,"context_line":"to manage thier baremetal nodes."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_8166c052","line":34,"in_reply_to":"3f79a3b5_d7fa4511","updated":"2018-12-21 09:41:27.000000000","message":"It probably would be controversial, but that doesn\u0027t mean it wouldn\u0027t be useful. The reader needs to be convinced that there is a problem to solve :)","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e9ae55fc7ffd10fc13fd69345b943cfe0676e388","unresolved":false,"context_lines":[{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Users want an application, such as ironic, that can be their swiss-army knife"},{"line_number":36,"context_line":"to manage thier baremetal nodes."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Ironic presently requires the use of two external services to help facilitate"},{"line_number":39,"context_line":"and ensure overall redundancy."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_dae5973e","line":36,"range":{"start_line":36,"start_character":10,"end_line":36,"end_character":15},"updated":"2018-12-20 09:14:21.000000000","message":"their","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"10d42af21d83aa2454c0f2263d9b09f0bdc5fb15","unresolved":false,"context_lines":[{"line_number":41,"context_line":"* MySQL for durable data storage which is leveraged by both the API and"},{"line_number":42,"context_line":"  conductor portion of Ironic."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* RabbitMQ for reliable and distributed data transport between API and"},{"line_number":45,"context_line":"  conductor processeses."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* A third, unnamed service, is required for load balancing and failover of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_077a8623","line":44,"updated":"2018-12-22 19:42:31.000000000","message":"nit: any AMQP provider","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"* MySQL for durable data storage which is leveraged by both the API and"},{"line_number":42,"context_line":"  conductor portion of Ironic."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* RabbitMQ for reliable and distributed data transport between API and"},{"line_number":45,"context_line":"  conductor processeses."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* A third, unnamed service, is required for load balancing and failover of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_6b5c5a4b","line":44,"in_reply_to":"1f769fc5_077a8623","updated":"2019-01-04 22:20:00.000000000","message":"Well, essentially the only oslo messaging option is slowly becoming rabbit based but yeah :\\","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dffed21c4ed07f90045b9b9df128c0695071bd1b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"* MySQL for durable data storage which is leveraged by both the API and"},{"line_number":42,"context_line":"  conductor portion of Ironic."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* RabbitMQ for reliable and distributed data transport between API and"},{"line_number":45,"context_line":"  conductor processeses."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* A third, unnamed service, is required for load balancing and failover of"},{"line_number":48,"context_line":"  API endpoints. While Conductors can reference specific API endpoints,"},{"line_number":49,"context_line":"  users of the API generally want to be able to find out the status of their"},{"line_number":50,"context_line":"  baremetal nodes as the scale (and redundancy requirements) of a deployment"},{"line_number":51,"context_line":"  increases."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"As with this, Ironic is presently only available as two distinct services that"},{"line_number":54,"context_line":"work in concert."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_2ddb6ceb","line":51,"range":{"start_line":44,"start_character":0,"end_line":51,"end_character":12},"updated":"2018-12-18 10:17:40.000000000","message":"If we were to rip only these out, we\u0027d still end up with only a single external dependency, without needing to switch to etcd (which sounds like a lot of work).","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e9ae55fc7ffd10fc13fd69345b943cfe0676e388","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  API endpoints. While Conductors can reference specific API endpoints,"},{"line_number":49,"context_line":"  users of the API generally want to be able to find out the status of their"},{"line_number":50,"context_line":"  baremetal nodes as the scale (and redundancy requirements) of a deployment"},{"line_number":51,"context_line":"  increases."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"As with this, Ironic is presently only available as two distinct services that"},{"line_number":54,"context_line":"work in concert."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_fad97381","line":51,"range":{"start_line":51,"start_character":2,"end_line":51,"end_character":11},"updated":"2018-12-20 09:14:21.000000000","message":"how is that implemented currently? are people putting load balancers on top of ironic api?","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":41,"context_line":"* MySQL for durable data storage which is leveraged by both the API and"},{"line_number":42,"context_line":"  conductor portion of Ironic."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* RabbitMQ for reliable and distributed data transport between API and"},{"line_number":45,"context_line":"  conductor processeses."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* A third, unnamed service, is required for load balancing and failover of"},{"line_number":48,"context_line":"  API endpoints. While Conductors can reference specific API endpoints,"},{"line_number":49,"context_line":"  users of the API generally want to be able to find out the status of their"},{"line_number":50,"context_line":"  baremetal nodes as the scale (and redundancy requirements) of a deployment"},{"line_number":51,"context_line":"  increases."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"As with this, Ironic is presently only available as two distinct services that"},{"line_number":54,"context_line":"work in concert."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_1a0a241e","line":51,"range":{"start_line":44,"start_character":0,"end_line":51,"end_character":12},"in_reply_to":"3f79a3b5_2ddb6ceb","updated":"2018-12-20 18:41:01.000000000","message":"++ although I\u0027m not sure etcd would be too horrible. Then again, it would likely be better to go hack on it and see.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  API endpoints. While Conductors can reference specific API endpoints,"},{"line_number":49,"context_line":"  users of the API generally want to be able to find out the status of their"},{"line_number":50,"context_line":"  baremetal nodes as the scale (and redundancy requirements) of a deployment"},{"line_number":51,"context_line":"  increases."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"As with this, Ironic is presently only available as two distinct services that"},{"line_number":54,"context_line":"work in concert."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_fa0c0838","line":51,"range":{"start_line":51,"start_character":2,"end_line":51,"end_character":11},"in_reply_to":"3f79a3b5_fad97381","updated":"2018-12-20 18:41:01.000000000","message":"Yolanda, How is API redundancy handled? Generally people do put load balancers in front of the API. The main clients being Nova and an operator enrolling or manually using ironic. Each request is sent to the appropriate conductor via the message bus which picks up the RPC call over the message bus and proceeds to perform the requested action.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dffed21c4ed07f90045b9b9df128c0695071bd1b","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Some might view the answer to simply place everything inside a container."},{"line_number":61,"context_line":"This may be acceptable for temporary deployments, but containers are intended"},{"line_number":62,"context_line":"to be ephemeral and easily replacable which means the container can not hold"},{"line_number":63,"context_line":"anything that cannot be reconstructed."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. NOTE:"},{"line_number":66,"context_line":"   Out of scope of this problem is DHCP management. This is because users"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_ed59f467","line":63,"range":{"start_line":62,"start_character":54,"end_line":63,"end_character":37},"updated":"2018-12-18 10:17:40.000000000","message":"Are we aiming to avoid the use of volumes?","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"d32ac2c438b39d92a1e16b091b0e72256bf1aa69","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Some might view the answer to simply place everything inside a container."},{"line_number":61,"context_line":"This may be acceptable for temporary deployments, but containers are intended"},{"line_number":62,"context_line":"to be ephemeral and easily replacable which means the container can not hold"},{"line_number":63,"context_line":"anything that cannot be reconstructed."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. NOTE:"},{"line_number":66,"context_line":"   Out of scope of this problem is DHCP management. This is because users"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_e1ac5439","line":63,"range":{"start_line":62,"start_character":54,"end_line":63,"end_character":37},"in_reply_to":"3f79a3b5_9a1f145c","updated":"2018-12-21 09:41:27.000000000","message":"That would be ideal. How far are we from that goal? PXE config gets reconstructed on take over, but not on start up of a new service with the same name. Would this imply that every new container is effectively a new conductor host, even if we\u0027re just updating the container image? A local volume (as used in kolla-ansible) would avoid this, meaning a conductor host could outlive a single container instance. Perhaps that\u0027s not the k8s way though.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Some might view the answer to simply place everything inside a container."},{"line_number":61,"context_line":"This may be acceptable for temporary deployments, but containers are intended"},{"line_number":62,"context_line":"to be ephemeral and easily replacable which means the container can not hold"},{"line_number":63,"context_line":"anything that cannot be reconstructed."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. NOTE:"},{"line_number":66,"context_line":"   Out of scope of this problem is DHCP management. This is because users"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_ee1e186f","line":63,"range":{"start_line":62,"start_character":54,"end_line":63,"end_character":37},"in_reply_to":"3f79a3b5_e1ac5439","updated":"2019-01-04 22:20:00.000000000","message":"I\u0027m sitting here wondering why we don\u0027t if the hostname is the same. I feel like we should... but I\u0027m sure there was some reason there.... select from brain when record_age \u003e \u00273 years\u0027;\n\nHonestly, I think reconstruction of boot environment and the downloads are the reason why we don\u0027t... but it feels like that has bitten operators that we don\u0027t do that by default based on our state data.... And I think it is really just that one part upon all of the startup and takeover logic triggering.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Some might view the answer to simply place everything inside a container."},{"line_number":61,"context_line":"This may be acceptable for temporary deployments, but containers are intended"},{"line_number":62,"context_line":"to be ephemeral and easily replacable which means the container can not hold"},{"line_number":63,"context_line":"anything that cannot be reconstructed."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. NOTE:"},{"line_number":66,"context_line":"   Out of scope of this problem is DHCP management. This is because users"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_9a1f145c","line":63,"range":{"start_line":62,"start_character":54,"end_line":63,"end_character":37},"in_reply_to":"3f79a3b5_ed59f467","updated":"2018-12-20 18:41:01.000000000","message":"I was thinking we should aim to be ephemeral in operation.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e9ae55fc7ffd10fc13fd69345b943cfe0676e388","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Alternatively, and possibly preferably, we could leverage a Kubernetes"},{"line_number":81,"context_line":"Custom Resource Definition[2], which is based on etcd."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Regardless of the implementation detail of where we could store our state and"},{"line_number":84,"context_line":"inventory information, we essentially would be leveraging a key/value store"},{"line_number":85,"context_line":"infrastucture for those that do not wish to utilize MySQL."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_7a3483aa","line":83,"range":{"start_line":83,"start_character":0,"end_line":83,"end_character":10},"updated":"2018-12-20 09:14:21.000000000","message":"We could aim to have a pluggable data engine, so people could use mysql, etcd ... or any others, adding a layer that translates the ironic objects into the schema needed for each specific datastore","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Alternatively, and possibly preferably, we could leverage a Kubernetes"},{"line_number":81,"context_line":"Custom Resource Definition[2], which is based on etcd."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Regardless of the implementation detail of where we could store our state and"},{"line_number":84,"context_line":"inventory information, we essentially would be leveraging a key/value store"},{"line_number":85,"context_line":"infrastucture for those that do not wish to utilize MySQL."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_ba2450b2","line":83,"range":{"start_line":83,"start_character":0,"end_line":83,"end_character":10},"in_reply_to":"3f79a3b5_7a3483aa","updated":"2018-12-20 18:41:01.000000000","message":"We kind of already do... It is slightly mislabeled and sqlalchemy specific right now.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dffed21c4ed07f90045b9b9df128c0695071bd1b","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Regardless of the implementation detail of where we could store our state and"},{"line_number":84,"context_line":"inventory information, we essentially would be leveraging a key/value store"},{"line_number":85,"context_line":"infrastucture for those that do not wish to utilize MySQL."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Key/Value Storage"},{"line_number":88,"context_line":"~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_adae9c2e","line":85,"range":{"start_line":85,"start_character":29,"end_line":85,"end_character":57},"updated":"2018-12-18 10:17:40.000000000","message":"Seems to me that containers should make it easy to use whatever data store you like, but hey.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Regardless of the implementation detail of where we could store our state and"},{"line_number":84,"context_line":"inventory information, we essentially would be leveraging a key/value store"},{"line_number":85,"context_line":"infrastucture for those that do not wish to utilize MySQL."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Key/Value Storage"},{"line_number":88,"context_line":"~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_6e5c684b","line":85,"range":{"start_line":85,"start_character":29,"end_line":85,"end_character":57},"in_reply_to":"3f79a3b5_a16f3cf9","updated":"2019-01-04 22:20:00.000000000","message":"Recovering broken rabbit or mysql clusters is the operator side of the conundrum. #itispainfultodo.\n\nI think eventual consistency is not a bad way to approach that class of problem, especially at smaller scale because things could drop down to a single operational node, where as Galera shuts down by default.  Guess it all kind of goes to the user contract and reconciliation of the data store.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Regardless of the implementation detail of where we could store our state and"},{"line_number":84,"context_line":"inventory information, we essentially would be leveraging a key/value store"},{"line_number":85,"context_line":"infrastucture for those that do not wish to utilize MySQL."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Key/Value Storage"},{"line_number":88,"context_line":"~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_da282c81","line":85,"range":{"start_line":85,"start_character":29,"end_line":85,"end_character":57},"in_reply_to":"3f79a3b5_adae9c2e","updated":"2018-12-20 18:41:01.000000000","message":"It seems that people just want to use \"etcd\" or k8s CRDs because that just works and resolves the consistency issues that one gets with replicated databases. I guess the difference is absolute consistency versus eventual consistency.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"d32ac2c438b39d92a1e16b091b0e72256bf1aa69","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Regardless of the implementation detail of where we could store our state and"},{"line_number":84,"context_line":"inventory information, we essentially would be leveraging a key/value store"},{"line_number":85,"context_line":"infrastucture for those that do not wish to utilize MySQL."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Key/Value Storage"},{"line_number":88,"context_line":"~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_a16f3cf9","line":85,"range":{"start_line":85,"start_character":29,"end_line":85,"end_character":57},"in_reply_to":"3f79a3b5_da282c81","updated":"2018-12-21 09:41:27.000000000","message":"Isn\u0027t that a problem for the application developers (i.e. us) rather than operators though?","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"9b0002be8cfe52eeaeac6b1d30d93aab3f84ddba","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Regardless of the implementation detail of where we could store our state and"},{"line_number":84,"context_line":"inventory information, we essentially would be leveraging a key/value store"},{"line_number":85,"context_line":"infrastucture for those that do not wish to utilize MySQL."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Key/Value Storage"},{"line_number":88,"context_line":"~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bfdaf3ff_236144d4","line":85,"range":{"start_line":85,"start_character":29,"end_line":85,"end_character":57},"in_reply_to":"ffd0ebdf_6e5c684b","updated":"2019-01-17 14:17:13.000000000","message":"Just pointing out that etcd has strong consistency guarantees. https://coreos.com/etcd/docs/latest/learning/api_guarantees.html. Without quorum, I think etcd will also stop working. I believe the difference with galera is that etcd should be able to recover automatically when quorum returns. https://coreos.com/etcd/docs/latest/op-guide/recovery.html","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dffed21c4ed07f90045b9b9df128c0695071bd1b","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Example::"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  {\"ironic-nodes-395\": {\"id\": \"395\", \"name\": \"random node 395\","},{"line_number":99,"context_line":"                        \"driver\": \"ipmi\"..."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Essentially we would result with a data model that would be applied to a"},{"line_number":102,"context_line":"schema-less data store, that is reconstructed into a list of nodes with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_0d2b109a","line":99,"range":{"start_line":98,"start_character":2,"end_line":99,"end_character":43},"updated":"2018-12-18 10:17:40.000000000","message":"Guess we\u0027d also need some lookups e.g. name to UUID?","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"10d42af21d83aa2454c0f2263d9b09f0bdc5fb15","unresolved":false,"context_lines":[{"line_number":96,"context_line":"Example::"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  {\"ironic-nodes-395\": {\"id\": \"395\", \"name\": \"random node 395\","},{"line_number":99,"context_line":"                        \"driver\": \"ipmi\"..."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Essentially we would result with a data model that would be applied to a"},{"line_number":102,"context_line":"schema-less data store, that is reconstructed into a list of nodes with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_a776323e","line":99,"updated":"2018-12-22 19:42:31.000000000","message":"we also have lookup by instance UUID. and overall we need to make sure we do secondaty indexes right.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"Example::"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  {\"ironic-nodes-395\": {\"id\": \"395\", \"name\": \"random node 395\","},{"line_number":99,"context_line":"                        \"driver\": \"ipmi\"..."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Essentially we would result with a data model that would be applied to a"},{"line_number":102,"context_line":"schema-less data store, that is reconstructed into a list of nodes with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_ce9474eb","line":99,"in_reply_to":"1f769fc5_7dcf2b7f","updated":"2019-01-04 22:20:00.000000000","message":"I suspect this sort of ironic use would never have nova communicating with it, so I kind of doubt that we would have instance_uuid driven lookups. That being said, for the use gaps, I was kind of thinking as Mark is... we would have to filter inside the code that bridges our object model to the key/value store backend. Kind of similar actually to how sqlalchemy code would work today, we would just do looping locally after retrieving the data instead of asking the sql server to do all of that work for us.\n\nI also kind of envision this for smaller pools of hardware so not really a big deal in the grand scheme of the universe as long as the tcp socket is already open to the data store.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"e4c604a07c8b9ae5bb47667b1293bc41f7102073","unresolved":false,"context_lines":[{"line_number":96,"context_line":"Example::"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  {\"ironic-nodes-395\": {\"id\": \"395\", \"name\": \"random node 395\","},{"line_number":99,"context_line":"                        \"driver\": \"ipmi\"..."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Essentially we would result with a data model that would be applied to a"},{"line_number":102,"context_line":"schema-less data store, that is reconstructed into a list of nodes with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_7dcf2b7f","line":99,"in_reply_to":"1f769fc5_a776323e","updated":"2018-12-27 10:57:58.000000000","message":"There is also filtering, e.g. show me all the nodes with driver X. Or sorting results by a field.\n\nCurrently we can lean on the DB to do those things, whereas I think in etcd we\u0027d need to filter in the API/conductor.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Example::"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  {\"ironic-nodes-395\": {\"id\": \"395\", \"name\": \"random node 395\","},{"line_number":99,"context_line":"                        \"driver\": \"ipmi\"..."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Essentially we would result with a data model that would be applied to a"},{"line_number":102,"context_line":"schema-less data store, that is reconstructed into a list of nodes with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_5a15fc38","line":99,"range":{"start_line":98,"start_character":2,"end_line":99,"end_character":43},"in_reply_to":"3f79a3b5_0d2b109a","updated":"2018-12-20 18:41:01.000000000","message":"That is a good point, it is a commonly hit field, and it would be better to use that in the name key as well so we can just pull list of keys/value pairs, and then retrieve the specific k/v pair.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"10d42af21d83aa2454c0f2263d9b09f0bdc5fb15","unresolved":false,"context_lines":[{"line_number":141,"context_line":"One of the the desired aspects of deploying Ironic into containers is to"},{"line_number":142,"context_line":"limit the existence of multiple services that are required. A single process"},{"line_number":143,"context_line":"would be ideal. For existing use patterns where RPC is utilized,"},{"line_number":144,"context_line":"the oslo.messaging library[4] supplies a ``fake`` RPC driver."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"It should be recognized that there are still valid deployment cases where"},{"line_number":147,"context_line":"an intermediate RPC layer is desirable and needed, but for the use case"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_c7732e4d","line":144,"updated":"2018-12-22 19:42:31.000000000","message":"I\u0027m still a hard nope on recommending the \"fake\" driver in this context. If our RPC sucks (and it does), we should fix them, not provide a convenient way for people to shoot their legs while trying to save some MiB of memory.. Also https://docs.openstack.org/oslo.messaging/latest/admin/drivers.html#fake clearly indicates that the fake driver is only for testing.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":141,"context_line":"One of the the desired aspects of deploying Ironic into containers is to"},{"line_number":142,"context_line":"limit the existence of multiple services that are required. A single process"},{"line_number":143,"context_line":"would be ideal. For existing use patterns where RPC is utilized,"},{"line_number":144,"context_line":"the oslo.messaging library[4] supplies a ``fake`` RPC driver."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"It should be recognized that there are still valid deployment cases where"},{"line_number":147,"context_line":"an intermediate RPC layer is desirable and needed, but for the use case"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_2e60a0ce","line":144,"in_reply_to":"1f769fc5_c7732e4d","updated":"2019-01-04 22:20:00.000000000","message":"Apparently what was done for launching heat in tripleo, was a special wrapper that set it up and launched both instances. I _do_ have some consensus on an alias name for what it is worth.\n\nThere is a important delineation with this spec that your statement that your a \"hard nope on recommending\". I\u0027m not saying we do everything here, I\u0027m only suggesting a body of work that we treat as POCs. If those ideas stick, then we allow them to become part of ironic instead of attempting to reach absolute design consensus in advance. Since largely, the specs process is designed to slow velocity. Maybe if we allow ourselves to experiment a little more, perhaps we can find an even better way forward?\n\nThat being said, your json-rpc idea below would technically replace the need for single process ironic if users are willing to fashion calls to that json-rpc directly. If we\u0027re able to still service both on a conductor, that could be a really powerful feature imho.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"10d42af21d83aa2454c0f2263d9b09f0bdc5fb15","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"It should be recognized that there are still valid deployment cases where"},{"line_number":147,"context_line":"an intermediate RPC layer is desirable and needed, but for the use case"},{"line_number":148,"context_line":"being discussed, the redundancy is managed by outside processes."},{"line_number":149,"context_line":"Any command should be expected to be executed upon the process that"},{"line_number":150,"context_line":"the command is receieved by. This will likely require some modifications"},{"line_number":151,"context_line":"of task execution model."}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_678eda28","line":148,"updated":"2018-12-22 19:42:31.000000000","message":"Well, this is not how RPC is usually done, and this is the cause of troubles here. If we go into the effort of supporting etcd as a persistence backend, why not bother with well using RPC for RPC? I think it will be much simpler to map the current RPC semantics into something like JSON-RPC than to map the current sqlalchemy semantics into etcd..","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"It should be recognized that there are still valid deployment cases where"},{"line_number":147,"context_line":"an intermediate RPC layer is desirable and needed, but for the use case"},{"line_number":148,"context_line":"being discussed, the redundancy is managed by outside processes."},{"line_number":149,"context_line":"Any command should be expected to be executed upon the process that"},{"line_number":150,"context_line":"the command is receieved by. This will likely require some modifications"},{"line_number":151,"context_line":"of task execution model."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_6eab08d6","line":148,"in_reply_to":"1f769fc5_678eda28","updated":"2019-01-04 22:20:00.000000000","message":"I\u0027m not sure what your getting at here? Are you suggesting we completely drop all data storage use and only operate on a json-rpc call?","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"10d42af21d83aa2454c0f2263d9b09f0bdc5fb15","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":".. NOTE::"},{"line_number":154,"context_line":"   Locking and task execution capabilities are vitial to such model."},{"line_number":155,"context_line":"   This may be as simple as leveraging ``node.last_updated`` in order"},{"line_number":156,"context_line":"   to prevent concurrent tasks execution upon the same node when multiple"},{"line_number":157,"context_line":"   containers are executing with the same data source."},{"line_number":158,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_8793f64f","line":155,"updated":"2018-12-22 19:42:31.000000000","message":"This does not seem related to the AMQP problem and needs some elaboration. Ironic Inspector uses database locks, we can model our solution after it. But it\u0027s quite horrible IMO. If we use etcd, we can just use it for locking.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":".. NOTE::"},{"line_number":154,"context_line":"   Locking and task execution capabilities are vitial to such model."},{"line_number":155,"context_line":"   This may be as simple as leveraging ``node.last_updated`` in order"},{"line_number":156,"context_line":"   to prevent concurrent tasks execution upon the same node when multiple"},{"line_number":157,"context_line":"   containers are executing with the same data source."},{"line_number":158,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_cee8f417","line":155,"in_reply_to":"1f769fc5_8793f64f","updated":"2019-01-04 22:20:00.000000000","message":"I mean preventing x and y nodes from constantly trying to cycle over z node. If not_operated_in_seconds(300, z); then periodic_task() kind of thinking.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e9ae55fc7ffd10fc13fd69345b943cfe0676e388","unresolved":false,"context_lines":[{"line_number":167,"context_line":"------------"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Possibly the most CPU intensive activity that an ironic conductor undertake"},{"line_number":170,"context_line":"is the periodic tasks where a list of nodes is loaded into mememory, and if"},{"line_number":171,"context_line":"the conductor is responsible rsponsible for the node, potentially a lock is"},{"line_number":172,"context_line":"created which is stored in the database."},{"line_number":173,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_faf5f3ca","line":170,"range":{"start_line":170,"start_character":59,"end_line":170,"end_character":67},"updated":"2018-12-20 09:14:21.000000000","message":"memory","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e9ae55fc7ffd10fc13fd69345b943cfe0676e388","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Possibly the most CPU intensive activity that an ironic conductor undertake"},{"line_number":170,"context_line":"is the periodic tasks where a list of nodes is loaded into mememory, and if"},{"line_number":171,"context_line":"the conductor is responsible rsponsible for the node, potentially a lock is"},{"line_number":172,"context_line":"created which is stored in the database."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"With a changing model, we cannot rely upon the database any longer to be"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_ba253b60","line":171,"range":{"start_line":171,"start_character":29,"end_line":171,"end_character":39},"updated":"2018-12-20 09:14:21.000000000","message":"duplicated word","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"10d42af21d83aa2454c0f2263d9b09f0bdc5fb15","unresolved":false,"context_lines":[{"line_number":183,"context_line":"operation and prevent a slow degredation of capability as an environment"},{"line_number":184,"context_line":"operated over a period of time."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"New RPC Layer"},{"line_number":187,"context_line":"-------------"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"One of the critical aspects is that we enable leveraging what is in essence"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_2798e268","line":186,"updated":"2018-12-22 19:42:31.000000000","message":"Mark, the single-process model scales neither horizontally nor vertically. This is why I object to even suggesting it here. A lightweight RPC layer can open a way for horizontal scaling by adding more ironic containers while still starting with only one ironic container.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"dffed21c4ed07f90045b9b9df128c0695071bd1b","unresolved":false,"context_lines":[{"line_number":183,"context_line":"operation and prevent a slow degredation of capability as an environment"},{"line_number":184,"context_line":"operated over a period of time."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"New RPC Layer"},{"line_number":187,"context_line":"-------------"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"One of the critical aspects is that we enable leveraging what is in essence"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_a818ca71","line":186,"range":{"start_line":186,"start_character":0,"end_line":186,"end_character":13},"updated":"2018-12-18 10:17:40.000000000","message":"Trying to unpick how and why this enters the picture. Is it because a single process has no way to route requests to the correct conductor, therefore we need RPC to route the client\u0027s request directly to the correct conductor?","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"e4c604a07c8b9ae5bb47667b1293bc41f7102073","unresolved":false,"context_lines":[{"line_number":183,"context_line":"operation and prevent a slow degredation of capability as an environment"},{"line_number":184,"context_line":"operated over a period of time."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"New RPC Layer"},{"line_number":187,"context_line":"-------------"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"One of the critical aspects is that we enable leveraging what is in essence"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_bd838304","line":186,"in_reply_to":"1f769fc5_2798e268","updated":"2018-12-27 10:57:58.000000000","message":"I\u0027m not sure I follow you here Dmitry. Vertical scaling is easy - add more hardware. For horizontal scaling, container infrastructure typically provides load balancing. Alternatively, if routing to specific conductors is required then client-side routing using something like gRPC is possible.\n\nI\u0027m not necessarily backing either of these approaches, just making the point that scaling is possible.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"69933190123cd561b88256719d65d52f4b4f1a55","unresolved":false,"context_lines":[{"line_number":183,"context_line":"operation and prevent a slow degredation of capability as an environment"},{"line_number":184,"context_line":"operated over a period of time."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"New RPC Layer"},{"line_number":187,"context_line":"-------------"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"One of the critical aspects is that we enable leveraging what is in essence"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_ebaff591","line":186,"in_reply_to":"1f769fc5_bd838304","updated":"2018-12-27 15:13:03.000000000","message":"\u003e Vertical scaling is easy - add more hardware.\n\nSure, but single-process single-thread ironic will still be limited by one core performance.\n\n\u003e For horizontal scaling, container infrastructure typically provides load balancing.\n\nAgain, it\u0027s not the case for single-process ironic. Well, we could probably shard it by nodes, similarly to ironic-proxy..","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":183,"context_line":"operation and prevent a slow degredation of capability as an environment"},{"line_number":184,"context_line":"operated over a period of time."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"New RPC Layer"},{"line_number":187,"context_line":"-------------"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"One of the critical aspects is that we enable leveraging what is in essence"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_0ebfdcfb","line":186,"in_reply_to":"1f769fc5_ebaff591","updated":"2019-01-04 22:20:00.000000000","message":"I\u0027m worried you guys are focusing in too much on scale when my intent with what was written was more usability of ironic as more a swiss-army knife.\n\nIn the model I\u0027m thinking, we would only (presumably) receive the request to the process if it could service the request because the caller identified it and addressed it directly. This is actually how our API calls the conductor today.\n\nIf we think of the conductor as the swiss-army knife, my hope would be that we would be able to completely step back from our focus on the existing scale model as we are fitting into the different operating/scaling model.\n\nIn a swiss-army use case, ironic is more of a tool to be leveraged and not a BMaaS where we would tend to worry about massive scale, concurrency, and lifetime system management.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"d32ac2c438b39d92a1e16b091b0e72256bf1aa69","unresolved":false,"context_lines":[{"line_number":183,"context_line":"operation and prevent a slow degredation of capability as an environment"},{"line_number":184,"context_line":"operated over a period of time."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"New RPC Layer"},{"line_number":187,"context_line":"-------------"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"One of the critical aspects is that we enable leveraging what is in essence"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_61fcc40d","line":186,"range":{"start_line":186,"start_character":0,"end_line":186,"end_character":13},"in_reply_to":"3f79a3b5_9a92b4ab","updated":"2018-12-21 09:41:27.000000000","message":"An alternative would be to separate out a stateful service (as some have talked about doing), for handling things like PXE, consoles, etc. Although that\u0027s more services rather than less :)","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":183,"context_line":"operation and prevent a slow degredation of capability as an environment"},{"line_number":184,"context_line":"operated over a period of time."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"New RPC Layer"},{"line_number":187,"context_line":"-------------"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"One of the critical aspects is that we enable leveraging what is in essence"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_9a92b4ab","line":186,"range":{"start_line":186,"start_character":0,"end_line":186,"end_character":13},"in_reply_to":"3f79a3b5_a818ca71","updated":"2018-12-20 18:41:01.000000000","message":"I see a couple different models in the container universe:\n\n1) There is only one conductor in one container. It serves all requests.\n2) There are multiple conductors from the same container image in the same cluster.\n\nI guess the original thought entry point is that if a requester needs to act upon a specific container and conductor process inside of that container, then it would need to know of it, although under normal circumstances it shouldn\u0027t matter.\n\nThe result is that any conductor should be able to act upon the requests made, because they would all be operating with the same configuration. This would also mean that for things like iPXE, all conductors would need to create configuration files, but that becomes beneficial in that it is point to single ipxe endpoint kind of action.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e9ae55fc7ffd10fc13fd69345b943cfe0676e388","unresolved":false,"context_lines":[{"line_number":191,"context_line":"infrastucture."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"This would introduce a new service bound in the portion of Ironic that we"},{"line_number":194,"context_line":"presently consider the conductor which would expose an authenticatable RPC"},{"line_number":195,"context_line":"endpoint, which would allow explicit commands to be transmitted to the"},{"line_number":196,"context_line":"conductor, allowing ironic to be utilized as a swiss-army knife,"},{"line_number":197,"context_line":"and decoupling our existing API for applicaiton usage as it is presently"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_3a192b23","line":194,"range":{"start_line":194,"start_character":55,"end_line":194,"end_character":70},"updated":"2018-12-20 09:14:21.000000000","message":"how are we going to define authentication there? pluggable one ?","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":191,"context_line":"infrastucture."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"This would introduce a new service bound in the portion of Ironic that we"},{"line_number":194,"context_line":"presently consider the conductor which would expose an authenticatable RPC"},{"line_number":195,"context_line":"endpoint, which would allow explicit commands to be transmitted to the"},{"line_number":196,"context_line":"conductor, allowing ironic to be utilized as a swiss-army knife,"},{"line_number":197,"context_line":"and decoupling our existing API for applicaiton usage as it is presently"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_1aa6a40f","line":194,"range":{"start_line":194,"start_character":55,"end_line":194,"end_character":70},"in_reply_to":"3f79a3b5_3a192b23","updated":"2018-12-20 18:41:01.000000000","message":"I suspect it might just be better to leave the word out. Authentication of connectivity is implied. We authenticate to rabbit, we just don\u0027t authenticate what is coming across rabbit right now.  Does that really matter though, I suspect not?","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e9ae55fc7ffd10fc13fd69345b943cfe0676e388","unresolved":false,"context_lines":[{"line_number":194,"context_line":"presently consider the conductor which would expose an authenticatable RPC"},{"line_number":195,"context_line":"endpoint, which would allow explicit commands to be transmitted to the"},{"line_number":196,"context_line":"conductor, allowing ironic to be utilized as a swiss-army knife,"},{"line_number":197,"context_line":"and decoupling our existing API for applicaiton usage as it is presently"},{"line_number":198,"context_line":"geared for operation in an OpenStack based universe. The existing API"},{"line_number":199,"context_line":"could continued to be leveraged for compatability, but where operators"},{"line_number":200,"context_line":"do not need an API, it could eventually no longer be required."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_fa0e53d7","line":197,"range":{"start_line":197,"start_character":36,"end_line":197,"end_character":47},"updated":"2018-12-20 09:14:21.000000000","message":"application","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"10d42af21d83aa2454c0f2263d9b09f0bdc5fb15","unresolved":false,"context_lines":[{"line_number":197,"context_line":"and decoupling our existing API for applicaiton usage as it is presently"},{"line_number":198,"context_line":"geared for operation in an OpenStack based universe. The existing API"},{"line_number":199,"context_line":"could continued to be leveraged for compatability, but where operators"},{"line_number":200,"context_line":"do not need an API, it could eventually no longer be required."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Use of this RPC layer would go with the expectation that the client initiating"},{"line_number":203,"context_line":"the request, already knows the receieving conductor can suppor the request."}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_479dde57","line":200,"updated":"2018-12-22 19:42:31.000000000","message":"I\u0027m not sure how I feel with exposing the potential internal RPC API to users. We do have a few important checks on the API level right now. I guess we may do it in the future, but I\u0027d prefer not to commit to it in this very spec.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":197,"context_line":"and decoupling our existing API for applicaiton usage as it is presently"},{"line_number":198,"context_line":"geared for operation in an OpenStack based universe. The existing API"},{"line_number":199,"context_line":"could continued to be leveraged for compatability, but where operators"},{"line_number":200,"context_line":"do not need an API, it could eventually no longer be required."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Use of this RPC layer would go with the expectation that the client initiating"},{"line_number":203,"context_line":"the request, already knows the receieving conductor can suppor the request."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_8e0e6ce3","line":200,"in_reply_to":"1f769fc5_3dac538b","updated":"2019-01-04 22:20:00.000000000","message":"What Mark said. Our users are not users, our users would be programs in this overall theme of use. This is partially why I was thinking that whatever we offer up should have some sort of ability to authenticate requests.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"e4c604a07c8b9ae5bb47667b1293bc41f7102073","unresolved":false,"context_lines":[{"line_number":197,"context_line":"and decoupling our existing API for applicaiton usage as it is presently"},{"line_number":198,"context_line":"geared for operation in an OpenStack based universe. The existing API"},{"line_number":199,"context_line":"could continued to be leveraged for compatability, but where operators"},{"line_number":200,"context_line":"do not need an API, it could eventually no longer be required."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Use of this RPC layer would go with the expectation that the client initiating"},{"line_number":203,"context_line":"the request, already knows the receieving conductor can suppor the request."}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_3dac538b","line":200,"in_reply_to":"1f769fc5_479dde57","updated":"2018-12-27 10:57:58.000000000","message":"I think we\u0027d need to see any RPC API exposed to clients as a replacement/complement for the REST API, rather than an evolution of the current internal RPC layer.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"10d42af21d83aa2454c0f2263d9b09f0bdc5fb15","unresolved":false,"context_lines":[{"line_number":199,"context_line":"could continued to be leveraged for compatability, but where operators"},{"line_number":200,"context_line":"do not need an API, it could eventually no longer be required."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Use of this RPC layer would go with the expectation that the client initiating"},{"line_number":203,"context_line":"the request, already knows the receieving conductor can suppor the request."},{"line_number":204,"context_line":"This forces environments to either be hetrogenious or expose knowledge of"},{"line_number":205,"context_line":"conductor locality for the purposes of accessing the proper RPC endpoint"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_e7a18a97","line":202,"updated":"2018-12-22 19:42:31.000000000","message":"I thought JSON RPC for one reason: it does not require us writing schemas for our RPC. We can write a drop-in replacement for the current oslo.msg RPC which conveniently also uses JSON. gRPC is likely to be much more effort. Not a hard -1, kind of -0 here.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e9ae55fc7ffd10fc13fd69345b943cfe0676e388","unresolved":false,"context_lines":[{"line_number":199,"context_line":"could continued to be leveraged for compatability, but where operators"},{"line_number":200,"context_line":"do not need an API, it could eventually no longer be required."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Use of this RPC layer would go with the expectation that the client initiating"},{"line_number":203,"context_line":"the request, already knows the receieving conductor can suppor the request."},{"line_number":204,"context_line":"This forces environments to either be hetrogenious or expose knowledge of"},{"line_number":205,"context_line":"conductor locality for the purposes of accessing the proper RPC endpoint"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_dacfd787","line":202,"range":{"start_line":202,"start_character":0,"end_line":202,"end_character":3},"updated":"2018-12-20 09:14:21.000000000","message":"could we consider grpc there?","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":199,"context_line":"could continued to be leveraged for compatability, but where operators"},{"line_number":200,"context_line":"do not need an API, it could eventually no longer be required."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Use of this RPC layer would go with the expectation that the client initiating"},{"line_number":203,"context_line":"the request, already knows the receieving conductor can suppor the request."},{"line_number":204,"context_line":"This forces environments to either be hetrogenious or expose knowledge of"},{"line_number":205,"context_line":"conductor locality for the purposes of accessing the proper RPC endpoint"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_ce2d5447","line":202,"in_reply_to":"1f769fc5_e7a18a97","updated":"2019-01-04 22:20:00.000000000","message":"I didn\u0027t know we could do that! It is kind of intriguing, and I concur grpc would be more work in that case.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":199,"context_line":"could continued to be leveraged for compatability, but where operators"},{"line_number":200,"context_line":"do not need an API, it could eventually no longer be required."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Use of this RPC layer would go with the expectation that the client initiating"},{"line_number":203,"context_line":"the request, already knows the receieving conductor can suppor the request."},{"line_number":204,"context_line":"This forces environments to either be hetrogenious or expose knowledge of"},{"line_number":205,"context_line":"conductor locality for the purposes of accessing the proper RPC endpoint"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_3aa360ff","line":202,"range":{"start_line":202,"start_character":0,"end_line":202,"end_character":3},"in_reply_to":"3f79a3b5_dacfd787","updated":"2018-12-20 18:41:01.000000000","message":"That was actually kind of what I was thinking.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"556ca14750c4ea46df665f6eb4f5bda277aad00a","unresolved":false,"context_lines":[{"line_number":205,"context_line":"conductor locality for the purposes of accessing the proper RPC endpoint"},{"line_number":206,"context_line":"to service the request."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"Alternative to hetrogenious environments"},{"line_number":209,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"Ironic could build a system that uses an intermediate key/value store"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fdfeff1_e332c3a7","line":208,"range":{"start_line":208,"start_character":15,"end_line":208,"end_character":27},"updated":"2019-01-21 16:30:53.000000000","message":"heterogeneous","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"556ca14750c4ea46df665f6eb4f5bda277aad00a","unresolved":false,"context_lines":[{"line_number":211,"context_line":"Ironic could build a system that uses an intermediate key/value store"},{"line_number":212,"context_line":"or database to enable hand-off of requests with a new RPC interaction"},{"line_number":213,"context_line":"model. This likely has a greater risk and less reward for most baremetal"},{"line_number":214,"context_line":"operators which are typically declaritive in their deployments."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"ironic Command"},{"line_number":217,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fdfeff1_23ed2bef","line":214,"range":{"start_line":214,"start_character":30,"end_line":214,"end_character":41},"updated":"2019-01-21 16:30:53.000000000","message":"declarative","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e9ae55fc7ffd10fc13fd69345b943cfe0676e388","unresolved":false,"context_lines":[{"line_number":223,"context_line":"an openstack-centric command. That being said, the community may wish"},{"line_number":224,"context_line":"to undeprecate the existing command or create a new command."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"A potentially useful option would be a dedicated or minimal foot-print"},{"line_number":227,"context_line":"Go API client, since Ironic can be deployed without other OpenStack"},{"line_number":228,"context_line":"services."},{"line_number":229,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_fae3b302","line":226,"range":{"start_line":226,"start_character":0,"end_line":226,"end_character":1},"updated":"2018-12-20 09:14:21.000000000","message":"Apart from writing a CLI, bindings for Go, Python... would be very positive because it will allow integration with other components, such as potential kubernetes operators.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e9ae55fc7ffd10fc13fd69345b943cfe0676e388","unresolved":false,"context_lines":[{"line_number":235,"context_line":"Default Desired End State"},{"line_number":236,"context_line":"-------------------------"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Prsently when new nodes are created, ironic puts them in an ``enroll`` state."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"An extremely useful case would be to enable an end state, along with related"},{"line_number":241,"context_line":"configuration to be operator definable, such that a newly enrolled node would"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_3ac7eb68","line":238,"range":{"start_line":238,"start_character":0,"end_line":238,"end_character":8},"updated":"2018-12-20 09:14:21.000000000","message":"Presently","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"e9ae55fc7ffd10fc13fd69345b943cfe0676e388","unresolved":false,"context_lines":[{"line_number":241,"context_line":"configuration to be operator definable, such that a newly enrolled node would"},{"line_number":242,"context_line":"be configured to reach that default end state, which may be ``active`` or"},{"line_number":243,"context_line":"just ``available``. This would be achieved through a periodic task that"},{"line_number":244,"context_line":"would trigger upon nodes in the ``enroll`` state."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"This periodic task would have configuration that would allow it to understand"},{"line_number":247,"context_line":"if the default is to involve introspection, or simply just to reach the end"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_5ac42761","line":244,"range":{"start_line":244,"start_character":43,"end_line":244,"end_character":48},"updated":"2018-12-20 09:14:21.000000000","message":"I am not convinced about if Ironic should do that, or we should leverage this state to the layers that will be added on top of Ironic.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ab20658c4d4d490587cb2284b672943c3100d2dd","unresolved":false,"context_lines":[{"line_number":241,"context_line":"configuration to be operator definable, such that a newly enrolled node would"},{"line_number":242,"context_line":"be configured to reach that default end state, which may be ``active`` or"},{"line_number":243,"context_line":"just ``available``. This would be achieved through a periodic task that"},{"line_number":244,"context_line":"would trigger upon nodes in the ``enroll`` state."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"This periodic task would have configuration that would allow it to understand"},{"line_number":247,"context_line":"if the default is to involve introspection, or simply just to reach the end"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_3a3fe084","line":244,"range":{"start_line":244,"start_character":43,"end_line":244,"end_character":48},"in_reply_to":"3f79a3b5_5ac42761","updated":"2018-12-20 18:41:01.000000000","message":"I see this kind of useful regardless of additional layers that might be put on top.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"10d42af21d83aa2454c0f2263d9b09f0bdc5fb15","unresolved":false,"context_lines":[{"line_number":299,"context_line":"Kubernetes deployment."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"No migrations between the two overall data storage models are anticipated"},{"line_number":302,"context_line":"nor expected to ever be supported."},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"State Machine Impact"},{"line_number":305,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_079fe650","line":302,"updated":"2018-12-22 19:42:31.000000000","message":"Note that the single-process approach (without new RPC) will scale very poorly, and this sentence essentially leaves its users locked into it once started.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":299,"context_line":"Kubernetes deployment."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"No migrations between the two overall data storage models are anticipated"},{"line_number":302,"context_line":"nor expected to ever be supported."},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"State Machine Impact"},{"line_number":305,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_0e77dc3c","line":302,"in_reply_to":"1f769fc5_079fe650","updated":"2019-01-04 22:20:00.000000000","message":"We could actually enable migration back and forth, but I think this is more as distinct systems that have completely different use models with ironic \"under the hood\".","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"10d42af21d83aa2454c0f2263d9b09f0bdc5fb15","unresolved":false,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"This document calls for an entirely new RPC layer to be developed. Existing"},{"line_number":331,"context_line":"RPC API interface would likely need to be augmented to enable further API"},{"line_number":332,"context_line":"parity."},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"Driver API impact"},{"line_number":335,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_a7ab9273","line":332,"updated":"2018-12-22 19:42:31.000000000","message":"A lot of technical details should go here :)","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"This document calls for an entirely new RPC layer to be developed. Existing"},{"line_number":331,"context_line":"RPC API interface would likely need to be augmented to enable further API"},{"line_number":332,"context_line":"parity."},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"Driver API impact"},{"line_number":335,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_8eb50cf1","line":332,"in_reply_to":"1f769fc5_a7ab9273","updated":"2019-01-04 22:20:00.000000000","message":"OH! But this is just an idea spec to get us to hack on code. :)\n\nSeriously though, I personally think needs will dictate impact and as long as we stay focused on also supporting existing use, we can likely do some awesome things. What those look like or what those things might impact, who knows until we get there.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"10d42af21d83aa2454c0f2263d9b09f0bdc5fb15","unresolved":false,"context_lines":[{"line_number":395,"context_line":"Primary assignee:"},{"line_number":396,"context_line":"  TBD"},{"line_number":397,"context_line":"Other contributors:"},{"line_number":398,"context_line":"  TBD"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"Work Items"},{"line_number":401,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f769fc5_c7a80e79","line":398,"updated":"2018-12-22 19:42:31.000000000","message":"Will help if we agree on the approach :)","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ba0eefa7ebdf6488175e3a6f506c3489d5b4922a","unresolved":false,"context_lines":[{"line_number":395,"context_line":"Primary assignee:"},{"line_number":396,"context_line":"  TBD"},{"line_number":397,"context_line":"Other contributors:"},{"line_number":398,"context_line":"  TBD"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"Work Items"},{"line_number":401,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffd0ebdf_6ecc6889","line":398,"in_reply_to":"1f769fc5_c7a80e79","updated":"2019-01-04 22:20:00.000000000","message":"approaches :) Multiple and plentiful different ideas!\n\nThis raises an interesting point, and maybe one for the mid-cycle... who would be interested on hacking on some of this sort of stuff.","commit_id":"cb3897de5726f248707eec3dcbff617f7087b577"}]}
