
Introduction
The current Cloud Stack management server runs only on Linux servers. The purpose of this feature is to run CloudStack management server on windows as well without using Cygwin. This document will illustrate what changes we may need to do at code level and script level. This will also introduce some installation procedures to have in place before running the management server on windows.
Scope
Should able to start/stop/restart management server as a service on windows. Do remember that we are not trying to manage development setup as well on windows.
Procedure
We need to convert all shell scripts to Pyhton scripts to make sure those are runnable on windows as well.
Make sure the copied files on windows file system will not change the line ending character other wise it will create a mess after copied to hyper-visor host.
The following modules need to run from windows as well to make sure they run without using cygwin
- Deploy DB
- Seed system template onto secondary storage location
- start/stop/restart management server
- Samba integration
DeployDB
<TODO>
Seed SystemTemplate
This will execute the following scripts
- scripts/storage/secondary/cloud-install-sys-tmplt
- cripts/storage/secondary/createtmplt.sh
- decrypt.sh
Management Server
When we start the management server currently it is calling the following scripts
- scripts/vm/systemvm/injectkeys.sh
There are some places in Java code where bash scripts are written inside the jave code.The following list of class files are having such scripts
com.cloud.server.ConfigurationServerImpl (Inside updateKeyPairs method)
com.cloud.hypervisor.kvm.resource.BridgeVifDriver.deleteExitingLinkLocalRouteTable(String)
com.cloud.hypervisor.kvm.resource.BridgeVifDriver.deleteVnetBr(String)
com.cloud.hypervisor.kvm.resource.KVMHAMonitor.removeStoragePool(String)
com.cloud.hypervisor.kvm.resource.KVMHABase.destroyVMs(String)
com.cloud.hypervisor.kvm.resource.KVMHABase.checkingMountPoint(NfsStoragePool, String)
org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.copySnapshotToTemplateFromNfsToNfs(CopyCommand, SnapshotObjectTO, NfsTO, TemplateObjectTO, NfsTO)
com.cloud.utils.net.NetUtils.getDefaultEthDevice()
com.cloud.server.ConfigurationServerImpl.updateKeyPairs()
com.cloud.hypervisor.kvm.storage.LibvirtStorageAdaptor.deleteStoragePool(String)
com.cloud.hypervisor.kvm.storage.LibvirtStorageAdaptor.createNfsStoragePool(Connect, String, String, String)
com.cloud.hypervisor.kvm.storage.LibvirtStorageAdaptor.createDiskFromTemplate(KVMPhysicalDisk, String, PhysicalDiskFormat, long, KVMStoragePool, int)
com.cloud.hypervisor.kvm.storage.LibvirtStorageAdaptor.copyPhysicalDisk(KVMPhysicalDisk, String, KVMStoragePool, int)
com.cloud.hypervisor.kvm.resource.OvsVifDriver.deleteExitingLinkLocalRouteTable(String)
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.getPif(String)
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.getOvsPifs()
com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.configure(String, Map<String, Object>)
Samba integration
<TODO>