// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft. All rights reserved.
namespace Microsoft.Samples.HyperV.Migration
{
using System;
using System.IO;
using System.Management;
using System.Diagnostics;
using Microsoft.Samples.HyperV.Common;
class Migration
{
///
/// The entry point.
///
/// Command line arguments.
static
void
Main(
string[] args
)
{
const string usageVmSimple = "Usage: MigrationSamples vm-simple ";
const string usageVmCompression = "Usage: MigrationSamples vm-compression ";
const string usageVmSmb = "Usage: MigrationSamples vm-smb ";
const string usageVmSimpleWithIp = "Usage: MigrationSamples vm-simple-with-ip ";
const string usageVmSimpleWithNewRoot = "Usage: MigrationSamples vm-simple-with-new-root ";
const string usageVmDetailed = "Usage: MigrationSamples vm-detailed ";
const string usageSetting = "Usage: MigrationSamples modifyservice ";
const string usageNetworks = "Usage: MigrationSamples modifynetworks ";
const string usageCompression = "Usage: MigrationSamples enablecompression ";
const string usageSmb = "Usage: MigrationSamples enablesmb ";
const string usageVmCompatibility = "Usage: MigrationSamples checkcompatibility []";
const string usageVmSimpleCheck = "Usage: MigrationSamples vm-simple-check ";
const string usageStorageSimple = "Usage: MigrationSamples storage-simple ";
const string usageStorageSimpleWithPool = "Usage: MigrationSamples storage-simple-with-pool ";
const string usageVmAndStorageStorageSimple = "Usage: MigrationSamples vm-and-storage-simple ";
const string usageVmAndStorageStorageNewLocation = "Usage: MigrationSamples vm-and-storage ";
const string usageCompareCompatibilityVectors = "Usage: MigrationSamples compare-compatibility-vectors ";
try
{
VmMigration vmMigration = new VmMigration();
MigrationSettings migrationSettings = new MigrationSettings();
StorageMigration storageMigration = new StorageMigration();
VmAndStorageMigration vmAndStorageMigration = new VmAndStorageMigration();
if (args == null || args.Length == 0)
{
Console.WriteLine(usageVmSimple);
Console.WriteLine(usageVmSmb);
Console.WriteLine(usageVmCompression);
Console.WriteLine(usageVmSimpleWithIp);
Console.WriteLine(usageVmSimpleWithNewRoot);
Console.WriteLine(usageVmDetailed);
Console.WriteLine(usageSetting);
Console.WriteLine(usageNetworks);
Console.WriteLine(usageCompression);
Console.WriteLine(usageSmb);
Console.WriteLine(usageVmCompatibility);
Console.WriteLine(usageStorageSimple);
Console.WriteLine(usageStorageSimpleWithPool);
Console.WriteLine(usageVmAndStorageStorageSimple);
Console.WriteLine(usageVmAndStorageStorageNewLocation);
Console.WriteLine(usageCompareCompatibilityVectors);
}
else if (args[0].Equals("vm-simple", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 4)
{
Console.WriteLine(usageVmSimple);
}
else
{
vmMigration.VmMigrationSimple(args[1], args[2], args[3]);
}
}
else if (args[0].Equals("vm-compression", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 4)
{
Console.WriteLine(usageVmCompression);
}
else
{
vmMigration.VmMigrationWithCompression(args[1], args[2], args[3]);
}
}
else if (args[0].Equals("vm-smb", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 4)
{
Console.WriteLine(usageVmSmb);
}
else
{
vmMigration.VmMigrationOverSmb(args[1], args[2], args[3]);
}
}
else if (args[0].Equals("vm-simple-with-ip", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 4)
{
Console.WriteLine(usageVmSimpleWithIp);
}
else
{
vmMigration.VmMigrationSimpleWithIpList(args[1], args[2], args[3]);
}
}
else if (args[0].Equals("vm-simple-with-new-root", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 4)
{
Console.WriteLine(usageVmSimpleWithNewRoot);
}
else
{
vmMigration.VmMigrationSimpleWithNewDataRoot(args[1], args[2], args[3]);
}
}
else if (args[0].Equals("vm-detailed", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 4)
{
Console.WriteLine(usageVmDetailed);
}
else
{
vmMigration.VmMigrationDetailed(args[1], args[2], args[3]);
}
}
else if (args[0].Equals("modifyservice", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 2)
{
Console.WriteLine(usageSetting);
}
else
{
migrationSettings.MigrationServiceSettings(args[1]);
}
}
else if (args[0].Equals("modifynetworks", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 2)
{
Console.WriteLine(usageNetworks);
}
else
{
migrationSettings.MigrationServiceNetworks(args[1]);
}
}
else if (args[0].Equals("enablecompression", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 2)
{
Console.WriteLine(usageCompression);
}
else
{
migrationSettings.EnableCompression(args[1]);
}
}
else if (args[0].Equals("enablesmb", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 2)
{
Console.WriteLine(usageSmb);
}
else
{
migrationSettings.EnableSmbTransport(args[1]);
}
}
else if (args[0].Equals("checkcompatibility", StringComparison.OrdinalIgnoreCase))
{
if (args.Length == 3)
{
vmMigration.CheckCompatibility(args[1], args[2]);
}
else if (args.Length == 4)
{
vmMigration.CheckCompatibility(args[1], args[2], args[3]);
}
else
{
Console.WriteLine(usageVmCompatibility);
}
}
else if (args[0].Equals("compare-compatibility-vectors", StringComparison.OrdinalIgnoreCase))
{
if (args.Length == 3)
{
vmMigration.CompareCompatibilityVectors(args[1], args[2]);
}
else
{
Console.WriteLine(usageCompareCompatibilityVectors);
}
}
else if (args[0].Equals("vm-simple-check", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 3)
{
Console.WriteLine(usageVmSimpleCheck);
}
else
{
vmMigration.VmMigrationSimpleCheck(args[1], args[2], args[3]);
}
}
else if (args[0].Equals("storage-simple", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 4)
{
Console.WriteLine(usageStorageSimple);
}
else
{
storageMigration.StorageMigrateSimple(args[1], args[2], args[3]);
}
}
else if (args[0].Equals("storage-simple-with-pool", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 5)
{
Console.WriteLine(usageStorageSimpleWithPool);
}
else
{
storageMigration.StorageMigrationSimpleWithPool(args[1], args[2], args[3], args[4]);
}
}
else if (args[0].Equals("vm-and-storage-simple", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 4)
{
Console.WriteLine(usageVmAndStorageStorageSimple);
}
else
{
vmAndStorageMigration.VmAndStorageMigrationSimple(args[1], args[2], args[3]);
}
}
else if (args[0].Equals("vm-and-storage", StringComparison.OrdinalIgnoreCase))
{
if (args.Length != 5)
{
Console.WriteLine(usageVmAndStorageStorageNewLocation);
}
else
{
vmAndStorageMigration.VmMigrationSimpleWithNewDataRoot(args[1], args[2], args[3], args[4]);
}
}
else
{
Console.WriteLine("Incorrect option");
}
Console.WriteLine("Please press ENTER to exit...");
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}
}
}
}