> On July 8, 2014, 10:07 a.m., Hugo Trippaers wrote:
> > plugins/network-elements/nuage-vsp/src/com/cloud/network/resource/NuageVspResource.java,
> >  line 196
> > <https://reviews.apache.org/r/23282/diff/1/?file=624333#file624333line196>
> >
> >     I'm not really agreeing with this method of loading the client. The 
> > client should be loaded using the classloader.
> >     
> >     Is the library available from maven central or is distribution 
> > restricted? If the latter case we need to move this plugin and the 
> > dependency on the library to the noredist build.
> 
> Suresh Ramamurthy wrote:
>     Yes, NuageVsp plugin client library is distribution restricted. I had 
> some design question regarding dropping the library and loading it 
> dynamically. Please find below our requirement'
>     
>     1) We wanted to drop our NuageVsp plugin client after installing 
> CloudStack. 
>     2) We wanted to create an NuageVsp plugin Client RPM and then install the 
> RPM that copies in a location. The location could be some other location that 
> NuageVsp Plugin client chooses.
>        In this case I thought of copying it under 
> /usr/share/cloudstack-management/webapps/client/WEB-INF/lib but it could be 
> different location
>     3) Then restart CloudStack.
>     4) When NuageVsp Device is added, then the class files will be 
> dynamically loaded and things will work seamlessly
>     
>     Advantages of above approach:
>     
>     1) Cloudstack build does not have any dependency on our jar files. This 
> is because, we do not have any reference of NuageVsp Plugin client code 
>        and the client classes are loaded dynamically
>     2) There is no maven central dependency
>     3) Version Upgrade of NuageVsp Plugin client does not depend on 
> Cloudstack version. We will just uninstall our RPM and re-install the new 
> version of NuageVsp Plugin client code and restart CloudStack
>     
>     Hugo, above was our suggestion. Is it okay to follow the above approach 
> of loading the Plugin Client files? 
>     
>     If the above approach is not acceptable then we are open to follow the 
> noredist build approach. If we are following the noredist build approach then 
> I just want to clarify the procedure to be
>     followed to use NuageVsp Plugin
>     
>     1) User needs to download NuageVsp Plugin client jar file
>     2) Copy the jar under deps folder
>     3) Run install-non-oss.sh
>     4) Build RPM using -p NOREDIST option
>     
>     Could you please let me know details of the forum where we can have 
> design discussions?
>     
>     I know, I am asking too many question :)
>     
>     Thanks reviewing and supporting us.
>

That makes sense, thanks for the clarification. I think we can work that way, 
actually our plugin system is designed to work in such a way that the entire 
plugin could technically be separated into an rpm package. 

Probably the best way to go forward is to agree on a file location. Probably 
something like /usr/share/nuage/lib for unix alike systems is a better place to 
store the library. The actual location would need to be configured as a global 
setting in CloudStack and passed to the resource during initialization. 

However to use this type of loading i would like to make sure that a user will 
receive a clear error message explaining that the correct library is not 
installed when it tries to use it. 

For functional testing this introduces number of problems as only people with 
access to those libraries can do any kind of testing on the library or are you 
delivering a stub together with the functional tests so we can integrate it in 
the functional test stream.

In short, i'm ok with this type of loading, provided:
  * we have a way of testing the plugin or execute functional tests against 
something that has access to the libraries.
  * the cloudstack plugin documentation makes it clear that the plugin requires 
an additional library.
  * the user receives an error message when he tries to configure the nauge 
plugin in cloudstack without the library.

I'll take the question whether or not we need to put this plugin in the 
noredist build to the dev-list as i would like some more input on that.


- Hugo


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/23282/#review47436
-----------------------------------------------------------


