[ https://issues.apache.org/jira/browse/CLOUDSTACK-9403?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15714798#comment-15714798 ]
ASF GitHub Bot commented on CLOUDSTACK-9403: -------------------------------------------- Github user fmaximus commented on a diff in the pull request: https://github.com/apache/cloudstack/pull/1579#discussion_r90623492 --- Diff: plugins/network-elements/nuage-vsp/src/com/cloud/network/resource/NuageVspResourceConfiguration.java --- @@ -0,0 +1,310 @@ +// +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +package com.cloud.network.resource; + +import java.util.HashMap; +import java.util.Map; + +import javax.naming.ConfigurationException; + +import net.nuage.vsp.acs.client.api.model.NuageVspUser; +import net.nuage.vsp.acs.client.api.model.VspHost; +import net.nuage.vsp.acs.client.common.NuageVspApiVersion; + +import org.apache.commons.lang.builder.ToStringBuilder; + +import com.cloud.util.NuageVspUtil; + +public class NuageVspResourceConfiguration { + private static final String NAME = "name"; + private static final String GUID = "guid"; + private static final String ZONE_ID = "zoneid"; + private static final String HOST_NAME = "hostname"; + private static final String CMS_USER = "cmsuser"; + private static final String CMS_USER_PASSWORD = "cmsuserpass"; + private static final String PORT = "port"; + private static final String API_VERSION = "apiversion"; + private static final String API_RELATIVE_PATH = "apirelativepath"; + private static final String RETRY_COUNT = "retrycount"; + private static final String RETRY_INTERVAL = "retryinterval"; + private static final String NUAGE_VSP_CMS_ID = "nuagevspcmsid"; + + private static final String CMS_USER_ENTEPRISE_NAME = "CSP"; + + private String _name; + private String _guid; + private String _zoneId; + private String _hostName; + private String _cmsUser; + private String _cmsUserPassword; + private String _port; + private String _apiVersion; + private String _apiRelativePath; + private String _retryCount; + private String _retryInterval; + private String _nuageVspCmsId; + + public String name() { + return _name; + } + + public String guid() { + return this._guid; + } + + public NuageVspResourceConfiguration guid(String guid) { + this._guid = guid; + return this; + } + + public String zoneId() { + return this._zoneId; + } + + public NuageVspResourceConfiguration zoneId(String zoneId) { + this._zoneId = zoneId; + return this; + } + + public String hostName() { + return this._hostName; + } + + public NuageVspResourceConfiguration hostName(String hostName) { + this._hostName = hostName; + this._name = "Nuage VSD - " + _hostName; + return this; + } + + public String cmsUser() { + return this._cmsUser; + } + + public NuageVspResourceConfiguration cmsUser(String cmsUser) { + this._cmsUser = cmsUser; + return this; + } + + public String cmsUserPassword() { + return this._cmsUserPassword; + } + + public NuageVspResourceConfiguration cmsUserPassword(String cmsUserPassword) { + this._cmsUserPassword = cmsUserPassword; + return this; + } + + public String port() { + return this._port; + } + + public NuageVspResourceConfiguration port(String port) { + this._port = port; + return this; + } + + public String apiVersion() { + return this._apiVersion; + } + + public NuageVspResourceConfiguration apiVersion(String apiVersion) { + this._apiVersion = apiVersion; + return this; + } + + public String apiRelativePath() { + return this._apiRelativePath; + } + + public NuageVspResourceConfiguration apiRelativePath(String apiRelativePath) { + this._apiRelativePath = apiRelativePath; + return this; + } + + public String retryCount() { + return this._retryCount; + } + + public NuageVspResourceConfiguration retryCount(String retryCount) { + this._retryCount = retryCount; + return this; + } + + public String retryInterval() { + return this._retryInterval; + } + + public NuageVspResourceConfiguration retryInterval(String retryInterval) { + this._retryInterval = retryInterval; + return this; + } + + public String nuageVspCmsId() { + return this._nuageVspCmsId; + } + + public NuageVspResourceConfiguration nuageVspCmsId(String nuageVspCmsId) { + this._nuageVspCmsId = nuageVspCmsId; + return this; + } + + public String getRootPath(){ + return "https://" + _hostName + ":" + _port + "/nuage"; + } + + public String getApiPath() { --- End diff -- NuageVspResourceConfiguration is used as a field in UpdateNuageVspDeviceCommand. As this might be (de)serialized to Json is the resource is on a different management server in the cluster, and URI doesn't have a Gson TypeAdapter. > Nuage VSP Plugin : Support for SharedNetwork fuctionality including Marvin > test coverage > ---------------------------------------------------------------------------------------- > > Key: CLOUDSTACK-9403 > URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9403 > Project: CloudStack > Issue Type: Task > Security Level: Public(Anyone can view this level - this is the > default.) > Components: Automation, Network Controller > Reporter: Rahul Singal > Assignee: Nick Livens > > This is first phase of support of Shared Network in cloudstack through > NuageVsp Network Plugin. A shared network is a type of virtual network that > is shared between multiple accounts i.e. a shared network can be accessed by > virtual machines that belong to many different accounts. This basic > functionality will be supported with the below common use case: > - shared network can be used for monitoring purposes. A shared network can be > assigned to a domain and can be used for monitoring VMs belonging to all > accounts in that domain. > - Public accessible of shared Network. > With the current implementation with NuageVsp plugin, It support over-lapping > of Ip address, Public Access and also adding Ip ranges in shared Network. > In VSD, it is implemented in below manner: > - In order to have tenant isolation for shared networks, we will have to > create a Shared L3 Subnet for each shared network, and instantiate it across > the relevant enterprises. A shared network will only exist under an > enterprise when it is needed, so when the first VM is spinned under that ACS > domain inside that shared network. > - For public shared Network it will also create a floating ip subnet pool in > VSD along with all the things mentioned in above point. > PR contents: > 1) Support for shared networks with tenant isolation on master with Nuage VSP > SDN Plugin. > 2) Support of shared network with publicly accessible ip ranges. > 2) Marvin test coverage for shared networks on master with Nuage VSP SDN > Plugin. > 3) Enhancements on our exiting Marvin test code (nuagevsp plugins directory). > 4) PEP8 & PyFlakes compliance with our Marvin test code. > Test Results are:- > Valiate that ROOT admin is NOT able to deploy a VM for a user in ROOT domain > in a shared network with ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_account_ROOTuser | Status : > SUCCESS === > ok > Valiate that ROOT admin is NOT able to deploy a VM for a admin user in a > shared network with ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_account_differentdomain | > Status : SUCCESS === > ok > Valiate that ROOT admin is NOT able to deploy a VM for admin user in the same > domain but in a ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_account_domainadminuser | > Status : SUCCESS === > ok > Valiate that ROOT admin is NOT able to deploy a VM for user in the same > domain but in a different ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_account_domainuser | Status : > SUCCESS === > ok > Valiate that ROOT admin is able to deploy a VM for regular user in a shared > network with scope=account ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_account_user | Status : SUCCESS > === > ok > Valiate that ROOT admin is able to deploy a VM for user in ROOT domain in a > shared network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_all_ROOTuser | Status : SUCCESS > === > ok > Valiate that ROOT admin is able to deploy a VM for a domain admin users in a > shared network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_all_domainadminuser | Status : > SUCCESS === > ok > Valiate that ROOT admin is able to deploy a VM for other users in a shared > network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_all_domainuser | Status : > SUCCESS === > ok > Valiate that ROOT admin is able to deploy a VM for admin user in a domain in > a shared network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_all_subdomainadminuser | Status > : SUCCESS === > ok > Valiate that ROOT admin is able to deploy a VM for any user in a subdomain in > a shared network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_all_subdomainuser | Status : > SUCCESS === > ok > Valiate that ROOT admin is NOT able to deploy a VM for parent domain admin > user in a shared network with scope=domain with no subdomain access ... === > TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_ROOTuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is able to deploy a VM for domain admin user in a > shared network with scope=domain with no subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_domainadminuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is able to deploy a VM for domain user in a shared > network with scope=domain with no subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_domainuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is NOT able to deploy a VM for parent domain admin > user in a shared network with scope=domain with no subdomain access ... === > TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_parentdomainadminuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is NOT able to deploy a VM for parent domain user in > a shared network with scope=domain with no subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_parentdomainuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is NOT able to deploy a VM for sub domain admin user > in a shared network with scope=domain with no subdomain access ... === > TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_subdomainadminuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is NOT able to deploy a VM for sub domain user in a > shared network with scope=domain with no subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_nosubdomainaccess_subdomainuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is NOT able to deploy a VM for user in ROOT domain in > a shared network with scope=domain with subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_ROOTuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is able to deploy a VM for domain admin user in a > shared network with scope=domain with subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_domainadminuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is able to deploy a VM for domain user in a shared > network with scope=domain with subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_domainuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is NOT able to deploy a VM for parent domain admin > user in a shared network with scope=domain with subdomain access ... === > TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_parentdomainadminuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is NOT able to deploy a VM for parent domain user in > a shared network with scope=domain with subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_parentdomainuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is able to deploy a VM for subdomain admin user in a > shared network with scope=domain with subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_subdomainadminuser > | Status : SUCCESS === > ok > Valiate that ROOT admin is able to deploy a VM for subdomain user in a shared > network with scope=domain with subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_admin_scope_domain_withsubdomainaccess_subdomainuser > | Status : SUCCESS === > ok > Valiate that Domain admin is NOT able to deploy a VM for an regular user in > ROOT domain in a shared network with scope=account ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_ROOTuser | Status > : SUCCESS === > ok > Valiate that Domain admin is able NOT able to deploy a VM for an regular user > from a differnt domain in a shared network with scope=account ... === > TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_differentdomain | > Status : SUCCESS === > ok > Valiate that Domain admin is NOT able to deploy a VM for an admin user in the > same domain but belonging ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_domainadminuser | > Status : SUCCESS === > ok > Valiate that Domain admin is NOT able to deploy a VM for user in the same > domain but belonging to a ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_domainuser | > Status : SUCCESS === > ok > Valiate that Domain admin is able to deploy a VM for an regular user in a > shared network with scope=account ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_account_user | Status : > SUCCESS === > ok > Valiate that Domain admin is NOT able to deploy a VM for user in ROOT domain > in a shared network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_ROOTuser | Status : > SUCCESS === > ok > Valiate that Domain admin is NOT able to deploy a VM for user in other domain > in a shared network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_crossdomainuser | > Status : SUCCESS === > ok > Valiate that Domain admin is able to deploy a VM for a domain admin user in a > shared network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_domainadminuser | > Status : SUCCESS === > ok > Valiate that Domain admin is able to deploy a VM for a domain user in a > shared network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_domainuser | Status : > SUCCESS === > ok > Valiate that Domain admin is able to deploy a VM for a sub domain admin user > in a shared network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_subdomainadminuser | > Status : SUCCESS === > ok > Valiate that Domain admin is able to deploy a VM for a sub domain user in a > shared network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_all_subdomainuser | > Status : SUCCESS === > ok > Valiate that Domain admin is NOT able to deploy a VM for user in ROOT domain > in a shared network with scope=Domain and no subdomain access ... === > TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_ROOTuser > | Status : SUCCESS === > ok > Valiate that Domain admin is able to deploy a VM for domain admin user in a > shared network with scope=Domain and no subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_domainadminuser > | Status : SUCCESS === > ok > Valiate that Domain admin is able to deploy a VM for domain user in a shared > network with scope=Domain and no subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_domainuser > | Status : SUCCESS === > ok > Valiate that Domain admin is NOT able to deploy VM for parent domain admin > user in shared network with scope=Domain and no subdomain access ... === > TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_parentdomainadminuser > | Status : SUCCESS === > ok > Valiate that Domain admin is NOT able to deploy a VM for parent domain user > in a shared network with scope=Domain and no subdomain access ... === > TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_parentdomainuser > | Status : SUCCESS === > ok > Valiate that Domain admin is NOT able to deploy a VM for sub domain admin > user in a shared network with scope=Domain and no subdomain access ... === > TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_subdomainadminuser > | Status : SUCCESS === > ok > Valiate that Domain admin is NOT able to deploy a VM for sub domain user in a > shared network with scope=Domain and no subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_nosubdomainaccess_subdomainuser > | Status : SUCCESS === > ok > Valiate that Domain admin is NOT able to deploy a VM for user in ROOT domain > in a shared network with scope=Domain and subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_ROOTuser > | Status : SUCCESS === > ok > Valiate that Domain admin is able to deploy a VM for admin user in domain in > a shared network with scope=Domain and subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_domainadminuser > | Status : SUCCESS === > ok > Valiate that Domain admin is able to deploy a VM for regular user in domain > in a shared network with scope=Domain and subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_domainuser > | Status : SUCCESS === > ok > Validate that Domain admin is NOT able to deploy VM for admin user in parent > domain in shared network with scope=Domain subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_parentdomainadminuser > | Status : SUCCESS === > ok > Valiate that Domain admin NOT able to deploy VM for regular user in parent > domain in shared network with scope=Domain subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_parentdomainuser > | Status : SUCCESS === > ok > Valiate that Domain admin is able to deploy a VM for admin user in subdomain > in a shared network with scope=Domain and subdomain access ... === TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_subdomainadminuser > | Status : SUCCESS === > ok > Valiate that Domain admin is able to deploy a VM for regular user in > subdomain in a shared network with scope=Domain and subdomain access ... === > TestName: > test_deployVM_in_sharedNetwork_as_domainadmin_scope_domain_withsubdomainaccess_subdomainuser > | Status : SUCCESS === > ok > Valiate that regular user is able NOT able to deploy a VM for another user in > the same domain in a shared network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_regularuser_scope_all_anotherusersamedomain > | Status : SUCCESS === > ok > Valiate that regular user is able NOT able to deploy a VM for another user in > a different domain in a shared network with scope=all ... === TestName: > test_deployVM_in_sharedNetwork_as_regularuser_scope_all_crossdomain | Status > : SUCCESS === > ok > ---------------------------------------------------------------------- > Ran 51 tests in 3192.356s > OK > For monitoring useCase test runs are:- > Valiate that Normal user in the same domain able to add NIC in a shared > network with scope=all ... === TestName: > test_01_addNic_in_sharedNetwork_scope_all_as_domainuser | Status : SUCCESS === > ok > Valiate that Parent domain admin is able to add a NIC in a shared network > with scope=all ... === TestName: > test_02_addNic_in_sharedNetwork_scope_all_as_domain_parentAdmin | Status : > SUCCESS === > ok > Valiate that User can enable staticNat on VPC NIC where second nicn is in a > shared network with scope=all ... === TestName: > test_03_staticNat_in_VPC_secondNic_sharedNetwork_scope_all | Status : SUCCESS > === > ok > Validate that reboot VM is done successfully without any Error ... === > TestName: test_04_rebootVM_after_sharedNetwork_nic | Status : SUCCESS === > ok > Validate that restart Tier Network is done successfully with cleanup ... === > TestName: test_05_restart_Tier_VPC_Network_sharedNetwork_nic | Status : > SUCCESS === > ok > Validate that restart Shared Network is done successfully without any Error > ... === TestName: test_06_restart_sharedNetwork_scope_all | Status : SUCCESS > === > ok > Valiate that Normal user in the same domain able to remove NIC in a shared > network which is added by Parent Domain Admin ... === TestName: > test_07_removeNic_in_sharedNetwork_scope_all_as_domainuser | Status : SUCCESS > === > ok > Valiate that Parent domain admin is able to remove a NIC which is added by > child domain user ... === TestName: > test_08_removeNic_in_sharedNetwork_scope_all_as_domain_parentAdmin | Status : > SUCCESS === > ok > Valiate that Normal user in the same domain able to add NIC in a shared > network with scope=domain without subdomain Access ... === TestName: > test_09_addNic_in_sharedNetwork_scope_domain_as_domainuser | Status : SUCCESS > === > ok > Valiate that Normal user in the same domain able to add NIC in a shared > network with scope=domain with subdomain Access ... === TestName: > test_10_addNic_in_sharedNetwork_scope_domain_subdomain_as_domainuser | Status > : SUCCESS === > ok > ---------------------------------------------------------------------- > Ran 10 tests in 744.354s > OK -- This message was sent by Atlassian JIRA (v6.3.4#6332)