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:/ /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)
CCC 2014 DENVER AUDIENCE � 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.
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 # S T T H E L I M A I L # C O D E # R D W B O A E V I E T H E R O U G H O N T H R R A C T I I N T E # T S ! ) A L S O S B U T W I K I ( F N T H E F S O # E D C O D G O O # U G S F I N D B S T Y L E C H E C K R A T # E C O D # J I R A # S D O C # O D E . N G ) C M E N T I F D O C U # ( S E L
CCC 2014 DENVER C O D E # S T T H E L I M A I L # C O D E # R D W B O A E V I E T H E R O U G H O N T H R R A C T I I N T E # T S ! ) A L S O S B U T W I K I ( F N T H E F S O # E D C O D G O O # U G S F I N D B S T Y L E C H E C K R A T # E C O D # J I R A # S D O C # O D E N G ) C M E N T I F D O C U # ( S E L
CCC 2014 DENVER C O D E # S T T H E L I M A I L # C O D E # R D W B O A R E V I E T H E R O U G H O N T H R A C T I I N T E # T S ! ) A L S O F S B U T W I K I ( N T H E F S O # E D C O D G O O # U G S F I N D B S T Y L E C H E C K R A T # E C O D # J I R A # S D O C # O D E N G ) C M E N T I F D O C U # ( S E L
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 of VPC routers on to each other
CCC 2014 DENVER THE ENVISIONED SOLUTION
CCC 2014 DENVER http://localhost:8080/client/api? command=createPrivateGateway &response=json THE CORE CODE &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 PROBLEM ANAL YSIS A cross cutting concern: � vlan and vlanid are encoded all over and used interchangably � originally only numbers but also as uri � 123 equals vlan:/ /123
CCC 2014 DENVER SOLUTIONS enum versus registration of types
CCC 2014 DENVER A THOUGHT � no uuid à id mapping available
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 oUri(T v (T value alue) { ) { try { try { return ne eturn new URI(" w URI("ls lswit witch ch", ", value alue.toS oString 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 o con onvert ert t to o br broadcas oadcast 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 ong.parseLong ong(br broadcas oadcastUri. tUri.getHos getHost()); ()); long long vlan vlan = = Long. ong. parseL parseLong ong(Br Broadcas oadcastDomainT 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 on 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 SIMILARITIES PERSON PATCH bring one thing small changes to a good conclusion that build on each other before you start another be true to your ideals communicate both the but pragmatic about immediate and the end goal the work to be done not everybody that doesn’t in general: you are accepted say it is a good idea hates it unless.. not if.. you’re right. that doesn’t don’t break other code mean others are wrong
Recommend
More recommend