mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	first OSS build
This commit is contained in:
		
							parent
							
								
									86427559cb
								
							
						
					
					
						commit
						5ae15f8bbf
					
				| @ -1,370 +0,0 @@ | ||||
| // 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.agent.vmdata; | ||||
| 
 | ||||
| import java.io.BufferedReader; | ||||
| import java.io.BufferedWriter; | ||||
| import java.io.FileNotFoundException; | ||||
| import java.io.FileOutputStream; | ||||
| import java.io.FileReader; | ||||
| import java.io.FileWriter; | ||||
| import java.io.IOException; | ||||
| import java.io.File; | ||||
| import java.net.InetAddress; | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import javax.ejb.Local; | ||||
| import javax.naming.ConfigurationException; | ||||
| import javax.servlet.ServletException; | ||||
| import javax.servlet.http.HttpServlet; | ||||
| import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | ||||
| 
 | ||||
| import org.apache.commons.codec.binary.Base64; | ||||
| import org.apache.log4j.Logger; | ||||
| import org.mortbay.jetty.Connector; | ||||
| import org.mortbay.jetty.Handler; | ||||
| import org.mortbay.jetty.Server; | ||||
| import org.mortbay.jetty.handler.DefaultHandler; | ||||
| import org.mortbay.jetty.handler.HandlerList; | ||||
| import org.mortbay.jetty.handler.ResourceHandler; | ||||
| import org.mortbay.jetty.nio.SelectChannelConnector; | ||||
| import org.mortbay.jetty.servlet.Context; | ||||
| import org.mortbay.jetty.servlet.ServletHolder; | ||||
| import org.mortbay.thread.QueuedThreadPool; | ||||
| 
 | ||||
| import com.cloud.agent.api.Answer; | ||||
| import com.cloud.agent.api.routing.VmDataCommand; | ||||
| import com.cloud.agent.api.to.NicTO; | ||||
| import com.cloud.agent.api.to.VirtualMachineTO; | ||||
| import com.cloud.network.Networks.TrafficType; | ||||
| import com.cloud.storage.JavaStorageLayer; | ||||
| import com.cloud.storage.StorageLayer; | ||||
| import com.cloud.utils.net.NetUtils; | ||||
| import com.cloud.utils.script.Script; | ||||
| 
 | ||||
