From ef7df8048d1067d3148287f27af9047743f1e2ae Mon Sep 17 00:00:00 2001 From: gcontini <1121667+gcontini@users.noreply.github.com> Date: 周日, 15 3月 2020 16:26:21 +0800 Subject: [PATCH] Merge branch 'feature/pc_identifiers' into develop issues #2 #3 #14 #49 --- src/library/os/execution_environment_common.cpp | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 59 insertions(+), 0 deletions(-) diff --git a/src/library/os/execution_environment_common.cpp b/src/library/os/execution_environment_common.cpp new file mode 100644 index 0000000..06f5c56 --- /dev/null +++ b/src/library/os/execution_environment_common.cpp @@ -0,0 +1,59 @@ +/* + * + * Created on: Feb 23, 2020 + * Author: GC + */ + +#include <stdio.h> +#include <string.h> +#include <unordered_map> +#include <array> + +#include "../base/base.h" +#include "cpu_info.hpp" +#include "execution_environment.hpp" + +namespace license { +namespace os { +using namespace std; + +VIRTUALIZATION ExecutionEnvironment::getVirtualization() const { + VIRTUALIZATION result; + CpuInfo cpuInfo; + bool isContainer = is_container(); + if (isContainer) { + result = CONTAINER; + } else if (cpuInfo.cpu_virtual() || is_cloud()) { + result = VM; + } else { + result = NONE; + } + return result; +} + +bool ExecutionEnvironment::is_cloud() const { + CLOUD_PROVIDER prov = getCloudProvider(); + return prov != ON_PREMISE && prov != PROV_UNKNOWN; +} + +// TODO test and azure +CLOUD_PROVIDER ExecutionEnvironment::getCloudProvider() const { + CLOUD_PROVIDER result = PROV_UNKNOWN; + if (m_bios_description.size() > 0 || m_bios_vendor.size() > 0 || m_sys_vendor.size() > 0) { + if (m_bios_vendor.find("SEABIOS") != string::npos || m_bios_description.find("ALIBABA") != string::npos || + m_sys_vendor.find("ALIBABA") != string::npos) { + result = ALI_CLOUD; + } else if (m_sys_vendor.find("GOOGLE") != string::npos || m_bios_description.find("GOOGLE") != string::npos) { + result = GOOGLE_CLOUD; + } else if (m_bios_vendor.find("AWS") != string::npos || m_bios_description.find("AMAZON") != string::npos || + m_sys_vendor.find("AWS") != string::npos) { + result = AWS; + } else if (m_bios_description.find("HP-COMPAQ") != string::npos || m_bios_description.find("ASUS") || + m_bios_description.find("DELL")) { + result = ON_PREMISE; + } + } + return result; +} +} // namespace os +} // namespace license -- Gitblit v1.9.1