Surviving your first check-in: An engineers guide
               to contributing to OpenStack




                                     Colin McNamara – Chief Geek, Nexus IS
                                                             CCIE #18233
                                                     @COLINMCNAMARA
                                                                   1/9/2013
1   www.Nexusis.com   877.286.3987
Agenda

      §  How this all started – “a simple experiment”
      §  The importance of community - Leveraging the power of the meetup
      §  Talking your employer into supporting OpenStack and the CLA
      §  Setting up your Dev environments - getting beyond Devstack
      §  “Getting” git, using the git repository for those that don't code for a
          living
      §  Testing your code - what do you mean it doesn't build?
      §  How to give back, and get other people involved in the community
2   www.Nexusis.com   877.286.3987
My Background




3   www.Nexusis.com   877.286.3987
My Perspective

                                     §  Network Engineer first
                                        §  CCIE #18233

                                     §  Systems/Storage Second
                                        §  IEEE, IETF, T11
                                     §  Linux user since 98
                                     §  Creator of “Sausage Code”
                                     §  NOT A PROGRAMMER


4   www.Nexusis.com   877.286.3987
How this craziness started




5   www.Nexusis.com   877.286.3987
“A simple experiment”

                                     §  Ewan Mellor – Citrix Xen
                                     §  Simple feature, Deploy
                                         Storage QOS
                                     §  Turned into a 4 month saga
                                     §  Lots of lessons to be learned




6   www.Nexusis.com   877.286.3987
Leveraging the power of the Meetup




7   www.Nexusis.com   877.286.3987
Meetup.com – Community is your friend
                                     §  Join a Meetup.com group
                                        §  http://www.meetup.com/
                                            openstack/
                                     §  If there is none in your area–
                                         Start One
                                     §  Many eyes help in
                                         overcoming challenges



8   www.Nexusis.com   877.286.3987
Background




9   www.Nexusis.com   877.286.3987
Talking to your employer about contributing




10   www.Nexusis.com   877.286.3987
Talking to your employer about contributing

                                      §  Notify your manager. If you don’t have a
                                          policy you have a chance to set one.
                                      §  In Ca, you are only protected if your
                                          company isn’t in the line of biz your project
                                          is.
                                      §  If you are contributing on behalf of a
                                          company, an authorized representative of
                                          your company should also sign a
                                          Corporate Contributor License Agreement.
11   www.Nexusis.com   877.286.3987
Next steps – Executing your CLA
                                      §  Join the OpenStack foundation
                                      §  Create your launchpad account
                                         §  *** don’t change your username after ***

                                      §  Join the OpenStack team on launchpad
                                      §  Sign the CLA electronically
                                      §  Update the Contributors Wiki
                                      §  Request openstack-cla membership on
                                          launchpad
