)]}'
{"specs/approved/VLAN-aware-baremetal-instances.rst":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"668bb76744ce1759b697290872cc9a41631c97e5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Ironic Neutron integration enabled baremetal instances to connect to multiple"},{"line_number":14,"context_line":"neutron networks, instead of being limited to one flat network, with the caveat"},{"line_number":15,"context_line":"that the maximum number of tenant networks you could connect to was defined by"},{"line_number":16,"context_line":"the number of physical network interfaces the baremetal server had. This RFE"},{"line_number":17,"context_line":"attempts to unbind the number of tenant networks from the physical"},{"line_number":18,"context_line":"infrastructure by making the instances VLAN aware, so multiple tenant networks"},{"line_number":19,"context_line":"can be carried by the same physical interface."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_725ee813","line":16,"updated":"2016-02-10 18:24:30.000000000","message":"Reading the spec (https://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/ironic-ml2-integration.html), this is not the case. Only a single network may be attached, but it may used multiple bonded NICs. This bug (https://bugs.launchpad.net/nova/+bug/1405131) covers multiple networks. The strawman solution has been under review for some time but has not gathered much feedback.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"96f4b31a34a2578f81cadb35274ab9b3b2d32816","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Ironic Neutron integration enabled baremetal instances to connect to multiple"},{"line_number":14,"context_line":"neutron networks, instead of being limited to one flat network, with the caveat"},{"line_number":15,"context_line":"that the maximum number of tenant networks you could connect to was defined by"},{"line_number":16,"context_line":"the number of physical network interfaces the baremetal server had. This RFE"},{"line_number":17,"context_line":"attempts to unbind the number of tenant networks from the physical"},{"line_number":18,"context_line":"infrastructure by making the instances VLAN aware, so multiple tenant networks"},{"line_number":19,"context_line":"can be carried by the same physical interface."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_a21ce477","line":16,"in_reply_to":"3a57f1b5_725ee813","updated":"2016-02-11 12:50:41.000000000","message":"Looking at the code written for the ironic ml2 integration, I believe it doesn\u0027t have the limitation of just a single network. The nova code enforces that the number of neutron ports \u003d\u003d the number of Ironic ports.\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/virt/ironic/driver.py#n1015\nand the configure_tenant_networks function in this network provider implementation https://review.openstack.org/#/c/139687/65/ironic/networks/neutron_plugin.py will happily bind all the of ports configured.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7b26c01dd7506d7f19225c76cd23788cd013c810","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Ironic Neutron integration enabled baremetal instances to connect to multiple"},{"line_number":14,"context_line":"neutron networks, instead of being limited to one flat network, with the caveat"},{"line_number":15,"context_line":"that the maximum number of tenant networks you could connect to was defined by"},{"line_number":16,"context_line":"the number of physical network interfaces the baremetal server had. This RFE"},{"line_number":17,"context_line":"attempts to unbind the number of tenant networks from the physical"},{"line_number":18,"context_line":"infrastructure by making the instances VLAN aware, so multiple tenant networks"},{"line_number":19,"context_line":"can be carried by the same physical interface."}],"source_content_type":"text/x-rst","patch_set":2,"id":"dae33548_dafe976a","line":16,"in_reply_to":"3a57f1b5_a21ce477","updated":"2016-02-15 18:47:24.000000000","message":"Ok fair enough, but without the network mapping feature in place it won\u0027t work. Thanks for the links to that spec.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"bb4c902fff403ee57f3fbe5cf2f931178090d856","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Problem description"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Having the number of tenant networks that an instance can connect to bound to"},{"line_number":25,"context_line":"the physical infrastructure presents potential problems for cloud operators and"},{"line_number":26,"context_line":"cloud users. Cloud Operators have to provide infrastructure that can support"},{"line_number":27,"context_line":"the number of neutron networks their users require for particular"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aed3d3a_5bd2365d","line":24,"range":{"start_line":24,"start_character":66,"end_line":24,"end_character":74},"updated":"2016-02-29 08:29:26.000000000","message":"remove bound to","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"0f6535eed2e755e56a97a793e5963cf05e9de236","unresolved":false,"context_lines":[{"line_number":26,"context_line":"cloud users. Cloud Operators have to provide infrastructure that can support"},{"line_number":27,"context_line":"the number of neutron networks their users require for particular"},{"line_number":28,"context_line":"applications, this can range from 1 to 50+ depending on the application being"},{"line_number":29,"context_line":"deployed, for example NFV, this is expensive and time consuming to configure,"},{"line_number":30,"context_line":"and only complicates the cloud experience. From a cloud user’s perspective"},{"line_number":31,"context_line":"because the number of tenant networks is tied to the physical infrastructure,"},{"line_number":32,"context_line":"moving an application between OpenStack cloud providers is unlikely to"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_b0006f35","line":29,"updated":"2016-04-20 20:31:47.000000000","message":"I would go into more detail about the NFV example or remove it.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"bb4c902fff403ee57f3fbe5cf2f931178090d856","unresolved":false,"context_lines":[{"line_number":28,"context_line":"applications, this can range from 1 to 50+ depending on the application being"},{"line_number":29,"context_line":"deployed, for example NFV, this is expensive and time consuming to configure,"},{"line_number":30,"context_line":"and only complicates the cloud experience. From a cloud user’s perspective"},{"line_number":31,"context_line":"because the number of tenant networks is tied to the physical infrastructure,"},{"line_number":32,"context_line":"moving an application between OpenStack cloud providers is unlikely to"},{"line_number":33,"context_line":"provide the same BM experience, as some providers may be configured to provide"},{"line_number":34,"context_line":"more or less connectivity for their baremetal servers."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aed3d3a_5b6076a5","line":31,"updated":"2016-02-29 08:29:26.000000000","message":"very confusing and long sentence :-)\n\nYou may want to say - in order run network services on bare metal servers (e.g. FW, VPN, LB, containers), the servers need to connect to multiple tenant networks","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"6b48dc8c169adc701d1f3fc8ff23f80860668ea7","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Proposed change"},{"line_number":37,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"The proposed change is to allow multiple neutron vifs to be assigned to each"},{"line_number":40,"context_line":"Ironic port or portgroup, by changing the vif_port_id field, to vif_port_ids,"},{"line_number":41,"context_line":"making it a list. We will also unbind the neutron ports created from the"},{"line_number":42,"context_line":"physical mac addresses stored on the Ironic ports, allowing neutron to define"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_d553aa69","line":39,"range":{"start_line":39,"start_character":49,"end_line":39,"end_character":53},"updated":"2016-04-19 15:45:52.000000000","message":"ports?","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"87b25ac5f6dc15637061d7f23be72324e2d1ffda","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"The proposed change is to allow multiple neutron vifs to be assigned to each"},{"line_number":40,"context_line":"Ironic port or portgroup, by changing the vif_port_id field, to vif_port_ids,"},{"line_number":41,"context_line":"making it a list. We will also unbind the neutron ports created from the"},{"line_number":42,"context_line":"physical mac addresses stored on the Ironic ports, allowing neutron to define"},{"line_number":43,"context_line":"the mac addresses for the neutron network connectivity."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7af24918_c8420e3e","line":41,"range":{"start_line":41,"start_character":12,"end_line":41,"end_character":16},"updated":"2016-03-02 20:00:30.000000000","message":"it is probably ok to cache the neutron VIF ID in the ironic port object when there is one-to-one mapping between them. When the mapping is one or multiple neutron ports to one ironic port, then an easy way to keep track of the relationship is to use the neutron port\u0027s binding profile in which the ironic port-id can be saved.\n\nGiven that the ironic neutron plugin (currently in review) retrieves neutron ports from the neutron server, caching the vif ids may not be necessary any more because:\n  -- neutron ports can simply use the MACs from their corresponding ironic ports.\n   -- once the mac assignment is properly done, the mac can be used to find the mapping.\n\nCaching may be necessary if neutron ports are using different macs from their corresponding ironic ports. But are we sure that we have such a use case? Even If we do, the ironic port id can be kept in the corresponding neutron port\u0027s binding profile, which is more appropriate.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"668bb76744ce1759b697290872cc9a41631c97e5","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Ironic port or portgroup, by changing the vif_port_id field, to vif_port_ids,"},{"line_number":41,"context_line":"making it a list. We will also unbind the neutron ports created from the"},{"line_number":42,"context_line":"physical mac addresses stored on the Ironic ports, allowing neutron to define"},{"line_number":43,"context_line":"the mac addresses for the neutron network connectivity."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"With the list of neutron ports attached to each port or portgroup in Ironic,"},{"line_number":46,"context_line":"will we then ensure that when a node is deployed, neutron port update is called"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_92de046c","line":43,"updated":"2016-02-10 18:24:30.000000000","message":"This would be undesirable for ports in access mode. It\u0027s also possible for VLAN interfaces to use the same MAC as the underlying NIC.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a408ec209efde93ce22b78f7977d4dfa28f151f9","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Ironic port or portgroup, by changing the vif_port_id field, to vif_port_ids,"},{"line_number":41,"context_line":"making it a list. We will also unbind the neutron ports created from the"},{"line_number":42,"context_line":"physical mac addresses stored on the Ironic ports, allowing neutron to define"},{"line_number":43,"context_line":"the mac addresses for the neutron network connectivity."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"With the list of neutron ports attached to each port or portgroup in Ironic,"},{"line_number":46,"context_line":"will we then ensure that when a node is deployed, neutron port update is called"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_b31669ef","line":43,"in_reply_to":"3a57f1b5_02c6189a","updated":"2016-02-11 16:03:48.000000000","message":"This spec covers more advanced network mapping logic:\nhttps://review.openstack.org/#/c/279148/1/specs/not-implemented/neutron-ironic-port-mapping.rst","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"96f4b31a34a2578f81cadb35274ab9b3b2d32816","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Ironic port or portgroup, by changing the vif_port_id field, to vif_port_ids,"},{"line_number":41,"context_line":"making it a list. We will also unbind the neutron ports created from the"},{"line_number":42,"context_line":"physical mac addresses stored on the Ironic ports, allowing neutron to define"},{"line_number":43,"context_line":"the mac addresses for the neutron network connectivity."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"With the list of neutron ports attached to each port or portgroup in Ironic,"},{"line_number":46,"context_line":"will we then ensure that when a node is deployed, neutron port update is called"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_02c6189a","line":43,"in_reply_to":"3a57f1b5_92de046c","updated":"2016-02-11 12:50:41.000000000","message":"As mentioned below this spec assumes the we\u0027re now always running in Trunk mode and for neutron VLAN networks, this is something that perhaps we need to make conditional based on the type of networks the ports are connecting to.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7b26c01dd7506d7f19225c76cd23788cd013c810","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Ironic port or portgroup, by changing the vif_port_id field, to vif_port_ids,"},{"line_number":41,"context_line":"making it a list. We will also unbind the neutron ports created from the"},{"line_number":42,"context_line":"physical mac addresses stored on the Ironic ports, allowing neutron to define"},{"line_number":43,"context_line":"the mac addresses for the neutron network connectivity."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"With the list of neutron ports attached to each port or portgroup in Ironic,"},{"line_number":46,"context_line":"will we then ensure that when a node is deployed, neutron port update is called"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dae33548_fa86fbb7","line":43,"in_reply_to":"3a57f1b5_b31669ef","updated":"2016-02-15 18:47:24.000000000","message":"Making this conditional would be good. Trunk mode adds a lot of power, but also more complexity to the tenant image, so may not always be desirable.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"bb4c902fff403ee57f3fbe5cf2f931178090d856","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Ironic port or portgroup, by changing the vif_port_id field, to vif_port_ids,"},{"line_number":41,"context_line":"making it a list. We will also unbind the neutron ports created from the"},{"line_number":42,"context_line":"physical mac addresses stored on the Ironic ports, allowing neutron to define"},{"line_number":43,"context_line":"the mac addresses for the neutron network connectivity."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"With the list of neutron ports attached to each port or portgroup in Ironic,"},{"line_number":46,"context_line":"will we then ensure that when a node is deployed, neutron port update is called"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aed3d3a_5ba356b2","line":43,"in_reply_to":"dae33548_fa86fbb7","updated":"2016-02-29 08:29:26.000000000","message":"@Sam: We need native VLAN (access port) to boot the BM, and then tagged VLANs for the sub-ports to connect to multiple tenant networks","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"bb4c902fff403ee57f3fbe5cf2f931178090d856","unresolved":false,"context_lines":[{"line_number":42,"context_line":"physical mac addresses stored on the Ironic ports, allowing neutron to define"},{"line_number":43,"context_line":"the mac addresses for the neutron network connectivity."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"With the list of neutron ports attached to each port or portgroup in Ironic,"},{"line_number":46,"context_line":"will we then ensure that when a node is deployed, neutron port update is called"},{"line_number":47,"context_line":"for each neutron port with the correct local link information, this means"},{"line_number":48,"context_line":"that it is possible multiple port update calls have the same local link"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aed3d3a_fba86a79","line":45,"updated":"2016-02-29 08:29:26.000000000","message":"For each of neutron port, a create_port() need to be executed - the initial port_create() is executed by nova upon \"nova boot\", but, for the additional ports, it needs to be executed either by nova or ironic - we need to figure out how do we want to deal with this","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"0f6535eed2e755e56a97a793e5963cf05e9de236","unresolved":false,"context_lines":[{"line_number":42,"context_line":"physical mac addresses stored on the Ironic ports, allowing neutron to define"},{"line_number":43,"context_line":"the mac addresses for the neutron network connectivity."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"With the list of neutron ports attached to each port or portgroup in Ironic,"},{"line_number":46,"context_line":"will we then ensure that when a node is deployed, neutron port update is called"},{"line_number":47,"context_line":"for each neutron port with the correct local link information, this means"},{"line_number":48,"context_line":"that it is possible multiple port update calls have the same local link"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_b0750fcc","line":45,"in_reply_to":"9aed3d3a_fba86a79","updated":"2016-04-20 20:31:47.000000000","message":"When will this call happen? When creating or updating the ports in ironic? If it happens then, will we have to do this for each port on each update, or limit it to the port being created/updated?","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"bb4c902fff403ee57f3fbe5cf2f931178090d856","unresolved":false,"context_lines":[{"line_number":52,"context_line":"The instance side configuration will be created on top of the physical"},{"line_number":53,"context_line":"interfaces, for neutron ports mapped to a normal Ironic port we will create a"},{"line_number":54,"context_line":"vlan interface for each neutron port on top of the physical interface,"},{"line_number":55,"context_line":"configured with the correct vlan and mac address to match the neutron port. For"},{"line_number":56,"context_line":"neutron ports mapped to an Ironic portgroup, we will first bond the physical"},{"line_number":57,"context_line":"interfaces together, creating a bond interface, then create the vlan interfaces"},{"line_number":58,"context_line":"on top of the bond interface, in the same way as we do for a normal Ironic"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aed3d3a_1bc38e39","line":55,"range":{"start_line":55,"start_character":70,"end_line":55,"end_character":74},"updated":"2016-02-29 08:29:26.000000000","message":"You mean neutron network - VLAN is associated with neutron network, not the port","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"668bb76744ce1759b697290872cc9a41631c97e5","unresolved":false,"context_lines":[{"line_number":56,"context_line":"neutron ports mapped to an Ironic portgroup, we will first bond the physical"},{"line_number":57,"context_line":"interfaces together, creating a bond interface, then create the vlan interfaces"},{"line_number":58,"context_line":"on top of the bond interface, in the same way as we do for a normal Ironic"},{"line_number":59,"context_line":"port. The instance will receive this configuration via the config drive."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_72682888","line":59,"updated":"2016-02-10 18:24:30.000000000","message":"Does this mean that dynamic plugging is still out of scope for Ironic?","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7b26c01dd7506d7f19225c76cd23788cd013c810","unresolved":false,"context_lines":[{"line_number":56,"context_line":"neutron ports mapped to an Ironic portgroup, we will first bond the physical"},{"line_number":57,"context_line":"interfaces together, creating a bond interface, then create the vlan interfaces"},{"line_number":58,"context_line":"on top of the bond interface, in the same way as we do for a normal Ironic"},{"line_number":59,"context_line":"port. The instance will receive this configuration via the config drive."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dae33548_9a79afff","line":59,"in_reply_to":"3a57f1b5_0297f848","updated":"2016-02-15 18:47:24.000000000","message":"Ok, was just wondering. Seemed like a long shot :) Thanks for the tip on cloud-init v2.0.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"96f4b31a34a2578f81cadb35274ab9b3b2d32816","unresolved":false,"context_lines":[{"line_number":56,"context_line":"neutron ports mapped to an Ironic portgroup, we will first bond the physical"},{"line_number":57,"context_line":"interfaces together, creating a bond interface, then create the vlan interfaces"},{"line_number":58,"context_line":"on top of the bond interface, in the same way as we do for a normal Ironic"},{"line_number":59,"context_line":"port. The instance will receive this configuration via the config drive."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_0297f848","line":59,"in_reply_to":"3a57f1b5_72682888","updated":"2016-02-11 12:50:41.000000000","message":"Dynamic plugging? As in creating and removing ports on the fly? If that what you mean then this spec doesn\u0027t cover that, because it would involve running an agent inside the tenant image that can be communicated to by Ironic in order to perform the correct operations. This spec works within the existing limitations of cloud-init and Ironic to unlock the number of tenant networks without significant changes in operation. Perhaps something to look into with cloud-init 2.0, as that runs as a daemon for this sort of task.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3a4a45db300abe2cf7ca6dd308af7a18acb5f9a2","unresolved":false,"context_lines":[{"line_number":67,"context_line":"  get shut down at the switch, to prevent any traffic."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- Hardware specific solutions using out of band configuration of server"},{"line_number":70,"context_line":"  capabilities to increase network connectity options."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Data model impact"},{"line_number":73,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_9c834056","line":70,"updated":"2016-04-19 00:31:00.000000000","message":"I see you reference [1], but I don\u0027t see you how you comment on it anywhere in this spec. I was wondering if you had considered leaving the Ironic model untouched and leverage the model proposed by [1] where vif_port_id will continue to point to a Neutron port (trunk\u0027s parent). From there you can determine the list of vlans to carry out, one for each subport.\n\n[1] http://specs.openstack.org/openstack/neutron-specs/specs/mitaka/vlan-aware-vms.html","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"53228eca652e50e4bfd494117e2202d0f2adc1e1","unresolved":false,"context_lines":[{"line_number":67,"context_line":"  get shut down at the switch, to prevent any traffic."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- Hardware specific solutions using out of band configuration of server"},{"line_number":70,"context_line":"  capabilities to increase network connectity options."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Data model impact"},{"line_number":73,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_9a68b789","line":70,"in_reply_to":"1a122d0e_63df17d6","updated":"2016-04-21 18:44:24.000000000","message":"Ok, I look forward to more discussions, because I am unclear why you say the boot experience changes. Also, I am confused by some of your comments on how Ironic creates \u0027trunk ports\u0027. Neutron\u0027s ability to model a trunk over multiple Neutron logical networks is such that the following workflow be possible:\n\n neutron net-create Na; neutron create-port Na # get Pa\n neutron net-create Nb; neutron create-port Nb # get Pb\n neutron net-create Nc; neutron create-port Nc # get Pc\n\n neutron trunk-create --parent Pa --sub-port Pb --sub-port Pc\n\n nova boot --flavor X --image Y --nic port-id\u003dPa\n\nSo I don\u0027t see how/when Ironic is involved in Neutron\u0027s port creation. Bear in mind that booting specifying a network is not something we have considered, knowing that other classes of boot examples that require the specification of port id (e.g. sriov).","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"3689420cd738042bd7d9e3ae7318c5424a623305","unresolved":false,"context_lines":[{"line_number":67,"context_line":"  get shut down at the switch, to prevent any traffic."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- Hardware specific solutions using out of band configuration of server"},{"line_number":70,"context_line":"  capabilities to increase network connectity options."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Data model impact"},{"line_number":73,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_63df17d6","line":70,"in_reply_to":"1a122d0e_950f7287","updated":"2016-04-21 10:36:08.000000000","message":"I\u0027ve referenced to it here because it was a similar concept, and I wanted to make people aware of it, at the time of writing it I hadn\u0027t worked out how to make it work for BM, I think I\u0027ve worked out a way now, however if we adopt the model directly there are still several problems:\n\n- BM connects directly to a switch, so there is no possibility for a translation service between the vlan output of a node and the real neutron segmentation ID as described in the spec.\n\n- Users doing a nova boot would still get a different experience between\nBM and VM:\n2 physical ports means that nova boot would still have to throw an error if the user requested more than 2 --nic net-ids, and would be forced to manually set up a neutron trunk port, if they required any more connectivity which they wouldn\u0027t have to do for a VM. \n\nBM to BM:\nThe problem here is that every BM could be different, e.g. some might have 1 nic some might have 2, some might have 5. and depending on which the scheduler lands the instance onto could force the users nova boot to pass or fail.\n\nThe concept I\u0027ve proposed in one of our recent neutron-ironic meetings that I hope to discuss in Austin so I can rework this whole spec, is a model based on this spec which uses the VLAN aware VMs neutron APIs/Models:\n\nAs a user I can request as many ports as I want, and nova will still create N neutron ports for me, and then Ironic handles the neutron port to physical port mapping, dynamically creating trunk ports in neutron when required, and not creating them if not required. This means that the nova boot experience will be consistent no matter which BM node the scheduler lands the instance on. (If the user nova boots with more than one trunk port then we may still have to apply limits based on the available physical nics, unless we allow merging of trunk ports or something similar) \n\nThis solves the nova boot consistency issue however it doesn\u0027t solve the compatibility problems with the current proposed API, e.g. that we are unable to support having a different segmentation_id and type to the neutron port the subport represents.\n\nI believe this problem isn\u0027t unique to baremetal, and will present itself for some network implementations that don\u0027t use a virtual switch for VMs and provide direct switch to VM connectivity such as SRIOV. It may be that we just have to either ignore those parameters on the subport (although that maybe lead to unexpected results from the users perspective) or force them to match the actual neutron ports segmentation id/type, if that type is SRIOV or Baremetal etc. and disallow a user from modifying them via the API for those types.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"7f0e35b6a7d3ec199113b30451081733e79b4129","unresolved":false,"context_lines":[{"line_number":67,"context_line":"  get shut down at the switch, to prevent any traffic."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- Hardware specific solutions using out of band configuration of server"},{"line_number":70,"context_line":"  capabilities to increase network connectity options."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Data model impact"},{"line_number":73,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_ea2bc692","line":70,"in_reply_to":"1a122d0e_9a68b789","updated":"2016-04-22 09:35:54.000000000","message":"If I have 2 BM servers with the same compute attributes e.g. CPU, RAM and DISK, so they match the same flavour, however one has 1 physical nic and one has 2 physical nics,\n\nIf I do: \n\nneutron net-create Na; neutron create-port Na # get Pa\nneutron net-create Nb; neutron create-port Nb # get Pb\n\nnova boot --nic port-id\u003dPa --nic port-id\u003dPb\n\nor\n\nnova boot --nic net-id\u003dNa --nic net-id\u003dNb\n\nCurrently its completely dependant on which server the nova scheduler lands the instance on whether or not the nova boot will succeed. If it was placed on to the server with only 1 nic then a user would receive the error: \"Ironic node: \u003cuuid\u003e virtual to physical interface count missmatch\". This sort of inconsistency doesn\u0027t happen with VMs because it can dynamically create the ports for the VM on the fly.\n\nWhat I am suggesting is that at the point that would happen in the current implementation, we instead notice that a user has requested more virtual ports than they have physical ports available, and then create 1 or more neutron trunk ports for them to provide the requested connectivity over the available physical nics, so that it doesn\u0027t fail, and their requested connectivity is provided.\n\nThis still leaves the problem of what if a tenant does:\n\nneutron net-create Na; neutron create-port Na # get Pa\nneutron net-create Nb; neutron create-port Nb # get Pb\nneutron net-create Nc; neutron create-port Nc # get Pc\nneutron net-create Nd; neutron create-port Nc # get Pd\n\nneutron trunk-create --parent Pa --sub-port Pb\nneutron trunk-create --parent Pc --sub-port Pd\n\nnova boot --nic port-id\u003dPa --nic port-id\u003dPc\n\nat this point the requested ports are already trunk ports, unless we could merge them into a single trunk port in some way, then if the schedular lands it on the server with only 1 nic then we\u0027d still have to fail with a mismatch.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"6b48dc8c169adc701d1f3fc8ff23f80860668ea7","unresolved":false,"context_lines":[{"line_number":67,"context_line":"  get shut down at the switch, to prevent any traffic."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"- Hardware specific solutions using out of band configuration of server"},{"line_number":70,"context_line":"  capabilities to increase network connectity options."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Data model impact"},{"line_number":73,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_950f7287","line":70,"in_reply_to":"1a122d0e_9c834056","updated":"2016-04-19 15:45:52.000000000","message":"+1 !!\nIf you adopt the same model you can use the same api calls and I am sure the code changes required will be less. The users will also benefit from having a consistency across neutron and the ironic integration.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3a4a45db300abe2cf7ca6dd308af7a18acb5f9a2","unresolved":false,"context_lines":[{"line_number":72,"context_line":"Data model impact"},{"line_number":73,"context_line":"-----------------"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"None"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"State Machine Impact"},{"line_number":78,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_bc80bc47","line":75,"updated":"2016-04-19 00:31:00.000000000","message":"How can it be none? What am I missing?","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"3689420cd738042bd7d9e3ae7318c5424a623305","unresolved":false,"context_lines":[{"line_number":72,"context_line":"Data model impact"},{"line_number":73,"context_line":"-----------------"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"None"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"State Machine Impact"},{"line_number":78,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_6d5c2619","line":75,"in_reply_to":"1a122d0e_2b051210","updated":"2016-04-21 10:36:08.000000000","message":"It won\u0027t change any of the Ironic DB models to make this work (I assumed thats what this section was referring to), vif_port_id and vif_port_ids are both stored in a metadata field in the Ironic port model, port.extra, which stores a json document, and there is nothing which determines what is/isn\u0027t stored in that document.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"53228eca652e50e4bfd494117e2202d0f2adc1e1","unresolved":false,"context_lines":[{"line_number":72,"context_line":"Data model impact"},{"line_number":73,"context_line":"-----------------"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"None"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"State Machine Impact"},{"line_number":78,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_5a857fab","line":75,"in_reply_to":"1a122d0e_6d5c2619","updated":"2016-04-21 18:44:24.000000000","message":"oh my.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"0f6535eed2e755e56a97a793e5963cf05e9de236","unresolved":false,"context_lines":[{"line_number":72,"context_line":"Data model impact"},{"line_number":73,"context_line":"-----------------"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"None"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"State Machine Impact"},{"line_number":78,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_2b051210","line":75,"in_reply_to":"1a122d0e_bc80bc47","updated":"2016-04-20 20:31:47.000000000","message":"This will have a data model impact. It changes vif_port_id to vif_port_ids, for one example.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3a4a45db300abe2cf7ca6dd308af7a18acb5f9a2","unresolved":false,"context_lines":[{"line_number":83,"context_line":"---------------"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"None, because the vif_port_ids field exists in the port extra dictionary which"},{"line_number":86,"context_line":"is arbitrary."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Client (CLI) impact"},{"line_number":89,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_3c8dcc7b","line":86,"updated":"2016-04-19 00:31:00.000000000","message":"and how can a user understand whether Ironic is capable of supporting this functionality?","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"3689420cd738042bd7d9e3ae7318c5424a623305","unresolved":false,"context_lines":[{"line_number":83,"context_line":"---------------"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"None, because the vif_port_ids field exists in the port extra dictionary which"},{"line_number":86,"context_line":"is arbitrary."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Client (CLI) impact"},{"line_number":89,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_6dc26654","line":86,"in_reply_to":"1a122d0e_3c8dcc7b","updated":"2016-04-21 10:36:08.000000000","message":"An ironic user in an OpenStack environment is an Operator or Nova. As an Operator you need to setup the node with the right network driver to provide this functionality, or you could check the Ironic node\u0027s network driver, to ensure its using the neutron driver. Nodes that are planned to be used with nova should be set up to use the right network driver by the Operator.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"53228eca652e50e4bfd494117e2202d0f2adc1e1","unresolved":false,"context_lines":[{"line_number":83,"context_line":"---------------"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"None, because the vif_port_ids field exists in the port extra dictionary which"},{"line_number":86,"context_line":"is arbitrary."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Client (CLI) impact"},{"line_number":89,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_9aa6f751","line":86,"in_reply_to":"1a122d0e_6dc26654","updated":"2016-04-21 18:44:24.000000000","message":"I am utterly confused. An ironic user may as well be a regular tenant.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0d48b77d43f3278a081e6837af52b64211abbc23","unresolved":false,"context_lines":[{"line_number":83,"context_line":"---------------"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"None, because the vif_port_ids field exists in the port extra dictionary which"},{"line_number":86,"context_line":"is arbitrary."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Client (CLI) impact"},{"line_number":89,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_e44f6868","line":86,"in_reply_to":"1a122d0e_6f13480e","updated":"2016-04-22 15:50:37.000000000","message":"What I am saying is this: I am Nova, how am I supposed to know if the Ironic I am talking to support trunking (or whoever needs to interact with Ironic via its API)?","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"7f0e35b6a7d3ec199113b30451081733e79b4129","unresolved":false,"context_lines":[{"line_number":83,"context_line":"---------------"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"None, because the vif_port_ids field exists in the port extra dictionary which"},{"line_number":86,"context_line":"is arbitrary."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Client (CLI) impact"},{"line_number":89,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_6f13480e","line":86,"in_reply_to":"1a122d0e_9aa6f751","updated":"2016-04-22 09:35:54.000000000","message":"Ironic is an Admin only API. A normal tenant talking to Ironic is like a normal tenant talking directly to KVM.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3a4a45db300abe2cf7ca6dd308af7a18acb5f9a2","unresolved":false,"context_lines":[{"line_number":88,"context_line":"Client (CLI) impact"},{"line_number":89,"context_line":"-------------------"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"None"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"RPC API impact"},{"line_number":94,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_1cdf306a","line":91,"updated":"2016-04-19 00:31:00.000000000","message":"If there are none, how am I supposed to know whether my system supports this feature or not?","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"7f0e35b6a7d3ec199113b30451081733e79b4129","unresolved":false,"context_lines":[{"line_number":88,"context_line":"Client (CLI) impact"},{"line_number":89,"context_line":"-------------------"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"None"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"RPC API impact"},{"line_number":94,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_6f450816","line":91,"in_reply_to":"1a122d0e_1a7147e1","updated":"2016-04-22 09:35:54.000000000","message":"As a normal tenant operating Ironic through nova without access to Ironic, you shouldn\u0027t need to know. As a admin tenant operating Ironic you can get this information by doing an ironic node show...","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"3689420cd738042bd7d9e3ae7318c5424a623305","unresolved":false,"context_lines":[{"line_number":88,"context_line":"Client (CLI) impact"},{"line_number":89,"context_line":"-------------------"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"None"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"RPC API impact"},{"line_number":94,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_cd8a9a1a","line":91,"in_reply_to":"1a122d0e_1cdf306a","updated":"2016-04-21 10:36:08.000000000","message":"The nodes network driver.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0d48b77d43f3278a081e6837af52b64211abbc23","unresolved":false,"context_lines":[{"line_number":88,"context_line":"Client (CLI) impact"},{"line_number":89,"context_line":"-------------------"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"None"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"RPC API impact"},{"line_number":94,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_61c50a3c","line":91,"in_reply_to":"1a122d0e_6f450816","updated":"2016-04-22 15:50:37.000000000","message":"What I am saying is this: I am a tenant, I want to boot a bare metal node off a trunk port (to get access to multiple vlans). I go to my nova client with my tenant credentials. How am I going to expect to know whether my openstack environment support this capability? Or are you suggesting that this is not a tenant facing operation?","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"53228eca652e50e4bfd494117e2202d0f2adc1e1","unresolved":false,"context_lines":[{"line_number":88,"context_line":"Client (CLI) impact"},{"line_number":89,"context_line":"-------------------"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"None"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"RPC API impact"},{"line_number":94,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_1a7147e1","line":91,"in_reply_to":"1a122d0e_cd8a9a1a","updated":"2016-04-21 18:44:24.000000000","message":"as a tenant I have no access to this info.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"668bb76744ce1759b697290872cc9a41631c97e5","unresolved":false,"context_lines":[{"line_number":107,"context_line":"There are changes that need to be made in a few places in the nova driver to"},{"line_number":108,"context_line":"provide this functionality:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"- macs_for_instance, needs to return None"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- plug and unplug_vifs, needs to process the vifs into the vif_port_ids lists"},{"line_number":113,"context_line":"  for the Ironic ports and should no longer error if requested connectivity is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_12a214af","line":110,"updated":"2016-02-10 18:24:30.000000000","message":"This can\u0027t be done unconditionally. For flat networks, and possibly VLAN networks, we still need to use the MACs assigned to the NICs.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"96f4b31a34a2578f81cadb35274ab9b3b2d32816","unresolved":false,"context_lines":[{"line_number":107,"context_line":"There are changes that need to be made in a few places in the nova driver to"},{"line_number":108,"context_line":"provide this functionality:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"- macs_for_instance, needs to return None"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- plug and unplug_vifs, needs to process the vifs into the vif_port_ids lists"},{"line_number":113,"context_line":"  for the Ironic ports and should no longer error if requested connectivity is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_fc3042ea","line":110,"in_reply_to":"3a57f1b5_12a214af","updated":"2016-02-11 12:50:41.000000000","message":"For flat networks yes, for VLAN networks, and other types of encapsulation I don\u0027t think we need to add that complexity, and I would like to make BMs as close to VMs as possible, and having neutron define the mac addresses, and having the actual neutron connectivity configured as a separate layer on top of the physical infrastructure is a big step in that direction.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"53c79496b7c49d8354a21e91f917e85aad1c5189","unresolved":false,"context_lines":[{"line_number":110,"context_line":"- macs_for_instance, needs to return None"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- plug and unplug_vifs, needs to process the vifs into the vif_port_ids lists"},{"line_number":113,"context_line":"  for the Ironic ports and should no longer error if requested connectivity is"},{"line_number":114,"context_line":"  greater than number of physical networks."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_6b5e19eb","line":113,"range":{"start_line":113,"start_character":44,"end_line":113,"end_character":49},"updated":"2016-02-10 08:58:48.000000000","message":"What if user image doesn\u0027t support VLANs. I think we need new user image options that defines VLANs support. If image doesn\u0027t support VLANs we should get an error when requesting more networks than have physical interfaces.\nThe same is for bonding.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"d86daa5869ea40a3490fc16e9b1d8dc839c63fcc","unresolved":false,"context_lines":[{"line_number":110,"context_line":"- macs_for_instance, needs to return None"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- plug and unplug_vifs, needs to process the vifs into the vif_port_ids lists"},{"line_number":113,"context_line":"  for the Ironic ports and should no longer error if requested connectivity is"},{"line_number":114,"context_line":"  greater than number of physical networks."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_7d9b37ca","line":113,"range":{"start_line":113,"start_character":44,"end_line":113,"end_character":49},"in_reply_to":"3a57f1b5_6b5e19eb","updated":"2016-02-10 10:49:50.000000000","message":"This is a difficult one, we\u0027d need to get metadata on the user image some how, and then be able to make decisions based on that, this might fall into the RFE that I mention below, or it might be something we need a separate RFE for.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7b26c01dd7506d7f19225c76cd23788cd013c810","unresolved":false,"context_lines":[{"line_number":110,"context_line":"- macs_for_instance, needs to return None"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- plug and unplug_vifs, needs to process the vifs into the vif_port_ids lists"},{"line_number":113,"context_line":"  for the Ironic ports and should no longer error if requested connectivity is"},{"line_number":114,"context_line":"  greater than number of physical networks."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dae33548_e56e5cc8","line":113,"range":{"start_line":113,"start_character":44,"end_line":113,"end_character":49},"in_reply_to":"3a57f1b5_7d9b37ca","updated":"2016-02-15 18:47:24.000000000","message":"Is this something that is done in other cases where support for a feature is required in an image?","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"53c79496b7c49d8354a21e91f917e85aad1c5189","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- plug and unplug_vifs, needs to process the vifs into the vif_port_ids lists"},{"line_number":113,"context_line":"  for the Ironic ports and should no longer error if requested connectivity is"},{"line_number":114,"context_line":"  greater than number of physical networks."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic"},{"line_number":117,"context_line":"  Ironic port and portgroups into a network configuration file that can be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_08e52b08","line":114,"updated":"2016-02-10 08:58:48.000000000","message":"How Nova should decide which interface to pick? Imagine that server has 2 NIC. 1 NIC - 10GB and 2 NIC - 1GB.  As cloud operator I would like to have ability to specify that all networks connected to server are mapped to 1 NIC and 2-nd left unused.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"bb4c902fff403ee57f3fbe5cf2f931178090d856","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- plug and unplug_vifs, needs to process the vifs into the vif_port_ids lists"},{"line_number":113,"context_line":"  for the Ironic ports and should no longer error if requested connectivity is"},{"line_number":114,"context_line":"  greater than number of physical networks."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic"},{"line_number":117,"context_line":"  Ironic port and portgroups into a network configuration file that can be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aed3d3a_9b9dde0c","line":114,"in_reply_to":"3a57f1b5_08e52b08","updated":"2016-02-29 08:29:26.000000000","message":"In the past we considered the idea of enhancing nova api (adding new parameter) so that an operator can specify the NIC at the time nova boot","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"d86daa5869ea40a3490fc16e9b1d8dc839c63fcc","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- plug and unplug_vifs, needs to process the vifs into the vif_port_ids lists"},{"line_number":113,"context_line":"  for the Ironic ports and should no longer error if requested connectivity is"},{"line_number":114,"context_line":"  greater than number of physical networks."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic"},{"line_number":117,"context_line":"  Ironic port and portgroups into a network configuration file that can be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_e22c66ad","line":114,"in_reply_to":"3a57f1b5_08e52b08","updated":"2016-02-10 10:49:50.000000000","message":"We are actually working on another RFE for doing just that, it should be up in time for the midcycle. This spec assumes the same logic as currently exists in Nova now which is that it will round robin across all registered Ironic ports/portgroups. As a cloud provider if I decide that I don\u0027t want a tenant using a specfic port on the hardware, then I simply don\u0027t inform Ironic about that port. The RFE we\u0027re working on adds more deterministic logic to which neutron port get assigned to which Ironic port.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a408ec209efde93ce22b78f7977d4dfa28f151f9","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- plug and unplug_vifs, needs to process the vifs into the vif_port_ids lists"},{"line_number":113,"context_line":"  for the Ironic ports and should no longer error if requested connectivity is"},{"line_number":114,"context_line":"  greater than number of physical networks."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic"},{"line_number":117,"context_line":"  Ironic port and portgroups into a network configuration file that can be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_93f24dd1","line":114,"in_reply_to":"3a57f1b5_e22c66ad","updated":"2016-02-11 16:03:48.000000000","message":"The spec is now up for this:\nhttps://review.openstack.org/#/c/279148/1/specs/not-implemented/neutron-ironic-port-mapping.rst","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"bb4c902fff403ee57f3fbe5cf2f931178090d856","unresolved":false,"context_lines":[{"line_number":113,"context_line":"  for the Ironic ports and should no longer error if requested connectivity is"},{"line_number":114,"context_line":"  greater than number of physical networks."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic"},{"line_number":117,"context_line":"  Ironic port and portgroups into a network configuration file that can be"},{"line_number":118,"context_line":"  injected into the config drive."},{"line_number":119,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aed3d3a_9bb4be82","line":116,"range":{"start_line":116,"start_character":67,"end_line":116,"end_character":73},"updated":"2016-02-29 08:29:26.000000000","message":"nit: Ironic repeated twice","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5cabaec78c4158c4c9d522180fd5740e486b5314","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic"},{"line_number":117,"context_line":"  Ironic port and portgroups into a network configuration file that can be"},{"line_number":118,"context_line":"  injected into the config drive."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Security impact"},{"line_number":121,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_d5ba5b6e","line":118,"updated":"2016-02-09 22:17:35.000000000","message":"Specifically, bond and vlan configuration.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"f833e055ecb13616eac631ff7ec91ab5e3c23dd4","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic"},{"line_number":117,"context_line":"  Ironic port and portgroups into a network configuration file that can be"},{"line_number":118,"context_line":"  injected into the config drive."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Security impact"},{"line_number":121,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dae33548_39cc3588","line":118,"in_reply_to":"3a57f1b5_4542da11","updated":"2016-02-18 17:38:16.000000000","message":"++","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"96f4b31a34a2578f81cadb35274ab9b3b2d32816","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic"},{"line_number":117,"context_line":"  Ironic port and portgroups into a network configuration file that can be"},{"line_number":118,"context_line":"  injected into the config drive."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Security impact"},{"line_number":121,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_4542da11","line":118,"in_reply_to":"3a57f1b5_d5ba5b6e","updated":"2016-02-11 12:50:41.000000000","message":"Also the physical port configuration, such as MTU etc.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"bb4c902fff403ee57f3fbe5cf2f931178090d856","unresolved":false,"context_lines":[{"line_number":121,"context_line":"---------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"As the switch port configuration for this BM node is now trunk, if the switch"},{"line_number":124,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":125,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":126,"context_line":"manually tag packets to VLANs that don’t belong to them and breaking"},{"line_number":127,"context_line":"inter-tenant separation."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aed3d3a_2e5452fd","line":124,"updated":"2016-02-29 08:29:26.000000000","message":"While switch ports are configured in trunk mode, the default configuration is set to allowed_vlans \u003d None, therefore, there is no security issue - only  those vlans are allowed that are requested through neutron\u0027s port_create() request to bind ports to a specific network (i.e. VLAN)","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":11765,"name":"selvakumar","username":"selvakumarnms","inactive":true},"change_message_id":"67c30c7d886b1709fd147044c27b176053d75171","unresolved":false,"context_lines":[{"line_number":121,"context_line":"---------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"As the switch port configuration for this BM node is now trunk, if the switch"},{"line_number":124,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":125,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":126,"context_line":"manually tag packets to VLANs that don’t belong to them and breaking"},{"line_number":127,"context_line":"inter-tenant separation."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afc51ec_f51b5a71","line":124,"in_reply_to":"3afc51ec_07099c31","updated":"2016-03-15 06:57:13.000000000","message":"Another approach could be:\n1. Always make the port type as trunk port.\n2. Add segmentation-id as allowed VLAN and also make it native VLAN.\n\nThis will work with untagged frames coming from the baremetal.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"c88e8dba719874f1f7fa4b715df52ffc585f0177","unresolved":false,"context_lines":[{"line_number":121,"context_line":"---------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"As the switch port configuration for this BM node is now trunk, if the switch"},{"line_number":124,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":125,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":126,"context_line":"manually tag packets to VLANs that don’t belong to them and breaking"},{"line_number":127,"context_line":"inter-tenant separation."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afc51ec_0c1fdcb7","line":124,"in_reply_to":"3afc51ec_f51b5a71","updated":"2016-03-15 11:08:36.000000000","message":"The way we\u0027ve implemented it downstream is that all switch ports are always trunk ports, and we always set the allowed VLAN when we do a bind, setting the native VLAN is based on a flag we pass in the local link information, or for compatibility we\u0027ve discussed making the first port update that binds to a specific switch port sets the native and allowed, and any further port updates for that switch port only set the allowed, this has the benefit of being backward compatible.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":11765,"name":"selvakumar","username":"selvakumarnms","inactive":true},"change_message_id":"73f8faa9d02fbd2d883dd80a01a6563b8df296ac","unresolved":false,"context_lines":[{"line_number":121,"context_line":"---------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"As the switch port configuration for this BM node is now trunk, if the switch"},{"line_number":124,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":125,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":126,"context_line":"manually tag packets to VLANs that don’t belong to them and breaking"},{"line_number":127,"context_line":"inter-tenant separation."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afc51ec_07099c31","line":124,"in_reply_to":"9aed3d3a_2e5452fd","updated":"2016-03-14 16:27:59.000000000","message":"Hi Sukhdev,\nwe need to consider the various port link type(access, trunk and hybrid) , we need to know what is the link type configured in the physical port based on this vendor mech driver needs to configure vlan.\nFor Example,\n1. for hybrid port we need to make untagged and then set the native VLAN\n2. for trunk port ,as you mentioned we need to first configure allowed vlan and then set native VLAN\n3. for access port no need to set the native VLAN","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3a4a45db300abe2cf7ca6dd308af7a18acb5f9a2","unresolved":false,"context_lines":[{"line_number":124,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":125,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":126,"context_line":"manually tag packets to VLANs that don’t belong to them and breaking"},{"line_number":127,"context_line":"inter-tenant separation."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Other end user impact"},{"line_number":130,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_dc593800","line":127,"updated":"2016-04-19 00:31:00.000000000","message":"Am I right to assume that with this proposal as is, there is no impact on Neutron, its REST API and the drivers\u0027 API? Having said that, if you indeed considered adopting a model where the list of ports is (i.e. trunk) is modelled in Neutron (as currently targeted for VM\u0027s), then Ironic/Neutron interaction might become less chatty","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"3689420cd738042bd7d9e3ae7318c5424a623305","unresolved":false,"context_lines":[{"line_number":124,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":125,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":126,"context_line":"manually tag packets to VLANs that don’t belong to them and breaking"},{"line_number":127,"context_line":"inter-tenant separation."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Other end user impact"},{"line_number":130,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_ad175ea1","line":127,"in_reply_to":"1a122d0e_dc593800","updated":"2016-04-21 10:36:08.000000000","message":"This is part of the conversation we\u0027d like to have in the session in Austin, determining the future of how all of this information should be modelled across all three services.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"668bb76744ce1759b697290872cc9a41631c97e5","unresolved":false,"context_lines":[{"line_number":147,"context_line":"Other deployer impact"},{"line_number":148,"context_line":"---------------------"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Switch ports connected to BM nodes will now be running in trunk mode."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Developer impact"},{"line_number":153,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_32bab0c1","line":150,"updated":"2016-02-10 18:24:30.000000000","message":"I don\u0027t think this should be unconditional. There\u0027s still a valid use case for access mode ports when the user doesn\u0027t want/need the complexity, or the image doesn\u0027t support VLAN interfaces.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"96f4b31a34a2578f81cadb35274ab9b3b2d32816","unresolved":false,"context_lines":[{"line_number":147,"context_line":"Other deployer impact"},{"line_number":148,"context_line":"---------------------"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Switch ports connected to BM nodes will now be running in trunk mode."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Developer impact"},{"line_number":153,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_62726caf","line":150,"in_reply_to":"3a57f1b5_32bab0c1","updated":"2016-02-11 12:50:41.000000000","message":"This should probably be something that is handled by neutron, and they are working on making programming a trunk port and access port possible in the related BPs below, so then we could decide based on the type of network we\u0027re connecting to etc if we should be configured for trunk or access.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"bb4c902fff403ee57f3fbe5cf2f931178090d856","unresolved":false,"context_lines":[{"line_number":147,"context_line":"Other deployer impact"},{"line_number":148,"context_line":"---------------------"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Switch ports connected to BM nodes will now be running in trunk mode."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Developer impact"},{"line_number":153,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aed3d3a_6e449a1a","line":150,"in_reply_to":"3a57f1b5_32bab0c1","updated":"2016-02-29 08:29:26.000000000","message":"While a port is configured in trunk mode, it will still support Native Vlans (access mode) and tagged vlans. \n\nTo configure access port (native vlan) port_create() request needs to be made, where as to configure tagged vlan port_create() request for sub-port needs to be created. ML2 drivers will take care of the plumbing based upon the main port vs. sub-ports","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7b26c01dd7506d7f19225c76cd23788cd013c810","unresolved":false,"context_lines":[{"line_number":147,"context_line":"Other deployer impact"},{"line_number":148,"context_line":"---------------------"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Switch ports connected to BM nodes will now be running in trunk mode."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Developer impact"},{"line_number":153,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dae33548_65636cdd","line":150,"in_reply_to":"3a57f1b5_62726caf","updated":"2016-02-15 18:47:24.000000000","message":"Sounds reasonable.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5cabaec78c4158c4c9d522180fd5740e486b5314","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"- Update the nova driver to support vif_port_ids"},{"line_number":170,"context_line":"- Update neutron network provider to support vif_port_ids"},{"line_number":171,"context_line":"- Update neutron dhcp provider to support vif_port_ids"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_b5431f6c","line":171,"updated":"2016-02-09 22:17:35.000000000","message":"- add bond and vlan info to nova network metadata? (for configdrive/metadata service)","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"96f4b31a34a2578f81cadb35274ab9b3b2d32816","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"- Update the nova driver to support vif_port_ids"},{"line_number":170,"context_line":"- Update neutron network provider to support vif_port_ids"},{"line_number":171,"context_line":"- Update neutron dhcp provider to support vif_port_ids"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_bc4e4a94","line":171,"in_reply_to":"3a57f1b5_524accc6","updated":"2016-02-11 12:50:41.000000000","message":"I\u0027m not sure I get what you mean? In my current experimental code, I store the tenant vifs and the provisioning/cleaning vifs as different fields, and my DHCP provider when passed a port to configure PXE options on will only configure the PXE options on the provisioning/cleaning vif but not the tenant vifs, because PXE booting the node in the tenant network isn\u0027t a support use case for multi-tenancy","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"668bb76744ce1759b697290872cc9a41631c97e5","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"- Update the nova driver to support vif_port_ids"},{"line_number":170,"context_line":"- Update neutron network provider to support vif_port_ids"},{"line_number":171,"context_line":"- Update neutron dhcp provider to support vif_port_ids"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_524accc6","line":171,"in_reply_to":"3a57f1b5_9d3cf394","updated":"2016-02-10 18:24:30.000000000","message":"It would be nice to be able to signal that an Ironic port does not need PXE options in the case where there are multiple NICs.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"d86daa5869ea40a3490fc16e9b1d8dc839c63fcc","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"- Update the nova driver to support vif_port_ids"},{"line_number":170,"context_line":"- Update neutron network provider to support vif_port_ids"},{"line_number":171,"context_line":"- Update neutron dhcp provider to support vif_port_ids"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a57f1b5_9d3cf394","line":171,"in_reply_to":"3a57f1b5_b5431f6c","updated":"2016-02-10 10:49:50.000000000","message":"Depending on where we want to put the logic it can either be in Nova core or in the nova driver, that\u0027s a decision we;ll have to make in collaboration with the VLAN aware VMs developers I think","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7b26c01dd7506d7f19225c76cd23788cd013c810","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"- Update the nova driver to support vif_port_ids"},{"line_number":170,"context_line":"- Update neutron network provider to support vif_port_ids"},{"line_number":171,"context_line":"- Update neutron dhcp provider to support vif_port_ids"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dae33548_25de846d","line":171,"in_reply_to":"3a57f1b5_bc4e4a94","updated":"2016-02-15 18:47:24.000000000","message":"Right, so in a multi-tenant environment all instances will boot from their local disks? Or SAN, when Cinder integration is finished?","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"e582837a7a71d40e94f671c93330ec4265c4cd61","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"- Update the nova driver to support vif_port_ids"},{"line_number":170,"context_line":"- Update neutron network provider to support vif_port_ids"},{"line_number":171,"context_line":"- Update neutron dhcp provider to support vif_port_ids"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dae33548_6d197779","line":171,"in_reply_to":"dae33548_25de846d","updated":"2016-02-16 10:44:03.000000000","message":"Is the lack of support for PXE booting in multi-tenant environments something that has been agreed upon by the community? I understand that it does add complexity by requiring access to the PXE server from the tenant networks, but it does mean that some hardware will not work. Some examples I can think of:\n\n* Servers without boot device management\n* Diskless devices without SAN-aware OOB management controllers\n\nWe currently run both of these types of hardware with Ironic currently and would also like to use virtual networks.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3655754b6ce507d2cfc362b28c46a69f693b3a45","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"- Update the nova driver to support vif_port_ids"},{"line_number":170,"context_line":"- Update neutron network provider to support vif_port_ids"},{"line_number":171,"context_line":"- Update neutron dhcp provider to support vif_port_ids"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dae33548_4de8f3e2","line":171,"in_reply_to":"dae33548_6d197779","updated":"2016-02-16 10:49:17.000000000","message":"The OpenStack scientific working group recently met at the OpenStack operators mid-cycle, and the etherpad  calls out a requirement for PXE booting within virtual networks. See https://etherpad.openstack.org/p/MAN-ops-Scientific-WG, last bullet in the scheduling section.","commit_id":"c90be142b39609e5beeb5101a09fd9219ee82088"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"a70bea684f455118fa047fb786eff259150e742d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Ironic Neutron integration enabled baremetal instances to connect to multiple"},{"line_number":14,"context_line":"neutron networks, instead of being limited to one flat network, with the caveat"},{"line_number":15,"context_line":"that the maximum number of tenant networks you could connect to was defined by"},{"line_number":16,"context_line":"the number of physical network interfaces the baremetal server had. This RFE"},{"line_number":17,"context_line":"attempts to unbind the number of tenant networks from the physical"},{"line_number":18,"context_line":"infrastructure by making the instances VLAN aware, so multiple tenant networks"},{"line_number":19,"context_line":"can be carried by the same physical interface."}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_9bc79397","line":16,"range":{"start_line":16,"start_character":73,"end_line":16,"end_character":76},"updated":"2016-05-16 04:43:39.000000000","message":"spec","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"00a0b7cb6ea5194658995d31dda8049507354f5b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Ironic Neutron integration enabled baremetal instances to connect to multiple"},{"line_number":14,"context_line":"neutron networks, instead of being limited to one flat network, with the caveat"},{"line_number":15,"context_line":"that the maximum number of tenant networks you could connect to was defined by"},{"line_number":16,"context_line":"the number of physical network interfaces the baremetal server had. This RFE"},{"line_number":17,"context_line":"attempts to unbind the number of tenant networks from the physical"},{"line_number":18,"context_line":"infrastructure by making the instances VLAN aware, so multiple tenant networks"},{"line_number":19,"context_line":"can be carried by the same physical interface."}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_047972c8","line":16,"range":{"start_line":16,"start_character":73,"end_line":16,"end_character":76},"in_reply_to":"dab17558_9bc79397","updated":"2016-05-16 11:46:23.000000000","message":"Done","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"a70bea684f455118fa047fb786eff259150e742d","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"We will also unbind the neutron ports created from the physical mac addresses"},{"line_number":44,"context_line":"stored on the Ironic ports, allowing neutron to define the mac addresses for"},{"line_number":45,"context_line":"the neutron network connectivity. This is because we\u0027ll be allowing more ports"},{"line_number":46,"context_line":"than physical mac addresses, and mac_for_instances will need to become a no-op."},{"line_number":47,"context_line":"(It is possible we can overwrite the generated mac addresses in Ironic in the"},{"line_number":48,"context_line":"port-update at deploy time if we need it to match the physical nic, this"},{"line_number":49,"context_line":"should be configurable)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"With the list of neutron ports attached to each port or portgroup in Ironic,"},{"line_number":52,"context_line":"we will create a neutron trunk with the neutron ports attached as subports for"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_1bef23ea","line":49,"range":{"start_line":45,"start_character":34,"end_line":49,"end_character":23},"updated":"2016-05-16 04:43:39.000000000","message":"Is this really necessary? As long as the physical port is being bound to different neutron networks, it should be OK to use the same address.","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"00a0b7cb6ea5194658995d31dda8049507354f5b","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"We will also unbind the neutron ports created from the physical mac addresses"},{"line_number":44,"context_line":"stored on the Ironic ports, allowing neutron to define the mac addresses for"},{"line_number":45,"context_line":"the neutron network connectivity. This is because we\u0027ll be allowing more ports"},{"line_number":46,"context_line":"than physical mac addresses, and mac_for_instances will need to become a no-op."},{"line_number":47,"context_line":"(It is possible we can overwrite the generated mac addresses in Ironic in the"},{"line_number":48,"context_line":"port-update at deploy time if we need it to match the physical nic, this"},{"line_number":49,"context_line":"should be configurable)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"With the list of neutron ports attached to each port or portgroup in Ironic,"},{"line_number":52,"context_line":"we will create a neutron trunk with the neutron ports attached as subports for"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_0f7993c8","line":49,"range":{"start_line":45,"start_character":34,"end_line":49,"end_character":23},"in_reply_to":"dab17558_1bef23ea","updated":"2016-05-16 11:46:23.000000000","message":"Totally possible from neutrons perspective, but I\u0027m not sure the plumbing is there in nova to make it work well from that side of things, i.e. macs_for_instance returns a list of mac addresses, if we had multiple ports with the same mac address that list would have to contain duplicates, and there is no mapping of which neutron port gets which mac etc. which means that its now nova\u0027s port creation logic which decides the mapping of physical port to neutron vif, I would rather that Ironic was in control of that mapping. Plus it allows people writing third party ironic network drivers that might be able to, for example, program the mac addresses of their physical nics ;) to use the generated mac address if they desired.","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"a70bea684f455118fa047fb786eff259150e742d","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"  - Should fail to deploy because there trunk port to physical port mismatch"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"  - Or we enable some kind of trunk port merging, so that we can fit them to"},{"line_number":106,"context_line":"    the number of physical ports"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_3b1827d3","line":103,"range":{"start_line":103,"start_character":3,"end_line":103,"end_character":76},"updated":"2016-05-16 04:43:39.000000000","message":"Where do you expect this failure to come from Nova or Ironic?","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"00a0b7cb6ea5194658995d31dda8049507354f5b","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"  - Should fail to deploy because there trunk port to physical port mismatch"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"  - Or we enable some kind of trunk port merging, so that we can fit them to"},{"line_number":106,"context_line":"    the number of physical ports"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_ef5c0f4d","line":103,"range":{"start_line":103,"start_character":3,"end_line":103,"end_character":76},"in_reply_to":"dab17558_3b1827d3","updated":"2016-05-16 11:46:23.000000000","message":"I would expect to catch this at the plug_vifs stage of deploy, as we do with the port to physical port mismatch now.","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"a70bea684f455118fa047fb786eff259150e742d","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"  - Should fail to deploy because there trunk port to physical port mismatch"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"  - Or we enable some kind of trunk port merging, so that we can fit them to"},{"line_number":106,"context_line":"    the number of physical ports"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_7b0e2f8d","line":105,"range":{"start_line":105,"start_character":17,"end_line":105,"end_character":48},"updated":"2016-05-16 04:43:39.000000000","message":"IMO, this does not make sense - we should simply fail the request","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"00a0b7cb6ea5194658995d31dda8049507354f5b","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"  - Should fail to deploy because there trunk port to physical port mismatch"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"  - Or we enable some kind of trunk port merging, so that we can fit them to"},{"line_number":106,"context_line":"    the number of physical ports"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_72d64850","line":105,"range":{"start_line":105,"start_character":17,"end_line":105,"end_character":48},"in_reply_to":"dab17558_7b0e2f8d","updated":"2016-05-16 11:46:23.000000000","message":"I think that makes sense for now.","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"a70bea684f455118fa047fb786eff259150e742d","unresolved":false,"context_lines":[{"line_number":119,"context_line":"Data model impact"},{"line_number":120,"context_line":"-----------------"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"None"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"State Machine Impact"},{"line_number":125,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_9b579359","line":122,"range":{"start_line":122,"start_character":0,"end_line":122,"end_character":4},"updated":"2016-05-16 04:43:39.000000000","message":"In the examples, I thought you mentioned storing trunk port ID in Ironic port - is this overloading existing field or should a new one be considered?","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"00a0b7cb6ea5194658995d31dda8049507354f5b","unresolved":false,"context_lines":[{"line_number":119,"context_line":"Data model impact"},{"line_number":120,"context_line":"-----------------"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"None"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"State Machine Impact"},{"line_number":125,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_b211d006","line":122,"range":{"start_line":122,"start_character":0,"end_line":122,"end_character":4},"in_reply_to":"dab17558_9b579359","updated":"2016-05-16 11:46:23.000000000","message":"This will be stored in the port metadata just the same as the current vif_port_id is stored, so technically its not changing the data model at all because its just an arbitrary json blob.","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"a70bea684f455118fa047fb786eff259150e742d","unresolved":false,"context_lines":[{"line_number":154,"context_line":"There are changes that need to be made in a few places in the nova driver to"},{"line_number":155,"context_line":"provide this functionality:"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"- macs_for_instance, needs to return None"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"- plug and unplug_vifs, needs to process the vifs into the vif_port_ids lists"},{"line_number":160,"context_line":"  for the Ironic ports and should no longer error if requested connectivity is"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_fbdfbfd3","line":157,"range":{"start_line":157,"start_character":2,"end_line":157,"end_character":41},"updated":"2016-05-16 04:43:39.000000000","message":"See my comment above","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"a70bea684f455118fa047fb786eff259150e742d","unresolved":false,"context_lines":[{"line_number":168,"context_line":"Security impact"},{"line_number":169,"context_line":"---------------"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"As the switch port configuration for this BM node is now trunk, if the switch"},{"line_number":172,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":173,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":174,"context_line":"manually tag packets to VLANs that don’t belong to them and breaking"},{"line_number":175,"context_line":"inter-tenant separation. This is down to the neutron ml2 mechanism to ensure."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Other end user impact"},{"line_number":178,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_db8abbbe","line":175,"range":{"start_line":171,"start_character":0,"end_line":175,"end_character":77},"updated":"2016-05-16 04:43:39.000000000","message":"This is not a new problem. If ML2 drivers are flawed, this could happen with or without this feature. We have to trust and leave this to Neutron/ML2 drivers - to do the right thing","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"a70bea684f455118fa047fb786eff259150e742d","unresolved":false,"context_lines":[{"line_number":236,"context_line":"Support should be added so that if a vif_port_id is added to a port or"},{"line_number":237,"context_line":"portgroup it is processed as if vif_port_ids has a length of one."},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"Documentation Impact"},{"line_number":240,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"vif_port_ids and its usage should be documented."}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_b63f0eb3","line":239,"range":{"start_line":239,"start_character":0,"end_line":239,"end_character":20},"updated":"2016-05-16 04:43:39.000000000","message":"IMO, additionally, we should documents steps that may be needed by the operators - such as: \n- When should operator create neutron trunk ports  vs. when will Ironic create it automatically\n- When should operator create neutron sub-ports vs. when will Ironic create these automatically\n- Mapping trunk ports to ironic ports vs portgroups\n- other necessary deployment related steps","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"00a0b7cb6ea5194658995d31dda8049507354f5b","unresolved":false,"context_lines":[{"line_number":236,"context_line":"Support should be added so that if a vif_port_id is added to a port or"},{"line_number":237,"context_line":"portgroup it is processed as if vif_port_ids has a length of one."},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"Documentation Impact"},{"line_number":240,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"vif_port_ids and its usage should be documented."}],"source_content_type":"text/x-rst","patch_set":3,"id":"dab17558_522d04a7","line":239,"range":{"start_line":239,"start_character":0,"end_line":239,"end_character":20},"in_reply_to":"dab17558_b63f0eb3","updated":"2016-05-16 11:46:23.000000000","message":"We need to be careful with Operator vs Tenant:\nThe Operator is a user of Ironic, but is not normally the one who would be creating ports/trunks in neutron and then doing a nova boot with them, that\u0027s a User or Tenant.\n\nI\u0027ll update this section to cover the changes to the spec better.","commit_id":"a3c32a50a64056033ec0dbe894859ce42cebef35"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"da3da96151da060f4cf0169d4c1af77bfd6bb94b","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/ironic/+bug/1543584"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Ironic Neutron integration enabled baremetal instances to connect to multiple"},{"line_number":14,"context_line":"neutron networks, instead of being limited to one flat network, with the caveat"},{"line_number":15,"context_line":"that the maximum number of tenant networks you could connect to was defined by"},{"line_number":16,"context_line":"the number of physical network interfaces the baremetal server had. This spec"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_9f3c7a94","line":13,"updated":"2016-05-16 16:36:38.000000000","message":"This is confusing. I\u0027d reword it along the following lines:\n\n\"Before Ironic Neutron integration, baremetal clients were limited to a single flat network. Ironic Neutron integration enables a baremetal instance with N physical network interfaces to connect to at most N Neutron tenant networks.\"\n\nOr possibly\n\n\"Ironic Neutron integration enables a baremetal instance to connect to as many Neutron tenant networks as it has physical network interfaces.\"","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"129c753b39bb4de026effa4c21b1ce149ba2c248","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/ironic/+bug/1543584"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Ironic Neutron integration enabled baremetal instances to connect to multiple"},{"line_number":14,"context_line":"neutron networks, instead of being limited to one flat network, with the caveat"},{"line_number":15,"context_line":"that the maximum number of tenant networks you could connect to was defined by"},{"line_number":16,"context_line":"the number of physical network interfaces the baremetal server had. This spec"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9ad45d7e_dff6e38d","line":13,"in_reply_to":"dab17558_9f3c7a94","updated":"2016-08-11 10:43:29.000000000","message":"Done","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"da3da96151da060f4cf0169d4c1af77bfd6bb94b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Problem description"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Having the number of tenant networks that an instance can connect to,"},{"line_number":25,"context_line":"restricted by the physical infrastructure presents potential problems for cloud"},{"line_number":26,"context_line":"operators and cloud users. Cloud Operators have to provide physical"},{"line_number":27,"context_line":"infrastructure that can support the number of neutron networks their users"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_df10c202","line":24,"updated":"2016-05-16 16:36:38.000000000","message":"Nit: remove this comma.","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"129c753b39bb4de026effa4c21b1ce149ba2c248","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Problem description"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Having the number of tenant networks that an instance can connect to,"},{"line_number":25,"context_line":"restricted by the physical infrastructure presents potential problems for cloud"},{"line_number":26,"context_line":"operators and cloud users. Cloud Operators have to provide physical"},{"line_number":27,"context_line":"infrastructure that can support the number of neutron networks their users"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9ad45d7e_fffbe776","line":24,"in_reply_to":"dab17558_df10c202","updated":"2016-08-11 10:43:29.000000000","message":"Done","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"da3da96151da060f4cf0169d4c1af77bfd6bb94b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"making it a list."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"We will also make mac_for_instance a no-op in the nova driver, this unbinds the"},{"line_number":45,"context_line":"neutron ports from the physical mac addresses a create time. We do this because"},{"line_number":46,"context_line":"we\u0027ll be allowing more neutron ports than physical mac addresses, and"},{"line_number":47,"context_line":"continuing to use macs_for_instance means we lose the control of which neutron"},{"line_number":48,"context_line":"port ends up on which nic. The network driver in Ironic can handle the ports as"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_da2610b9","line":45,"updated":"2016-05-16 16:36:38.000000000","message":"nit: \"a\" -\u003e \"at\"","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"129c753b39bb4de026effa4c21b1ce149ba2c248","unresolved":false,"context_lines":[{"line_number":42,"context_line":"making it a list."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"We will also make mac_for_instance a no-op in the nova driver, this unbinds the"},{"line_number":45,"context_line":"neutron ports from the physical mac addresses a create time. We do this because"},{"line_number":46,"context_line":"we\u0027ll be allowing more neutron ports than physical mac addresses, and"},{"line_number":47,"context_line":"continuing to use macs_for_instance means we lose the control of which neutron"},{"line_number":48,"context_line":"port ends up on which nic. The network driver in Ironic can handle the ports as"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9ad45d7e_bffdef6f","line":45,"in_reply_to":"dab17558_da2610b9","updated":"2016-08-11 10:43:29.000000000","message":"Done","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":18893,"name":"Miles Gould","email":"mgould@redhat.com","username":"pozorvlak"},"change_message_id":"da3da96151da060f4cf0169d4c1af77bfd6bb94b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"We will also make mac_for_instance a no-op in the nova driver, this unbinds the"},{"line_number":45,"context_line":"neutron ports from the physical mac addresses a create time. We do this because"},{"line_number":46,"context_line":"we\u0027ll be allowing more neutron ports than physical mac addresses, and"},{"line_number":47,"context_line":"continuing to use macs_for_instance means we lose the control of which neutron"},{"line_number":48,"context_line":"port ends up on which nic. The network driver in Ironic can handle the ports as"},{"line_number":49,"context_line":"it sees fit, and it can overwrite the generated mac addresses in Ironic if we"},{"line_number":50,"context_line":"need it to match the physical nic."}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_3a38fcd2","line":47,"updated":"2016-05-16 16:36:38.000000000","message":"\"the control\" -\u003e \"control\"","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"129c753b39bb4de026effa4c21b1ce149ba2c248","unresolved":false,"context_lines":[{"line_number":44,"context_line":"We will also make mac_for_instance a no-op in the nova driver, this unbinds the"},{"line_number":45,"context_line":"neutron ports from the physical mac addresses a create time. We do this because"},{"line_number":46,"context_line":"we\u0027ll be allowing more neutron ports than physical mac addresses, and"},{"line_number":47,"context_line":"continuing to use macs_for_instance means we lose the control of which neutron"},{"line_number":48,"context_line":"port ends up on which nic. The network driver in Ironic can handle the ports as"},{"line_number":49,"context_line":"it sees fit, and it can overwrite the generated mac addresses in Ironic if we"},{"line_number":50,"context_line":"need it to match the physical nic."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9ad45d7e_5f0af38a","line":47,"in_reply_to":"dab17558_3a38fcd2","updated":"2016-08-11 10:43:29.000000000","message":"Done","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c97557f422814bfb4f51b01717585131cdb42869","unresolved":false,"context_lines":[{"line_number":63,"context_line":"and port. For neutron ports mapped to an Ironic portgroup, we will first bond"},{"line_number":64,"context_line":"the physical interfaces together, creating a bond interface, then create the"},{"line_number":65,"context_line":"vlan interfaces on top of the bond interface, in the same way as we do for a"},{"line_number":66,"context_line":"normal Ironic port. The instance will receive this configuration via the config"},{"line_number":67,"context_line":"drive."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Examples"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dada55a8_ccdaf2e7","line":66,"updated":"2016-07-20 10:37:06.000000000","message":"might be good to have a reference to how the network-metadata looks like (in nova specs iirc?).","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"129c753b39bb4de026effa4c21b1ce149ba2c248","unresolved":false,"context_lines":[{"line_number":63,"context_line":"and port. For neutron ports mapped to an Ironic portgroup, we will first bond"},{"line_number":64,"context_line":"the physical interfaces together, creating a bond interface, then create the"},{"line_number":65,"context_line":"vlan interfaces on top of the bond interface, in the same way as we do for a"},{"line_number":66,"context_line":"normal Ironic port. The instance will receive this configuration via the config"},{"line_number":67,"context_line":"drive."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Examples"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9ad45d7e_7f07f781","line":66,"in_reply_to":"dada55a8_ccdaf2e7","updated":"2016-08-11 10:43:29.000000000","message":"Done","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c97557f422814bfb4f51b01717585131cdb42869","unresolved":false,"context_lines":[{"line_number":69,"context_line":"Examples"},{"line_number":70,"context_line":"--------"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"In each of these examples we have an Ironic node with 2 physical nics"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* nova boot --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":75,"context_line":"  --nic net-id\u003d\u003cnet\u003e"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dada55a8_8c7f5a65","line":72,"updated":"2016-07-20 10:37:06.000000000","message":"Could you describe the process here a bit more? Is it just number of vifs/number of ironic port(group)s gets assigned to each port(group)? How is this association happening, just by sorting each node\u0027s port(group)s somehow and adding vifs there in that order? Is there a way to impact that order? I see some answers in the comments to the spec, but please move them here for visibility.","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"129c753b39bb4de026effa4c21b1ce149ba2c248","unresolved":false,"context_lines":[{"line_number":69,"context_line":"Examples"},{"line_number":70,"context_line":"--------"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"In each of these examples we have an Ironic node with 2 physical nics"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* nova boot --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":75,"context_line":"  --nic net-id\u003d\u003cnet\u003e"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9ad45d7e_e2cfd053","line":72,"in_reply_to":"dada55a8_8c7f5a65","updated":"2016-08-11 10:43:29.000000000","message":"Done","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c97557f422814bfb4f51b01717585131cdb42869","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  - One Ironic port will get a vif_port_ids list"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"  - Ironic will create a neutron trunk for the Ironic port will the"},{"line_number":101,"context_line":"    vif_port_ids list"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dada55a8_8538d53e","line":100,"updated":"2016-07-20 10:37:06.000000000","message":"s/will/with?","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"129c753b39bb4de026effa4c21b1ce149ba2c248","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  - One Ironic port will get a vif_port_ids list"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"  - Ironic will create a neutron trunk for the Ironic port will the"},{"line_number":101,"context_line":"    vif_port_ids list"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9ad45d7e_42497ccf","line":100,"in_reply_to":"dada55a8_8538d53e","updated":"2016-08-11 10:43:29.000000000","message":"Done","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c97557f422814bfb4f51b01717585131cdb42869","unresolved":false,"context_lines":[{"line_number":125,"context_line":"json field on the Ironic port object, however documenting the changes here for"},{"line_number":126,"context_line":"reference:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"- Change vif_port_id to vif_port_ids list"},{"line_number":129,"context_line":"- Add trunk_port_id field"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"State Machine Impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dada55a8_7114839f","line":128,"range":{"start_line":128,"start_character":9,"end_line":128,"end_character":20},"updated":"2016-07-20 10:37:06.000000000","message":"Are we going to deprecate it?","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c97557f422814bfb4f51b01717585131cdb42869","unresolved":false,"context_lines":[{"line_number":125,"context_line":"json field on the Ironic port object, however documenting the changes here for"},{"line_number":126,"context_line":"reference:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"- Change vif_port_id to vif_port_ids list"},{"line_number":129,"context_line":"- Add trunk_port_id field"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"State Machine Impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dada55a8_314debc4","line":128,"range":{"start_line":128,"start_character":24,"end_line":128,"end_character":36},"updated":"2016-07-20 10:37:06.000000000","message":"So \"arbitrary json fields\" means extra? Why not add these to port object directly?","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"129c753b39bb4de026effa4c21b1ce149ba2c248","unresolved":false,"context_lines":[{"line_number":125,"context_line":"json field on the Ironic port object, however documenting the changes here for"},{"line_number":126,"context_line":"reference:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"- Change vif_port_id to vif_port_ids list"},{"line_number":129,"context_line":"- Add trunk_port_id field"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"State Machine Impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9ad45d7e_185a562a","line":128,"range":{"start_line":128,"start_character":9,"end_line":128,"end_character":20},"in_reply_to":"dada55a8_7114839f","updated":"2016-08-11 10:43:29.000000000","message":"Adding this information directly on the port object ties the Ironic object layer to a particular relationship between vifs and pifs, which could be differently represented in differently by different network interfaces. Hopefully once the Attach/Detach interface spec/code lands, all this will be moved into the internal port info and hidden.","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c97557f422814bfb4f51b01717585131cdb42869","unresolved":false,"context_lines":[{"line_number":229,"context_line":"Dependencies"},{"line_number":230,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"None"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"Testing"},{"line_number":235,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dada55a8_7165a31c","line":232,"range":{"start_line":232,"start_character":0,"end_line":232,"end_character":4},"updated":"2016-07-20 10:37:06.000000000","message":"Seems like it depends on the trunk ports work in neutron? Could you list all the dependencies here?","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"129c753b39bb4de026effa4c21b1ce149ba2c248","unresolved":false,"context_lines":[{"line_number":229,"context_line":"Dependencies"},{"line_number":230,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"None"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"Testing"},{"line_number":235,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9ad45d7e_e2aeb02c","line":232,"range":{"start_line":232,"start_character":0,"end_line":232,"end_character":4},"in_reply_to":"dada55a8_7165a31c","updated":"2016-08-11 10:43:29.000000000","message":"Done","commit_id":"becf7c352da61869e31cec4a5ceeca1d149600f5"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposed change is to allow multiple neutron ports to be assigned to each"},{"line_number":39,"context_line":"Ironic port or portgroup, by changing the vif_port_id field, to vif_port_ids,"},{"line_number":40,"context_line":"making it a list."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"We will also make mac_for_instance a no-op in the nova driver, this unbinds the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_73df1e3a","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":6},"updated":"2016-08-23 18:49:33.000000000","message":"nit: please use lowercase \"ironic\" here and below, as you do for neutron\n\nhttp://docs.openstack.org/contributor-guide/writing-style/openstack-components.html","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposed change is to allow multiple neutron ports to be assigned to each"},{"line_number":39,"context_line":"Ironic port or portgroup, by changing the vif_port_id field, to vif_port_ids,"},{"line_number":40,"context_line":"making it a list."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"We will also make mac_for_instance a no-op in the nova driver, this unbinds the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_3adb927d","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":6},"in_reply_to":"1ac06dbe_73df1e3a","updated":"2016-08-24 09:47:36.000000000","message":"Done","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"normal Ironic port. The instance will receive this configuration via the config"},{"line_number":65,"context_line":"drive. The format of this configuration is defined by the nova spec [1]_."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"These changes will not effect the neutron port to physical port assignment"},{"line_number":68,"context_line":"order, this will remain non-deterministic as it in the existing functionality."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Examples"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_a4079b80","line":67,"range":{"start_line":67,"start_character":23,"end_line":67,"end_character":29},"updated":"2016-08-23 18:49:33.000000000","message":"nit: s/effect/affect","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":64,"context_line":"normal Ironic port. The instance will receive this configuration via the config"},{"line_number":65,"context_line":"drive. The format of this configuration is defined by the nova spec [1]_."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"These changes will not effect the neutron port to physical port assignment"},{"line_number":68,"context_line":"order, this will remain non-deterministic as it in the existing functionality."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Examples"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_1ac976ac","line":67,"range":{"start_line":67,"start_character":23,"end_line":67,"end_character":29},"in_reply_to":"1ac06dbe_a4079b80","updated":"2016-08-24 09:47:36.000000000","message":"Done","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"* nova boot --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":76,"context_line":"  --nic net-id\u003d\u003cnet\u003e"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  - Each Ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - Ironic will create a neutron trunk for each port, stored in trunk_port_id"},{"line_number":81,"context_line":"    on the Ironic port"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_a4631b41","line":78,"updated":"2016-08-23 18:49:33.000000000","message":"Can you specify why each ironic port gets 2 neutron ports more clearly?\n\nIs it always the case that these get divided evenly between the ironic ports?","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"ff9649142178fa8e94625451ff42a8d84f617810","unresolved":false,"context_lines":[{"line_number":75,"context_line":"* nova boot --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":76,"context_line":"  --nic net-id\u003d\u003cnet\u003e"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  - Each Ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - Ironic will create a neutron trunk for each port, stored in trunk_port_id"},{"line_number":81,"context_line":"    on the Ironic port"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_3011c5b0","line":78,"in_reply_to":"1ac06dbe_46495e30","updated":"2016-08-24 21:48:54.000000000","message":"OK, thanks. Missed that above.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":75,"context_line":"* nova boot --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":76,"context_line":"  --nic net-id\u003d\u003cnet\u003e"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  - Each Ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - Ironic will create a neutron trunk for each port, stored in trunk_port_id"},{"line_number":81,"context_line":"    on the Ironic port"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_46495e30","line":78,"in_reply_to":"1ac06dbe_a4631b41","updated":"2016-08-24 09:47:36.000000000","message":"The existing implementation uses a round robin approach to assign vifs to pifs, this spec doesn\u0027t change that, it just allows multiple cycles over the pifs until we run out of vifs. The reason I\u0027ve not specified anything about how the ports are placed other than at L67 is because this might change if we decide to make vif placement more deterministic.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  - Each Ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - Ironic will create a neutron trunk for each port, stored in trunk_port_id"},{"line_number":81,"context_line":"    on the Ironic port"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* nova boot --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_c45c577f","line":80,"range":{"start_line":80,"start_character":48,"end_line":80,"end_character":52},"updated":"2016-08-23 18:49:33.000000000","message":"You might want to specify \"for each ironic port\" to make this clearer.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"ff9649142178fa8e94625451ff42a8d84f617810","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  - Each Ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - Ironic will create a neutron trunk for each port, stored in trunk_port_id"},{"line_number":81,"context_line":"    on the Ironic port"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* nova boot --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_90d99986","line":80,"range":{"start_line":80,"start_character":48,"end_line":80,"end_character":52},"in_reply_to":"1ac06dbe_1a405606","updated":"2016-08-24 21:48:54.000000000","message":"I think this was missed in the update, but it\u0027s not a big deal.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"45ff6233020cd258d5b1ad2065811aa97e9bae53","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  - Each Ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - Ironic will create a neutron trunk for each port, stored in trunk_port_id"},{"line_number":81,"context_line":"    on the Ironic port"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* nova boot --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_25d4cabb","line":80,"range":{"start_line":80,"start_character":48,"end_line":80,"end_character":52},"in_reply_to":"1ac06dbe_90d99986","updated":"2016-08-25 09:26:32.000000000","message":"Done","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  - Each Ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - Ironic will create a neutron trunk for each port, stored in trunk_port_id"},{"line_number":81,"context_line":"    on the Ironic port"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* nova boot --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_1a405606","line":80,"range":{"start_line":80,"start_character":48,"end_line":80,"end_character":52},"in_reply_to":"1ac06dbe_c45c577f","updated":"2016-08-24 09:47:36.000000000","message":"Done","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"  - Ironic will create a neutron trunk for each port, stored in trunk_port_id"},{"line_number":81,"context_line":"    on the Ironic port"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* nova boot --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e"},{"line_number":84,"context_line":"  --nic port-id\u003d\u003cport\u003e"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"  - Each Ironic port will get a vif_port_ids list containing 2 neutron ports"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_1334eadb","line":83,"updated":"2016-08-23 18:49:33.000000000","message":"This is a duplicate of the above example.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":80,"context_line":"  - Ironic will create a neutron trunk for each port, stored in trunk_port_id"},{"line_number":81,"context_line":"    on the Ironic port"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* nova boot --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e"},{"line_number":84,"context_line":"  --nic port-id\u003d\u003cport\u003e"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"  - Each Ironic port will get a vif_port_ids list containing 2 neutron ports"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_a6f012ca","line":83,"in_reply_to":"1ac06dbe_1334eadb","updated":"2016-08-24 09:47:36.000000000","message":"This is not a duplicate, the difference here is that neutron port id\u0027s are specified during nova boot, instead of net ids.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"ff9649142178fa8e94625451ff42a8d84f617810","unresolved":false,"context_lines":[{"line_number":80,"context_line":"  - Ironic will create a neutron trunk for each port, stored in trunk_port_id"},{"line_number":81,"context_line":"    on the Ironic port"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* nova boot --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e"},{"line_number":84,"context_line":"  --nic port-id\u003d\u003cport\u003e"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"  - Each Ironic port will get a vif_port_ids list containing 2 neutron ports"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_50ce01b5","line":83,"in_reply_to":"1ac06dbe_a6f012ca","updated":"2016-08-24 21:48:54.000000000","message":"Got it, thanks.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003cport\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"  - One Ironic port will get a trunk_port_id"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"  - One Ironic port will get a vif_port_ids list"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_f38aee62","line":97,"updated":"2016-08-23 18:49:33.000000000","message":"Please specify how it\u0027s determined which ironic port gets the trunk and which one gets the vifs.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"ff9649142178fa8e94625451ff42a8d84f617810","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003cport\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"  - One Ironic port will get a trunk_port_id"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"  - One Ironic port will get a vif_port_ids list"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_d045d1b3","line":97,"in_reply_to":"1ac06dbe_e68a0a1a","updated":"2016-08-24 21:48:54.000000000","message":"OK, thanks.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003cport\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"  - One Ironic port will get a trunk_port_id"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"  - One Ironic port will get a vif_port_ids list"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_e68a0a1a","line":97,"in_reply_to":"1ac06dbe_f38aee62","updated":"2016-08-24 09:47:36.000000000","message":"This is non-deterministic, as it is today.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  - Should fail to deploy because there trunk port to physical port mismatch"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"  - Or we enable some kind of trunk port merging, so that we can fit them to"},{"line_number":109,"context_line":"    the number of physical ports"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_d3c7f293","line":108,"updated":"2016-08-23 18:49:33.000000000","message":"Which should we do? I suggest the trunk port merging, but that needs to be fleshed out more.\n\nIf it fails, can you specify how this failure occurs more clearly? I\u0027m curious if nova will return a 400 with the initial create call or something.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"45ff6233020cd258d5b1ad2065811aa97e9bae53","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  - Should fail to deploy because there trunk port to physical port mismatch"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"  - Or we enable some kind of trunk port merging, so that we can fit them to"},{"line_number":109,"context_line":"    the number of physical ports"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_40573402","line":108,"in_reply_to":"1ac06dbe_b071357a","updated":"2016-08-25 09:26:32.000000000","message":"Done","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  - Should fail to deploy because there trunk port to physical port mismatch"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"  - Or we enable some kind of trunk port merging, so that we can fit them to"},{"line_number":109,"context_line":"    the number of physical ports"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_e62deafe","line":108,"in_reply_to":"1ac06dbe_d3c7f293","updated":"2016-08-24 09:47:36.000000000","message":"The failure will cause a No Valid host error, and Nova will retry a number of times to try and find a new Ironic node that fits the criteria. If the retries by nova continue to land on nodes without enough pifs, then nova will bubble the No Valid Host error up to the user, putting the instance in Error state.\n\nI also like the idea of doing trunk port merging, however this can lead to problems because you have to decide which port will become the native (untagged traffic) port, and this could break applications if they are expecting 3 nics that take untagged traffic + other tagged traffic.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"ff9649142178fa8e94625451ff42a8d84f617810","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  - Should fail to deploy because there trunk port to physical port mismatch"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"  - Or we enable some kind of trunk port merging, so that we can fit them to"},{"line_number":109,"context_line":"    the number of physical ports"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_b071357a","line":108,"in_reply_to":"1ac06dbe_e62deafe","updated":"2016-08-24 21:48:54.000000000","message":"Good to know. Can you put this information about how the deploy will fail in the spec?\n\nFor context, some operators track this information to see what causes build failures. The \"no valid host\" error is often indicative of not being able to build because of node capacity constraints.\n\nI agree that trunk port merging is problematic if it breaks applications. We should probably remove it from the spec or tag it as something not in scope yet if we leave it in.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Data model impact"},{"line_number":123,"context_line":"-----------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"None of these changes will effect the DB models as they exist in an arbitrary"},{"line_number":126,"context_line":"json field on the Ironic port object, however documenting the changes here for"},{"line_number":127,"context_line":"reference:"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_f34f8e31","line":125,"range":{"start_line":125,"start_character":27,"end_line":125,"end_character":33},"updated":"2016-08-23 18:49:33.000000000","message":"nit: s/effect/affect","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Data model impact"},{"line_number":123,"context_line":"-----------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"None of these changes will effect the DB models as they exist in an arbitrary"},{"line_number":126,"context_line":"json field on the Ironic port object, however documenting the changes here for"},{"line_number":127,"context_line":"reference:"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_7a998a78","line":125,"range":{"start_line":125,"start_character":27,"end_line":125,"end_character":33},"in_reply_to":"1ac06dbe_f34f8e31","updated":"2016-08-24 09:47:36.000000000","message":"Done","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":153,"context_line":"Driver API impact"},{"line_number":154,"context_line":"-----------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Any drivers that rely on the vif_port_id field for any reason will need to"},{"line_number":157,"context_line":"adapt to handle vif_port_ids."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Nova driver impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_330be6d7","line":156,"updated":"2016-08-23 18:49:33.000000000","message":"Will this be in the scope of this work for in-tree drivers? Please add this to the work items list, if so.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"45ff6233020cd258d5b1ad2065811aa97e9bae53","unresolved":false,"context_lines":[{"line_number":153,"context_line":"Driver API impact"},{"line_number":154,"context_line":"-----------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Any drivers that rely on the vif_port_id field for any reason will need to"},{"line_number":157,"context_line":"adapt to handle vif_port_ids."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Nova driver impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_e0d2a05a","line":156,"in_reply_to":"1ac06dbe_30870514","updated":"2016-08-25 09:26:32.000000000","message":"Done","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":153,"context_line":"Driver API impact"},{"line_number":154,"context_line":"-----------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Any drivers that rely on the vif_port_id field for any reason will need to"},{"line_number":157,"context_line":"adapt to handle vif_port_ids."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Nova driver impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_5afc8eb7","line":156,"in_reply_to":"1ac06dbe_330be6d7","updated":"2016-08-24 09:47:36.000000000","message":"It is already included in the work items.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"ff9649142178fa8e94625451ff42a8d84f617810","unresolved":false,"context_lines":[{"line_number":153,"context_line":"Driver API impact"},{"line_number":154,"context_line":"-----------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Any drivers that rely on the vif_port_id field for any reason will need to"},{"line_number":157,"context_line":"adapt to handle vif_port_ids."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Nova driver impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_30870514","line":156,"in_reply_to":"1ac06dbe_5afc8eb7","updated":"2016-08-24 21:48:54.000000000","message":"Which work item?\n\n- Update the nova driver to support vif_port_ids\n- Update neutron network interface to support vif_port_ids\n- Update neutron dhcp interface to support vif_port_ids\n\nI assumed you meant the ironic drivers under \"Driver API impact\", not nova driver.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":169,"context_line":"  greater than number of physical networks, unless there are more trunk ports"},{"line_number":170,"context_line":"  than physical ports."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic ports"},{"line_number":173,"context_line":"  and portgroups into a network configuration file that can be injected into"},{"line_number":174,"context_line":"  the config drive, to configure the sub-interfaces and bonded nics. This"},{"line_number":175,"context_line":"  configuration should also contain all physical nic settings such as MTU etc."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_b3a19696","line":172,"updated":"2016-08-23 18:49:33.000000000","message":"cloud-init changes won\u0027t be needed with this, right?","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":169,"context_line":"  greater than number of physical networks, unless there are more trunk ports"},{"line_number":170,"context_line":"  than physical ports."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic ports"},{"line_number":173,"context_line":"  and portgroups into a network configuration file that can be injected into"},{"line_number":174,"context_line":"  the config drive, to configure the sub-interfaces and bonded nics. This"},{"line_number":175,"context_line":"  configuration should also contain all physical nic settings such as MTU etc."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_fa6f3ac1","line":172,"in_reply_to":"1ac06dbe_b3a19696","updated":"2016-08-24 09:47:36.000000000","message":"Not to provide the support from the Ironic side, but to handle the data on the user image side I think we need to add some code to cloud-init to get the full support. I don\u0027t think this needs to be part of this spec, as there is an alternative, simple-init/glean, which can handle this to start with.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"45ff6233020cd258d5b1ad2065811aa97e9bae53","unresolved":false,"context_lines":[{"line_number":169,"context_line":"  greater than number of physical networks, unless there are more trunk ports"},{"line_number":170,"context_line":"  than physical ports."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic ports"},{"line_number":173,"context_line":"  and portgroups into a network configuration file that can be injected into"},{"line_number":174,"context_line":"  the config drive, to configure the sub-interfaces and bonded nics. This"},{"line_number":175,"context_line":"  configuration should also contain all physical nic settings such as MTU etc."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_e02d80fe","line":172,"in_reply_to":"1ac06dbe_d01cb1c3","updated":"2016-08-25 09:26:32.000000000","message":"Done","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"ff9649142178fa8e94625451ff42a8d84f617810","unresolved":false,"context_lines":[{"line_number":169,"context_line":"  greater than number of physical networks, unless there are more trunk ports"},{"line_number":170,"context_line":"  than physical ports."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"- generate_config_drive, needs to process the neutron vifs and the Ironic ports"},{"line_number":173,"context_line":"  and portgroups into a network configuration file that can be injected into"},{"line_number":174,"context_line":"  the config drive, to configure the sub-interfaces and bonded nics. This"},{"line_number":175,"context_line":"  configuration should also contain all physical nic settings such as MTU etc."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_d01cb1c3","line":172,"in_reply_to":"1ac06dbe_fa6f3ac1","updated":"2016-08-24 21:48:54.000000000","message":"OK, thanks. Do you think it\u0027s worth putting that in the spec? It won\u0027t affect my vote either way, just curious.","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":192,"context_line":"---------------------"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"The network connectivity for this instance relies on configuration inside the"},{"line_number":195,"context_line":"end users instance, this configuration can not be protected by Ironic, so it is"},{"line_number":196,"context_line":"possible that a user could, if they changed the configuration, break that"},{"line_number":197,"context_line":"instances connectivity to the neutron networks."},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_53e022cd","line":195,"range":{"start_line":195,"start_character":4,"end_line":195,"end_character":9},"updated":"2016-08-23 18:49:33.000000000","message":"nit: s/users/user\u0027s","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":192,"context_line":"---------------------"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"The network connectivity for this instance relies on configuration inside the"},{"line_number":195,"context_line":"end users instance, this configuration can not be protected by Ironic, so it is"},{"line_number":196,"context_line":"possible that a user could, if they changed the configuration, break that"},{"line_number":197,"context_line":"instances connectivity to the neutron networks."},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_3a93925c","line":195,"range":{"start_line":195,"start_character":4,"end_line":195,"end_character":9},"in_reply_to":"1ac06dbe_53e022cd","updated":"2016-08-24 09:47:36.000000000","message":"Done","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":194,"context_line":"The network connectivity for this instance relies on configuration inside the"},{"line_number":195,"context_line":"end users instance, this configuration can not be protected by Ironic, so it is"},{"line_number":196,"context_line":"possible that a user could, if they changed the configuration, break that"},{"line_number":197,"context_line":"instances connectivity to the neutron networks."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"Scalability impact"},{"line_number":200,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_f3be6eac","line":197,"range":{"start_line":197,"start_character":0,"end_line":197,"end_character":9},"updated":"2016-08-23 18:49:33.000000000","message":"nit: s/instances/instance\u0027s","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":194,"context_line":"The network connectivity for this instance relies on configuration inside the"},{"line_number":195,"context_line":"end users instance, this configuration can not be protected by Ironic, so it is"},{"line_number":196,"context_line":"possible that a user could, if they changed the configuration, break that"},{"line_number":197,"context_line":"instances connectivity to the neutron networks."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"Scalability impact"},{"line_number":200,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_9a9e0661","line":197,"range":{"start_line":197,"start_character":0,"end_line":197,"end_character":9},"in_reply_to":"1ac06dbe_f3be6eac","updated":"2016-08-24 09:47:36.000000000","message":"Done","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"189f35e0d7530a5ca232381d16cbcc83bcd9cc0c","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"* trunk_port_id and its usage should be documented."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"* The examples above showing what happends and when should be included in the"},{"line_number":267,"context_line":"  documentation."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_d3d412ed","line":266,"range":{"start_line":266,"start_character":34,"end_line":266,"end_character":42},"updated":"2016-08-23 18:49:33.000000000","message":"nit: s/happends/happens","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"91e72b846785aac97b0dd3b4fa15e762b81ceda2","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"* trunk_port_id and its usage should be documented."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"* The examples above showing what happends and when should be included in the"},{"line_number":267,"context_line":"  documentation."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ac06dbe_5a980e78","line":266,"range":{"start_line":266,"start_character":34,"end_line":266,"end_character":42},"in_reply_to":"1ac06dbe_d3d412ed","updated":"2016-08-24 09:47:36.000000000","message":"Done","commit_id":"3f192528aea667120b131aa4daa34c0f4f8b2ca7"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposed change is to allow multiple neutron ports to be assigned to each"},{"line_number":39,"context_line":"ironic port or portgroup, by changing the vif_port_id field, to vif_port_ids,"},{"line_number":40,"context_line":"making it a list."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"We will also make mac_for_instance a no-op in the nova driver, this unbinds the"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_cb8ed5cf","line":39,"updated":"2016-10-18 21:56:58.000000000","message":"in port.extra or portgroup.extra\n\nmaybe .. by renaming the \u0027vif_port_id\u0027 key to \u0027vif_port_ids\u0027 key, and changing the value to be a list of IDs.","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"85ab54fe805f7e61f257afab53792cf5259e598b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposed change is to allow multiple neutron ports to be assigned to each"},{"line_number":39,"context_line":"ironic port or portgroup, by changing the vif_port_id field, to vif_port_ids,"},{"line_number":40,"context_line":"making it a list."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"We will also make mac_for_instance a no-op in the nova driver, this unbinds the"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_cd25f4ae","line":39,"in_reply_to":"fa6399be_cb8ed5cf","updated":"2016-10-19 11:02:29.000000000","message":"Done","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"ironic port or portgroup, by changing the vif_port_id field, to vif_port_ids,"},{"line_number":40,"context_line":"making it a list."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"We will also make mac_for_instance a no-op in the nova driver, this unbinds the"},{"line_number":43,"context_line":"neutron ports from the physical mac addresses at create time. We do this"},{"line_number":44,"context_line":"because we\u0027ll be allowing more neutron ports than physical mac addresses, and"},{"line_number":45,"context_line":"continuing to use macs_for_instance means we lose control of which neutron port"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_0b660d29","line":42,"updated":"2016-10-18 21:56:58.000000000","message":"s/mac_for_instance/nova.virt.ironic.driver.IronicDriver.macs_for_instance()/","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"making it a list."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"We will also make mac_for_instance a no-op in the nova driver, this unbinds the"},{"line_number":43,"context_line":"neutron ports from the physical mac addresses at create time. We do this"},{"line_number":44,"context_line":"because we\u0027ll be allowing more neutron ports than physical mac addresses, and"},{"line_number":45,"context_line":"continuing to use macs_for_instance means we lose control of which neutron port"},{"line_number":46,"context_line":"ends up on which nic. The network driver in ironic can handle the ports as it"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_2b12f162","line":43,"updated":"2016-10-18 21:56:58.000000000","message":"macs_for_instance() just lists the MAC addresses of an instance. How can making it a noop, unbind the neutron ports etc?\n\nby \u0027create\u0027 time, you mean creation of an instance, not creation/enrollment of a bm node, right?","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"85ab54fe805f7e61f257afab53792cf5259e598b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"making it a list."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"We will also make mac_for_instance a no-op in the nova driver, this unbinds the"},{"line_number":43,"context_line":"neutron ports from the physical mac addresses at create time. We do this"},{"line_number":44,"context_line":"because we\u0027ll be allowing more neutron ports than physical mac addresses, and"},{"line_number":45,"context_line":"continuing to use macs_for_instance means we lose control of which neutron port"},{"line_number":46,"context_line":"ends up on which nic. The network driver in ironic can handle the ports as it"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_2d5af02a","line":43,"in_reply_to":"fa6399be_2b12f162","updated":"2016-10-19 11:02:29.000000000","message":"These changes are now covered by the attach/detach spec so I\u0027ve removed this paragraph.","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"will create a neutron trunk with the neutron ports attached as subports for"},{"line_number":52,"context_line":"each ironic port and then bind those trunk ports using the local link"},{"line_number":53,"context_line":"information from each ironic port. The neutron ml2 drivers should use this"},{"line_number":54,"context_line":"information to configure the allowed vlans on what should will now be a trunk"},{"line_number":55,"context_line":"port down to the BM node."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The instance side configuration will be created on top of the physical"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_f62540ae","line":54,"updated":"2016-10-18 21:56:58.000000000","message":"s/should// ?","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"drive. The format of this configuration is defined by the nova spec [1]_."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"These changes will not affect the neutron port to physical port assignment"},{"line_number":68,"context_line":"order, this will remain non-deterministic as it in the existing functionality."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Examples"},{"line_number":71,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_d62f5c86","line":68,"updated":"2016-10-18 21:56:58.000000000","message":"s/it in/it is in/ ?","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":133,"context_line":"reference:"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"- Change vif_port_id to vif_port_ids list"},{"line_number":136,"context_line":"- Add trunk_port_id field"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"State Machine Impact"},{"line_number":139,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_76ddb06f","line":136,"updated":"2016-10-18 21:56:58.000000000","message":"are you adding these to the object\u0027s \u0027extra\u0027 field?","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"85ab54fe805f7e61f257afab53792cf5259e598b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"reference:"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"- Change vif_port_id to vif_port_ids list"},{"line_number":136,"context_line":"- Add trunk_port_id field"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"State Machine Impact"},{"line_number":139,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_6d6308de","line":136,"in_reply_to":"fa6399be_76ddb06f","updated":"2016-10-19 11:02:29.000000000","message":"Done","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":144,"context_line":"---------------"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"None, because the port fields we are modifying exist in the port extra"},{"line_number":147,"context_line":"dictionary which is arbitrary."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Client (CLI) impact"},{"line_number":150,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_36ca58a2","line":147,"updated":"2016-10-18 21:56:58.000000000","message":"Do we still think they belong in port.extra, as opposed to creating new port.fields for them?","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"85ab54fe805f7e61f257afab53792cf5259e598b","unresolved":false,"context_lines":[{"line_number":144,"context_line":"---------------"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"None, because the port fields we are modifying exist in the port extra"},{"line_number":147,"context_line":"dictionary which is arbitrary."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Client (CLI) impact"},{"line_number":150,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_4d964495","line":147,"in_reply_to":"fa6399be_36ca58a2","updated":"2016-10-19 11:02:29.000000000","message":"Yes, because the fields I\u0027m modifying here are to do with one particular network interface implementation, neutron, other network interface implementations might either not support trunking like this or need to handle their mapping information completely differently from this.","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":178,"context_line":"- generate_config_drive, needs to process the neutron vifs and the ironic ports"},{"line_number":179,"context_line":"  and portgroups into a network configuration file that can be injected into"},{"line_number":180,"context_line":"  the config drive, to configure the sub-interfaces and bonded nics. This"},{"line_number":181,"context_line":"  configuration should also contain all physical nic settings such as MTU etc."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"Ramdisk impact"},{"line_number":184,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_d6b91c17","line":181,"updated":"2016-10-18 21:56:58.000000000","message":"This is going to be in a nova blueprint, right?","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"85ab54fe805f7e61f257afab53792cf5259e598b","unresolved":false,"context_lines":[{"line_number":178,"context_line":"- generate_config_drive, needs to process the neutron vifs and the ironic ports"},{"line_number":179,"context_line":"  and portgroups into a network configuration file that can be injected into"},{"line_number":180,"context_line":"  the config drive, to configure the sub-interfaces and bonded nics. This"},{"line_number":181,"context_line":"  configuration should also contain all physical nic settings such as MTU etc."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"Ramdisk impact"},{"line_number":184,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_6de22803","line":181,"in_reply_to":"fa6399be_d6b91c17","updated":"2016-10-19 11:02:29.000000000","message":"Yes, however I need to wait for the existing portgroups work to be completed to assess the amount of further work required to implement this.","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":191,"context_line":"As the switch port configuration for this BM node is now trunk, if the switch"},{"line_number":192,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":193,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":194,"context_line":"manually tag packets to VLANs that don’t belong to them and breaking"},{"line_number":195,"context_line":"inter-tenant separation. *This is down to the neutron ml2 mechanism to ensure.*"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Other end user impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_764bf02b","line":194,"updated":"2016-10-18 21:56:58.000000000","message":"s/breaking/break/","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"85ab54fe805f7e61f257afab53792cf5259e598b","unresolved":false,"context_lines":[{"line_number":191,"context_line":"As the switch port configuration for this BM node is now trunk, if the switch"},{"line_number":192,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":193,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":194,"context_line":"manually tag packets to VLANs that don’t belong to them and breaking"},{"line_number":195,"context_line":"inter-tenant separation. *This is down to the neutron ml2 mechanism to ensure.*"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Other end user impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_eda398af","line":194,"in_reply_to":"fa6399be_764bf02b","updated":"2016-10-19 11:02:29.000000000","message":"Done","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":192,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":193,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":194,"context_line":"manually tag packets to VLANs that don’t belong to them and breaking"},{"line_number":195,"context_line":"inter-tenant separation. *This is down to the neutron ml2 mechanism to ensure.*"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Other end user impact"},{"line_number":198,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_7672107e","line":195,"updated":"2016-10-18 21:56:58.000000000","message":"Not sure, maybe you mean s/This is down/This is up/ ? (Or maybe you use \u0027down\u0027 in your neck of the woods...)","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"85ab54fe805f7e61f257afab53792cf5259e598b","unresolved":false,"context_lines":[{"line_number":192,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":193,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":194,"context_line":"manually tag packets to VLANs that don’t belong to them and breaking"},{"line_number":195,"context_line":"inter-tenant separation. *This is down to the neutron ml2 mechanism to ensure.*"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Other end user impact"},{"line_number":198,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_ad9a806c","line":195,"in_reply_to":"fa6399be_7672107e","updated":"2016-10-19 11:02:29.000000000","message":"Done","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"fdbd5e826c028a75fabe2febda8889d1b573aa8c","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"* ironic Interface Attach/Detach API:"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  - https://review.openstack.org/#/c/317636/"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"* neutron Trunk Support:"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a89bdaa_a8d5f1b9","line":251,"updated":"2016-09-07 05:02:28.000000000","message":"How is this spec related?\nShould Attach/Detach API be merged previously?\nWill the Attach API accept multiple interface IDs (vif_port_ids)?","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"0288670418e7dddc3a9f62081b05339eb7b6f13e","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"* ironic Interface Attach/Detach API:"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  - https://review.openstack.org/#/c/317636/"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"* neutron Trunk Support:"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3a98d1f4_8a70c50c","line":251,"in_reply_to":"9a89bdaa_6ef3ec0a","updated":"2016-10-03 14:14:24.000000000","message":"Thanks.\nI understood ironic maps vifs to ports, then nova gets the result by seeing extra/vif_port_ids.","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"c7439f4e3776d55256afba700b8fa5bb24dbd6a4","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"* ironic Interface Attach/Detach API:"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"  - https://review.openstack.org/#/c/317636/"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"* neutron Trunk Support:"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9a89bdaa_6ef3ec0a","line":251,"in_reply_to":"9a89bdaa_a8d5f1b9","updated":"2016-09-12 12:42:27.000000000","message":"This should be merged before this spec\u0027s code. This will remove much of the logic from the Nova virt driver because it will call attach_interface once each for all vifs requested by the user, and then all logic for ironic port to vif mapping will be handled on the Ironic side in the plugable network interfaces.","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"* neutron Trunk Support:"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"  - https://review.openstack.org/#/c/213644/1/specs/mitaka/approved/trunk-port.rst"},{"line_number":256,"context_line":"  - https://review.openstack.org/#/c/243786/11/specs/mitaka/vlan-aware-vms.rst"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_b61ae815","line":255,"updated":"2016-10-18 21:56:58.000000000","message":"this is a nova spec that has been abandoned?","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"85ab54fe805f7e61f257afab53792cf5259e598b","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"* neutron Trunk Support:"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"  - https://review.openstack.org/#/c/213644/1/specs/mitaka/approved/trunk-port.rst"},{"line_number":256,"context_line":"  - https://review.openstack.org/#/c/243786/11/specs/mitaka/vlan-aware-vms.rst"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_add600ef","line":255,"in_reply_to":"fa6399be_b61ae815","updated":"2016-10-19 11:02:29.000000000","message":"It seems they abandoned it in favor of continuing the discussion on the neutron spec.","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":253,"context_line":"* neutron Trunk Support:"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"  - https://review.openstack.org/#/c/213644/1/specs/mitaka/approved/trunk-port.rst"},{"line_number":256,"context_line":"  - https://review.openstack.org/#/c/243786/11/specs/mitaka/vlan-aware-vms.rst"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"Testing"},{"line_number":259,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_36b418f1","line":256,"updated":"2016-10-18 21:56:58.000000000","message":"this neutron spec has merged: http://specs.openstack.org/openstack/neutron-specs/specs/newton/vlan-aware-vms.html\n\nDo you know what the status is wrt the code?","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"85ab54fe805f7e61f257afab53792cf5259e598b","unresolved":false,"context_lines":[{"line_number":253,"context_line":"* neutron Trunk Support:"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"  - https://review.openstack.org/#/c/213644/1/specs/mitaka/approved/trunk-port.rst"},{"line_number":256,"context_line":"  - https://review.openstack.org/#/c/243786/11/specs/mitaka/vlan-aware-vms.rst"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"Testing"},{"line_number":259,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_8df21c99","line":256,"in_reply_to":"fa6399be_36b418f1","updated":"2016-10-19 11:02:29.000000000","message":"As far as I know the feature/API we require merged in Newton, so I hope to tackle this during Ocata","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a017b73d3a3eb972248f8af3445d3c80883ab1f","unresolved":false,"context_lines":[{"line_number":265,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"Support should be added so that if a vif_port_id is added to a port or"},{"line_number":268,"context_line":"portgroup it is processed as if vif_port_ids has a length of one."},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Documentation Impact"},{"line_number":271,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_36825801","line":268,"updated":"2016-10-18 21:56:58.000000000","message":"We are basically deprecating vif_port_id, right? What if there are people using this key, since it is in port.extra, which is user facing, and I *thought* was meant for users to use.\n\n\u0027vif_port_id\u0027 key may already exist in some port objects -- are you going to migrate them to \u0027vif_port_ids\u0027 ? I think we should spell out the migration/deprecation plan.","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"85ab54fe805f7e61f257afab53792cf5259e598b","unresolved":false,"context_lines":[{"line_number":265,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"Support should be added so that if a vif_port_id is added to a port or"},{"line_number":268,"context_line":"portgroup it is processed as if vif_port_ids has a length of one."},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Documentation Impact"},{"line_number":271,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa6399be_10262368","line":268,"in_reply_to":"fa6399be_36825801","updated":"2016-10-19 11:02:29.000000000","message":"Done","commit_id":"70bb549c41412bd29faec5925767c1cff863a9ba"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"b352b09e08f79f4d16227a77545ad70bdbc1a1e3","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://bugs.launchpad.net/ironic/+bug/1543584"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"ironic neutron integration enabled baremetal nodes with N physical network"},{"line_number":14,"context_line":"interfaces to connect to N neutron networks. This spec attempts to unbind the"},{"line_number":15,"context_line":"number of neutron networks from the physical infrastructure by making the"},{"line_number":16,"context_line":"baremetal instances VLAN aware, so multiple neutron networks can be carried by"},{"line_number":17,"context_line":"the same physical interface."}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba5da102_b582ecc6","line":14,"range":{"start_line":14,"start_character":67,"end_line":14,"end_character":73},"updated":"2016-11-07 03:35:55.000000000","message":"bind ?","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"222ebbec1763d6fbf01b5289fa512f62fa85b873","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://bugs.launchpad.net/ironic/+bug/1543584"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"ironic neutron integration enabled baremetal nodes with N physical network"},{"line_number":14,"context_line":"interfaces to connect to N neutron networks. This spec attempts to unbind the"},{"line_number":15,"context_line":"number of neutron networks from the physical infrastructure by making the"},{"line_number":16,"context_line":"baremetal instances VLAN aware, so multiple neutron networks can be carried by"},{"line_number":17,"context_line":"the same physical interface."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da36d5c6_2caa45d5","line":14,"updated":"2017-02-20 02:52:19.000000000","message":"yeah, I think \"unbind\" is right","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://bugs.launchpad.net/ironic/+bug/1543584"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"ironic neutron integration enabled baremetal nodes with N physical network"},{"line_number":14,"context_line":"interfaces to connect to N neutron networks. This spec attempts to unbind the"},{"line_number":15,"context_line":"number of neutron networks from the physical infrastructure by making the"},{"line_number":16,"context_line":"baremetal instances VLAN aware, so multiple neutron networks can be carried by"},{"line_number":17,"context_line":"the same physical interface."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_bad4cd47","line":14,"range":{"start_line":14,"start_character":67,"end_line":14,"end_character":73},"in_reply_to":"ba5da102_b582ecc6","updated":"2016-11-07 09:56:44.000000000","message":"-1; should remain \"unbind\" imo","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"58dc227fbb5cc6e956bf99d7f4cff40773dfc3d1","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Having the number of tenant networks that an instance can connect to restricted"},{"line_number":23,"context_line":"by the physical infrastructure presents potential problems for cloud operators"},{"line_number":24,"context_line":"and cloud users. Cloud Operators have to provide physical infrastructure that"},{"line_number":25,"context_line":"can support the number of neutron networks their users require for particular"},{"line_number":26,"context_line":"applications, this can range from 1 to 50+ depending on the application being"},{"line_number":27,"context_line":"deployed, this is expensive and time consuming to configure, and only"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_a9c71b63","line":24,"updated":"2016-12-07 17:30:41.000000000","message":"/O/o/ (to be consistent with previous line)","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"58dc227fbb5cc6e956bf99d7f4cff40773dfc3d1","unresolved":false,"context_lines":[{"line_number":23,"context_line":"by the physical infrastructure presents potential problems for cloud operators"},{"line_number":24,"context_line":"and cloud users. Cloud Operators have to provide physical infrastructure that"},{"line_number":25,"context_line":"can support the number of neutron networks their users require for particular"},{"line_number":26,"context_line":"applications, this can range from 1 to 50+ depending on the application being"},{"line_number":27,"context_line":"deployed, this is expensive and time consuming to configure, and only"},{"line_number":28,"context_line":"complicates the cloud experience."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_09080f91","line":26,"updated":"2016-12-07 17:30:41.000000000","message":"what is the actual limit? If there is no strict limit, maybe it\u0027s a good idea to refactor the sentence to just mean it\u0027s about multiple networks? \nAlso, this is incredibly long sentence. Maybe split it to couple of separate ones?","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"e388d8f9227bec28a4a5e777010f61c203545416","unresolved":false,"context_lines":[{"line_number":32,"context_line":"clouds is unlikely to work as expected, as some providers may have hardware"},{"line_number":33,"context_line":"with less connectivity options than others."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposed change is to allow multiple neutron ports to be assigned to each"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_1d72827b","line":35,"updated":"2016-12-05 13:42:15.000000000","message":"I have a huge concern about this spec and its neediness at this time when vlan-aware-vms are implemented on Neutron side [0]\n\nIn two words how it works, details in openstack user guide [1]:\n\n1. User create a trunk port which allows to setup dependencies between parent port and subports. (It is just a logical representation of the trunk, it stores information about allowed vlans/native vlan on the physycal port.)\n\n2. User boot instance with --nic port-id \u003cid-of-parrent-port\u003e\nWhen user boot instance parent port-id is used, not trunk port id.\n\n3. Nova save parent port-id to ironic port extra/internal_info\n\n4. Neutron ML2 driver uses parent port trunk_details metadata (\n| trunk_details         | {\"trunk_id\": \"cc6489c7-577b-4c98-b994-ee224ac858ac\", \"sub_ports\": [{\"segmentation_id\": 102, \"port_id\": \"4762e753-ae0b-4d44-9f9e-057dd595e70e\",                    |\n|                       | \"segmentation_type\": \"vlan\", \"mac_address\": \"fa:16:3e:06:b3:84\"}]}                                                                                                |\n) to configure trunk on the switch correctly. Also this information is used to generate config drive to configure vlans on instance correctly.\n\n[0] https://blueprints.launchpad.net/neutron/+spec/vlan-aware-vms\n[1] https://review.openstack.org/#/c/361776/15/doc/networking-guide/source/config-trunking.rst\n[2] https://etherpad.openstack.org/p/trunk-api-dump-newton\n[3] http://paste.openstack.org/show/591426/\n\nExample of neutron trunk extension commands may be found at [2] and [3]\n\nMight be I\u0027m missing something but it looks that Ironic is not right place to store trunk (vlan-aware) metadata. It should be done on SND provider side (like Neutron).","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"f61e67c1c860e343f3e03455c38c59725612bda4","unresolved":false,"context_lines":[{"line_number":32,"context_line":"clouds is unlikely to work as expected, as some providers may have hardware"},{"line_number":33,"context_line":"with less connectivity options than others."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposed change is to allow multiple neutron ports to be assigned to each"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_3df01ec9","line":35,"in_reply_to":"3a71b18c_1d72827b","updated":"2016-12-05 13:51:12.000000000","message":"This spec is using all of that functionality, however it adds the additional facility of being able either create a trunk for the user if the baremetal machine doesn\u0027t have enough physical NICs to support the requested connectivity, or for vendor specific network interfaces to create new NICs in their hardware. Checkout the different nova boot scenarios below and I talk about all the different user experience permutations. I do need to revise this spec a little now we\u0027ve finalised the attach/detach spec.","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f1790675f410ea0466838f90dfcddcaf3ea42492","unresolved":false,"context_lines":[{"line_number":32,"context_line":"clouds is unlikely to work as expected, as some providers may have hardware"},{"line_number":33,"context_line":"with less connectivity options than others."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposed change is to allow multiple neutron ports to be assigned to each"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_7301e504","line":35,"in_reply_to":"3a71b18c_3df01ec9","updated":"2016-12-05 14:17:20.000000000","message":"So if we are going to create a trunk port in neutron on the fly depending on the number of requested ports and number of ports that physycal node has. Why we need to convert vif_port_id to list? We should save uuid of the parent neutron port right?\n\nUser image may not be vlan aware at all, are we going to specify it somehow? Otherwise enabling trunk to such instance with lead to non accessible server.","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposed change is to allow multiple neutron ports to be assigned to each"},{"line_number":39,"context_line":"ironic port or portgroup, by renaming the \u0027vif_port_id\u0027 field in"},{"line_number":40,"context_line":"port/portgroup.internal_info, to \u0027vif_port_ids\u0027, making it a list."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"With the list of neutron ports attached to each port or portgroup in ironic, we"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_faa9e5e0","line":39,"range":{"start_line":39,"start_character":42,"end_line":39,"end_character":55},"updated":"2016-11-07 09:56:44.000000000","message":"``vif_port_id``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposed change is to allow multiple neutron ports to be assigned to each"},{"line_number":39,"context_line":"ironic port or portgroup, by renaming the \u0027vif_port_id\u0027 field in"},{"line_number":40,"context_line":"port/portgroup.internal_info, to \u0027vif_port_ids\u0027, making it a list."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"With the list of neutron ports attached to each port or portgroup in ironic, we"},{"line_number":43,"context_line":"will create a neutron trunk with the neutron ports attached as subports for"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_fa800549","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":28},"updated":"2016-11-07 09:56:44.000000000","message":"``port/portgroup.internal_info`` to ``vif_port_ids``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"222ebbec1763d6fbf01b5289fa512f62fa85b873","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The proposed change is to allow multiple neutron ports to be assigned to each"},{"line_number":39,"context_line":"ironic port or portgroup, by renaming the \u0027vif_port_id\u0027 field in"},{"line_number":40,"context_line":"port/portgroup.internal_info, to \u0027vif_port_ids\u0027, making it a list."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"With the list of neutron ports attached to each port or portgroup in ironic, we"},{"line_number":43,"context_line":"will create a neutron trunk with the neutron ports attached as subports for"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da36d5c6_4caf79e3","line":40,"updated":"2017-02-20 02:52:19.000000000","message":"let\u0027s finally split it into its own field please.. otherwise backward compatibility may be too funny, and we cannot use microversioning properly.","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"b7b15d8e61f638e41efb098be88a72eb786355e6","unresolved":false,"context_lines":[{"line_number":40,"context_line":"port/portgroup.internal_info, to \u0027vif_port_ids\u0027, making it a list."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"With the list of neutron ports attached to each port or portgroup in ironic, we"},{"line_number":43,"context_line":"will create a neutron trunk with the neutron ports attached as subports for"},{"line_number":44,"context_line":"each ironic port and then bind those trunk ports using the local link"},{"line_number":45,"context_line":"information from each ironic port. The neutron ml2 drivers should use this"},{"line_number":46,"context_line":"information to configure the allowed vlans on what will now be a trunk port"},{"line_number":47,"context_line":"down to the BM node."}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_73381a3e","line":44,"range":{"start_line":43,"start_character":37,"end_line":44,"end_character":16},"updated":"2016-12-05 05:01:03.000000000","message":"I think the wording is bit backwards. Multiple neutron subports will map to one physical Ironic port.","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"With the list of neutron ports attached to each port or portgroup in ironic, we"},{"line_number":43,"context_line":"will create a neutron trunk with the neutron ports attached as subports for"},{"line_number":44,"context_line":"each ironic port and then bind those trunk ports using the local link"},{"line_number":45,"context_line":"information from each ironic port. The neutron ml2 drivers should use this"},{"line_number":46,"context_line":"information to configure the allowed vlans on what will now be a trunk port"},{"line_number":47,"context_line":"down to the BM node."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_da3a61e7","line":45,"range":{"start_line":45,"start_character":47,"end_line":45,"end_character":50},"updated":"2016-11-07 09:56:44.000000000","message":"ML2","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"222ebbec1763d6fbf01b5289fa512f62fa85b873","unresolved":false,"context_lines":[{"line_number":42,"context_line":"With the list of neutron ports attached to each port or portgroup in ironic, we"},{"line_number":43,"context_line":"will create a neutron trunk with the neutron ports attached as subports for"},{"line_number":44,"context_line":"each ironic port and then bind those trunk ports using the local link"},{"line_number":45,"context_line":"information from each ironic port. The neutron ml2 drivers should use this"},{"line_number":46,"context_line":"information to configure the allowed vlans on what will now be a trunk port"},{"line_number":47,"context_line":"down to the BM node."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da36d5c6_6cac3dee","line":45,"updated":"2017-02-20 02:52:19.000000000","message":"are there any ML2 drivers supporting it already?","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The instance side configuration will be created on top of the physical"},{"line_number":50,"context_line":"interfaces, for neutron ports mapped to a normal ironic port we will create a"},{"line_number":51,"context_line":"vlan interface for each neutron port on top of the physical interface,"},{"line_number":52,"context_line":"configured with the correct vlan and mac address to match the neutron network"},{"line_number":53,"context_line":"and port. For neutron ports mapped to an ironic portgroup, we will first bond"},{"line_number":54,"context_line":"the physical interfaces together, creating a bond interface, then create the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_9a170954","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":4},"updated":"2016-11-07 09:56:44.000000000","message":"VLAN","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"The instance side configuration will be created on top of the physical"},{"line_number":50,"context_line":"interfaces, for neutron ports mapped to a normal ironic port we will create a"},{"line_number":51,"context_line":"vlan interface for each neutron port on top of the physical interface,"},{"line_number":52,"context_line":"configured with the correct vlan and mac address to match the neutron network"},{"line_number":53,"context_line":"and port. For neutron ports mapped to an ironic portgroup, we will first bond"},{"line_number":54,"context_line":"the physical interfaces together, creating a bond interface, then create the"},{"line_number":55,"context_line":"vlan interfaces on top of the bond interface, in the same way as we do for a"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_5a065121","line":52,"range":{"start_line":52,"start_character":37,"end_line":52,"end_character":40},"updated":"2016-11-07 09:56:44.000000000","message":"MAC","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"The instance side configuration will be created on top of the physical"},{"line_number":50,"context_line":"interfaces, for neutron ports mapped to a normal ironic port we will create a"},{"line_number":51,"context_line":"vlan interface for each neutron port on top of the physical interface,"},{"line_number":52,"context_line":"configured with the correct vlan and mac address to match the neutron network"},{"line_number":53,"context_line":"and port. For neutron ports mapped to an ironic portgroup, we will first bond"},{"line_number":54,"context_line":"the physical interfaces together, creating a bond interface, then create the"},{"line_number":55,"context_line":"vlan interfaces on top of the bond interface, in the same way as we do for a"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_3a099d32","line":52,"range":{"start_line":52,"start_character":28,"end_line":52,"end_character":32},"updated":"2016-11-07 09:56:44.000000000","message":"VLAN","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"interfaces, for neutron ports mapped to a normal ironic port we will create a"},{"line_number":51,"context_line":"vlan interface for each neutron port on top of the physical interface,"},{"line_number":52,"context_line":"configured with the correct vlan and mac address to match the neutron network"},{"line_number":53,"context_line":"and port. For neutron ports mapped to an ironic portgroup, we will first bond"},{"line_number":54,"context_line":"the physical interfaces together, creating a bond interface, then create the"},{"line_number":55,"context_line":"vlan interfaces on top of the bond interface, in the same way as we do for a"},{"line_number":56,"context_line":"normal ironic port. The instance will receive this configuration via the config"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_bd03e70c","line":53,"range":{"start_line":53,"start_character":73,"end_line":53,"end_character":77},"updated":"2016-11-07 09:56:44.000000000","message":"bind","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"58dc227fbb5cc6e956bf99d7f4cff40773dfc3d1","unresolved":false,"context_lines":[{"line_number":50,"context_line":"interfaces, for neutron ports mapped to a normal ironic port we will create a"},{"line_number":51,"context_line":"vlan interface for each neutron port on top of the physical interface,"},{"line_number":52,"context_line":"configured with the correct vlan and mac address to match the neutron network"},{"line_number":53,"context_line":"and port. For neutron ports mapped to an ironic portgroup, we will first bond"},{"line_number":54,"context_line":"the physical interfaces together, creating a bond interface, then create the"},{"line_number":55,"context_line":"vlan interfaces on top of the bond interface, in the same way as we do for a"},{"line_number":56,"context_line":"normal ironic port. The instance will receive this configuration via the config"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_c94a97ac","line":53,"range":{"start_line":53,"start_character":73,"end_line":53,"end_character":77},"in_reply_to":"3a71b18c_d31e4eba","updated":"2016-12-07 17:30:41.000000000","message":"I think using impersonal verbs looks better in specs.","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"b7b15d8e61f638e41efb098be88a72eb786355e6","unresolved":false,"context_lines":[{"line_number":50,"context_line":"interfaces, for neutron ports mapped to a normal ironic port we will create a"},{"line_number":51,"context_line":"vlan interface for each neutron port on top of the physical interface,"},{"line_number":52,"context_line":"configured with the correct vlan and mac address to match the neutron network"},{"line_number":53,"context_line":"and port. For neutron ports mapped to an ironic portgroup, we will first bond"},{"line_number":54,"context_line":"the physical interfaces together, creating a bond interface, then create the"},{"line_number":55,"context_line":"vlan interfaces on top of the bond interface, in the same way as we do for a"},{"line_number":56,"context_line":"normal ironic port. The instance will receive this configuration via the config"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_d31e4eba","line":53,"range":{"start_line":53,"start_character":73,"end_line":53,"end_character":77},"in_reply_to":"9a629dbe_bd03e70c","updated":"2016-12-05 05:01:03.000000000","message":"a bond interface is being referred here. So, I think bond is correct","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":52,"context_line":"configured with the correct vlan and mac address to match the neutron network"},{"line_number":53,"context_line":"and port. For neutron ports mapped to an ironic portgroup, we will first bond"},{"line_number":54,"context_line":"the physical interfaces together, creating a bond interface, then create the"},{"line_number":55,"context_line":"vlan interfaces on top of the bond interface, in the same way as we do for a"},{"line_number":56,"context_line":"normal ironic port. The instance will receive this configuration via the config"},{"line_number":57,"context_line":"drive. The format of this configuration is defined by the nova spec [1]_."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_3d10b74e","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":4},"updated":"2016-11-07 09:56:44.000000000","message":"VLAN","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"58dc227fbb5cc6e956bf99d7f4cff40773dfc3d1","unresolved":false,"context_lines":[{"line_number":53,"context_line":"and port. For neutron ports mapped to an ironic portgroup, we will first bond"},{"line_number":54,"context_line":"the physical interfaces together, creating a bond interface, then create the"},{"line_number":55,"context_line":"vlan interfaces on top of the bond interface, in the same way as we do for a"},{"line_number":56,"context_line":"normal ironic port. The instance will receive this configuration via the config"},{"line_number":57,"context_line":"drive. The format of this configuration is defined by the nova spec [1]_."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"These changes will not affect the neutron port to physical port assignment"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_a9e47bac","line":56,"updated":"2016-12-07 17:30:41.000000000","message":"normal \u003d physical?","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"222ebbec1763d6fbf01b5289fa512f62fa85b873","unresolved":false,"context_lines":[{"line_number":54,"context_line":"the physical interfaces together, creating a bond interface, then create the"},{"line_number":55,"context_line":"vlan interfaces on top of the bond interface, in the same way as we do for a"},{"line_number":56,"context_line":"normal ironic port. The instance will receive this configuration via the config"},{"line_number":57,"context_line":"drive. The format of this configuration is defined by the nova spec [1]_."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"These changes will not affect the neutron port to physical port assignment"},{"line_number":60,"context_line":"order, this will remain non-deterministic as it is the existing functionality."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da36d5c6_8cb97131","line":57,"updated":"2017-02-20 02:52:19.000000000","message":"so, it won\u0027t work without a config drive, right?","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"222ebbec1763d6fbf01b5289fa512f62fa85b873","unresolved":false,"context_lines":[{"line_number":57,"context_line":"drive. The format of this configuration is defined by the nova spec [1]_."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"These changes will not affect the neutron port to physical port assignment"},{"line_number":60,"context_line":"order, this will remain non-deterministic as it is the existing functionality."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Examples"},{"line_number":63,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da36d5c6_acb6353b","line":60,"updated":"2017-02-20 02:52:19.000000000","message":"+1 to the question","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"b7b15d8e61f638e41efb098be88a72eb786355e6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"drive. The format of this configuration is defined by the nova spec [1]_."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"These changes will not affect the neutron port to physical port assignment"},{"line_number":60,"context_line":"order, this will remain non-deterministic as it is the existing functionality."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Examples"},{"line_number":63,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_53587e8a","line":60,"range":{"start_line":60,"start_character":24,"end_line":60,"end_character":41},"updated":"2016-12-05 05:01:03.000000000","message":"what do you mean by non-deterministic?","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f6c52c46c3388b917059609204ada859b2a43113","unresolved":false,"context_lines":[{"line_number":57,"context_line":"drive. The format of this configuration is defined by the nova spec [1]_."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"These changes will not affect the neutron port to physical port assignment"},{"line_number":60,"context_line":"order, this will remain non-deterministic as it is the existing functionality."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Examples"},{"line_number":63,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da36d5c6_aea37f9d","line":60,"in_reply_to":"da36d5c6_acb6353b","updated":"2017-02-20 13:32:41.000000000","message":"The mapping is unpredictable. It\u0027s an issue that has been around for a long time and has been the subject of various bugs.\n\nFor further information please read (and review) my spec: https://review.openstack.org/#/c/435781/. While it would not entirely eliminate the non-determinism, it will further constrain the problem.","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"Examples"},{"line_number":63,"context_line":"--------"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"In each of these examples we have an ironic node with 2 physical nics."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"* nova boot --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":68,"context_line":"  --nic net-id\u003d\u003cnet\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_5d4bab59","line":65,"range":{"start_line":65,"start_character":65,"end_line":65,"end_character":69},"updated":"2016-11-07 09:56:44.000000000","message":"NICs","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"222ebbec1763d6fbf01b5289fa512f62fa85b873","unresolved":false,"context_lines":[{"line_number":67,"context_line":"* nova boot --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":68,"context_line":"  --nic net-id\u003d\u003cnet\u003e"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  - Each ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  - ironic will create a neutron trunk for each ironic port, stored in"},{"line_number":73,"context_line":"    trunk_port_id on the ironic port"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da36d5c6_cc81a94f","line":70,"updated":"2017-02-20 02:52:19.000000000","message":"is it detected by number of ironic ports? /me is a bit confused","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f6c52c46c3388b917059609204ada859b2a43113","unresolved":false,"context_lines":[{"line_number":67,"context_line":"* nova boot --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":68,"context_line":"  --nic net-id\u003d\u003cnet\u003e"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  - Each ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  - ironic will create a neutron trunk for each ironic port, stored in"},{"line_number":73,"context_line":"    trunk_port_id on the ironic port"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da36d5c6_aeca9f4d","line":70,"in_reply_to":"da36d5c6_cc81a94f","updated":"2017-02-20 13:32:41.000000000","message":"+1 how will we decide the mapping? Round robin? I could imagine there might be scenarios in which we might want to specify which ports go where.\n\nAlso, there are potential security concerns with trunk ports if ports are accidentally configured with access to more VLANs than they should be. Operators might therefore want to specify the modes of operation that are allowed for an Ironic port (access, trunk, both).\n\nThe mapping could also be constrained by physical network awareness (see https://review.openstack.org/#/c/435781/).","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"58dc227fbb5cc6e956bf99d7f4cff40773dfc3d1","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  - Each ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  - ironic will create a neutron trunk for each ironic port, stored in"},{"line_number":73,"context_line":"    trunk_port_id on the ironic port"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* nova boot --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_e9611313","line":72,"updated":"2016-12-07 17:30:41.000000000","message":"I think, if \"Each\" starts with a capital letter, \u0027ironic\u0027 should start with capital, too","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"eb643df3b74d26af44bc274e7731673da7afa72d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    instance on an ironic node that can support the requested connectivity. If"},{"line_number":103,"context_line":"    every retry fails nova will raise a No Valid Host found error."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"  - Future work for this might include enabling some kind of trunk port"},{"line_number":106,"context_line":"    merging, so that we can fit the connectivity to the number of physical"},{"line_number":107,"context_line":"    ports available."},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_f45e16e8","line":105,"updated":"2016-11-08 14:42:23.000000000","message":"I\u0027d be really curious about a general outline of how this would work, but leaving +1 since it\u0027s out of scope for now","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"In each of these examples we have an ironic node with 2 physical nics."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"* nova boot --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":68,"context_line":"  --nic net-id\u003d\u003cnet\u003e"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  - Each ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  - ironic will create a neutron trunk for each ironic port, stored in"},{"line_number":73,"context_line":"    trunk_port_id on the ironic port"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* nova boot --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e"},{"line_number":76,"context_line":"  --nic port-id\u003d\u003cport\u003e"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  - Each ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - ironic will create a neutron trunk for each ironic port, stored in"},{"line_number":81,"context_line":"    trunk_port_id on the ironic port"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"  - Each port will get a trunk_port_id"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003cport\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"  - One ironic port will get a trunk_port_id"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"  - One ironic port will get a vif_port_ids list"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"  - ironic will create a neutron trunk for the ironic port with the"},{"line_number":94,"context_line":"    vif_port_ids list"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  - Should fail to deploy because there is a trunk port to physical port"},{"line_number":99,"context_line":"    mismatch.  This will raise the same error as we raise today if more neutron"},{"line_number":100,"context_line":"    ports than physical ports are requested, failing the deployment. If this"},{"line_number":101,"context_line":"    happens nova will retry the configured number of times to try to land the"},{"line_number":102,"context_line":"    instance on an ironic node that can support the requested connectivity. If"},{"line_number":103,"context_line":"    every retry fails nova will raise a No Valid Host found error."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"  - Future work for this might include enabling some kind of trunk port"},{"line_number":106,"context_line":"    merging, so that we can fit the connectivity to the number of physical"},{"line_number":107,"context_line":"    ports available."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Alternatives"},{"line_number":110,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_1d6853ba","line":107,"range":{"start_line":67,"start_character":0,"end_line":107,"end_character":20},"updated":"2016-11-07 09:56:44.000000000","message":"Formatting:\n\n::\n  \n  nova boot --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e\n  --nic net-id\u003d\u003cnet\u003e\n\n* each ironic port will get a ``vif_port_ids`` list containing 2 neutron ports\n* ironic will create a neutron trunk for each ironic port, stored in\n  ``trunk_port_id`` on the ironic port\n\n::\n\n  nova boot --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e\n  --nic port-id\u003d\u003cport\u003e\n\n* each ironic port will get a ``vif_port_ids`` list containing 2 neutron ports\n* ironic will create a neutron trunk for each ironic port, stored in\n  ``trunk_port_id`` on the ironic port\n\n::\n  \n  nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e\n\n\n* each port will get a ``trunk_port_id``\n\n::\n\n  nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003cport\u003e --nic net-id\u003d\u003cnet\u003e\n\n* one ironic port will get a ``trunk_port_id``\n* one ironic port will get a ``vif_port_ids`` list\n* ironic will create a neutron trunk for the ironic port with the\n  ``vif_port_ids`` list\n\n::\n\n  nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e\n\nShould fail to deploy because there is a trunk port to physical port\nmismatch.  This will raise the same error as we raise today if more neutron\nports than physical ports are requested, failing the deployment. If this\nhappens nova will retry the configured number of times to try to land the\ninstance on an ironic node that can support the requested connectivity. If\nevery retry fails nova will raise a No Valid Host found error.\n\nFuture work for this might include enabling some kind of trunk port\nmerging, so that we can fit the connectivity to the number of physical\nports available.","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"58dc227fbb5cc6e956bf99d7f4cff40773dfc3d1","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"In each of these examples we have an ironic node with 2 physical nics."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"* nova boot --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":68,"context_line":"  --nic net-id\u003d\u003cnet\u003e"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  - Each ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  - ironic will create a neutron trunk for each ironic port, stored in"},{"line_number":73,"context_line":"    trunk_port_id on the ironic port"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* nova boot --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e --nic port-id\u003d\u003cport\u003e"},{"line_number":76,"context_line":"  --nic port-id\u003d\u003cport\u003e"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  - Each ironic port will get a vif_port_ids list containing 2 neutron ports"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"  - ironic will create a neutron trunk for each ironic port, stored in"},{"line_number":81,"context_line":"    trunk_port_id on the ironic port"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"  - Each port will get a trunk_port_id"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003cport\u003e --nic net-id\u003d\u003cnet\u003e"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"  - One ironic port will get a trunk_port_id"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"  - One ironic port will get a vif_port_ids list"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"  - ironic will create a neutron trunk for the ironic port with the"},{"line_number":94,"context_line":"    vif_port_ids list"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"* nova boot --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e --nic port-id\u003d\u003ctrunk\u003e"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  - Should fail to deploy because there is a trunk port to physical port"},{"line_number":99,"context_line":"    mismatch.  This will raise the same error as we raise today if more neutron"},{"line_number":100,"context_line":"    ports than physical ports are requested, failing the deployment. If this"},{"line_number":101,"context_line":"    happens nova will retry the configured number of times to try to land the"},{"line_number":102,"context_line":"    instance on an ironic node that can support the requested connectivity. If"},{"line_number":103,"context_line":"    every retry fails nova will raise a No Valid Host found error."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"  - Future work for this might include enabling some kind of trunk port"},{"line_number":106,"context_line":"    merging, so that we can fit the connectivity to the number of physical"},{"line_number":107,"context_line":"    ports available."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Alternatives"},{"line_number":110,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_8c3d0dbe","line":107,"range":{"start_line":67,"start_character":0,"end_line":107,"end_character":20},"in_reply_to":"9a629dbe_1d6853ba","updated":"2016-12-07 17:30:41.000000000","message":"Wouldn\u0027t trunk port merging introduce some kind of inconsistency? I mean, 1 trunk should map to 1 NIC, wouldn\u0027t it break that relation? \nAre users aware if they\u0027re using trunk or port id? If they are, such merging should not be offered","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"58dc227fbb5cc6e956bf99d7f4cff40773dfc3d1","unresolved":false,"context_lines":[{"line_number":110,"context_line":"------------"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- Continue to limit the number of tenant networks to the number of network"},{"line_number":113,"context_line":"  interfaces, but provide hardware with very large numbers of network"},{"line_number":114,"context_line":"  interfaces, and just make sure that the interfaces that are not being used"},{"line_number":115,"context_line":"  get shut down at the switch, to prevent any traffic."},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_4cf775f5","line":113,"updated":"2016-12-07 17:30:41.000000000","message":"This will increase the limit, but won\u0027t solve the problem. Thus, I wouldn\u0027t list it as an alternative. The manual solution posted by Vasyl should be included here, instead.","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f1790675f410ea0466838f90dfcddcaf3ea42492","unresolved":false,"context_lines":[{"line_number":109,"context_line":"Alternatives"},{"line_number":110,"context_line":"------------"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- Continue to limit the number of tenant networks to the number of network"},{"line_number":113,"context_line":"  interfaces, but provide hardware with very large numbers of network"},{"line_number":114,"context_line":"  interfaces, and just make sure that the interfaces that are not being used"},{"line_number":115,"context_line":"  get shut down at the switch, to prevent any traffic."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"- Hardware specific solutions using out of band configuration of server"},{"line_number":118,"context_line":"  capabilities to increase network connectivity options."}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_538ce97e","line":115,"range":{"start_line":112,"start_character":2,"end_line":115,"end_character":54},"updated":"2016-12-05 14:17:20.000000000","message":"VLAN aware bm instances are possible at the moment by creating a trunk port in neutron manually and boot server with specifying parent port uuid. It should be mentioned here.","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":121,"context_line":"-----------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"None of these changes will affect the DB models as they exist in the arbitrary"},{"line_number":124,"context_line":"json field \u0027internal_info\u0027 on the ironic port object, however documenting the"},{"line_number":125,"context_line":"changes here for reference:"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"- Change vif_port_id to vif_port_ids list"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_3dac37ed","line":124,"range":{"start_line":124,"start_character":11,"end_line":124,"end_character":27},"updated":"2016-11-07 09:56:44.000000000","message":"``internal_info``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":124,"context_line":"json field \u0027internal_info\u0027 on the ironic port object, however documenting the"},{"line_number":125,"context_line":"changes here for reference:"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"- Change vif_port_id to vif_port_ids list"},{"line_number":128,"context_line":"- Add trunk_port_id field"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"State Machine Impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_7dbb0f0f","line":127,"range":{"start_line":127,"start_character":2,"end_line":127,"end_character":41},"updated":"2016-11-07 09:56:44.000000000","message":"change the ``vif_port_id`` to the ``vif_port_ids`` list attribute","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":125,"context_line":"changes here for reference:"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"- Change vif_port_id to vif_port_ids list"},{"line_number":128,"context_line":"- Add trunk_port_id field"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"State Machine Impact"},{"line_number":131,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_1d4bf32c","line":128,"range":{"start_line":128,"start_character":2,"end_line":128,"end_character":19},"updated":"2016-11-07 09:56:44.000000000","message":"add ``trunk_port_id``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f6c52c46c3388b917059609204ada859b2a43113","unresolved":false,"context_lines":[{"line_number":135,"context_line":"REST API impact"},{"line_number":136,"context_line":"---------------"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"None, because the port fields we are modifying exist in the port extra"},{"line_number":139,"context_line":"dictionary which is arbitrary."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Client (CLI) impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da36d5c6_4e6843f6","line":138,"updated":"2017-02-20 13:32:41.000000000","message":"Aren\u0027t they in internal_info?","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":157,"context_line":"Nova driver impact"},{"line_number":158,"context_line":"------------------"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"generate_config_drive, needs to process the neutron vifs and the ironic ports"},{"line_number":161,"context_line":"and portgroups into a network configuration file that can be injected into the"},{"line_number":162,"context_line":"config drive to configure the sub-interfaces and bonded nics. This"},{"line_number":163,"context_line":"configuration should also contain all physical nic settings such as MTU etc."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_7d694f8b","line":160,"range":{"start_line":160,"start_character":0,"end_line":160,"end_character":21},"updated":"2016-11-07 09:56:44.000000000","message":"The ``generate_config_drive`` method","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":157,"context_line":"Nova driver impact"},{"line_number":158,"context_line":"------------------"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"generate_config_drive, needs to process the neutron vifs and the ironic ports"},{"line_number":161,"context_line":"and portgroups into a network configuration file that can be injected into the"},{"line_number":162,"context_line":"config drive to configure the sub-interfaces and bonded nics. This"},{"line_number":163,"context_line":"configuration should also contain all physical nic settings such as MTU etc."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_fd2abf2b","line":160,"range":{"start_line":160,"start_character":52,"end_line":160,"end_character":56},"updated":"2016-11-07 09:56:44.000000000","message":"virtual VLAN interfaces??","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"generate_config_drive, needs to process the neutron vifs and the ironic ports"},{"line_number":161,"context_line":"and portgroups into a network configuration file that can be injected into the"},{"line_number":162,"context_line":"config drive to configure the sub-interfaces and bonded nics. This"},{"line_number":163,"context_line":"configuration should also contain all physical nic settings such as MTU etc."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Ramdisk impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_5d1acb18","line":162,"range":{"start_line":162,"start_character":56,"end_line":162,"end_character":60},"updated":"2016-11-07 09:56:44.000000000","message":"NICs","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":160,"context_line":"generate_config_drive, needs to process the neutron vifs and the ironic ports"},{"line_number":161,"context_line":"and portgroups into a network configuration file that can be injected into the"},{"line_number":162,"context_line":"config drive to configure the sub-interfaces and bonded nics. This"},{"line_number":163,"context_line":"configuration should also contain all physical nic settings such as MTU etc."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Ramdisk impact"},{"line_number":166,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_fdb8ffe7","line":163,"range":{"start_line":163,"start_character":47,"end_line":163,"end_character":50},"updated":"2016-11-07 09:56:44.000000000","message":"NIC","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":6558,"name":"Sukhdev Kapur","email":"sukhdevkapur@gmail.com","username":"sukhdev-8"},"change_message_id":"b7b15d8e61f638e41efb098be88a72eb786355e6","unresolved":false,"context_lines":[{"line_number":170,"context_line":"Security impact"},{"line_number":171,"context_line":"---------------"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"As the switch port configuration for this BM node is now trunk, if the switch"},{"line_number":174,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":175,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":176,"context_line":"manually tag packets to VLANs that don\u0027t belong to them and break inter-tenant"},{"line_number":177,"context_line":"separation. *This is the responsibility of neutron ml2 mechanism to ensure.*"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Other end user impact"},{"line_number":180,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_333862ef","line":177,"range":{"start_line":173,"start_character":0,"end_line":177,"end_character":76},"updated":"2016-12-05 05:01:03.000000000","message":"As a word of caution, you may want to say that the advised default config for the trunked port is allowed_vlans \u003d None, and then allow VLANs as the sub-ports are added (i.e. neutron networks) to the trunk port","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":174,"context_line":"is not configured correctly and has allowed VLANs that don’t belong to the"},{"line_number":175,"context_line":"tenant that is deployed onto the BM node, then it is possible for a tenant to"},{"line_number":176,"context_line":"manually tag packets to VLANs that don\u0027t belong to them and break inter-tenant"},{"line_number":177,"context_line":"separation. *This is the responsibility of neutron ml2 mechanism to ensure.*"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Other end user impact"},{"line_number":180,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_fdaf1f92","line":177,"range":{"start_line":177,"start_character":51,"end_line":177,"end_character":54},"updated":"2016-11-07 09:56:44.000000000","message":"ML2","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"58dc227fbb5cc6e956bf99d7f4cff40773dfc3d1","unresolved":false,"context_lines":[{"line_number":179,"context_line":"Other end user impact"},{"line_number":180,"context_line":"---------------------"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"The network connectivity for this instance relies on configuration inside the"},{"line_number":183,"context_line":"end user\u0027s instance, this configuration can not be protected by ironic, so it"},{"line_number":184,"context_line":"is possible that a user could, if they changed the configuration, break that"},{"line_number":185,"context_line":"instance\u0027s connectivity to the neutron networks."}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a71b18c_4c45b515","line":182,"updated":"2016-12-07 17:30:41.000000000","message":"/this/the/","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Automatic configuration of the connectivity using the information included in"},{"line_number":188,"context_line":"the config drive requires including a tool to process it. Currently only one"},{"line_number":189,"context_line":"tool supports full network_data.json configuration, glean/simple-init [2]_."},{"line_number":190,"context_line":"Cloud-init needs enhancements to complete this functionality."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Scalability impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_3d235707","line":189,"range":{"start_line":189,"start_character":19,"end_line":189,"end_character":36},"updated":"2016-11-07 09:56:44.000000000","message":"``network_data.json``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":221,"context_line":"Work Items"},{"line_number":222,"context_line":"----------"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"- Update neutron network interface to support vif_port_ids"},{"line_number":225,"context_line":"- Update neutron dhcp interface to support vif_port_ids"},{"line_number":226,"context_line":"- Extend nova driver config drive generation to support sub-interfaces"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_dd825bc8","line":224,"range":{"start_line":224,"start_character":46,"end_line":224,"end_character":58},"updated":"2016-11-07 09:56:44.000000000","message":"``vif_port_ids``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":221,"context_line":"Work Items"},{"line_number":222,"context_line":"----------"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"- Update neutron network interface to support vif_port_ids"},{"line_number":225,"context_line":"- Update neutron dhcp interface to support vif_port_ids"},{"line_number":226,"context_line":"- Extend nova driver config drive generation to support sub-interfaces"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_7d1dcfbc","line":224,"range":{"start_line":224,"start_character":2,"end_line":224,"end_character":8},"updated":"2016-11-07 09:56:44.000000000","message":"update","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f6c52c46c3388b917059609204ada859b2a43113","unresolved":false,"context_lines":[{"line_number":221,"context_line":"Work Items"},{"line_number":222,"context_line":"----------"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"- Update neutron network interface to support vif_port_ids"},{"line_number":225,"context_line":"- Update neutron dhcp interface to support vif_port_ids"},{"line_number":226,"context_line":"- Extend nova driver config drive generation to support sub-interfaces"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da36d5c6_6e3b47ec","line":224,"range":{"start_line":224,"start_character":46,"end_line":224,"end_character":58},"in_reply_to":"9a629dbe_dd825bc8","updated":"2017-02-20 13:32:41.000000000","message":"Also trunk_port_id","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":222,"context_line":"----------"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"- Update neutron network interface to support vif_port_ids"},{"line_number":225,"context_line":"- Update neutron dhcp interface to support vif_port_ids"},{"line_number":226,"context_line":"- Extend nova driver config drive generation to support sub-interfaces"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_9d5f0375","line":225,"range":{"start_line":225,"start_character":17,"end_line":225,"end_character":21},"updated":"2016-11-07 09:56:44.000000000","message":"DHCP","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":222,"context_line":"----------"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"- Update neutron network interface to support vif_port_ids"},{"line_number":225,"context_line":"- Update neutron dhcp interface to support vif_port_ids"},{"line_number":226,"context_line":"- Extend nova driver config drive generation to support sub-interfaces"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_dd597b90","line":225,"range":{"start_line":225,"start_character":43,"end_line":225,"end_character":55},"updated":"2016-11-07 09:56:44.000000000","message":"``vif_port_ids``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":222,"context_line":"----------"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"- Update neutron network interface to support vif_port_ids"},{"line_number":225,"context_line":"- Update neutron dhcp interface to support vif_port_ids"},{"line_number":226,"context_line":"- Extend nova driver config drive generation to support sub-interfaces"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_5d772b02","line":225,"range":{"start_line":225,"start_character":2,"end_line":225,"end_character":8},"updated":"2016-11-07 09:56:44.000000000","message":"update","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"- Update neutron network interface to support vif_port_ids"},{"line_number":225,"context_line":"- Update neutron dhcp interface to support vif_port_ids"},{"line_number":226,"context_line":"- Extend nova driver config drive generation to support sub-interfaces"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Dependencies"},{"line_number":229,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_3d519763","line":226,"range":{"start_line":226,"start_character":2,"end_line":226,"end_character":8},"updated":"2016-11-07 09:56:44.000000000","message":"extend","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":247,"context_line":""},{"line_number":248,"context_line":"The changes to the underlying data structures should be abstracted by the"},{"line_number":249,"context_line":"attach and detach interface API mentioned above. Most of the deprecation of"},{"line_number":250,"context_line":"port.extra[\u0027vif_port_id\u0027] is handled by that spec. However some code to"},{"line_number":251,"context_line":"maintain existing functionality while port.extra[\u0027vif_port_id\u0027] is being"},{"line_number":252,"context_line":"deprecated will be required, such as if a vif_port_id is added to a port or"},{"line_number":253,"context_line":"portgroup it is processed as if vif_port_ids has a length of one."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_dde7bbaa","line":250,"range":{"start_line":250,"start_character":0,"end_line":250,"end_character":25},"updated":"2016-11-07 09:56:44.000000000","message":"``port.extra[\u0027vif_port_id\u0027]``, is this the same structure as the ``port/portgroup.internal_info`` you mentioned in the \"Proposed change\" section?","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":248,"context_line":"The changes to the underlying data structures should be abstracted by the"},{"line_number":249,"context_line":"attach and detach interface API mentioned above. Most of the deprecation of"},{"line_number":250,"context_line":"port.extra[\u0027vif_port_id\u0027] is handled by that spec. However some code to"},{"line_number":251,"context_line":"maintain existing functionality while port.extra[\u0027vif_port_id\u0027] is being"},{"line_number":252,"context_line":"deprecated will be required, such as if a vif_port_id is added to a port or"},{"line_number":253,"context_line":"portgroup it is processed as if vif_port_ids has a length of one."},{"line_number":254,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_bd992722","line":251,"range":{"start_line":251,"start_character":38,"end_line":251,"end_character":63},"updated":"2016-11-07 09:56:44.000000000","message":"``port.extra[\u0027vif_port_id\u0027]``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":249,"context_line":"attach and detach interface API mentioned above. Most of the deprecation of"},{"line_number":250,"context_line":"port.extra[\u0027vif_port_id\u0027] is handled by that spec. However some code to"},{"line_number":251,"context_line":"maintain existing functionality while port.extra[\u0027vif_port_id\u0027] is being"},{"line_number":252,"context_line":"deprecated will be required, such as if a vif_port_id is added to a port or"},{"line_number":253,"context_line":"portgroup it is processed as if vif_port_ids has a length of one."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Code should also be added to the drivers to spot if an Ironic port only has"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_ddb5fb7e","line":252,"range":{"start_line":252,"start_character":42,"end_line":252,"end_character":53},"updated":"2016-11-07 09:56:44.000000000","message":"``vif_port_id``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":250,"context_line":"port.extra[\u0027vif_port_id\u0027] is handled by that spec. However some code to"},{"line_number":251,"context_line":"maintain existing functionality while port.extra[\u0027vif_port_id\u0027] is being"},{"line_number":252,"context_line":"deprecated will be required, such as if a vif_port_id is added to a port or"},{"line_number":253,"context_line":"portgroup it is processed as if vif_port_ids has a length of one."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Code should also be added to the drivers to spot if an Ironic port only has"},{"line_number":256,"context_line":"vif_port_id, and if so add the missing vif_port_ids field, with the existing"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_7da78f4f","line":253,"range":{"start_line":253,"start_character":32,"end_line":253,"end_character":44},"updated":"2016-11-07 09:56:44.000000000","message":"``vif_port_ids``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":253,"context_line":"portgroup it is processed as if vif_port_ids has a length of one."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Code should also be added to the drivers to spot if an Ironic port only has"},{"line_number":256,"context_line":"vif_port_id, and if so add the missing vif_port_ids field, with the existing"},{"line_number":257,"context_line":"vif_port_id."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_dd6c1b0b","line":256,"range":{"start_line":256,"start_character":0,"end_line":256,"end_character":11},"updated":"2016-11-07 09:56:44.000000000","message":"``vif_port_id``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":253,"context_line":"portgroup it is processed as if vif_port_ids has a length of one."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Code should also be added to the drivers to spot if an Ironic port only has"},{"line_number":256,"context_line":"vif_port_id, and if so add the missing vif_port_ids field, with the existing"},{"line_number":257,"context_line":"vif_port_id."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_fd71dfe1","line":256,"range":{"start_line":256,"start_character":39,"end_line":256,"end_character":51},"updated":"2016-11-07 09:56:44.000000000","message":"``vif_port_ids``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Code should also be added to the drivers to spot if an Ironic port only has"},{"line_number":256,"context_line":"vif_port_id, and if so add the missing vif_port_ids field, with the existing"},{"line_number":257,"context_line":"vif_port_id."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"Documentation Impact"},{"line_number":260,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_9d49c391","line":257,"range":{"start_line":257,"start_character":0,"end_line":257,"end_character":11},"updated":"2016-11-07 09:56:44.000000000","message":"``vif_port_id``","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":259,"context_line":"Documentation Impact"},{"line_number":260,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"* Trunk port support by neutron network interface should be documented"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"* The examples above showing what happens and when for different nova use cases"},{"line_number":265,"context_line":"  should be included in the documentation."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_fd48ff89","line":262,"range":{"start_line":262,"start_character":2,"end_line":262,"end_character":7},"updated":"2016-11-07 09:56:44.000000000","message":"trunk","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"* Trunk port support by neutron network interface should be documented"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"* The examples above showing what happens and when for different nova use cases"},{"line_number":265,"context_line":"  should be included in the documentation."},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_5d580b57","line":264,"range":{"start_line":264,"start_character":2,"end_line":264,"end_character":5},"updated":"2016-11-07 09:56:44.000000000","message":"the","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"},{"author":{"_account_id":18653,"name":"Milan Kováčik","email":"mkovacik@redhat.com","username":"dparalen"},"change_message_id":"eeea8587c2041435e23572fbbe662aa79bdb062e","unresolved":false,"context_lines":[{"line_number":262,"context_line":"* Trunk port support by neutron network interface should be documented"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"* The examples above showing what happens and when for different nova use cases"},{"line_number":265,"context_line":"  should be included in the documentation."},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"References"},{"line_number":268,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a629dbe_fd3f1fd4","line":265,"range":{"start_line":265,"start_character":41,"end_line":265,"end_character":42},"updated":"2016-11-07 09:56:44.000000000","message":"s/.//","commit_id":"5a5a5b42d2d7228a922b0a63e315200b52cda4be"}]}
