)]}'
{"ironic/db/sqlalchemy/models.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a701c1758c13ec202fd19667e4a0e60b0ae21f8c","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    __tablename__ \u003d \u0027conductors\u0027"},{"line_number":89,"context_line":"    __table_args__ \u003d ("},{"line_number":90,"context_line":"        schema.UniqueConstraint(\u0027hostname\u0027, name\u003d\u0027uniq_conductors0hostname\u0027),"},{"line_number":91,"context_line":"        table_args()"},{"line_number":92,"context_line":"    )"},{"line_number":93,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e8cb2e7b_79b47602","line":90,"updated":"2023-04-02 11:22:55.000000000","message":"Another argument for this approach: the Node.reservation field. Without a port component, there is no way to understand which of several conductors reserved the node.\n\nOn top of that, we need unique host names for RabbitMQ as well. Can be worked around by providing fake [CONF]host, but it\u0027s ugly. But the port does not make sense.. dunno.\n\nAnd of course you need to take ports into account when building the hash ring. I think this patch missed it.\n\nDownside: migration from JSON RPC to RabbitMQ will be harder. But I don\u0027t think it can be done without bringing the whole cluster offline anyway?","commit_id":"92ff94a43f5ae061bd922d08de18860a9c6cc34b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d12da69e6ac8108d6b55359a709c2baf6da2af8","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    __tablename__ \u003d \u0027conductors\u0027"},{"line_number":89,"context_line":"    __table_args__ \u003d ("},{"line_number":90,"context_line":"        schema.UniqueConstraint(\u0027hostname\u0027, name\u003d\u0027uniq_conductors0hostname\u0027),"},{"line_number":91,"context_line":"        table_args()"},{"line_number":92,"context_line":"    )"},{"line_number":93,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"93fd7c71_8361c7aa","line":90,"updated":"2023-04-02 11:18:53.000000000","message":"This constraint will prevent you from adding conductors with the same host name. I think we should go down a different path and just append :\u003cport\u003e to host names.","commit_id":"92ff94a43f5ae061bd922d08de18860a9c6cc34b"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"554445ff0e3ad58f198f9151ffc93867da66d2a3","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    __tablename__ \u003d \u0027conductors\u0027"},{"line_number":89,"context_line":"    __table_args__ \u003d ("},{"line_number":90,"context_line":"        schema.UniqueConstraint(\u0027hostname\u0027, name\u003d\u0027uniq_conductors0hostname\u0027),"},{"line_number":91,"context_line":"        table_args()"},{"line_number":92,"context_line":"    )"},{"line_number":93,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"b3586377_b53a4ad2","line":90,"in_reply_to":"93fd7c71_8361c7aa","updated":"2023-04-02 23:09:59.000000000","message":"If we\u0027re going down this path now, would we benefit from an actual URL format? It would give us a strict way of parsing the hostname and port when necessary.\n\nI\u0027m not sure what protocol for the rabbit URL would make sense, nor what should be used for unique component after the hostname.","commit_id":"92ff94a43f5ae061bd922d08de18860a9c6cc34b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"52662fa89e56e5d9bb5c95dfff1fd6623dc22091","unresolved":true,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    __tablename__ \u003d \u0027conductors\u0027"},{"line_number":89,"context_line":"    __table_args__ \u003d ("},{"line_number":90,"context_line":"        schema.UniqueConstraint(\u0027hostname\u0027, name\u003d\u0027uniq_conductors0hostname\u0027),"},{"line_number":91,"context_line":"        table_args()"},{"line_number":92,"context_line":"    )"},{"line_number":93,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e06e3a43_90b98ce8","line":90,"in_reply_to":"e8cb2e7b_79b47602","updated":"2023-04-03 14:26:20.000000000","message":"Explicitly adding a port becomes a hash ring logic change which will cause the balance structure to change for operators. It is an option, just if we head down that path we will need to communicate it. The reason I wanted to avoid it was because if someone sets to a v6 IP address, then we would need to parse the address and store it in a fixed form to be able to split the port off later for it to be usable.\n\nI also wanted to avoid URL encoding the field because of the variety of options:\n\nrabbit - RabbitMQ\namqp - ActiveMQ or other AMQP compliant platform\nkafka - Notification only kafka interface (unlikely for us to ever see)\nkombu - RabbitMQ.\n\nOn top of that we would surely add jsonrpc.  Anyway, a port just seemed lowest overhead to me.\n\nDmitry, I think you see a different model of using the hash ring difference to run multiple conductor processes per physical host, VM or container. Could you clarify? I think the container case wise wouldn\u0027t the container context hostname be unique? I guess this is an entirely different feature than the bug I\u0027m trying to address which is right now we need to have the jsonrpc port consistent across a cluster, which means even to just change the port, you have to take the entire cluster down today.\n\nWhich is also separate from a downtime-less migration. I think we need to focus on just one problem here with the highest value. To me, that is fix it so we can run conductor processes on separate hosts with unique ports, because the issue Steve mentioned was randomly assigned inbound ports.","commit_id":"92ff94a43f5ae061bd922d08de18860a9c6cc34b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d12da69e6ac8108d6b55359a709c2baf6da2af8","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    online \u003d Column(Boolean, default\u003dTrue)"},{"line_number":97,"context_line":"    conductor_group \u003d Column(String(255), nullable\u003dFalse, default\u003d\u0027\u0027,"},{"line_number":98,"context_line":"                             server_default\u003d\u0027\u0027)"},{"line_number":99,"context_line":"    rpc_port \u003d Column(String(6), nullable\u003dTrue)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class ConductorHardwareInterfaces(Base):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ae9b5097_64784bbb","line":99,"updated":"2023-04-02 11:18:53.000000000","message":"Why string? Oo (does not matter really - see above)","commit_id":"92ff94a43f5ae061bd922d08de18860a9c6cc34b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"52662fa89e56e5d9bb5c95dfff1fd6623dc22091","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    online \u003d Column(Boolean, default\u003dTrue)"},{"line_number":97,"context_line":"    conductor_group \u003d Column(String(255), nullable\u003dFalse, default\u003d\u0027\u0027,"},{"line_number":98,"context_line":"                             server_default\u003d\u0027\u0027)"},{"line_number":99,"context_line":"    rpc_port \u003d Column(String(6), nullable\u003dTrue)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class ConductorHardwareInterfaces(Base):"}],"source_content_type":"text/x-python","patch_set":1,"id":"42f523b7_813d090a","line":99,"in_reply_to":"ae9b5097_64784bbb","updated":"2023-04-03 14:26:20.000000000","message":"An integer cannot be null in the DB model. I started with an integer and pivoted.","commit_id":"92ff94a43f5ae061bd922d08de18860a9c6cc34b"}],"releasenotes/notes/add-rpc-port-storage-32f7f5eaca59f860.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d12da69e6ac8108d6b55359a709c2baf6da2af8","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The database schema has been updated to include an ``rpc_port`` field on"},{"line_number":5,"context_line":"    the ``conductors`` table. This is for internal use by the service, and"},{"line_number":6,"context_line":"    is not exposed via the API."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"5592a08e_656ccf35","line":6,"updated":"2023-04-02 11:18:53.000000000","message":"I\u0027m not sure I can agree with this. Now the conductors API will return duplicated hostnames without any way to distinguish them. Also see the comment on the model.","commit_id":"92ff94a43f5ae061bd922d08de18860a9c6cc34b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"52662fa89e56e5d9bb5c95dfff1fd6623dc22091","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The database schema has been updated to include an ``rpc_port`` field on"},{"line_number":5,"context_line":"    the ``conductors`` table. This is for internal use by the service, and"},{"line_number":6,"context_line":"    is not exposed via the API."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"ecce1263_8ab5ae27","line":6,"in_reply_to":"5592a08e_656ccf35","updated":"2023-04-03 14:26:20.000000000","message":"I think we need to get your use case clarified, could you provide more details why you see running multiple distinct conductor processes on the same host with the same running hostname is a desirable case to support?","commit_id":"92ff94a43f5ae061bd922d08de18860a9c6cc34b"}]}
