openstack upstream training cisco live!

127

Upload: openstackcisco

Post on 11-Aug-2015

466 views

Category:

Technology


1 download

TRANSCRIPT

OpenStack Upstream.Training

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Introduction

• OpenStack Release"Process

• Devstack!

• Contributor"Accounts

• Contribution"Workflow

• Committing"and"Reviewing

• Jenkins

• Community Engagement

• Next"Steps

Agenda

3

OpenStack Governance.and.Release.Cycle

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Open"source"software to"create"private"and"public"clouds

• Coordinated"software"from">"30"related"projects

What"is"OpenStack?

5

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• 24,000"members

• 495"supporting"companies

• Over"20"million"lines"of"code

• Most"recent"(“Kilo”)"release:

• 1,500"developers

• 170"companies

• 20,000"patches

• November"2015"(“Liberty”)"release:

• 25,000"patches?

The"OpenStack Community

6

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Led by"OpenStack Foundation

• Nonprofit"to"“develop,"support,"protect,"and"promote”"OpenStack

• Creates"other"committees"for"dayatoaday"leadership• Technical"Committee• User"Committee• Adahoc"topical"Committees

• Foundation"Membership

• Individual"members

• Institutional"members

• Foundation"board"of"directors

OpenStackGovernance

7

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Technical leadership"over"all"projects

• Enforces"OpenStack ideals

• Establishes"standards"across"projects

• Final"appeals"board"for"alignment"between"projects

• Membership"elected"by"OpenStack ATCs

• Technical"contributor"past"2"releases

The"Technical"Committee

8

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Core"services

• Common"supporting"services

• Horizontal"focus"teams

• Each"team"led"by"a"PTL"elected"by"that"project’s"technical"contributors

• PTL"must"be"a"technical"contributor"to"the"project

OpenStack Project Teams

9

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Coordinated across"projects

• Released"every"six"months• All"projects"for"Austin"<a>"Kilo"releases

• Currently"being"reworked• Liberty:"integrated"projects"coordinated"by"Release"Management"Team

OpenStackReleases

10

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• All"projects"which"contribute"to"the"overall"goal"can"participate

• No"longer"forced"to"use"same"release"cycle and"to"be"a"gating"process"for"integration

• “Tags”"concept"being"worked"out

• Adahoc"committee"forming

• Very"much"a"work"in"progress"still

The"Big"Tent

11

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Standardize"definition of"“OpenStack”

• Both"branding"and"technical• Compatibility"is"the"primary"concern

• Also"a"work"in"progress

Defcore

12

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Planning:"4"weeks,"with"Design"Summit"on"3rd week

• Milestone"releases

• Freezes

• Feature"proposal"freeze

• Feature"freeze

• String"freeze

• Release"Candidates

• Release

• Maintenance"as"stable"branch"for"one"year"while"next"two"releases"are"developed

• Downstream"vendors"may"then"maintain"further

OpenStackRelease"Cycle

13

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Branches• master• stable/kilo• stable/juno

• Two"stable"branchesmaintained"(1"yr maintenance)"in"the"community

• New"features"always"committed"to"master"first

Release"structure

14

DevStack)Intro)&)Lab

Anne$McCormickSoftware$Engineer,[email protected]

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• AllHinHone$(AIO) installation$of$OpenStack

• “Standard”$tool$for$testing

• NOT$representative$of$a$“production”$install

What$is$DevStack?

2

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Iterative development

• Basis$of$automated$testing$(i.e.$Tempest)

Key$Uses

3

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Scale$issues$often$missed

• MultiHnode$issues$sometimes$missed

• Defaults are$not$necessarily$most$common$/$desirable

But,$it$worked$in$DevStack…

4

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• http://devstack.org/ H main$page$for$overview,$documentation,$etc.• To$get$the$code$(e.g.$for$Kilo):

git$clone$–b$stable/kilo$https://github.com/openstackHdev/devstack.git$

Getting$DevStack

5

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

Lab:$Installing$DevStack

6

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID 7

Lab$Topology

VMware VirtualBoxOR

Ubuntu$VM

DevStack

Horizon

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Ubuntu$14.04.2$Desktop$VM

Username:$demo

Password:$demo

• Access$the$web$server$using$a$web$browser$on$Ubuntu$VM

Lab$Information

8

http://localhost

Username:$admin

Password:$openstackUsername:$demo

Password:$openstack

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Install$VMware$Fusion$or$VirtualBox,$if$you$haven’t$done$so$already

• Installation$instructions$are$in$the$lab$guide

• For$VMware,$go$to$

http://www.vmware.com/products/fusion/fusionHevaluation

• For$VirtualBox,$go$to$http://virtualbox.org.$

Environment$Setup

9

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Task$1$– Bring$up$Ubuntu$VM

• Task$2$– Install$DevStack$from$stable$Kilo$branch

• Task$3$– Bring$up$DevStack$Horizon

• Task$4$– Configure$demo$tenant$network

• Task$5$– Configure$demo$tenant$router

• Task$6$– Configure$demo$tenant$instance

• Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

• Task$8$– Add$floating$IP$to$instance

• Task$9$– Much$fanfare$and$hoopla

Overall$Objectives

10

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Import$OVA$into$either$Fusion$or$VirtualBox

• Give$the$Ubuntu$VM$4GB$RAM• Select$“Import”

Task$1$– Bring$up$Ubuntu$VM

11

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Start$the$VM

• Log$in$as$demo$user

(demo,$demo)

Task$1$– Bring$up$Ubuntu$VM

12

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Task$1$– Bring$up$Ubuntu$VM

• Task$2$– Install$DevStack$from$stable$Kilo$branch

• Task$3$– Bring$up$DevStack$Horizon

• Task$4$– Configure$demo$tenant$network

• Task$5$– Configure$demo$tenant$router

• Task$6$– Configure$demo$tenant$instance

• Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

• Task$8$– Add$floating$IP$to$instance

• Task$9$– Much$fanfare$and$hoopla

Overall$Objectives

13

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Bring$up$Terminal$window• cd$/home/demo/CiscoLive• Edit$localrc,$comment$out$OFFLINE=True

Task$2$– Install$DevStack$from$stable$Kilo$branch

14

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• cd$/home/demo

• git$clone$–b$stable/kilo$https://github.com/openstackHdev/devstack.git$

Task$2$– Install$DevStack$from$stable$Kilo$branch

15

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• cp$/home/demo/CiscoLive/localrc$/home/demo/devstack

• cd$/home/demo/devstack

• ./stack.sh

• Get$a$cup$of$coffee,$make$a$few$phone$calls…

Task$2$– Install$DevStack$from$stable$Kilo$branch

16

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Task$1$– Bring$up$Ubuntu$VM

• Task$2$– Install$DevStack$from$stable$Kilo$branch

• Task$3$– Bring$up$DevStack$Horizon

• Task$4$– Configure$demo$tenant$network

• Task$5$– Configure$demo$tenant$router

• Task$6$– Configure$demo$tenant$instance

• Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

• Task$8$– Add$floating$IP$to$instance

• Task$9$– Much$fanfare$and$hoopla

Overall$Objectives

17

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Bring$up$Firefox$on$Ubuntu$VM• Go$to$DevStack$Horizonhttp://localhostadmin/openstackdemo/openstack

• Sign$in$as$admin

Task$3$– Bring$up$DevStack$Horizon

18

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Play$around$with$Horizon$for$a

bit$as$admin$user

Task$3$– Bring$up$DevStack$Horizon

19

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Task$1$– Bring$up$Ubuntu$VM

• Task$2$– Install$DevStack$from$stable$Kilo$branch

• Task$3$– Bring$up$DevStack$Horizon

• Task$4$– Configure$demo$tenant$network

• Task$5$– Configure$demo$tenant$router

• Task$6$– Configure$demo$tenant$instance

• Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

• Task$8$– Add$floating$IP$to$instance

• Task$9$– Much$fanfare$and$hoopla

Overall$Objectives

20

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Log$in$to$Horizon$as$demo$user

(password:$openstack)

• Bring$up$“Network$Topology”$UI

• Select$“+Create$Network”

Task$4$– Configure$demo$tenant$network

21

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Create$“testnet”

• Select$“Next”

Task$4$– Configure$demo$tenant$network

22

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Configure$“testHsubnet”

Address:$192.168.0.0/24

Version:$IPv4

• Select$“Next”

Task$4$– Configure$demo$tenant$network

23

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Configure$subnet$details

Alloc$Pools:$192.168.0.100,192.168.0.200

• Select$“Create”

Task$4$– Configure$demo$tenant$network

24

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Network$Topology

Task$4$– Configure$demo$tenant$network

25

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Task$1$– Bring$up$Ubuntu$VM

• Task$2$– Install$DevStack$from$stable$Kilo$branch

• Task$3$– Bring$up$DevStack$Horizon

• Task$4$– Configure$demo$tenant$network

• Task$5$– Configure$demo$tenant$router

• Task$6$– Configure$demo$tenant$instance

• Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

• Task$8$– Add$floating$IP$to$instance

• Task$9$– Much$fanfare$and$hoopla

Overall$Objectives

26

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• From$Network$Topology,$

select$“+Create$Router”

• Create$“testHrouter”

• Attach$to$public$network

• Select$“Create$Router”

Task$5$– Configure$demo$tenant$router

27

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• From$Network$Topology,$hoover

over$the$router$and$select

“View$Router$Details”

Task$5$– Configure$demo$tenant$router

28

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Select$“Interfaces”$tab

Task$5$– Configure$demo$tenant$router

29

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Select$“+Add$Interface”

Task$5$– Configure$demo$tenant$router

30

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• From$Subnet$pulldown,$

select$“testnet”$subnet

• Select$“Add$Interface”$

Task$5$– Configure$demo$tenant$router

31

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Network$Topology

Task$5$– Configure$demo$tenant$router

32

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Task$1$– Bring$up$Ubuntu$VM

• Task$2$– Install$DevStack$from$stable$Kilo$branch

• Task$3$– Bring$up$DevStack$Horizon

• Task$4$– Configure$demo$tenant$network

• Task$5$– Configure$demo$tenant$router

• Task$6$– Configure$demo$tenant$instance

• Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

• Task$8$– Add$floating$IP$to$instance

• Task$9$– Much$fanfare$and$hoopla

Overall$Objectives

33

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• First$create$ssh$key

• From$Ubuntu$Terminal,

cd$/home/demo/.ssh

• Run$the$following$cmds:sshHkeygen$–t$rsa$–f$cloud.key

(no$passphrase$is$fine$for$now)

sshHadd$cloud.key$

• Copy$contents$of$

cloud.key.pub$to$clipboard$

Task$6$– Configure$demo$tenant$instance

34

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• From$Network$Topology,

select$“Launch$Instance”

Task$6$– Configure$demo$tenant$instance

35

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Create$“testHinstance”

Avail$Zone:$nova

Flavor:$m1.micro

Boot$Source:$Image

Image$Name:

cirrosH0.3.4Hx86_64Husec

• Select$“Access$&$Security”

tab

Task$6$– Configure$demo$tenant$instance

36

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Select$“+”$to$add$a$keypair

• Create$“testHkeypair”

• Copy$public$key$contents

from$clipboard

• Select$“Import$Key$Pair”

Task$6$– Configure$demo$tenant$instance

37

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• From$Launch$Instance$UI,select$“Networking”$tab

• Make$sure$testnet$is$inselected$networks$list

• Select$“Launch”

Task$6$– Configure$demo$tenant$instance

38

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Network$Topology

Task$6$– Configure$demo$tenant$instance

39

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Task$1$– Bring$up$Ubuntu$VM

• Task$2$– Install$DevStack$from$stable$Kilo$branch

• Task$3$– Bring$up$DevStack$Horizon

• Task$4$– Configure$demo$tenant$network

• Task$5$– Configure$demo$tenant$router

• Task$6$– Configure$demo$tenant$instance

• Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

• Task$8$– Add$floating$IP$to$instance

• Task$9$– Much$fanfare$and$hoopla

Overall$Objectives

40

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Bring$up$“Access$&$Security”$UI

• Select$“Manage$Rules”

Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

41

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Select$“+Add$Rule”

Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

42

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Add$an$ingress$“All$ICMP”$

rule$as$follows:$

Rule:$All$ICMP

Direction:$Ingress• Select$“Add”

• Create$similar$rule$for

egress$ICMP

Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

43

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Add$rule$for$ssh

• Select$“Add”

Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

44

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Now$rules$should$look

like$this:

Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

45

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Task$1$– Bring$up$Ubuntu$VM

• Task$2$– Install$DevStack$from$stable$Kilo$branch

• Task$3$– Bring$up$DevStack$Horizon

• Task$4$– Configure$demo$tenant$network

• Task$5$– Configure$demo$tenant$router

• Task$6$– Configure$demo$tenant$instance

• Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

• Task$8$– Add$floating$IP$to$instance

• Task$9$– Much$fanfare$and$hoopla

Overall$Objectives

46

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• From$

ComputeH>Instances$UI

• Under$“testHinstance”,

select$Action$

“Associate$Floating$IP”

Task$8$– Add$floating$IP$to$instance

47

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• From$

“Manage$Floating$IP$Associations”,

select$“+”

Task$8$– Add$floating$IP$to$instance

48

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• From$

“Allocate$Floating$IP”$UI,

select$“Allocate$IP”

Task$8$– Add$floating$IP$to$instance

