private VirtualMachinePowerResult PowerOn(VirtualMachineConfig virtualMachineConfig)
        {
            VirtualMachinePowerResult powerResult = new VirtualMachinePowerResult();

            powerResult.Name = virtualMachineConfig.Name;
            try
            {
                if (virtualMachineConfig.Snapshots.Count != 1)
                {
                    throw new Exception(string.Format("Invalid number of snapshots in '{0}'",
                                                      virtualMachineConfig.Name));
                }

                VirtualMachinePowerDriver powerDriver = new VirtualMachinePowerDriver(
                    virtualMachineConfig,
                    virtualMachineConfig.Snapshots[0],
                    _simulationOnly);

                _virtualMachinePowerDrivers.Add(powerDriver);

                powerDriver.ConnectToHost();
                powerDriver.MapVirtualMachine(virtualMachineConfig.CopyMethod);
                powerDriver.PrepareSnapshot();
                powerResult.Success = true;
            }
            catch (Exception ex)
            {
                ConsoleOutput.WriteLine(ex);
                powerResult.LastError = ex.Message;
                powerResult.Success   = false;
            }

            return(powerResult);
        }
        /// <summary>
        /// Returns true if there's an overlap between two configurations.
        /// </summary>
        /// <param name="config">Virtual machine configuration.</param>
        /// <returns>True if there's an overlap.</returns>
        public bool Overlaps(VirtualMachineConfig config)
        {
            // same virtual machine
            if (Host == config.Host && File == config.File)
            {
                return(true);
            }

            // each snapshot in this vm overlapping the configuration
            foreach (SnapshotConfig snapshot in Snapshots)
            {
                if (snapshot.Overlaps(config))
                {
                    return(true);
                }
            }

            // each snapshot in the configuration overlapping this
            foreach (SnapshotConfig snapshot in config.Snapshots)
            {
                if (snapshot.Overlaps(this))
                {
                    return(true);
                }
            }

            return(false);
        }
        public VirtualMachinePowerDriver(
            VirtualMachineConfig virtualMachineConfig,
            SnapshotConfig snapshotConfig,
            bool simulationOnly)
        {
            _vmConfig       = virtualMachineConfig;
            _snapshotConfig = snapshotConfig;
            _simulationOnly = simulationOnly;

            ConsoleOutput.WriteLine("Loading '{0}'", _vmConfig.Name);
        }
        public VirtualMachinePowerDriver(
            VirtualMachineConfig virtualMachineConfig,
            SnapshotConfig snapshotConfig,
            bool simulationOnly)
        {
            _vmConfig = virtualMachineConfig;
            _snapshotConfig = snapshotConfig;
            _simulationOnly = simulationOnly;

            ConsoleOutput.WriteLine("Loading '{0}'", _vmConfig.Name);
        }
示例#5
0
        /// <summary>
        /// Returns true if there's an overlap between two configurations.
        /// </summary>
        /// <param name="config">Virtual machine configuration.</param>
        /// <returns>True if there's an overlap.</returns>
        public bool Overlaps(VirtualMachineConfig config)
        {
            foreach (VirtualMachineConfig virtualMachine in VirtualMachines)
            {
                // the virtual machine overlaps
                if (virtualMachine.Overlaps(config))
                {
                    return(true);
                }
            }

            return(false);
        }
示例#6
0
 public Instance(
     string logpath,
     bool simulationOnly,
     RemoteInstallConfig config,
     VMWareMappedVirtualMachine vm,
     VirtualMachineConfig vmConfig,
     InstallerConfig installerConfig,
     SnapshotConfig snapshotConfig)
 {
     _logpath = logpath;
     _simulationOnly = simulationOnly;
     _config = config;
     _vm = vm;
     _vmConfig = vmConfig;
     _installerConfig = installerConfig;
     _snapshotConfig = snapshotConfig;
 }
        public void NoOverlapTest()
        {
            VirtualMachineConfig config1 = new VirtualMachineConfig();
            config1.File = Guid.NewGuid().ToString();
            config1.Host = Guid.NewGuid().ToString();

            VirtualMachineConfig config2 = new VirtualMachineConfig();
            config2.File = Guid.NewGuid().ToString();
            config2.Host = Guid.NewGuid().ToString();

            // overlap self
            Assert.IsTrue(config1.Overlaps(config1));
            Assert.IsTrue(config2.Overlaps(config2));
            // overlap other
            Assert.IsFalse(config1.Overlaps(config2));
            Assert.IsFalse(config2.Overlaps(config1));
        }
