com.cloud.hypervisor.ovm3.resources.helpers.Ovm3Configuration.java Source code

Java tutorial

Introduction

Here is the source code for com.cloud.hypervisor.ovm3.resources.helpers.Ovm3Configuration.java

Source

// 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.hypervisor.ovm3.resources.helpers;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.naming.ConfigurationException;

import org.apache.commons.lang.BooleanUtils;
import org.apache.log4j.Logger;

import com.cloud.hypervisor.ovm3.objects.Network;
import com.cloud.utils.NumbersUtil;
import com.cloud.utils.net.NetUtils;

/* holds config data for the Ovm3 Hypervisor */
public class Ovm3Configuration {
    private static final Logger LOGGER = Logger.getLogger(Ovm3Configuration.class);
    private String agentIp;
    private Long agentZoneId;
    private Long agentPodId;
    private String agentPoolId;
    private Long agentClusterId;
    private String agentHostname;
    private String csHostGuid;
    private String agentSshUserName = "root";
    private String agentSshPassword;
    private String agentOvsAgentUser = "oracle";
    private String agentOvsAgentPassword;
    private Integer agentOvsAgentPort = 8899;
    private Boolean agentOvsAgentSsl = false;
    private String agentSshKeyFile = "id_rsa.cloud";
    private String agentOwnedByUuid = "d1a749d4295041fb99854f52ea4dea97";
    private Boolean agentIsMaster = false;
    private Boolean agentHasMaster = false;
    private Boolean agentInOvm3Pool = false;
    private Boolean agentInOvm3Cluster = false;
    private String ovm3PoolVip = "";
    private String agentPrivateNetworkName;
    private String agentPublicNetworkName;
    private String agentGuestNetworkName;
    private String agentStorageNetworkName;
    private String agentControlNetworkName = "control0";
    private String agentOvmRepoPath = "/OVS/Repositories";
    private String agentSecStoragePath = "/nfsmnt";
    private String agentScript = "cloudstack.py";
    private String agentCheckStorageScript = "storagehealth.py";
    private Integer agentStorageCheckTimeout = 120;
    private Integer agentStorageCheckInterval = 1;
    private List<String> agentScripts = Arrays.asList(agentCheckStorageScript, agentScript);
    private String agentScriptsDir = "/opt/cloudstack/bin";
    private int domRSshPort = 3922;
    private String domRCloudPath = "/opt/cloud/bin/";
    private String virtualdiskdir = "VirtualDisks";
    private String templatedir = "Templates";
    private Map<String, Network.Interface> agentInterfaces = null;
    private Boolean istest = false;
    private Map<String, Object> rawParams = new HashMap<String, Object>();

    public Ovm3Configuration(Map<String, Object> params) throws ConfigurationException {
        setAgentZoneId(Long.parseLong((String) params.get("zone")));
        setAgentPodId(Long.parseLong(validateParam("PodId", (String) params.get("pod"))));
        setAgentClusterId(Long.parseLong((String) params.get("cluster")));
        setOvm3PoolVip(String.valueOf(params.get("ovm3vip")));
        setAgentInOvm3Pool(BooleanUtils.toBoolean((String) params.get("ovm3pool")));
        setAgentInOvm3Cluster(BooleanUtils.toBoolean((String) params.get("ovm3cluster")));
        setAgentHostname(validateParam("Hostname", (String) params.get("host")));
        setAgentIp((String) params.get("ip"));
        if (params.get("agentport") != null) {
            setAgentOvsAgentPort(Integer.parseInt((String) params.get("agentport")));
        }
        setAgentSshUserName(validateParam("Username", (String) params.get("username")));
        setAgentSshPassword(validateParam("Password", (String) params.get("password")));
        setCsHostGuid(validateParam("Cloudstack Host GUID", (String) params.get("guid")));
        setAgentOvsAgentUser(validateParam("OVS Username", (String) params.get("agentusername")));
        setAgentOvsAgentPassword(validateParam("OVS Password", (String) params.get("agentpassword")));
        setAgentPrivateNetworkName((String) params.get("private.network.device"));
        setAgentPublicNetworkName((String) params.get("public.network.device"));
        setAgentGuestNetworkName((String) params.get("guest.network.device"));
        setAgentStorageNetworkName((String) params.get("storage.network.device1"));
        this.setAgentStorageCheckTimeout(
                NumbersUtil.parseInt((String) params.get("ovm3.heartbeat.timeout"), agentStorageCheckTimeout));
        this.setAgentStorageCheckInterval(
                NumbersUtil.parseInt((String) params.get("ovm3.heartbeat.interval"), agentStorageCheckInterval));
        validatePoolAndCluster();
        if (params.containsKey("istest")) {
            setIsTest((Boolean) params.get("istest"));
        }
    }