On July 7, 2014, 6 p.m., Suresh Ramamurthy wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/23282/
> -----------------------------------------------------------
> 
> (Updated July 7, 2014, 6 p.m.)
> 
> 
> Review request for cloudstack and Hugo Trippaers.
> 
> 
> Bugs: CLOUDSTACK-6845
>     https://issues.apache.org/jira/browse/CLOUDSTACK-6845
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This is first code drop for NuageVsp Network plugin support that will bring 
> the Nuage VSP network virtualization technology to CloudStack.
> 
> We need a new branch to checkin the fixes once the review is done. Please 
> create a new branch for NuageVsp plugin.
> 
> 
> Diffs
> -----
> 
>   api/src/com/cloud/event/EventTypes.java 5b9ea5c 
>   api/src/com/cloud/network/Network.java 885bffe 
>   api/src/com/cloud/network/Networks.java 1e4d229 
>   api/src/com/cloud/network/PhysicalNetwork.java 8cc214e 
>   build/replace.properties 265f335 
>   client/WEB-INF/classes/resources/messages.properties b192cb0 
>   client/WEB-INF/classes/resources/messages_zh_CN.properties 1ec4e95 
>   client/pom.xml 29fef4f 
>   client/tomcatconf/commands.properties.in b9ac27b 
>   client/tomcatconf/log4j-cloud.xml.in 08021f2 
>   packaging/debian/replace.properties 5a0bd58 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java
>  8e4c710 
>   
> plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
>  5b49e5b 
>   
> plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
>  a9840bd 
>   plugins/network-elements/nuage-vsp/pom.xml PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/resources/META-INF/cloudstack/vsp/module.properties
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/resources/META-INF/cloudstack/vsp/spring-vsp-context.xml
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/resources/META-INF/cloudstack/vsp/vsp-defaults.ini
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/StartupVspCommand.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/VspResourceAnswer.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/VspResourceCommand.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/element/ApplyAclRuleVspAnswer.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/element/ApplyAclRuleVspCommand.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/element/ApplyStaticNatVspAnswer.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/element/ApplyStaticNatVspCommand.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/element/ShutDownVpcVspAnswer.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/element/ShutDownVpcVspCommand.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/guru/DeallocateVmVspAnswer.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/guru/DeallocateVmVspCommand.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/guru/ImplementNetworkVspAnswer.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/guru/ImplementNetworkVspCommand.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/guru/ReleaseVmVspAnswer.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/guru/ReleaseVmVspCommand.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/guru/ReserveVmInterfaceVspAnswer.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/guru/ReserveVmInterfaceVspCommand.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/guru/TrashNetworkVspAnswer.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/guru/TrashNetworkVspCommand.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/sync/SyncVspAnswer.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/agent/api/sync/SyncVspCommand.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/api/commands/AddNuageVspDeviceCmd.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/api/commands/DeleteNuageVspDeviceCmd.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/api/commands/IssueNuageVspResourceRequestCmd.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/api/commands/ListNuageVspDevicesCmd.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/api/commands/VspConstants.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/api/response/NuageVspDeviceResponse.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/api/response/NuageVspResourceResponse.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/network/NuageVspDeviceVO.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/network/dao/NuageVspDao.java 
> PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/network/dao/NuageVspDaoImpl.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/network/element/NuageVspElement.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/network/element/NuageVspVpcElement.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/network/guru/NuageVspGuestNetworkGuru.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManager.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/network/resource/NuageVspResource.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/network/sync/NuageVspSync.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/com/cloud/network/sync/NuageVspSyncImpl.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/net/nuage/vsp/acs/NuageVspPluginClientLoader.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/net/nuage/vsp/acs/client/NuageVspApiClient.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/net/nuage/vsp/acs/client/NuageVspElementClient.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/net/nuage/vsp/acs/client/NuageVspGuruClient.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/src/net/nuage/vsp/acs/client/NuageVspSyncClient.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/test/com/cloud/network/element/NuageVspElementTest.java
>  PRE-CREATION 
>   
> plugins/network-elements/nuage-vsp/test/com/cloud/network/guru/NuageVspGuestNetworkGuruTest.java
>  PRE-CREATION 
>   plugins/pom.xml b5e6a61 
>   server/src/com/cloud/api/ApiResponseHelper.java 51122e0 
>   server/src/com/cloud/configuration/ConfigurationManagerImpl.java 897f8e1 
>   server/src/com/cloud/network/NetworkServiceImpl.java b3de9e3 
>   server/src/com/cloud/network/vpc/VpcManagerImpl.java c7237c1 
>   setup/db/create-schema.sql fe5cd0a 
>   setup/db/db/schema-440to450.sql c88a18a 
>   tools/apidoc/gen_toc.py 827d6bf 
>   ui/dictionary.jsp e9d84de 
>   ui/scripts/configuration.js 9311e37 
>   ui/scripts/docs.js 74a08bc 
>   ui/scripts/system.js 9012580 
>   ui/scripts/ui-custom/zoneWizard.js 4091c03 
>   vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java 
> dd55439 
> 
> Diff: https://reviews.apache.org/r/23282/diff/
> 
> 
> Testing
> -------
> 
> Nuage VSP plugin depends on following components of Nuage SDN solution
> a) Nuage VSD
> b) Nuage VSC
> c) Nuage VRS, this needs installed on the Hypervisor
> All the above components needs to be provisioned for the plugin to function 
> properly. Also, Nuage VSP plugin directly talks with Nuage VSD using Rest 
> API. So, all the components needs to be running to test the plugin 
> functionality.
> 
> The following tests are tested
> 
> Isolated Network Test Cases
> 
> a) Create a network offering with default egress deny rule and select 
> services supported by Nuage VSP plugin. Choose NuageVsp as the service 
> provider for DHCP, SourceNAT, StaticNAT, Firewall and Virtual Networking 
> services.
>    Choose VirtualRouter as the service provider for UserData service.
> b) Create an isolated Network with network offering created above
> c) Spawn 2 VMs. Verify that VMs should each get an IP address. They should 
> ping each other. Verify that SSH to a box on the external network should fail
> b) Create a Static NAT and associate it one of the VM. Add an Egress rule for 
> the network with source CIDR as 0.0.0.0/0, protocol as TCP and ssh port number
> d) Verify that SSH to box that is in the external network should work
> e) Verify that Password reset for the VM should work
> 
> VPC Test Cases
> 
> a) Create a network offering for VPC with default deny all rule and select 
> services supported by Nuage VSP plugin for VPC. Choose NuageVsp as the 
> service provider for DHCP, SourceNAT, StaticNAT and Virtual Networking 
> services. Choose NuageVspVpc for NerworkACL service. 
> b) Create an VPC and select "Default VPC offering with NuageVsp" as the VPC 
> offering
> c) Create a tier and select the network offering created above
> c) Spawn 2 VMs. Verify that VMs should each get an IP address. They should 
> ping each other. SSH to a box on the external network should fail
> d) Create a Static NAT and associate it one of the VM
> e) Add an Network ACL Egress rule for the network with source CIDR as 
> 0.0.0.0/0, protocol as TCP and ssh port number
> f) Verify that SSH to box that is in the external network should work
> 
> 
> Thanks,
> 
> Suresh Ramamurthy
> 
>

Reply via email to