From e047dbe884f5288943d5ba2f8843a078d647d7ef Mon Sep 17 00:00:00 2001 From: gcontini <1121667+gcontini@users.noreply.github.com> Date: 周六, 25 4月 2020 21:01:33 +0800 Subject: [PATCH] first docker & vm detection --- src/library/os/execution_environment.hpp | 39 ++++++++++++--------------------------- 1 files changed, 12 insertions(+), 27 deletions(-) diff --git a/src/library/os/execution_environment.hpp b/src/library/os/execution_environment.hpp index 97172e4..f52f8db 100644 --- a/src/library/os/execution_environment.hpp +++ b/src/library/os/execution_environment.hpp @@ -9,6 +9,9 @@ #define SRC_LIBRARY_OS_VIRTUALIZATION_HPP_ #include <string> +#include <licensecc/datatypes.h> +#include "dmi_info.hpp" +#include "cpu_info.hpp" namespace license { namespace os { @@ -19,42 +22,24 @@ "VMware", "Microsoft Corporation", "Virtual Machine", "innotek GmbH", "PowerVM", "Bochs", "KVM"}; */ -typedef enum { NONE, CONTAINER, VM } VIRTUALIZATION; - -typedef enum { - PROV_UNKNOWN, - ON_PREMISE, - GOOGLE_CLOUD, - AZURE_CLOUD, - AWS, - /** - * "/sys/class/dmi/id/bios_vendor" SeaBIOS - * "/sys/class/dmi/id/sys_vendor" Alibaba Cloud - * modalias - * "dmi:bvnSeaBIOS:bvrrel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org:bd04/01/2014:svnAlibabaCloud:pnAlibabaCloudECS:pvrpc-i440fx-2.1:cvnAlibabaCloud:ct1:cvrpc-i440fx-2.1:" - */ - ALI_CLOUD -} CLOUD_PROVIDER; +enum CONTAINER_TYPE { NONE, DOCKER, LXC }; class ExecutionEnvironment { private: - std::string m_sys_vendor; - std::string m_bios_vendor; - std::string m_bios_description; + const CpuInfo m_cpu_info; + const DmiInfo m_dmi_info; + const CONTAINER_TYPE m_container_type; public: ExecutionEnvironment(); ~ExecutionEnvironment(){}; - VIRTUALIZATION getVirtualization() const; + LCC_API_VIRTUALIZATION_SUMMARY virtualization() const; bool is_cloud() const; - bool is_docker() const; + bool is_docker() const { return m_container_type != DOCKER; } // detect if it's a kind of container technology (docker or lxc) - bool is_container() const; - CLOUD_PROVIDER getCloudProvider() const; - const std::string& bios_vendor() const { return m_bios_vendor; }; - const std::string& sys_vendor() const { return m_sys_vendor; }; - const std::string& bios_description() const { return m_bios_description; }; - // VIRTUALIZATION_DETAIL getVirtualizationDetail() const; //as reported by the bios + bool is_container() const { return m_container_type != NONE; } + LCC_API_CLOUD_PROVIDER cloud_provider() const; + LCC_API_VIRTUALIZATION_DETAIL virtualization_detail() const; }; } // namespace os -- Gitblit v1.9.1