    /**
     * validatePoolAndCluster:
     * A cluster is impossible with a  pool.
     * A pool is impossible without a vip.
     */
    private void validatePoolAndCluster() {
        if (agentInOvm3Cluster) {
            LOGGER.debug("Clustering requires a pool, setting pool to true");
            agentInOvm3Pool = true;
        }
        if (!NetUtils.isValidIp(ovm3PoolVip)) {
            LOGGER.debug("No VIP, Setting ovm3pool and ovm3cluster to false");
            agentInOvm3Pool = false;
            agentInOvm3Cluster = false;
            ovm3PoolVip = "";
        }
    }

    public String getAgentName() {
        return agentHostname;
    }

    public void setAgentName(String agentName) {
        this.agentHostname = agentName;
    }

    public String getAgentIp() {
        return agentIp;
    }

    public void setAgentIp(String agentIp) {
        this.agentIp = agentIp;
    }

    public Long getAgentZoneId() {
        return agentZoneId;
    }

    public void setAgentZoneId(Long agentZoneId) {
        this.agentZoneId = agentZoneId;
    }

    public Long getAgentPodId() {
        return agentPodId;
    }

    public void setAgentPodId(Long agentPodId) {
        this.agentPodId = agentPodId;
    }

    public String getAgentPoolId() {
        return agentPoolId;
    }

    public void setAgentPoolId(String agentPoolId) {
        this.agentPoolId = agentPoolId;
    }

    public Long getAgentClusterId() {
        return agentClusterId;
    }

    public void setAgentClusterId(Long agentClusterId) {
        this.agentClusterId = agentClusterId;
    }

    public String getAgentHostname() {
        return agentHostname;
    }

    public void setAgentHostname(String agentHostname) {
        this.agentHostname = agentHostname;
    }

    public String getCsHostGuid() {
        return csHostGuid;
    }

    public void setCsHostGuid(String csHostGuid) {
        this.csHostGuid = csHostGuid;
    }

    public String getAgentSshUserName() {
        return agentSshUserName;
    }

    public void setAgentSshUserName(String agentSshUserName) {
        this.agentSshUserName = agentSshUserName;
    }

    public String getAgentSshPassword() {
        return agentSshPassword;
    }

    public void setAgentSshPassword(String agentSshPassword) {
        this.agentSshPassword = agentSshPassword;
    }

    public String getAgentOvsAgentUser() {
        return agentOvsAgentUser;
    }

    public void setAgentOvsAgentUser(String agentOvsAgentUser) {
        this.agentOvsAgentUser = agentOvsAgentUser;
    }

    public String getAgentOvsAgentPassword() {
        return agentOvsAgentPassword;
    }

    public void setAgentOvsAgentPassword(String agentOvsAgentPassword) {
        this.agentOvsAgentPassword = agentOvsAgentPassword;
    }

    public Integer getAgentOvsAgentPort() {
        return agentOvsAgentPort;
    }

    public void setAgentOvsAgentPort(Integer agentOvsAgentPort) {
        this.agentOvsAgentPort = agentOvsAgentPort;
    }

    public Boolean getAgentOvsAgentSsl() {
        return agentOvsAgentSsl;
    }

    public void setAgentOvsAgentSsl(Boolean agentOvsAgentSsl) {
        this.agentOvsAgentSsl = agentOvsAgentSsl;
    }

    public String getAgentSshKeyFileName() {
        return agentSshKeyFile;
    }

    public void setAgentSshKeyFileName(String agentSshFile) {
        this.agentSshKeyFile = agentSshFile;
    }

    public String getAgentOwnedByUuid() {
        return agentOwnedByUuid;
    }

    public void setAgentOwnedByUuid(String agentOwnedByUuid) {
        this.agentOwnedByUuid = agentOwnedByUuid;
    }

    public Boolean getAgentIsMaster() {
        return agentIsMaster;
    }

    public void setAgentIsMaster(Boolean agentIsMaster) {
        this.agentIsMaster = agentIsMaster;
    }

    public Boolean getAgentHasMaster() {
        return agentHasMaster;
    }

    public void setAgentHasMaster(Boolean agentHasMaster) {
        this.agentHasMaster = agentHasMaster;
    }

    public Boolean getAgentInOvm3Pool() {
        return agentInOvm3Pool;
    }

    public void setAgentInOvm3Pool(Boolean agentInOvm3Pool) {
        this.agentInOvm3Pool = agentInOvm3Pool;
    }

    public Boolean getAgentInOvm3Cluster() {
        return agentInOvm3Cluster;
    }

