mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-5779: Moving bumpUpPriority, edithosts.sh, dnsmasq.sh to use routeProxy
This commit is contained in:
parent
b703b43d7c
commit
0cdf0f6f67
@ -16,31 +16,6 @@
|
|||||||
// under the License.
|
// under the License.
|
||||||
package com.cloud.agent.resource.virtualnetwork;
|
package com.cloud.agent.resource.virtualnetwork;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.BufferedWriter;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileWriter;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.PrintWriter;
|
|
||||||
import java.net.InetSocketAddress;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLConnection;
|
|
||||||
import java.nio.channels.SocketChannel;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.ejb.Local;
|
|
||||||
import javax.naming.ConfigurationException;
|
|
||||||
|
|
||||||
import com.cloud.agent.api.routing.SetMonitorServiceCommand;
|
|
||||||
import org.apache.commons.codec.binary.Base64;
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
|
|
||||||
import com.cloud.agent.api.Answer;
|
import com.cloud.agent.api.Answer;
|
||||||
import com.cloud.agent.api.BumpUpPriorityCommand;
|
import com.cloud.agent.api.BumpUpPriorityCommand;
|
||||||
import com.cloud.agent.api.CheckRouterAnswer;
|
import com.cloud.agent.api.CheckRouterAnswer;
|
||||||
@ -66,6 +41,7 @@ import com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand;
|
|||||||
import com.cloud.agent.api.routing.SavePasswordCommand;
|
import com.cloud.agent.api.routing.SavePasswordCommand;
|
||||||
import com.cloud.agent.api.routing.SetFirewallRulesAnswer;
|
import com.cloud.agent.api.routing.SetFirewallRulesAnswer;
|
||||||
import com.cloud.agent.api.routing.SetFirewallRulesCommand;
|
import com.cloud.agent.api.routing.SetFirewallRulesCommand;
|
||||||
|
import com.cloud.agent.api.routing.SetMonitorServiceCommand;
|
||||||
import com.cloud.agent.api.routing.SetPortForwardingRulesAnswer;
|
import com.cloud.agent.api.routing.SetPortForwardingRulesAnswer;
|
||||||
import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
|
import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
|
||||||
import com.cloud.agent.api.routing.SetPortForwardingRulesVpcCommand;
|
import com.cloud.agent.api.routing.SetPortForwardingRulesVpcCommand;
|
||||||
@ -92,6 +68,27 @@ import com.cloud.utils.net.NetUtils;
|
|||||||
import com.cloud.utils.script.OutputInterpreter;
|
import com.cloud.utils.script.OutputInterpreter;
|
||||||
import com.cloud.utils.script.Script;
|
import com.cloud.utils.script.Script;
|
||||||
import com.cloud.utils.ssh.SshHelper;
|
import com.cloud.utils.ssh.SshHelper;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import org.apache.commons.codec.binary.Base64;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import javax.ejb.Local;
|
||||||
|
import javax.naming.ConfigurationException;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.BufferedWriter;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
import java.nio.channels.SocketChannel;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* VirtualNetworkResource controls and configures virtual networking
|
* VirtualNetworkResource controls and configures virtual networking
|
||||||
@ -107,14 +104,12 @@ public class VirtualRoutingResource implements Manager {
|
|||||||
private String _publicIpAddress;
|
private String _publicIpAddress;
|
||||||
private String _firewallPath;
|
private String _firewallPath;
|
||||||
private String _loadbPath;
|
private String _loadbPath;
|
||||||
private String _dhcpEntryPath;
|
|
||||||
private String _publicEthIf;
|
private String _publicEthIf;
|
||||||
private String _privateEthIf;
|
private String _privateEthIf;
|
||||||
private String _bumpUpPriorityPath;
|
private String _bumpUpPriorityPath;
|
||||||
private String _routerProxyPath;
|
private String _routerProxyPath;
|
||||||
private String _createIpAliasPath;
|
private String _createIpAliasPath;
|
||||||
private String _deleteIpAliasPath;
|
private String _deleteIpAliasPath;
|
||||||
private String _callDnsMasqPath;
|
|
||||||
|
|
||||||
private int _timeout;
|
private int _timeout;
|
||||||
private int _startTimeout;
|
private int _startTimeout;
|
||||||
@ -559,35 +554,34 @@ public class VirtualRoutingResource implements Manager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected Answer execute(final DhcpEntryCommand cmd) {
|
protected Answer execute(final DhcpEntryCommand cmd) {
|
||||||
final Script command = new Script(_dhcpEntryPath, _timeout, s_logger);
|
String args = " -m " + cmd.getVmMac();
|
||||||
command.add("-r", cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP));
|
|
||||||
if (cmd.getVmIpAddress() != null) {
|
if (cmd.getVmIpAddress() != null) {
|
||||||
command.add("-v", cmd.getVmIpAddress());
|
args += " -4 " + cmd.getVmIpAddress();
|
||||||
}
|
}
|
||||||
command.add("-m", cmd.getVmMac());
|
args += " -h " + cmd.getVmName();
|
||||||
command.add("-n", cmd.getVmName());
|
|
||||||
|
|
||||||
if (cmd.getDefaultRouter() != null) {
|
if (cmd.getDefaultRouter() != null) {
|
||||||
command.add("-d", cmd.getDefaultRouter());
|
args += " -d " + cmd.getDefaultRouter();
|
||||||
}
|
|
||||||
if (cmd.getStaticRoutes() != null) {
|
|
||||||
command.add("-s", cmd.getStaticRoutes());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd.getDefaultDns() != null) {
|
if (cmd.getDefaultDns() != null) {
|
||||||
command.add("-N", cmd.getDefaultDns());
|
args += " -n " + cmd.getDefaultDns();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cmd.getStaticRoutes() != null) {
|
||||||
|
args += " -s " + cmd.getStaticRoutes();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd.getVmIp6Address() != null) {
|
if (cmd.getVmIp6Address() != null) {
|
||||||
command.add("-6", cmd.getVmIp6Address());
|
args += " -6 " + cmd.getVmIp6Address();
|
||||||
command.add("-u", cmd.getDuid());
|
args += " -u " + cmd.getDuid();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cmd.isDefault()) {
|
if (!cmd.isDefault()) {
|
||||||
command.add("-z");
|
args += " -N";
|
||||||
}
|
}
|
||||||
|
|
||||||
final String result = command.execute();
|
final String result = routerProxy("edithosts.sh", cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP), args);
|
||||||
return new Answer(cmd, result == null, result);
|
return new Answer(cmd, result == null, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -625,16 +619,13 @@ public class VirtualRoutingResource implements Manager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected Answer execute(final DnsMasqConfigCommand cmd) {
|
protected Answer execute(final DnsMasqConfigCommand cmd) {
|
||||||
final Script command = new Script(_callDnsMasqPath, _timeout, s_logger);
|
|
||||||
String routerIp = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
|
String routerIp = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
|
||||||
List<DhcpTO> dhcpTos = cmd.getIps();
|
List<DhcpTO> dhcpTos = cmd.getIps();
|
||||||
String args = "";
|
String args = "";
|
||||||
for (DhcpTO dhcpTo : dhcpTos) {
|
for (DhcpTO dhcpTo : dhcpTos) {
|
||||||
args = args + dhcpTo.getRouterIp() + ":" + dhcpTo.getGateway() + ":" + dhcpTo.getNetmask() + ":" + dhcpTo.getStartIpOfSubnet() + "-";
|
args = args + dhcpTo.getRouterIp() + ":" + dhcpTo.getGateway() + ":" + dhcpTo.getNetmask() + ":" + dhcpTo.getStartIpOfSubnet() + "-";
|
||||||
}
|
}
|
||||||
command.add(routerIp);
|
final String result = routerProxy("dnsmasq.sh", routerIp, args);
|
||||||
command.add(args);
|
|
||||||
final String result = command.execute();
|
|
||||||
return new Answer(cmd, result == null, result);
|
return new Answer(cmd, result == null, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -693,13 +684,9 @@ public class VirtualRoutingResource implements Manager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected Answer execute(BumpUpPriorityCommand cmd) {
|
protected Answer execute(BumpUpPriorityCommand cmd) {
|
||||||
final String routerPrivateIPAddress = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
|
String result = routerProxy("bumpup_priority.sh", cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP), null);
|
||||||
final Script command = new Script(_bumpUpPriorityPath, _timeout, s_logger);
|
|
||||||
final OutputInterpreter.OneLineParser parser = new OutputInterpreter.OneLineParser();
|
|
||||||
command.add(routerPrivateIPAddress);
|
|
||||||
String result = command.execute(parser);
|
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
return new Answer(cmd, false, "BumpUpPriorityCommand failed: " + result);
|
return new Answer(cmd, false, "BumpUpPriorityCommand failed due to " + result);
|
||||||
}
|
}
|
||||||
return new Answer(cmd, true, null);
|
return new Answer(cmd, true, null);
|
||||||
}
|
}
|
||||||
@ -1137,11 +1124,6 @@ public class VirtualRoutingResource implements Manager {
|
|||||||
throw new ConfigurationException("Unable to find the call_loadbalancer.sh");
|
throw new ConfigurationException("Unable to find the call_loadbalancer.sh");
|
||||||
}
|
}
|
||||||
|
|
||||||
_dhcpEntryPath = findScript("dhcp_entry.sh");
|
|
||||||
if (_dhcpEntryPath == null) {
|
|
||||||
throw new ConfigurationException("Unable to find dhcp_entry.sh");
|
|
||||||
}
|
|
||||||
|
|
||||||
_publicEthIf = (String)params.get("public.network.device");
|
_publicEthIf = (String)params.get("public.network.device");
|
||||||
if (_publicEthIf == null) {
|
if (_publicEthIf == null) {
|
||||||
_publicEthIf = "xenbr1";
|
_publicEthIf = "xenbr1";
|
||||||
@ -1171,10 +1153,6 @@ public class VirtualRoutingResource implements Manager {
|
|||||||
if (_deleteIpAliasPath == null) {
|
if (_deleteIpAliasPath == null) {
|
||||||
throw new ConfigurationException("unable to find deleteipAlias.sh");
|
throw new ConfigurationException("unable to find deleteipAlias.sh");
|
||||||
}
|
}
|
||||||
_callDnsMasqPath = findScript("call_dnsmasq.sh");
|
|
||||||
if (_callDnsMasqPath == null) {
|
|
||||||
throw new ConfigurationException("unable to find call_dnsmasq.sh");
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,98 +16,6 @@
|
|||||||
// under the License.
|
// under the License.
|
||||||
package com.cloud.hypervisor.vmware.resource;
|
package com.cloud.hypervisor.vmware.resource;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.ConnectException;
|
|
||||||
import java.net.InetSocketAddress;
|
|
||||||
import java.net.URI;
|
|
||||||
import java.nio.channels.SocketChannel;
|
|
||||||
import java.rmi.RemoteException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.Random;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.TimeZone;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import javax.naming.ConfigurationException;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
import org.apache.log4j.NDC;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import com.vmware.vim25.AboutInfo;
|
|
||||||
import com.vmware.vim25.BoolPolicy;
|
|
||||||
import com.vmware.vim25.ClusterDasConfigInfo;
|
|
||||||
import com.vmware.vim25.ComputeResourceSummary;
|
|
||||||
import com.vmware.vim25.CustomFieldStringValue;
|
|
||||||
import com.vmware.vim25.DVPortConfigInfo;
|
|
||||||
import com.vmware.vim25.DVPortConfigSpec;
|
|
||||||
import com.vmware.vim25.DatastoreSummary;
|
|
||||||
import com.vmware.vim25.DistributedVirtualPort;
|
|
||||||
import com.vmware.vim25.DistributedVirtualSwitchPortConnection;
|
|
||||||
import com.vmware.vim25.DistributedVirtualSwitchPortCriteria;
|
|
||||||
import com.vmware.vim25.DynamicProperty;
|
|
||||||
import com.vmware.vim25.GuestInfo;
|
|
||||||
import com.vmware.vim25.HostCapability;
|
|
||||||
import com.vmware.vim25.HostHostBusAdapter;
|
|
||||||
import com.vmware.vim25.HostInternetScsiHba;
|
|
||||||
import com.vmware.vim25.HostInternetScsiHbaAuthenticationProperties;
|
|
||||||
import com.vmware.vim25.HostInternetScsiHbaStaticTarget;
|
|
||||||
import com.vmware.vim25.HostInternetScsiTargetTransport;
|
|
||||||
import com.vmware.vim25.HostScsiDisk;
|
|
||||||
import com.vmware.vim25.HostScsiTopology;
|
|
||||||
import com.vmware.vim25.HostScsiTopologyInterface;
|
|
||||||
import com.vmware.vim25.HostScsiTopologyLun;
|
|
||||||
import com.vmware.vim25.HostScsiTopologyTarget;
|
|
||||||
import com.vmware.vim25.ManagedObjectReference;
|
|
||||||
import com.vmware.vim25.ObjectContent;
|
|
||||||
import com.vmware.vim25.OptionValue;
|
|
||||||
import com.vmware.vim25.PerfCounterInfo;
|
|
||||||
import com.vmware.vim25.PerfEntityMetric;
|
|
||||||
import com.vmware.vim25.PerfEntityMetricBase;
|
|
||||||
import com.vmware.vim25.PerfMetricId;
|
|
||||||
import com.vmware.vim25.PerfMetricIntSeries;
|
|
||||||
import com.vmware.vim25.PerfMetricSeries;
|
|
||||||
import com.vmware.vim25.PerfQuerySpec;
|
|
||||||
import com.vmware.vim25.PerfSampleInfo;
|
|
||||||
import com.vmware.vim25.RuntimeFaultFaultMsg;
|
|
||||||
import com.vmware.vim25.ToolsUnavailableFaultMsg;
|
|
||||||
import com.vmware.vim25.VMwareDVSPortSetting;
|
|
||||||
import com.vmware.vim25.VimPortType;
|
|
||||||
import com.vmware.vim25.VirtualDevice;
|
|
||||||
import com.vmware.vim25.VirtualDeviceBackingInfo;
|
|
||||||
import com.vmware.vim25.VirtualDeviceConfigSpec;
|
|
||||||
import com.vmware.vim25.VirtualDeviceConfigSpecOperation;
|
|
||||||
import com.vmware.vim25.VirtualDisk;
|
|
||||||
import com.vmware.vim25.VirtualEthernetCard;
|
|
||||||
import com.vmware.vim25.VirtualEthernetCardDistributedVirtualPortBackingInfo;
|
|
||||||
import com.vmware.vim25.VirtualEthernetCardNetworkBackingInfo;
|
|
||||||
import com.vmware.vim25.VirtualMachineConfigSpec;
|
|
||||||
import com.vmware.vim25.VirtualMachineGuestOsIdentifier;
|
|
||||||
import com.vmware.vim25.VirtualMachinePowerState;
|
|
||||||
import com.vmware.vim25.VirtualMachineRelocateSpec;
|
|
||||||
import com.vmware.vim25.VirtualMachineRelocateSpecDiskLocator;
|
|
||||||
import com.vmware.vim25.VirtualMachineRuntimeInfo;
|
|
||||||
import com.vmware.vim25.VmwareDistributedVirtualSwitchVlanIdSpec;
|
|
||||||
|
|
||||||
import org.apache.cloudstack.storage.command.DeleteCommand;
|
|
||||||
import org.apache.cloudstack.storage.command.StorageSubSystemCommand;
|
|
||||||
import org.apache.cloudstack.storage.to.TemplateObjectTO;
|
|
||||||
import org.apache.cloudstack.storage.to.VolumeObjectTO;
|
|
||||||
|
|
||||||
import com.cloud.agent.IAgentControl;
|
import com.cloud.agent.IAgentControl;
|
||||||
import com.cloud.agent.api.Answer;
|
import com.cloud.agent.api.Answer;
|
||||||
import com.cloud.agent.api.AttachIsoCommand;
|
import com.cloud.agent.api.AttachIsoCommand;
|
||||||
@ -327,6 +235,94 @@ import com.cloud.vm.VirtualMachine.PowerState;
|
|||||||
import com.cloud.vm.VirtualMachine.State;
|
import com.cloud.vm.VirtualMachine.State;
|
||||||
import com.cloud.vm.VirtualMachineName;
|
import com.cloud.vm.VirtualMachineName;
|
||||||
import com.cloud.vm.VmDetailConstants;
|
import com.cloud.vm.VmDetailConstants;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.vmware.vim25.AboutInfo;
|
||||||
|
import com.vmware.vim25.BoolPolicy;
|
||||||
|
import com.vmware.vim25.ClusterDasConfigInfo;
|
||||||
|
import com.vmware.vim25.ComputeResourceSummary;
|
||||||
|
import com.vmware.vim25.CustomFieldStringValue;
|
||||||
|
import com.vmware.vim25.DVPortConfigInfo;
|
||||||
|
import com.vmware.vim25.DVPortConfigSpec;
|
||||||
|
import com.vmware.vim25.DatastoreSummary;
|
||||||
|
import com.vmware.vim25.DistributedVirtualPort;
|
||||||
|
import com.vmware.vim25.DistributedVirtualSwitchPortConnection;
|
||||||
|
import com.vmware.vim25.DistributedVirtualSwitchPortCriteria;
|
||||||
|
import com.vmware.vim25.DynamicProperty;
|
||||||
|
import com.vmware.vim25.GuestInfo;
|
||||||
|
import com.vmware.vim25.HostCapability;
|
||||||
|
import com.vmware.vim25.HostHostBusAdapter;
|
||||||
|
import com.vmware.vim25.HostInternetScsiHba;
|
||||||
|
import com.vmware.vim25.HostInternetScsiHbaAuthenticationProperties;
|
||||||
|
import com.vmware.vim25.HostInternetScsiHbaStaticTarget;
|
||||||
|
import com.vmware.vim25.HostInternetScsiTargetTransport;
|
||||||
|
import com.vmware.vim25.HostScsiDisk;
|
||||||
|
import com.vmware.vim25.HostScsiTopology;
|
||||||
|
import com.vmware.vim25.HostScsiTopologyInterface;
|
||||||
|
import com.vmware.vim25.HostScsiTopologyLun;
|
||||||
|
import com.vmware.vim25.HostScsiTopologyTarget;
|
||||||
|
import com.vmware.vim25.ManagedObjectReference;
|
||||||
|
import com.vmware.vim25.ObjectContent;
|
||||||
|
import com.vmware.vim25.OptionValue;
|
||||||
|
import com.vmware.vim25.PerfCounterInfo;
|
||||||
|
import com.vmware.vim25.PerfEntityMetric;
|
||||||
|
import com.vmware.vim25.PerfEntityMetricBase;
|
||||||
|
import com.vmware.vim25.PerfMetricId;
|
||||||
|
import com.vmware.vim25.PerfMetricIntSeries;
|
||||||
|
import com.vmware.vim25.PerfMetricSeries;
|
||||||
|
import com.vmware.vim25.PerfQuerySpec;
|
||||||
|
import com.vmware.vim25.PerfSampleInfo;
|
||||||
|
import com.vmware.vim25.RuntimeFaultFaultMsg;
|
||||||
|
import com.vmware.vim25.ToolsUnavailableFaultMsg;
|
||||||
|
import com.vmware.vim25.VMwareDVSPortSetting;
|
||||||
|
import com.vmware.vim25.VimPortType;
|
||||||
|
import com.vmware.vim25.VirtualDevice;
|
||||||
|
import com.vmware.vim25.VirtualDeviceBackingInfo;
|
||||||
|
import com.vmware.vim25.VirtualDeviceConfigSpec;
|
||||||
|
import com.vmware.vim25.VirtualDeviceConfigSpecOperation;
|
||||||
|
import com.vmware.vim25.VirtualDisk;
|
||||||
|
import com.vmware.vim25.VirtualEthernetCard;
|
||||||
|
import com.vmware.vim25.VirtualEthernetCardDistributedVirtualPortBackingInfo;
|
||||||
|
import com.vmware.vim25.VirtualEthernetCardNetworkBackingInfo;
|
||||||
|
import com.vmware.vim25.VirtualMachineConfigSpec;
|
||||||
|
import com.vmware.vim25.VirtualMachineGuestOsIdentifier;
|
||||||
|
import com.vmware.vim25.VirtualMachinePowerState;
|
||||||
|
import com.vmware.vim25.VirtualMachineRelocateSpec;
|
||||||
|
import com.vmware.vim25.VirtualMachineRelocateSpecDiskLocator;
|
||||||
|
import com.vmware.vim25.VirtualMachineRuntimeInfo;
|
||||||
|
import com.vmware.vim25.VmwareDistributedVirtualSwitchVlanIdSpec;
|
||||||
|
import org.apache.cloudstack.storage.command.DeleteCommand;
|
||||||
|
import org.apache.cloudstack.storage.command.StorageSubSystemCommand;
|
||||||
|
import org.apache.cloudstack.storage.to.TemplateObjectTO;
|
||||||
|
import org.apache.cloudstack.storage.to.VolumeObjectTO;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import org.apache.log4j.NDC;
|
||||||
|
|
||||||
|
import javax.naming.ConfigurationException;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.ConnectException;
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.nio.channels.SocketChannel;
|
||||||
|
import java.rmi.RemoteException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.TimeZone;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class VmwareResource implements StoragePoolResource, ServerResource, VmwareHostService {
|
public class VmwareResource implements StoragePoolResource, ServerResource, VmwareHostService {
|
||||||
private static final Logger s_logger = Logger.getLogger(VmwareResource.class);
|
private static final Logger s_logger = Logger.getLogger(VmwareResource.class);
|
||||||
@ -2147,13 +2143,13 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (s_logger.isDebugEnabled()) {
|
if (s_logger.isDebugEnabled()) {
|
||||||
s_logger.debug("Run command on domR " + cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP) + ", /root/edithosts.sh " + args);
|
s_logger.debug("Run command on domR " + cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP) + ", /opt/cloud/bin/edithosts.sh " + args);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
VmwareManager mgr = getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME);
|
VmwareManager mgr = getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME);
|
||||||
String controlIp = getRouterSshControlIp(cmd);
|
String controlIp = getRouterSshControlIp(cmd);
|
||||||
Pair<Boolean, String> result = SshHelper.sshExecute(controlIp, DefaultDomRSshPort, "root", mgr.getSystemVMKeyFile(), null, "/root/edithosts.sh " + args);
|
Pair<Boolean, String> result = SshHelper.sshExecute(controlIp, DefaultDomRSshPort, "root", mgr.getSystemVMKeyFile(), null, "/opt/cloud/bin/edithosts.sh " + args);
|
||||||
|
|
||||||
if (!result.first()) {
|
if (!result.first()) {
|
||||||
s_logger.error("dhcp_entry command on domR " + controlIp + " failed, message: " + result.second());
|
s_logger.error("dhcp_entry command on domR " + controlIp + " failed, message: " + result.second());
|
||||||
@ -2275,9 +2271,9 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
|||||||
File keyFile = mgr.getSystemVMKeyFile();
|
File keyFile = mgr.getSystemVMKeyFile();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Pair<Boolean, String> result = SshHelper.sshExecute(controlIp, DefaultDomRSshPort, "root", mgr.getSystemVMKeyFile(), null, "/root/dnsmasq.sh " + args);
|
Pair<Boolean, String> result = SshHelper.sshExecute(controlIp, DefaultDomRSshPort, "root", mgr.getSystemVMKeyFile(), null, "/opt/cloud/bin/dnsmasq.sh " + args);
|
||||||
if (s_logger.isDebugEnabled()) {
|
if (s_logger.isDebugEnabled()) {
|
||||||
s_logger.debug("Run command on domain router " + routerIp + ", /root/dnsmasq.sh");
|
s_logger.debug("Run command on domain router " + routerIp + ", /opt/cloud/bin/dnsmasq.sh");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!result.first()) {
|
if (!result.first()) {
|
||||||
@ -2397,14 +2393,14 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
|||||||
protected Answer execute(BumpUpPriorityCommand cmd) {
|
protected Answer execute(BumpUpPriorityCommand cmd) {
|
||||||
if (s_logger.isDebugEnabled()) {
|
if (s_logger.isDebugEnabled()) {
|
||||||
s_logger.debug("Executing resource BumpUpPriorityCommand: " + _gson.toJson(cmd));
|
s_logger.debug("Executing resource BumpUpPriorityCommand: " + _gson.toJson(cmd));
|
||||||
s_logger.debug("Run command on domR " + cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP) + ", /root/bumpup_priority.sh ");
|
s_logger.debug("Run command on domR " + cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP) + ", /opt/cloud/bin/bumpup_priority.sh ");
|
||||||
}
|
}
|
||||||
|
|
||||||
Pair<Boolean, String> result;
|
Pair<Boolean, String> result;
|
||||||
try {
|
try {
|
||||||
VmwareManager mgr = getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME);
|
VmwareManager mgr = getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME);
|
||||||
String controlIp = getRouterSshControlIp(cmd);
|
String controlIp = getRouterSshControlIp(cmd);
|
||||||
result = SshHelper.sshExecute(controlIp, DefaultDomRSshPort, "root", mgr.getSystemVMKeyFile(), null, "/root/bumpup_priority.sh ");
|
result = SshHelper.sshExecute(controlIp, DefaultDomRSshPort, "root", mgr.getSystemVMKeyFile(), null, "/opt/cloud/bin/bumpup_priority.sh ");
|
||||||
|
|
||||||
if (!result.first()) {
|
if (!result.first()) {
|
||||||
s_logger.error("BumpUpPriority command on domR " + cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP) + " failed, message: " + result.second());
|
s_logger.error("BumpUpPriority command on domR " + cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP) + " failed, message: " + result.second());
|
||||||
|
|||||||
@ -2324,7 +2324,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected synchronized Answer execute(final DhcpEntryCommand cmd) {
|
protected synchronized Answer execute(final DhcpEntryCommand cmd) {
|
||||||
String args = "";
|
String args = " -m " + cmd.getVmMac();
|
||||||
if (cmd.getVmIpAddress() != null) {
|
if (cmd.getVmIpAddress() != null) {
|
||||||
args += " -4 " + cmd.getVmIpAddress();
|
args += " -4 " + cmd.getVmIpAddress();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,47 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
printf "Usage:\n %s <domR eth1 ip> \n" $(basename $0) >&2
|
|
||||||
printf " %s <domR eth1 ip> \n" $(basename $0) >&2
|
|
||||||
}
|
|
||||||
|
|
||||||
cert="/root/.ssh/id_rsa.cloud"
|
|
||||||
domRIp=$1
|
|
||||||
shift
|
|
||||||
|
|
||||||
check_gw() {
|
|
||||||
ping -c 1 -n -q $1 > /dev/null
|
|
||||||
if [ $? -gt 0 ]
|
|
||||||
then
|
|
||||||
sleep 1
|
|
||||||
ping -c 1 -n -q $1 > /dev/null
|
|
||||||
fi
|
|
||||||
return $?;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
check_gw "$domRIp"
|
|
||||||
if [ $? -gt 0 ]
|
|
||||||
then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
ssh -p 3922 -q -o StrictHostKeyChecking=no -i $cert root@$domRIp "/root/bumpup_priority.sh"
|
|
||||||
exit $?
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
printf "Usage: %s: <domR eth1 ip> <path_to_new_config_file>\n" $(basename $0) >&2
|
|
||||||
}
|
|
||||||
|
|
||||||
cert="/root/.ssh/id_rsa.cloud"
|
|
||||||
|
|
||||||
ssh -p 3922 -q -o StrictHostKeyChecking=no -i $cert root@$1 "/root/dnsmasq.sh $2"
|
|
||||||
exit $?
|
|
||||||
|
|
||||||
@ -1,82 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
|
|
||||||
# $Id: dhcp_entry.sh 9804 2010-06-22 18:36:49Z alex $ $HeadURL: svn://svn.lab.vmops.com/repos/vmdev/java/scripts/network/domr/dhcp_entry.sh $
|
|
||||||
# dhcp_entry.sh -- add dhcp entry on domr
|
|
||||||
# @VERSION@
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
printf "Usage: %s: -r <domr-ip> -m <vm mac> -v <vm ip> -n <vm name> -s <static route> -d <default router> -N <dns> -6 <vm IPv6> -u <duid> [-z]\n" $(basename $0) >&2
|
|
||||||
exit 2
|
|
||||||
}
|
|
||||||
|
|
||||||
cert="/root/.ssh/id_rsa.cloud"
|
|
||||||
|
|
||||||
domrIp=
|
|
||||||
vmMac=
|
|
||||||
vmIp=
|
|
||||||
vmName=
|
|
||||||
staticrt=
|
|
||||||
dfltrt=
|
|
||||||
dns=
|
|
||||||
ipv6=
|
|
||||||
duid=
|
|
||||||
|
|
||||||
opts=
|
|
||||||
|
|
||||||
while getopts 'r:m:v:n:d:s:N:6:u:z' OPTION
|
|
||||||
do
|
|
||||||
case $OPTION in
|
|
||||||
r) domrIp="$OPTARG"
|
|
||||||
;;
|
|
||||||
v) vmIp="$OPTARG"
|
|
||||||
opts="$opts -4 $vmIp"
|
|
||||||
;;
|
|
||||||
m) vmMac="$OPTARG"
|
|
||||||
opts="$opts -m $vmMac"
|
|
||||||
;;
|
|
||||||
n) vmName="$OPTARG"
|
|
||||||
opts="$opts -h $vmName"
|
|
||||||
;;
|
|
||||||
s) staticrt="$OPTARG"
|
|
||||||
opts="$opts -s $staticrt"
|
|
||||||
;;
|
|
||||||
d) dfltrt="$OPTARG"
|
|
||||||
opts="$opts -d $dfltrt"
|
|
||||||
;;
|
|
||||||
N) dns="$OPTARG"
|
|
||||||
opts="$opts -n $dns"
|
|
||||||
;;
|
|
||||||
6) ipv6="$OPTARG"
|
|
||||||
opts="$opts -6 $ipv6"
|
|
||||||
;;
|
|
||||||
u) duid="$OPTARG"
|
|
||||||
opts="$opts -u $duid"
|
|
||||||
;;
|
|
||||||
z) opts="$opts -N"
|
|
||||||
;;
|
|
||||||
?) usage
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
ssh -p 3922 -o StrictHostKeyChecking=no -i $cert root@$domrIp "/root/edithosts.sh $opts " >/dev/null
|
|
||||||
|
|
||||||
exit $?
|
|
||||||
@ -177,21 +177,6 @@ def savePassword(session, args):
|
|||||||
|
|
||||||
return txt
|
return txt
|
||||||
|
|
||||||
@echo
|
|
||||||
def saveDhcpEntry(session, args):
|
|
||||||
sargs = args['args']
|
|
||||||
cmd = sargs.split(' ')
|
|
||||||
cmd.insert(0, "/opt/cloud/bin/dhcp_entry.sh")
|
|
||||||
cmd.insert(0, "/bin/bash")
|
|
||||||
try:
|
|
||||||
txt = util.pread2(cmd)
|
|
||||||
txt = 'success'
|
|
||||||
except:
|
|
||||||
logging.debug(" save dhcp entry failed " )
|
|
||||||
txt = ''
|
|
||||||
|
|
||||||
return txt
|
|
||||||
|
|
||||||
@echo
|
@echo
|
||||||
def setLinkLocalIP(session, args):
|
def setLinkLocalIP(session, args):
|
||||||
brName = args['brName']
|
brName = args['brName']
|
||||||
@ -286,18 +271,6 @@ def setLoadBalancerRule(session, args):
|
|||||||
txt = ''
|
txt = ''
|
||||||
|
|
||||||
return txt
|
return txt
|
||||||
@echo
|
|
||||||
def configdnsmasq(session, args):
|
|
||||||
routerip = args['routerip']
|
|
||||||
args = args['args']
|
|
||||||
target = "root@"+routerip
|
|
||||||
try:
|
|
||||||
util.pread2(['ssh','-p','3922','-q','-o','StrictHostKeyChecking=no','-i','/root/.ssh/id_rsa.cloud',target,'/root/dnsmasq.sh',args])
|
|
||||||
txt='success'
|
|
||||||
except:
|
|
||||||
logging.debug("failed to config dnsmasq server")
|
|
||||||
txt=''
|
|
||||||
return txt
|
|
||||||
|
|
||||||
@echo
|
@echo
|
||||||
def createipAlias(session, args):
|
def createipAlias(session, args):
|
||||||
@ -1608,28 +1581,12 @@ def network_rules(session, args):
|
|||||||
except:
|
except:
|
||||||
logging.debug("Failed to network rule !")
|
logging.debug("Failed to network rule !")
|
||||||
|
|
||||||
@echo
|
|
||||||
def bumpUpPriority(session, args):
|
|
||||||
sargs = args['args']
|
|
||||||
cmd = sargs.split(' ')
|
|
||||||
cmd.insert(0, "/opt/cloud/bin/bumpUpPriority.sh")
|
|
||||||
cmd.insert(0, "/bin/bash")
|
|
||||||
try:
|
|
||||||
txt = util.pread2(cmd)
|
|
||||||
txt = 'success'
|
|
||||||
except:
|
|
||||||
logging.debug("bump up priority fail! ")
|
|
||||||
txt = ''
|
|
||||||
|
|
||||||
return txt
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
XenAPIPlugin.dispatch({"pingtest": pingtest, "setup_iscsi":setup_iscsi, "gethostvmstats": gethostvmstats,
|
XenAPIPlugin.dispatch({"pingtest": pingtest, "setup_iscsi":setup_iscsi, "gethostvmstats": gethostvmstats,
|
||||||
"getgateway": getgateway, "preparemigration": preparemigration,
|
"getgateway": getgateway, "preparemigration": preparemigration,
|
||||||
"setIptables": setIptables, "pingdomr": pingdomr, "pingxenserver": pingxenserver,
|
"setIptables": setIptables, "pingdomr": pingdomr, "pingxenserver": pingxenserver,
|
||||||
"savePassword": savePassword,
|
"savePassword": savePassword,
|
||||||
"saveDhcpEntry": saveDhcpEntry, "setFirewallRule": setFirewallRule, "routerProxy": routerProxy,
|
"setFirewallRule": setFirewallRule, "routerProxy": routerProxy,
|
||||||
"setLoadBalancerRule": setLoadBalancerRule, "createFile": createFile, "deleteFile": deleteFile,
|
"setLoadBalancerRule": setLoadBalancerRule, "createFile": createFile, "deleteFile": deleteFile,
|
||||||
"network_rules":network_rules,
|
"network_rules":network_rules,
|
||||||
"can_bridge_firewall":can_bridge_firewall, "default_network_rules":default_network_rules,
|
"can_bridge_firewall":can_bridge_firewall, "default_network_rules":default_network_rules,
|
||||||
@ -1637,12 +1594,10 @@ if __name__ == "__main__":
|
|||||||
"default_network_rules_systemvm":default_network_rules_systemvm,
|
"default_network_rules_systemvm":default_network_rules_systemvm,
|
||||||
"network_rules_vmSecondaryIp":network_rules_vmSecondaryIp,
|
"network_rules_vmSecondaryIp":network_rules_vmSecondaryIp,
|
||||||
"createipAlias":createipAlias,
|
"createipAlias":createipAlias,
|
||||||
"configdnsmasq":configdnsmasq,
|
|
||||||
"deleteipAlias":deleteipAlias,
|
"deleteipAlias":deleteipAlias,
|
||||||
"get_rule_logs_for_vms":get_rule_logs_for_vms,
|
"get_rule_logs_for_vms":get_rule_logs_for_vms,
|
||||||
"add_to_VCPUs_params_live":add_to_VCPUs_params_live,
|
"add_to_VCPUs_params_live":add_to_VCPUs_params_live,
|
||||||
"setLinkLocalIP":setLinkLocalIP,
|
"setLinkLocalIP":setLinkLocalIP,
|
||||||
"cleanup_rules":cleanup_rules,
|
"cleanup_rules":cleanup_rules,
|
||||||
"bumpUpPriority":bumpUpPriority,
|
|
||||||
"createFileInDomr":createFileInDomr,
|
"createFileInDomr":createFileInDomr,
|
||||||
"kill_copy_process":kill_copy_process})
|
"kill_copy_process":kill_copy_process})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user