49

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• From$

“Manage$Floating$IP$Associations”,

select$“Associate”

Task$8$– Add$floating$IP$to$instance

50

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• From$“Instances”$UI,$you’ll$now$see$

local$IP$and$floating$IP$for$the$instance$

Task$8$– Add$floating$IP$to$instance

51

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Try$to$ping$and$ssh$to$your$instance

Task$8$– Add$floating$IP$to$instance

52

©$2015$ $Cisco$ and/or$its$affiliates.$All$ rights$reserved.$ $$Cisco$PublicPresentation$ ID

• Task$1$– Bring$up$Ubuntu$VM

• Task$2$– Install$DevStack$from$stable$Kilo$branch

• Task$3$– Bring$up$DevStack$Horizon

• Task$4$– Configure$demo$tenant$network

• Task$5$– Configure$demo$tenant$router

• Task$6$– Configure$demo$tenant$instance

• Task$7$– Add$access$rules$to$allow$ping/ssh$to$instance

• Task$8$– Add$floating$IP$to$instance

• Task$9$– Much$fanfare$and$hoopla

Overall$Objectives

53

Contributor)Accounts

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Hosted"service"from"Canonical• Used"by"OpenStack for"bug"tracking• Some"discussions"around"replacements"(storyboard,"others)

• Also used"as"SSO• This"use"is"slowly"being"phased"out

Launchpad

2

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Sign"up"at"https://launchpad.net/• Use the"same"email"address"for"all"the"accounts"which"will"be"discussed• Broken"by"many"password"management"tools

Getting"a"Launchpad"Account

3

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Join"the"OpenStack Foundation

• Required"for"legal"reasons

• Also"provides"an"SSO"which"is"becoming"the"standard"SSO"for"OpenStack development"tooling

OpenStack ID

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Sign"up"at"https://www.openstack.org/join/register

• Multiple"levels"of"membership• Must"be"a"foundation"member"to"contribute"code

• Individual"membership"is"free

Getting"an"OpenStack ID

5

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Gerrit implementation"used"for"code"review

• Google"tool"for"code"review• From"the"Android"project

• OpenStack implementation"tweaked"but"not"forked

review.openstack.org

6

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Sign"in"at"https://review.openstack.org/

• Fill"out"a"username

• Add"an"SSH"key• Specify"contact"info

• Complete"a"license"agreement

• Gerrit will" reject"all"code"submissions"from"you"until"steps"done"fully• Legal"mandate

Getting"a"review"account

7

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Most"individuals"have"to"fill"out"one•Government"employees"use"a"separate"form• Individuals"working"for"corporationsmay"also"need"a"corporate"form

OpenStackContributor"License"Agreements

8

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

Lab:"Setting"up"accounts

9

Contribution Workflow

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• All"code"contributions"go"through"review• Automated"review• Human"review• Customized"per"project

• Strong"focus"on"making"all"contributions"code• Documentation• System"administration• Design• Other"“non^code”

review.openstack.org

11

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

Gerrit workflow

12

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Automated"static"analysis• Automated"integration"/"functional"/"unit"testing• Human review• Automated"third^party"review

Review"process

13

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• “This"needs"improvement”:"^1

• “This"looks"good”:"+1

All"reviewers are"equal

14

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• “Even"the"idea"of"this"is"wrong”:"^2• “This"is"ready"to"merge”:"+2• Core"project"contributors"only

Some"reviewers"are"more"equal

15

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• No negative"reviews• At"least"two"+2"reviews• Applies"to"both"human"and"voting"automated"testing

The"rules

16

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• You"WILL"get"^1."A"lot."It"doesn’t"mean"we"hate"you

• Reviews"should"be"constructive

• Reviews"meant"to"maintain"quality

• Reviews"also"function"to"keep"focus"aligned

Expectations

17

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

Lab:"Submitting"/"Reviewing"Changes

18

Committing Guidelines

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Small"bitesize changes•One"change"per"commit• Never"break trunk• Automation"should"prevent• Public"shaming"helps"prevent

Change"Structure

20

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Combining"whitespace"and"functional"changes• Combining unrelated"changes"in"a"commit

Bad"Ideas

21

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Standards"defined:"https://wiki.openstack.org/wiki/GitCommitMessages

• Messages"Matter!

• Standards"actively"enforced"by"negative"review• Human"enforcement"so"inconsistent

• ^1"because"of"commit"message"doesn’t"mean"we"hate"you

Commit"Messages

22

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

Live)Examples

