CCC 2014 DENVER
DEEP DIVE INTO THE ROCKS Background Community development A - - PowerPoint PPT Presentation
DEEP DIVE INTO THE ROCKS Background Community development A - - PowerPoint PPT Presentation
CCC 2014 DENVER DEEP DIVE INTO THE ROCKS Background Community development A technical problem Lessons I should have learned CCC 2014 DENVER ABOUT ME Work @ Schuberg Philis since 1.8 years Hobby: triathlon http:/
CCC 2014 DENVER
Work @ Schuberg Philis since 1.8 years Hobby: triathlon http:/ /myfirstnorseman.onecht.net/ Also as a jury, coach and some others Email: dahn@apache.org Twitter: SambalTriathlon (don’t use) Facebook: +/- 3 accounts (lurked@best) plus.google: DaanHoogland (hardly used) ABOUT ME
CCC 2014 DENVER
This presentation is aimed at beginning open source or cloudstack developer whether proficient in programming or not. It might be interesting to cloudstack veterans that are looking to improve development process of the community, be it by improving their own way of contributing or adjusting the processes we use. AUDIENCE
CCC 2014 DENVER
HOW TO GET INVOLVED
CCC 2014 DENVER
HOW GETTING A PATCH ACCEPTED IN THE COMMUNITY IS SIMILAR TO GETTING YOU ACCEPTED
CCC 2014 DENVER
HOW NOT TO GET INVOLVED
CCC 2014 DENVER
PICK A GREAT REFACTORING JOB THAT IS EXTENDING INTO THE ENTIRE SYSTEM AND TRY TO TELL PEOPLE HOW TO DO IT
CCC 2014 DENVER
\\EBI\DAAN:~> LS -LTRA DOWNLOADS/0001-SDN-HOSTED-VPC-GATEWAYS-USING-LSWITCH.PATCH
- RW-R--R--@ 1 DAAN STAFF 347998 MAR 26 11:12 DOWNLOADS/0001-SDN-HOSTED-VPC-GATEWAYS-USING-
LSWITCH.PATCH
.
CCC 2014 DENVER
IMPORTANT THINGS TO CONTRIBUTE WHEN GETTING INVOLVED
CCC 2014 DENVER
# C O D E # M A I L T H E L I S T # C O D E # I N T E R A C T I O N T H R O U G H T H E R E V I E W B O A R D # F S O N T H E W I K I ( F S B U T A L S O T S ! ) # G O O D C O D E # R A T C H E C K S T Y L E F I N D B U G S # C O D E # J I R A # D O C S # ( S E L F D O C U M E N T I N G ) C O D E .
CCC 2014 DENVER
# C O D E # M A I L T H E L I S T # C O D E # I N T E R A C T I O N T H R O U G H T H E R E V I E W B O A R D # F S O N T H E W I K I ( F S B U T A L S O T S ! ) # G O O D C O D E # R A T C H E C K S T Y L E F I N D B U G S # C O D E # J I R A # D O C S # ( S E L F D O C U M E N T I N G ) C O D E
CCC 2014 DENVER
# C O D E # M A I L T H E L I S T # C O D E # I N T E R A C T I O N T H R O U G H T H E R E V I E W B O A R D # F S O N T H E W I K I ( F S B U T A L S O T S ! ) # G O O D C O D E # R A T C H E C K S T Y L E F I N D B U G S # C O D E # J I R A # D O C S # ( S E L F D O C U M E N T I N G ) C O D E
CCC 2014 DENVER
THE CUSTOMER PROBLEM
CCC 2014 DENVER
THE CUSTOMER REQUEST
Add the possibility to leverage the new Nicira NVP functionality to hook the private-gateway
- f VPC routers on to each other
CCC 2014 DENVER
THE ENVISIONED SOLUTION
CCC 2014 DENVER
THE CORE CODE http://localhost:8080/client/api? command=createPrivateGateway &response=json &sessionkey=xxx &physicalnetworkid=c71e08e7-c01d-4840-bd74- ffab517053fc &vpcid=be9acb3c-20eb-4e34-ab4c-3275185a9028 &ipaddress=10.10.10.2 &gateway=10.10.10.1 &netmask=255.255.255.0 &vlan=lswitch%3A%2F%2F3
CCC 2014 DENVER
A cross cutting concern: vlan and vlanid are encoded all over and used interchangably
- riginally only numbers but also as uri
123 equals vlan:/ /123 PROBLEM ANAL YSIS
CCC 2014 DENVER
SOLUTIONS enum versus registration of types
CCC 2014 DENVER
no uuid à id mapping available
A THOUGHT
CCC 2014 DENVER
WHY THIS IS A PROBLEM isolation types/uris and broadcast types where designed into the system but there was no way to map a vlan on one of them and the meaning of the two was lost so only BroadcastDomainType got my attention
CCC 2014 DENVER
stt (nicira nvp) networks where added next came midonet then a whole lot more how they did it
CCC 2014 DENVER
Lswitch("lswitch", String.clas class) { ) { @Override public <T> URI public <T> URI toUri
- Uri(T v
(T value alue) { ) { try { try { return ne eturn new URI(" w URI("ls lswit witch ch", ", value alue.toS
- String
tring(), null, null); (), null, null); } ca catch ( ch (URIS URISyntaxEx yntaxException eption e e) { ) { thr throw ne new w CloudRuntimeEx CloudRuntimeException eption(" ("Unable Unable t to
- con
- nvert
ert t to
- br
broadcas
- adcast URI: " + v
URI: " + value alue); ); } } /** * gets scheme specific part instead of host */ @Override
CCC 2014 DENVER
vlan vlanid vlannumber vlanuri broadcastDomainUri broadcastDomainId
CCC 2014 DENVER
- public String getVlanId() {
- return vlanId;
+ public String getBroadcastUri() { + return broadcastUri;
CCC 2014 DENVER
BroadcastDomainType Vs IsolationType
CCC 2014 DENVER
- nic.setIsolationUri(IsolationType.Vlan.toUri(ip.getVlanTag()));
- nic.setBroadcastUri(IsolationType.Vlan.toUri(ip.getVlanTag()));
+ nic.setIsolationUri(IsolationType.Vlan.toUri(ip.getBroadcastUri())); + nic.setBroadcastUri(IsolationType.Vlan.toUri(ip.getBroadcastUri()));
CCC 2014 DENVER
long vnetId = Long.parseLong(BroadcastDomainType.getValue(uri)); long long vlan vlan = = Long.parseL
- ng.parseLong
- ng(br
broadcas
- adcastUri.
tUri.getHos getHost()); ()); long long vlan vlan = = Long.
- ng.parseL
parseLong
- ng(Br
Broadcas
- adcastDomainT
tDomainType ype.getV getValue alue(uri uri)); ));
CCC 2014 DENVER
HOW TO PROCEED NEXT make uuid à id mapping? register uri types including format instead of enum
CCC 2014 DENVER
WORK TO BE DONE the result of this work is not ideal, so I am hoping to get feedback
- n possible improvements
CCC 2014 DENVER
CONCLUSIONS
CCC 2014 DENVER
CCC 2014 DENVER
introduce yourself by proving you can do one thing good at a time introduce your change by making the small preliminaries that pave the way
CCC 2014 DENVER
work on a branch and do it publicly submit a lot of parts to master ACS should find a way to make this possible for non committers in a gerrit or github way
CCC 2014 DENVER