Hi Marcus, Your review is awesomely welcome, Marcus - if such word exist. :)
Since this whole works was carried out along a few months, it was difficult to split formatting, refactoring and functionality. But as you have noticed, besides the Façade/Flyweight pattern applied to the ways command are sent from the VirtualRoutingResource, all the other stuff is really hypervisor/storage independent. Tomorrow I will try to get my KVM environment done so I can also run the same tests against it. Thanks again for the review. Cheers, Wilder On 17 Feb 2015, at 18:01, Marcus <shadow...@gmail.com> wrote: > I've browsed the code, and I don't really see anything > hypervisor-specific for KVM aside from a change to > VirtualRoutingResource to handle the new AbstractConfigItemFacade, > which looks like it's used to pass commands to the virtual router. > Assuming the VR can be configured, there aren't any changes here that > should keep VMs from starting or storage from working as-is. > > As far as code review, this branch contains a lot of noise that makes > it a bit more difficult to review. A large percentage of the diff was > formatting and adding 'final' to variables, etc. Ideally those commits > would be applied individually to master rather than confusing a > functional change with them. > > On Tue, Feb 17, 2015 at 8:07 AM, Marcus <shadow...@gmail.com> wrote: >> Wido, those were my thoughts as well. I haven't looked at the code >> yet, but I'd be surprised if they had to change storage code (or even >> hypervisor-specific code outside of passing along new VR script >> Commands) in any way to accommodate a VR feature, so I hope this is >> just caution. But enough guessing, perhaps I should just go look. >> >> On Tue, Feb 17, 2015 at 6:15 AM, Wido den Hollander <w...@widodh.nl> wrote: >>> -----BEGIN PGP SIGNED MESSAGE----- >>> Hash: SHA1 >>> >>> >>> >>> On 02/17/2015 02:19 PM, Daan Hoogland wrote: >>>> People, >>>> >>>> We are having some internal discussions about this code at >>>> Schuberg Philis. We are (most specifically I am) convinced that we >>>> cannot foresee the ways in which this can break master when merged. >>>> We had only one issue coming back from the community and this was >>>> functional more then an issue. By the number of issues that we find >>>> our selves this can't be right. We had no -1 either so the only >>>> logical conclusion is that no one else is testing this part of the >>>> code. >>>> >>>> We do not test all the code and our quality improvement process is >>>> not up to spec [1] yet. Things are going to stop working in the >>>> master branch when we merge this. I don't like this but I see no >>>> way to prevent this in our present state of affairs. We are adding >>>> as much tests as we can without hurting Schuberg Philis business >>>> and that has a limitation. >>>> >>>> You can read how Wilder's env is set up and Ian's isn't very >>>> different. So let me use a negative formulation this time: If we >>>> merge now the following things will not have been tested: most >>>> hypervisors: kvm vmware hyperv >>> >>> I don't *think* it's a major problem since you changed the VR itself, >>> but the way it is deployed is still the same. In the end it's just a >>> disk for the hypervisor. >>> >>>> storage: all non nfs things >>> >>> I'm not so afraid for this since the storage is handled by the >>> hypervisor and the VR doesn't have any knowledge there. >>> >>>> ipv6 functionality This is not a complete list, I suspect. >>>> >>>> Can I get a lot of +1 in spite of these uncertainties? Can you all >>>> please test as much as possible? >>>> >>> >>> As we discussed on the phone, my test cluster is broken at the moment >>> and it will take me 2~3 weeks to get it up and running again. >>> >>> Wido >>> >>>> I called a merge for this morning but will give it a few more >>>> rebase efforts because of those considerations. >>>> >>>> [1] >>>> https://cwiki.apache.org/confluence/display/CLOUDSTACK/Quality+and+Process+Improvement+Initiative >>>> >>>> On Tue, Feb 17, 2015 at 12:46 AM, Wilder Rodrigues >>>> <wrodrig...@schubergphilis.com> wrote: >>>>> Hi all, >>>>> >>>>> I have been some tests on the branch in order to give you all >>>>> some confidence. >>>>> >>>>> During the tests I found 1 bug related to communication from VM A >>>>> on Tier 1 to VM B on Tier 2 in a Single VPC. I can reproduce the >>>>> bug and it disappears when I convert the Single VPC to a >>>>> redundant one. I already talked to Ian and he is on it. >>>>> >>>>> Results follow below. >>>>> >>>>> Cheers, Wilder >>>>> >>>>> Environment: >>>>> >>>>> Xen 6.2 running on VMware zone within our Betacloud (ACS 4.4.2) >>>>> MySQL running on MacBook Pro Management Server on MacBook Pro >>>>> >>>>> ::: Manual Tests::: >>>>> >>>>> Isolated Networks >>>>> >>>>> * Create Network * Create 2 VMs using new Network * Create FW >>>>> rules * Create PF rules * SSH to the VMs * SSH from one VM onto >>>>> the other in the same isolated network * Destroy Master router * >>>>> Restart the Network * Restart the Network with Clean-up option * >>>>> Repeat steps above >>>>> >>>>> Redundant Isolated Networks >>>>> >>>>> * Create Redundant Network Offering * Create 2 VMs using new >>>>> offering * Create FW rules * Create PF rules * SSH to the VMs * >>>>> SSH from one VM onto the other in the same redundant isolated >>>>> network * Destroy Master router * Restart the Network * Stop the >>>>> Master Router >>>>> >>>>> Single VPC >>>>> >>>>> * Create VPC * Create 2 Tiers * Create ACLS * Create 1 Vm for >>>>> each Tier * Associate 2 IP address * Add PF rules * SSH onto VMs >>>>> * SSH from 1 VM onto another * Restart VPC - Make it redundant * >>>>> Repeat steps above >>>>> >>>>> Redundant VPC >>>>> >>>>> * Create VPC * Create 2 Tiers * Create ACLS * Create 1 Vm for >>>>> each Tier * Associate 2 IP address * Add PF rules * SSH onto VMs >>>>> * SSH from 1 VM onto another * Stop/Destroy the Master Router * >>>>> Observe the Backup router became Master * SSH again onto the VMs >>>>> * Restart VPC (without clean-up) * Observer only 1 new router is >>>>> created * New router is started as Backup * SSH onto VMs * >>>>> Restart VPC (with clean-up) * Observer only 2 new routers are >>>>> created * SSH onto VMs >>>>> >>>>> ::: Automated Tests ::: >>>>> >>>>> Test Create Account and user for that account ... === TestName: >>>>> test_01_create_account | Status : SUCCESS === ok Test Sub domain >>>>> allowed to launch VM when a Domain level zone is created ... === >>>>> TestName: test_01_add_vm_to_subdomain | Status : SUCCESS === ok >>>>> Test delete domain without force option ... === TestName: >>>>> test_DeleteDomain | Status : SUCCESS === ok Test delete domain >>>>> with force option ... === TestName: test_forceDeleteDomain | >>>>> Status : SUCCESS === ok Test update admin details ... === >>>>> TestName: test_updateAdminDetails | Status : SUCCESS === ok Test >>>>> update domain admin details ... === TestName: >>>>> test_updateDomainAdminDetails | Status : SUCCESS === ok Test user >>>>> update API ... === TestName: test_updateUserDetails | Status : >>>>> SUCCESS === ok Test login API with domain ... === TestName: >>>>> test_LoginApiDomain | Status : SUCCESS === ok Test if Login API >>>>> does not return UUID's ... === TestName: >>>>> test_LoginApiUuidResponse | Status : SUCCESS === ok >>>>> >>>>> ---------------------------------------------------------------------- >>>>> >>>>> >>> Ran 9 tests in 1140.977s >>>>> >>>>> OK >>>>> >>>>> Test reset virtual machine on reboot ... === TestName: >>>>> test_01_reset_vm_on_reboot | Status : SUCCESS === ok >>>>> >>>>> ---------------------------------------------------------------------- >>>>> >>>>> >>> Ran 1 test in 216.907s >>>>> >>>>> OK >>>>> >>>>> Test advanced zone virtual router ... === TestName: >>>>> test_advZoneVirtualRouter | Status : SUCCESS === ok Test Deploy >>>>> Virtual Machine ... === TestName: test_deploy_vm | Status : >>>>> SUCCESS === ok Test Multiple Deploy Virtual Machine ... === >>>>> TestName: test_deploy_vm_multiple | Status : SUCCESS === ok Test >>>>> Stop Virtual Machine ... === TestName: test_01_stop_vm | Status : >>>>> SUCCESS === ok Test Start Virtual Machine ... === TestName: >>>>> test_02_start_vm | Status : SUCCESS === ok Test Reboot Virtual >>>>> Machine ... === TestName: test_03_reboot_vm | Status : SUCCESS >>>>> === ok Test destroy Virtual Machine ... === TestName: >>>>> test_06_destroy_vm | Status : SUCCESS === ok Test recover Virtual >>>>> Machine ... === TestName: test_07_restore_vm | Status : SUCCESS >>>>> === ok Test migrate VM ... SKIP: At least two hosts should be >>>>> present in the zone for migration Test destroy(expunge) Virtual >>>>> Machine ... === TestName: test_09_expunge_vm | Status : SUCCESS >>>>> === ok >>>>> >>>>> ---------------------------------------------------------------------- >>>>> >>>>> >>> Ran 10 tests in 851.022s >>>>> >>>>> OK (SKIP=1) >>>>> >>>>> Test router internal advanced zone ... SKIP: Marvin configuration >>>>> has no host credentials to check router services Test restart >>>>> network ... === TestName: test_03_restart_network_cleanup | >>>>> Status : SUCCESS === ok Test router basic setup ... === TestName: >>>>> test_05_router_basic | Status : SUCCESS === ok Test router >>>>> advanced setup ... === TestName: test_06_router_advanced | Status >>>>> : SUCCESS === ok Test stop router ... === TestName: >>>>> test_07_stop_router | Status : SUCCESS === ok Test start router >>>>> ... === TestName: test_08_start_router | Status : SUCCESS === ok >>>>> Test reboot router ... === TestName: test_09_reboot_router | >>>>> Status : SUCCESS === ok >>>>> >>>>> ---------------------------------------------------------------------- >>>>> >>>>> >>> Ran 7 tests in 454.519s >>>>> >>>>> OK (SKIP=1) >>>>> >>>>> Test to create service offering ... === TestName: >>>>> test_01_create_service_offering | Status : SUCCESS === ok Test to >>>>> update existing service offering ... === TestName: >>>>> test_02_edit_service_offering | Status : SUCCESS === ok Test to >>>>> delete service offering ... === TestName: >>>>> test_03_delete_service_offering | Status : SUCCESS === ok >>>>> >>>>> ---------------------------------------------------------------------- >>>>> >>>>> >>> Ran 3 tests in 206.916s >>>>> >>>>> OK >>>>> >>>>> Test VPN in VPC ... === TestName: test_vpc_remote_access_vpn | >>>>> Status : SUCCESS === ok Test VPN in VPC ... === TestName: >>>>> test_vpc_site2site_vpn | Status : SUCCESS === ok >>>>> >>>>> ---------------------------------------------------------------------- >>>>> >>>>> >>> Ran 2 tests in 373.908s >>>>> >>>>> OK >>>>> >>>>> Test create VPC offering ... === TestName: >>>>> test_01_create_vpc_offering | Status : SUCCESS === ok Test VPC >>>>> offering without load balancing service ... === TestName: >>>>> test_03_vpc_off_without_lb | Status : SUCCESS === ok Test VPC >>>>> offering without static NAT service ... === TestName: >>>>> test_04_vpc_off_without_static_nat | Status : SUCCESS === ok Test >>>>> VPC offering without port forwarding service ... === TestName: >>>>> test_05_vpc_off_without_pf | Status : SUCCESS === ok Test VPC >>>>> offering with invalid services ... === TestName: >>>>> test_06_vpc_off_invalid_services | Status : SUCCESS === ok Test >>>>> update VPC offering ... === TestName: test_07_update_vpc_off | >>>>> Status : SUCCESS === ok Test list VPC offering ... === TestName: >>>>> test_08_list_vpc_off | Status : SUCCESS === ok >>>>> test_09_create_redundant_vpc_offering >>>>> (integration.acs.tests.test_vpc_offerings.TestVPCOffering) ... >>>>> === TestName: test_09_create_redundant_vpc_offering | Status : >>>>> SUCCESS === ok >>>>> >>>>> ---------------------------------------------------------------------- >>>>> >>>>> >>> Ran 8 tests in 672.382s >>>>> >>>>> OK >>>>> >>>>> test_privategw_acl >>>>> (integration.acs.tests.test_privategw_acl.TestPrivateGwACL) ... >>>>> === TestName: test_privategw_acl | Status : SUCCESS === ok >>>>> >>>>> ---------------------------------------------------------------------- >>>>> >>>>> >>> Ran 1 test in 90.756s >>>>> >>>>> OK >>>>> >>>>> Test to change service offering of router after addition of one >>>>> guest network ... === TestName: >>>>> test_04_chg_srv_off_router_after_addition_of_one_guest_network | >>>>> Status : SUCCESS === ok Test destroy of router after addition of >>>>> one guest network ... === TestName: >>>>> test_05_destroy_router_after_addition_of_one_guest_network | >>>>> Status : SUCCESS === ok Test to stop and start router after >>>>> creation of VPC ... === TestName: >>>>> test_01_stop_start_router_after_creating_vpc | Status : SUCCESS >>>>> === ok Test to reboot the router after creating a VPC ... === >>>>> TestName: test_02_reboot_router_after_creating_vpc | Status : >>>>> SUCCESS === ok Tests to change service offering of the Router >>>>> after ... === TestName: test_04_change_service_offerring_vpc | >>>>> Status : SUCCESS === ok Test to destroy the router after creating >>>>> a VPC ... === TestName: test_05_destroy_router_after_creating_vpc >>>>> | Status : SUCCESS === ok >>>>> >>>>> ---------------------------------------------------------------------- >>>>> >>>>> >>> Ran 6 tests in 665.965s >>>>> >>>>> OK >>>>> >>>>> On 16 Feb 2015, at 17:53, Daan Hoogland <daan.hoogl...@gmail.com> >>>>> wrote: >>>>> >>>>>> H, >>>>>> >>>>>> I will merge our feature/systemvm-persistent-config into >>>>>> master. If you have objections please let me know before >>>>>> tomorrow. >>>>>> >>>>>> @john: your comment was addressed in the present day version. >>>>>> >>>>>> -- Daan >>>>> >>>> >>>> >>>> >>> -----BEGIN PGP SIGNATURE----- >>> Version: GnuPG v1 >>> >>> iQIcBAEBAgAGBQJU40zmAAoJEAGbWC3bPspCVHgP/ReiqputXvndXpIy1q9dFBqF >>> wXXtFlqLKAwm7XmtmOrqUdOWPB7fCGPo6G6Tka/divg0BHLxU/Mzfx9vQRXXzGwK >>> 4WROFyOTl0pTLbksJhbTR0pzT4FEfK6EkfIz2S+zd1xaFGlc/puWSjGHs45RS5vm >>> SqNM5knZVo+4nTTMepJFQFEBN4GND8wbTuI3EEjcaodQ1uZM6+3COPaNjj74cXtr >>> K+k7MxSJq0tBBKlCO30Ou0oK/pPn4Az9zYkNgfBoyoJfe8W2PCHS0/f3La3O19Cr >>> lIOjvVoA1zNfC+E8WRhhZC/HNOzme0MiAAPHHkPykWL9xVBObSihkhiu9XehYjKK >>> aK614+Hte6bLD+gra9H01QA1z8Y8ylFxFRTXb+e6fcV6mVReICaQ5tkL50fuTuJ2 >>> HRk+1Ybul35/J3ZW3qQ7rikpF4sQ9XTC6MrCpl3Ix0XopYxWtvkLTHVtH5iLWhzy >>> hwiS2kAcc9F8zsLIl01tTbUMxAJUR6cms2AxInPadYUlNu3FmCUwTaFpV8GIr1VK >>> kdcsEyQdXwXTPCcelCraJ214GVpH3IESqtkeqNDB1F7fPNhJQMyQgVT6fzCVXe4G >>> I9Fo82+2X8x7XEwGZL81nt3D0p+ndG0zd+awWlrR4C7rQ3UJl+SSBIkKtqT8G8XS >>> AA3KCgF8a43lyTNCk1x/ >>> =19tY >>> -----END PGP SIGNATURE-----