| /** | ||||
|  * Serves vm data using embedded Jetty server | ||||
|  *  | ||||
|  */ | ||||
| @Local(value = { VmDataServer.class }) | ||||
| public class JettyVmDataServer implements VmDataServer { | ||||
|     private static final Logger s_logger = Logger | ||||
|             .getLogger(JettyVmDataServer.class); | ||||
| 
 | ||||
|     public static final String USER_DATA = "user-data"; | ||||
|     public static final String META_DATA = "meta-data"; | ||||
|     protected String _vmDataDir; | ||||
|     protected Server _jetty; | ||||
|     protected String _hostIp; | ||||
|     protected Map<String, String> _ipVmMap = new HashMap<String, String>(); | ||||
|     protected StorageLayer _fs = new JavaStorageLayer(); | ||||
| 
 | ||||
|     public class VmDataServlet extends HttpServlet { | ||||
| 
 | ||||
|         private static final long serialVersionUID = -1640031398971742349L; | ||||
| 
 | ||||
|         JettyVmDataServer _vmDataServer; | ||||
|         String _dataType; // userdata or meta-data | ||||
| 
 | ||||
|         public VmDataServlet(JettyVmDataServer dataServer, String dataType) { | ||||
|             this._vmDataServer = dataServer; | ||||
|             this._dataType = dataType; | ||||
|         } | ||||
| 
 | ||||
|         @Override | ||||
|         protected void doGet(HttpServletRequest req, HttpServletResponse resp) | ||||
|                 throws ServletException, IOException { | ||||
|             int port = req.getServerPort(); | ||||
|             if (port != 80 && port != 8000) { | ||||
|                 resp.sendError(HttpServletResponse.SC_NOT_FOUND, | ||||
|                         "Request not understood"); | ||||
|                 return; | ||||
|             } | ||||
|             if (_dataType.equalsIgnoreCase(USER_DATA)) { | ||||
|                 handleUserData(req, resp); | ||||
|             } else if (_dataType.equalsIgnoreCase(META_DATA)) { | ||||
|                 handleMetaData(req, resp); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         protected void handleUserData(HttpServletRequest req, | ||||
|                 HttpServletResponse resp) throws ServletException, IOException { | ||||
|             String metadataItem = req.getPathInfo(); | ||||
|             String requester = req.getRemoteAddr(); | ||||
|             resp.setContentType("text/html"); | ||||
|             resp.setStatus(HttpServletResponse.SC_OK); | ||||
|             String data = null; | ||||
|             if (metadataItem != null) { | ||||
|                 String[] path = metadataItem.split("/"); | ||||
|                 if (path.length > 1) { | ||||
|                     metadataItem = path[1]; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             if (metadataItem != null) | ||||
|                 data = _vmDataServer.getVmDataItem(requester, metadataItem); | ||||
| 
 | ||||
|             if (data != null) { | ||||
|                 resp.getWriter().print(data); | ||||
|             } else { | ||||
|                 resp.setStatus(HttpServletResponse.SC_NOT_FOUND); | ||||
|                 resp.sendError(HttpServletResponse.SC_NOT_FOUND, | ||||
|                         "Request not found"); | ||||
|             } | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         protected void handleMetaData(HttpServletRequest req, | ||||
|                 HttpServletResponse resp) throws ServletException, IOException { | ||||
|             String metadataItem = req.getPathInfo(); | ||||
|             String requester = req.getRemoteAddr(); | ||||
|             resp.setContentType("text/html"); | ||||
|             resp.setStatus(HttpServletResponse.SC_OK); | ||||
|             String metaData = _vmDataServer.getVmDataItem(requester, | ||||
|                     metadataItem); | ||||
|             if (metaData != null) { | ||||
|                 resp.getWriter().print( | ||||
|                         _vmDataServer.getVmDataItem(requester, metadataItem)); | ||||
|             } else { | ||||
|                 resp.sendError(HttpServletResponse.SC_NOT_FOUND, | ||||
|                         "Request not found"); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean configure(String name, Map<String, Object> params) | ||||
|             throws ConfigurationException { | ||||
|         boolean success = true; | ||||
|         try { | ||||
|             int vmDataPort = 80; | ||||
|             int fileservingPort = 8000; | ||||
|             _vmDataDir = (String) params.get("vm.data.dir"); | ||||
|             String port = (String) params.get("vm.data.port"); | ||||
|             if (port != null) { | ||||
|                 vmDataPort = Integer.parseInt(port); | ||||
|             } | ||||
|             port = (String) params.get("file.server.port"); | ||||
|             if (port != null) { | ||||
|                 fileservingPort = Integer.parseInt(port); | ||||
|             } | ||||
|             _hostIp = (String) params.get("host.ip"); | ||||
| 
 | ||||
|             if (_vmDataDir == null) { | ||||
|                 _vmDataDir = "/var/www/html"; | ||||
|             } | ||||
|             success = _fs.mkdirs(_vmDataDir); | ||||
|             success = success && buildIpVmMap(); | ||||
|             if (success) { | ||||
|                 setupJetty(vmDataPort, fileservingPort); | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             s_logger.warn("Failed to configure jetty", e); | ||||
|             throw new ConfigurationException("Failed to configure jetty!!"); | ||||
|         } | ||||
|         return success; | ||||
|     } | ||||
| 
 | ||||
|     protected boolean buildIpVmMap() { | ||||
|         String[] dirs = _fs.listFiles(_vmDataDir); | ||||
|         for (String dir : dirs) { | ||||
|             String[] path = dir.split("/"); | ||||
|             String vm = path[path.length - 1]; | ||||
|             if (vm.startsWith("i-")) { | ||||
|                 String[] dataFiles = _fs.listFiles(dir); | ||||
|                 for (String dfile : dataFiles) { | ||||
|                     String path2[] = dfile.split("/"); | ||||
|                     String ipv4file = path2[path2.length - 1]; | ||||
|                     if (ipv4file.equalsIgnoreCase("local-ipv4")) { | ||||
|                         try { | ||||
|                             BufferedReader input = new BufferedReader( | ||||
|                                     new FileReader(dfile)); | ||||
|                             String line = null; | ||||
|                             while ((line = input.readLine()) != null) { | ||||
|                                 if (NetUtils.isValidIp(line)) { | ||||
|                                     _ipVmMap.put(line, vm); | ||||
|                                     s_logger.info("Found ip " + line | ||||
|                                             + " for vm " + vm); | ||||
|                                 } else { | ||||
|                                     s_logger.info("Invalid ip " + line | ||||
|                                             + " for vm " + vm); | ||||
|                                 } | ||||
|                             } | ||||
|                         } catch (FileNotFoundException e) { | ||||
|                             s_logger.warn("Failed to find file " + dfile); | ||||
|                         } catch (IOException e) { | ||||
|                             s_logger.warn("Failed to get ip address of " + vm); | ||||
|                         } | ||||
| 
 | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     public String getVmDataItem(String requester, String dataItem) { | ||||
|         String vmName = _ipVmMap.get(requester); | ||||
|         if (vmName == null) { | ||||
|             return null; | ||||
|         } | ||||
|         String vmDataFile = _vmDataDir + File.separator + vmName | ||||
|                 + File.separator + dataItem; | ||||
|         try { | ||||
|             BufferedReader input = new BufferedReader( | ||||
|                     new FileReader(vmDataFile)); | ||||
|             StringBuilder result = new StringBuilder(); | ||||
|             String line = null; | ||||
|             while ((line = input.readLine()) != null) { | ||||
|                 result.append(line); | ||||
|             } | ||||
|             input.close(); | ||||
|             return result.toString(); | ||||
|         } catch (FileNotFoundException e) { | ||||
|             s_logger.warn("Failed to find requested file " + vmDataFile); | ||||
|             return null; | ||||
|         } catch (IOException e) { | ||||
|             s_logger.warn("Failed to read requested file " + vmDataFile); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private void setupJetty(int vmDataPort, int fileservingPort) | ||||
|             throws Exception { | ||||
|         _jetty = new Server(); | ||||
| 
 | ||||
|         SelectChannelConnector connector0 = new SelectChannelConnector(); | ||||
|         connector0.setHost(_hostIp); | ||||
|         connector0.setPort(fileservingPort); | ||||
|         connector0.setMaxIdleTime(30000); | ||||
|         connector0.setRequestBufferSize(8192); | ||||
| 
 | ||||
|         SelectChannelConnector connector1 = new SelectChannelConnector(); | ||||
|         connector1.setHost(_hostIp); | ||||
|         connector1.setPort(vmDataPort); | ||||
|         connector1.setThreadPool(new QueuedThreadPool(5)); | ||||
|         connector1.setMaxIdleTime(30000); | ||||
|         connector1.setRequestBufferSize(8192); | ||||
| 
 | ||||
|         _jetty.setConnectors(new Connector[] { connector0, connector1 }); | ||||
| 
 | ||||
|         Context root = new Context(_jetty, "/latest", Context.SESSIONS); | ||||
|         root.setResourceBase(_vmDataDir); | ||||
|         root.addServlet(new ServletHolder(new VmDataServlet(this, USER_DATA)), | ||||
|                 "/*"); | ||||
| 
 | ||||
|         ResourceHandler resource_handler = new ResourceHandler(); | ||||
|         resource_handler.setResourceBase("/var/lib/images/"); | ||||
| 
 | ||||
|         HandlerList handlers = new HandlerList(); | ||||
|         handlers.setHandlers(new Handler[] { root, resource_handler, | ||||
|                 new DefaultHandler() }); | ||||
|         _jetty.setHandler(handlers); | ||||
| 
 | ||||
|         _jetty.start(); | ||||
|         // _jetty.join(); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean start() { | ||||
|         // TODO Auto-generated method stub | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean stop() { | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String getName() { | ||||
|         return "JettyVmDataServer"; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Answer handleVmDataCommand(VmDataCommand cmd) { | ||||
|         String vmDataDir = _vmDataDir + File.separator + cmd.getVmName(); | ||||
| 
 | ||||
|         Script.runSimpleBashScript("rm -rf " + vmDataDir); | ||||
|         _fs.mkdirs(vmDataDir); | ||||
| 
 | ||||
|         for (String[] item : cmd.getVmData()) { | ||||
|             try { | ||||
|                 _fs.create(vmDataDir, item[1]); | ||||
|                 String vmDataFile = vmDataDir + File.separator + item[1]; | ||||
|                 byte[] data; | ||||
|                 if (item[2] != null) { | ||||
|                     if (item[1].equals("user-data")) { | ||||
|                         data = Base64.decodeBase64(item[2]); | ||||
|                     } else { | ||||
|                         data = item[2].getBytes(); | ||||
|                     } | ||||
|                     if (data != null && data.length > 0) { | ||||
|                         FileOutputStream writer = new FileOutputStream( | ||||
|                                 vmDataFile); | ||||
|                         writer.write(data); | ||||
|                         writer.close(); | ||||
|                     } | ||||
|                 } | ||||
|             } catch (IOException e) { | ||||
|                 s_logger.warn("Failed to write vm data item " + item[1], e); | ||||
|                 return new Answer(cmd, false, "Failed to write vm data item " | ||||
|                         + item[1]); | ||||
|             } | ||||
|         } | ||||
|         return new Answer(cmd); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void handleVmStarted(VirtualMachineTO vm) { | ||||
|         for (NicTO nic : vm.getNics()) { | ||||
|             if (nic.getType() == TrafficType.Guest) { | ||||
|                 if (nic.getIp() != null) { | ||||
|                     String ipv4File = _vmDataDir + File.separator | ||||
|                             + vm.getName() + File.separator + "local-ipv4"; | ||||
|                     try { | ||||
|                         _fs.create(_vmDataDir + File.separator + vm.getName(), | ||||
|                                 "local-ipv4"); | ||||
|                         BufferedWriter writer = new BufferedWriter( | ||||
|                                 new FileWriter(ipv4File)); | ||||
|                         writer.write(nic.getIp()); | ||||
|                         _ipVmMap.put(nic.getIp(), vm.getName()); | ||||
|                         writer.close(); | ||||
|                     } catch (IOException e) { | ||||
|                         s_logger.warn( | ||||
|                                 "Failed to create or write to local-ipv4 file " | ||||
|                                         + ipv4File, e); | ||||
|                     } | ||||
| 
 | ||||
|                 } | ||||
| 
 | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void handleVmStopped(String vmName) { | ||||
|         String vmDataDir = _vmDataDir + File.separator + vmName; | ||||
|         Script.runSimpleBashScript("rm -rf " + vmDataDir); | ||||
|     } | ||||
| } | ||||
| @ -180,9 +180,9 @@ | ||||
|   </path> | ||||
| 
 | ||||
| 
 | ||||
|   <target name="compile-plugins" description="Compile all of the jars corresponding to plugins" depends="compile-utils, compile-api, compile-core, compile-server, compile-hypervisors, compile-deployment-planners, compile-host-allocators, compile-network-elements, compile-user-authenticators, compile-storage-allocators, compile-file-systems "/> | ||||
|   <target name="compile-plugins" description="Compile all of the jars corresponding to plugins" depends="compile-utils, compile-api, compile-core, compile-server, compile-hypervisors, compile-deployment-planners, compile-host-allocators, compile-network-elements, compile-user-authenticators, compile-storage-allocators"/> | ||||
| 
 | ||||
|   <target name="build-plugins" depends="build-hypervisors, build-network-elements, build-deployment-planners, build-host-allocators, build-storage-allocators, build-user-authenticators, build-file-systems" description="Builds all jar's for the plug-in's"/> | ||||
|   <target name="build-plugins" depends="build-hypervisors, build-network-elements, build-deployment-planners, build-host-allocators, build-storage-allocators, build-user-authenticators" description="Builds all jar's for the plug-in's"/> | ||||
| 
 | ||||
|   <target name="clean-plugins" description="Clean all of the generated files by the plugins"> | ||||
|       <delete file="${build.log}" /> | ||||
| @ -194,8 +194,8 @@ | ||||
| 
 | ||||
|   <!-- ===================== Hypervisors ========================= --> | ||||
| 
 | ||||
|   <target name="compile-hypervisors" depends="compile-kvm, compile-ovm, compile-xen, compile-vmware" description="Compile all hypervisors"/> | ||||
|   <target name="build-hypervisors" depends="build-kvm, build-ovm, build-xen, build-vmware" description="Builds all hypervisors"/> | ||||
|   <target name="compile-hypervisors" depends="compile-ovm, compile-xen" description="Compile all hypervisors"/> | ||||
|   <target name="build-hypervisors" depends="build-ovm, build-xen " description="Builds all hypervisors"/> | ||||
| 
 | ||||
|   <target name="compile-kvm" depends="-init, compile-core, compile-agent" description="Compile KVM"> | ||||
|   	<ant antfile="${base.dir}/plugins/hypervisors/kvm/build.xml" target="build"/> | ||||
| @ -280,8 +280,8 @@ | ||||
| 
 | ||||
|   <!-- ===================== Network Elements ===================== --> | ||||
| 
 | ||||
|   <target name="compile-network-elements" depends="compile-netscaler, compile-f5, compile-srx, compile-ovs, compile-elb, compile-nicira-nvp" description="Compile all network elements"/> | ||||
|   <target name="build-network-elements" depends="build-netscaler, build-f5, build-srx, build-ovs, build-elb, build-nicira-nvp" description="build all network elements"/> | ||||
|   <target name="compile-network-elements" depends="compile-ovs, compile-elb, compile-nicira-nvp" description="Compile all network elements"/> | ||||
|   <target name="build-network-elements" depends="build-ovs, build-elb, build-nicira-nvp" description="build all network elements"/> | ||||
|   | ||||
|   <target name="compile-netscaler" depends="-init, compile-server" description="Compile NetScaler plugin"> | ||||
|   	<ant antfile="${base.dir}/plugins/network-elements/netscaler/build.xml" target="build"/> | ||||
|  | ||||
| @ -204,7 +204,7 @@ | ||||
|     <path refid="deps.classpath" /> | ||||
|     <path refid="dist.classpath" /> | ||||
|   </path> | ||||
|   <target name="compile-core" depends="-init, compile-utils, compile-api, compile-vmware-base" description="Compile the core business logic."> | ||||
|   <target name="compile-core" depends="-init, compile-utils, compile-api" description="Compile the core business logic."> | ||||
|     <compile-java jar.name="${core.jar}" top.dir="${core.dir}" classpath="core.classpath" /> | ||||
|   </target> | ||||
| 
 | ||||
|  | ||||
| @ -99,43 +99,6 @@ | ||||
|       <version>5.1.21</version> | ||||
|       <scope>runtime</scope> | ||||
|     </dependency> | ||||
|     <!-- Non-OSS deps --> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-plugin-hypervisor-vmware</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-plugin-network-srx</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-plugin-hypervisor-kvm</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|       <exclusions> | ||||
|         <exclusion> | ||||
|           <groupId>org.mortbay.jetty</groupId> | ||||
|           <artifactId>jetty</artifactId> | ||||
|         </exclusion> | ||||
|       </exclusions> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-plugin-netapp</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-plugin-network-f5</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-plugin-network-netscaler</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|   </dependencies> | ||||
|   <build> | ||||
|     <defaultGoal>install</defaultGoal> | ||||
|  | ||||
| @ -114,7 +114,6 @@ under the License. | ||||
|         </adapters> | ||||
|         <adapters key="com.cloud.ha.Investigator"> | ||||
|             <adapter name="SimpleInvestigator" class="com.cloud.ha.CheckOnAgentInvestigator"/> | ||||
|             <adapter name="VmwareInvestigator" class="com.cloud.ha.VmwareInvestigator"/> | ||||
|             <adapter name="XenServerInvestigator" class="com.cloud.ha.XenServerInvestigator"/> | ||||
|             <adapter name="PingInvestigator" class="com.cloud.ha.UserVmDomRInvestigator"/> | ||||
| 			<adapter name="ManagementIPSysVMInvestigator" class="com.cloud.ha.ManagementIPSystemVMInvestigator"/> | ||||
| @ -122,7 +121,6 @@ under the License. | ||||
|         <adapters key="com.cloud.ha.FenceBuilder"> | ||||
|             <adapter name="XenServerFenceBuilder" class="com.cloud.ha.XenServerFencer"/> | ||||
|             <adapter name="KVMFenceBuilder" class="com.cloud.ha.KVMFencer"/> | ||||
|             <adapter name="VmwareFenceBuilder" class="com.cloud.ha.VmwareFencer"/> | ||||
|             <adapter name="OvmFenceBuilder" class="com.cloud.ovm.hypervisor.OvmFencer"/> | ||||
|         </adapters> | ||||
|         <adapters key="com.cloud.hypervisor.HypervisorGuru"> | ||||
| @ -133,7 +131,6 @@ under the License. | ||||
|             <adapter name="XCP Agent" class="com.cloud.hypervisor.xen.discoverer.XcpServerDiscoverer"/> | ||||
|             <adapter name="SecondaryStorage" class="com.cloud.storage.secondary.SecondaryStorageDiscoverer"/> | ||||
|             <adapter name="KVM Agent" class="com.cloud.hypervisor.kvm.discoverer.KvmServerDiscoverer"/> | ||||
|             <adapter name="VShpereServer" class="com.cloud.hypervisor.vmware.VmwareServerDiscoverer"/> | ||||
|             <adapter name="Bare Metal Agent" class="com.cloud.baremetal.BareMetalDiscoverer"/> | ||||
|             <adapter name="SCVMMServer" class="com.cloud.hypervisor.hyperv.HypervServerDiscoverer"/>             | ||||
| 			<adapter name="Ovm Discover" class="com.cloud.ovm.hypervisor.OvmDiscoverer" /> | ||||
| @ -153,15 +150,11 @@ under the License. | ||||
|             <adapter name="DomainChecker" class="com.cloud.acl.DomainChecker"/> | ||||
|         </adapters> | ||||
|         <adapters key="com.cloud.network.element.NetworkElement"> | ||||
|         	<adapter name="JuniperSRX" class="com.cloud.network.element.JuniperSRXExternalFirewallElement"/> | ||||
|         	<adapter name="Netscaler" class="com.cloud.network.element.NetscalerElement"/> | ||||
|         	<adapter name="F5BigIp" class="com.cloud.network.element.F5ExternalLoadBalancerElement"/> | ||||
|             <adapter name="VirtualRouter" class="com.cloud.network.element.VirtualRouterElement"/> | ||||
|             <adapter name="Ovs" class="com.cloud.network.element.OvsElement"/> | ||||
|             <adapter name="ExternalDhcpServer" class="com.cloud.network.element.ExternalDhcpElement"/> | ||||
|             <adapter name="BareMetal" class="com.cloud.network.element.BareMetalElement"/> | ||||
|             <adapter name="SecurityGroupProvider" class="com.cloud.network.element.SecurityGroupElement"/> | ||||
|             <adapter name="CiscoNexus1000vVSM" class="com.cloud.network.element.CiscoNexusVSMElement"/> | ||||
|             <adapter name="VpcVirtualRouter" class="com.cloud.network.element.VpcVirtualRouterElement"/> | ||||
|             <adapter name="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement"/> | ||||
|         </adapters> | ||||
| @ -171,7 +164,6 @@ under the License. | ||||
|         <adapters key="com.cloud.hypervisor.HypervisorGuru"> | ||||
|             <adapter name="XenServerGuru" class="com.cloud.hypervisor.XenServerGuru"/> | ||||
|             <adapter name="KVMGuru" class="com.cloud.hypervisor.KVMGuru"/> | ||||
|             <adapter name="VMwareGuru" class="com.cloud.hypervisor.guru.VMwareGuru"/> | ||||
|             <adapter name="BareMetalGuru" class="com.cloud.baremetal.BareMetalGuru"/> | ||||
|             <adapter name="HypervGuru" class="com.cloud.hypervisor.guru.HypervGuru"/>             | ||||
|             <adapter name="OvmGuru" class="com.cloud.ovm.hypervisor.OvmGuru" /> | ||||
| @ -179,25 +171,14 @@ under the License. | ||||
|         <adapters key="com.cloud.agent.StartupCommandProcessor"> | ||||
|             <adapter name="BasicAgentAuthorizer" class="com.cloud.agent.manager.authn.impl.BasicAgentAuthManager"/> | ||||
|         </adapters> | ||||
|         <manager name="VmwareManager" key="com.cloud.hypervisor.vmware.manager.VmwareManager" class="com.cloud.hypervisor.vmware.manager.VmwareManagerImpl"/> | ||||
|         <manager name="OvsTunnelManager" key="com.cloud.network.ovs.OvsTunnelManager" class="com.cloud.network.ovs.OvsTunnelManagerImpl"/> | ||||
|         <manager name="ElasticLoadBalancerManager" key="com.cloud.network.lb.ElasticLoadBalancerManager" class="com.cloud.network.lb.ElasticLoadBalancerManagerImpl"/> | ||||
|         <pluggableservice name="VirtualRouterElementService" key="com.cloud.network.element.VirtualRouterElementService" class="com.cloud.network.element.VirtualRouterElement"/> | ||||
|         <pluggableservice name="NetscalerExternalLoadBalancerElementService" key="com.cloud.network.element.NetscalerLoadBalancerElementService" class="com.cloud.network.element.NetscalerElement"/> | ||||
|         <pluggableservice name="F5ExternalLoadBalancerElementService" key="com.cloud.network.element.F5ExternalLoadBalancerElementService" class="com.cloud.network.element.F5ExternalLoadBalancerElement"/> | ||||
|         <pluggableservice name="JuniperSRXFirewallElementService" key="com.cloud.network.element.JuniperSRXFirewallElementService" class="com.cloud.network.element.JuniperSRXExternalFirewallElement"/> | ||||
|         <pluggableservice name="CiscoNexusVSMElementService" key="com.cloud.network.element.CiscoNexusVSMElementService" class="com.cloud.network.element.CiscoNexusVSMElement"/> | ||||
|         <pluggableservice name="NiciraNvpElementService" key="com.cloud.network.element.NiciraNvpElementService" class="com.cloud.network.element.NiciraNvpElement"/> | ||||
|         <dao name="NetScalerPodDao" class="com.cloud.network.dao.NetScalerPodDaoImpl" singleton="false"/> | ||||
|         <dao name="CiscoNexusVSMDeviceDao" class="com.cloud.network.dao.CiscoNexusVSMDeviceDaoImpl" singleton="false"/> | ||||
|         <dao name="OvsTunnelInterfaceDao" class="com.cloud.network.ovs.dao.OvsTunnelInterfaceDaoImpl" singleton="false"/> | ||||
|         <dao name="OvsTunnelAccountDao" class="com.cloud.network.ovs.dao.OvsTunnelNetworkDaoImpl" singleton="false"/> | ||||
|         <dao name="NiciraNvpDao" class="com.cloud.network.dao.NiciraNvpDaoImpl" singleton="false"/> | ||||
|         <dao name="NiciraNvpNicMappingDao" class="com.cloud.network.dao.NiciraNvpNicMappingDaoImpl" singleton="false"/> | ||||
|         <dao name="NetappPool" class="com.cloud.netapp.dao.PoolDaoImpl" singleton="false"/> | ||||
|         <dao name="NetappVolume" class="com.cloud.netapp.dao.VolumeDaoImpl" singleton="false"/> | ||||
|         <dao name="NetappLun" class="com.cloud.netapp.dao.LunDaoImpl" singleton="false"/> | ||||
|         <manager name="NetappManager" key="com.cloud.netapp.NetappManager" class="com.cloud.netapp.NetappManagerImpl"/> | ||||
|         <dao name="ElasticLbVmMapDao" class="com.cloud.network.lb.dao.ElasticLbVmMapDaoImpl" singleton="false"/> | ||||
|     </management-server> | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										17
									
								
								cloud.spec
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								cloud.spec
									
									
									
									
									
								
							| @ -433,24 +433,18 @@ fi | ||||
| %files server | ||||
| %defattr(0644,root,root,0755) | ||||
| %{_javadir}/%{name}-server.jar | ||||
| %{_javadir}/%{name}-vmware-base.jar | ||||
| %{_javadir}/%{name}-ovm.jar | ||||
| %{_javadir}/%{name}-dp-user-concentrated-pod.jar | ||||
| %{_javadir}/%{name}-dp-user-dispersing.jar | ||||
| %{_javadir}/%{name}-host-allocator-random.jar | ||||
| %{_javadir}/%{name}-plugin-f5.jar | ||||
| %{_javadir}/%{name}-plugin-netscaler.jar | ||||
| %{_javadir}/%{name}-plugin-ovs.jar | ||||
| %{_javadir}/%{name}-plugin-srx.jar | ||||
| %{_javadir}/%{name}-storage-allocator-random.jar | ||||
| %{_javadir}/%{name}-user-authenticator-ldap.jar | ||||
| %{_javadir}/%{name}-user-authenticator-md5.jar | ||||
| %{_javadir}/%{name}-user-authenticator-plaintext.jar | ||||
| %{_javadir}/%{name}-vmware.jar | ||||
| %{_javadir}/%{name}-xen.jar | ||||
| %{_javadir}/%{name}-plugin-nicira-nvp.jar | ||||
| %{_javadir}/%{name}-plugin-elb.jar | ||||
| %{_javadir}/%{name}-plugin-netapp.jar | ||||
| %{_javadir}/%{name}-plugin-nicira-nvp.jar | ||||
| %config(noreplace) %{_sysconfdir}/%{name}/server/* | ||||
| 
 | ||||
| %files agent-scripts | ||||
| @ -467,8 +461,6 @@ fi | ||||
| %{_javadir}/commons-dbcp-1.4.jar | ||||
| %{_javadir}/commons-pool-1.6.jar | ||||
| %{_javadir}/gson-1.7.1.jar | ||||
| %{_javadir}/netscaler-1.0.jar | ||||
| %{_javadir}/netscaler-sdx-1.0.jar | ||||
| %{_javadir}/backport-util-concurrent-3.1.jar | ||||
| %{_javadir}/ehcache-1.5.0.jar | ||||
| %{_javadir}/httpcore-4.0.jar | ||||
| @ -481,19 +473,15 @@ fi | ||||
| %{_javadir}/hibernate-commons-annotations-3.2.0.Final.jar | ||||
| %{_javadir}/hibernate-annotations-3.5.1-Final.jar | ||||
| %{_javadir}/asm-3.1.jar | ||||
| %{_javadir}/xapi-5.6.100-1-20120825.123319-1.jar | ||||
| %{_javadir}/xapi-5.6.100-1-SNAPSHOT.jar | ||||
| %{_javadir}/log4j-*.jar | ||||
| %{_javadir}/trilead-ssh2-build213-svnkit-1.3-patch.jar | ||||
| %{_javadir}/cglib-2.2.jar | ||||
| %{_javadir}/xmlrpc-common-3.*.jar | ||||
| %{_javadir}/xmlrpc-client-3.*.jar | ||||
| %{_javadir}/axis-1.4.jar | ||||
| %{_javadir}/wsdl4j-1.6.2.jar | ||||
| %{_javadir}/bcprov-jdk16-1.46.jar | ||||
| %{_javadir}/jsch-0.1.42.jar | ||||
| %{_javadir}/icontrol-1.0.jar | ||||
| %{_javadir}/manageontap-1.0.jar | ||||
| %{_javadir}/vmware*.jar | ||||
| %{_javadir}/jasypt-1.*.jar | ||||
| %{_javadir}/commons-configuration-1.8.jar | ||||
| %{_javadir}/commons-lang-2.6.jar | ||||
| @ -550,7 +538,6 @@ fi | ||||
| %files agent-libs | ||||
| %defattr(0644,root,root,0755) | ||||
| %{_javadir}/%{name}-agent.jar | ||||
| %{_javadir}/%{name}-plugin-hypervisor-kvm.jar | ||||
| 
 | ||||
| %files agent | ||||
| %defattr(0644,root,root,0755) | ||||
|  | ||||
| @ -48,11 +48,6 @@ | ||||
|       <artifactId>cloud-core</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-vmware-base</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-agent</artifactId> | ||||
|  | ||||
							
								
								
									
										30
									
								
								deps/pom.xml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								deps/pom.xml
									
									
									
									
										vendored
									
									
								
							| @ -105,36 +105,6 @@ | ||||
|       <scope>runtime</scope> | ||||
|     </dependency> | ||||
|     <!-- Non-OSS deps --> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-plugin-hypervisor-vmware</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-plugin-network-srx</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-plugin-hypervisor-kvm</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-plugin-netapp</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-plugin-network-f5</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-plugin-network-netscaler</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <!-- for awsapi build --> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.axis2</groupId> | ||||
|  | ||||
| @ -48,11 +48,6 @@ | ||||
|       <artifactId>cloud-core</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-vmware-base</artifactId> | ||||
|       <version>${project.version}</version> | ||||
|     </dependency> | ||||
|     <dependency> | ||||
|       <groupId>org.apache.cloudstack</groupId> | ||||
|       <artifactId>cloud-agent</artifactId> | ||||
|  | ||||
| @ -1,641 +0,0 @@ | ||||
| // 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.kvm.resource; | ||||
| 
 | ||||
| import java.io.File; | ||||
| import java.io.FileInputStream; | ||||
| import java.io.FileNotFoundException; | ||||
| import java.io.IOException; | ||||
| import java.net.InetAddress; | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Properties; | ||||
| import java.util.UUID; | ||||
| 
 | ||||
| import javax.ejb.Local; | ||||
| import javax.naming.ConfigurationException; | ||||
| 
 | ||||
| import org.apache.log4j.Logger; | ||||
| 
 | ||||
| import com.cloud.agent.api.Answer; | ||||
| import com.cloud.agent.api.AttachIsoCommand; | ||||
| import com.cloud.agent.api.AttachVolumeCommand; | ||||
| import com.cloud.agent.api.CheckHealthAnswer; | ||||
| import com.cloud.agent.api.CheckHealthCommand; | ||||
| import com.cloud.agent.api.CheckStateAnswer; | ||||
| import com.cloud.agent.api.CheckStateCommand; | ||||
| import com.cloud.agent.api.CheckVirtualMachineAnswer; | ||||
| import com.cloud.agent.api.CheckVirtualMachineCommand; | ||||
| import com.cloud.agent.api.CleanupNetworkRulesCmd; | ||||
| import com.cloud.agent.api.Command; | ||||
| import com.cloud.agent.api.GetHostStatsAnswer; | ||||
| import com.cloud.agent.api.GetHostStatsCommand; | ||||
| import com.cloud.agent.api.GetStorageStatsAnswer; | ||||
| import com.cloud.agent.api.GetStorageStatsCommand; | ||||
| import com.cloud.agent.api.GetVmStatsAnswer; | ||||
| import com.cloud.agent.api.GetVmStatsCommand; | ||||
| import com.cloud.agent.api.ModifySshKeysCommand; | ||||
| import com.cloud.agent.api.ModifyStoragePoolAnswer; | ||||
| import com.cloud.agent.api.ModifyStoragePoolCommand; | ||||
| import com.cloud.agent.api.PingCommand; | ||||
| import com.cloud.agent.api.PingRoutingCommand; | ||||
| import com.cloud.agent.api.PingTestCommand; | ||||
| import com.cloud.agent.api.ReadyAnswer; | ||||
| import com.cloud.agent.api.ReadyCommand; | ||||
| import com.cloud.agent.api.RebootAnswer; | ||||
| import com.cloud.agent.api.RebootCommand; | ||||
| import com.cloud.agent.api.SecurityGroupRuleAnswer; | ||||
| import com.cloud.agent.api.SecurityGroupRulesCmd; | ||||
| import com.cloud.agent.api.StartAnswer; | ||||
| import com.cloud.agent.api.StartCommand; | ||||
| import com.cloud.agent.api.StartupCommand; | ||||
| import com.cloud.agent.api.StartupRoutingCommand; | ||||
| import com.cloud.agent.api.StartupRoutingCommand.VmState; | ||||
| import com.cloud.agent.api.StartupStorageCommand; | ||||
| import com.cloud.agent.api.StopAnswer; | ||||
| import com.cloud.agent.api.StopCommand; | ||||
| import com.cloud.agent.api.StoragePoolInfo; | ||||
| import com.cloud.agent.api.routing.SavePasswordCommand; | ||||
| import com.cloud.agent.api.routing.VmDataCommand; | ||||
| import com.cloud.agent.api.storage.CreateAnswer; | ||||
| import com.cloud.agent.api.storage.CreateCommand; | ||||
| import com.cloud.agent.api.storage.DestroyCommand; | ||||
| import com.cloud.agent.api.storage.PrimaryStorageDownloadAnswer; | ||||
| import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand; | ||||
| import com.cloud.agent.api.to.NicTO; | ||||
| import com.cloud.agent.api.to.VirtualMachineTO; | ||||
| import com.cloud.agent.api.to.VolumeTO; | ||||
| import com.cloud.agent.dhcp.DhcpSnooper; | ||||
| import com.cloud.agent.dhcp.FakeDhcpSnooper; | ||||
| import com.cloud.agent.mockvm.MockVm; | ||||
| import com.cloud.agent.mockvm.MockVmMgr; | ||||
| import com.cloud.agent.mockvm.VmMgr; | ||||
| import com.cloud.agent.vmdata.JettyVmDataServer; | ||||
| import com.cloud.agent.vmdata.VmDataServer; | ||||
| import com.cloud.host.Host.Type; | ||||
| import com.cloud.hypervisor.Hypervisor.HypervisorType; | ||||
| import com.cloud.network.Networks.RouterPrivateIpStrategy; | ||||
| import com.cloud.network.Networks.TrafficType; | ||||
| import com.cloud.resource.ServerResource; | ||||
| import com.cloud.resource.ServerResourceBase; | ||||
| import com.cloud.storage.Storage; | ||||
| import com.cloud.storage.Storage.StoragePoolType; | ||||
| import com.cloud.storage.Volume; | ||||
| import com.cloud.storage.template.TemplateInfo; | ||||
| import com.cloud.utils.PropertiesUtil; | ||||
| import com.cloud.utils.exception.CloudRuntimeException; | ||||
| import com.cloud.utils.script.Script; | ||||
| import com.cloud.vm.VirtualMachine.State; | ||||
| 
 | ||||
| /** | ||||
|  * Pretends to be a computing resource | ||||
|  *  | ||||
|  */ | ||||
| @Local(value = { ServerResource.class }) | ||||
| public class FakeComputingResource extends ServerResourceBase implements | ||||
|         ServerResource { | ||||
|     private static final Logger s_logger = Logger | ||||
|             .getLogger(FakeComputingResource.class); | ||||
|     private Map<String, Object> _params; | ||||
|     private VmMgr _vmManager = new MockVmMgr(); | ||||
|     protected HashMap<String, State> _vms = new HashMap<String, State>(20); | ||||
|     protected DhcpSnooper _dhcpSnooper = new FakeDhcpSnooper(); | ||||
|     protected VmDataServer _vmDataServer = new JettyVmDataServer(); | ||||
| 
 | ||||
|     @Override | ||||
|     public Type getType() { | ||||
|         return Type.Routing; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public StartupCommand[] initialize() { | ||||
|         Map<String, VmState> changes = null; | ||||
| 
 | ||||
|         final List<Object> info = getHostInfo(); | ||||
| 
 | ||||
|         final StartupRoutingCommand cmd = new StartupRoutingCommand( | ||||
|                 (Integer) info.get(0), (Long) info.get(1), (Long) info.get(2), | ||||
|                 (Long) info.get(4), (String) info.get(3), HypervisorType.KVM, | ||||
|                 RouterPrivateIpStrategy.HostLocal, changes); | ||||
|         fillNetworkInformation(cmd); | ||||
|         cmd.getHostDetails().putAll(getVersionStrings()); | ||||
|         cmd.setCluster(getConfiguredProperty("cluster", "1")); | ||||
|         StoragePoolInfo pi = initializeLocalStorage(); | ||||
|         StartupStorageCommand sscmd = new StartupStorageCommand(); | ||||
|         sscmd.setPoolInfo(pi); | ||||
|         sscmd.setGuid(pi.getUuid()); | ||||
|         sscmd.setDataCenter((String) _params.get("zone")); | ||||
|         sscmd.setResourceType(Storage.StorageResourceType.STORAGE_POOL); | ||||
| 
 | ||||
|         return new StartupCommand[] { cmd, sscmd }; | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     private Map<String, String> getVersionStrings() { | ||||
|         Map<String, String> result = new HashMap<String, String>(); | ||||
|         String hostOs = (String) _params.get("Host.OS"); | ||||
|         String hostOsVer = (String) _params.get("Host.OS.Version"); | ||||
|         String hostOsKernVer = (String) _params.get("Host.OS.Kernel.Version"); | ||||
|         result.put("Host.OS", hostOs == null ? "Fedora" : hostOs); | ||||
|         result.put("Host.OS.Version", hostOsVer == null ? "14" : hostOsVer); | ||||
|         result.put("Host.OS.Kernel.Version", | ||||
|                 hostOsKernVer == null ? "2.6.35.6-45.fc14.x86_64" | ||||
|                         : hostOsKernVer); | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     protected void fillNetworkInformation(final StartupCommand cmd) { | ||||
| 
 | ||||
|         cmd.setPrivateIpAddress((String) _params.get("private.ip.address")); | ||||
|         cmd.setPrivateMacAddress((String) _params.get("private.mac.address")); | ||||
|         cmd.setPrivateNetmask((String) _params.get("private.ip.netmask")); | ||||
| 
 | ||||
|         cmd.setStorageIpAddress((String) _params.get("private.ip.address")); | ||||
|         cmd.setStorageMacAddress((String) _params.get("private.mac.address")); | ||||
|         cmd.setStorageNetmask((String) _params.get("private.ip.netmask")); | ||||
|         cmd.setGatewayIpAddress((String) _params.get("gateway.ip.address")); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     protected StoragePoolInfo initializeLocalStorage() { | ||||
|         String hostIp = (String) _params.get("private.ip.address"); | ||||
|         String localStoragePath = (String) _params.get("local.storage.path"); | ||||
|         String lh = hostIp + localStoragePath; | ||||
|         String uuid = UUID.nameUUIDFromBytes(lh.getBytes()).toString(); | ||||
| 
 | ||||
|         String capacity = (String) _params.get("local.storage.capacity"); | ||||
|         String available = (String) _params.get("local.storage.avail"); | ||||
| 
 | ||||
|         return new StoragePoolInfo(uuid, hostIp, localStoragePath, | ||||
|                 localStoragePath, StoragePoolType.Filesystem, | ||||
|                 Long.parseLong(capacity), Long.parseLong(available)); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public PingCommand getCurrentStatus(long id) { | ||||
|         final HashMap<String, State> newStates = new HashMap<String, State>(); | ||||
|         _dhcpSnooper.syncIpAddr(); | ||||
|         return new PingRoutingCommand(com.cloud.host.Host.Type.Routing, id, | ||||
|                 newStates); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Answer executeRequest(Command cmd) { | ||||
|         try { | ||||
|             if (cmd instanceof ReadyCommand) { | ||||
|                 return execute((ReadyCommand) cmd); | ||||
|             } else if (cmd instanceof ModifySshKeysCommand) { | ||||
|                 return execute((ModifySshKeysCommand) cmd);// TODO: remove | ||||
|             } else if (cmd instanceof GetHostStatsCommand) { | ||||
|                 return execute((GetHostStatsCommand) cmd); | ||||
|             } else if (cmd instanceof PrimaryStorageDownloadCommand) { | ||||
|                 return execute((PrimaryStorageDownloadCommand) cmd); | ||||
| 
 | ||||
|             } else if (cmd instanceof StopCommand) { | ||||
|                 return execute((StopCommand) cmd); | ||||
|             } else if (cmd instanceof GetVmStatsCommand) { | ||||
|                 return execute((GetVmStatsCommand) cmd); | ||||
|             } else if (cmd instanceof RebootCommand) { | ||||
|                 return execute((RebootCommand) cmd); | ||||
|             } else if (cmd instanceof CheckStateCommand) { | ||||
|                 return executeRequest(cmd); | ||||
|             } else if (cmd instanceof CheckHealthCommand) { | ||||
|                 return execute((CheckHealthCommand) cmd); | ||||
|             } else if (cmd instanceof PingTestCommand) { | ||||
|                 return execute((PingTestCommand) cmd); | ||||
|             } else if (cmd instanceof CheckVirtualMachineCommand) { | ||||
|                 return execute((CheckVirtualMachineCommand) cmd); | ||||
|             } else if (cmd instanceof ReadyCommand) { | ||||
|                 return execute((ReadyCommand) cmd); | ||||
|             } else if (cmd instanceof StopCommand) { | ||||
|                 return execute((StopCommand) cmd); | ||||
|             } else if (cmd instanceof CreateCommand) { | ||||
|                 return execute((CreateCommand) cmd); | ||||
|             } else if (cmd instanceof DestroyCommand) { | ||||
|                 return execute((DestroyCommand) cmd); | ||||
|             } else if (cmd instanceof PrimaryStorageDownloadCommand) { | ||||
|                 return execute((PrimaryStorageDownloadCommand) cmd); | ||||
|             } else if (cmd instanceof GetStorageStatsCommand) { | ||||
|                 return execute((GetStorageStatsCommand) cmd); | ||||
|             } else if (cmd instanceof ModifyStoragePoolCommand) { | ||||
|                 return execute((ModifyStoragePoolCommand) cmd); | ||||
|             } else if (cmd instanceof SecurityGroupRulesCmd) { | ||||
|                 return execute((SecurityGroupRulesCmd) cmd); | ||||
|             } else if (cmd instanceof StartCommand) { | ||||
|                 return execute((StartCommand) cmd); | ||||
|             } else if (cmd instanceof CleanupNetworkRulesCmd) { | ||||
|                 return execute((CleanupNetworkRulesCmd) cmd); | ||||
|             } else if (cmd instanceof SavePasswordCommand) { | ||||
|                 return execute((SavePasswordCommand) cmd); | ||||
|             } else if (cmd instanceof VmDataCommand) { | ||||
|                 return execute((VmDataCommand) cmd); | ||||
|             } else { | ||||
|                 s_logger.warn("Unsupported command "); | ||||
|                 return Answer.createUnsupportedCommandAnswer(cmd); | ||||
|             } | ||||
|         } catch (final IllegalArgumentException e) { | ||||
|             return new Answer(cmd, false, e.getMessage()); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private Answer execute(CleanupNetworkRulesCmd cmd) { | ||||
|         return new Answer(cmd); | ||||
|     } | ||||
| 
 | ||||
|     private Answer execute(SecurityGroupRulesCmd cmd) { | ||||
|         s_logger.info("Programmed network rules for vm " + cmd.getVmName() | ||||
|                 + " guestIp=" + cmd.getGuestIp() + ",ingress numrules=" | ||||
|                 + cmd.getIngressRuleSet().length + ",egress numrules=" | ||||
|                 + cmd.getEgressRuleSet().length); | ||||
|         return new SecurityGroupRuleAnswer(cmd); | ||||
|     } | ||||
| 
 | ||||
|     private Answer execute(ModifyStoragePoolCommand cmd) { | ||||
|         long capacity = getConfiguredProperty("local.storage.capacity", | ||||
|                 10000000000L); | ||||
|         long used = 10000000L; | ||||
|         long available = capacity - used; | ||||
|         if (cmd.getAdd()) { | ||||
| 
 | ||||
|             ModifyStoragePoolAnswer answer = new ModifyStoragePoolAnswer(cmd, | ||||
|                     capacity, used, new HashMap<String, TemplateInfo>()); | ||||
| 
 | ||||
|             if (s_logger.isInfoEnabled()) | ||||
|                 s_logger.info("Sending ModifyStoragePoolCommand answer with capacity: " | ||||
|                         + capacity | ||||
|                         + ", used: " | ||||
|                         + used | ||||
|                         + ", available: " | ||||
|                         + available); | ||||
|             return answer; | ||||
|         } else { | ||||
|             if (s_logger.isInfoEnabled()) | ||||
|                 s_logger.info("ModifyNetfsStoragePoolCmd is not add command, cmd: " | ||||
|                         + cmd.toString()); | ||||
|             return new Answer(cmd); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private Answer execute(GetStorageStatsCommand cmd) { | ||||
|         return new GetStorageStatsAnswer(cmd, getConfiguredProperty( | ||||
|                 "local.storage.capacity", 100000000000L), 0L); | ||||
|     } | ||||
| 
 | ||||
|     protected synchronized ReadyAnswer execute(ReadyCommand cmd) { | ||||
|         return new ReadyAnswer(cmd); | ||||
|     } | ||||
| 
 | ||||
|     private Answer execute(PrimaryStorageDownloadCommand cmd) { | ||||
|         return new PrimaryStorageDownloadAnswer(cmd.getLocalPath(), 16000000L); | ||||
|     } | ||||
| 
 | ||||
|     private Answer execute(ModifySshKeysCommand cmd) { | ||||
|         return new Answer(cmd, true, null); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     protected String getDefaultScriptsDir() { | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     protected String getConfiguredProperty(String key, String defaultValue) { | ||||
|         String val = (String) _params.get(key); | ||||
|         return val == null ? defaultValue : val; | ||||
|     } | ||||
| 
 | ||||
|     protected Long getConfiguredProperty(String key, Long defaultValue) { | ||||
|         String val = (String) _params.get(key); | ||||
| 
 | ||||
|         if (val != null) { | ||||
|             Long result = Long.parseLong(val); | ||||
|             return result; | ||||
|         } | ||||
|         return defaultValue; | ||||
|     } | ||||
| 
 | ||||
|     protected List<Object> getHostInfo() { | ||||
|         final ArrayList<Object> info = new ArrayList<Object>(); | ||||
|         long speed = getConfiguredProperty("cpuspeed", 4000L); | ||||
|         long cpus = getConfiguredProperty("cpus", 4L); | ||||
|         long ram = getConfiguredProperty("memory", 16000L * 1024L * 1024L); | ||||
|         long dom0ram = Math.min(ram / 10, 768 * 1024 * 1024L); | ||||
| 
 | ||||
|         String cap = getConfiguredProperty("capabilities", "hvm"); | ||||
|         info.add((int) cpus); | ||||
|         info.add(speed); | ||||
|         info.add(ram); | ||||
|         info.add(cap); | ||||
|         info.add(dom0ram); | ||||
|         return info; | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     private Map<String, Object> getSimulatorProperties() | ||||
|             throws ConfigurationException { | ||||
|         final File file = PropertiesUtil.findConfigFile("simulator.properties"); | ||||
|         if (file == null) { | ||||
|             throw new ConfigurationException( | ||||
|                     "Unable to find simulator.properties."); | ||||
|         } | ||||
| 
 | ||||
|         s_logger.info("simulator.properties found at " + file.getAbsolutePath()); | ||||
|         Properties properties = new Properties(); | ||||
|         try { | ||||
|             properties.load(new FileInputStream(file)); | ||||
| 
 | ||||
|             final Map<String, Object> params = PropertiesUtil.toMap(properties); | ||||
| 
 | ||||
|             return params; | ||||
|         } catch (final FileNotFoundException ex) { | ||||
|             throw new CloudRuntimeException("Cannot find the file: " | ||||
|                     + file.getAbsolutePath(), ex); | ||||
|         } catch (final IOException ex) { | ||||
|             throw new CloudRuntimeException("IOException in reading " | ||||
|                     + file.getAbsolutePath(), ex); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean configure(String name, Map<String, Object> params) | ||||
|             throws ConfigurationException { | ||||
|         Map<String, Object> simProps = getSimulatorProperties(); | ||||
|         params.putAll(simProps); | ||||
|         setParams(params); | ||||
|         _vmManager.configure(params); | ||||
|         _dhcpSnooper.configure(name, params); | ||||
|         _vmDataServer.configure(name, params); | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     public void setParams(Map<String, Object> _params) { | ||||
|         this._params = _params; | ||||
|     } | ||||
| 
 | ||||
|     public Map<String, Object> getParams() { | ||||
|         return _params; | ||||
|     } | ||||
| 
 | ||||
|     protected synchronized StartAnswer execute(StartCommand cmd) { | ||||
|         VmMgr vmMgr = getVmManager(); | ||||
| 
 | ||||
|         VirtualMachineTO vmSpec = cmd.getVirtualMachine(); | ||||
|         String vmName = vmSpec.getName(); | ||||
|         State state = State.Stopped; | ||||
| 
 | ||||
|         try { | ||||
|             if (!_vms.containsKey(vmName)) { | ||||
|                 synchronized (_vms) { | ||||
|                     _vms.put(vmName, State.Starting); | ||||
|                 } | ||||
| 
 | ||||
|                 MockVm vm = vmMgr.createVmFromSpec(vmSpec); | ||||
|                 vmMgr.createVbd(vmSpec, vmName, vm); | ||||
|                 vmMgr.createVif(vmSpec, vmName, vm); | ||||
| 
 | ||||
|                 state = State.Running; | ||||
|                 for (NicTO nic : cmd.getVirtualMachine().getNics()) { | ||||
|                     if (nic.getType() == TrafficType.Guest) { | ||||
|                         InetAddress addr = _dhcpSnooper.getIPAddr(nic.getMac(), | ||||
|                                 vmName); | ||||
|                         nic.setIp(addr.getHostAddress()); | ||||
|                     } | ||||
|                 } | ||||
|                 _vmDataServer.handleVmStarted(cmd.getVirtualMachine()); | ||||
|                 return new StartAnswer(cmd); | ||||
|             } else { | ||||
|                 String msg = "There is already a VM having the same name " | ||||
|                         + vmName; | ||||
|                 s_logger.warn(msg); | ||||
|                 return new StartAnswer(cmd, msg); | ||||
|             } | ||||
|         } catch (Exception ex) { | ||||
| 
 | ||||
|         } finally { | ||||
|             synchronized (_vms) { | ||||
|                 _vms.put(vmName, state); | ||||
|             } | ||||
|         } | ||||
|         return new StartAnswer(cmd); | ||||
|     } | ||||
| 
 | ||||
|     protected synchronized StopAnswer execute(StopCommand cmd) { | ||||
|         VmMgr vmMgr = getVmManager(); | ||||
| 
 | ||||
|         StopAnswer answer = null; | ||||
|         String vmName = cmd.getVmName(); | ||||
| 
 | ||||
|         Integer port = vmMgr.getVncPort(vmName); | ||||
| 
 | ||||
|         State state = null; | ||||
|         synchronized (_vms) { | ||||
|             state = _vms.get(vmName); | ||||
|             _vms.put(vmName, State.Stopping); | ||||
|         } | ||||
|         try { | ||||
|             String result = vmMgr.stopVM(vmName, false); | ||||
|             if (result != null) { | ||||
|                 s_logger.info("Trying destroy on " + vmName); | ||||
|                 if (result == Script.ERR_TIMEOUT) { | ||||
|                     result = vmMgr.stopVM(vmName, true); | ||||
|                 } | ||||
| 
 | ||||
|                 s_logger.warn("Couldn't stop " + vmName); | ||||
| 
 | ||||
|                 if (result != null) { | ||||
|                     return new StopAnswer(cmd, result, false); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             answer = new StopAnswer(cmd, null, port, true); | ||||
| 
 | ||||
|             String result2 = vmMgr.cleanupVnet(cmd.getVnet()); | ||||
|             if (result2 != null) { | ||||
|                 result = result2 + (result != null ? ("\n" + result) : ""); | ||||
|                 answer = new StopAnswer(cmd, result, port, true); | ||||
|             } | ||||
| 
 | ||||
|             _dhcpSnooper.cleanup(vmName, null); | ||||
| 
 | ||||
|             return answer; | ||||
|         } finally { | ||||
|             if (answer == null || !answer.getResult()) { | ||||
|                 synchronized (_vms) { | ||||
|                     _vms.put(vmName, state); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     protected Answer execute(final VmDataCommand cmd) { | ||||
|         return _vmDataServer.handleVmDataCommand(cmd); | ||||
|     } | ||||
| 
 | ||||
|     protected Answer execute(final SavePasswordCommand cmd) { | ||||
|         return new Answer(cmd); | ||||
|     } | ||||
| 
 | ||||
|     protected Answer execute(RebootCommand cmd) { | ||||
|         VmMgr vmMgr = getVmManager(); | ||||
|         vmMgr.rebootVM(cmd.getVmName()); | ||||
|         return new RebootAnswer(cmd, "success", true); | ||||
|     } | ||||
| 
 | ||||
|     private Answer execute(PingTestCommand cmd) { | ||||
|         return new Answer(cmd); | ||||
|     } | ||||
| 
 | ||||
|     protected GetVmStatsAnswer execute(GetVmStatsCommand cmd) { | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     private VmMgr getVmManager() { | ||||
|         return _vmManager; | ||||
|     } | ||||
| 
 | ||||
|     protected Answer execute(GetHostStatsCommand cmd) { | ||||
|         VmMgr vmMgr = getVmManager(); | ||||
|         return new GetHostStatsAnswer(cmd, vmMgr.getHostCpuUtilization(), | ||||
|                 vmMgr.getHostFreeMemory(), vmMgr.getHostTotalMemory(), 0, 0, | ||||
|                 "SimulatedHost"); | ||||
|     } | ||||
| 
 | ||||
|     protected CheckStateAnswer execute(CheckStateCommand cmd) { | ||||
|         State state = getVmManager().checkVmState(cmd.getVmName()); | ||||
|         return new CheckStateAnswer(cmd, state); | ||||
|     } | ||||
| 
 | ||||
|     protected CheckHealthAnswer execute(CheckHealthCommand cmd) { | ||||
|         return new CheckHealthAnswer(cmd, true); | ||||
|     } | ||||
| 
 | ||||
|     protected CheckVirtualMachineAnswer execute( | ||||
|             final CheckVirtualMachineCommand cmd) { | ||||
|         VmMgr vmMgr = getVmManager(); | ||||
|         final String vmName = cmd.getVmName(); | ||||
| 
 | ||||
|         final State state = vmMgr.checkVmState(vmName); | ||||
|         Integer vncPort = null; | ||||
|         if (state == State.Running) { | ||||
|             vncPort = vmMgr.getVncPort(vmName); | ||||
|             synchronized (_vms) { | ||||
|                 _vms.put(vmName, State.Running); | ||||
|             } | ||||
|         } | ||||
|         return new CheckVirtualMachineAnswer(cmd, state, vncPort); | ||||
|     } | ||||
| 
 | ||||
|     protected Answer execute(final AttachVolumeCommand cmd) { | ||||
|         return new Answer(cmd); | ||||
|     } | ||||
| 
 | ||||
|     protected Answer execute(final AttachIsoCommand cmd) { | ||||
|         return new Answer(cmd); | ||||
|     } | ||||
| 
 | ||||
|     protected CreateAnswer execute(final CreateCommand cmd) { | ||||
|         try { | ||||
| 
 | ||||
|             VolumeTO vol = new VolumeTO(cmd.getVolumeId(), Volume.Type.ROOT, | ||||
|                     com.cloud.storage.Storage.StoragePoolType.LVM, cmd | ||||
|                             .getPool().getUuid(), "dummy", "/mountpoint", | ||||
|                     "dummyPath", 1000L, null); | ||||
|             return new CreateAnswer(cmd, vol); | ||||
|         } catch (Throwable th) { | ||||
|             return new CreateAnswer(cmd, new Exception("Unexpected exception")); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     protected HashMap<String, State> sync() { | ||||
|         Map<String, State> newStates; | ||||
|         Map<String, State> oldStates = null; | ||||
| 
 | ||||
|         HashMap<String, State> changes = new HashMap<String, State>(); | ||||
| 
 | ||||
|         synchronized (_vms) { | ||||
|             newStates = getVmManager().getVmStates(); | ||||
|             oldStates = new HashMap<String, State>(_vms.size()); | ||||
|             oldStates.putAll(_vms); | ||||
| 
 | ||||
|             for (Map.Entry<String, State> entry : newStates.entrySet()) { | ||||
|                 String vm = entry.getKey(); | ||||
| 
 | ||||
|                 State newState = entry.getValue(); | ||||
|                 State oldState = oldStates.remove(vm); | ||||
| 
 | ||||
|                 if (s_logger.isTraceEnabled()) { | ||||
|                     s_logger.trace("VM " + vm + ": xen has state " + newState | ||||
|                             + " and we have state " | ||||
|                             + (oldState != null ? oldState.toString() : "null")); | ||||
|                 } | ||||
| 
 | ||||
|                 if (oldState == null) { | ||||
|                     _vms.put(vm, newState); | ||||
|                     changes.put(vm, newState); | ||||
|                 } else if (oldState == State.Starting) { | ||||
|                     if (newState == State.Running) { | ||||
|                         _vms.put(vm, newState); | ||||
|                     } else if (newState == State.Stopped) { | ||||
|                         s_logger.debug("Ignoring vm " + vm | ||||
|                                 + " because of a lag in starting the vm."); | ||||
|                     } | ||||
|                 } else if (oldState == State.Stopping) { | ||||
|                     if (newState == State.Stopped) { | ||||
|                         _vms.put(vm, newState); | ||||
|                     } else if (newState == State.Running) { | ||||
|                         s_logger.debug("Ignoring vm " + vm | ||||
|                                 + " because of a lag in stopping the vm. "); | ||||
|                     } | ||||
|                 } else if (oldState != newState) { | ||||
|                     _vms.put(vm, newState); | ||||
|                     changes.put(vm, newState); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             for (Map.Entry<String, State> entry : oldStates.entrySet()) { | ||||
|                 String vm = entry.getKey(); | ||||
|                 State oldState = entry.getValue(); | ||||
| 
 | ||||
|                 if (s_logger.isTraceEnabled()) { | ||||
|                     s_logger.trace("VM " + vm | ||||
|                             + " is now missing from xen so reporting stopped"); | ||||
|                 } | ||||
| 
 | ||||
|                 if (oldState == State.Stopping) { | ||||
|                     s_logger.debug("Ignoring VM " + vm | ||||
|                             + " in transition state stopping."); | ||||
|                     _vms.remove(vm); | ||||
|                 } else if (oldState == State.Starting) { | ||||
|                     s_logger.debug("Ignoring VM " + vm | ||||
|                             + " in transition state starting."); | ||||
|                 } else if (oldState == State.Stopped) { | ||||
|                     _vms.remove(vm); | ||||
|                 } else { | ||||
|                     changes.put(entry.getKey(), State.Stopped); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return changes; | ||||
|     } | ||||
| 
 | ||||
|     protected Answer execute(DestroyCommand cmd) { | ||||
|         return new Answer(cmd, true, null); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										1
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								pom.xml
									
									
									
									
									
								
							| @ -154,7 +154,6 @@ | ||||
|     <module>usage</module> | ||||
|     <module>utils</module> | ||||
|     <module>deps/XenServerJava</module> | ||||
|     <module>vmware-base</module> | ||||
|     <module>plugins</module> | ||||
|     <module>awsapi</module> | ||||
|     <module>patches</module> | ||||
|  | ||||
							
								
								
									
										1
									
								
								wscript
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								wscript
									
									
									
									
									
								
							| @ -636,6 +636,7 @@ def rpm(context): | ||||
| 	shutil.move(tarball,_join(sourcedir,tarball)) | ||||
| 
 | ||||
| 	specfile = "%s.spec"%APPNAME | ||||
|         Utils.exec_command("mvn install -P deps") | ||||
| 	checkdeps = lambda: c(["rpmbuild","--define","_topdir %s"%outputdir,"--nobuild",specfile]+packagever+releasever) | ||||
| 	dorpm = lambda: c(["rpmbuild","--define","_topdir %s"%outputdir,"-bb",specfile]+buildnumber+prerelease+packagever+releasever) | ||||
| 	try: checkdeps() | ||||
|  | ||||
| @ -164,7 +164,7 @@ def build_dependences (): | ||||
| 
 | ||||
|         bld.install_files('${JAVADIR}',start_path.ant_glob(["commons-codec-1.6.jar", "ejb-api-3.0.jar", "xmlrpc-client-3.1.3.jar", "commons-dbcp-1.4.jar", "commons-pool-1.6.jar", "gson-1.7.1.jar",  | ||||
|          "netscaler-1.0.jar", "netscaler-sdx-1.0.jar", "backport-util-concurrent-3.1.jar", "ehcache-1.5.0.jar", "httpcore-4.0.jar", "log4j-1.2.16.jar", "trilead-ssh2-build213-svnkit-1.3-patch.jar", "cglib-2.2.jar", "xmlrpc-common-3.*.jar",  | ||||
|          "xmlrpc-client-3.*.jar", "axis-1.4.jar", "wsdl4j-1.6.2.jar", "bcprov-jdk16-1.46.jar", "jsch-0.1.42.jar", "icontrol-1.0.jar", "manageontap-1.0.jar", "vmware-vim-1.0.jar", "vmware-vim25-1.0.jar", "jasypt-1.9.0.jar", "commons-configuration-1.8.jar", "commons-lang-2.6.jar",  "mail-1.4.jar", "activation-1.1.jar", "mysql-connector-java-5.1.21.jar", "hibernate-jpa-2.0-api-1.0.0.Final.jar", "hibernate-entitymanager-3.5.1-Final.jar", "hibernate-core-3.5.1-Final.jar", "hibernate-commons-annotations-3.2.0.Final.jar", "hibernate-annotations-3.5.1-Final.jar", "asm-3.1.jar", "xapi-5.6.100-1-20120825.123319-1.jar"], excl = excludes), cwd=start_path) | ||||
|          "xmlrpc-client-3.*.jar", "axis-1.4.jar", "wsdl4j-1.6.2.jar", "bcprov-jdk16-1.46.jar", "jsch-0.1.42.jar", "jasypt-1.9.0.jar", "commons-configuration-1.8.jar", "commons-lang-2.6.jar",  "mail-1.4.jar", "activation-1.1.jar", "mysql-connector-java-5.1.21.jar", "hibernate-jpa-2.0-api-1.0.0.Final.jar", "hibernate-entitymanager-3.5.1-Final.jar", "hibernate-core-3.5.1-Final.jar", "hibernate-commons-annotations-3.2.0.Final.jar", "hibernate-annotations-3.5.1-Final.jar", "asm-3.1.jar", "xapi-5.6.100-1-SNAPSHOT.jar"], excl = excludes), cwd=start_path) | ||||
| 
 | ||||
| #def build_console_proxy (): | ||||
| 	# binary unsubstitutable files: | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user