cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hugo Trippaers" <htrippa...@schubergphilis.com>
Subject Re: Review Request 23282: CLOUDSTACK-6845 : First Code drop for NuageVsp Network plugin
Date Wed, 09 Jul 2014 12:18:54 GMT


> 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
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message