Why is this set to false by default? >From an design decision point of view, not doing so, encourages thinking of sysVMs as more stateful than they are IMO.
--David On Mon, Aug 20, 2012 at 2:19 PM, <edi...@apache.org> wrote: > Updated Branches: > refs/heads/master ba2b0c397 -> 481aae1eb > > > add recreate.systemvm.enabled parameter to control recreating systemvm > > > Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo > Commit: > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/481aae1e > Tree: > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/481aae1e > Diff: > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/481aae1e > > Branch: refs/heads/master > Commit: 481aae1ebc353db149c7d997ece2ce0ffcbde52f > Parents: ba2b0c3 > Author: Edison Su <sudi...@gmail.com> > Authored: Mon Aug 20 11:19:26 2012 -0700 > Committer: Edison Su <sudi...@gmail.com> > Committed: Mon Aug 20 11:19:26 2012 -0700 > > ---------------------------------------------------------------------- > .../network/lb/ElasticLoadBalancerManagerImpl.java | 8 -------- > server/src/com/cloud/configuration/Config.java | 1 + > .../AgentBasedConsoleProxyManager.java | 8 -------- > .../consoleproxy/ConsoleProxyManagerImpl.java | 9 --------- > .../router/VirtualNetworkApplianceManagerImpl.java | 13 ------------- > server/src/com/cloud/storage/StorageManager.java | 2 +- > .../src/com/cloud/storage/StorageManagerImpl.java | 9 ++++++++- > .../secondary/SecondaryStorageManagerImpl.java | 9 --------- > server/src/com/cloud/vm/UserVmManagerImpl.java | 9 --------- > server/src/com/cloud/vm/VirtualMachineGuru.java | 3 --- > .../com/cloud/vm/VirtualMachineManagerImpl.java | 10 ++-------- > .../test/com/cloud/vm/MockUserVmManagerImpl.java | 8 -------- > 12 files changed, 12 insertions(+), 77 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/481aae1e/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java > ---------------------------------------------------------------------- > diff --git > a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java > > b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java > index 1c40516..1cd830c 100644 > --- > a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java > +++ > b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java > @@ -1025,14 +1025,6 @@ public class ElasticLoadBalancerManagerImpl implements > throw new UnsupportedOperationException("Unplug nic is not supported > for vm of type " + vm.getType()); > } > > - > - @Override > - public boolean recreateNeeded( > - VirtualMachineProfile<DomainRouterVO> profile, long hostId, Commands > cmds, ReservationContext context) { > - // TODO Auto-generated method stub > - return false; > - } > - > @Override > public void prepareStop(VirtualMachineProfile<DomainRouterVO> profile) { > } > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/481aae1e/server/src/com/cloud/configuration/Config.java > ---------------------------------------------------------------------- > diff --git a/server/src/com/cloud/configuration/Config.java > b/server/src/com/cloud/configuration/Config.java > index 6537c9b..9fea7fb 100755 > --- a/server/src/com/cloud/configuration/Config.java > +++ b/server/src/com/cloud/configuration/Config.java > @@ -230,6 +230,7 @@ public enum Config { > SortKeyAlgorithm("Advanced", ManagementServer.class, Boolean.class, > "sortkey.algorithm", "false", "Sort algorithm for those who use sort > key(template, disk offering, service offering, network offering), true means > ascending sort while false means descending sort", null), > EnableEC2API("Advanced", ManagementServer.class, Boolean.class, > "enable.ec2.api", "false", "enable EC2 API on CloudStack", null), > EnableS3API("Advanced", ManagementServer.class, Boolean.class, > "enable.s3.api", "false", "enable Amazon S3 API on CloudStack", null), > + RecreateSystemVmEnabled("Advanced", ManagementServer.class, > Boolean.class, "recreate.systemvm.enabled", "false", "If true, will recreate > system vm root disk whenever starting system vm", "true,false"), > > // Ovm > OvmPublicNetwork("Hidden", ManagementServer.class, String.class, > "ovm.public.network.device", null, "Specify the public bridge on host for > public network", null), > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/481aae1e/server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java > ---------------------------------------------------------------------- > diff --git > a/server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java > b/server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java > index f833e98..01b4720 100755 > --- a/server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java > +++ b/server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java > @@ -368,14 +368,6 @@ public class AgentBasedConsoleProxyManager implements > ConsoleProxyManager, Virtu > throw new UnsupportedOperationException("Unplug nic is not supported > for vm of type " + vm.getType()); > } > > - @Override > - public boolean recreateNeeded( > - VirtualMachineProfile<ConsoleProxyVO> profile, long > hostId, > - Commands cmds, ReservationContext context) { > - // TODO Auto-generated method stub > - return false; > - } > - > @Override > public void prepareStop(VirtualMachineProfile<ConsoleProxyVO> profile) { > } > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/481aae1e/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java > ---------------------------------------------------------------------- > diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java > b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java > index 72d48b4..6de1463 100755 > --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java > +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java > @@ -2023,15 +2023,6 @@ public class ConsoleProxyManagerImpl implements > ConsoleProxyManager, ConsoleProx > //not supported > throw new UnsupportedOperationException("Unplug nic is not supported > for vm of type " + vm.getType()); > } > - > - > - @Override > - public boolean recreateNeeded( > - VirtualMachineProfile<ConsoleProxyVO> profile, long > hostId, > - Commands cmds, ReservationContext context) { > - // TODO Auto-generated method stub > - return false; > - } > > @Override > public void prepareStop(VirtualMachineProfile<ConsoleProxyVO> > profile) { > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/481aae1e/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > ---------------------------------------------------------------------- > diff --git > a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > index 7cd9704..082c630 100755 > --- > a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > +++ > b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > @@ -3386,17 +3386,4 @@ public class VirtualNetworkApplianceManagerImpl > implements VirtualNetworkApplian > } > } > } > - > - @Override > - public boolean recreateNeeded( > - VirtualMachineProfile<DomainRouterVO> profile, long > hostId, > - Commands cmds, ReservationContext context) { > - //asssume that if failed to ssh into router, meaning router > is crashed > - CheckSshAnswer answer = (CheckSshAnswer) > cmds.getAnswer("checkSsh"); > - if (answer == null || !answer.getResult()) { > - return true; > - } > - > - return false; > - } > } > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/481aae1e/server/src/com/cloud/storage/StorageManager.java > ---------------------------------------------------------------------- > diff --git a/server/src/com/cloud/storage/StorageManager.java > b/server/src/com/cloud/storage/StorageManager.java > index 59a0221..d535af4 100755 > --- a/server/src/com/cloud/storage/StorageManager.java > +++ b/server/src/com/cloud/storage/StorageManager.java > @@ -180,7 +180,7 @@ public interface StorageManager extends StorageService, > Manager { > void createCapacityEntry(StoragePoolVO storagePool, short > capacityType, long allocated); > > > - void prepare(VirtualMachineProfile<? extends VirtualMachine> vm, > DeployDestination dest, boolean recreate) throws StorageUnavailableException, > InsufficientStorageCapacityException, ConcurrentOperationException; > + void prepare(VirtualMachineProfile<? extends VirtualMachine> vm, > DeployDestination dest) throws StorageUnavailableException, > InsufficientStorageCapacityException, ConcurrentOperationException; > > void release(VirtualMachineProfile<? extends VMInstanceVO> profile); > > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/481aae1e/server/src/com/cloud/storage/StorageManagerImpl.java > ---------------------------------------------------------------------- > diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java > b/server/src/com/cloud/storage/StorageManagerImpl.java > index 3fe4605..9d4ba0c 100755 > --- a/server/src/com/cloud/storage/StorageManagerImpl.java > +++ b/server/src/com/cloud/storage/StorageManagerImpl.java > @@ -358,6 +358,8 @@ public class StorageManagerImpl implements > StorageManager, Manager, ClusterManag > private double _storageAllocatedThreshold = 1.0d; > protected BigDecimal _storageOverprovisioningFactor = new BigDecimal(1); > > + private boolean _recreateSystemVmEnabled; > + > public boolean share(VMInstanceVO vm, List<VolumeVO> vols, HostVO host, > boolean cancelPreviousShare) throws StorageUnavailableException { > > // if pool is in maintenance and it is the ONLY pool available; > reject > @@ -958,6 +960,9 @@ public class StorageManagerImpl implements > StorageManager, Manager, ClusterManag > value = configDao.getValue(Config.CopyVolumeWait.toString()); > _copyvolumewait = NumbersUtil.parseInt(value, > Integer.parseInt(Config.CopyVolumeWait.getDefaultValue())); > > + value = configDao.getValue(Config.RecreateSystemVmEnabled.key()); > + _recreateSystemVmEnabled = Boolean.parseBoolean(value); > + > value = > configDao.getValue(Config.StorageTemplateCleanupEnabled.key()); > _templateCleanupEnabled = (value == null ? true : > Boolean.parseBoolean(value)); > > @@ -3217,7 +3222,7 @@ public class StorageManagerImpl implements > StorageManager, Manager, ClusterManag > } > > @Override > - public void prepare(VirtualMachineProfile<? extends VirtualMachine> vm, > DeployDestination dest, boolean recreate) throws StorageUnavailableException, > InsufficientStorageCapacityException { > + public void prepare(VirtualMachineProfile<? extends VirtualMachine> vm, > DeployDestination dest) throws StorageUnavailableException, > InsufficientStorageCapacityException { > > if (dest == null) { > if (s_logger.isDebugEnabled()) { > @@ -3229,6 +3234,8 @@ public class StorageManagerImpl implements > StorageManager, Manager, ClusterManag > if (s_logger.isDebugEnabled()) { > s_logger.debug("Checking if we need to prepare " + vols.size() + > " volumes for " + vm); > } > + > + boolean recreate = _recreateSystemVmEnabled; > > List<VolumeVO> recreateVols = new ArrayList<VolumeVO>(vols.size()); > > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/481aae1e/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java > ---------------------------------------------------------------------- > diff --git > a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java > b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java > index 95eb7f6..8662000 100755 > --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java > +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java > @@ -1469,15 +1469,6 @@ public class SecondaryStorageManagerImpl implements > SecondaryStorageVmManager, V > throw new UnsupportedOperationException("Unplug nic is not supported > for vm of type " + vm.getType()); > } > > - > - @Override > - public boolean recreateNeeded( > - VirtualMachineProfile<SecondaryStorageVmVO> profile, > long hostId, > - Commands cmds, ReservationContext context) { > - // TODO Auto-generated method stub > - return false; > - } > - > @Override > public void prepareStop(VirtualMachineProfile<SecondaryStorageVmVO> > profile) { > > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/481aae1e/server/src/com/cloud/vm/UserVmManagerImpl.java > ---------------------------------------------------------------------- > diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java > b/server/src/com/cloud/vm/UserVmManagerImpl.java > index 6f6a754..b7c1c0e 100755 > --- a/server/src/com/cloud/vm/UserVmManagerImpl.java > +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java > @@ -3620,15 +3620,6 @@ public class UserVmManagerImpl implements > UserVmManager, UserVmService, Manager > return vm; > } > > - > - @Override > - public boolean recreateNeeded(VirtualMachineProfile<UserVmVO> profile, > - long hostId, Commands cmds, ReservationContext context) { > - // TODO Auto-generated method stub > - return false; > - } > - > - > @Override > public UserVm restoreVM(RestoreVMCmd cmd) { > // Input validation > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/481aae1e/server/src/com/cloud/vm/VirtualMachineGuru.java > ---------------------------------------------------------------------- > diff --git a/server/src/com/cloud/vm/VirtualMachineGuru.java > b/server/src/com/cloud/vm/VirtualMachineGuru.java > index 2b9114d..b59584d 100644 > --- a/server/src/com/cloud/vm/VirtualMachineGuru.java > +++ b/server/src/com/cloud/vm/VirtualMachineGuru.java > @@ -69,8 +69,6 @@ public interface VirtualMachineGuru<T extends > VirtualMachine> { > > void finalizeExpunge(T vm); > > - boolean recreateNeeded(VirtualMachineProfile<T> profile, long hostId, > Commands cmds, ReservationContext context); > - > /** > * Returns the id parsed from the name. If it cannot parse the name, > * then return null. This method is used to determine if this is > @@ -82,7 +80,6 @@ public interface VirtualMachineGuru<T extends > VirtualMachine> { > Long convertToId(String vmName); > > /** > -<<<<<<< HEAD > * Prepare for a nic to be plugged into the network. > * @param network > * @param nic > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/481aae1e/server/src/com/cloud/vm/VirtualMachineManagerImpl.java > ---------------------------------------------------------------------- > diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java > b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java > index 6421015..605ce57 100755 > --- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java > +++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java > @@ -657,7 +657,6 @@ public class VirtualMachineManagerImpl implements > VirtualMachineManager, Listene > DataCenterDeployment originalPlan = plan; > > int retry = _retry; > - boolean recreate = false; > while (retry-- != 0) { // It's != so that it can match -1. > > if(reuseVolume){ > @@ -752,8 +751,7 @@ public class VirtualMachineManagerImpl implements > VirtualMachineManager, Listene > } > _networkMgr.prepare(vmProfile, dest, ctx); > if (vm.getHypervisorType() != HypervisorType.BareMetal) { > - _storageMgr.prepare(vmProfile, dest, recreate); > - recreate = false; > + _storageMgr.prepare(vmProfile, dest); > } > //since StorageMgr succeeded in volume creation, reuse > Volume for further tries until current cluster has capacity > if(!reuseVolume){ > @@ -813,11 +811,7 @@ public class VirtualMachineManagerImpl implements > VirtualMachineManager, Listene > _haMgr.scheduleStop(vm, destHostId, > WorkType.ForceStop); > throw new ExecutionException("Unable to stop > " + vm + " so we are unable to retry the start operation"); > } > - if (vmGuru.recreateNeeded(vmProfile, destHostId, > cmds, ctx)) { > - recreate = true; > - } else { > - throw new ExecutionException("Unable to start > " + vm + " due to error in finalizeStart, not retrying"); > - } > + throw new ExecutionException("Unable to start " > + vm + " due to error in finalizeStart, not retrying"); > } > } > s_logger.info("Unable to start VM on " + dest.getHost() > + " due to " + (startAnswer == null ? " no start answer" : > startAnswer.getDetails())); > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/481aae1e/server/test/com/cloud/vm/MockUserVmManagerImpl.java > ---------------------------------------------------------------------- > diff --git a/server/test/com/cloud/vm/MockUserVmManagerImpl.java > b/server/test/com/cloud/vm/MockUserVmManagerImpl.java > index e890262..efc6916 100644 > --- a/server/test/com/cloud/vm/MockUserVmManagerImpl.java > +++ b/server/test/com/cloud/vm/MockUserVmManagerImpl.java > @@ -292,14 +292,6 @@ public class MockUserVmManagerImpl implements > UserVmManager, UserVmService, Mana > return null; > } > > - > - @Override > - public boolean recreateNeeded(VirtualMachineProfile<UserVmVO> profile, > - long hostId, Commands cmds, ReservationContext > context) { > - // TODO Auto-generated method stub > - return false; > - } > - > @Override > public UserVm startVirtualMachine(DeployVMCmd cmd) throws > InsufficientCapacityException, ConcurrentOperationException, > ResourceUnavailableException { > // TODO Auto-generated method stub >