23

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Don’t"assume"reviewer knows"history"behind"change• Don’t"assume"reviewer"has"access"to"external"links

Commit"Gotchas

24

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Change^ID• Bug• Blueprint

• Enables"some"level"of"automation"between"tooling

Commit"Cross^references

25

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

Integration)Example

26

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• DocImpact

• SecurityImpact

• UpgradeImpact

• Backport

Commit"Tags

27

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Revision after"constructive"criticism:"git commit"^^amend

• Change^Id must"be"preserved"in"the"commit"message

• Allows" for"consistent"tracking"in"project"history

Amending"Commits

28

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• WIP"tag• Enables"collaboration"without"wasting"review"time"prematurely

Staging Reviews

29

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Indicate a"temporal"ordering"to"merge• Land"an"API,"then"land"its"consumer

Commit"Dependencies

30

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Static"analysis• Unit"/"Functional"/"Integration"tests• Manual• Tempest"automation"suite• Rally"scale"wrapper"around"Tempest

Local"Testing

31

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Official"test"suite

• Service"endpoint"testing• Exercise"API,"validate"response

• Used"as"gating"in"conjunction"with"devstack

Tempest

32

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

Rally

33

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

Lab:"Local"Testing"and"Amended"Commits

34

The)Role)of)Jenkins

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Openstack"Infra"Config"Files

https://github.com/openstack^infra/project^config

• Gerrit"Code"review"system

• Jenkins"Job"builder

Reads"YAML"files"in"openstack^infra/project^config"and"injects"jobs"in"Jenkins

• Zuul"for"predictive"gating

• Puppet"modules"consume"config"files"to"setup"openstack"Infrastructure

Openstack"CI"system

36

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

Development"Workflow

37

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Uses"different"pipelines"– check,"gate"etc.

• Watches"gerrit"event"and"adds"changes"to"pipeline

• Check

Verify"every"patch"set"pushed"to"gerrit

Failure"prevents"patch"approval

• Gate

Verify"patches"once"they"are"approved

Failure"prevents"patch"landing"and"causes"pending"patches"to"be"retested

Zuul

38

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Static Analysis• Policy"conformance• Security"analysis

• Functional"Analysis• Tempest"unit"testing• 3rd Party"CI"integration

Runs"On"Every"Proposed"Commit

39

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

CI)Demo

40

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• http://status.openstack.org/zuul/• http://status.openstack.org//elastic^recheck/

Status"Pages

41

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Gerrit:"recheck"bug#•Gerrit:"recheck"no^bug

Bypass"Erroneous"Failures

42

Community)Engagement

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Launchpad"is"upstream"bug"tracker

• Critical"fields:• Bug"status• Assigned To

• Potentially"downstream"vendor"bug"trackers"also

Bug"Tracking

44

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

Launchpad)Demo

45

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Low^hanging^fruit

• Documentation

• I18n

• Security

• Ops

• $release^backport^potential

Bug"Tags

46

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• All"changes"land"in"master"first• Low^risk"changes"may"be"backportedif"align"with"policy

Backport Policies

47

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• New"features• Changes"to"external"REST"APIs

• Changes"to"internal"AMQP"messaging

• Changes"to"event"notifications• Schema"changes• Config file"changes

Forbidden Backport Changes

48

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Every"change"requires"at"least"2"reviews,"and"most"many"more• Keep"reviews"constructive

Reviewing Is"Critical

49

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• #openstack*"channels"on"freenode• Logged and"publically"archived•Meetbot for"automation• Primary"communication"channel

IRC

50

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• https://wiki.openstack.org/wiki/Mailing_Lists• Secondary"communication"channel

Mailing"Lists

51

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Schedule"at"http://eavesdrop.openstack.org/• Constructively"participate"to"be"part"of"the"community

Project"Meetings

52

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Design"Summits•Mid^cycle"Meetups• User"Groups

In^Person"Meetings

53

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Developer"handbook• http://docs.openstack.org/infra/manual/developers.html

• Project^specific"developer"guides• http://docs.openstack.org/developer/openstack^projects.html

OpenStackDeveloper"Documentation

54

Next)Steps

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Pick"a"project

• Find"a"small"bug• Low^hanging^fruit"– see"list

• Run"the"review"gauntlet

Bug"Fixing

56

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

• Bug"triage• Code"review• Documentation• Community"help

Other"Places To"Start

57

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID

Stuck?"Ask"Shannon!"(or"anyone"else"here"helping)

58

Thank)you

©"2015" "Cisco" and/or"its"affiliates."All" rights"reserved." ""Cisco"PublicPresentation" ID 59