| | |
| | | #define SRC_LIBRARY_OS_VIRTUALIZATION_HPP_ |
| | | |
| | | #include <string> |
| | | #include <licensecc/datatypes.h> |
| | | #include "dmi_info.hpp" |
| | | #include "cpu_info.hpp" |
| | | |
| | | namespace license { |
| | | namespace os { |
| | |
| | | "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 |