go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers-sdk/v1/inventory/v8_inventory.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package inventory
     5  
     6  import (
     7  	"encoding/json"
     8  	"errors"
     9  	"strings"
    10  )
    11  
    12  // FIXME: this file can be deleted in v10
    13  
    14  const (
    15  	ProviderID_LOCAL                = "local"
    16  	ProviderID_WINRM                = "winrm"
    17  	ProviderID_SSH                  = "ssh"
    18  	ProviderID_DOCKER               = "docker"
    19  	ProviderID_DOCKER_IMAGE         = "docker+image"
    20  	ProviderID_DOCKER_CONTAINER     = "docker+container"
    21  	ProviderID_TAR                  = "tar"
    22  	ProviderID_K8S                  = "k8s"
    23  	ProviderID_GCR                  = "gcr" // TODO: this is not part of the transports, merge with cr
    24  	ProviderID_GCP                  = "gcp"
    25  	ProviderID_CONTAINER_REGISTRY   = "cr"
    26  	ProviderID_AZURE                = "az"
    27  	ProviderID_AWS                  = "aws"
    28  	ProviderID_AWS_SSM              = "aws+ssm"
    29  	ProviderID_VAGRANT              = "vagrant"
    30  	ProviderID_MOCK                 = "mock"
    31  	ProviderID_VSPHERE              = "vsphere"
    32  	ProviderID_VSPHERE_VM           = "vsphere+vm"
    33  	ProviderID_ARISTA               = "arista"
    34  	ProviderID_MS365                = "ms365"
    35  	ProviderID_IPMI                 = "ipmi"
    36  	ProviderID_FS                   = "fs"
    37  	ProviderID_EQUINIX              = "equinix"
    38  	ProviderID_GITHUB               = "github"
    39  	ProviderID_AWS_EC2_EBS          = "aws-ec2-ebs"
    40  	ProviderID_GITLAB               = "gitlab"
    41  	ProviderID_TERRAFORM            = "terraform"
    42  	ProviderID_HOST                 = "host"
    43  	ProviderID_TLS                  = "tls"
    44  	ProviderID_OKTA                 = "okta"
    45  	ProviderID_GOOGLE_WORKSPACE     = "googleworkspace"
    46  	ProviderID_SLACK                = "slack"
    47  	ProviderID_VCD                  = "vcd"
    48  	ProviderID_OCI                  = "oci"
    49  	ProviderID_OPCUA                = "opc-ua"
    50  	ProviderID_GCP_COMPUTE_INSTANCE = "gcp-compute-instance"
    51  
    52  	// NOTE: its not mapped directly to a transport, it is transformed into ssh
    53  	ProviderID_AWS_EC2_INSTANCE_CONNECT = "aws-ec2-connect"
    54  	ProviderID_AWS_EC2_SSM_SESSION      = "aws-ec2-ssm"
    55  	ProviderID_TERRAFORM_STATE          = "tfstate"
    56  )
    57  
    58  var ProviderType_idvalue = map[string]ProviderType{
    59  	ProviderID_LOCAL:                    ProviderType_LOCAL_OS,
    60  	ProviderID_SSH:                      ProviderType_SSH,
    61  	ProviderID_WINRM:                    ProviderType_WINRM,
    62  	ProviderID_DOCKER:                   ProviderType_DOCKER,
    63  	ProviderID_DOCKER_IMAGE:             ProviderType_DOCKER_ENGINE_IMAGE,
    64  	ProviderID_DOCKER_CONTAINER:         ProviderType_DOCKER_ENGINE_CONTAINER,
    65  	ProviderID_AWS_SSM:                  ProviderType_AWS_SSM_RUN_COMMAND,
    66  	ProviderID_CONTAINER_REGISTRY:       ProviderType_CONTAINER_REGISTRY,
    67  	ProviderID_TAR:                      ProviderType_TAR,
    68  	ProviderID_MOCK:                     ProviderType_MOCK,
    69  	ProviderID_VSPHERE:                  ProviderType_VSPHERE,
    70  	ProviderID_ARISTA:                   ProviderType_ARISTAEOS,
    71  	ProviderID_AWS:                      ProviderType_AWS,
    72  	ProviderID_GCP:                      ProviderType_GCP,
    73  	ProviderID_AZURE:                    ProviderType_AZURE,
    74  	ProviderID_MS365:                    ProviderType_MS365,
    75  	ProviderID_IPMI:                     ProviderType_IPMI,
    76  	ProviderID_VSPHERE_VM:               ProviderType_VSPHERE_VM,
    77  	ProviderID_FS:                       ProviderType_FS,
    78  	ProviderID_K8S:                      ProviderType_K8S,
    79  	ProviderID_EQUINIX:                  ProviderType_EQUINIX_METAL,
    80  	ProviderID_GITHUB:                   ProviderType_GITHUB,
    81  	ProviderID_VAGRANT:                  ProviderType_VAGRANT,
    82  	ProviderID_AWS_EC2_EBS:              ProviderType_AWS_EC2_EBS,
    83  	ProviderID_GITLAB:                   ProviderType_GITLAB,
    84  	ProviderID_TERRAFORM:                ProviderType_TERRAFORM,
    85  	ProviderID_HOST:                     ProviderType_HOST,
    86  	ProviderID_AWS_EC2_INSTANCE_CONNECT: ProviderType_SSH,
    87  	ProviderID_AWS_EC2_SSM_SESSION:      ProviderType_SSH,
    88  	ProviderID_OKTA:                     ProviderType_OKTA,
    89  	ProviderID_GOOGLE_WORKSPACE:         ProviderType_GOOGLE_WORKSPACE,
    90  	ProviderID_SLACK:                    ProviderType_SLACK,
    91  	ProviderID_VCD:                      ProviderType_VCD,
    92  	ProviderID_OCI:                      ProviderType_OCI,
    93  	ProviderID_OPCUA:                    ProviderType_OPCUA,
    94  	ProviderID_GCP_COMPUTE_INSTANCE:     ProviderType_GCP_COMPUTE_INSTANCE_SNAPSHOT,
    95  }
    96  
    97  // UnmarshalJSON parses either an int or a string representation of
    98  // CredentialType into the struct
    99  func (s *ProviderType) UnmarshalJSON(data []byte) error {
   100  	// check if we have a number
   101  	var code int32
   102  	err := json.Unmarshal(data, &code)
   103  	if err == nil {
   104  		*s = ProviderType(code)
   105  	} else {
   106  		var name string
   107  		err = json.Unmarshal(data, &name)
   108  		code, ok := ProviderType_idvalue[strings.TrimSpace(name)]
   109  		if !ok {
   110  			return errors.New("unknown backend value: " + string(data))
   111  		}
   112  		*s = code
   113  	}
   114  	return nil
   115  }
   116  
   117  func ConnBackendToType(backend ProviderType) string {
   118  	switch backend {
   119  	case ProviderType_LOCAL_OS:
   120  		return "local"
   121  	case ProviderType_DOCKER_ENGINE_IMAGE:
   122  		return "docker-image"
   123  	case ProviderType_DOCKER_ENGINE_CONTAINER:
   124  		return "docker-container"
   125  	case ProviderType_SSH:
   126  		return "ssh"
   127  	case ProviderType_WINRM:
   128  		return "winrm"
   129  	case ProviderType_AWS_SSM_RUN_COMMAND:
   130  		return "aws-ssm-run-command"
   131  	case ProviderType_CONTAINER_REGISTRY:
   132  		return "container-registry"
   133  	case ProviderType_TAR:
   134  		return "tar"
   135  	case ProviderType_MOCK:
   136  		return "mock"
   137  	case ProviderType_VSPHERE:
   138  		return "vsphere"
   139  	case ProviderType_ARISTAEOS:
   140  		return "arista-eos"
   141  	case ProviderType_AWS:
   142  		return "aws"
   143  	case ProviderType_GCP:
   144  		return "gcp"
   145  	case ProviderType_AZURE:
   146  		return "azure"
   147  	case ProviderType_MS365:
   148  		return "ms365"
   149  	case ProviderType_IPMI:
   150  		return "ipmi"
   151  	case ProviderType_VSPHERE_VM:
   152  		return "vsphere-vm"
   153  	case ProviderType_FS:
   154  		return "fs"
   155  	case ProviderType_K8S:
   156  		return "k8s"
   157  	case ProviderType_EQUINIX_METAL:
   158  		return "equinix-metal"
   159  	case ProviderType_DOCKER:
   160  		return "docker"
   161  	case ProviderType_GITHUB:
   162  		return "github"
   163  	case ProviderType_VAGRANT:
   164  		return "vagrant"
   165  	case ProviderType_AWS_EC2_EBS:
   166  		return "aws-ec2-ebs"
   167  	case ProviderType_GITLAB:
   168  		return "gitlab"
   169  	case ProviderType_TERRAFORM:
   170  		return "terraform"
   171  	case ProviderType_HOST:
   172  		return "host"
   173  	case ProviderType_UNKNOWN:
   174  		return "unknown"
   175  	case ProviderType_OKTA:
   176  		return "okta"
   177  	case ProviderType_GOOGLE_WORKSPACE:
   178  		return "google-workspace"
   179  	case ProviderType_SLACK:
   180  		return "slack"
   181  	case ProviderType_VCD:
   182  		return "vcd"
   183  	case ProviderType_OCI:
   184  		return "oci"
   185  	case ProviderType_OPCUA:
   186  		return "opcua"
   187  	case ProviderType_GCP_COMPUTE_INSTANCE_SNAPSHOT:
   188  		return "gcp-compute-instance-snapshot"
   189  	default:
   190  		return ""
   191  	}
   192  }