示例#8
0
 public Instance(
     string logpath,
     bool simulationOnly,
     RemoteInstallConfig config,
     VMWareMappedVirtualMachine vm,
     VirtualMachineConfig vmConfig,
     InstallerConfig installerConfig,
     SnapshotConfig snapshotConfig)
 {
     _logpath         = logpath;
     _simulationOnly  = simulationOnly;
     _config          = config;
     _vm              = vm;
     _vmConfig        = vmConfig;
     _installerConfig = installerConfig;
     _snapshotConfig  = snapshotConfig;
 }
        public void OneChildNoOverlapTest()
        {
            VirtualMachineConfig config1 = new VirtualMachineConfig();
            config1.File = Guid.NewGuid().ToString();
            config1.Host = Guid.NewGuid().ToString();

            VirtualMachineConfig config2 = new VirtualMachineConfig();
            config2.File = Guid.NewGuid().ToString();
            config2.Host = Guid.NewGuid().ToString();

            SnapshotConfig snapshot1 = new SnapshotConfig();
            config2.Snapshots.Add(snapshot1);
            SnapshotsConfig snapshots1 = new SnapshotsConfig();
            snapshots1.Add(snapshot1);

            Assert.IsFalse(config1.Overlaps(config2));
            Assert.IsFalse(config2.Overlaps(config1));
        }
        public void TwoChildrenOverlapTest()
        {
            VirtualMachineConfig config1 = new VirtualMachineConfig();
            config1.File = Guid.NewGuid().ToString();
            config1.Host = Guid.NewGuid().ToString();

            VirtualMachineConfig config2 = new VirtualMachineConfig();
            config2.File = Guid.NewGuid().ToString();
            config2.Host = Guid.NewGuid().ToString();

            // a snapshot child with a virtual machine
            SnapshotConfig snapshot0 = new SnapshotConfig();
            SnapshotsConfig snapshots0 = new SnapshotsConfig();
            snapshots0.Add(snapshot0);
            VirtualMachineConfig config3 = new VirtualMachineConfig();
            config3.File = Guid.NewGuid().ToString();
            config3.Host = Guid.NewGuid().ToString();
            snapshot0.VirtualMachines.Add(config3);
            config2.Snapshots.Add(snapshot0);

            SnapshotConfig snapshot1 = new SnapshotConfig();
            SnapshotsConfig snapshots1 = new SnapshotsConfig();
            snapshots1.Add(snapshot1);
            config3.Snapshots.Add(snapshot1);

            Assert.IsFalse(config1.Overlaps(config2));
            Assert.IsFalse(config2.Overlaps(config1));

            snapshot1.VirtualMachines.Add(config1);
            Assert.IsTrue(config1.Overlaps(config2));
            Assert.IsTrue(config2.Overlaps(config1));
        }
        public void OneOverlapTest()
        {
            VirtualMachineConfig config1 = new VirtualMachineConfig();
            config1.File = Guid.NewGuid().ToString();
            config1.Host = Guid.NewGuid().ToString();

            VirtualMachineConfig config2 = new VirtualMachineConfig();
            config2.File = config1.File;
            config2.Host = config2.File;

            Assert.IsFalse(config1.Overlaps(config2));
            Assert.IsFalse(config2.Overlaps(config1));
        }
 public void Add(VirtualMachineConfig value)
 {
     BaseAdd(value);
 }
        /// <summary>
        /// Returns true if there's an overlap between two configurations.
        /// </summary>
        /// <param name="config">Virtual machine configuration.</param>
        /// <returns>True if there's an overlap.</returns>
        public bool Overlaps(VirtualMachineConfig config)
        {
            // same virtual machine
            if (Host == config.Host && File == config.File)
                return true;

            // each snapshot in this vm overlapping the configuration
            foreach (SnapshotConfig snapshot in Snapshots)
            {
                if (snapshot.Overlaps(config))
                    return true;
            }

            // each snapshot in the configuration overlapping this
            foreach (SnapshotConfig snapshot in config.Snapshots)
            {
                if (snapshot.Overlaps(this))
                    return true;
            }

            return false;
        }
示例#14
0
        /// <summary>
        /// Returns true if there's an overlap between two configurations.
        /// </summary>
        /// <param name="config">Virtual machine configuration.</param>
        /// <returns>True if there's an overlap.</returns>
        public bool Overlaps(VirtualMachineConfig config)
        {
            foreach (VirtualMachineConfig virtualMachine in VirtualMachines)
            {
                // the virtual machine overlaps
                if (virtualMachine.Overlaps(config))
                    return true;
            }

            return false;
        }
        private VirtualMachinePowerResult PowerOn(VirtualMachineConfig virtualMachineConfig)
        {
            VirtualMachinePowerResult powerResult = new VirtualMachinePowerResult();
            powerResult.Name = virtualMachineConfig.Name;
            try
            {
                if (virtualMachineConfig.Snapshots.Count != 1)
                {
                    throw new Exception(string.Format("Invalid number of snapshots in '{0}'",
                        virtualMachineConfig.Name));
                }

                VirtualMachinePowerDriver powerDriver = new VirtualMachinePowerDriver(
                    virtualMachineConfig,
                    virtualMachineConfig.Snapshots[0],
                    _simulationOnly);

                _virtualMachinePowerDrivers.Add(powerDriver);

                powerDriver.ConnectToHost();
                powerDriver.MapVirtualMachine(virtualMachineConfig.CopyMethod);
                powerDriver.PrepareSnapshot();
                powerResult.Success = true;
            }
            catch (Exception ex)
            {
                ConsoleOutput.WriteLine(ex);
                powerResult.LastError = ex.Message;
                powerResult.Success = false;
            }

            return powerResult;
        }