[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-8832?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14900575#comment-14900575
 ] 

ASF GitHub Bot commented on CLOUDSTACK-8832:
--------------------------------------------

Github user nlivens commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/801#discussion_r39964563
  
    --- Diff: 
plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java
 ---
    @@ -285,60 +507,341 @@ public boolean 
deleteNuageVspDevice(DeleteNuageVspDeviceCmd cmd) {
             return responseList;
         }
     
    -    @Override
    -    public boolean configure(String name, Map<String, Object> params) 
throws ConfigurationException {
    -        try {
    -            initNuageScheduledTasks();
    -        } catch (Exception ce) {
    -            s_logger.warn("Failed to load NuageVsp configuration 
properties. Check if the NuageVsp properties are configured correctly");
    +    private void registerNewNuageVspDevice(ConfigurationVO currentConfig, 
String registeredNuageVspDevice) {
    +        if (currentConfig == null) {
    +            ConfigKey<String> configKey = new 
ConfigKey<String>("Advanced", String.class, "nuagevsp.cms.id", 
registeredNuageVspDevice,
    +                    "<ACS Nuage VSP Device ID>:<Allocated VSD CMS ID> - Do 
not edit", false);
    +            ConfigurationVO configuration = new 
ConfigurationVO("management-server", configKey);
    +            _configDao.persist(configuration);
    +        } else {
    +            String newValue;
    +            String currentValue = currentConfig.getValue();
    +            if (StringUtils.isNotBlank(currentValue)) {
    +                newValue = currentValue + ";" + registeredNuageVspDevice;
    +            } else {
    +                newValue = registeredNuageVspDevice;
    +            }
    +            _configDao.update("nuagevsp.cms.id", newValue);
             }
    -        return true;
         }
     
    -    private void initNuageScheduledTasks() {
    -        Integer numOfSyncThreads = 
Integer.valueOf(_configDao.getValue(NuageVspManager.NuageVspSyncWorkers.key()));
    -        Integer syncUpIntervalInMinutes = 
Integer.valueOf(_configDao.getValue(NuageVspManager.NuageVspSyncInterval.key()));
    -
    -        if (numOfSyncThreads != null && syncUpIntervalInMinutes != null) {
    -            ThreadFactory threadFactory = new ThreadFactory() {
    -                public Thread newThread(Runnable runnable) {
    -                    Thread thread = new Thread(runnable, "Nuage Vsp sync 
task");
    -                    if (thread.isDaemon())
    -                        thread.setDaemon(false);
    -                    if (thread.getPriority() != Thread.NORM_PRIORITY)
    -                        thread.setPriority(Thread.NORM_PRIORITY);
    -                    return thread;
    +    private void auditHost(HostVO host) {
    +        _hostDao.loadDetails(host);
    +
    +        boolean validateDomains = true;
    +        List<NuageVspDeviceVO> nuageVspDevices = 
_nuageVspDao.listByHost(host.getId());
    +        if (!CollectionUtils.isEmpty(nuageVspDevices)) {
    +            for (NuageVspDeviceVO nuageVspDevice : nuageVspDevices) {
    +                ConfigurationVO cmsIdConfig = 
_configDao.findByName("nuagevsp.cms.id");
    +                String nuageVspCmsId = 
findNuageVspCmsIdForDevice(nuageVspDevice.getId(), cmsIdConfig);
    +                SyncNuageVspCmsIdCommand syncCmd = new 
SyncNuageVspCmsIdCommand(SyncType.AUDIT, nuageVspCmsId);
    +                SyncNuageVspCmsIdAnswer answer = (SyncNuageVspCmsIdAnswer) 
_agentMgr.easySend(nuageVspDevice.getHostId(), syncCmd);
    +
    +                if (answer != null && !answer.getSuccess()) {
    +                    s_logger.fatal("Nuage VSP Device with ID " + 
nuageVspDevice.getId() + " is configured with an unknown CMS ID!");
    +                    validateDomains = false;
    +                } else if (answer != null && answer.getSyncType() == 
SyncType.REGISTER) {
    +                    registerNewNuageVspDevice(cmsIdConfig, 
nuageVspDevice.getId() + ":" + answer.getNuageVspCmsId());
                     }
    -            };
    -            scheduler = Executors.newScheduledThreadPool(numOfSyncThreads, 
threadFactory);
    -            scheduler.scheduleWithFixedDelay(new 
NuageVspSyncTask("FLOATING_IP"), ONE_MINUTE_MULTIPLIER * 15, 
ONE_MINUTE_MULTIPLIER * syncUpIntervalInMinutes,
    -                    TimeUnit.MILLISECONDS);
    -            scheduler.scheduleWithFixedDelay(new 
NuageVspSyncTask("ENTERPRISE_NTWK_MACRO"), ONE_MINUTE_MULTIPLIER * 15, 
ONE_MINUTE_MULTIPLIER * syncUpIntervalInMinutes,
    -                    TimeUnit.MILLISECONDS);
    -            scheduler
    -                    .scheduleWithFixedDelay(new 
NuageVspSyncTask("ENTERPRISE"), ONE_MINUTE_MULTIPLIER * 15, 
ONE_MINUTE_MULTIPLIER * syncUpIntervalInMinutes, TimeUnit.MILLISECONDS);
    -        } else {
    -            s_logger.warn("NuageVsp configuration for syncWorkers=" + 
numOfSyncThreads + " syncInterval=" + syncUpIntervalInMinutes
    -                    + " could not be read properly. So, check if the 
properties are configured properly in global properties");
    +            }
    +        }
    +
    +        if (validateDomains) {
    +            auditDomainsOnVsp(host, true, false);
             }
         }
     
    -    public class NuageVspSyncTask implements Runnable {
    +    private boolean auditDomainsOnVsp(HostVO host, boolean add, boolean 
remove) {
    +        List<NuageVspDeviceVO> nuageVspDevices = 
_nuageVspDao.listByHost(host.getId());
    +        if (!CollectionUtils.isEmpty(nuageVspDevices)) {
    +            _hostDao.loadDetails(host);
    +            List<DomainVO> allDomains = _domainDao.listAll();
    +            for (DomainVO domain : allDomains) {
    +                try {
    +                    SyncDomainCommand cmd = new 
SyncDomainCommand(domain.getUuid(), domain.getName(), domain.getPath(), add, 
remove);
    +                    SyncDomainAnswer answer = (SyncDomainAnswer) 
_agentMgr.easySend(host.getId(), cmd);
    +                    return answer.getSuccess();
    +                } catch (Exception e) {
    +                    s_logger.warn(e.getMessage());
    +                    return false;
    +                }
    +            }
    +        }
    +        return true;
    +    }
     
    -        private String nuageVspEntity;
    +    private String findNuageVspCmsIdForDevice(long deviceId, 
ConfigurationVO cmsIdConfig) {
    +        String configValue = cmsIdConfig.getValue();
    +        if (StringUtils.isNotBlank(configValue)) {
    +            String[] configuredNuageVspDevices = configValue.split(";");
    +            for (String configuredNuageVspDevice : 
configuredNuageVspDevices) {
    +                if (configuredNuageVspDevice.startsWith(deviceId + ":")) {
    +                    return configuredNuageVspDevice.split(":")[1];
    +                }
    +            }
    +        }
    +        return null;
    +    }
     
    -        public NuageVspSyncTask(String nuageVspEntity) {
    -            this.nuageVspEntity = nuageVspEntity;
    +    public List<String> getDnsDetails(Network network) {
    +        List<String> dnsServers = null;
    +        Boolean configureDns = 
Boolean.valueOf(_configDao.getValue(NuageVspManager.NuageVspConfigDns.key()));
    +        if (configureDns) {
    +            Boolean configureExternalDns = 
Boolean.valueOf(_configDao.getValue(NuageVspManager.NuageVspDnsExternal.key()));
    +            DataCenterVO dc = 
_dataCenterDao.findById(network.getDataCenterId());
    +            dnsServers = new ArrayList<String>();
    +            if (configureExternalDns) {
    +                if (dc.getDns1() != null && dc.getDns1().length() > 0) {
    +                    dnsServers.add(dc.getDns1());
    +                }
    +                if (dc.getDns2() != null && dc.getDns2().length() > 0) {
    +                    dnsServers.add(dc.getDns2());
    +                }
    +            } else {
    +                if (dc.getInternalDns1() != null && 
dc.getInternalDns1().length() > 0) {
    +                    dnsServers.add(dc.getInternalDns1());
    +                }
    +                if (dc.getInternalDns2() != null && 
dc.getInternalDns2().length() > 0) {
    +                    dnsServers.add(dc.getInternalDns2());
    +                }
    +            }
             }
    +        return dnsServers;
    +    }
     
    -        public String getNuageVspEntity() {
    -            return nuageVspEntity;
    +    public List<String> getGatewaySystemIds() {
    +        List<String> gatewayIds = null;
    +        String gatewaySystemIds = 
String.valueOf(_configDao.getValue(NuageVspManager.NuageVspConfigGateway.key()));
    +        if (StringUtils.isNotBlank(gatewaySystemIds)) {
    +            StringTokenizer tokens = new StringTokenizer(gatewaySystemIds, 
",");
    +            gatewayIds = new ArrayList<String>(tokens.countTokens());
    +            while (tokens.hasMoreTokens())
    +            {
    +                gatewayIds.add(tokens.nextToken());
    +            }
    --- End diff --
    
    Isn't this just going to return a List<StringTokenizer> instead? Or is the 
google framework smart enough to call a toString() on it?


> Update Nuage VSP plugin to work with Nuage VSP release 3.2
> ----------------------------------------------------------
>
>                 Key: CLOUDSTACK-8832
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-8832
>             Project: CloudStack
>          Issue Type: Improvement
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>          Components: Management Server
>    Affects Versions: 4.6.0
>            Reporter: Nick Livens
>            Assignee: Nick Livens
>
> Nuage VSP 3.2 is being released, we want to bring the plugin up to date for 
> this release



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to