CLOUDSTACK-8956: Log NSX Api Version

This commit is contained in:
nvazquez 2015-10-19 16:26:24 -02:00 committed by nvazquez
parent d05c1f47ba
commit 2386ae5e5a
3 changed files with 100 additions and 1 deletions

View File

@ -29,6 +29,11 @@ public class ControlClusterStatus {
private Stats zoneStats;
private Stats routerStats;
private Stats securityProfileStats;
private ClusterRoleConfig[] configuredRoles;
public ClusterRoleConfig[] getConfiguredRoles() {
return configuredRoles;
}
public String getClusterStatus() {
return clusterStatus;
@ -84,4 +89,17 @@ public class ControlClusterStatus {
}
}
public class ClusterRoleConfig {
public String majorityVersion;
public String role;
public String getMajorityVersion(){
return majorityVersion;
}
public String getRole(){
return role;
}
}
}

View File

@ -37,6 +37,7 @@ import com.cloud.agent.api.StartupNiciraNvpCommand;
import com.cloud.host.Host;
import com.cloud.host.Host.Type;
import com.cloud.network.nicira.ControlClusterStatus;
import com.cloud.network.nicira.ControlClusterStatus.ClusterRoleConfig;
import com.cloud.network.nicira.DestinationNatRule;
import com.cloud.network.nicira.Match;
import com.cloud.network.nicira.NatRule;
@ -47,6 +48,7 @@ import com.cloud.network.utils.CommandRetryUtility;
import com.cloud.resource.ServerResource;
import com.cloud.utils.rest.CloudstackRESTException;
import com.cloud.utils.rest.HttpClientHelper;
import com.cloud.utils.nicira.nvp.plugin.NiciraNvpApiVersion;
public class NiciraNvpResource implements ServerResource {
@ -172,6 +174,7 @@ public class NiciraNvpResource implements ServerResource {
public PingCommand getCurrentStatus(final long id) {
try {
final ControlClusterStatus ccs = niciraNvpApi.getControlClusterStatus();
getApiProviderMajorityVersion(ccs);
if (!"stable".equals(ccs.getClusterStatus())) {
s_logger.error("ControlCluster state is not stable: " + ccs.getClusterStatus());
return null;
@ -183,6 +186,24 @@ public class NiciraNvpResource implements ServerResource {
return new PingCommand(Host.Type.L2Networking, id);
}
private void getApiProviderMajorityVersion(ControlClusterStatus ccs) {
ClusterRoleConfig[] configuredRoles = ccs.getConfiguredRoles();
if (configuredRoles != null){
String apiProviderMajorityVersion = searchApiProvider(configuredRoles);
NiciraNvpApiVersion.pingNiciraApiVersion(apiProviderMajorityVersion);
NiciraNvpApiVersion.logNiciraApiVersion();
}
}
private String searchApiProvider(ClusterRoleConfig[] configuredRoles) {
for (int i = 0; i < configuredRoles.length; i++) {
if (configuredRoles[i].getRole() != null && configuredRoles[i].getRole().equals("api_provider")){
return configuredRoles[i].getMajorityVersion();
}
}
return null;
}
@Override
public Answer executeRequest(final Command cmd) {
final NiciraNvpRequestWrapper wrapper = NiciraNvpRequestWrapper.getInstance();
@ -332,4 +353,4 @@ public class NiciraNvpResource implements ServerResource {
// TODO Auto-generated method stub
}
}
}

View File

@ -0,0 +1,60 @@
//
// 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.utils.nicira.nvp.plugin;
import org.apache.log4j.Logger;
import com.cloud.maint.Version;
public class NiciraNvpApiVersion {
private static final Logger s_logger = Logger.getLogger(NiciraNvpApiVersion.class);
private static String niciraApiVersion = null;
public static void pingNiciraApiVersion(String apiVersion){
if (apiVersion == null){
niciraApiVersion = null;
}
else{
if (niciraApiVersion == null){
setNiciraApiVersion(apiVersion);
}
else {
if (! apiVersion.equals(niciraApiVersion)){
setNiciraApiVersion(apiVersion);
}
}
}
}
private static void setNiciraApiVersion(String apiVersion){
niciraApiVersion = apiVersion;
}
public static boolean isApiVersionLowerThan(String apiVersion){
int compare = Version.compare(niciraApiVersion, apiVersion);
return (compare < 0);
}
public static void logNiciraApiVersion(){
s_logger.info("NSX API VERSION: " + ((niciraApiVersion != null) ? niciraApiVersion : " NOT PRESENT"));
}
}