.. _dev-quickstart: ===================== Developer Quick-Start ===================== This is a quick walk through to get you started developing code for Networking-generic-switch. This assumes you are already familiar with submitting code reviews to an OpenStack project. ================================================= Deploying Networking-generic-switch with DevStack ================================================= DevStack may be configured to deploy Networking-generic-switch, setup Neutron to use the Networking-generic-switch ML2 driver. It is highly recommended to deploy on an expendable virtual machine and not on your personal work station. Deploying Networking-generic-switch with DevStack requires a machine running Ubuntu 14.04 (or later) or Fedora 20 (or later). .. seealso:: https://docs.openstack.org/devstack/latest/ Devstack will no longer create the user 'stack' with the desired permissions, but does provide a script to perform the task:: git clone https://github.com/openstack-dev/devstack.git devstack sudo ./devstack/tools/create-stack-user.sh Switch to the stack user and clone DevStack:: sudo su - stack git clone https://github.com/openstack-dev/devstack.git devstack Create devstack/local.conf with minimal settings required to enable Networking-generic-switch. Here is and example of local.conf:: [[local|localrc]] # Set credentials ADMIN_PASSWORD=secrete DATABASE_PASSWORD=secrete RABBIT_PASSWORD=secrete SERVICE_PASSWORD=secrete SERVICE_TOKEN=secrete # Enable minimal required services ENABLED_SERVICES="dstat,mysql,rabbit,key,q-svc,q-agt,q-dhcp" # Enable networking-generic-switch plugin enable_plugin networking-generic-switch https://review.openstack.org/openstack/networking-generic-switch # Configure Neutron OVS_PHYSICAL_BRIDGE=brbm PHYSICAL_NETWORK=mynetwork Q_PLUGIN=ml2 ENABLE_TENANT_VLANS=True Q_ML2_TENANT_NETWORK_TYPE=vlan TENANT_VLAN_RANGE=100:150 # Configure logging LOGFILE=$HOME/devstack.log LOGDIR=$HOME/logs Run stack.sh:: ./stack.sh Source credentials:: source ~/devstack/openrc admin admin Test with OVS ------------- Launch exercise.sh from networking-generic-switch. This script creates port in Neutron/update it with local_link_information and verifies that ovs port has been assigned to correct VLAN:: bash ~/networking-generic-switch/devstack/exercise.sh Test with real hardware: ------------------------ Add information about hardware switch to Networking-generic-switch config ``/etc/neutron/plugins/ml2/ml2_conf_genericswitch.ini`` and restart Neutron server:: [genericswitch:cisco_switch_1] device_type = netmiko_cisco_ios ip = 1.2.3.4 username = cisco password = cisco secret = enable_password Get current configuration of the port on the switch, for example for Cisco IOS device:: sh running-config int gig 0/12 Building configuration... Current configuration : 283 bytes ! interface GigabitEthernet0/12 switchport mode access end Run exercise.py to create/update Neutron port. It will print VLAN id to be assigned:: $ neutron net-create test $ python ~/networking-generic-switch/devstack/exercise.py --switch_name cisco_switch_1 --port Gig0/12 --switch_id=06:58:1f:e7:b4:44 --network test 126 Verify that VLAN has been changed on the switch port, for example for Cisco IOS device:: sh running-config int gig 0/12 Building configuration... Current configuration : 311 bytes ! interface GigabitEthernet0/12 switchport access vlan 126 switchport mode access end