)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"ad13e1c84a0f75c48b9c25bf437978fc58e54106","unresolved":false,"context_lines":[{"line_number":17,"context_line":"The API reference and user guide have been updated to include"},{"line_number":18,"context_line":"information about the ports\u0027 physical network field."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The API microversion has been bumped to 1.32."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I7023a1d6618608c867c31396fa677d3016ca493e"},{"line_number":23,"context_line":"Partial-Bug: #1666009"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f1d235d_38ab1a76","line":20,"updated":"2017-07-10 09:38:14.000000000","message":"Should be 1.33. Based on the merge conflict, could be 1.34+...","commit_id":"2cdb6463e426f1954302ba930bf4171f358c49a6"}],"api-ref/source/baremetal-api-v1-nodes-ports.inc":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"075bdd35c24565651461678aa2a962907e102996","unresolved":false,"context_lines":[{"line_number":17,"context_line":".. rest_method:: GET /v1/nodes/{node_ident}/ports"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Return a list of bare metal Ports associated with ``node_ident``."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Normal response code: 200"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Error codes: TBD"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"1f1a1f67_9b194ad8","line":20,"updated":"2017-07-19 14:23:18.000000000","message":"You removed the line about \u0027API microversion 1.34 added the ``physical_network`` field\u0027?\n\nBut I see that line in the base version in https://review.openstack.org/#/c/483015/","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3dc40f1144075755470cc40403314d35756706ca","unresolved":false,"context_lines":[{"line_number":17,"context_line":".. rest_method:: GET /v1/nodes/{node_ident}/ports"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Return a list of bare metal Ports associated with ``node_ident``."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Normal response code: 200"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Error codes: TBD"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"1f1a1f67_d11a03c4","line":20,"in_reply_to":"1f1a1f67_9b194ad8","updated":"2017-07-19 15:14:07.000000000","message":"Something went wrong here. I think I may have previously intended to remove them but changed my mind. I\u0027ll add them back in.","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"075bdd35c24565651461678aa2a962907e102996","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":".. rest_method:: GET /v1/nodes/{node_ident}/ports/detail"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Return a detailed list of bare metal Ports associated with ``node_ident``."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Normal response code: 200"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":12,"id":"1f1a1f67_5b0f3287","line":57,"updated":"2017-07-19 14:23:18.000000000","message":"ditto","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3dc40f1144075755470cc40403314d35756706ca","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":".. rest_method:: GET /v1/nodes/{node_ident}/ports/detail"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Return a detailed list of bare metal Ports associated with ``node_ident``."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Normal response code: 200"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":12,"id":"1f1a1f67_51d273d2","line":57,"in_reply_to":"1f1a1f67_5b0f3287","updated":"2017-07-19 15:14:07.000000000","message":"Done","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"}],"api-ref/source/baremetal-api-v1-portgroups-ports.inc":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    - local_link_connection: local_link_connection"},{"line_number":88,"context_line":"    - pxe_enabled: pxe_enabled"},{"line_number":89,"context_line":"    - internal_info: internal_info"},{"line_number":90,"context_line":"    - physical_network: physical_network"},{"line_number":91,"context_line":"    - extra: extra"},{"line_number":92,"context_line":"    - portgroup_uuid: portgroup_uuid"},{"line_number":93,"context_line":"    - created_at: created_at"}],"source_content_type":"text/x-c++src","patch_set":9,"id":"3f1d235d_9a4ae9a9","line":90,"updated":"2017-07-11 20:49:57.000000000","message":"nit, really minor. I notice that this appears after pxe_enabled in the other responses; might be nice if this was consistent.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    - local_link_connection: local_link_connection"},{"line_number":88,"context_line":"    - pxe_enabled: pxe_enabled"},{"line_number":89,"context_line":"    - internal_info: internal_info"},{"line_number":90,"context_line":"    - physical_network: physical_network"},{"line_number":91,"context_line":"    - extra: extra"},{"line_number":92,"context_line":"    - portgroup_uuid: portgroup_uuid"},{"line_number":93,"context_line":"    - created_at: created_at"}],"source_content_type":"text/x-c++src","patch_set":9,"id":"1f1a1f67_5667f226","line":90,"in_reply_to":"3f1d235d_9a4ae9a9","updated":"2017-07-12 13:51:10.000000000","message":"Done","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"075bdd35c24565651461678aa2a962907e102996","unresolved":false,"context_lines":[{"line_number":21,"context_line":".. rest_method:: GET /v1/portgroups/{portgroup_ident}/ports"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Return a list of bare metal Ports associated with ``portgroup_ident``."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Normal response code: 200"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Error codes: 400,401,403,404"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"1f1a1f67_1b6ada18","line":24,"updated":"2017-07-19 14:23:18.000000000","message":"ditto","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3dc40f1144075755470cc40403314d35756706ca","unresolved":false,"context_lines":[{"line_number":21,"context_line":".. rest_method:: GET /v1/portgroups/{portgroup_ident}/ports"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Return a list of bare metal Ports associated with ``portgroup_ident``."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Normal response code: 200"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Error codes: 400,401,403,404"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"1f1a1f67_11d87bec","line":24,"in_reply_to":"1f1a1f67_1b6ada18","updated":"2017-07-19 15:14:07.000000000","message":"Done","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"075bdd35c24565651461678aa2a962907e102996","unresolved":false,"context_lines":[{"line_number":59,"context_line":".. rest_method:: GET /v1/portgroups/{portgroup_ident}/ports/detail"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Return a detailed list of bare metal Ports associated with ``portgroup_ident``."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Normal response code: 200"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Error codes: 400,401,403,404"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"1f1a1f67_db6fc225","line":62,"updated":"2017-07-19 14:23:18.000000000","message":"ditto","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3dc40f1144075755470cc40403314d35756706ca","unresolved":false,"context_lines":[{"line_number":59,"context_line":".. rest_method:: GET /v1/portgroups/{portgroup_ident}/ports/detail"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Return a detailed list of bare metal Ports associated with ``portgroup_ident``."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Normal response code: 200"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Error codes: 400,401,403,404"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"1f1a1f67_d1dd63dd","line":62,"in_reply_to":"1f1a1f67_db6fc225","updated":"2017-07-19 15:14:07.000000000","message":"Done","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"}],"api-ref/source/baremetal-api-v1-ports.inc":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":82,"context_line":"Creates a new Port resource."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"This method requires a Node UUID and the physical hardware address for the Port"},{"line_number":85,"context_line":"(MAC address in most cases)."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Normal response code: 201"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":9,"id":"1f1a1f67_395907fe","line":85,"updated":"2017-07-12 13:51:10.000000000","message":"There is no mention of microversions for creation.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"ddf8c63185602e6280fc64b7184dd616e23fbfb2","unresolved":false,"context_lines":[{"line_number":82,"context_line":"Creates a new Port resource."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"This method requires a Node UUID and the physical hardware address for the Port"},{"line_number":85,"context_line":"(MAC address in most cases)."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Normal response code: 201"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":9,"id":"1f1a1f67_cbd22b35","line":85,"in_reply_to":"1f1a1f67_395907fe","updated":"2017-07-12 15:54:07.000000000","message":"https://review.openstack.org/#/c/483015/","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":92,"context_line":".. rest_parameters:: parameters.yaml"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    - node_uuid: node_uuid"},{"line_number":95,"context_line":"    - address: port_address"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"**Example Port creation request:**"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":9,"id":"1f1a1f67_b976373e","line":95,"updated":"2017-07-12 13:51:10.000000000","message":"We\u0027re missing a whole host of parameters here.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"ddf8c63185602e6280fc64b7184dd616e23fbfb2","unresolved":false,"context_lines":[{"line_number":92,"context_line":".. rest_parameters:: parameters.yaml"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    - node_uuid: node_uuid"},{"line_number":95,"context_line":"    - address: port_address"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"**Example Port creation request:**"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":9,"id":"1f1a1f67_6be1d7fe","line":95,"in_reply_to":"1f1a1f67_b976373e","updated":"2017-07-12 15:54:07.000000000","message":"https://review.openstack.org/#/c/483015/","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"``portgroup`` query parameter and ``portgroup_uuid`` response field"},{"line_number":138,"context_line":"were added in API microversion 1.24."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Normal response code: 200"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Request"}],"source_content_type":"text/x-c++src","patch_set":9,"id":"3f1d235d_1a7019dc","line":139,"updated":"2017-07-11 20:49:57.000000000","message":"Doesn\u0027t look like we are very consistent here. Not sure if we should delete L137-138, or add physical_network and missing local_link_connection \u0026 pxe_enabled.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"ddf8c63185602e6280fc64b7184dd616e23fbfb2","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"``portgroup`` query parameter and ``portgroup_uuid`` response field"},{"line_number":138,"context_line":"were added in API microversion 1.24."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Normal response code: 200"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Request"}],"source_content_type":"text/x-c++src","patch_set":9,"id":"1f1a1f67_4b217b4d","line":139,"in_reply_to":"1f1a1f67_d99333a3","updated":"2017-07-12 15:54:07.000000000","message":"Others fixed in https://review.openstack.org/#/c/483015/","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"``portgroup`` query parameter and ``portgroup_uuid`` response field"},{"line_number":138,"context_line":"were added in API microversion 1.24."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Normal response code: 200"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Request"}],"source_content_type":"text/x-c++src","patch_set":9,"id":"1f1a1f67_d99333a3","line":139,"in_reply_to":"3f1d235d_1a7019dc","updated":"2017-07-12 13:51:10.000000000","message":"I\u0027ll add physical_network here, and the others in a separate patch.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"``portgroup`` query parameter and ``portgroup_uuid`` response field"},{"line_number":193,"context_line":"were added in API microversion 1.24."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Normal response code: 200"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Request"}],"source_content_type":"text/x-c++src","patch_set":9,"id":"3f1d235d_9a29c99c","line":194,"updated":"2017-07-11 20:49:57.000000000","message":"ditto.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"``portgroup`` query parameter and ``portgroup_uuid`` response field"},{"line_number":193,"context_line":"were added in API microversion 1.24."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Normal response code: 200"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Request"}],"source_content_type":"text/x-c++src","patch_set":9,"id":"1f1a1f67_39cb47a6","line":194,"in_reply_to":"3f1d235d_9a29c99c","updated":"2017-07-12 13:51:10.000000000","message":"Done","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"74c4d66affbd778e63126c01791756ba3b5ed491","unresolved":false,"context_lines":[{"line_number":84,"context_line":"This method requires a Node UUID and the physical hardware address for the Port"},{"line_number":85,"context_line":"(MAC address in most cases)."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"``physical_network`` response field was added in API microversion 1.34."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Normal response code: 201"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":11,"id":"1f1a1f67_126b2bf1","line":87,"updated":"2017-07-17 19:43:05.000000000","message":"I wonder if we should put this in. Seems like there are two things that need clarification if we do:\n\n1. the above sentence mentions that node uuid and address are required. So should we be explicit and mention that physical_network is optional?\n\n2. physical_network is avail both in request \u0026 response, so maybe s/response//\n\nok, you addressed #2 in a separate patch [1]. And #1 is ok given that there are other fields mentioned in the other patch as well.\n\n[1] https://review.openstack.org/#/c/483015/","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7169c82118a599ff886b1df262866f2b77f43227","unresolved":false,"context_lines":[{"line_number":84,"context_line":"This method requires a Node UUID and the physical hardware address for the Port"},{"line_number":85,"context_line":"(MAC address in most cases)."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"``physical_network`` response field was added in API microversion 1.34."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Normal response code: 201"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":11,"id":"1f1a1f67_88b5b580","line":87,"in_reply_to":"1f1a1f67_126b2bf1","updated":"2017-07-18 10:38:08.000000000","message":"I think this adds up to ok? :)","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f690fbd3e296914e1dad214ee8266d369b1e4927","unresolved":false,"context_lines":[{"line_number":84,"context_line":"This method requires a Node UUID and the physical hardware address for the Port"},{"line_number":85,"context_line":"(MAC address in most cases)."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"``physical_network`` response field was added in API microversion 1.34."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Normal response code: 201"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":11,"id":"1f1a1f67_9b68581d","line":87,"in_reply_to":"1f1a1f67_88b5b580","updated":"2017-07-18 13:05:38.000000000","message":"Yes, sorry, it is OK cuz addressed in other patch. I could have been clearer; I had been going back \u0026 forth between the two patches :)","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"075bdd35c24565651461678aa2a962907e102996","unresolved":false,"context_lines":[{"line_number":239,"context_line":".. rest_method:: PATCH /v1/ports/{port_id}"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Update a Port."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"Normal response code: 200"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Request"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"1f1a1f67_fb1f1eb4","line":242,"updated":"2017-07-19 14:23:18.000000000","message":"ditto","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3dc40f1144075755470cc40403314d35756706ca","unresolved":false,"context_lines":[{"line_number":239,"context_line":".. rest_method:: PATCH /v1/ports/{port_id}"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Update a Port."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"Normal response code: 200"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Request"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"1f1a1f67_d1f6835d","line":242,"in_reply_to":"1f1a1f67_fb1f1eb4","updated":"2017-07-19 15:14:07.000000000","message":"Done","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"}],"api-ref/source/parameters.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"432fbaf47cdef96e3ebed8a87b656b068fa96ee1","unresolved":false,"context_lines":[{"line_number":761,"context_line":"physical_network:"},{"line_number":762,"context_line":"  description: |"},{"line_number":763,"context_line":"    The name of the physical network to which a port is connected. May be"},{"line_number":764,"context_line":"    empty. Added in microversion 1.32."},{"line_number":765,"context_line":"  in: body"},{"line_number":766,"context_line":"  required: true"},{"line_number":767,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"df140735_8102b93d","line":764,"updated":"2017-06-07 16:35:49.000000000","message":"nit, maybe. The other strings I see just above/below this have s/microversion/API microversion/","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3d0c7752a2d161531ee9795c78c72c7cd2df1e91","unresolved":false,"context_lines":[{"line_number":761,"context_line":"physical_network:"},{"line_number":762,"context_line":"  description: |"},{"line_number":763,"context_line":"    The name of the physical network to which a port is connected. May be"},{"line_number":764,"context_line":"    empty. Added in microversion 1.32."},{"line_number":765,"context_line":"  in: body"},{"line_number":766,"context_line":"  required: true"},{"line_number":767,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7f231b9d_12b26fe7","line":764,"in_reply_to":"df140735_8102b93d","updated":"2017-06-12 18:19:59.000000000","message":"Done.","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"}],"api-ref/source/samples/port-create-request.json":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"cfa635a5ca03827c397f2fe5f197acaa01f57fcc","unresolved":false,"context_lines":[{"line_number":7,"context_line":"        \"port_id\": \"Ethernet3/1\","},{"line_number":8,"context_line":"        \"switch_info\": \"switch1\""},{"line_number":9,"context_line":"    },"},{"line_number":10,"context_line":"    \"physical_network\": \"physnet1\""},{"line_number":11,"context_line":"}"}],"source_content_type":"application/json","patch_set":11,"id":"1f1a1f67_f6b52333","line":10,"updated":"2017-07-18 13:26:57.000000000","message":"please bump api microversion in https://github.com/openstack/ironic/blob/master/api-ref/regenerate-samples.sh#L14","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"2b86b21b00ab4e06230a2181a6cd547ee6d7082b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"        \"port_id\": \"Ethernet3/1\","},{"line_number":8,"context_line":"        \"switch_info\": \"switch1\""},{"line_number":9,"context_line":"    },"},{"line_number":10,"context_line":"    \"physical_network\": \"physnet1\""},{"line_number":11,"context_line":"}"}],"source_content_type":"application/json","patch_set":11,"id":"1f1a1f67_6c1f045b","line":10,"in_reply_to":"1f1a1f67_f6b52333","updated":"2017-07-18 13:58:55.000000000","message":"Done","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"}],"doc/source/admin/multitenancy.rst":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Configuring nodes"},{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"#. Multi-tenancy support was added in the 1.20 API version. The following"},{"line_number":43,"context_line":"   examples assume you are using python-ironicclient version 1.5.0 or higher."},{"line_number":44,"context_line":"   They show the usage of both ``ironic`` and ``openstack baremetal`` commands."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_55654244","line":42,"updated":"2017-07-11 20:49:57.000000000","message":"Sigh. I wonder if we should just delete this. Or mention somewhere that physical_network field/support was added in blah blah.\n\nHmm, and if you use an example that sets/shows the physical_network field, you\u0027ll need to update the python-ironicclient version below.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Configuring nodes"},{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"#. Multi-tenancy support was added in the 1.20 API version. The following"},{"line_number":43,"context_line":"   examples assume you are using python-ironicclient version 1.5.0 or higher."},{"line_number":44,"context_line":"   They show the usage of both ``ironic`` and ``openstack baremetal`` commands."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_19a3eb51","line":42,"in_reply_to":"3f1d235d_55654244","updated":"2017-07-12 13:51:10.000000000","message":"Good points. I think it\u0027s useful for users who may not be too familiar with the microversion system. It might be better summarised as a bullet list or table of feature to client version \u0026 API microversion mappings, plus a generic example of how to set the client\u0027s API version.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":46,"context_line":"   If you\u0027re going to use ``ironic`` command, set the following variable in"},{"line_number":47,"context_line":"   your shell environment::"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    export IRONIC_API_VERSION\u003d1.20"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"   If you\u0027re using ironic client plugin for openstack client via"},{"line_number":52,"context_line":"   ``openstack baremetal`` commands, export the following variable::"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_155fca72","line":49,"updated":"2017-07-11 20:49:57.000000000","message":"hmm, might want to update this.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":46,"context_line":"   If you\u0027re going to use ``ironic`` command, set the following variable in"},{"line_number":47,"context_line":"   your shell environment::"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    export IRONIC_API_VERSION\u003d1.20"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"   If you\u0027re using ironic client plugin for openstack client via"},{"line_number":52,"context_line":"   ``openstack baremetal`` commands, export the following variable::"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_998edbce","line":49,"in_reply_to":"3f1d235d_155fca72","updated":"2017-07-12 13:51:10.000000000","message":"Done","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":51,"context_line":"   If you\u0027re using ironic client plugin for openstack client via"},{"line_number":52,"context_line":"   ``openstack baremetal`` commands, export the following variable::"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    export OS_BAREMETAL_API_VERSION\u003d1.20"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"#. The node\u0027s ``network_interface`` field should be set to a valid network"},{"line_number":57,"context_line":"   interface. Valid interfaces are listed in the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_d5503261","line":54,"updated":"2017-07-11 20:49:57.000000000","message":"and this.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":51,"context_line":"   If you\u0027re using ironic client plugin for openstack client via"},{"line_number":52,"context_line":"   ``openstack baremetal`` commands, export the following variable::"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    export OS_BAREMETAL_API_VERSION\u003d1.20"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"#. The node\u0027s ``network_interface`` field should be set to a valid network"},{"line_number":57,"context_line":"   interface. Valid interfaces are listed in the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_79bd3f67","line":54,"in_reply_to":"3f1d235d_d5503261","updated":"2017-07-12 13:51:10.000000000","message":"Done","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":106,"context_line":"          field."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"   Ports may be associated with a physical network using the"},{"line_number":109,"context_line":"   ``physical_network`` field. The Bare Metal service uses this information"},{"line_number":110,"context_line":"   when mapping between virtual ports in the Networking service and physical"},{"line_number":111,"context_line":"   ports and portgroups in the Bare Metal service.  The port physical"},{"line_number":112,"context_line":"   network field is optional, and if not set then any virtual port may be"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_f5c56e8f","line":109,"updated":"2017-07-11 20:49:57.000000000","message":"is it clear that this field is part of a port object, or should we be explicit, eg s/using the/using the port\u0027s/","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":106,"context_line":"          field."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"   Ports may be associated with a physical network using the"},{"line_number":109,"context_line":"   ``physical_network`` field. The Bare Metal service uses this information"},{"line_number":110,"context_line":"   when mapping between virtual ports in the Networking service and physical"},{"line_number":111,"context_line":"   ports and portgroups in the Bare Metal service.  The port physical"},{"line_number":112,"context_line":"   network field is optional, and if not set then any virtual port may be"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_1c399940","line":109,"in_reply_to":"3f1d235d_f5c56e8f","updated":"2017-07-12 13:51:10.000000000","message":"I\u0027ll clarify this.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":108,"context_line":"   Ports may be associated with a physical network using the"},{"line_number":109,"context_line":"   ``physical_network`` field. The Bare Metal service uses this information"},{"line_number":110,"context_line":"   when mapping between virtual ports in the Networking service and physical"},{"line_number":111,"context_line":"   ports and portgroups in the Bare Metal service.  The port physical"},{"line_number":112,"context_line":"   network field is optional, and if not set then any virtual port may be"},{"line_number":113,"context_line":"   mapped to that port, provided that no free port with a suitable physical"},{"line_number":114,"context_line":"   network assignment exists."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_75371eb2","line":111,"updated":"2017-07-11 20:49:57.000000000","message":"s/port physical/port\u0027s physical/","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":108,"context_line":"   Ports may be associated with a physical network using the"},{"line_number":109,"context_line":"   ``physical_network`` field. The Bare Metal service uses this information"},{"line_number":110,"context_line":"   when mapping between virtual ports in the Networking service and physical"},{"line_number":111,"context_line":"   ports and portgroups in the Bare Metal service.  The port physical"},{"line_number":112,"context_line":"   network field is optional, and if not set then any virtual port may be"},{"line_number":113,"context_line":"   mapped to that port, provided that no free port with a suitable physical"},{"line_number":114,"context_line":"   network assignment exists."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_dc3a0133","line":111,"in_reply_to":"3f1d235d_75371eb2","updated":"2017-07-12 13:51:10.000000000","message":"Done","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":110,"context_line":"   when mapping between virtual ports in the Networking service and physical"},{"line_number":111,"context_line":"   ports and portgroups in the Bare Metal service.  The port physical"},{"line_number":112,"context_line":"   network field is optional, and if not set then any virtual port may be"},{"line_number":113,"context_line":"   mapped to that port, provided that no free port with a suitable physical"},{"line_number":114,"context_line":"   network assignment exists."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   The physical network of a portgroup is defined by the physical network of"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_f5f8cec4","line":113,"updated":"2017-07-11 20:49:57.000000000","message":"by \u0027free port\u0027 do you mean a virtual port or a physical port?","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":110,"context_line":"   when mapping between virtual ports in the Networking service and physical"},{"line_number":111,"context_line":"   ports and portgroups in the Bare Metal service.  The port physical"},{"line_number":112,"context_line":"   network field is optional, and if not set then any virtual port may be"},{"line_number":113,"context_line":"   mapped to that port, provided that no free port with a suitable physical"},{"line_number":114,"context_line":"   network assignment exists."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   The physical network of a portgroup is defined by the physical network of"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_9c1da9bf","line":113,"in_reply_to":"3f1d235d_f5f8cec4","updated":"2017-07-12 13:51:10.000000000","message":"Physical. I\u0027ll try to clarify.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":113,"context_line":"   mapped to that port, provided that no free port with a suitable physical"},{"line_number":114,"context_line":"   network assignment exists."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   The physical network of a portgroup is defined by the physical network of"},{"line_number":117,"context_line":"   its constituent ports. The Bare Metal service ensures that all ports in a"},{"line_number":118,"context_line":"   portgroup have the same value in their physical network field."},{"line_number":119,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_15aeaa97","line":116,"updated":"2017-07-11 20:49:57.000000000","message":"nit, i believe it is s/portgroup/port group/\n\nalthough I don\u0027t think we went through and cleaned that up in our documentation.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":113,"context_line":"   mapped to that port, provided that no free port with a suitable physical"},{"line_number":114,"context_line":"   network assignment exists."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   The physical network of a portgroup is defined by the physical network of"},{"line_number":117,"context_line":"   its constituent ports. The Bare Metal service ensures that all ports in a"},{"line_number":118,"context_line":"   portgroup have the same value in their physical network field."},{"line_number":119,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_1c607932","line":116,"in_reply_to":"3f1d235d_15aeaa97","updated":"2017-07-12 13:51:10.000000000","message":"Done","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":125,"context_line":"   * Prefer ports and portgroups that have a physical network to ports and"},{"line_number":126,"context_line":"     portgroups that do not have a physical network."},{"line_number":127,"context_line":"   * Prefer portgroups to ports."},{"line_number":128,"context_line":"   * Prefer ports with PXE enabled."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"   Create a port as follows:"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_f5f9ee7f","line":128,"updated":"2017-07-11 20:49:57.000000000","message":"I\u0027ve always had a problem with the way you describe/\"order\" the criteria because it isn\u0027t a strict ordering from top to bottom but if others understand it, I guess it is fine. I think I tried to describe the ordering the way I thought it worked but you didn\u0027t \u0027take\u0027 my description.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"c1a13fbe11051a95d10de1345e8a0ac60a07ed5c","unresolved":false,"context_lines":[{"line_number":125,"context_line":"   * Prefer ports and portgroups that have a physical network to ports and"},{"line_number":126,"context_line":"     portgroups that do not have a physical network."},{"line_number":127,"context_line":"   * Prefer portgroups to ports."},{"line_number":128,"context_line":"   * Prefer ports with PXE enabled."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"   Create a port as follows:"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_ee6791b6","line":128,"in_reply_to":"1f1a1f67_a75d5616","updated":"2017-07-18 10:33:35.000000000","message":"It is ordered - rule 1 is higher priority than rules 2 and 3 etc. I think it\u0027s just a different way of thinking about it. Your list is a lookup table from description to priority (list index), mine is a set of rules for comparing and sorting items. They\u0027re both valid, but I think if we were to add one or two more rules to my list, particularly non-binary ones, your list would start to see a combinatorial explosion.\n\nAnyway... :)","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"21e9c59ff47d9ff1a70e2597764315d431153f0b","unresolved":false,"context_lines":[{"line_number":125,"context_line":"   * Prefer ports and portgroups that have a physical network to ports and"},{"line_number":126,"context_line":"     portgroups that do not have a physical network."},{"line_number":127,"context_line":"   * Prefer portgroups to ports."},{"line_number":128,"context_line":"   * Prefer ports with PXE enabled."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"   Create a port as follows:"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_a75d5616","line":128,"in_reply_to":"1f1a1f67_a75f320d","updated":"2017-07-17 19:43:29.000000000","message":"Your point 3 is used/applicable for points 1 \u0026 2. When I see \u0027ordered criteria\u0027, I think of it as an ordered list, from top to bottom, so I\u0027d think of point 3 as the third thing. Maybe it is just my interpretation of that so if others are fine with it, that is fine :-)","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":125,"context_line":"   * Prefer ports and portgroups that have a physical network to ports and"},{"line_number":126,"context_line":"     portgroups that do not have a physical network."},{"line_number":127,"context_line":"   * Prefer portgroups to ports."},{"line_number":128,"context_line":"   * Prefer ports with PXE enabled."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"   Create a port as follows:"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_a75f320d","line":128,"in_reply_to":"3f1d235d_f5f9ee7f","updated":"2017-07-12 13:51:10.000000000","message":"I thought your description was just your expansion of mine, a way to determine whether you had understood mine, rather than a suggestion for a replacement.\n\nUnless I\u0027m mistaken, the two are equivalent. Mine lists the rules used in making a decision, while yours lists the priorities of the various possible classes of ports \u0026 port groups, based on those rules.\n\nFor the benefit of others, here is the description offered by Ruby in https://review.openstack.org/#/c/470406/:\n\n* portgroup with physical network in physnets, that is not None\n* port with physical network in physnets, that is not None; prefer with PXE enabled.\n* portgroup with physnet\u003d\u003dNone\n* port with physnet\u003d\u003dNone; prefer with PXE enabled.\n\nThese would have to be modified to suit to the context of user documentation rather than a docstring.\n\nLet\u0027s see what others think.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"After these steps, the provisioning of the created node will happen in the"},{"line_number":156,"context_line":"provisioning network, and then the node will be moved to the tenant network"},{"line_number":157,"context_line":"that was requested."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_1586aadc","line":157,"updated":"2017-07-11 20:49:57.000000000","message":"I wonder whether it might be better to describe the physical network field outside this list of steps. Or put it in its own step. I\u0027m not convinced it makes sense (or is easy to understand) by putting it in the Port-creation step. Unless you mean to give an example of a port-create with the physical_network being set?\n\nThis is used for attaching vifs, right? Maybe we should have a new section on that? (I\u0027m just throwing ideas; they may be landing in the garbage bin.)","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"After these steps, the provisioning of the created node will happen in the"},{"line_number":156,"context_line":"provisioning network, and then the node will be moved to the tenant network"},{"line_number":157,"context_line":"that was requested."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_0d128559","line":157,"in_reply_to":"3f1d235d_1586aadc","updated":"2017-07-12 13:51:10.000000000","message":"I do agree with this, I was really just following the example of local_link_connection by adding it to the creation steps.\n\nI\u0027ve created a new \u0027Concepts\u0027 section and added network interfaces, LLC, and physnets to it.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"74c4d66affbd778e63126c01791756ba3b5ed491","unresolved":false,"context_lines":[{"line_number":14,"context_line":"tenants can use nodes in an isolated fashion. However, this configuration does"},{"line_number":15,"context_line":"not support trunk ports belonging to multiple networks."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Concepts"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Network interfaces"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1f1a1f67_07b08a42","line":17,"updated":"2017-07-17 19:43:05.000000000","message":"thx for adding this; much better!","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7169c82118a599ff886b1df262866f2b77f43227","unresolved":false,"context_lines":[{"line_number":14,"context_line":"tenants can use nodes in an isolated fashion. However, this configuration does"},{"line_number":15,"context_line":"not support trunk ports belonging to multiple networks."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Concepts"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Network interfaces"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1f1a1f67_a83751ff","line":17,"in_reply_to":"1f1a1f67_07b08a42","updated":"2017-07-18 10:38:08.000000000","message":"No problem. Prising apart the explanations and the instructions in docs is often tough.","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c1ad0654343ba5af84a2d1da6562df475c897865","unresolved":false,"context_lines":[{"line_number":102,"context_line":"     python-ironicclient version 1.5.0 or higher."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"   * Physical network support for ironic ports was added in API version 1.34,"},{"line_number":105,"context_line":"     and is supported by python-ironicclient version 1.15.0 or higher."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"   The following examples assume you are using python-ironicclient version"},{"line_number":108,"context_line":"   1.15.0 or higher.  They show the usage of both ``ironic`` and ``openstack"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1f1a1f67_a372eb79","line":105,"range":{"start_line":105,"start_character":55,"end_line":105,"end_character":57},"updated":"2017-07-17 18:31:59.000000000","message":"Based on the meeting discussion today, it looks like we are going to end up cutting 1.15.0 today, so this should very likely be 1.16.0.","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7169c82118a599ff886b1df262866f2b77f43227","unresolved":false,"context_lines":[{"line_number":102,"context_line":"     python-ironicclient version 1.5.0 or higher."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"   * Physical network support for ironic ports was added in API version 1.34,"},{"line_number":105,"context_line":"     and is supported by python-ironicclient version 1.15.0 or higher."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"   The following examples assume you are using python-ironicclient version"},{"line_number":108,"context_line":"   1.15.0 or higher.  They show the usage of both ``ironic`` and ``openstack"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1f1a1f67_d3291e8a","line":105,"range":{"start_line":105,"start_character":55,"end_line":105,"end_character":57},"in_reply_to":"1f1a1f67_a372eb79","updated":"2017-07-18 10:38:08.000000000","message":"Thanks for flagging this up. I don\u0027t see a 1.15 yet but I\u0027ll keep an eye out.","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"075bdd35c24565651461678aa2a962907e102996","unresolved":false,"context_lines":[{"line_number":102,"context_line":"     python-ironicclient version 1.5.0 or higher."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"   * Physical network support for ironic ports was added in API version 1.34,"},{"line_number":105,"context_line":"     and is supported by python-ironicclient version 1.15.0 or higher."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"   The following examples assume you are using python-ironicclient version"},{"line_number":108,"context_line":"   1.15.0 or higher.  They show the usage of both ``ironic`` and ``openstack"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1f1a1f67_7bb66e8c","line":105,"updated":"2017-07-19 14:23:18.000000000","message":"we\u0027re still trying to get a 1.15 out prior to this patch landing but let\u0027s see how it goes...","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"}],"doc/source/admin/notifications.rst":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    \"payload\":{"},{"line_number":199,"context_line":"        \"ironic_object.namespace\":\"ironic\","},{"line_number":200,"context_line":"        \"ironic_object.name\":\"PortCRUDPayload\","},{"line_number":201,"context_line":"        \"ironic_object.version\":\"1.1\","},{"line_number":202,"context_line":"        \"ironic_object.data\":{"},{"line_number":203,"context_line":"            \"address\": \"77:66:23:34:11:b7\","},{"line_number":204,"context_line":"            \"created_at\": \"2016-02-11T15:23:03+00:00\","}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_d5acb236","line":201,"updated":"2017-07-11 20:49:57.000000000","message":"I\u0027m guessing this needs to be updated","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    \"payload\":{"},{"line_number":199,"context_line":"        \"ironic_object.namespace\":\"ironic\","},{"line_number":200,"context_line":"        \"ironic_object.name\":\"PortCRUDPayload\","},{"line_number":201,"context_line":"        \"ironic_object.version\":\"1.1\","},{"line_number":202,"context_line":"        \"ironic_object.data\":{"},{"line_number":203,"context_line":"            \"address\": \"77:66:23:34:11:b7\","},{"line_number":204,"context_line":"            \"created_at\": \"2016-02-11T15:23:03+00:00\","}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_0dc5e58e","line":201,"in_reply_to":"3f1d235d_d5acb236","updated":"2017-07-12 13:51:10.000000000","message":"Done","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"}],"doc/source/admin/portgroups.rst":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"e61e2e477d15bef2d253601350d814b74704b810","unresolved":false,"context_lines":[{"line_number":92,"context_line":"   ``enroll``, ``manageable``, or ``inspecting`` states. A port group can have"},{"line_number":93,"context_line":"   the same or different address as individual ports."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"   All ports in a portgroup must have the same value in their"},{"line_number":96,"context_line":"   ``physical_network`` field. This restriction is enforced by the ironic API"},{"line_number":97,"context_line":"   when creating and updating ports."},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_9a9af0c2","line":95,"range":{"start_line":95,"start_character":42,"end_line":95,"end_character":52},"updated":"2017-07-11 15:17:04.000000000","message":"It may not so obvious that None is included, how about \u0027same value or None\u0027 here?","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":92,"context_line":"   ``enroll``, ``manageable``, or ``inspecting`` states. A port group can have"},{"line_number":93,"context_line":"   the same or different address as individual ports."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"   All ports in a portgroup must have the same value in their"},{"line_number":96,"context_line":"   ``physical_network`` field. This restriction is enforced by the ironic API"},{"line_number":97,"context_line":"   when creating and updating ports."},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_2d5e61e6","line":95,"range":{"start_line":95,"start_character":42,"end_line":95,"end_character":52},"in_reply_to":"3f1d235d_957bdabc","updated":"2017-07-12 13:51:10.000000000","message":"I think we agreed on \u0027has no physical network\u0027 for user documentation. I\u0027ll try to incorporate this.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":92,"context_line":"   ``enroll``, ``manageable``, or ``inspecting`` states. A port group can have"},{"line_number":93,"context_line":"   the same or different address as individual ports."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"   All ports in a portgroup must have the same value in their"},{"line_number":96,"context_line":"   ``physical_network`` field. This restriction is enforced by the ironic API"},{"line_number":97,"context_line":"   when creating and updating ports."},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_957bdabc","line":95,"range":{"start_line":95,"start_character":42,"end_line":95,"end_character":52},"in_reply_to":"3f1d235d_9a9af0c2","updated":"2017-07-11 20:49:57.000000000","message":"I\u0027m not sure \u0027None\u0027 makes sense here. But I don\u0027t recall. With the REST API (or OSC CLI), how do you specify a None value, can you do \u0027openstack baremetal port set --physical_network None\u0027? Anyway, whatever it is, maybe s/same value/same value (it may be \u003c\u0027None\u0027 or empty or \"\"\u003e)/","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"   All ports in a portgroup must have the same value in their"},{"line_number":96,"context_line":"   ``physical_network`` field. This restriction is enforced by the ironic API"},{"line_number":97,"context_line":"   when creating and updating ports."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"#. Boot an instance (or node directly, in case of using standalone ironic)"},{"line_number":100,"context_line":"   providing an image that has cloud-init version 0.7.7 or later and supports"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f1d235d_871cd16a","line":97,"updated":"2017-07-11 20:49:57.000000000","message":"I don\u0027t think we need to mention where the restriction is enforced or even that it is enforced.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"   All ports in a portgroup must have the same value in their"},{"line_number":96,"context_line":"   ``physical_network`` field. This restriction is enforced by the ironic API"},{"line_number":97,"context_line":"   when creating and updating ports."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"#. Boot an instance (or node directly, in case of using standalone ironic)"},{"line_number":100,"context_line":"   providing an image that has cloud-init version 0.7.7 or later and supports"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f1a1f67_8d5fb5e4","line":97,"in_reply_to":"3f1d235d_871cd16a","updated":"2017-07-12 13:51:10.000000000","message":"Done","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"74c4d66affbd778e63126c01791756ba3b5ed491","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"In order to change the physical network of the ports in a port group, all ports"},{"line_number":37,"context_line":"must first be removed from the port group, before changing their physical"},{"line_number":38,"context_line":"networks, then adding them back to the port group."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"See `\u003cmultitenancy-physnets\u003e`_ for further information on using physical"},{"line_number":41,"context_line":"networks in the Bare Metal service."}],"source_content_type":"text/x-rst","patch_set":11,"id":"1f1a1f67_e7da2e76","line":38,"updated":"2017-07-17 19:43:05.000000000","message":"nit, maybe s/networks/networks (to the same value)/","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7169c82118a599ff886b1df262866f2b77f43227","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"In order to change the physical network of the ports in a port group, all ports"},{"line_number":37,"context_line":"must first be removed from the port group, before changing their physical"},{"line_number":38,"context_line":"networks, then adding them back to the port group."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"See `\u003cmultitenancy-physnets\u003e`_ for further information on using physical"},{"line_number":41,"context_line":"networks in the Bare Metal service."}],"source_content_type":"text/x-rst","patch_set":11,"id":"1f1a1f67_9325e65e","line":38,"in_reply_to":"1f1a1f67_e7da2e76","updated":"2017-07-18 10:38:08.000000000","message":"Done","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"74c4d66affbd778e63126c01791756ba3b5ed491","unresolved":false,"context_lines":[{"line_number":37,"context_line":"must first be removed from the port group, before changing their physical"},{"line_number":38,"context_line":"networks, then adding them back to the port group."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"See `\u003cmultitenancy-physnets\u003e`_ for further information on using physical"},{"line_number":41,"context_line":"networks in the Bare Metal service."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Port groups configuration in the Bare Metal service"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1f1a1f67_e7710e78","line":40,"updated":"2017-07-17 19:43:05.000000000","message":"that link didn\u0027t work for me?","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7169c82118a599ff886b1df262866f2b77f43227","unresolved":false,"context_lines":[{"line_number":37,"context_line":"must first be removed from the port group, before changing their physical"},{"line_number":38,"context_line":"networks, then adding them back to the port group."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"See `\u003cmultitenancy-physnets\u003e`_ for further information on using physical"},{"line_number":41,"context_line":"networks in the Bare Metal service."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Port groups configuration in the Bare Metal service"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1f1a1f67_1319d620","line":40,"in_reply_to":"1f1a1f67_8ab93fcd","updated":"2017-07-18 10:38:08.000000000","message":"Oops. I added the link in admin/multitenancy.rst but it appears not to have worked. I\u0027ll sort it out.","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4050caf5905ffb0f50917d056f39629917ca10ed","unresolved":false,"context_lines":[{"line_number":37,"context_line":"must first be removed from the port group, before changing their physical"},{"line_number":38,"context_line":"networks, then adding them back to the port group."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"See `\u003cmultitenancy-physnets\u003e`_ for further information on using physical"},{"line_number":41,"context_line":"networks in the Bare Metal service."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Port groups configuration in the Bare Metal service"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1f1a1f67_8ab93fcd","line":40,"in_reply_to":"1f1a1f67_e7710e78","updated":"2017-07-17 20:02:54.000000000","message":"Yeah, this is a dead link, it is not defined anywhere.  Could it be meaning to refer to  a file not included?","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"075bdd35c24565651461678aa2a962907e102996","unresolved":false,"context_lines":[{"line_number":37,"context_line":"must first be removed from the port group, before changing their physical"},{"line_number":38,"context_line":"networks (to the same value), then adding them back to the port group."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"See :ref:`\u003cmultitenancy-physnets\u003e` for further information on using physical"},{"line_number":41,"context_line":"networks in the Bare Metal service."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Port groups configuration in the Bare Metal service"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1f1a1f67_fb7efeac","line":40,"updated":"2017-07-19 14:23:18.000000000","message":"docs job failed so i haven\u0027t verified that this link works","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3dc40f1144075755470cc40403314d35756706ca","unresolved":false,"context_lines":[{"line_number":37,"context_line":"must first be removed from the port group, before changing their physical"},{"line_number":38,"context_line":"networks (to the same value), then adding them back to the port group."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"See :ref:`\u003cmultitenancy-physnets\u003e` for further information on using physical"},{"line_number":41,"context_line":"networks in the Bare Metal service."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Port groups configuration in the Bare Metal service"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1f1a1f67_115d1b46","line":40,"in_reply_to":"1f1a1f67_fb7efeac","updated":"2017-07-19 15:14:07.000000000","message":"3rd time lucky. I\u0027m having trouble building the docs locally but I think I\u0027ve got the right syntax now.","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fc2825f495850e3c9c481413b7fcff039cbc618b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"must first be removed from the port group, before changing their physical"},{"line_number":38,"context_line":"networks (to the same value), then adding them back to the port group."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"See :ref:`physical networks \u003cmultitenancy-physnets\u003e` for further information on"},{"line_number":41,"context_line":"using physical networks in the Bare Metal service."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Port groups configuration in the Bare Metal service"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1f1a1f67_75e2f2d6","line":40,"updated":"2017-07-19 18:52:57.000000000","message":"yay, works now :)","commit_id":"02fff930fbab4caaa1181da9ee0f70523fe8d7ca"}],"doc/source/deploy/multitenancy.rst":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"432fbaf47cdef96e3ebed8a87b656b068fa96ee1","unresolved":false,"context_lines":[{"line_number":119,"context_line":"   When attaching a virtual interface (VIF) to a node, the following ordered"},{"line_number":120,"context_line":"   criteria are used to select a suitable unattached port or portgroup:"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"   * Reject ports and portgroups with a set physical network not supported by"},{"line_number":123,"context_line":"     the virtual port."},{"line_number":124,"context_line":"   * Prefer ports and portgroups with a set physical network supported by the"},{"line_number":125,"context_line":"     virtual port to ports and portgroups with an unset physical network."}],"source_content_type":"text/x-rst","patch_set":4,"id":"df140735_e134d5fd","line":122,"updated":"2017-06-07 16:35:49.000000000","message":"what do you mean by \u0027set physical network\u0027?","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"432fbaf47cdef96e3ebed8a87b656b068fa96ee1","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"   * Reject ports and portgroups with a set physical network not supported by"},{"line_number":123,"context_line":"     the virtual port."},{"line_number":124,"context_line":"   * Prefer ports and portgroups with a set physical network supported by the"},{"line_number":125,"context_line":"     virtual port to ports and portgroups with an unset physical network."},{"line_number":126,"context_line":"   * Prefer portgroups to ports."},{"line_number":127,"context_line":"   * Prefer ports with PXE enabled."}],"source_content_type":"text/x-rst","patch_set":4,"id":"df140735_212acd8f","line":124,"updated":"2017-06-07 16:35:49.000000000","message":"ditto\n\nOH. you mean ports and portgroups that have physical networks set to non-None. Normally, we describe it as eg \u0027ports and portgroups that have physical networks\u0027.\n\nIf you really want to use \u0027set\u0027 and \u0027unset\u0027, then I think it would be clearer as \u0027the physical_network field is set\u0027. But that doesn\u0027t work for portgroups anyway.","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3d0c7752a2d161531ee9795c78c72c7cd2df1e91","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"   * Reject ports and portgroups with a set physical network not supported by"},{"line_number":123,"context_line":"     the virtual port."},{"line_number":124,"context_line":"   * Prefer ports and portgroups with a set physical network supported by the"},{"line_number":125,"context_line":"     virtual port to ports and portgroups with an unset physical network."},{"line_number":126,"context_line":"   * Prefer portgroups to ports."},{"line_number":127,"context_line":"   * Prefer ports with PXE enabled."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f231b9d_85b8772a","line":124,"in_reply_to":"df140735_212acd8f","updated":"2017-06-12 18:19:59.000000000","message":"You\u0027ve got it. I\u0027ll use the has/does not have in the docs then.","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ff17b4da6044290adc756335c2cce48345afe18f","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"      ironic port-create -a $HW_MAC_ADDRESS -n $NODE_UUID \\"},{"line_number":134,"context_line":"      -l switch_id\u003d$SWITCH_MAC_ADDRESS -l switch_info\u003d$SWITCH_HOSTNAME \\"},{"line_number":135,"context_line":"      -l port_id\u003d$SWITCH_PORT --pxe-enabled true"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"   - ``openstack`` command::"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"df140735_37344fde","line":135,"updated":"2017-06-07 17:12:48.000000000","message":"can you specify physical network here?","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3d0c7752a2d161531ee9795c78c72c7cd2df1e91","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"      ironic port-create -a $HW_MAC_ADDRESS -n $NODE_UUID \\"},{"line_number":134,"context_line":"      -l switch_id\u003d$SWITCH_MAC_ADDRESS -l switch_info\u003d$SWITCH_HOSTNAME \\"},{"line_number":135,"context_line":"      -l port_id\u003d$SWITCH_PORT --pxe-enabled true"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"   - ``openstack`` command::"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f231b9d_4537ffb1","line":135,"in_reply_to":"df140735_37344fde","updated":"2017-06-12 18:19:59.000000000","message":"My proposed patch to python-ironicclient only adds support to OSC.","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ff17b4da6044290adc756335c2cce48345afe18f","unresolved":false,"context_lines":[{"line_number":140,"context_line":"      --local-link-connection switch_id\u003d$SWITCH_MAC_ADDRESS \\"},{"line_number":141,"context_line":"      --local-link-connection switch_info\u003d$SWITCH_HOSTNAME \\"},{"line_number":142,"context_line":"      --local-link-connection port_id\u003d$SWITCH_PORT --pxe-enabled true \\"},{"line_number":143,"context_line":"      --physical-network $PHYSICAL_NETWORK"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"#. Check the port configuration:"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"df140735_d72bd37f","line":143,"updated":"2017-06-07 17:12:48.000000000","message":"we need to be careful -- this doesn\u0027t exist yet.","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3d0c7752a2d161531ee9795c78c72c7cd2df1e91","unresolved":false,"context_lines":[{"line_number":140,"context_line":"      --local-link-connection switch_id\u003d$SWITCH_MAC_ADDRESS \\"},{"line_number":141,"context_line":"      --local-link-connection switch_info\u003d$SWITCH_HOSTNAME \\"},{"line_number":142,"context_line":"      --local-link-connection port_id\u003d$SWITCH_PORT --pxe-enabled true \\"},{"line_number":143,"context_line":"      --physical-network $PHYSICAL_NETWORK"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"#. Check the port configuration:"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f231b9d_c54aef25","line":143,"in_reply_to":"df140735_d72bd37f","updated":"2017-06-12 18:19:59.000000000","message":"I\u0027ll remove it.","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"}],"ironic/api/controllers/v1/port.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"432fbaf47cdef96e3ebed8a87b656b068fa96ee1","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    local_link_connection \u003d types.locallinkconnectiontype"},{"line_number":149,"context_line":"    \"\"\"The port binding profile for the port\"\"\""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    physical_network \u003d wtypes.StringType(max_length\u003d64)"},{"line_number":152,"context_line":"    \"\"\"The name of the physical network to which this port is connected.\"\"\""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    links \u003d wsme.wsattr([link.Link], readonly\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_9412f908","line":151,"updated":"2017-06-07 16:35:49.000000000","message":"i forgot to ask, where did 64 come from?","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3d0c7752a2d161531ee9795c78c72c7cd2df1e91","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    local_link_connection \u003d types.locallinkconnectiontype"},{"line_number":149,"context_line":"    \"\"\"The port binding profile for the port\"\"\""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    physical_network \u003d wtypes.StringType(max_length\u003d64)"},{"line_number":152,"context_line":"    \"\"\"The name of the physical network to which this port is connected.\"\"\""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    links \u003d wsme.wsattr([link.Link], readonly\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_c5730f80","line":151,"in_reply_to":"df140735_9412f908","updated":"2017-06-12 18:19:59.000000000","message":"It\u0027s what is used by neutron in their network DB model.","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"432fbaf47cdef96e3ebed8a87b656b068fa96ee1","unresolved":false,"context_lines":[{"line_number":507,"context_line":"            raise exception.OperationNotPermitted()"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"        api_utils.check_allow_specify_fields(fields)"},{"line_number":510,"context_line":"        self._check_allowed_port_fields(fields)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        rpc_port \u003d objects.Port.get_by_uuid(pecan.request.context, port_uuid)"},{"line_number":513,"context_line":"        return Port.convert_with_links(rpc_port, fields\u003dfields)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_f4881523","line":510,"updated":"2017-06-07 16:35:49.000000000","message":"oh, this looks like a fix to a bug. Should probably be in its own patch but I guess this is ok...","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3d0c7752a2d161531ee9795c78c72c7cd2df1e91","unresolved":false,"context_lines":[{"line_number":507,"context_line":"            raise exception.OperationNotPermitted()"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"        api_utils.check_allow_specify_fields(fields)"},{"line_number":510,"context_line":"        self._check_allowed_port_fields(fields)"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        rpc_port \u003d objects.Port.get_by_uuid(pecan.request.context, port_uuid)"},{"line_number":513,"context_line":"        return Port.convert_with_links(rpc_port, fields\u003dfields)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_050fc7e1","line":510,"in_reply_to":"df140735_f4881523","updated":"2017-06-12 18:19:59.000000000","message":"Stricly, yes I suppose it is :)","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":566,"context_line":"            # required determine how best to support rolling upgrades from a"},{"line_number":567,"context_line":"            # release in which ports are created by the API service to one in"},{"line_number":568,"context_line":"            # which they are created by the conductor service, while ensuring"},{"line_number":569,"context_line":"            # that all required validation is performed."},{"line_number":570,"context_line":"            topic \u003d pecan.request.rpcapi.get_topic_for(rpc_node)"},{"line_number":571,"context_line":"            new_port \u003d pecan.request.rpcapi.create_port(context, rpc_port,"},{"line_number":572,"context_line":"                                                        topic)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_c7f889c5","line":569,"updated":"2017-07-11 20:49:57.000000000","message":"Now might be a good time for me/us to think about this...","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":566,"context_line":"            # required determine how best to support rolling upgrades from a"},{"line_number":567,"context_line":"            # release in which ports are created by the API service to one in"},{"line_number":568,"context_line":"            # which they are created by the conductor service, while ensuring"},{"line_number":569,"context_line":"            # that all required validation is performed."},{"line_number":570,"context_line":"            topic \u003d pecan.request.rpcapi.get_topic_for(rpc_node)"},{"line_number":571,"context_line":"            new_port \u003d pecan.request.rpcapi.create_port(context, rpc_port,"},{"line_number":572,"context_line":"                                                        topic)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_0d55e550","line":569,"in_reply_to":"3f1d235d_c7f889c5","updated":"2017-07-12 13:51:10.000000000","message":"Sure. Grab me on IRC if you want to discuss.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"}],"ironic/api/controllers/v1/utils.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ff17b4da6044290adc756335c2cce48345afe18f","unresolved":false,"context_lines":[{"line_number":557,"context_line":"    \"\"\""},{"line_number":558,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":559,"context_line":"            versions.MINOR_32_PORT_PHYSICAL_NETWORK)"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"def get_controller_reserved_names(cls):"},{"line_number":563,"context_line":"    \"\"\"Get reserved names for a given controller."}],"source_content_type":"text/x-python","patch_set":4,"id":"df140735_f2d6e527","line":560,"updated":"2017-06-07 17:12:48.000000000","message":"So assuming we get rolling upgrades working in the same release as this feature, we\u0027ll need to update this. except that the call isn\u0027t avail yet. Maybe add a TODO so we remember to do so...","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3d0c7752a2d161531ee9795c78c72c7cd2df1e91","unresolved":false,"context_lines":[{"line_number":557,"context_line":"    \"\"\""},{"line_number":558,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":559,"context_line":"            versions.MINOR_32_PORT_PHYSICAL_NETWORK)"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"def get_controller_reserved_names(cls):"},{"line_number":563,"context_line":"    \"\"\"Get reserved names for a given controller."}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_8502b7b3","line":560,"in_reply_to":"df140735_f2d6e527","updated":"2017-06-12 18:19:59.000000000","message":"Done","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    # TODO(mgoddard): In order to support a rolling upgrade from the release"},{"line_number":578,"context_line":"    # that introduces the physical network field to the Port object, we will"},{"line_number":579,"context_line":"    # need to check the Port object version here as an additional condition for"},{"line_number":580,"context_line":"    # exposing this feature."},{"line_number":581,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":582,"context_line":"            versions.MINOR_34_PORT_PHYSICAL_NETWORK)"},{"line_number":583,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_07ab2189","line":580,"updated":"2017-07-11 20:49:57.000000000","message":"Shouldn\u0027t we add this code now, cuz we\u0027re exposing the field in this patch?","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    # TODO(mgoddard): In order to support a rolling upgrade from the release"},{"line_number":578,"context_line":"    # that introduces the physical network field to the Port object, we will"},{"line_number":579,"context_line":"    # need to check the Port object version here as an additional condition for"},{"line_number":580,"context_line":"    # exposing this feature."},{"line_number":581,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":582,"context_line":"            versions.MINOR_34_PORT_PHYSICAL_NETWORK)"},{"line_number":583,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_edd629c4","line":580,"in_reply_to":"3f1d235d_07ab2189","updated":"2017-07-12 13:51:10.000000000","message":"I think previously the ironic objects support wasn\u0027t quite there so we punted. If that is now ready, we can look at how to support rolling upgrades.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"cfa635a5ca03827c397f2fe5f197acaa01f57fcc","unresolved":false,"context_lines":[{"line_number":569,"context_line":""},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"def allow_port_physical_network():"},{"line_number":572,"context_line":"    \"\"\"Check if port physical network fields are allowed."},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"    Version 1.34 of the API added the physical network field to the port"},{"line_number":575,"context_line":"    object."}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_36e83be0","line":572,"range":{"start_line":572,"start_character":38,"end_line":572,"end_character":56},"updated":"2017-07-18 13:26:57.000000000","message":"field is allowed. It confuses we have only one physical_network field.","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"2b86b21b00ab4e06230a2181a6cd547ee6d7082b","unresolved":false,"context_lines":[{"line_number":569,"context_line":""},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"def allow_port_physical_network():"},{"line_number":572,"context_line":"    \"\"\"Check if port physical network fields are allowed."},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"    Version 1.34 of the API added the physical network field to the port"},{"line_number":575,"context_line":"    object."}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_2c3d8cc3","line":572,"range":{"start_line":572,"start_character":38,"end_line":572,"end_character":56},"in_reply_to":"1f1a1f67_36e83be0","updated":"2017-07-18 13:58:55.000000000","message":"Done","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"74c4d66affbd778e63126c01791756ba3b5ed491","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    # TODO(mgoddard): In order to support a rolling upgrade from the release"},{"line_number":578,"context_line":"    # that introduces the physical network field to the Port object, we will"},{"line_number":579,"context_line":"    # need to check the Port object version here as an additional condition for"},{"line_number":580,"context_line":"    # exposing this feature."},{"line_number":581,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":582,"context_line":"            versions.MINOR_34_PORT_PHYSICAL_NETWORK)"},{"line_number":583,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_677f3ee0","line":580,"updated":"2017-07-17 19:43:05.000000000","message":"I was thinking about this a bit more. This is used when hiding the physical_network field from responses, which doesn\u0027t matter much during a rolling upgrade. And during a rolling upgrades, it isn\u0027t possible to create a new port (because of the new RPC api for creating ports). If we don\u0027t check the (pinned) port version here though, I think the code will allow patches (port updates) to go through. But the conductor is pinned - the conductor will do whatever wrt validating the port for updating, BUT the physical network value will be dropped when saving to the DB. I suspect we don\u0027t want this behaviour, so it might be safest to add code here to prevent that from happening. Something like (I didn\u0027t test this):\n\nfrom oslo_utils import versionutils\n...\n\ntarget_version \u003d objects.Port().get_target_version()\ntarget_version \u003d versionutils.convert_version_to_tuple(target_version)\nreturn (pecan.request.version.minor \u003e\u003d versions.MINOR_34_PORT_PHYSICAL_NETWORK\n            and target_version \u003e\u003d (1, 7))","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f690fbd3e296914e1dad214ee8266d369b1e4927","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    # TODO(mgoddard): In order to support a rolling upgrade from the release"},{"line_number":578,"context_line":"    # that introduces the physical network field to the Port object, we will"},{"line_number":579,"context_line":"    # need to check the Port object version here as an additional condition for"},{"line_number":580,"context_line":"    # exposing this feature."},{"line_number":581,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":582,"context_line":"            versions.MINOR_34_PORT_PHYSICAL_NETWORK)"},{"line_number":583,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_dbded0d8","line":580,"in_reply_to":"1f1a1f67_3323b2bf","updated":"2017-07-18 13:05:38.000000000","message":"thx. I am fine if you make this change in this patch set, and address/think about how to address the other part (creating a port) in a separate patch.","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7169c82118a599ff886b1df262866f2b77f43227","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    # TODO(mgoddard): In order to support a rolling upgrade from the release"},{"line_number":578,"context_line":"    # that introduces the physical network field to the Port object, we will"},{"line_number":579,"context_line":"    # need to check the Port object version here as an additional condition for"},{"line_number":580,"context_line":"    # exposing this feature."},{"line_number":581,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":582,"context_line":"            versions.MINOR_34_PORT_PHYSICAL_NETWORK)"},{"line_number":583,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_3323b2bf","line":580,"in_reply_to":"1f1a1f67_677f3ee0","updated":"2017-07-18 10:38:08.000000000","message":"I\u0027m going to spend the rest of the day looking at rolling upgrades, it\u0027s overdue.\n\nIn the mean time, I generally agree with your comments here.","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"29875dafe600aca4e6459e9a508f52963f1bfd6d","unresolved":false,"context_lines":[{"line_number":577,"context_line":"    # TODO(mgoddard): In order to support a rolling upgrade from the release"},{"line_number":578,"context_line":"    # that introduces the physical network field to the Port object, we will"},{"line_number":579,"context_line":"    # need to check the Port object version here as an additional condition for"},{"line_number":580,"context_line":"    # exposing this feature."},{"line_number":581,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":582,"context_line":"            versions.MINOR_34_PORT_PHYSICAL_NETWORK)"},{"line_number":583,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_03a5da46","line":580,"in_reply_to":"1f1a1f67_dbded0d8","updated":"2017-07-19 11:38:41.000000000","message":"This part is now done. As suggested I\u0027ll address the other parts in a separate patch.","commit_id":"90272f149d2130ebb1fc1f5b3510e834c8f3c2ee"}],"ironic/objects/base.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"075bdd35c24565651461678aa2a962907e102996","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            self.VERSION \u003d target_version"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @classmethod"},{"line_number":158,"context_line":"    def get_target_version(cls):"},{"line_number":159,"context_line":"        \"\"\"Returns the target version for this object."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        This is the version in which the object should be manipulated, e.g."}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_8e7b4a8a","line":158,"updated":"2017-07-19 14:23:18.000000000","message":"Oh, I had submitted a separate patch for this: https://review.openstack.org/#/c/484890/\n\nI guess we could see which lands first, or I can remove 484890 for this. (There is so much going on in this patch that I\u0027d prefer it be a separate one, but on the other hand, I\u0027d like to land this patch sooner rather than later...)","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"55bfa6c6c1e6b4236c89caf4fbdac0733b934423","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            self.VERSION \u003d target_version"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @classmethod"},{"line_number":158,"context_line":"    def get_target_version(cls):"},{"line_number":159,"context_line":"        \"\"\"Returns the target version for this object."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        This is the version in which the object should be manipulated, e.g."}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_07203df6","line":158,"in_reply_to":"1f1a1f67_31101757","updated":"2017-07-19 15:36:22.000000000","message":"My personal opinion is to put docs in its own patch, and API ref in a separate patch set too. I believe separating them makes it easier to review and land the patches.\n\nDependencies that stand alone are better as separate patches. If I didn\u0027t want this merged sooner rather than later, I\u0027d say put this and supports_version() in a separate patch but we don\u0027t have the luxury of time to do it \u0027better\u0027, especially with our cranky jenkins so...\n\nI like them all in one patch, but if you ask me, I\u0027d say put the whole feature in one patch set, but that doesn\u0027t work well upstream :D","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3dc40f1144075755470cc40403314d35756706ca","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            self.VERSION \u003d target_version"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @classmethod"},{"line_number":158,"context_line":"    def get_target_version(cls):"},{"line_number":159,"context_line":"        \"\"\"Returns the target version for this object."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        This is the version in which the object should be manipulated, e.g."}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_31101757","line":158,"in_reply_to":"1f1a1f67_8e7b4a8a","updated":"2017-07-19 15:14:07.000000000","message":"That was my thinking - it would better better separate but I\u0027ve been bitten by adding dependencies before. This could easily be rebased if your patch merges soon.\n\nOut of interest, which parts of this patch would you normally separate? I guess the rolling upgrade support is fairly unrelated. What about docs and API ref?","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"}],"ironic/objects/port.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ae08c82ccbf589ea55ac6fadf4a14ecbbeb8087e","unresolved":false,"context_lines":[{"line_number":317,"context_line":"    # Version 1.2: Add \"physical_network\" field"},{"line_number":318,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    SCHEMA \u003d {"},{"line_number":321,"context_line":"        \u0027address\u0027: (\u0027port\u0027, \u0027address\u0027),"},{"line_number":322,"context_line":"        \u0027extra\u0027: (\u0027port\u0027, \u0027extra\u0027),"},{"line_number":323,"context_line":"        \u0027local_link_connection\u0027: (\u0027port\u0027, \u0027local_link_connection\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_23d8f078","line":320,"updated":"2017-06-16 11:35:23.000000000","message":"Schema should be updated also.","commit_id":"1be65af8b7d520778c61fcb47ac54c408da65201"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"2759a34d19a1ee3dcf3836c87ab5b1996d66bc30","unresolved":false,"context_lines":[{"line_number":317,"context_line":"    # Version 1.2: Add \"physical_network\" field"},{"line_number":318,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    SCHEMA \u003d {"},{"line_number":321,"context_line":"        \u0027address\u0027: (\u0027port\u0027, \u0027address\u0027),"},{"line_number":322,"context_line":"        \u0027extra\u0027: (\u0027port\u0027, \u0027extra\u0027),"},{"line_number":323,"context_line":"        \u0027local_link_connection\u0027: (\u0027port\u0027, \u0027local_link_connection\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_e3b798f4","line":320,"in_reply_to":"7f231b9d_233d908e","updated":"2017-06-16 11:46:46.000000000","message":"No. They are not auto-populated fields (not present in port obj).","commit_id":"1be65af8b7d520778c61fcb47ac54c408da65201"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"5dd9beac92d1bc2cf90932f7d96b0c4f05b73d1b","unresolved":false,"context_lines":[{"line_number":317,"context_line":"    # Version 1.2: Add \"physical_network\" field"},{"line_number":318,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    SCHEMA \u003d {"},{"line_number":321,"context_line":"        \u0027address\u0027: (\u0027port\u0027, \u0027address\u0027),"},{"line_number":322,"context_line":"        \u0027extra\u0027: (\u0027port\u0027, \u0027extra\u0027),"},{"line_number":323,"context_line":"        \u0027local_link_connection\u0027: (\u0027port\u0027, \u0027local_link_connection\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_233d908e","line":320,"in_reply_to":"7f231b9d_23d8f078","updated":"2017-06-16 11:39:29.000000000","message":"Thanks, will do.\n\nLooks like portgroup_uuid and node_uuid are also missing. Is that because they reference other objects?","commit_id":"1be65af8b7d520778c61fcb47ac54c408da65201"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"cfc343f4ad427eaffb4b2adca166a1358796841f","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        \u0027pxe_enabled\u0027: object_fields.BooleanField(nullable\u003dTrue),"},{"line_number":336,"context_line":"        \u0027node_uuid\u0027: object_fields.UUIDField(),"},{"line_number":337,"context_line":"        \u0027portgroup_uuid\u0027: object_fields.UUIDField(nullable\u003dTrue),"},{"line_number":338,"context_line":"        \u0027physical_network\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":339,"context_line":"        \u0027created_at\u0027: object_fields.DateTimeField(nullable\u003dTrue),"},{"line_number":340,"context_line":"        \u0027updated_at\u0027: object_fields.DateTimeField(nullable\u003dTrue),"},{"line_number":341,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_ad0a8ace","line":338,"updated":"2017-06-19 08:09:24.000000000","message":"Please also update sample in the documentation https://github.com/openstack/ironic/blob/master/doc/source/deploy/notifications.rst","commit_id":"1be65af8b7d520778c61fcb47ac54c408da65201"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"838e7f056c47e4ce4a52225ecf8fca11154e5094","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        \u0027pxe_enabled\u0027: object_fields.BooleanField(nullable\u003dTrue),"},{"line_number":336,"context_line":"        \u0027node_uuid\u0027: object_fields.UUIDField(),"},{"line_number":337,"context_line":"        \u0027portgroup_uuid\u0027: object_fields.UUIDField(nullable\u003dTrue),"},{"line_number":338,"context_line":"        \u0027physical_network\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":339,"context_line":"        \u0027created_at\u0027: object_fields.DateTimeField(nullable\u003dTrue),"},{"line_number":340,"context_line":"        \u0027updated_at\u0027: object_fields.DateTimeField(nullable\u003dTrue),"},{"line_number":341,"context_line":"        \u0027uuid\u0027: object_fields.UUIDField()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_8db6ae89","line":338,"in_reply_to":"7f231b9d_ad0a8ace","updated":"2017-06-19 09:25:30.000000000","message":"Done","commit_id":"1be65af8b7d520778c61fcb47ac54c408da65201"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"075bdd35c24565651461678aa2a962907e102996","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        \"\"\"Return whether the physical_network field is supported."},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        :returns: Whether the physical_network field is supported"},{"line_number":307,"context_line":"        :raises: ovo_exception.IncompatibleObjectVersion"},{"line_number":308,"context_line":"        \"\"\""},{"line_number":309,"context_line":"        return cls.supports_version((1, 7))"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_ce14a2eb","line":307,"updated":"2017-07-19 14:23:18.000000000","message":"Hmm. I guess we want this to be raised to the end user? It\u0027ll happen if there is a developer error (coding) or if the operator set the pinned_.. option incorrectly I guess.","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3dc40f1144075755470cc40403314d35756706ca","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        \"\"\"Return whether the physical_network field is supported."},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        :returns: Whether the physical_network field is supported"},{"line_number":307,"context_line":"        :raises: ovo_exception.IncompatibleObjectVersion"},{"line_number":308,"context_line":"        \"\"\""},{"line_number":309,"context_line":"        return cls.supports_version((1, 7))"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_ec8ac661","line":307,"in_reply_to":"1f1a1f67_ce14a2eb","updated":"2017-07-19 15:14:07.000000000","message":"Seems better than failing silently. Developer error we could only catch here but for the pin version shouldn\u0027t we raise an error, and perhaps even block startup when the service starts?","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"55bfa6c6c1e6b4236c89caf4fbdac0733b934423","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        \"\"\"Return whether the physical_network field is supported."},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        :returns: Whether the physical_network field is supported"},{"line_number":307,"context_line":"        :raises: ovo_exception.IncompatibleObjectVersion"},{"line_number":308,"context_line":"        \"\"\""},{"line_number":309,"context_line":"        return cls.supports_version((1, 7))"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_87cfad27","line":307,"in_reply_to":"1f1a1f67_ec8ac661","updated":"2017-07-19 15:36:22.000000000","message":"For operator error, I think we want to raise the error. Whether the error makes sense to them or not, I don\u0027t know, but I am fine waiting to see what happens if it happens. I\u0027m not quite sure now whether we could have an operator error, it\u0027s been awhile since I thought about it -- at the time, it was possible, and I don\u0027t recall \u0027fixing\u0027 it so that scenario wasn\u0027t possible...","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"}],"ironic/tests/unit/api/v1/test_ports.py":[{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"b03b6f48f162e07bb198e774f08fe3deb6fbcfe3","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        self.assertTrue(data[\u0027pxe_enabled\u0027])"},{"line_number":224,"context_line":"        self.assertEqual(llc, data[\u0027local_link_connection\u0027])"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def test_hide_fields_in_newer_versions_portgroup_uuid(self):"},{"line_number":227,"context_line":"        portgroup \u003d obj_utils.create_test_portgroup(self.context,"},{"line_number":228,"context_line":"                                                    node_id\u003dself.node.id)"},{"line_number":229,"context_line":"        port \u003d obj_utils.create_test_port(self.context, node_id\u003dself.node.id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_517ba826","line":226,"range":{"start_line":226,"start_character":8,"end_line":226,"end_character":57},"updated":"2017-06-16 23:04:07.000000000","message":"We are checking for old api version for portgroup_uuid at L572.","commit_id":"1be65af8b7d520778c61fcb47ac54c408da65201"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"838e7f056c47e4ce4a52225ecf8fca11154e5094","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        self.assertTrue(data[\u0027pxe_enabled\u0027])"},{"line_number":224,"context_line":"        self.assertEqual(llc, data[\u0027local_link_connection\u0027])"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def test_hide_fields_in_newer_versions_portgroup_uuid(self):"},{"line_number":227,"context_line":"        portgroup \u003d obj_utils.create_test_portgroup(self.context,"},{"line_number":228,"context_line":"                                                    node_id\u003dself.node.id)"},{"line_number":229,"context_line":"        port \u003d obj_utils.create_test_port(self.context, node_id\u003dself.node.id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_0d2dfea6","line":226,"range":{"start_line":226,"start_character":8,"end_line":226,"end_character":57},"in_reply_to":"7f231b9d_517ba826","updated":"2017-06-19 09:25:30.000000000","message":"There are a few variants of the old API version tests. This one tests that a GET /ports/\u003cport\u003e for an old API version doesn\u0027t see the portgroup_uuid.\n\nThe test on L572 is checking that a GET /ports/detail?portgroup_uuid\u003d\u003cportgroup\u003e fails.\n\nI think we\u0027re still a long way from covering all the permutations.","commit_id":"1be65af8b7d520778c61fcb47ac54c408da65201"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"b03b6f48f162e07bb198e774f08fe3deb6fbcfe3","unresolved":false,"context_lines":[{"line_number":1171,"context_line":"                                   headers\u003dheaders)"},{"line_number":1172,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":1173,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":1174,"context_line":"        self.assertTrue(response.json[\u0027error_message\u0027])"},{"line_number":1175,"context_line":""},{"line_number":1176,"context_line":"    def test_update_port_invalid_physnet_too_long(self, mock_upd):"},{"line_number":1177,"context_line":"        physnet \u003d \u0027p\u0027 * 65"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_11d410e8","line":1174,"range":{"start_line":1174,"start_character":8,"end_line":1174,"end_character":54},"updated":"2017-06-16 23:04:07.000000000","message":"We could check the error message, although not insisting on it.","commit_id":"1be65af8b7d520778c61fcb47ac54c408da65201"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"838e7f056c47e4ce4a52225ecf8fca11154e5094","unresolved":false,"context_lines":[{"line_number":1171,"context_line":"                                   headers\u003dheaders)"},{"line_number":1172,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":1173,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":1174,"context_line":"        self.assertTrue(response.json[\u0027error_message\u0027])"},{"line_number":1175,"context_line":""},{"line_number":1176,"context_line":"    def test_update_port_invalid_physnet_too_long(self, mock_upd):"},{"line_number":1177,"context_line":"        physnet \u003d \u0027p\u0027 * 65"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_08060c21","line":1174,"range":{"start_line":1174,"start_character":8,"end_line":1174,"end_character":54},"in_reply_to":"7f231b9d_11d410e8","updated":"2017-06-19 09:25:30.000000000","message":"Done","commit_id":"1be65af8b7d520778c61fcb47ac54c408da65201"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"        self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)"},{"line_number":1106,"context_line":"        self.assertFalse(mock_upd.called)"},{"line_number":1107,"context_line":""},{"line_number":1108,"context_line":"    def test_update_physical_network(self, mock_upd):"},{"line_number":1109,"context_line":"        physical_network \u003d \u0027physnet1\u0027"},{"line_number":1110,"context_line":"        mock_upd.return_value \u003d self.port"},{"line_number":1111,"context_line":"        mock_upd.return_value.physical_network \u003d physical_network"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_eaba2c6c","line":1108,"updated":"2017-07-11 20:49:57.000000000","message":"just a nit, s/update/add/ maybe cuz you can \u0027add\u0027, \u0027replace\u0027, and \u0027remove\u0027","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"        self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)"},{"line_number":1106,"context_line":"        self.assertFalse(mock_upd.called)"},{"line_number":1107,"context_line":""},{"line_number":1108,"context_line":"    def test_update_physical_network(self, mock_upd):"},{"line_number":1109,"context_line":"        physical_network \u003d \u0027physnet1\u0027"},{"line_number":1110,"context_line":"        mock_upd.return_value \u003d self.port"},{"line_number":1111,"context_line":"        mock_upd.return_value.physical_network \u003d physical_network"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_485bcb86","line":1108,"in_reply_to":"3f1d235d_eaba2c6c","updated":"2017-07-12 13:51:10.000000000","message":"I see your point about unnecessary namespacing, and I\u0027ll make three separate tests.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":1126,"context_line":"                                     \u0027op\u0027: \u0027replace\u0027}],"},{"line_number":1127,"context_line":"                                   headers\u003dheaders)"},{"line_number":1128,"context_line":"        self.assertEqual(http_client.OK, response.status_code)"},{"line_number":1129,"context_line":"        self.assertEqual(physical_network, response.json[\u0027physical_network\u0027])"},{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"        mock_upd.reset_mock()"},{"line_number":1132,"context_line":"        response \u003d self.patch_json(\u0027/ports/%s\u0027 % self.port.uuid,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_ca7650d9","line":1129,"updated":"2017-07-11 20:49:57.000000000","message":"you\u0027re updating by replacing with the same value. It would be worth asserting that mock_upd was called if you expected it to be called. Cuz I suspect in this case, since it is the same value, it won\u0027t be called.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":1126,"context_line":"                                     \u0027op\u0027: \u0027replace\u0027}],"},{"line_number":1127,"context_line":"                                   headers\u003dheaders)"},{"line_number":1128,"context_line":"        self.assertEqual(http_client.OK, response.status_code)"},{"line_number":1129,"context_line":"        self.assertEqual(physical_network, response.json[\u0027physical_network\u0027])"},{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"        mock_upd.reset_mock()"},{"line_number":1132,"context_line":"        response \u003d self.patch_json(\u0027/ports/%s\u0027 % self.port.uuid,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_6d67b927","line":1129,"in_reply_to":"3f1d235d_ca7650d9","updated":"2017-07-12 13:51:10.000000000","message":"You\u0027re right, this is a little silly. I\u0027ll improve.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":1134,"context_line":"                                     \u0027op\u0027: \u0027remove\u0027}],"},{"line_number":1135,"context_line":"                                   headers\u003dheaders)"},{"line_number":1136,"context_line":"        self.assertEqual(http_client.OK, response.status_code)"},{"line_number":1137,"context_line":"        self.assertEqual(physical_network, response.json[\u0027physical_network\u0027])"},{"line_number":1138,"context_line":""},{"line_number":1139,"context_line":"    def test_update_physical_network_old_api_version(self, mock_upd):"},{"line_number":1140,"context_line":"        mock_upd.return_value \u003d self.port"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_2a34a4fa","line":1137,"updated":"2017-07-11 20:49:57.000000000","message":"This part of the test doesn\u0027t make any sense. When you remove, doesn\u0027t it mean the value will be None or \u0027\u0027?","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"faa37009df28448993c464444ba91f0ea1b57a87","unresolved":false,"context_lines":[{"line_number":1134,"context_line":"                                     \u0027op\u0027: \u0027remove\u0027}],"},{"line_number":1135,"context_line":"                                   headers\u003dheaders)"},{"line_number":1136,"context_line":"        self.assertEqual(http_client.OK, response.status_code)"},{"line_number":1137,"context_line":"        self.assertEqual(physical_network, response.json[\u0027physical_network\u0027])"},{"line_number":1138,"context_line":""},{"line_number":1139,"context_line":"    def test_update_physical_network_old_api_version(self, mock_upd):"},{"line_number":1140,"context_line":"        mock_upd.return_value \u003d self.port"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_45f84cc3","line":1137,"in_reply_to":"1f1a1f67_ed5bc951","updated":"2017-07-12 15:11:22.000000000","message":"I\u0027ve submitted https://review.openstack.org/#/c/482982 which adds the side_effect business to properly exercise port updates. I\u0027ve made that patch depend on this one, so as not to block this.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":1134,"context_line":"                                     \u0027op\u0027: \u0027remove\u0027}],"},{"line_number":1135,"context_line":"                                   headers\u003dheaders)"},{"line_number":1136,"context_line":"        self.assertEqual(http_client.OK, response.status_code)"},{"line_number":1137,"context_line":"        self.assertEqual(physical_network, response.json[\u0027physical_network\u0027])"},{"line_number":1138,"context_line":""},{"line_number":1139,"context_line":"    def test_update_physical_network_old_api_version(self, mock_upd):"},{"line_number":1140,"context_line":"        mock_upd.return_value \u003d self.port"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_ed5bc951","line":1137,"in_reply_to":"3f1d235d_2a34a4fa","updated":"2017-07-12 13:51:10.000000000","message":"Even more silly, to the point of being incorrect.\n\nUpon investigation, it turned out that most of this test case (update ports) is quite silly also. Most tests set mock_upd.return_value \u003d self.port, and alter that port to the expected value. Really we want to save the Port passed from the API patch handler to the RPCAPI, and check that it saved the correct thing.\n\nI recently changed TestPost to do something similar, using side_effect\u003d_rpcapi_create_port. I\u0027ll bring that pattern to TestPatch in a separate change.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":1158,"context_line":"                                   headers\u003dheaders)"},{"line_number":1159,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":1160,"context_line":"        self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)"},{"line_number":1161,"context_line":"        self.assertFalse(mock_upd.called)"},{"line_number":1162,"context_line":""},{"line_number":1163,"context_line":"    def test_update_port_invalid_physnet_non_text(self, mock_upd):"},{"line_number":1164,"context_line":"        physnet \u003d 1234"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_aa08b42c","line":1161,"updated":"2017-07-11 20:49:57.000000000","message":"I suppose you could have a helper function do this, instead of copy/pasting twice. Then you could also test \u0027add\u0027. but whatever.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"21e9c59ff47d9ff1a70e2597764315d431153f0b","unresolved":false,"context_lines":[{"line_number":1158,"context_line":"                                   headers\u003dheaders)"},{"line_number":1159,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":1160,"context_line":"        self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)"},{"line_number":1161,"context_line":"        self.assertFalse(mock_upd.called)"},{"line_number":1162,"context_line":""},{"line_number":1163,"context_line":"    def test_update_port_invalid_physnet_non_text(self, mock_upd):"},{"line_number":1164,"context_line":"        physnet \u003d 1234"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_ca19777a","line":1161,"in_reply_to":"1f1a1f67_d57f6fa9","updated":"2017-07-17 19:43:29.000000000","message":"but what fun :)","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":1158,"context_line":"                                   headers\u003dheaders)"},{"line_number":1159,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":1160,"context_line":"        self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)"},{"line_number":1161,"context_line":"        self.assertFalse(mock_upd.called)"},{"line_number":1162,"context_line":""},{"line_number":1163,"context_line":"    def test_update_port_invalid_physnet_non_text(self, mock_upd):"},{"line_number":1164,"context_line":"        physnet \u003d 1234"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_d57f6fa9","line":1161,"in_reply_to":"3f1d235d_aa08b42c","updated":"2017-07-12 13:51:10.000000000","message":"I\u0027ve done some refactoring. The only problem is, once you start pulling on that thread...","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":1160,"context_line":"        self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)"},{"line_number":1161,"context_line":"        self.assertFalse(mock_upd.called)"},{"line_number":1162,"context_line":""},{"line_number":1163,"context_line":"    def test_update_port_invalid_physnet_non_text(self, mock_upd):"},{"line_number":1164,"context_line":"        physnet \u003d 1234"},{"line_number":1165,"context_line":"        headers \u003d {api_base.Version.string: versions.MAX_VERSION_STRING}"},{"line_number":1166,"context_line":"        response \u003d self.patch_json(\u0027/ports/%s\u0027 % self.port.uuid,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_bd123c57","line":1163,"updated":"2017-07-11 20:49:57.000000000","message":"I\u0027m not sure why you want \u0027port\u0027 in the name. Aren\u0027t all these tests testing a port?","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":1160,"context_line":"        self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)"},{"line_number":1161,"context_line":"        self.assertFalse(mock_upd.called)"},{"line_number":1162,"context_line":""},{"line_number":1163,"context_line":"    def test_update_port_invalid_physnet_non_text(self, mock_upd):"},{"line_number":1164,"context_line":"        physnet \u003d 1234"},{"line_number":1165,"context_line":"        headers \u003d {api_base.Version.string: versions.MAX_VERSION_STRING}"},{"line_number":1166,"context_line":"        response \u003d self.patch_json(\u0027/ports/%s\u0027 % self.port.uuid,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_68f4475c","line":1163,"in_reply_to":"3f1d235d_bd123c57","updated":"2017-07-12 13:51:10.000000000","message":"I\u0027ll rename.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":1735,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":1736,"context_line":"        self.assertIn(\u0027maximum character\u0027, response.json[\u0027error_message\u0027])"},{"line_number":1737,"context_line":"        self.assertFalse(mock_create.called)"},{"line_number":1738,"context_line":""},{"line_number":1739,"context_line":""},{"line_number":1740,"context_line":"@mock.patch.object(rpcapi.ConductorAPI, \u0027destroy_port\u0027)"},{"line_number":1741,"context_line":"class TestDelete(test_api_base.BaseApiTest):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_7d6384dd","line":1738,"updated":"2017-07-11 20:49:57.000000000","message":"I might have missed it, but do you have a test that creates a port with a valid physical_network value?","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":1735,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":1736,"context_line":"        self.assertIn(\u0027maximum character\u0027, response.json[\u0027error_message\u0027])"},{"line_number":1737,"context_line":"        self.assertFalse(mock_create.called)"},{"line_number":1738,"context_line":""},{"line_number":1739,"context_line":""},{"line_number":1740,"context_line":"@mock.patch.object(rpcapi.ConductorAPI, \u0027destroy_port\u0027)"},{"line_number":1741,"context_line":"class TestDelete(test_api_base.BaseApiTest):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_3027d115","line":1738,"in_reply_to":"3f1d235d_7d6384dd","updated":"2017-07-12 13:51:10.000000000","message":"Actually, no...","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"b9fd568fa17ce842dd73f0cf679d50f89d14cc15","unresolved":false,"context_lines":[{"line_number":668,"context_line":""},{"line_number":669,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":670,"context_line":"        self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_int)"},{"line_number":671,"context_line":"        self.assertFalse(mock_upd.called)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    @mock.patch.object(notification_utils, \u0027_emit_api_notification\u0027)"},{"line_number":674,"context_line":"    def test_update_byid(self, mock_notify, mock_upd):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_85b544f1","line":671,"updated":"2017-07-12 15:11:15.000000000","message":"These two could cut a lot of duplication from this test case but I\u0027ll leave that for another day/person.","commit_id":"32cb2df624fc91038bb006f16ec543e351bdd49c"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"b9fd568fa17ce842dd73f0cf679d50f89d14cc15","unresolved":false,"context_lines":[{"line_number":1146,"context_line":"        # port to the DB."},{"line_number":1147,"context_line":"        # self.port.refresh()"},{"line_number":1148,"context_line":"        # self.assertEqual(expected_physical_network,"},{"line_number":1149,"context_line":"        #                  self.port.physical_network)"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"    def test_add_physical_network(self, mock_upd):"},{"line_number":1152,"context_line":"        physical_network \u003d \u0027physnet1\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_c52d7c47","line":1149,"updated":"2017-07-12 15:11:15.000000000","message":"This is uncommented in https://review.openstack.org/#/c/482982.","commit_id":"32cb2df624fc91038bb006f16ec543e351bdd49c"}],"ironic/tests/unit/objects/test_port.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"075bdd35c24565651461678aa2a962907e102996","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    # TODO(mgoddard): Uncomment this when Pike branch is cut."},{"line_number":156,"context_line":"    # def test_supports_physical_network_pinned_9_0(self):"},{"line_number":157,"context_line":"    #     CONF.set_override(\u0027pin_release_version\u0027, \u00279.0\u0027)"},{"line_number":158,"context_line":"    #     self.assertTrue(objects.Port.supports_physical_network())"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def test_payload_schemas(self):"},{"line_number":161,"context_line":"        self._check_payload_schemas(objects.port, objects.Port.fields)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_6e9d8e08","line":158,"updated":"2017-07-19 14:23:18.000000000","message":"I\u0027m not sure about this test... this would set the precedent of all future features doing a similar thing; with a commented test that should be uncommented later... It is basically the same as the unpinned test though, right? Hmm. I think it would be better if you mock base.IronicObject.supports_version() for the above tests. And/or mock .get_target_version().","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3dc40f1144075755470cc40403314d35756706ca","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    # TODO(mgoddard): Uncomment this when Pike branch is cut."},{"line_number":156,"context_line":"    # def test_supports_physical_network_pinned_9_0(self):"},{"line_number":157,"context_line":"    #     CONF.set_override(\u0027pin_release_version\u0027, \u00279.0\u0027)"},{"line_number":158,"context_line":"    #     self.assertTrue(objects.Port.supports_physical_network())"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def test_payload_schemas(self):"},{"line_number":161,"context_line":"        self._check_payload_schemas(objects.port, objects.Port.fields)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_acccce34","line":158,"in_reply_to":"1f1a1f67_6e9d8e08","updated":"2017-07-19 15:14:07.000000000","message":"Fair point. I\u0027ll go with mocking supports_version.","commit_id":"16049d8df52934ff72f54865ef9e92bba71f5510"}],"releasenotes/notes/port-physical-network-a7009dc514353796.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"432fbaf47cdef96e3ebed8a87b656b068fa96ee1","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    1.32."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    This field specifies the name of the physical network to which the port is"},{"line_number":8,"context_line":"    connected, and defaults to unset.  This field may be set by the operator to"},{"line_number":9,"context_line":"    allow ironic to incorporate physical network information when attaching"},{"line_number":10,"context_line":"    virtual interfaces (VIFs)."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"df140735_3420cdf7","line":8,"updated":"2017-06-07 16:35:49.000000000","message":"Do you prefer \u0027unset\u0027 to None? Because really, the value defaults to None.","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3d0c7752a2d161531ee9795c78c72c7cd2df1e91","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    1.32."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    This field specifies the name of the physical network to which the port is"},{"line_number":8,"context_line":"    connected, and defaults to unset.  This field may be set by the operator to"},{"line_number":9,"context_line":"    allow ironic to incorporate physical network information when attaching"},{"line_number":10,"context_line":"    virtual interfaces (VIFs)."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7f231b9d_250be38e","line":8,"in_reply_to":"df140735_3420cdf7","updated":"2017-06-12 18:19:59.000000000","message":"Well in pythonland it\u0027s None, yes. But users see things from the perspective of the API and CLI. As a user I\u0027d never set the physical network to None, I either set it to null in JSON via the API or I use openstack unset --physical-network.","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"432fbaf47cdef96e3ebed8a87b656b068fa96ee1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    allow ironic to incorporate physical network information when attaching"},{"line_number":10,"context_line":"    virtual interfaces (VIFs)."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    The following Baremetal API endpoints are affected:"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    * ``GET /v1/ports``"},{"line_number":15,"context_line":"    * ``POST /v1/ports``"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"df140735_34e32da7","line":12,"updated":"2017-06-07 16:35:49.000000000","message":"I\u0027m not sure this list is useful. Would it just be simpler to say that the Bare Metal API endpoints related to ports, provide support for physical_network? Or something like that.","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3d0c7752a2d161531ee9795c78c72c7cd2df1e91","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    allow ironic to incorporate physical network information when attaching"},{"line_number":10,"context_line":"    virtual interfaces (VIFs)."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    The following Baremetal API endpoints are affected:"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    * ``GET /v1/ports``"},{"line_number":15,"context_line":"    * ``POST /v1/ports``"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7f231b9d_055c677c","line":12,"in_reply_to":"df140735_34e32da7","updated":"2017-06-12 18:19:59.000000000","message":"Fair point, I don\u0027t see anything similar in other renos.","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"432fbaf47cdef96e3ebed8a87b656b068fa96ee1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    * ``GET /v1/ports/detail``"},{"line_number":17,"context_line":"    * ``GET /v1/ports/{port_id}``"},{"line_number":18,"context_line":"    * ``PATCH /v1/ports/{port_id}``"},{"line_number":19,"context_line":"    * ``DELETE /v1/ports/{port_id}``"},{"line_number":20,"context_line":"    * ``GET /v1/nodes/{node_ident}/ports``"},{"line_number":21,"context_line":"    * ``GET /v1/nodes/{node_ident}/ports/detail``"},{"line_number":22,"context_line":"    * ``GET /v1/portgroups/{portgroup_ident}/ports``"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"df140735_14e02996","line":19,"updated":"2017-06-07 16:35:49.000000000","message":"?","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"432fbaf47cdef96e3ebed8a87b656b068fa96ee1","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    * ``GET /v1/nodes/{node_ident}/ports``"},{"line_number":21,"context_line":"    * ``GET /v1/nodes/{node_ident}/ports/detail``"},{"line_number":22,"context_line":"    * ``GET /v1/portgroups/{portgroup_ident}/ports``"},{"line_number":23,"context_line":"    * ``GET /v1/portgroups/{portgroup_ident}/ports/detail``"},{"line_number":24,"context_line":"upgrade:"},{"line_number":25,"context_line":"  - |"},{"line_number":26,"context_line":"    Adds a ``physical_network`` field to the port object in REST API version"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"df140735_b4b61d8a","line":23,"updated":"2017-06-07 16:35:49.000000000","message":"I think it would be useful to specify how the physical_network field is/will be used. Maybe a pointer/link to other documentation about it, eg the deploy/multitenancy page that you updated?","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3d0c7752a2d161531ee9795c78c72c7cd2df1e91","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    * ``GET /v1/nodes/{node_ident}/ports``"},{"line_number":21,"context_line":"    * ``GET /v1/nodes/{node_ident}/ports/detail``"},{"line_number":22,"context_line":"    * ``GET /v1/portgroups/{portgroup_ident}/ports``"},{"line_number":23,"context_line":"    * ``GET /v1/portgroups/{portgroup_ident}/ports/detail``"},{"line_number":24,"context_line":"upgrade:"},{"line_number":25,"context_line":"  - |"},{"line_number":26,"context_line":"    Adds a ``physical_network`` field to the port object in REST API version"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7f231b9d_25676350","line":23,"in_reply_to":"df140735_b4b61d8a","updated":"2017-06-12 18:19:59.000000000","message":"Done","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"432fbaf47cdef96e3ebed8a87b656b068fa96ee1","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    * ``GET /v1/nodes/{node_ident}/ports``"},{"line_number":43,"context_line":"    * ``GET /v1/nodes/{node_ident}/ports/detail``"},{"line_number":44,"context_line":"    * ``GET /v1/portgroups/{portgroup_ident}/ports``"},{"line_number":45,"context_line":"    * ``GET /v1/portgroups/{portgroup_ident}/ports/detail``"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"df140735_545b4153","line":45,"updated":"2017-06-07 16:35:49.000000000","message":"so why did you put this in the upgrade section? Nothing breaks, so the user/operator doesn\u0027t need to do anything when upgrading? Seems like it is just a new feature. (I\u0027m trying to remember what we typically put in upgrade).","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3d0c7752a2d161531ee9795c78c72c7cd2df1e91","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    * ``GET /v1/nodes/{node_ident}/ports``"},{"line_number":43,"context_line":"    * ``GET /v1/nodes/{node_ident}/ports/detail``"},{"line_number":44,"context_line":"    * ``GET /v1/portgroups/{portgroup_ident}/ports``"},{"line_number":45,"context_line":"    * ``GET /v1/portgroups/{portgroup_ident}/ports/detail``"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7f231b9d_659b1b72","line":45,"in_reply_to":"df140735_545b4153","updated":"2017-06-12 18:19:59.000000000","message":"I added it because an operator wishing to use physical networks needs to take some action to configure them on existing ports after the upgrade. If we don\u0027t normally include that kind of thing in upgrade notes I\u0027m happy to remove it.","commit_id":"f458a331200d67bd490cb6a3820736a804e95b75"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    1.34."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    This field specifies the name of the physical network to which the port is"},{"line_number":8,"context_line":"    connected, and defaults to unset.  This field may be set by the operator to"},{"line_number":9,"context_line":"    allow ironic to incorporate physical network information when attaching"},{"line_number":10,"context_line":"    virtual interfaces (VIFs)."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3f1d235d_0a41e80b","line":8,"updated":"2017-07-11 20:49:57.000000000","message":"you use the term \u0027unset\u0027 here, so maybe we should use the same term in documentation.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    1.34."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    This field specifies the name of the physical network to which the port is"},{"line_number":8,"context_line":"    connected, and defaults to unset.  This field may be set by the operator to"},{"line_number":9,"context_line":"    allow ironic to incorporate physical network information when attaching"},{"line_number":10,"context_line":"    virtual interfaces (VIFs)."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f1a1f67_703ae9e7","line":8,"in_reply_to":"3f1d235d_0a41e80b","updated":"2017-07-12 13:51:10.000000000","message":"How about \u0027and is empty by default\u0027?\n\nThat would be a little more in keeping with the \u0027has a\u0027 terminology.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    allow ironic to incorporate physical network information when attaching"},{"line_number":10,"context_line":"    virtual interfaces (VIFs)."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    The Baremetal API endpoints related to ports provide support for the"},{"line_number":13,"context_line":"    ``physical_network`` field.  The `ironic developer documentation"},{"line_number":14,"context_line":"    \u003chttps://docs.openstack.org/developer/ironic/deploy/multitenancy.html\u003e`_"},{"line_number":15,"context_line":"    provides information on how to configure and use physical networks."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3f1d235d_2a3144a3","line":12,"updated":"2017-07-11 20:49:57.000000000","message":"this is probably fine cuz i\u0027m too lazy to see what terminology we use. I thought it was something like s/Baremetal API/REST API/","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    allow ironic to incorporate physical network information when attaching"},{"line_number":10,"context_line":"    virtual interfaces (VIFs)."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    The Baremetal API endpoints related to ports provide support for the"},{"line_number":13,"context_line":"    ``physical_network`` field.  The `ironic developer documentation"},{"line_number":14,"context_line":"    \u003chttps://docs.openstack.org/developer/ironic/deploy/multitenancy.html\u003e`_"},{"line_number":15,"context_line":"    provides information on how to configure and use physical networks."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f1a1f67_b019a189","line":12,"in_reply_to":"3f1d235d_2a3144a3","updated":"2017-07-12 13:51:10.000000000","message":"I\u0027ll change it, I\u0027ve used REST API above.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    The Baremetal API endpoints related to ports provide support for the"},{"line_number":13,"context_line":"    ``physical_network`` field.  The `ironic developer documentation"},{"line_number":14,"context_line":"    \u003chttps://docs.openstack.org/developer/ironic/deploy/multitenancy.html\u003e`_"},{"line_number":15,"context_line":"    provides information on how to configure and use physical networks."},{"line_number":16,"context_line":"upgrade:"},{"line_number":17,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3f1d235d_8a1bb819","line":14,"updated":"2017-07-11 20:49:57.000000000","message":"this link is incorrect now, due to the doc migration.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    The Baremetal API endpoints related to ports provide support for the"},{"line_number":13,"context_line":"    ``physical_network`` field.  The `ironic developer documentation"},{"line_number":14,"context_line":"    \u003chttps://docs.openstack.org/developer/ironic/deploy/multitenancy.html\u003e`_"},{"line_number":15,"context_line":"    provides information on how to configure and use physical networks."},{"line_number":16,"context_line":"upgrade:"},{"line_number":17,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f1a1f67_eb1bac70","line":14,"in_reply_to":"3f1d235d_8a1bb819","updated":"2017-07-12 13:51:10.000000000","message":"I\u0027ll update.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    provides information on how to configure and use physical networks."},{"line_number":16,"context_line":"upgrade:"},{"line_number":17,"context_line":"  - |"},{"line_number":18,"context_line":"    Adds a ``physical_network`` field to the port object in REST API version"},{"line_number":19,"context_line":"    1.34."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    This field specifies the name of the physical network to which the port is"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3f1d235d_6aebbcdb","line":18,"updated":"2017-07-11 20:49:57.000000000","message":"I am wondering if in the upgrade part, we ought to mention what happens when upgrading. if this isn\u0027t specified/set, then what?","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    provides information on how to configure and use physical networks."},{"line_number":16,"context_line":"upgrade:"},{"line_number":17,"context_line":"  - |"},{"line_number":18,"context_line":"    Adds a ``physical_network`` field to the port object in REST API version"},{"line_number":19,"context_line":"    1.34."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    This field specifies the name of the physical network to which the port is"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f1a1f67_4baf4094","line":18,"in_reply_to":"3f1d235d_6aebbcdb","updated":"2017-07-12 13:51:10.000000000","message":"I\u0027ve added some words, see what you think.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"109659a16d10f42ec7a9e508e52cd45b7f2fefa7","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    The Baremetal API endpoints related to ports provide support for the"},{"line_number":27,"context_line":"    ``physical_network`` field.  The `ironic developer documentation"},{"line_number":28,"context_line":"    \u003chttps://docs.openstack.org/developer/ironic/deploy/multitenancy.html\u003e`_"},{"line_number":29,"context_line":"    provides information on how to configure and use physical networks."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3f1d235d_0add6841","line":29,"updated":"2017-07-11 20:49:57.000000000","message":"ditto for whatever is applicable here.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3cb24426f155081b346a89970453db4c51cd1119","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    The Baremetal API endpoints related to ports provide support for the"},{"line_number":27,"context_line":"    ``physical_network`` field.  The `ironic developer documentation"},{"line_number":28,"context_line":"    \u003chttps://docs.openstack.org/developer/ironic/deploy/multitenancy.html\u003e`_"},{"line_number":29,"context_line":"    provides information on how to configure and use physical networks."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f1a1f67_0b914853","line":29,"in_reply_to":"3f1d235d_0add6841","updated":"2017-07-12 13:51:10.000000000","message":"ditto.","commit_id":"93eb6ce8f7ecc240a8bb7c54302e24305ac6dcf5"}]}
