Gabriele Contini
2020-03-08 de5002941fb2f65eda8f9603e4723f95e11fde97
src/library/os/execution_environment.hpp
@@ -8,10 +8,21 @@
#ifndef SRC_LIBRARY_OS_VIRTUALIZATION_HPP_
#define SRC_LIBRARY_OS_VIRTUALIZATION_HPP_
#include <string>
namespace license {
namespace os {
/*
 * windows bios sometimes reports vm names add execution environment detection from bios
const char *vmVendors[] = {
   "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,
@@ -25,15 +36,24 @@
   ALI_CLOUD
} CLOUD_PROVIDER;
typedef enum { BARE_TO_METAL, VMWARE, VIRTUALBOX, XEN, KVM } VIRTUALIZATION_DETAIL;
class ExecutionEnvironment {
private:
   std::string sys_vendor;
   std::string bios_vendor;
   std::string bios_description;
   // detect if it's a kind of container technology (docker or lxc)
   bool is_container() const;
public:
   ExecutionEnvironment(){};
   virtual ~ExecutionEnvironment(){};
   VIRTUALIZATION getVirtualization();
   ExecutionEnvironment();
   ~ExecutionEnvironment(){};
   VIRTUALIZATION getVirtualization() const;
   bool is_cloud() const;
   bool is_docker() const;
   CLOUD_PROVIDER getCloudProvider() const;
};
}  // namespace os
}  // namespace license
#endif /* SRC_LIBRARY_OS_VIRTUALIZATION_HPP_ */