public void Status()
        {
            string opId = "";

            if (nodes != null)
            {
                foreach (KeyValuePair <string, OperatorNode> pair in nodes)
                {
                    try
                    {
                        opId = pair.Key;
                        OperatorNode node = pair.Value;
                        PuppetMasterAsyncVoidDelegate remoteDel = new PuppetMasterAsyncVoidDelegate(node.Status);
                        AsyncCallback puppetCallback            = new AsyncCallback(PuppetMasterCommandsVoidAsyncCallBack);
                        remoteDel.BeginInvoke(puppetCallback, null);
                    }
                    catch (NullReferenceException)
                    {
                        Console.WriteLine($"Due to unexpected problems puppet master couldn't invoke Status on operator {opId}.");
                    }
                    catch (SocketException e)
                    {
                        Console.WriteLine($"Due to connection problems puppet master couldn't invoke Status on operator {opId}.");
                    }
                }
            }
        }
 public void Unfreeze(string opID, int index)
 {
     if (!String.IsNullOrEmpty(opID))
     {
         OperatorNode op = nodes[opID];
         if (index >= 0 && index < op.Replicas.Count)
         {
             IReplica rep = op.Replicas[index];
             rep.Unfreeze(index);
         }
     }
 }