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 }