gcontini
2020-04-25 e047dbe884f5288943d5ba2f8843a078d647d7ef
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