12   www.Nexusis.com   877.286.3987
                                      §  Wait (or ping an op on #openstack-dev)
Setting up your Dev environment




13   www.Nexusis.com   877.286.3987
10 minutes to Devstack

                                      §  Best run on Ubuntu 12.04
                                      §  Log in as a USER (not root)
                                      §  Sudo apt-get install git
                                      §  git clone
                                          https://github.com/openstack-dev/
                                          devstack.git
                                      §  cd devstack && ./stack.sh


14   www.Nexusis.com   877.286.3987
Getting beyond Default Devstack

                                      §  I like to run in a VMware environment
                                         §  (in home lab + instance on laptop)
                                         §  Working on cloning Rackspace’s nested setup
                                             that cody_bunch is using

                                      §  Spin up new instances easily
                                      §  Quickly compare versions
                                      §  Default install pushes QEMU
                                      §  Puppet / Cobbler / Koan in your home lab
                                          will save you time / headaches
15   www.Nexusis.com   877.286.3987
Getting beyond Default Devstack - Stackrc
                                                   §  /devstack/
                                                       stackrc


                                                   §  Adjust API’s /
                                                       Services


                                                   §  Change git
                                                       repos

16   www.Nexusis.com   877.286.3987
Getting beyond Default Devstack - Stackrc




      §  ~/devstack/stackrc updated to point to working development
          branch
      §  Refs/changes/50/5050/1 is the review ID




17   www.Nexusis.com   877.286.3987
You’ve made a change, Now What?

       §  ./rejoin_stack.sh will attach you the screen with all the
           terminals for the various apps. There could be as many as 14
           screens depending on how many services are enabled
       §  “ctrl-c” and “ctrl-d” on each window to kill the process. “ctrl-a
           n” takes you to next terminal. Restart the process by using up-
           arrow key and entering return
       §  Another easier way to kill all and restart is to do “screen -ls”
           and kill the process. Restart by ./rejoin_stack.sh


18   www.Nexusis.com   877.286.3987
“Getting Git”                  OpenStack Workflows




19   www.Nexusis.com   877.286.3987
What is Git ?

                                      §  Repository created for Linux Kernel Dev
                                      §  Solves centralization problems – you can
                                          code at the lake, or in your isolated lab
                                      §  Can be complex (multiple ways of doing
                                          things)




20   www.Nexusis.com   877.286.3987
Setting things up – Installing Git

Install Git

Install DevStack

Configure git

Install git-review

Clone a project

Verify gerrit works
21   www.Nexusis.com   877.286.3987
Setting things up – Installing DevStack

Install Git

Install DevStack

Configure git

Install git-review

Clone a project

Verify gerrit works
22   www.Nexusis.com   877.286.3987
Setting things up – Configuring Git

Install Git

Install DevStack

Configure git

Install git-review

Clone a project

Verify gerrit works
23   www.Nexusis.com   877.286.3987
Setting things up – Configuring git-review

Install Git

Install DevStack                      Git review redirects a commit into a review and test
                                      process
Configure git

Install git-review

Clone a project

Verify gerrit works
24   www.Nexusis.com   877.286.3987
Setting things up – Cloning a project

Install Git

Install DevStack

Configure git

Install git-review

Clone a project

Verify gerrit works
25   www.Nexusis.com   877.286.3987
Setting things up – Testing Gerrit

Install Git

Install DevStack
                                      This error held us up for 2 weeks…
Configure git

Install git-review

Clone a project

Verify gerrit works
26   www.Nexusis.com   877.286.3987
Setting things up – Generate your public key

Install Git

Install DevStack

Configure git

Install git-review

Clone a project

Verify gerrit works
27   www.Nexusis.com   877.286.3987
Setting things up – Add your key to review.openstack.org

Install Git

Install DevStack

Configure git

Install git-review

Clone a project

Verify gerrit works
28   www.Nexusis.com   877.286.3987
Setting things up – Add your key to review.openstack.org

Install Git
                                      Doesn’t Work -
Install DevStack

Configure git

Install git-review

Clone a project                       Works -

Verify gerrit works
29   www.Nexusis.com   877.286.3987
Making, Testing and submitting changes




30   www.Nexusis.com   877.286.3987
Pro Git – Well worth the price

                                        §  I didn’t write it, but this
                                            book is great
                                        §  It is on Safari Books
                                            Online




31   www.Nexusis.com   877.286.3987
Setting things up


Create a topic branch

Change code

Test Code

Commit Changes

Submit them for review

Monitor the review process


32   www.Nexusis.com   877.286.3987
Edited v1_1 api to describe phys as well as virt CPU


Create a topic branch

Change code

Test Code

Commit Changes

Submit them for review

Monitor the review process


33   www.Nexusis.com   877.286.3987
./Run_tests.sh in each project


Create a topic branch

Change code

Test Code

Commit Changes

Submit them for review

Monitor the review process


34   www.Nexusis.com   877.286.3987
Commit your code


Create a topic branch

Change code

Test Code
                                      Be verbose, and be sure to call out whether a feature is
Commit Changes                        blueprinted or a bugfix
Submit them for review

Monitor the review process


35   www.Nexusis.com   877.286.3987
Submit it for review!!


Create a topic branch

Change code

Test Code

Commit Changes

Submit them for review

Monitor the review process


36   www.Nexusis.com   877.286.3987
Track the reviews progress


Create a topic branch

Change code

Test Code

Commit Changes

Submit them for review

Monitor the review process


37   www.Nexusis.com   877.286.3987
Giving back                    Engaging the community




38   www.Nexusis.com   877.286.3987
Giving back

                                      §  Start a meetup.com group in your area
                                      §  Connect with other meetup organizers
                                      §  Present to your peers
                                      §  Share your experience with the world




39   www.Nexusis.com   877.286.3987
Open Blueprints                Stuff to work on




40   www.Nexusis.com   877.286.3987
Vish – Nova PTL Open Blueprints
                                      §  edit-default-quota - nova grizzly
                                      §  nova-api-samples - nova
                                          grizzlylive-migration-scheduling
                                      §  DHCPv6 Support – SFBay OpenStack
                                      §  openstack-operations-manual - grizzly




41   www.Nexusis.com   877.286.3987
@colinmcnamara
                                      colin.mcnamara@nexusis.com
                                      www.colinmcnamara.com




42   www.Nexusis.com   877.286.3987

Colin McNamara - Surviving your first check-in: An engineers guide to contributing to OpenStack

  • 1.
    Surviving your firstcheck-in: An engineers guide to contributing to OpenStack Colin McNamara – Chief Geek, Nexus IS CCIE #18233 @COLINMCNAMARA 1/9/2013 1 www.Nexusis.com 877.286.3987
  • 2.
    Agenda §  How this all started – “a simple experiment” §  The importance of community - Leveraging the power of the meetup §  Talking your employer into supporting OpenStack and the CLA §  Setting up your Dev environments - getting beyond Devstack §  “Getting” git, using the git repository for those that don't code for a living §  Testing your code - what do you mean it doesn't build? §  How to give back, and get other people involved in the community 2 www.Nexusis.com 877.286.3987
  • 3.
    My Background 3 www.Nexusis.com 877.286.3987
  • 4.
    My Perspective §  Network Engineer first §  CCIE #18233 §  Systems/Storage Second §  IEEE, IETF, T11 §  Linux user since 98 §  Creator of “Sausage Code” §  NOT A PROGRAMMER 4 www.Nexusis.com 877.286.3987
  • 5.
    How this crazinessstarted 5 www.Nexusis.com 877.286.3987
  • 6.
    “A simple experiment” §  Ewan Mellor – Citrix Xen §  Simple feature, Deploy Storage QOS §  Turned into a 4 month saga §  Lots of lessons to be learned 6 www.Nexusis.com 877.286.3987
  • 7.
    Leveraging the powerof the Meetup 7 www.Nexusis.com 877.286.3987
  • 8.
    Meetup.com – Communityis your friend §  Join a Meetup.com group §  http://www.meetup.com/ openstack/ §  If there is none in your area– Start One §  Many eyes help in overcoming challenges 8 www.Nexusis.com 877.286.3987
  • 9.
    Background 9 www.Nexusis.com 877.286.3987
  • 10.
    Talking to youremployer about contributing 10 www.Nexusis.com 877.286.3987
  • 11.
    Talking to youremployer about contributing §  Notify your manager. If you don’t have a policy you have a chance to set one. §  In Ca, you are only protected if your company isn’t in the line of biz your project is. §  If you are contributing on behalf of a company, an authorized representative of your company should also sign a Corporate Contributor License Agreement. 11 www.Nexusis.com 877.286.3987
  • 12.
    Next steps –Executing your CLA §  Join the OpenStack foundation §  Create your launchpad account §  *** don’t change your username after *** §  Join the OpenStack team on launchpad §  Sign the CLA electronically §  Update the Contributors Wiki §  Request openstack-cla membership on launchpad 12 www.Nexusis.com 877.286.3987 §  Wait (or ping an op on #openstack-dev)
  • 13.
    Setting up yourDev environment 13 www.Nexusis.com 877.286.3987
  • 14.
    10 minutes toDevstack §  Best run on Ubuntu 12.04 §  Log in as a USER (not root) §  Sudo apt-get install git §  git clone https://github.com/openstack-dev/ devstack.git §  cd devstack && ./stack.sh 14 www.Nexusis.com 877.286.3987
  • 15.
    Getting beyond DefaultDevstack §  I like to run in a VMware environment §  (in home lab + instance on laptop) §  Working on cloning Rackspace’s nested setup that cody_bunch is using §  Spin up new instances easily §  Quickly compare versions §  Default install pushes QEMU §  Puppet / Cobbler / Koan in your home lab will save you time / headaches 15 www.Nexusis.com 877.286.3987
  • 16.
    Getting beyond DefaultDevstack - Stackrc §  /devstack/ stackrc §  Adjust API’s / Services §  Change git repos 16 www.Nexusis.com 877.286.3987
  • 17.
    Getting beyond DefaultDevstack - Stackrc §  ~/devstack/stackrc updated to point to working development branch §  Refs/changes/50/5050/1 is the review ID 17 www.Nexusis.com 877.286.3987
  • 18.
    You’ve made achange, Now What? §  ./rejoin_stack.sh will attach you the screen with all the terminals for the various apps. There could be as many as 14 screens depending on how many services are enabled §  “ctrl-c” and “ctrl-d” on each window to kill the process. “ctrl-a n” takes you to next terminal. Restart the process by using up- arrow key and entering return §  Another easier way to kill all and restart is to do “screen -ls” and kill the process. Restart by ./rejoin_stack.sh 18 www.Nexusis.com 877.286.3987
  • 19.
    “Getting Git” OpenStack Workflows 19 www.Nexusis.com 877.286.3987
  • 20.
    What is Git? §  Repository created for Linux Kernel Dev §  Solves centralization problems – you can code at the lake, or in your isolated lab §  Can be complex (multiple ways of doing things) 20 www.Nexusis.com 877.286.3987
  • 21.
    Setting things up– Installing Git Install Git Install DevStack Configure git Install git-review Clone a project Verify gerrit works 21 www.Nexusis.com 877.286.3987
  • 22.
    Setting things up– Installing DevStack Install Git Install DevStack Configure git Install git-review Clone a project Verify gerrit works 22 www.Nexusis.com 877.286.3987
  • 23.
    Setting things up– Configuring Git Install Git Install DevStack Configure git Install git-review Clone a project Verify gerrit works 23 www.Nexusis.com 877.286.3987
  • 24.
    Setting things up– Configuring git-review Install Git Install DevStack Git review redirects a commit into a review and test process Configure git Install git-review Clone a project Verify gerrit works 24 www.Nexusis.com 877.286.3987
  • 25.
    Setting things up– Cloning a project Install Git Install DevStack Configure git Install git-review Clone a project Verify gerrit works 25 www.Nexusis.com 877.286.3987
  • 26.
    Setting things up– Testing Gerrit Install Git Install DevStack This error held us up for 2 weeks… Configure git Install git-review Clone a project Verify gerrit works 26 www.Nexusis.com 877.286.3987
  • 27.
    Setting things up– Generate your public key Install Git Install DevStack Configure git Install git-review Clone a project Verify gerrit works 27 www.Nexusis.com 877.286.3987
  • 28.
    Setting things up– Add your key to review.openstack.org Install Git Install DevStack Configure git Install git-review Clone a project Verify gerrit works 28 www.Nexusis.com 877.286.3987
  • 29.
    Setting things up– Add your key to review.openstack.org Install Git Doesn’t Work - Install DevStack Configure git Install git-review Clone a project Works - Verify gerrit works 29 www.Nexusis.com 877.286.3987
  • 30.
    Making, Testing andsubmitting changes 30 www.Nexusis.com 877.286.3987
  • 31.
    Pro Git –Well worth the price §  I didn’t write it, but this book is great §  It is on Safari Books Online 31 www.Nexusis.com 877.286.3987
  • 32.
    Setting things up Createa topic branch Change code Test Code Commit Changes Submit them for review Monitor the review process 32 www.Nexusis.com 877.286.3987
  • 33.
    Edited v1_1 apito describe phys as well as virt CPU Create a topic branch Change code Test Code Commit Changes Submit them for review Monitor the review process 33 www.Nexusis.com 877.286.3987
  • 34.
    ./Run_tests.sh in eachproject Create a topic branch Change code Test Code Commit Changes Submit them for review Monitor the review process 34 www.Nexusis.com 877.286.3987
  • 35.
    Commit your code Createa topic branch Change code Test Code Be verbose, and be sure to call out whether a feature is Commit Changes blueprinted or a bugfix Submit them for review Monitor the review process 35 www.Nexusis.com 877.286.3987
  • 36.
    Submit it forreview!! Create a topic branch Change code Test Code Commit Changes Submit them for review Monitor the review process 36 www.Nexusis.com 877.286.3987
  • 37.
    Track the reviewsprogress Create a topic branch Change code Test Code Commit Changes Submit them for review Monitor the review process 37 www.Nexusis.com 877.286.3987
  • 38.
    Giving back Engaging the community 38 www.Nexusis.com 877.286.3987
  • 39.
    Giving back §  Start a meetup.com group in your area §  Connect with other meetup organizers §  Present to your peers §  Share your experience with the world 39 www.Nexusis.com 877.286.3987
  • 40.
    Open Blueprints Stuff to work on 40 www.Nexusis.com 877.286.3987
  • 41.
    Vish – NovaPTL Open Blueprints §  edit-default-quota - nova grizzly §  nova-api-samples - nova grizzlylive-migration-scheduling §  DHCPv6 Support – SFBay OpenStack §  openstack-operations-manual - grizzly 41 www.Nexusis.com 877.286.3987
  • 42.
    @colinmcnamara colin.mcnamara@nexusis.com www.colinmcnamara.com 42 www.Nexusis.com 877.286.3987