Ejemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AgentRunner"/> class.
        /// </summary>
        public AgentRunner()
        {
            Logger.Info("Starting agent");
            bool firstRun = true;

            if (File.Exists(configFile))
            {
                firstRun = false;
                dynamic root = JsonConvert.DeserializeObject(File.ReadAllText(configFile));
                Logger.Info("Configuring agent");
                Config.Setup(root, false);
            }
            else
            {
                Logger.Info("Configuring agent for first run");
                Config.Setup(new JObject(), true);
            }

            Thread executionThread = new Thread(new ThreadStart(delegate
            {
                if (firstRun)
                {
                    Bootstrap bootStrap = new Bootstrap();
                    bootStrap.Configure();
                }
                Monit.GetInstance().Start();
                Monit.GetInstance().StartServices();
                Handler.Start();
            }
                                                                ));

            executionThread.Name         = "Execution Thread";
            executionThread.IsBackground = true;
            executionThread.Start();
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Gets the instance.
 /// </summary>
 /// <returns></returns>
 public static Monit GetInstance(string jobDefinitionDirectory)
 {
     if (instance == null)
     {
         lock (locker)
         {
             if (!string.IsNullOrEmpty(jobDefinitionDirectory))
             {
                 jobDefDirectory = jobDefinitionDirectory;
             }
             if (instance == null)
             {
                 instance = new Monit();
             }
         }
     }
     return(instance);
 }
Ejemplo n.º 3
0
        ////def heartbeat_payload
        ////  job_state = Bosh::Agent::Monit.service_group_state
        ////  monit_vitals = Bosh::Agent::Monit.get_vitals

        ////  # TODO(?): move DiskUtil out of Message namespace
        ////  disk_usage = Bosh::Agent::Message::DiskUtil.get_usage

        ////  job_name = @state["job"] ? @state["job"]["name"] : nil
        ////  index = @state["index"]

        ////  vitals = monit_vitals.merge("disk" => disk_usage)

        ////  Yajl::Encoder.encode("job" => job_name,
        ////                       "index" => index,
        ////                       "job_state" => job_state,
        ////                       "vitals" => vitals,
        ////                       "ntp" => Bosh::Agent::NTP.offset)
        ////end
        private static string GetHearbeatPayload()
        {
            HeartbeatMessage heartBeatMessage = new HeartbeatMessage();

            Vitals systemVitals = Monit.GetInstance().GetVitals;

            heartBeatMessage.Job = Config.State.Job != null ? Config.State.Job.Name : null;
            dynamic stateHash = Config.State.ToHash();

            if (stateHash["index"] != null)
            {
                heartBeatMessage.Index = Convert.ToInt32(stateHash["index"].Value);
            }
            heartBeatMessage.JobState = Monit.GetInstance().GetServiceGroupState;
            heartBeatMessage.Vitals   = systemVitals;
            heartBeatMessage.NtpMsg   = Ntp.GetNtpOffset();

            string result = JsonConvert.SerializeObject(heartBeatMessage);

            return(result);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Gets the instance.
        /// </summary>
        /// <returns></returns>
        public static Monit GetInstance(string jobDefinitionDirectory)
        {
            if (instance == null)
            {
                lock (locker)
                {
                    if (!string.IsNullOrEmpty(jobDefinitionDirectory))
                    {
                        jobDefDirectory = jobDefinitionDirectory;
                    }
                    if (instance == null)
                    {
                        instance = new Monit();

                    }
                }
            }
            return instance;
        }