provide “networking as a service” between interface devices (e.g., vNICs) managed by other OpenStack services (e.g., Nova) • Provides a powerful API to define the network connectivity
custom back-end implementation of the Networking API • Several agents: ‒ plug-in agent (L2 agent): runs on each hypervisor to perform local vSwitch configuration ‒ dhcp agent: Provides DHCP services to tenant networks ‒ l3 agent: Provides L3/NAT forwarding to provide external network access for VMs on tenant network
admin guide here • Explore the code: git clone [email protected]:openstack/neutron.git Tip: PyCharm can make your life easier ‒ Navigate to Class Ctrl+N ‒ Navigate to File Ctrl+Shift+N ‒ Navigate to Declaration Ctrl+B
build a complete stack • To set it up only few steps: ‒ git clone https://github.com/openstack-dev/devstack.git ‒ cd devstack; ./stack.sh • Resume the screen session to check what's going on: screen -x • You can use pdb to set breakpoints
it • Debug the issue (add log statement or you can use a debugger if you are on Devstack) • Write a patch • Test it • Write a unit test if that's appropriate to avoid regressions
• Upload a design specification to Gerrit to specs/<release> folder in neutron-specs • Use specs/template.srt from Neutron specs repo • Specs follow the same Gerrit workflow as patches • Project drivers will approve blueprint
gets a ‒+1 Verified ‒-1 Failed • Style checker + unit tests + functional tests + integration tests (Tempest) + upgrade tests (Grenade) • Test are run by the OpenStack CI and for some project by third party CI • Logs are accessible, you can check why a test failed
comments if needed • Run flake8 and test before you submit • Create small patches • Do one logical change per patch. Don't mixup different fixes • Try to avoid dependent patches if possible -> rebase hell
and the why, not the what • Use special tags in commit messages (i.e. "Closes-Bug: #1234567") , they are matched by automation scripts • For needed documentation changes, use DocImpact flag • See here for more info
Try to be specific regarding what you will address and what not. • Reply 'Done' if you are gonna change the patch according to the comment. • Explain why you are not gonna address a comment • The best way to get reviews is to be involved
questions • Show examples when you give some suggestion • If you give a "-1" make sure to check if the submitter answered. A '-1' can block a patch • Quality vs quantity • It takes time to review but you will learn a lot!