// 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.Replica
{
using System;
using System.Globalization;
using System.Reflection;
class Program
{
///
/// Entry point of the program.
///
/// Command line arguments.
static void
Main(
string[] args)
{
if (args.Length == 2)
{
if (string.Equals(args[0], "ModifyReplicationService",
StringComparison.OrdinalIgnoreCase))
{
bool enbleReplicationService = !(Int16.Parse(args[1], CultureInfo.CurrentCulture) == 0);
ModifyReplicationServiceSettings.ModifyServiceSettings(enbleReplicationService);
}
else if (string.Equals(args[0], "StartReplication", StringComparison.OrdinalIgnoreCase))
{
ManageReplication.StartReplication(args[1]);
}
else if (string.Equals(args[0], "TestReplicaSystem", StringComparison.OrdinalIgnoreCase))
{
ManageReplication.TestReplicaSystem(args[1]);
}
else if (string.Equals(args[0], "InitiateFailover", StringComparison.OrdinalIgnoreCase))
{
ManageReplication.InitiateFailover(args[1]);
}
else if (string.Equals(args[0], "ReverseReplicationRelationship",
StringComparison.OrdinalIgnoreCase))
{
ManageReplication.ReverseReplicationRelationship(args[1]);
}
else if (string.Equals(args[0], "RemoveAuthorizationEntry",
StringComparison.OrdinalIgnoreCase))
{
ModifyReplicationServiceSettings.RemoveAuthorizationEntry(args[1]);
}
else
{
ShowUsage();
}
}
else if (args.Length == 3)
{
if (string.Equals(args[0], "SetAuthorizationEntry", StringComparison.OrdinalIgnoreCase))
{
ModifyReplicationServiceSettings.SetAuthorizationEntry(args[1], args[2]);
}
else if (string.Equals(args[0], "CreateReplicationRelationship",
StringComparison.OrdinalIgnoreCase))
{
ManageReplication.CreateReplicationRelationship(args[1], args[2]);
}
else if (string.Equals(args[0], "RemoveReplicationRelationshipEx",
StringComparison.OrdinalIgnoreCase))
{
UInt16 relationshipType = UInt16.Parse(args[2], CultureInfo.CurrentCulture);
ManageReplication.RemoveReplicationRelationshipEx(args[1], relationshipType);
}
else if (string.Equals(args[0], "GetReplicationRelationshipInfo",
StringComparison.OrdinalIgnoreCase))
{
UInt16 relationshipType = UInt16.Parse(args[2], CultureInfo.CurrentCulture);
ManageReplication.GetReplicationRelationshipInfo(args[1], relationshipType);
}
else
{
ShowUsage();
}
}
else if (args.Length == 4)
{
if (string.Equals(args[0], "AddAuthorizationEntry", StringComparison.OrdinalIgnoreCase))
{
ModifyReplicationServiceSettings.AddAuthorizationEntry(args[1], args[2], args[3]);
}
else if (string.Equals(args[0], "RequestReplicationStateChangeEx",
StringComparison.OrdinalIgnoreCase))
{
UInt16 requestedState = UInt16.Parse(args[2], CultureInfo.CurrentCulture);
UInt16 relationshipType = UInt16.Parse(args[3], CultureInfo.CurrentCulture);
ManageReplication.RequestReplicationStateChangeEx(args[1], requestedState, relationshipType);
}
else
{
ShowUsage();
}
}
else
{
ShowUsage();
}
}
///
/// Displays the command line usage for the program.
///
static void
ShowUsage()
{
string moduleName = Assembly.GetExecutingAssembly().GetModules()[0].Name;
Console.WriteLine("Usage:\t{0} \n", moduleName);
Console.WriteLine("Supported SampleNames and Arguments:\n");
Console.WriteLine(" ModifyReplicationService ");
Console.WriteLine(" AddAuthorizationEntry ");
Console.WriteLine(" RemoveAuthorizationEntry ");
Console.WriteLine(" CreateReplicationRelationship ");
Console.WriteLine(" RemoveReplicationRelationshipEx ");
Console.WriteLine(" StartReplication ");
Console.WriteLine(" TestReplicaSystem ");
Console.WriteLine(" RequestReplicationStateChangeEx ");
Console.WriteLine(" InitiateFailover ");
Console.WriteLine(" SetAuthorizationEntry ");
Console.WriteLine(" ReverseReplicationRelationship ");
Console.WriteLine(" GetReplicationRelationshipInfo \n");
Console.WriteLine("Examples:\n");
Console.WriteLine(" {0} ModifyReplicationService 1", moduleName);
Console.WriteLine(" {0} AddAuthorizationEntry *.com AnyRequestIsAllowed C:\\ReplicaStorage", moduleName);
Console.WriteLine(" {0} RemoveAuthorizationEntry *.com", moduleName);
Console.WriteLine(" {0} CreateReplicationRelationship WIN8VM replica.contosa.com", moduleName);
Console.WriteLine(" {0} RemoveReplicationRelationshipEx WIN8VM 0", moduleName);
Console.WriteLine(" {0} StartReplication WIN8VM", moduleName);
Console.WriteLine(" {0} TestReplicaSystem WIN8VM", moduleName);
Console.WriteLine(" {0} RequestReplicationStateChangeEx WIN8VM 7 0", moduleName);
Console.WriteLine(" {0} InitiateFailover WIN8VM", moduleName);
Console.WriteLine(" {0} SetAuthorizationEntry WIN8VM replica.contosa.com", moduleName);
Console.WriteLine(" {0} ReverseReplicationRelationship WIN8VM", moduleName);
Console.WriteLine(" {0} GetReplicationRelationshipInfo WIN8VM 0\n", moduleName);
}
}
}