openstack upstream training cisco live!
TRANSCRIPT
©"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
©"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
©$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
©"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
©"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
©"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
©"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
©"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
©"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