    public void setAgentInOvm3Cluster(Boolean agentInOvm3Cluster) {
        this.agentInOvm3Cluster = agentInOvm3Cluster;
    }

    public String getOvm3PoolVip() {
        return ovm3PoolVip;
    }

    public void setOvm3PoolVip(String ovm3PoolVip) {
        this.ovm3PoolVip = ovm3PoolVip;
    }

    public String getAgentPrivateNetworkName() {
        return agentPrivateNetworkName;
    }

    public void setAgentPrivateNetworkName(String agentPrivateNetworkName) {
        this.agentPrivateNetworkName = agentPrivateNetworkName;
    }

    public String getAgentPublicNetworkName() {
        return agentPublicNetworkName;
    }

    public void setAgentPublicNetworkName(String agentPublicNetworkName) {
        this.agentPublicNetworkName = agentPublicNetworkName;
    }

    public String getAgentGuestNetworkName() {
        return agentGuestNetworkName;
    }

    public void setAgentGuestNetworkName(String agentGuestNetworkName) {
        this.agentGuestNetworkName = agentGuestNetworkName;
    }

    public String getAgentStorageNetworkName() {
        return agentStorageNetworkName;
    }

    public void setAgentStorageNetworkName(String agentStorageNetworkName) {
        this.agentStorageNetworkName = agentStorageNetworkName;
    }

    public String getAgentControlNetworkName() {
        return agentControlNetworkName;
    }

    public void setAgentControlNetworkName(String agentControlNetworkName) {
        this.agentControlNetworkName = agentControlNetworkName;
    }

    public String getAgentOvmRepoPath() {
        return agentOvmRepoPath;
    }

    public void setAgentOvmRepoPath(String agentOvmRepoPath) {
        this.agentOvmRepoPath = agentOvmRepoPath;
    }

    public String getAgentSecStoragePath() {
        return agentSecStoragePath;
    }

    public void setAgentSecStoragePath(String agentSecStoragePath) {
        this.agentSecStoragePath = agentSecStoragePath;
    }

    public int getDomRSshPort() {
        return domRSshPort;
    }

    public void setDomRSshPort(int domRSshPort) {
        this.domRSshPort = domRSshPort;
    }

    public String getDomRCloudPath() {
        return domRCloudPath;
    }

    public void setDomRCloudPath(String domRCloudPath) {
        this.domRCloudPath = domRCloudPath;
    }

    public Boolean getIsTest() {
        return istest;
    }

    public void setIsTest(Boolean t) {
        istest = t;
    }

    public String getAgentScript() {
        return agentScript;
    }

    public void setAgentScript(String agentScript) {
        this.agentScript = agentScript;
    }

    public String getAgentScriptsDir() {
        return agentScriptsDir;
    }

    public void setAgentScriptsDir(String agentScriptsDir) {
        this.agentScriptsDir = agentScriptsDir;
    }

    public Map<String, Network.Interface> getAgentInterfaces() {
        return agentInterfaces;
    }

    public void setAgentInterfaces(Map<String, Network.Interface> agentInterfaces) {
        this.agentInterfaces = agentInterfaces;
    }

    public List<String> getAgentScripts() {
        return agentScripts;
    }

    public void setAgentScripts(List<String> agentScripts) {
        this.agentScripts = agentScripts;
    }

    public String getAgentCheckStorageScript() {
        return agentCheckStorageScript;
    }

    public void setAgentCheckStorageScript(String agentCheckStorageScript) {
        this.agentCheckStorageScript = agentCheckStorageScript;
    }

    public Integer getAgentStorageCheckTimeout() {
        return agentStorageCheckTimeout;
    }

    public void setAgentStorageCheckTimeout(Integer agentStorageCheckTimeout) {
        this.agentStorageCheckTimeout = agentStorageCheckTimeout;
    }

    public Integer getAgentStorageCheckInterval() {
        return agentStorageCheckInterval;
    }

    public void setAgentStorageCheckInterval(Integer agentStorageCheckInterval) {
        this.agentStorageCheckInterval = agentStorageCheckInterval;
    }

    public String getVirtualDiskDir() {
        return this.virtualdiskdir;
    }

    public String getTemplateDir() {
        return this.templatedir;
    }

    /**
     * ValidateParam: Validate the input for configure
     * @param name
     * @param param
     * @return param
     * @throws ConfigurationException
     */
    private String validateParam(String name, String param) throws ConfigurationException {
        if (param == null) {
            String msg = "Unable to get " + name + " params are null";
            LOGGER.debug(msg);
            throw new ConfigurationException(msg);
        }
        return param;
    }

    public Map<String, Object> getRawParams() {
        return rawParams;
    }

    public void setRawParams(Map<String, Object> params) {
        rawParams.putAll(params);
    }
}