• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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