mirror of https://github.com/apache/cloudstack.git
CLOUDSTACK-8956: Log NSX Api Version
This commit is contained in:
parent
d05c1f47ba
commit
2386ae5e5a
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"));
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue