private AlarmSpec createAlarmSpec(AlarmAction action, AlarmExpression expression)
     {      
    AlarmSpec spec = new AlarmSpec();
    spec.action=action;
    spec.expression=expression;
    spec.name=cb.get_option("alarm");
    spec.description="Monitor VM state and send email if VM power's off";
    spec.enabled=true;      
    return spec;
 }
        private AlarmSpec createAlarmSpec(AlarmAction action, AlarmExpression expression)
        {
            AlarmSpec spec = new AlarmSpec();

            spec.action      = action;
            spec.expression  = expression;
            spec.name        = cb.get_option("alarm");
            spec.description = "Monitor VM state and send email if VM power's off";
            spec.enabled     = true;
            return(spec);
        }
        public static void Main(String[] args)
        {
            VMPowerStateAlarm obj = new VMPowerStateAlarm();

            cb = AppUtil.AppUtil.initialize("VMPowerStateAlarm"
                                            , VMPowerStateAlarm.constructOptions()
                                            , args);
            cb.connect();
            String apitype = cb.getConnection()._sic.about.apiType;

            if (apitype != "HostAgent")
            {
                obj.getVmMor(cb.get_option("vmname"));
                if (obj._virtualMachine != null)
                {
                    ObjectContent[] oc = cb.getServiceUtil().GetObjectProperties
                                             (cb.getConnection().PropCol, obj._virtualMachine,
                                             new String[] { "config" });
                    VirtualMachineConfigInfo vmConfig =
                        (VirtualMachineConfigInfo)oc[0].propSet[0].val;
                    if (!vmConfig.template)
                    {
                        StateAlarmExpression expression   = obj.createStateAlarmExpression();
                        MethodAction         methodAction = obj.createPowerOnAction();
                        AlarmAction          alarmAction
                            = (AlarmAction)obj.createAlarmTriggerAction(methodAction);
                        AlarmSpec alarmSpec = obj.createAlarmSpec(alarmAction, expression);
                        obj.createAlarm(alarmSpec);
                    }
                    else
                    {
                        Console.WriteLine("Virtual Machine name specified "
                                          + cb.get_option("vmname") + " is a template");
                    }
                }
                else
                {
                    Console.WriteLine("Virtual Machine " + cb.get_option("vmname")
                                      + " Not Found");
                }
            }
            else
            {
                Console.WriteLine("Alarm Creation is not supported on an ESX server.");
            }
            cb.disConnect();
            Console.WriteLine("Please enter to exit.");
            Console.Read();
        }
 private void createAlarm(AlarmSpec alarmSpec)  {   
    try {
       _alarmManager = cb.getConnection()._sic.alarmManager;
       ManagedObjectReference alarm 
          = cb.getConnection()._service.CreateAlarm(_alarmManager, 
                                                        _virtualMachine,
                                                        alarmSpec);
       Console.WriteLine("Successfully created Alarm: " + cb.get_option("alarm"));
        
        }
    catch(SoapException e) {
             if (e.Detail.FirstChild.LocalName.Equals("DuplicateNameFault"))
             {
                 Console.WriteLine(e.Message.ToString());
             }
             else if (e.Detail.FirstChild.LocalName.Equals("InvalidRequestFault"))
             {
                 Console.WriteLine("Alarm Creation is not supported on ESX server.");
             }    
             else if (e.Detail.FirstChild.LocalName.Equals("InvalidArgumentFault"))
             {
                 Console.WriteLine(e.Message.ToString());
             }
             else if (e.Detail.FirstChild.LocalName.Equals("InvalidNameFault"))
             {
                 Console.WriteLine(e.Message.ToString());
             }
             else if (e.Detail.FirstChild.LocalName.Equals("RuntimeFault"))
             {
                 Console.WriteLine(e.Message.ToString());
             }
             else {
                 throw e;
             }
               
    }
 }    
 private void createAlarm(AlarmSpec alarmSpec)
 {
     try {
         _alarmManager = cb.getConnection()._sic.alarmManager;
         ManagedObjectReference alarm
             = cb.getConnection()._service.CreateAlarm(_alarmManager,
                                                       _virtualMachine,
                                                       alarmSpec);
         Console.WriteLine("Successfully created Alarm: " + cb.get_option("alarm"));
     }
     catch (SoapException e) {
         if (e.Detail.FirstChild.LocalName.Equals("DuplicateNameFault"))
         {
             Console.WriteLine(e.Message.ToString());
         }
         else if (e.Detail.FirstChild.LocalName.Equals("InvalidRequestFault"))
         {
             Console.WriteLine("Alarm Creation is not supported on ESX server.");
         }
         else if (e.Detail.FirstChild.LocalName.Equals("InvalidArgumentFault"))
         {
             Console.WriteLine(e.Message.ToString());
         }
         else if (e.Detail.FirstChild.LocalName.Equals("InvalidNameFault"))
         {
             Console.WriteLine(e.Message.ToString());
         }
         else if (e.Detail.FirstChild.LocalName.Equals("RuntimeFault"))
         {
             Console.WriteLine(e.Message.ToString());
         }
         else
         {
             throw e;
         }
     }
 }