)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"dd3ceec279de8af3d3c17b848c00c0ea4a1353e5","unresolved":false,"context_lines":[{"line_number":28,"context_line":"tweaking simulated network configuration should be reusable to enhance"},{"line_number":29,"context_line":"our devstack plugin\u0027s support for real hardware scenarios."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Change-Id: I7384f026d845f07bcd421f68f6b806fd64cd95ac"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a629dbe_3846f323","line":31,"updated":"2016-11-07 15:47:55.000000000","message":"Probably should add a Co-Authored-By: Sam \"I\u0027ll take those\" Betts","commit_id":"0f29aef0d48af6e242b2aefdc6225d1baea4f086"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6536da8a5fd21828780f9e748d4ae69a471c029f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"supported."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"For a visual representation of an example topology that would exist in"},{"line_number":24,"context_line":"this simulated environment look here: https://goo.gl/Ab0e3R"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"This change also makes the devstack ironic neutron configuration work"},{"line_number":27,"context_line":"for cases when IRONIC_IS_HARDWARE\u003dTrue, configuring real interfaces for"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9a629dbe_ef07ee19","line":24,"updated":"2016-11-09 14:05:46.000000000","message":"I\u0027d prefer if this ASCII art was part of the commit. As that link could disappear at anytime.\n\nMaybe we should have a devstack/doc/ directory?","commit_id":"b962645945c406371216216124f1688ec6b4bfc5"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":15,"context_line":"This means that we can now run neutron in either LB or OVS modes and it"},{"line_number":16,"context_line":"doesn\u0027t affect our simulation."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Additionally we can now simulate a statically configured VLAN network,"},{"line_number":19,"context_line":"as an alternative to a flat network. With some additional changes in"},{"line_number":20,"context_line":"networking-generic-switch multiple isolated tenant networks will be"},{"line_number":21,"context_line":"supported."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"fa31d9ce_7284f0b0","line":19,"range":{"start_line":18,"start_character":0,"end_line":19,"end_character":36},"updated":"2017-02-17 14:57:17.000000000","message":"What do you mean here?","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":16,"context_line":"doesn\u0027t affect our simulation."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Additionally we can now simulate a statically configured VLAN network,"},{"line_number":19,"context_line":"as an alternative to a flat network. With some additional changes in"},{"line_number":20,"context_line":"networking-generic-switch multiple isolated tenant networks will be"},{"line_number":21,"context_line":"supported."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This change also makes the devstack ironic neutron configuration work"},{"line_number":24,"context_line":"for cases when IRONIC_IS_HARDWARE\u003dTrue, configuring real interfaces for"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"fa31d9ce_12e8147c","line":21,"range":{"start_line":19,"start_character":37,"end_line":21,"end_character":10},"updated":"2017-02-17 14:57:17.000000000","message":"This sentence confuses.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"}],"devstack/lib/ironic":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"614897e1a3486c0fe80afba04e0eb78875ad037c","unresolved":false,"context_lines":[{"line_number":1497,"context_line":"    fi"},{"line_number":1498,"context_line":""},{"line_number":1499,"context_line":"    local ironic_deploy_kernel_name"},{"line_number":1500,"context_line":"    local ironic_deploy_ramdisk_name"},{"line_number":1501,"context_line":"    ironic_deploy_kernel_name\u003d$(basename $IRONIC_DEPLOY_KERNEL_PATH)"},{"line_number":1502,"context_line":"    ironic_deploy_ramdisk_name\u003d$(basename $IRONIC_DEPLOY_RAMDISK_PATH)"},{"line_number":1503,"context_line":"    if [[ \"$HOST_TOPOLOGY_ROLE\" !\u003d \u0027subnode\u0027 ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_17f916c9","side":"PARENT","line":1500,"updated":"2016-12-01 09:41:08.000000000","message":"Please avoid changing not related things to this patch. It makes patch big and hard to review.","commit_id":"8cc063173e7bb5f81dbb956b44dd81c2162a75b7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"5c201ebf746d79cf3722d6a8ccb46843a4b359f3","unresolved":false,"context_lines":[{"line_number":1497,"context_line":"    fi"},{"line_number":1498,"context_line":""},{"line_number":1499,"context_line":"    local ironic_deploy_kernel_name"},{"line_number":1500,"context_line":"    local ironic_deploy_ramdisk_name"},{"line_number":1501,"context_line":"    ironic_deploy_kernel_name\u003d$(basename $IRONIC_DEPLOY_KERNEL_PATH)"},{"line_number":1502,"context_line":"    ironic_deploy_ramdisk_name\u003d$(basename $IRONIC_DEPLOY_RAMDISK_PATH)"},{"line_number":1503,"context_line":"    if [[ \"$HOST_TOPOLOGY_ROLE\" !\u003d \u0027subnode\u0027 ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_51d8f3ef","side":"PARENT","line":1500,"in_reply_to":"3a71b18c_17f916c9","updated":"2016-12-01 11:09:40.000000000","message":"I wrote this code before your multinode patches landed, it was a much nicer diff before. I can remove this change from this patch now.","commit_id":"8cc063173e7bb5f81dbb956b44dd81c2162a75b7"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"614897e1a3486c0fe80afba04e0eb78875ad037c","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"    echo $node_prefix"},{"line_number":1635,"context_line":"}"},{"line_number":1636,"context_line":""},{"line_number":1637,"context_line":"function setup_vxlan_network {"},{"line_number":1638,"context_line":"    sudo ovs-vsctl add-port $IRONIC_VM_NETWORK_BRIDGE phy-brbm-vxlan"},{"line_number":1639,"context_line":"    sudo ovs-vsctl add-port br_ironic_vxlan phy-vxlan-brbm"},{"line_number":1640,"context_line":"    sudo ovs-vsctl set interface phy-brbm-vxlan type\u003dpatch"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_77bb2a0f","side":"PARENT","line":1637,"range":{"start_line":1637,"start_character":9,"end_line":1637,"end_character":28},"updated":"2016-12-01 09:41:08.000000000","message":"It shouldn\u0027t be removed, we create overlay tunnel between subnodes at devstack-gate [0] and than here plug ironic nodes.\n\n[0] https://github.com/openstack-infra/devstack-gate/blob/master/devstack-vm-gate.sh#L146","commit_id":"8cc063173e7bb5f81dbb956b44dd81c2162a75b7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"5c201ebf746d79cf3722d6a8ccb46843a4b359f3","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"    echo $node_prefix"},{"line_number":1635,"context_line":"}"},{"line_number":1636,"context_line":""},{"line_number":1637,"context_line":"function setup_vxlan_network {"},{"line_number":1638,"context_line":"    sudo ovs-vsctl add-port $IRONIC_VM_NETWORK_BRIDGE phy-brbm-vxlan"},{"line_number":1639,"context_line":"    sudo ovs-vsctl add-port br_ironic_vxlan phy-vxlan-brbm"},{"line_number":1640,"context_line":"    sudo ovs-vsctl set interface phy-brbm-vxlan type\u003dpatch"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_51c71345","side":"PARENT","line":1637,"range":{"start_line":1637,"start_character":9,"end_line":1637,"end_character":28},"in_reply_to":"3a71b18c_77bb2a0f","updated":"2016-12-01 11:09:40.000000000","message":"See my above comment.","commit_id":"8cc063173e7bb5f81dbb956b44dd81c2162a75b7"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"614897e1a3486c0fe80afba04e0eb78875ad037c","unresolved":false,"context_lines":[{"line_number":724,"context_line":"        iniset $IRONIC_CONF_FILE glance swift_container glance"},{"line_number":725,"context_line":"        iniset $IRONIC_CONF_FILE glance swift_temp_url_duration 3600"},{"line_number":726,"context_line":"    fi"},{"line_number":727,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_protocol $GLANCE_SERVICE_PROTOCOL"},{"line_number":728,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_host $(echo ${GLANCE_HOSTPORT} | cut -d \":\" -f 1)"},{"line_number":729,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_port $(echo ${GLANCE_HOSTPORT} | cut -d \":\" -f 2)"},{"line_number":730,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_579f0e5f","line":727,"updated":"2016-12-01 09:41:08.000000000","message":"Why it was moved out of if is_glance_configuration_required ?","commit_id":"4199e682ef92097f3ab46d57e1958bdd2fd3c06b"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"5c201ebf746d79cf3722d6a8ccb46843a4b359f3","unresolved":false,"context_lines":[{"line_number":724,"context_line":"        iniset $IRONIC_CONF_FILE glance swift_container glance"},{"line_number":725,"context_line":"        iniset $IRONIC_CONF_FILE glance swift_temp_url_duration 3600"},{"line_number":726,"context_line":"    fi"},{"line_number":727,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_protocol $GLANCE_SERVICE_PROTOCOL"},{"line_number":728,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_host $(echo ${GLANCE_HOSTPORT} | cut -d \":\" -f 1)"},{"line_number":729,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_port $(echo ${GLANCE_HOSTPORT} | cut -d \":\" -f 2)"},{"line_number":730,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_7e2f7ea1","line":727,"in_reply_to":"3a71b18c_579f0e5f","updated":"2016-12-01 11:09:40.000000000","message":"Because that block of code only happens if agent drivers are loaded which breaks cleaning.","commit_id":"4199e682ef92097f3ab46d57e1958bdd2fd3c06b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"614897e1a3486c0fe80afba04e0eb78875ad037c","unresolved":false,"context_lines":[{"line_number":725,"context_line":"        iniset $IRONIC_CONF_FILE glance swift_temp_url_duration 3600"},{"line_number":726,"context_line":"    fi"},{"line_number":727,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_protocol $GLANCE_SERVICE_PROTOCOL"},{"line_number":728,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_host $(echo ${GLANCE_HOSTPORT} | cut -d \":\" -f 1)"},{"line_number":729,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_port $(echo ${GLANCE_HOSTPORT} | cut -d \":\" -f 2)"},{"line_number":730,"context_line":""},{"line_number":731,"context_line":"    if is_deployed_by_agent; then"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_37cb7274","line":728,"range":{"start_line":728,"start_character":57,"end_line":728,"end_character":72},"updated":"2016-12-01 09:41:08.000000000","message":"SERVICE_HOST","commit_id":"4199e682ef92097f3ab46d57e1958bdd2fd3c06b"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"5c201ebf746d79cf3722d6a8ccb46843a4b359f3","unresolved":false,"context_lines":[{"line_number":725,"context_line":"        iniset $IRONIC_CONF_FILE glance swift_temp_url_duration 3600"},{"line_number":726,"context_line":"    fi"},{"line_number":727,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_protocol $GLANCE_SERVICE_PROTOCOL"},{"line_number":728,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_host $(echo ${GLANCE_HOSTPORT} | cut -d \":\" -f 1)"},{"line_number":729,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_port $(echo ${GLANCE_HOSTPORT} | cut -d \":\" -f 2)"},{"line_number":730,"context_line":""},{"line_number":731,"context_line":"    if is_deployed_by_agent; then"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_d1d40349","line":728,"range":{"start_line":728,"start_character":57,"end_line":728,"end_character":72},"in_reply_to":"3a71b18c_37cb7274","updated":"2016-12-01 11:09:40.000000000","message":"each service provides its own HOSTPORT configuration in devstack so that devstack can support multihosted services, the correct way to configure devstack according to the docs is to set GLANCE_HOST\u003d$SERVICE_HOST in your local.conf","commit_id":"4199e682ef92097f3ab46d57e1958bdd2fd3c06b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"614897e1a3486c0fe80afba04e0eb78875ad037c","unresolved":false,"context_lines":[{"line_number":726,"context_line":"    fi"},{"line_number":727,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_protocol $GLANCE_SERVICE_PROTOCOL"},{"line_number":728,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_host $(echo ${GLANCE_HOSTPORT} | cut -d \":\" -f 1)"},{"line_number":729,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_port $(echo ${GLANCE_HOSTPORT} | cut -d \":\" -f 2)"},{"line_number":730,"context_line":""},{"line_number":731,"context_line":"    if is_deployed_by_agent; then"},{"line_number":732,"context_line":"        iniset $IRONIC_CONF_FILE api ramdisk_heartbeat_timeout 30"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_77c5ea59","line":729,"range":{"start_line":729,"start_character":57,"end_line":729,"end_character":72},"updated":"2016-12-01 09:41:08.000000000","message":"GLANCE_SERVICE_PORT","commit_id":"4199e682ef92097f3ab46d57e1958bdd2fd3c06b"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"5c201ebf746d79cf3722d6a8ccb46843a4b359f3","unresolved":false,"context_lines":[{"line_number":726,"context_line":"    fi"},{"line_number":727,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_protocol $GLANCE_SERVICE_PROTOCOL"},{"line_number":728,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_host $(echo ${GLANCE_HOSTPORT} | cut -d \":\" -f 1)"},{"line_number":729,"context_line":"    iniset $IRONIC_CONF_FILE glance glance_port $(echo ${GLANCE_HOSTPORT} | cut -d \":\" -f 2)"},{"line_number":730,"context_line":""},{"line_number":731,"context_line":"    if is_deployed_by_agent; then"},{"line_number":732,"context_line":"        iniset $IRONIC_CONF_FILE api ramdisk_heartbeat_timeout 30"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_711a4f19","line":729,"range":{"start_line":729,"start_character":57,"end_line":729,"end_character":72},"in_reply_to":"3a71b18c_77c5ea59","updated":"2016-12-01 11:09:40.000000000","message":"Done","commit_id":"4199e682ef92097f3ab46d57e1958bdd2fd3c06b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"614897e1a3486c0fe80afba04e0eb78875ad037c","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"            sudo ip link set bmswdown$id up"},{"line_number":1012,"context_line":"        done"},{"line_number":1013,"context_line":"    elif [[ \"$HOST_TOPOLOGY_ROLE\" \u003d\u003d \"subnode\" ]]; then"},{"line_number":1014,"context_line":"        sudo ip link add bmswitchup type gretap local $HOST_IP remote $SERVICE_HOST"},{"line_number":1015,"context_line":"        if [[ \"$IRONIC_PHYSICAL_NETWORK_EMULATOR\" \u003d\u003d \"linuxbridge\" ]]; then"},{"line_number":1016,"context_line":"            sudo brctl addif bmswitch bmswitchup"},{"line_number":1017,"context_line":"        else"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_57f1cecc","line":1014,"updated":"2016-12-01 09:41:08.000000000","message":"We shouldn\u0027t setup tunnels between subnodes from Ironic plugin, it should be done at top level (devstack-gate) https://github.com/openstack-infra/devstack-gate/blob/master/devstack-vm-gate.sh#L146","commit_id":"4199e682ef92097f3ab46d57e1958bdd2fd3c06b"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"5c201ebf746d79cf3722d6a8ccb46843a4b359f3","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"            sudo ip link set bmswdown$id up"},{"line_number":1012,"context_line":"        done"},{"line_number":1013,"context_line":"    elif [[ \"$HOST_TOPOLOGY_ROLE\" \u003d\u003d \"subnode\" ]]; then"},{"line_number":1014,"context_line":"        sudo ip link add bmswitchup type gretap local $HOST_IP remote $SERVICE_HOST"},{"line_number":1015,"context_line":"        if [[ \"$IRONIC_PHYSICAL_NETWORK_EMULATOR\" \u003d\u003d \"linuxbridge\" ]]; then"},{"line_number":1016,"context_line":"            sudo brctl addif bmswitch bmswitchup"},{"line_number":1017,"context_line":"        else"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_919c4b6b","line":1014,"in_reply_to":"3a71b18c_57f1cecc","updated":"2016-12-01 11:09:40.000000000","message":"I disagree. Putting vital components to making our simulation work for a multi-node environment in devstack-gate just makes it hard for ordinary developers to test Ironic outside of CI. Including this here makes multi-node work out of the box with our devstack plugin, you just need to setup 2 VMs and configure their local.confs and it works.","commit_id":"4199e682ef92097f3ab46d57e1958bdd2fd3c06b"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"f5928eabf334632895d6798cd26c71292d8d41c8","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"            sudo ip link set bmswdown$id up"},{"line_number":1012,"context_line":"        done"},{"line_number":1013,"context_line":"    elif [[ \"$HOST_TOPOLOGY_ROLE\" \u003d\u003d \"subnode\" ]]; then"},{"line_number":1014,"context_line":"        sudo ip link add bmswitchup type gretap local $HOST_IP remote $SERVICE_HOST"},{"line_number":1015,"context_line":"        if [[ \"$IRONIC_PHYSICAL_NETWORK_EMULATOR\" \u003d\u003d \"linuxbridge\" ]]; then"},{"line_number":1016,"context_line":"            sudo brctl addif bmswitch bmswitchup"},{"line_number":1017,"context_line":"        else"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_ca036c75","line":1014,"in_reply_to":"3a71b18c_6fac2aee","updated":"2016-12-01 11:50:17.000000000","message":"The way that this code work it is not possible to do it in outside of here because the remote bridges we are attaching together don\u0027t exist until they are created here.\n\nThis code supports any number of subnodes, the primary node sets up all the links see above.","commit_id":"4199e682ef92097f3ab46d57e1958bdd2fd3c06b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"12561d482d6d0f64c4d980a44e444db014533017","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"            sudo ip link set bmswdown$id up"},{"line_number":1012,"context_line":"        done"},{"line_number":1013,"context_line":"    elif [[ \"$HOST_TOPOLOGY_ROLE\" \u003d\u003d \"subnode\" ]]; then"},{"line_number":1014,"context_line":"        sudo ip link add bmswitchup type gretap local $HOST_IP remote $SERVICE_HOST"},{"line_number":1015,"context_line":"        if [[ \"$IRONIC_PHYSICAL_NETWORK_EMULATOR\" \u003d\u003d \"linuxbridge\" ]]; then"},{"line_number":1016,"context_line":"            sudo brctl addif bmswitch bmswitchup"},{"line_number":1017,"context_line":"        else"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"3a71b18c_6fac2aee","line":1014,"in_reply_to":"3a71b18c_919c4b6b","updated":"2016-12-01 11:26:36.000000000","message":"It is fear point, lets made it as separate patch, also at the gates not all cloud provides allows gre, that is why on CI we using VXLANS.\n\nAlso multinode may have more that 2 nodes (on the CI actually they provide 3 while using only 2).","commit_id":"4199e682ef92097f3ab46d57e1958bdd2fd3c06b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":1908,"context_line":"        iniset $TEMPEST_CONFIG baremetal max_microversion $TEMPEST_BAREMETAL_MAX_MICROVERSION"},{"line_number":1909,"context_line":"    fi"},{"line_number":1910,"context_line":""},{"line_number":1911,"context_line":"    if is_service_enabled nova; then"},{"line_number":1912,"context_line":"        local bm_flavor_id"},{"line_number":1913,"context_line":"        bm_flavor_id\u003d$(openstack flavor show baremetal -f value -c id)"},{"line_number":1914,"context_line":"        die_if_not_set $LINENO bm_flavor_id \"Failed to get id of baremetal flavor\""}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_7563fadd","side":"PARENT","line":1911,"updated":"2017-02-17 14:57:17.000000000","message":"Please add this back, it breaks ironic without nova deployment.","commit_id":"7135b43d15fe5b81bffb081c67d4798bd56b181e"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"647b944e044b78b14569e14c4e0feee8bc31d940","unresolved":false,"context_lines":[{"line_number":1908,"context_line":"        iniset $TEMPEST_CONFIG baremetal max_microversion $TEMPEST_BAREMETAL_MAX_MICROVERSION"},{"line_number":1909,"context_line":"    fi"},{"line_number":1910,"context_line":""},{"line_number":1911,"context_line":"    if is_service_enabled nova; then"},{"line_number":1912,"context_line":"        local bm_flavor_id"},{"line_number":1913,"context_line":"        bm_flavor_id\u003d$(openstack flavor show baremetal -f value -c id)"},{"line_number":1914,"context_line":"        die_if_not_set $LINENO bm_flavor_id \"Failed to get id of baremetal flavor\""}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"ba2be162_6869a38b","side":"PARENT","line":1911,"in_reply_to":"fa31d9ce_7563fadd","updated":"2017-02-28 16:26:41.000000000","message":"Done","commit_id":"7135b43d15fe5b81bffb081c67d4798bd56b181e"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":1741,"context_line":"        iniset $TEMPEST_CONFIG baremetal use_provision_network True"},{"line_number":1742,"context_line":"    else"},{"line_number":1743,"context_line":"        # flat-network"},{"line_number":1744,"context_line":"        iniset $TEMPEST_CONFIG compute fixed_network_name $PRIVATE_NETWORK_NAME"},{"line_number":1745,"context_line":"        # NOTE(jroll) this disables multitenant network tests from tempest\u0027s"},{"line_number":1746,"context_line":"        # tree, but not from our tree. This is a bit inconsistent, we should"},{"line_number":1747,"context_line":"        # fix it."}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_15dd5e42","line":1744,"updated":"2017-02-17 14:57:17.000000000","message":"wondered how this works :) we create flat network and add nodes there http://logs.openstack.org/59/392959/28/check/gate-tempest-dsvm-ironic-ipa-wholedisk-bios-agent_ipmitool-tinyipa-ubuntu-xenial/0e4f08b/logs/devstacklog.txt.gz#_2017-02-16_13_28_33_229\nbut in tempest we boot nodes in private network.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"647b944e044b78b14569e14c4e0feee8bc31d940","unresolved":false,"context_lines":[{"line_number":1741,"context_line":"        iniset $TEMPEST_CONFIG baremetal use_provision_network True"},{"line_number":1742,"context_line":"    else"},{"line_number":1743,"context_line":"        # flat-network"},{"line_number":1744,"context_line":"        iniset $TEMPEST_CONFIG compute fixed_network_name $PRIVATE_NETWORK_NAME"},{"line_number":1745,"context_line":"        # NOTE(jroll) this disables multitenant network tests from tempest\u0027s"},{"line_number":1746,"context_line":"        # tree, but not from our tree. This is a bit inconsistent, we should"},{"line_number":1747,"context_line":"        # fix it."}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"ba2be162_286fab93","line":1744,"in_reply_to":"fa31d9ce_15dd5e42","updated":"2017-02-28 16:26:41.000000000","message":"Done","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"683e881b649fb98b212819c5a31bba1ffcfc3d9d","unresolved":false,"context_lines":[{"line_number":103,"context_line":"IRONIC_PHYSICAL_INTERFACE\u003d${IRONIC_PHYSICAL_INTERFACE:-}"},{"line_number":104,"context_line":"IRONIC_PHYSICAL_CONDUCTOR_INTERFACE\u003d${IRONIC_PHYSICAL_CONDUCTOR_INTERFACE:-}"},{"line_number":105,"context_line":"IRONIC_PHYSICAL_NETWORK\u003d${IRONIC_PHYSICAL_NETWORK:-ironphys}"},{"line_number":106,"context_line":"IRONIC_PHYSICAL_NETWORK_TYPE\u003d${IRONIC_PHYSICAL_NETWORK_TYPE:-\u0027flat\u0027}"},{"line_number":107,"context_line":"IRONIC_PHYSICAL_NETWORK_SEG_MIN\u003d${IRONIC_PHYSICAL_NETWORK_SEG_MIN:-100}"},{"line_number":108,"context_line":"IRONIC_PHYSICAL_NETWORK_SEG_MAX\u003d${IRONIC_PHYSICAL_NETWORK_SEG_MAX:-110}"},{"line_number":109,"context_line":"# Neutron network options:"}],"source_content_type":"application/x-shellscript","patch_set":30,"id":"ba2be162_daf146cf","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":28},"updated":"2017-03-01 10:47:23.000000000","message":"No need to have this variable, it is better to pick network type from IRONIC_NODE_NETWORK_INTERFACE","commit_id":"4033b9b742752f352a2cf69b44a4c7bffca734ca"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f07fbffcc058f8d144f7665dbecb0755412ca958","unresolved":false,"context_lines":[{"line_number":103,"context_line":"IRONIC_PHYSICAL_INTERFACE\u003d${IRONIC_PHYSICAL_INTERFACE:-}"},{"line_number":104,"context_line":"IRONIC_PHYSICAL_CONDUCTOR_INTERFACE\u003d${IRONIC_PHYSICAL_CONDUCTOR_INTERFACE:-}"},{"line_number":105,"context_line":"IRONIC_PHYSICAL_NETWORK\u003d${IRONIC_PHYSICAL_NETWORK:-ironphys}"},{"line_number":106,"context_line":"IRONIC_PHYSICAL_NETWORK_TYPE\u003d${IRONIC_PHYSICAL_NETWORK_TYPE:-\u0027flat\u0027}"},{"line_number":107,"context_line":"IRONIC_PHYSICAL_NETWORK_SEG_MIN\u003d${IRONIC_PHYSICAL_NETWORK_SEG_MIN:-100}"},{"line_number":108,"context_line":"IRONIC_PHYSICAL_NETWORK_SEG_MAX\u003d${IRONIC_PHYSICAL_NETWORK_SEG_MAX:-110}"},{"line_number":109,"context_line":"# Neutron network options:"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_1e00efa9","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":68},"updated":"2017-03-02 13:21:21.000000000","message":"I think this variable is not needed as it overlaps with IRONIC_NETWORK_INTERFACE\nhttps://github.com/openstack/ironic/blob/master/devstack/lib/ironic#L323","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dd44e297780d722fa42c6e1a212161bad8800a6d","unresolved":false,"context_lines":[{"line_number":103,"context_line":"IRONIC_PHYSICAL_INTERFACE\u003d${IRONIC_PHYSICAL_INTERFACE:-}"},{"line_number":104,"context_line":"IRONIC_PHYSICAL_CONDUCTOR_INTERFACE\u003d${IRONIC_PHYSICAL_CONDUCTOR_INTERFACE:-}"},{"line_number":105,"context_line":"IRONIC_PHYSICAL_NETWORK\u003d${IRONIC_PHYSICAL_NETWORK:-ironphys}"},{"line_number":106,"context_line":"IRONIC_PHYSICAL_NETWORK_TYPE\u003d${IRONIC_PHYSICAL_NETWORK_TYPE:-\u0027flat\u0027}"},{"line_number":107,"context_line":"IRONIC_PHYSICAL_NETWORK_SEG_MIN\u003d${IRONIC_PHYSICAL_NETWORK_SEG_MIN:-100}"},{"line_number":108,"context_line":"IRONIC_PHYSICAL_NETWORK_SEG_MAX\u003d${IRONIC_PHYSICAL_NETWORK_SEG_MAX:-110}"},{"line_number":109,"context_line":"# Neutron network options:"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_673f8c87","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":68},"in_reply_to":"ba2be162_1e00efa9","updated":"2017-03-02 17:59:52.000000000","message":"This is required because Ironic flat network interface works with Neutron vlan networks, if the BM nodes are statically configure onto a VLAN. So being able to configure PHYSICAL_NETWORK_TYPE \u003d vlan and NODE_NETWORK_INTERFACE \u003d flat is perfectly valid.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f07fbffcc058f8d144f7665dbecb0755412ca958","unresolved":false,"context_lines":[{"line_number":109,"context_line":"# Neutron network options:"},{"line_number":110,"context_line":"IRONIC_PROVISION_NETWORK_NAME\u003d${IRONIC_PROVISION_NETWORK_NAME:-ironic-service}"},{"line_number":111,"context_line":"IRONIC_PROVISION_NETWORK_SUBNET_NAME\u003d${IRONIC_PROVISION_NETWORK_SUBNET_NAME:-${IRONIC_PROVISION_NETWORK_NAME}-subnet}"},{"line_number":112,"context_line":"IRONIC_PROVISION_NETWORK_SEG\u003d${IRONIC_PROVISION_NETWORK_SEG:-$IRONIC_PHYSICAL_NETWORK_SEG_MIN}"},{"line_number":113,"context_line":"IRONIC_PROVISION_NETWORK_SUBNET_CIDR\u003d${IRONIC_PROVISION_NETWORK_SUBNET_CIDR:-10.20.30.0/24}"},{"line_number":114,"context_line":"IRONIC_CLEAN_NETWORK_NAME\u003d${IRONIC_CLEAN_NETWORK_NAME:-${IRONIC_PROVISION_NETWORK_NAME}}"},{"line_number":115,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_fe4a3bc4","line":112,"range":{"start_line":112,"start_character":61,"end_line":112,"end_character":93},"updated":"2017-03-02 13:21:21.000000000","message":"no need to pick default value here, Neutron will pick vlan id automatically if not set.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dd44e297780d722fa42c6e1a212161bad8800a6d","unresolved":false,"context_lines":[{"line_number":109,"context_line":"# Neutron network options:"},{"line_number":110,"context_line":"IRONIC_PROVISION_NETWORK_NAME\u003d${IRONIC_PROVISION_NETWORK_NAME:-ironic-service}"},{"line_number":111,"context_line":"IRONIC_PROVISION_NETWORK_SUBNET_NAME\u003d${IRONIC_PROVISION_NETWORK_SUBNET_NAME:-${IRONIC_PROVISION_NETWORK_NAME}-subnet}"},{"line_number":112,"context_line":"IRONIC_PROVISION_NETWORK_SEG\u003d${IRONIC_PROVISION_NETWORK_SEG:-$IRONIC_PHYSICAL_NETWORK_SEG_MIN}"},{"line_number":113,"context_line":"IRONIC_PROVISION_NETWORK_SUBNET_CIDR\u003d${IRONIC_PROVISION_NETWORK_SUBNET_CIDR:-10.20.30.0/24}"},{"line_number":114,"context_line":"IRONIC_CLEAN_NETWORK_NAME\u003d${IRONIC_CLEAN_NETWORK_NAME:-${IRONIC_PROVISION_NETWORK_NAME}}"},{"line_number":115,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_473368ab","line":112,"range":{"start_line":112,"start_character":61,"end_line":112,"end_character":93},"in_reply_to":"ba2be162_fe4a3bc4","updated":"2017-03-02 17:59:52.000000000","message":"We need to know what segmentation we\u0027re going to use for the provisioning network so that the Ironic conductor can be plumbed into it.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"}],"devstack/lib/ironic-neutron":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"function ironic_configure_neutron_physical_network {"},{"line_number":4,"context_line":"    if [[ -z \"$IRONIC_PHYSICAL_INTERFACE\" ]]; then"},{"line_number":5,"context_line":"        die $LINENO \"IRONIC_PHYSICAL_INTERFACE required to configure ironic \\"},{"line_number":6,"context_line":"physical network in neutron, either set IRONIC_PHYSICAL_INTERFACE to the \\"},{"line_number":7,"context_line":"physical network interface to use for your nodes in local.conf or set \\"}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_b4801b48","line":4,"updated":"2017-02-17 14:57:17.000000000","message":"When we using simulated environment this variable is always set to bminthost [0]. I would suggest to move this check outside from function\nif [[ \"$IRONIC_BAREMETAL_BASIC_OPS\" \u003d\u003d \"True\" \u0026\u0026 \"$IRONIC_IS_HARDWARE\" \u003d\u003d \"False\" \u0026\u0026 -z \"$IRONIC_PHYSICAL_INTERFACE\" ]] to allow fail earlier at the source phase.\n\n[0] https://review.openstack.org/#/c/392959/28/devstack/lib/ironic-simulation@41","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    fi"},{"line_number":10,"context_line":"    if [[ \"$Q_AGENT\" \u003d\u003d \"openvswitch\" ]]; then"},{"line_number":11,"context_line":"        ironic_configure_neutron_ironic_ovs_bridge"},{"line_number":12,"context_line":"    else"},{"line_number":13,"context_line":"        ironic_configure_neutron_ironic_lb"},{"line_number":14,"context_line":"    fi"},{"line_number":15,"context_line":"    if [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"flat\" ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_112f39a2","line":12,"updated":"2017-02-17 14:57:17.000000000","message":"I would add here elif [[ \"$Q_AGENT\" \u003d\u003d \"linuxbridge\" ]] since Neutron supports other types than openvswitch and linuxbridge for example mcvtap.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    elif [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"vlan\" ]]; then"},{"line_number":18,"context_line":"        ironic_configure_neutron_vlan_network"},{"line_number":19,"context_line":"    else"},{"line_number":20,"context_line":"        die $LINENO \"Unsupported network type provided ${IRONIC_PHYSICAL_NETWORK_TYPE} only vlan and flat are supported.\""},{"line_number":21,"context_line":"    fi"},{"line_number":22,"context_line":"}"},{"line_number":23,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_145567c5","line":20,"updated":"2017-02-17 14:57:17.000000000","message":"ditto about moving outside from function.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":22,"context_line":"}"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"function ironic_configure_neutron_ironic_lb {"},{"line_number":25,"context_line":"    if [[ -z \"$LB_INTERFACE_MAPPINGS\" ]]; then"},{"line_number":26,"context_line":"        LB_INTERFACE_MAPPINGS\u003d\"$IRONIC_PHYSICAL_NETWORK:$IRONIC_PHYSICAL_INTERFACE\""},{"line_number":27,"context_line":"    else"},{"line_number":28,"context_line":"        LB_INTERFACE_MAPPINGS+\u003d\",$IRONIC_PHYSICAL_NETWORK:$IRONIC_PHYSICAL_INTERFACE\""}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_92ade48a","line":25,"updated":"2017-02-17 14:57:17.000000000","message":"No need to keep this logic inside function, we may just set LB_INTERFACE_MAPPINGS variable and Neutron will add it to config for us [0], otherwise we override here value that was picked by Neutron devstack plugin [1]\n\n[0] https://github.com/openstack-dev/devstack/blob/289c600646710a7e689dd7c4d8104f9500826a4c/lib/neutron_plugins/linuxbridge_agent#L71\n[1] https://github.com/openstack-dev/devstack/blob/289c600646710a7e689dd7c4d8104f9500826a4c/lib/neutron_plugins/linuxbridge_agent#L62","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    if [[ -n \"$ironic_physical_ip\" ]]; then"},{"line_number":38,"context_line":"        # Remove IP address from physical interface so we can assign it to the bridge"},{"line_number":39,"context_line":"        sudo ip addr del $IRONIC_NETWORK_CONDUCTOR_IP dev $IRONIC_PHYSICAL_INTERFACE"},{"line_number":40,"context_line":"        sudo ip addr add $conductor_ip dev $IRONIC_PHYSICAL_NETWORK"},{"line_number":41,"context_line":"    fi"},{"line_number":42,"context_line":"    sudo ip link set $IRONIC_PHYSICAL_NETWORK up"},{"line_number":43,"context_line":"    sudo ovs-vsctl add-port $IRONIC_PHYSICAL_NETWORK $IRONIC_PHYSICAL_INTERFACE"}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_54a0bfa5","line":40,"range":{"start_line":40,"start_character":26,"end_line":40,"end_character":38},"updated":"2017-02-17 14:57:17.000000000","message":"the variable not defined anywhere.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    # the wrong \"physical\" network to the tenant networks. Uncomment this IF statement when we can"},{"line_number":64,"context_line":"    # choose better."},{"line_number":65,"context_line":"    #if [[ -z \"$Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS\" ]]; then"},{"line_number":66,"context_line":"    Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS\u003d\"network_vlan_ranges\u003d$IRONIC_PHYSICAL_NETWORK:$lower_tenant_vlan:$IRONIC_PHYSICAL_NETWORK_SEG_MAX\""},{"line_number":67,"context_line":"    #else"},{"line_number":68,"context_line":"    #    Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS+\u003d\",$IRONIC_PHYSICAL_NETWORK:$lower_tenant_vlan:$IRONIC_PHYSICAL_NETWORK_SEG_MAX\""},{"line_number":69,"context_line":"    #fi"}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_92e7a43f","line":66,"range":{"start_line":66,"start_character":101,"end_line":66,"end_character":132},"updated":"2017-02-17 14:57:17.000000000","message":"Lets drop this ironic_configure_neutron_vlan_network function, since Neutron already setup vlan ranges in its devstack plugin\n\nWe just need to set\nML2_VLAN_RANGES\u003d$IRONIC_PHYSICAL_NETWORK:$LOWEST_TENANT_VLAN:$HIGEST_TENANT_VLAN\n\nAlso I wondered if we really need to have IRONIC_PHYSICAL_NETWORK_SEG_MIN and IRONIC_PHYSICAL_NETWORK_SEG_MAX\nsince we may specify them directly by using ML2_VLAN_RANGES variable in local conf.\n\nhttps://github.com/openstack-dev/devstack/blob/858a105c81f1571825d086d359ca7538079072fb/lib/neutron_plugins/ml2#L96","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    local net_id"},{"line_number":75,"context_line":"    local subnet_id"},{"line_number":76,"context_line":"    if [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"flat\" ]]; then"},{"line_number":77,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVIS_NETWORK_NAME --share --provider-network-type flat --provider-physical-network $IRONIC_PHYSICAL_NETWORK -f value -c id)"},{"line_number":78,"context_line":"    elif [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"vlan\" ]]; then"},{"line_number":79,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVIS_NETWORK_NAME --share --provider-network-type vlan --provider-physical-network $IRONIC_PHYSICAL_NETWORK --provider-segment $IRONIC_PROVIS_NETWORK_SEG -f value -c id)"},{"line_number":80,"context_line":"    fi"}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_55419638","line":77,"updated":"2017-02-17 14:57:17.000000000","message":"It is bit strange as we do not have separate provision network for flat case.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    if [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"flat\" ]]; then"},{"line_number":77,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVIS_NETWORK_NAME --share --provider-network-type flat --provider-physical-network $IRONIC_PHYSICAL_NETWORK -f value -c id)"},{"line_number":78,"context_line":"    elif [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"vlan\" ]]; then"},{"line_number":79,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVIS_NETWORK_NAME --share --provider-network-type vlan --provider-physical-network $IRONIC_PHYSICAL_NETWORK --provider-segment $IRONIC_PROVIS_NETWORK_SEG -f value -c id)"},{"line_number":80,"context_line":"    fi"},{"line_number":81,"context_line":"    die_if_not_set $LINENO net_id \"Failed to create Neutron flat network $IRONIC_PROVIS_NETWORK_NAME\""},{"line_number":82,"context_line":"    subnet_id\u003d$(openstack subnet create $IRONIC_PROVIS_NETWORK_SUBNET_NAME --dhcp --network $IRONIC_PROVIS_NETWORK_NAME --subnet-range $IRONIC_PROVIS_NETWORK_SUBNET_CIDR --allocation-pool start\u003d$IRONIC_NETWORK_ALLOCATION_MIN,end\u003d$IRONIC_NETWORK_ALLOCATION_MAX -f value -c id)"}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_34e26ba0","line":79,"range":{"start_line":79,"start_character":160,"end_line":79,"end_character":205},"updated":"2017-02-17 14:57:17.000000000","message":"I would pick segmentation ID automatically by neutron here.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    if [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"flat\" ]]; then"},{"line_number":77,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVIS_NETWORK_NAME --share --provider-network-type flat --provider-physical-network $IRONIC_PHYSICAL_NETWORK -f value -c id)"},{"line_number":78,"context_line":"    elif [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"vlan\" ]]; then"},{"line_number":79,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVIS_NETWORK_NAME --share --provider-network-type vlan --provider-physical-network $IRONIC_PHYSICAL_NETWORK --provider-segment $IRONIC_PROVIS_NETWORK_SEG -f value -c id)"},{"line_number":80,"context_line":"    fi"},{"line_number":81,"context_line":"    die_if_not_set $LINENO net_id \"Failed to create Neutron flat network $IRONIC_PROVIS_NETWORK_NAME\""},{"line_number":82,"context_line":"    subnet_id\u003d$(openstack subnet create $IRONIC_PROVIS_NETWORK_SUBNET_NAME --dhcp --network $IRONIC_PROVIS_NETWORK_NAME --subnet-range $IRONIC_PROVIS_NETWORK_SUBNET_CIDR --allocation-pool start\u003d$IRONIC_NETWORK_ALLOCATION_MIN,end\u003d$IRONIC_NETWORK_ALLOCATION_MAX -f value -c id)"}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_d453cf6a","line":79,"updated":"2017-02-17 14:57:17.000000000","message":"provision network shouldn\u0027t be shared.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    elif [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"vlan\" ]]; then"},{"line_number":79,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVIS_NETWORK_NAME --share --provider-network-type vlan --provider-physical-network $IRONIC_PHYSICAL_NETWORK --provider-segment $IRONIC_PROVIS_NETWORK_SEG -f value -c id)"},{"line_number":80,"context_line":"    fi"},{"line_number":81,"context_line":"    die_if_not_set $LINENO net_id \"Failed to create Neutron flat network $IRONIC_PROVIS_NETWORK_NAME\""},{"line_number":82,"context_line":"    subnet_id\u003d$(openstack subnet create $IRONIC_PROVIS_NETWORK_SUBNET_NAME --dhcp --network $IRONIC_PROVIS_NETWORK_NAME --subnet-range $IRONIC_PROVIS_NETWORK_SUBNET_CIDR --allocation-pool start\u003d$IRONIC_NETWORK_ALLOCATION_MIN,end\u003d$IRONIC_NETWORK_ALLOCATION_MAX -f value -c id)"},{"line_number":83,"context_line":"    die_if_not_set $LINENO subnet_id \"Failed to create Neutron subnet $IRONIC_PROVIS_NETWORK_SUBNET_NAME\""},{"line_number":84,"context_line":"    neutron router-interface-add $Q_ROUTER_NAME $subnet_id"}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_7207901d","line":81,"range":{"start_line":81,"start_character":60,"end_line":81,"end_character":64},"updated":"2017-02-17 14:57:17.000000000","message":"s/flat/$IRONIC_PHYSICAL_NETWORK_TYPE","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f07fbffcc058f8d144f7665dbecb0755412ca958","unresolved":false,"context_lines":[{"line_number":3,"context_line":"function ironic_configure_neutron_physical_network {"},{"line_number":4,"context_line":"    if [[ \"$Q_AGENT\" \u003d\u003d \"openvswitch\" ]]; then"},{"line_number":5,"context_line":"        ironic_configure_neutron_ironic_ovs_bridge"},{"line_number":6,"context_line":"    else"},{"line_number":7,"context_line":"        ironic_configure_neutron_ironic_lb"},{"line_number":8,"context_line":"    fi"},{"line_number":9,"context_line":"    if [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"flat\" ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_8cb76085","line":6,"updated":"2017-03-02 13:21:21.000000000","message":"I would add here elif [[ \"$Q_AGENT\" \u003d\u003d \"linuxbridge\" ]] since Neutron supports other types than openvswitch and linuxbridge for example mcvtap.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dd44e297780d722fa42c6e1a212161bad8800a6d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"function ironic_configure_neutron_physical_network {"},{"line_number":4,"context_line":"    if [[ \"$Q_AGENT\" \u003d\u003d \"openvswitch\" ]]; then"},{"line_number":5,"context_line":"        ironic_configure_neutron_ironic_ovs_bridge"},{"line_number":6,"context_line":"    else"},{"line_number":7,"context_line":"        ironic_configure_neutron_ironic_lb"},{"line_number":8,"context_line":"    fi"},{"line_number":9,"context_line":"    if [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"flat\" ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_e7745c37","line":6,"in_reply_to":"ba2be162_8cb76085","updated":"2017-03-02 17:59:52.000000000","message":"Done","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f07fbffcc058f8d144f7665dbecb0755412ca958","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    fi"},{"line_number":16,"context_line":"}"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"function ironic_configure_neutron_ironic_lb {"},{"line_number":19,"context_line":"    # Append interface mappings here to ensure that we don\u0027t affect anything"},{"line_number":20,"context_line":"    # that the neutron devstack plugin has done."},{"line_number":21,"context_line":"    if [[ -z \"$LB_INTERFACE_MAPPINGS\" ]]; then"},{"line_number":22,"context_line":"        LB_INTERFACE_MAPPINGS\u003d\"$IRONIC_PHYSICAL_NETWORK:$IRONIC_PHYSICAL_INTERFACE\""},{"line_number":23,"context_line":"    else"},{"line_number":24,"context_line":"        LB_INTERFACE_MAPPINGS+\u003d\",$IRONIC_PHYSICAL_NETWORK:$IRONIC_PHYSICAL_INTERFACE\""},{"line_number":25,"context_line":"    fi"},{"line_number":26,"context_line":"    iniset /$Q_PLUGIN_CONF_FILE linux_bridge physical_interface_mappings $LB_INTERFACE_MAPPINGS"},{"line_number":27,"context_line":"}"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"function ironic_configure_neutron_ironic_ovs_bridge {"},{"line_number":30,"context_line":"    sudo ovs-vsctl add-br $IRONIC_PHYSICAL_NETWORK"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_0736e2e5","line":27,"range":{"start_line":18,"start_character":0,"end_line":27,"end_character":1},"updated":"2017-03-02 13:21:21.000000000","message":"Please move this to separate patch.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dd44e297780d722fa42c6e1a212161bad8800a6d","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    fi"},{"line_number":16,"context_line":"}"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"function ironic_configure_neutron_ironic_lb {"},{"line_number":19,"context_line":"    # Append interface mappings here to ensure that we don\u0027t affect anything"},{"line_number":20,"context_line":"    # that the neutron devstack plugin has done."},{"line_number":21,"context_line":"    if [[ -z \"$LB_INTERFACE_MAPPINGS\" ]]; then"},{"line_number":22,"context_line":"        LB_INTERFACE_MAPPINGS\u003d\"$IRONIC_PHYSICAL_NETWORK:$IRONIC_PHYSICAL_INTERFACE\""},{"line_number":23,"context_line":"    else"},{"line_number":24,"context_line":"        LB_INTERFACE_MAPPINGS+\u003d\",$IRONIC_PHYSICAL_NETWORK:$IRONIC_PHYSICAL_INTERFACE\""},{"line_number":25,"context_line":"    fi"},{"line_number":26,"context_line":"    iniset /$Q_PLUGIN_CONF_FILE linux_bridge physical_interface_mappings $LB_INTERFACE_MAPPINGS"},{"line_number":27,"context_line":"}"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"function ironic_configure_neutron_ironic_ovs_bridge {"},{"line_number":30,"context_line":"    sudo ovs-vsctl add-br $IRONIC_PHYSICAL_NETWORK"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_c77bd826","line":27,"range":{"start_line":18,"start_character":0,"end_line":27,"end_character":1},"in_reply_to":"ba2be162_0736e2e5","updated":"2017-03-02 17:59:52.000000000","message":"Done","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f07fbffcc058f8d144f7665dbecb0755412ca958","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    fi"},{"line_number":38,"context_line":"    sudo ip link set $IRONIC_PHYSICAL_NETWORK up"},{"line_number":39,"context_line":"    sudo ovs-vsctl add-port $IRONIC_PHYSICAL_NETWORK $IRONIC_PHYSICAL_INTERFACE"},{"line_number":40,"context_line":"    OVS_BRIDGE_MAPPINGS\u003d\"${OVS_BRIDGE_MAPPINGS},${IRONIC_PHYSICAL_NETWORK}:${IRONIC_PHYSICAL_NETWORK}\""},{"line_number":41,"context_line":"    iniset /$Q_PLUGIN_CONF_FILE ovs bridge_mappings $OVS_BRIDGE_MAPPINGS"},{"line_number":42,"context_line":"}"},{"line_number":43,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_84d2d0d0","line":40,"range":{"start_line":40,"start_character":25,"end_line":40,"end_character":47},"updated":"2017-03-02 13:21:21.000000000","message":"OVS_BRIDGE_MAPPINGS may be set to \u0027\u0027 in this case it will become ,ironiphys:ironphys","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f07fbffcc058f8d144f7665dbecb0755412ca958","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    fi"},{"line_number":38,"context_line":"    sudo ip link set $IRONIC_PHYSICAL_NETWORK up"},{"line_number":39,"context_line":"    sudo ovs-vsctl add-port $IRONIC_PHYSICAL_NETWORK $IRONIC_PHYSICAL_INTERFACE"},{"line_number":40,"context_line":"    OVS_BRIDGE_MAPPINGS\u003d\"${OVS_BRIDGE_MAPPINGS},${IRONIC_PHYSICAL_NETWORK}:${IRONIC_PHYSICAL_NETWORK}\""},{"line_number":41,"context_line":"    iniset /$Q_PLUGIN_CONF_FILE ovs bridge_mappings $OVS_BRIDGE_MAPPINGS"},{"line_number":42,"context_line":"}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"function ironic_configure_neutron_flat_network {"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_c4f92882","line":41,"range":{"start_line":40,"start_character":4,"end_line":41,"end_character":72},"updated":"2017-03-02 13:21:21.000000000","message":"this should be done in ironic_configure_neutron_vlan_network function.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dd44e297780d722fa42c6e1a212161bad8800a6d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    fi"},{"line_number":38,"context_line":"    sudo ip link set $IRONIC_PHYSICAL_NETWORK up"},{"line_number":39,"context_line":"    sudo ovs-vsctl add-port $IRONIC_PHYSICAL_NETWORK $IRONIC_PHYSICAL_INTERFACE"},{"line_number":40,"context_line":"    OVS_BRIDGE_MAPPINGS\u003d\"${OVS_BRIDGE_MAPPINGS},${IRONIC_PHYSICAL_NETWORK}:${IRONIC_PHYSICAL_NETWORK}\""},{"line_number":41,"context_line":"    iniset /$Q_PLUGIN_CONF_FILE ovs bridge_mappings $OVS_BRIDGE_MAPPINGS"},{"line_number":42,"context_line":"}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"function ironic_configure_neutron_flat_network {"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_87eac0aa","line":41,"range":{"start_line":40,"start_character":4,"end_line":41,"end_character":72},"in_reply_to":"ba2be162_c4f92882","updated":"2017-03-02 17:59:52.000000000","message":"This is required regardless of if we configure neutron for flat or vlan provider that is why it is in this function.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f07fbffcc058f8d144f7665dbecb0755412ca958","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"function ironic_configure_neutron_vlan_network {"},{"line_number":56,"context_line":"    local lower_tenant_vlan"},{"line_number":57,"context_line":"    lower_tenant_vlan\u003d$(($IRONIC_PHYSICAL_NETWORK_SEG_MIN + 1))"},{"line_number":58,"context_line":"    # Override this option in the Neutron configuration to ensure that only the"},{"line_number":59,"context_line":"    # Ironic physical network is used for tenant VLANs because we currently"},{"line_number":60,"context_line":"    # don\u0027t support physnet mapping and scheduling placement in Ironic."}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_64623caf","line":57,"range":{"start_line":57,"start_character":4,"end_line":57,"end_character":63},"updated":"2017-03-02 13:21:21.000000000","message":"I would prefer to drop setting segmentation_id for min vlan, and let neutron pick that value automatically.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dd44e297780d722fa42c6e1a212161bad8800a6d","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"function ironic_configure_neutron_vlan_network {"},{"line_number":56,"context_line":"    local lower_tenant_vlan"},{"line_number":57,"context_line":"    lower_tenant_vlan\u003d$(($IRONIC_PHYSICAL_NETWORK_SEG_MIN + 1))"},{"line_number":58,"context_line":"    # Override this option in the Neutron configuration to ensure that only the"},{"line_number":59,"context_line":"    # Ironic physical network is used for tenant VLANs because we currently"},{"line_number":60,"context_line":"    # don\u0027t support physnet mapping and scheduling placement in Ironic."}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_07733016","line":57,"range":{"start_line":57,"start_character":4,"end_line":57,"end_character":63},"in_reply_to":"ba2be162_64623caf","updated":"2017-03-02 17:59:52.000000000","message":"See the comment in devstack/lib/ironic, this is required so that we have a known VLAN to plumb the conductor into.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f07fbffcc058f8d144f7665dbecb0755412ca958","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    if [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"flat\" ]]; then"},{"line_number":69,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVISION_NETWORK_NAME --share --provider-network-type flat --provider-physical-network $IRONIC_PHYSICAL_NETWORK -f value -c id)"},{"line_number":70,"context_line":"    elif [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"vlan\" ]]; then"},{"line_number":71,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVISION_NETWORK_NAME --share --provider-network-type vlan --provider-physical-network $IRONIC_PHYSICAL_NETWORK --provider-segment $IRONIC_PROVISION_NETWORK_SEG -f value -c id)"},{"line_number":72,"context_line":"    fi"},{"line_number":73,"context_line":"    die_if_not_set $LINENO net_id \"Failed to create Neutron flat network $IRONIC_PROVISION_NETWORK_NAME\""},{"line_number":74,"context_line":"    subnet_id\u003d$(openstack subnet create $IRONIC_PROVISION_NETWORK_SUBNET_NAME --dhcp --network $IRONIC_PROVISION_NETWORK_NAME --subnet-range $IRONIC_PROVISION_NETWORK_SUBNET_CIDR --allocation-pool start\u003d$IRONIC_NETWORK_ALLOCATION_MIN,end\u003d$IRONIC_NETWORK_ALLOCATION_MAX -f value -c id)"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_c15f5a3f","line":71,"range":{"start_line":71,"start_character":75,"end_line":71,"end_character":80},"updated":"2017-03-02 13:21:21.000000000","message":"provision network shouldn\u0027t be shared.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dd44e297780d722fa42c6e1a212161bad8800a6d","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    if [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"flat\" ]]; then"},{"line_number":69,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVISION_NETWORK_NAME --share --provider-network-type flat --provider-physical-network $IRONIC_PHYSICAL_NETWORK -f value -c id)"},{"line_number":70,"context_line":"    elif [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"vlan\" ]]; then"},{"line_number":71,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVISION_NETWORK_NAME --share --provider-network-type vlan --provider-physical-network $IRONIC_PHYSICAL_NETWORK --provider-segment $IRONIC_PROVISION_NETWORK_SEG -f value -c id)"},{"line_number":72,"context_line":"    fi"},{"line_number":73,"context_line":"    die_if_not_set $LINENO net_id \"Failed to create Neutron flat network $IRONIC_PROVISION_NETWORK_NAME\""},{"line_number":74,"context_line":"    subnet_id\u003d$(openstack subnet create $IRONIC_PROVISION_NETWORK_SUBNET_NAME --dhcp --network $IRONIC_PROVISION_NETWORK_NAME --subnet-range $IRONIC_PROVISION_NETWORK_SUBNET_CIDR --allocation-pool start\u003d$IRONIC_NETWORK_ALLOCATION_MIN,end\u003d$IRONIC_NETWORK_ALLOCATION_MAX -f value -c id)"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_c701183a","line":71,"range":{"start_line":71,"start_character":75,"end_line":71,"end_character":80},"in_reply_to":"ba2be162_c15f5a3f","updated":"2017-03-02 17:59:52.000000000","message":"For cases when you are doing Flat Ironic Network Interface + VLAN provider network + statically configured BMs on VLANs then this needs to be shared.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f07fbffcc058f8d144f7665dbecb0755412ca958","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    elif [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"vlan\" ]]; then"},{"line_number":71,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVISION_NETWORK_NAME --share --provider-network-type vlan --provider-physical-network $IRONIC_PHYSICAL_NETWORK --provider-segment $IRONIC_PROVISION_NETWORK_SEG -f value -c id)"},{"line_number":72,"context_line":"    fi"},{"line_number":73,"context_line":"    die_if_not_set $LINENO net_id \"Failed to create Neutron flat network $IRONIC_PROVISION_NETWORK_NAME\""},{"line_number":74,"context_line":"    subnet_id\u003d$(openstack subnet create $IRONIC_PROVISION_NETWORK_SUBNET_NAME --dhcp --network $IRONIC_PROVISION_NETWORK_NAME --subnet-range $IRONIC_PROVISION_NETWORK_SUBNET_CIDR --allocation-pool start\u003d$IRONIC_NETWORK_ALLOCATION_MIN,end\u003d$IRONIC_NETWORK_ALLOCATION_MAX -f value -c id)"},{"line_number":75,"context_line":"    die_if_not_set $LINENO subnet_id \"Failed to create Neutron subnet $IRONIC_PROVISION_NETWORK_SUBNET_NAME\""},{"line_number":76,"context_line":"    neutron router-interface-add $Q_ROUTER_NAME $subnet_id"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_c1783ac7","line":73,"range":{"start_line":73,"start_character":60,"end_line":73,"end_character":64},"updated":"2017-03-02 13:21:21.000000000","message":"s/flat/$IRONIC_PHYSICAL_NETWORK_TYPE","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dd44e297780d722fa42c6e1a212161bad8800a6d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    elif [[ \"$IRONIC_PHYSICAL_NETWORK_TYPE\" \u003d\u003d \"vlan\" ]]; then"},{"line_number":71,"context_line":"        net_id\u003d$(openstack network create $IRONIC_PROVISION_NETWORK_NAME --share --provider-network-type vlan --provider-physical-network $IRONIC_PHYSICAL_NETWORK --provider-segment $IRONIC_PROVISION_NETWORK_SEG -f value -c id)"},{"line_number":72,"context_line":"    fi"},{"line_number":73,"context_line":"    die_if_not_set $LINENO net_id \"Failed to create Neutron flat network $IRONIC_PROVISION_NETWORK_NAME\""},{"line_number":74,"context_line":"    subnet_id\u003d$(openstack subnet create $IRONIC_PROVISION_NETWORK_SUBNET_NAME --dhcp --network $IRONIC_PROVISION_NETWORK_NAME --subnet-range $IRONIC_PROVISION_NETWORK_SUBNET_CIDR --allocation-pool start\u003d$IRONIC_NETWORK_ALLOCATION_MIN,end\u003d$IRONIC_NETWORK_ALLOCATION_MAX -f value -c id)"},{"line_number":75,"context_line":"    die_if_not_set $LINENO subnet_id \"Failed to create Neutron subnet $IRONIC_PROVISION_NETWORK_SUBNET_NAME\""},{"line_number":76,"context_line":"    neutron router-interface-add $Q_ROUTER_NAME $subnet_id"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_5206c41d","line":73,"range":{"start_line":73,"start_character":60,"end_line":73,"end_character":64},"in_reply_to":"ba2be162_c1783ac7","updated":"2017-03-02 17:59:52.000000000","message":"Done","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"}],"devstack/lib/ironic-simulation":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    if [[ \"$seg_type\" \u003d\u003d \"flat\" ]]; then"},{"line_number":27,"context_line":"        sudo ovs-vsctl add-port $vswitch_name $tapif"},{"line_number":28,"context_line":"    elif [[ \"$seg_type\" \u003d\u003d \"vlan\" ]]; then"},{"line_number":29,"context_line":"        sudo ovs-vsctl add-port $vswitch_name $tapif tag\u003d$IRONIC_PROVIS_NETWORK_SEG"},{"line_number":30,"context_line":"    fi"},{"line_number":31,"context_line":"}"},{"line_number":32,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_347eebae","line":29,"updated":"2017-02-17 14:57:17.000000000","message":"With this we pre-plug VM to provision network we shouldn\u0027t do it. It will be done when ironic adds provisioning network to instance.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        return"},{"line_number":99,"context_line":"    fi"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    # Connect multinode bmswitchs together with a tunnel to simulate a single physical network"},{"line_number":102,"context_line":"    # We use a VXLAN tunnel because some CI node providers don\u0027t allow GRE"},{"line_number":103,"context_line":"    if [[ \"$HOST_TOPOLOGY_ROLE\" \u003d\u003d \"primary\" ]]; then"},{"line_number":104,"context_line":"        local id"},{"line_number":105,"context_line":"        for node in $HOST_TOPOLOGY_SUBNODES; do"},{"line_number":106,"context_line":"            id\u003d$(echo $node | cut -d \u0027.\u0027 -f 4)"},{"line_number":107,"context_line":"            sudo ip link add bmswdown$id type vxlan id 1 remote $node local $HOST_IP dstport 4789"},{"line_number":108,"context_line":"            sudo ip link set bmswdown$id up"},{"line_number":109,"context_line":"            ironic_add_port_to_virtual_switch $vswitch_name bmswdown$id flat"},{"line_number":110,"context_line":"        done"},{"line_number":111,"context_line":"    elif [[ \"$HOST_TOPOLOGY_ROLE\" \u003d\u003d \"subnode\" ]]; then"},{"line_number":112,"context_line":"        sudo ip link add bmswitchup type vxlan id 1 remote $SERVICE_HOST local $HOST_IP dstport 4789"},{"line_number":113,"context_line":"        sudo ip link set bmswitchup up"},{"line_number":114,"context_line":"        ironic_add_port_to_virtual_switch $vswitch_name bmswitchup flat"},{"line_number":115,"context_line":"    fi"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":28,"id":"fa31d9ce_94115760","line":115,"range":{"start_line":101,"start_character":4,"end_line":115,"end_character":6},"updated":"2017-02-17 14:57:17.000000000","message":"I like the idea when we configure vxlan from our devstack plugin but it is better to do it as separate change.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f07fbffcc058f8d144f7665dbecb0755412ca958","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    if [[ \"$seg_type\" \u003d\u003d \"flat\" ]]; then"},{"line_number":27,"context_line":"        sudo ovs-vsctl add-port $vswitch_name $tapif"},{"line_number":28,"context_line":"    elif [[ \"$seg_type\" \u003d\u003d \"vlan\" ]]; then"},{"line_number":29,"context_line":"        sudo ovs-vsctl add-port $vswitch_name $tapif tag\u003d$IRONIC_PROVISION_NETWORK_SEG"},{"line_number":30,"context_line":"    fi"},{"line_number":31,"context_line":"}"},{"line_number":32,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_67095edd","line":29,"range":{"start_line":29,"start_character":58,"end_line":29,"end_character":86},"updated":"2017-03-02 13:21:21.000000000","message":"we shouldn\u0027t preplug VMs to provisioning network With this we pre-plug VM to provision network we shouldn\u0027t do it. It will be done when ironic adds provisioning network to instance.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dd44e297780d722fa42c6e1a212161bad8800a6d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    if [[ \"$seg_type\" \u003d\u003d \"flat\" ]]; then"},{"line_number":27,"context_line":"        sudo ovs-vsctl add-port $vswitch_name $tapif"},{"line_number":28,"context_line":"    elif [[ \"$seg_type\" \u003d\u003d \"vlan\" ]]; then"},{"line_number":29,"context_line":"        sudo ovs-vsctl add-port $vswitch_name $tapif tag\u003d$IRONIC_PROVISION_NETWORK_SEG"},{"line_number":30,"context_line":"    fi"},{"line_number":31,"context_line":"}"},{"line_number":32,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_b23c60c9","line":29,"range":{"start_line":29,"start_character":58,"end_line":29,"end_character":86},"in_reply_to":"ba2be162_67095edd","updated":"2017-03-02 17:59:52.000000000","message":"This is done to simulate the case when you have BM nodes statically configured onto a VLAN and you use a neutron vlan network + the Ironic flat network interface.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f07fbffcc058f8d144f7665dbecb0755412ca958","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        return"},{"line_number":99,"context_line":"    fi"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    # Connect multinode bmswitchs together with a tunnel to simulate a single physical network"},{"line_number":102,"context_line":"    # We use a VXLAN tunnel because some CI node providers don\u0027t allow GRE"},{"line_number":103,"context_line":"    if [[ \"$HOST_TOPOLOGY_ROLE\" \u003d\u003d \"primary\" ]]; then"},{"line_number":104,"context_line":"        local id"},{"line_number":105,"context_line":"        for node in $HOST_TOPOLOGY_SUBNODES; do"},{"line_number":106,"context_line":"            id\u003d$(echo $node | cut -d \u0027.\u0027 -f 4)"},{"line_number":107,"context_line":"            sudo ip link add bmswdown$id type vxlan id 1 remote $node local $HOST_IP dstport 4789"},{"line_number":108,"context_line":"            sudo ip link set bmswdown$id up"},{"line_number":109,"context_line":"            ironic_add_port_to_virtual_switch $vswitch_name bmswdown$id flat"},{"line_number":110,"context_line":"        done"},{"line_number":111,"context_line":"    elif [[ \"$HOST_TOPOLOGY_ROLE\" \u003d\u003d \"subnode\" ]]; then"},{"line_number":112,"context_line":"        sudo ip link add bmswitchup type vxlan id 1 remote $SERVICE_HOST local $HOST_IP dstport 4789"},{"line_number":113,"context_line":"        sudo ip link set bmswitchup up"},{"line_number":114,"context_line":"        ironic_add_port_to_virtual_switch $vswitch_name bmswitchup flat"},{"line_number":115,"context_line":"    fi"},{"line_number":116,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_c7c5aa8e","line":115,"range":{"start_line":101,"start_character":4,"end_line":115,"end_character":6},"updated":"2017-03-02 13:21:21.000000000","message":"I still think this should be done separately.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dd44e297780d722fa42c6e1a212161bad8800a6d","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        return"},{"line_number":99,"context_line":"    fi"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    # Connect multinode bmswitchs together with a tunnel to simulate a single physical network"},{"line_number":102,"context_line":"    # We use a VXLAN tunnel because some CI node providers don\u0027t allow GRE"},{"line_number":103,"context_line":"    if [[ \"$HOST_TOPOLOGY_ROLE\" \u003d\u003d \"primary\" ]]; then"},{"line_number":104,"context_line":"        local id"},{"line_number":105,"context_line":"        for node in $HOST_TOPOLOGY_SUBNODES; do"},{"line_number":106,"context_line":"            id\u003d$(echo $node | cut -d \u0027.\u0027 -f 4)"},{"line_number":107,"context_line":"            sudo ip link add bmswdown$id type vxlan id 1 remote $node local $HOST_IP dstport 4789"},{"line_number":108,"context_line":"            sudo ip link set bmswdown$id up"},{"line_number":109,"context_line":"            ironic_add_port_to_virtual_switch $vswitch_name bmswdown$id flat"},{"line_number":110,"context_line":"        done"},{"line_number":111,"context_line":"    elif [[ \"$HOST_TOPOLOGY_ROLE\" \u003d\u003d \"subnode\" ]]; then"},{"line_number":112,"context_line":"        sudo ip link add bmswitchup type vxlan id 1 remote $SERVICE_HOST local $HOST_IP dstport 4789"},{"line_number":113,"context_line":"        sudo ip link set bmswitchup up"},{"line_number":114,"context_line":"        ironic_add_port_to_virtual_switch $vswitch_name bmswitchup flat"},{"line_number":115,"context_line":"    fi"},{"line_number":116,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":32,"id":"ba2be162_f23258f1","line":115,"range":{"start_line":101,"start_character":4,"end_line":115,"end_character":6},"in_reply_to":"ba2be162_c7c5aa8e","updated":"2017-03-02 17:59:52.000000000","message":"Done","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"}],"devstack/tools/ironic/templates/vm.xml":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    \u003cinterface type\u003d\u0027ethernet\u0027\u003e"},{"line_number":48,"context_line":"      \u003ctarget dev\u003d\u0027{{ target }}\u0027/\u003e"},{"line_number":49,"context_line":"      \u003cmodel type\u003d\u0027{{ nicdriver }}\u0027/\u003e"},{"line_number":50,"context_line":"      \u003cscript path\u003d\u0027no\u0027/\u003e"},{"line_number":51,"context_line":"      \u003caddress type\u003d\u0027pci\u0027 domain\u003d\u00270x0000\u0027 bus\u003d\u00270x00\u0027 slot\u003d\u00270x04\u0027 function\u003d\u00270x0\u0027/\u003e"},{"line_number":52,"context_line":"    \u003c/interface\u003e"},{"line_number":53,"context_line":"    \u003cinput type\u003d\u0027mouse\u0027 bus\u003d\u0027ps2\u0027/\u003e"}],"source_content_type":"application/xml","patch_set":28,"id":"fa31d9ce_11c4993e","line":50,"updated":"2017-02-17 14:57:17.000000000","message":"why this is needed?","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"}],"doc/source/dev/simulation.rst":[{"author":{"_account_id":22226,"name":"Varun Gadiraju","email":"varun.gadiraju@intel.com","username":"gadirajv"},"change_message_id":"c0972fca76db38535dba83d032e7f65afa59a538","unresolved":false,"context_lines":[{"line_number":24,"context_line":"                                                                 |                |"},{"line_number":25,"context_line":"                                                             +---+----+       +---+----+"},{"line_number":26,"context_line":" +-----------------------------------------------------------+        +-------+        +------------------------+"},{"line_number":27,"context_line":" |Controller Node                                            |  eth1  |       |  eth0  |                        |"},{"line_number":28,"context_line":" |   +---------------------------------------------------+   |        |       |        |                        |"},{"line_number":29,"context_line":" |   |BareMetal Simulation                               |   +---+----+       +----+---+                        |"},{"line_number":30,"context_line":" |   | +-----+    +-----+      +-----+      +-----+      |       |                 |       +----------------+   |"}],"source_content_type":"text/x-rst","patch_set":22,"id":"5a3905b3_f6e731aa","line":27,"updated":"2017-01-19 12:12:44.000000000","message":"Question - looking at this diagram, I\u0027m unable to understand if the Baremetal VMs are on a compute node or if they are inside the controller node. Assuming they are in the compute node.","commit_id":"d3233e90ebf5dee7fb0364fcb5929cdc96feb69f"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"::"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":" External/Control plane networks"},{"line_number":22,"context_line":" +---------------------------------------------------------------+----------------+-----------------------------+"},{"line_number":23,"context_line":"                                                                 |                |"},{"line_number":24,"context_line":"                                                                 |                |"}],"source_content_type":"text/x-rst","patch_set":28,"id":"fa31d9ce_e0aba9d4","line":21,"updated":"2017-02-17 14:57:17.000000000","message":"In simulated environment connection between BVM and control plane (ir-cond, tftp) is available via veth pair \"bmcondhost@bmcondswitch\" that is plugged directly to OVS/LB switch but not reflected on this picture.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                                                             +---+----+       +---+----+"},{"line_number":26,"context_line":" +-----------------------------------------------------------+        +-------+        +------------------------+"},{"line_number":27,"context_line":" |Controller Node                                            |  eth1  |       |  eth0  |                        |"},{"line_number":28,"context_line":" |   +---------------------------------------------------+   |        |       |        |                        |"},{"line_number":29,"context_line":" |   |BareMetal Simulation                               |   +---+----+       +----+---+                        |"},{"line_number":30,"context_line":" |   | +-----+    +-----+      +-----+      +-----+      |       |                 |       +----------------+   |"},{"line_number":31,"context_line":" |   | | BVM |    | BVM |      | BVM |      | BVM |      |       |                 |       |                |   |"}],"source_content_type":"text/x-rst","patch_set":28,"id":"fa31d9ce_600979dd","line":28,"updated":"2017-02-17 14:57:17.000000000","message":"Might be remove baremetal simulation square to simplify the picture? All this is baremetal simulation.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7fcc2d5be61583f6c34e2e9bfc88378e07f61af2","unresolved":false,"context_lines":[{"line_number":54,"context_line":" |               |             |                                 |                                              |"},{"line_number":55,"context_line":" |   +-----------+  bminthost  +---------------------------------+----+                                         |"},{"line_number":56,"context_line":" |   |           |             |                                      |                                         |"},{"line_number":57,"context_line":" |   |           +-------------+     Neutron OVS/LB                   |                                         |"},{"line_number":58,"context_line":" |   |                                                                |                                         |"},{"line_number":59,"context_line":" |   +----------------------------------------------------------------+                                         |"},{"line_number":60,"context_line":" |                                                                                                              |"}],"source_content_type":"text/x-rst","patch_set":28,"id":"fa31d9ce_60bed9d5","line":57,"updated":"2017-02-17 14:57:17.000000000","message":"In simulated environment we do not plug physical interface to Neutron bridge (ironiphys) right?","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":22226,"name":"Varun Gadiraju","email":"varun.gadiraju@intel.com","username":"gadirajv"},"change_message_id":"5a0dcf7847bd189cdd61f7d0c4350e87a9189706","unresolved":false,"context_lines":[{"line_number":54,"context_line":" |               |             |                                 |                                              |"},{"line_number":55,"context_line":" |   +-----------+  bminthost  +---------------------------------+----+                                         |"},{"line_number":56,"context_line":" |   |           |             |                                      |                                         |"},{"line_number":57,"context_line":" |   |           +-------------+     Neutron OVS/LB                   |                                         |"},{"line_number":58,"context_line":" |   |                                                                |                                         |"},{"line_number":59,"context_line":" |   +----------------------------------------------------------------+                                         |"},{"line_number":60,"context_line":" |                                                                                                              |"}],"source_content_type":"text/x-rst","patch_set":28,"id":"da36d5c6_0fc4a990","line":57,"in_reply_to":"fa31d9ce_60bed9d5","updated":"2017-02-17 20:55:09.000000000","message":"Vasyl, Sam - aren\u0027t bminthost and bmintswitch vEth devices? My understanding is that they were vEth devices acting as vNICs, and that they were not actually physical interfaces.","commit_id":"6360aeec243de683e14a890a6c90a1d95da0f56b"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"683e881b649fb98b212819c5a31bba1ffcfc3d9d","unresolved":false,"context_lines":[{"line_number":30,"context_line":" |   | +-----+    +-----+      +-----+      +-----+      |       |                 |       +----------------+   |"},{"line_number":31,"context_line":" |   | | BVM |    | BVM |      | BVM |      | BVM |      |       |                 |       |                |   |"},{"line_number":32,"context_line":" |   | |     |    |     |      |     |      |     |      |       |                 +-------+      Nova      |   |"},{"line_number":33,"context_line":" |   | +--+--+    +--+--+      +--+--+      +--+--+      |       |                 |       |                |   |"},{"line_number":34,"context_line":" |   |    |          |            |            |         |       |                 |       +----------------+   |"},{"line_number":35,"context_line":" |   |    |          |            |            |         |       |                 |                            |"},{"line_number":36,"context_line":" |   |    |          |            |            |         |       |                 |       +----------------+   |"}],"source_content_type":"text/x-rst","patch_set":30,"id":"ba2be162_9aca6e4e","line":33,"updated":"2017-03-01 10:47:23.000000000","message":"Instead of connecting all VMs to single bridge, it makes sense to connect each VM via separate bridge to allow mixed network topologies (nodes with flat and neutron network interfaces) in single setup.","commit_id":"4033b9b742752f352a2cf69b44a4c7bffca734ca"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f07fbffcc058f8d144f7665dbecb0755412ca958","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Simulated Baremetal Environment for Testing"},{"line_number":5,"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Its not always feasible to provide a real hardware environment for testing"},{"line_number":8,"context_line":"baremetal deployment. So to accommodate testing baremetal deployment in CI, we"},{"line_number":9,"context_line":"create a simulated baremetal environment using virtual machines and virtual"},{"line_number":10,"context_line":"switches, which can be used in place of real servers and real switches."}],"source_content_type":"text/x-rst","patch_set":32,"id":"ba2be162_275206de","line":7,"updated":"2017-03-02 13:21:21.000000000","message":"Instead of connecting all VMs to single bridge, it makes sense to connect each VM via separate bridge to allow mixed network topologies (nodes with flat and neutron network interfaces) in single setup. or at least have different bridges for flat and vlan cases.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dd44e297780d722fa42c6e1a212161bad8800a6d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Simulated Baremetal Environment for Testing"},{"line_number":5,"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Its not always feasible to provide a real hardware environment for testing"},{"line_number":8,"context_line":"baremetal deployment. So to accommodate testing baremetal deployment in CI, we"},{"line_number":9,"context_line":"create a simulated baremetal environment using virtual machines and virtual"},{"line_number":10,"context_line":"switches, which can be used in place of real servers and real switches."}],"source_content_type":"text/x-rst","patch_set":32,"id":"ba2be162_92a83cdd","line":7,"in_reply_to":"ba2be162_275206de","updated":"2017-03-02 17:59:52.000000000","message":"We don\u0027t need to do this, the way it works in this patch will already allow you do both flat nodes and vlan nodes on the simulated environment.","commit_id":"285e21f5a58bbcaef6ba02e913439e58c78e9178"}]}
