1 // DTM machine deletion tool 2 // Author: Michael Goldish <mgoldish@redhat.com> 3 // Based on sample code by Microsoft. 4 5 using System; 6 using System.Collections.Generic; 7 using System.Text.RegularExpressions; 8 using Microsoft.DistributedAutomation.DeviceSelection; 9 using Microsoft.DistributedAutomation.SqlDataStore; 10 11 namespace automate0 12 { 13 class AutoJob 14 { Main(string[] args)15 static int Main(string[] args) 16 { 17 if (args.Length != 2) 18 { 19 Console.WriteLine("Error: incorrect number of command line arguments"); 20 Console.WriteLine("Usage: {0} serverName clientName", 21 System.Environment.GetCommandLineArgs()[0]); 22 return 1; 23 } 24 string serverName = args[0]; 25 string clientName = args[1]; 26 27 try 28 { 29 // Initialize DeviceScript and connect to data store 30 Console.WriteLine("Initializing DeviceScript object"); 31 DeviceScript script = new DeviceScript(); 32 Console.WriteLine("Connecting to data store"); 33 script.ConnectToNamedDataStore(serverName); 34 35 // Find the client machine 36 IResourcePool rootPool = script.GetResourcePoolByName("$"); 37 Console.WriteLine("Looking for client machine '{0}'", clientName); 38 IResource machine = rootPool.GetResourceByName(clientName); 39 if (machine == null) 40 { 41 Console.WriteLine("Client machine not found"); 42 return 0; 43 } 44 Console.WriteLine("Client machine '{0}' found ({1}, {2})", 45 clientName, machine.OperatingSystem, machine.ProcessorArchitecture); 46 47 // Change the client machine's status to 'unsafe' 48 Console.WriteLine("Changing the client machine's status to 'Unsafe'"); 49 try 50 { 51 machine.ChangeResourceStatus("Unsafe"); 52 } 53 catch (Exception e) 54 { 55 Console.WriteLine("Warning: " + e.Message); 56 } 57 while (machine.Status != "Unsafe") 58 { 59 try 60 { 61 machine = rootPool.GetResourceByName(clientName); 62 } 63 catch (Exception e) 64 { 65 Console.WriteLine("Warning: " + e.Message); 66 } 67 System.Threading.Thread.Sleep(1000); 68 } 69 70 // Delete the client machine from datastore 71 Console.WriteLine("Deleting client machine from data store"); 72 script.DeleteResource(machine.Id); 73 return 0; 74 } 75 catch (Exception e) 76 { 77 Console.WriteLine("Error: " + e.Message); 78 return 1; 79 } 80 } 81 } 82 } 83