)]}'
{"specs/approved/federation.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"In some use cases, in particular in the world of research organizations,"},{"line_number":14,"context_line":"there is a need to pool and share resources across organizations with a"},{"line_number":15,"context_line":"central pooled view, and the ability to deploy to unused resources in"},{"line_number":16,"context_line":"another organization."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"To this end, it is only naturally ironic to support a set of interfaces"},{"line_number":19,"context_line":"to enable pass-through of the request to another Ironic deployment, and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_c4a16eab","line":16,"updated":"2018-08-22 12:59:20.000000000","message":"This feels like a weird use case to me. If we have multi-tenancy in ironic, this can be done by simply giving an access to nodes to a tenant. Without multi-tenancy it requires giving ~ admin access to your fleet.\n\nI think we better talk about edge cases here, where a root ironic installation can aggregate resources from several locations, while keeping these locations reasonably independent.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Ultimate control would still be retained with-in the child Ironic"},{"line_number":24,"context_line":"deployment, and with the context being passed would allow end-user"},{"line_number":25,"context_line":"permission to be retained and validated by the child deployment\u0027s"},{"line_number":26,"context_line":"installation."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Problem description"},{"line_number":29,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_e4a6eac1","line":26,"updated":"2018-08-22 12:59:20.000000000","message":"Does it imply multi-tenancy ironic? Because currently it\u0027s all-or-nothing.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"For a HPC user, elastic access to baremetal resources is key to be able"},{"line_number":32,"context_line":"able to complete desired experiements in shorter periods of time."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"At times, those resources may sit idle, and could be useful to other"},{"line_number":35,"context_line":"HPC users, or other users seeking to perform an experiment. This could"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_84a7f6bc","line":32,"updated":"2018-08-22 12:59:20.000000000","message":"As I said above, I don\u0027t feel like the proposed solution actually addresses this problem well, but there are other problems that are addressed.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"b2ba00a7d74b0bd574248a306b2615af85aed74b","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The creation of ironic boot, deploy, management, inspect, network, and power"},{"line_number":46,"context_line":"interfaces that syncronize key related fields between deployments,"},{"line_number":47,"context_line":"between deployments and perform the necessary requests and actions to"},{"line_number":48,"context_line":"the child ironic deployments to facilitate the desired action."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"This would allow a user of the central ironic deployment to understand the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_d697d4e9","line":47,"range":{"start_line":47,"start_character":0,"end_line":47,"end_character":19},"updated":"2018-07-17 14:01:59.000000000","message":"probable dup","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"- ``deploy_user_id``"},{"line_number":59,"context_line":"- ``deploy_project_id``"},{"line_number":60,"context_line":"- ``deploy_domain_id``"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"In terms of providing configuration for the underlying interfaces to"},{"line_number":63,"context_line":"speak to Ironic, additional values will be used in the ``driver_info``"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_a4ac729f","line":60,"updated":"2018-08-22 12:59:20.000000000","message":"I suspect domain is implied by the IDs above. Otherwise you have to include both user_domain_id and project_domain_id.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":68,"context_line":"      to the remote deployment."},{"line_number":69,"context_line":"  ``ironic_node_uuid``"},{"line_number":70,"context_line":"    - An optional paramter that overrides the use of the pre-existing"},{"line_number":71,"context_line":"      node uuid."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Credentials will be passed through in the request context to the remote"},{"line_number":74,"context_line":"ironic, such that policy enforcement can be handled on the remote API."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_44955e3f","line":71,"updated":"2018-08-22 12:59:20.000000000","message":"nit: what about names?","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"      node uuid."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Credentials will be passed through in the request context to the remote"},{"line_number":74,"context_line":"ironic, such that policy enforcement can be handled on the remote API."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"A periodic task will be required to synchronize power and deployment states"},{"line_number":77,"context_line":"to the Ironic database. The user that will be utilized for this task is"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_6492da59","line":74,"updated":"2018-08-22 12:59:20.000000000","message":"Let\u0027s emphasize that this has to be implemented.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"A periodic task will be required to synchronize power and deployment states"},{"line_number":77,"context_line":"to the Ironic database. The user that will be utilized for this task is"},{"line_number":78,"context_line":"the keystone user for the running ironic service, which will need to be"},{"line_number":79,"context_line":"granted ``baremetal_viewer`` privileges."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"- In the event that there is a lock present for the node, then the task"},{"line_number":82,"context_line":"  shall be skipped, thus bypassing syncrhonization."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_049be672","line":79,"updated":"2018-08-22 12:59:20.000000000","message":"Does it assume that we won\u0027t force power state remotely? This is our default currently.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"b2ba00a7d74b0bd574248a306b2615af85aed74b","unresolved":false,"context_lines":[{"line_number":79,"context_line":"granted ``baremetal_viewer`` privileges."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"- In the event that there is a lock present for the node, then the task"},{"line_number":82,"context_line":"  shall be skipped, thus bypassing syncrhonization."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"- In the event of an action being taken, such as setting the"},{"line_number":85,"context_line":"  `provision_state` of the node, a forced synchronization operation will"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_399719ee","line":82,"range":{"start_line":82,"start_character":35,"end_line":82,"end_character":50},"updated":"2018-07-17 14:01:59.000000000","message":"typo","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"- In the event of an action being taken, such as setting the"},{"line_number":85,"context_line":"  `provision_state` of the node, a forced synchronization operation will"},{"line_number":86,"context_line":"  take place and if the node is already locked then the request will"},{"line_number":87,"context_line":"  raise a ``NodeLocked`` exception."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"- Explicit calls for validation should also trigger synchronization."},{"line_number":90,"context_line":"  this will allow state aware interfaces to help avoid things like"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_24986273","line":87,"updated":"2018-08-22 12:59:20.000000000","message":"I think we can just pass the operation through and let the remote side raise NodeLocked for us.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"Breakdown of new interfaces and their basic action that is provided:"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"``boot``"},{"line_number":107,"context_line":"  - A number of interfaces should just not do anything in this scenario."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"``inspect``"},{"line_number":110,"context_line":"  - inspect_hardware should just map to the rest API provision state change."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_c48ace19","line":107,"updated":"2018-08-22 12:59:20.000000000","message":"so, NoopBoot?","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"``deploy``"},{"line_number":113,"context_line":"  - The various public deployment interfaces will map to their respective"},{"line_number":114,"context_line":"    REST api interactions/"},{"line_number":115,"context_line":"  - Some methods will simply return with their next logical state in the"},{"line_number":116,"context_line":"    state machine. An example is cleaning, where it is the responsibility"},{"line_number":117,"context_line":"    of the child deployment."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_e48fca27","line":114,"updated":"2018-08-22 12:59:20.000000000","message":"A list would be handy. E.g. what corresponds to prepare? How will it work with deploy steps?","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    state machine. An example is cleaning, where it is the responsibility"},{"line_number":117,"context_line":"    of the child deployment."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"NOTE(TheJulia): Can we support user initiated cleaning this way?"},{"line_number":120,"context_line":"                USER passes in steps, those steps could be stored/passed"},{"line_number":121,"context_line":"                That could be a direct pass through fro prepare_cleaning which"},{"line_number":122,"context_line":"                would be the same state..."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_848056f9","line":119,"updated":"2018-08-22 12:59:20.000000000","message":"We have to somehow support it..","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":128,"context_line":"  - [add|remove]_[cleaning|provisioning|rescue]_network should raise a"},{"line_number":129,"context_line":"    NotImplemented exception."},{"line_number":130,"context_line":"  - [un|]configure_tenant_networks will also likely raise a"},{"line_number":131,"context_line":"    NotImplemented exception."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"``power``"},{"line_number":134,"context_line":"  - get_power_state would map to synchronization"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_a4855209","line":131,"updated":"2018-08-22 12:59:20.000000000","message":"So, NoNetwork? We don\u0027t need validation if it\u0027s not going to be used.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  - Validate will pass through to the remote api"},{"line_number":139,"context_line":"  - [de|a]ttach_volumes should likely force a synchronization of volume"},{"line_number":140,"context_line":"    target information which is in-line with our use of power state to"},{"line_number":141,"context_line":"    reset/update storage information."},{"line_number":142,"context_line":"  - should_write_image will likely need to have logic based upon"},{"line_number":143,"context_line":"    volume_targets data"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_447ebe19","line":141,"updated":"2018-08-22 12:59:20.000000000","message":"I\u0027d omit storage from the initial version of this spec, it is complex enough already.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"``management``"},{"line_number":146,"context_line":"  - set_boot_device maps to the REST api."},{"line_number":147,"context_line":"  - get_set_device maps to the REST api."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Syncronization - Who wins?"},{"line_number":150,"context_line":"--------------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_647bba27","line":147,"updated":"2018-08-22 12:59:20.000000000","message":"what about boot mode?","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"- ``provision_state`` Remote provision state always wins"},{"line_number":156,"context_line":"- ``maintenance`` - Remote wins"},{"line_number":157,"context_line":"- ``maintenance_reason`` - Remote Wins"},{"line_number":158,"context_line":"- ``name`` - Remote wins"},{"line_number":159,"context_line":"- ``reservation`` - Remote wins"},{"line_number":160,"context_line":"- ``instance_info`` - Federated ironic wins if node not deployed."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_04744635","line":157,"updated":"2018-08-22 12:59:20.000000000","message":"nit: wins","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":159,"context_line":"- ``reservation`` - Remote wins"},{"line_number":160,"context_line":"- ``instance_info`` - Federated ironic wins if node not deployed."},{"line_number":161,"context_line":"- ``power_status`` - Remote wins"},{"line_number":162,"context_line":"- ``target_raid_config`` - Local is published to remote"},{"line_number":163,"context_line":"- ``raid_config`` - Remote wins"},{"line_number":164,"context_line":"- ``properties`` - Remote wins"},{"line_number":165,"context_line":"- ``instance_uuid`` - Remote wins if deployed, if not deployed local wins."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_24714245","line":162,"updated":"2018-08-22 12:59:20.000000000","message":"This only makes sense if we support RAID, and I\u0027d skip it for now","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":163,"context_line":"- ``raid_config`` - Remote wins"},{"line_number":164,"context_line":"- ``properties`` - Remote wins"},{"line_number":165,"context_line":"- ``instance_uuid`` - Remote wins if deployed, if not deployed local wins."},{"line_number":166,"context_line":"- ``clean_step`` - Remote wins only if we are in cleaning?"},{"line_number":167,"context_line":"- ``resource_class`` - Not Synced"},{"line_number":168,"context_line":"- ``extra`` - Not synced"},{"line_number":169,"context_line":"- ``last_error`` - Remote wins. If a local error exists and we are in an"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_c48f2e21","line":166,"updated":"2018-08-22 12:59:20.000000000","message":"I think it should always win, since we cannot modify it from the federated node","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":164,"context_line":"- ``properties`` - Remote wins"},{"line_number":165,"context_line":"- ``instance_uuid`` - Remote wins if deployed, if not deployed local wins."},{"line_number":166,"context_line":"- ``clean_step`` - Remote wins only if we are in cleaning?"},{"line_number":167,"context_line":"- ``resource_class`` - Not Synced"},{"line_number":168,"context_line":"- ``extra`` - Not synced"},{"line_number":169,"context_line":"- ``last_error`` - Remote wins. If a local error exists and we are in an"},{"line_number":170,"context_line":"                   error state, then we may want to prepend. Maybe."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_e494aa39","line":167,"updated":"2018-08-22 12:59:20.000000000","message":"I think this is a can of warms. I think it should be remove wins, or we may have people deploying wrong resource classes. Similar to traits.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"b2ba00a7d74b0bd574248a306b2615af85aed74b","unresolved":false,"context_lines":[{"line_number":189,"context_line":"- Remote always wins as it becomes an advertisement of capability and the"},{"line_number":190,"context_line":"  information may be needed in some circumsances."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Alternatives"},{"line_number":193,"context_line":"------------"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"This may be able to be performed via nova, or some other tooling connecting a"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_dc5293da","line":192,"range":{"start_line":192,"start_character":0,"end_line":192,"end_character":12},"updated":"2018-07-17 14:01:59.000000000","message":"I have this feeling that we are fighting ironic statefullness in this spec. We mostly sync the states of remote conductors into the master conductor sometimes ignoring state machine transitions.\n\nThat makes me thinking that may be instead of introducing this master-slave architecture into ironic, may be we could create a *stateless* (or caching) proxy to act as a master ironic talking to its children.\n\nIf this is nonsense, I\u0027d still mention that among the \u0027Alternatives\u0027 as this is what may come to reader\u0027s mind along the way.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"14fbdbceea2a789b068f01b70fa0e37f7e323e89","unresolved":false,"context_lines":[{"line_number":189,"context_line":"- Remote always wins as it becomes an advertisement of capability and the"},{"line_number":190,"context_line":"  information may be needed in some circumsances."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Alternatives"},{"line_number":193,"context_line":"------------"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"This may be able to be performed via nova, or some other tooling connecting a"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_9c72f4e2","line":192,"range":{"start_line":192,"start_character":0,"end_line":192,"end_character":12},"in_reply_to":"5f7c97a3_dc5293da","updated":"2018-08-09 20:35:57.000000000","message":"I think for many individual actions, the state is simple enough that making a consolidating proxy would both be overkill and problematic in conveying state data... but maybe? #thoughtrequired.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":198,"context_line":"hardware, nor provide the overriding ability for a child deployment to return"},{"line_number":199,"context_line":"inventory to their available pool, which is critically important in systems"},{"line_number":200,"context_line":"where the environment needs to be declared."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Data model impact"},{"line_number":203,"context_line":"-----------------"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_8495b634","line":201,"updated":"2018-08-22 12:59:20.000000000","message":"Alternative: make federation a first class notion, not just a hardware type. Then this spec may end up much shorter, but the implementation will modify quite a few things in the conductor. I still vote for it, since what we have here looks quite fragile. Then we\u0027ll have something like node.remote_location \u003d \u003cironic URL\u003e with everything else just blindly copied from/to remote. Bonus point for actually seeing the remote node\u0027s hardware type and interfaces.\n\nA part of it would be not using public REST API. It can be some private API or some kind of RPC. May simplify things substantially.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9e6c245a079c7a2f6325234991bcf3cc2f03d13d","unresolved":false,"context_lines":[{"line_number":338,"context_line":"primary author and contact."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Primary assignee:"},{"line_number":341,"context_line":"  TBD"},{"line_number":342,"context_line":"Other contributors:"},{"line_number":343,"context_line":"  TBD"},{"line_number":344,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_a49a325f","line":341,"updated":"2018-08-22 12:59:20.000000000","message":"I\u0027d like to help here, even as a primary assignment. With the only caveat: I disagree with the exact implementation of this idea.","commit_id":"f7f0d32a5d481e1d1fef870e3660f3483537d77f"}]}
