Sha256: 4dd42e36484c6f27c078d7d968f493c899fd1e9d2595b6a6d21d141dd2e2063a

Contents?: true

Size: 1.44 KB

Versions: 16

Compression:

Stored size: 1.44 KB

Contents

#include <internal/facts/aix/serial_number_resolver.hpp>
#include <internal/util/aix/odm.hpp>
#include <facter/facts/collection.hpp>
#include <facter/facts/fact.hpp>
#include <facter/facts/scalar_value.hpp>
#include <leatherman/logging/logging.hpp>
#include <leatherman/util/regex.hpp>
#include <boost/regex.hpp>

#include <sys/cfgodm.h>

using namespace std;
using namespace facter::util::aix;
using namespace leatherman::util;

namespace facter { namespace facts { namespace aix {

    serial_number_resolver::serial_number_resolver() :
        resolver(
            "AIX serial number",
            {
                fact::serial_number,
            })
    {
    }

    void serial_number_resolver::resolve(collection& facts) {
        auto cu_at_query = odm_class<CuAt>::open("CuAt").query("name=sys0 and attribute=systemid");
        auto result = *cu_at_query.begin();

        // the ODM returns a string of the form "IBM,XXSERIAL#". We
        // need to strip the "IBM,XX" from the start ofthis, and keep
        // only the 7 actual serial number bytes.
        const auto regex = boost::regex("^IBM,\\d\\d(.+)");
        string serial;
        if (re_search(string(result.value), regex, &serial)) {
            facts.add(fact::serial_number, make_value<string_value>(move(serial), true));
        } else {
            LOG_DEBUG("Could not retrieve serial number: sys0 systemid did not match the expected format");
        }
    }

}}}  // namespace facter::facts::aix

Version data entries

16 entries across 16 versions & 2 rubygems

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