Sha256: 7ebca7f6641a3b3edde698a72b03f8440387211a8a65737c3773ffda850bbab3

Contents?: true

Size: 1.98 KB

Versions: 16

Compression:

Stored size: 1.98 KB

Contents

#include <internal/facts/resolvers/uptime_resolver.hpp>
#include <facter/facts/collection.hpp>
#include <facter/facts/fact.hpp>
#include <facter/facts/scalar_value.hpp>
#include <facter/facts/map_value.hpp>
#include <boost/format.hpp>

using namespace std;

namespace facter { namespace facts { namespace resolvers {

    uptime_resolver::uptime_resolver() :
        resolver(
            "uptime",
            {
                fact::system_uptime,
                fact::uptime,
                fact::uptime_days,
                fact::uptime_hours,
                fact::uptime_seconds
            })
    {
    }

    void uptime_resolver::resolve(collection& facts)
    {
        auto seconds = get_uptime();
        if (seconds < 0) {
            return;
        }

        auto minutes = (seconds / 60) % 60;
        auto hours = seconds / (60 * 60);
        auto days = seconds / (60 * 60 * 24);
        string uptime;

        switch (days) {
            case 0:
                uptime = (boost::format("%d:%02d hours") % hours % minutes).str();
                break;
            case 1:
                uptime = "1 day";
                break;
            default:
                uptime = (boost::format("%d days") % days).str();
                break;
        }

        // Add hidden facts
        facts.add(fact::uptime_seconds, make_value<integer_value>(seconds, true));
        facts.add(fact::uptime_hours, make_value<integer_value>(hours, true));
        facts.add(fact::uptime_days, make_value<integer_value>(days, true));
        facts.add(fact::uptime, make_value<string_value>(uptime, true));

        auto value = make_value<map_value>();
        value->add("seconds", make_value<integer_value>(seconds));
        value->add("hours", make_value<integer_value>(hours));
        value->add("days", make_value<integer_value>(days));
        value->add("uptime", make_value<string_value>(move(uptime)));
        facts.add(fact::system_uptime, move(value));
    }

}}}  // namespace facter::facts::resolvers

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
facter-3.12.2.cfacter.20181217 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.12.1.cfacter.20181031 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.11.6.cfacter.20181031 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.12.1.cfacter.20181023 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.11.5.cfacter.20181022 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.12.0.cfacter.20181004 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.12.0.cfacter.20181001 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.12.0.cfacter.20180918 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.11.4.cfacter.20180821 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.11.3.cfacter.20180716 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.11.2.cfacter.20180612 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.9.6.cfacter.20180612 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.11.2.cfacter.20180606 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.9.6.cfacter.20180606 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
facter-3.11.0.cfacter.20180319 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc
cfacter-3.11.0.rc.20180314 ext/facter/facter/lib/src/facts/resolvers/uptime_resolver.cc