No preference, setting to false, so it has the same behavior as before.
> -----Original Message----- > From: David Nalley [mailto:da...@gnsa.us] > Sent: Monday, August 20, 2012 11:27 AM > To: cloudstack-dev@incubator.apache.org > Subject: Re: git commit: add recreate.systemvm.enabled parameter to > control recreating systemvm > > 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.ja > va > > --------------------------------------------------------------------- > - > > diff --git a/plugins/network-elements/elastic- > loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.ja > va b/plugins/network-elements/elastic- > loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.ja > va > > index 1c40516..1cd830c 100644 > > --- a/plugins/network-elements/elastic- > loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.ja > va > > +++ b/plugins/network-elements/elastic- > loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.ja > va > > @@ -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/AgentBasedCo > nsoleProxyManager.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/ConsoleProxy > ManagerImpl.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/VirtualNet > workApplianceManagerImpl.java > > --------------------------------------------------------------------- > - > > diff --git > a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImp > l.java > b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImp > l.java > > index 7cd9704..082c630 100755 > > --- > a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImp > l.java > > +++ > b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImp > l.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.ja > va > > --------------------------------------------------------------------- > - > > 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/StorageManagerImp > l.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/Seconda > ryStorageManagerImpl.java > > --------------------------------------------------------------------- > - > > diff --git > a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.ja > va > b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.ja > va > > index 95eb7f6..8662000 100755 > > --- > a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.ja > va > > +++ > b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.ja > va > > @@ -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.jav > a > > --------------------------------------------------------------------- > - > > 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/VirtualMachineManagerI > mpl.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 > >