github.com/Venafi/vcert/v5@v5.10.2/pkg/domain/cloudproviders.go (about) 1 package domain 2 3 import ( 4 "strings" 5 ) 6 7 type CloudProviderStatus int 8 9 const ( 10 CloudProviderStatusUnknown CloudProviderStatus = iota 11 CloudProviderStatusValidated 12 CloudProviderStatusNotValidated 13 14 CloudProviderStatusValidatedStr = "VALIDATED" 15 CloudProviderStatusNotValidatedStr = "NOT_VALIDATED" 16 CloudProviderStatusUnknownStr = "UNKNOWN" 17 ) 18 19 func (cps CloudProviderStatus) String() string { 20 switch cps { 21 case CloudProviderStatusValidated: 22 return CloudProviderStatusValidatedStr 23 case CloudProviderStatusNotValidated: 24 return CloudProviderStatusNotValidatedStr 25 case CloudProviderStatusUnknown: 26 fallthrough 27 default: 28 return CloudProviderStatusUnknownStr 29 } 30 } 31 32 func GetCloudProviderStatus(status string) CloudProviderStatus { 33 switch strings.ToUpper(status) { 34 case CloudProviderStatusValidatedStr: 35 return CloudProviderStatusValidated 36 case CloudProviderStatusNotValidatedStr: 37 return CloudProviderStatusNotValidated 38 default: 39 return CloudProviderStatusUnknown 40 } 41 } 42 43 type CloudProviderType int 44 45 const ( 46 CloudProviderTypeUnknown CloudProviderType = iota 47 CloudProviderTypeAWS 48 CloudProviderTypeAzure 49 CloudProviderTypeGCP 50 51 CloudProviderTypeAWSStr = "AWS" 52 CloudProviderTypeAzureStr = "AZURE" 53 CloudProviderTypeGCPStr = "GCP" 54 CloudProviderTypeUnknownStr = "UNKNOWN" 55 ) 56 57 func (cpt CloudProviderType) String() string { 58 switch cpt { 59 case CloudProviderTypeAWS: 60 return CloudProviderTypeAWSStr 61 case CloudProviderTypeAzure: 62 return CloudProviderTypeAzureStr 63 case CloudProviderTypeGCP: 64 return CloudProviderTypeGCPStr 65 case CloudProviderTypeUnknown: 66 fallthrough 67 default: 68 return CloudProviderTypeUnknownStr 69 } 70 } 71 72 type CloudProvider struct { 73 ID string 74 Name string 75 Type CloudProviderType 76 Status CloudProviderStatus 77 StatusDetails string 78 KeystoresCount int 79 } 80 81 type GetCloudProviderRequest struct { 82 Name string 83 Status CloudProviderStatus 84 Type CloudProviderType 85 } 86 87 type CloudKeystoreType int 88 89 const ( 90 CloudKeystoreTypeUnknown CloudKeystoreType = iota 91 CloudKeystoreTypeACM 92 CloudKeystoreTypeAKV 93 CloudKeystoreTypeGCM 94 95 CloudKeystoreTypeACMStr = "ACM" 96 CloudKeystoreTypeAKVStr = "AKV" 97 CloudKeystoreTypeGCMStr = "GCM" 98 CloudKeystoreTypeUnknownStr = "UNKNOWN" 99 ) 100 101 func (ckt CloudKeystoreType) String() string { 102 switch ckt { 103 case CloudKeystoreTypeACM: 104 return CloudKeystoreTypeACMStr 105 case CloudKeystoreTypeAKV: 106 return CloudKeystoreTypeAKVStr 107 case CloudKeystoreTypeGCM: 108 return CloudKeystoreTypeGCMStr 109 case CloudKeystoreTypeUnknown: 110 fallthrough 111 default: 112 return CloudKeystoreTypeUnknownStr 113 } 114 } 115 116 type CloudKeystore struct { 117 ID string 118 Name string 119 Type CloudKeystoreType 120 MachineIdentitiesCount int 121 } 122 123 type ProvisioningResponse struct { 124 WorkflowId string 125 WorkflowName string 126 } 127 128 type GetCloudKeystoreRequest struct { 129 CloudProviderID *string 130 CloudProviderName *string 131 CloudKeystoreID *string 132 CloudKeystoreName *string 133 } 134 135 type MachineIdentityStatus int 136 137 const ( 138 MachineIdentityStatusUnknown MachineIdentityStatus = iota 139 MachineIdentityStatusNew 140 MachineIdentityStatusPending 141 MachineIdentityStatusInstalled 142 MachineIdentityStatusDiscovered 143 MachineIdentityStatusValidated 144 MachineIdentityStatusMissing 145 MachineIdentityStatusFailed 146 147 MachineIdentityStatusUnknownStr = "UNKNOWN" 148 MachineIdentityStatusNewStr = "NEW" 149 MachineIdentityStatusPendingStr = "PENDING" 150 MachineIdentityStatusInstalledStr = "INSTALLED" 151 MachineIdentityStatusDiscoveredStr = "DISCOVERED" 152 MachineIdentityStatusValidatedStr = "VALIDATED" 153 MachineIdentityStatusMissingStr = "MISSING" 154 MachineIdentityStatusFailedStr = "FAILED" 155 ) 156 157 func (mis MachineIdentityStatus) String() string { 158 switch mis { 159 case MachineIdentityStatusNew: 160 return MachineIdentityStatusNewStr 161 case MachineIdentityStatusPending: 162 return MachineIdentityStatusPendingStr 163 case MachineIdentityStatusInstalled: 164 return MachineIdentityStatusInstalledStr 165 case MachineIdentityStatusDiscovered: 166 return MachineIdentityStatusDiscoveredStr 167 case MachineIdentityStatusValidated: 168 return MachineIdentityStatusValidatedStr 169 case MachineIdentityStatusMissing: 170 return MachineIdentityStatusMissingStr 171 case MachineIdentityStatusFailed: 172 return MachineIdentityStatusFailedStr 173 case MachineIdentityStatusUnknown: 174 fallthrough 175 default: 176 return MachineIdentityStatusUnknownStr 177 } 178 } 179 180 type CertificateCloudMetadata struct { 181 values map[string]interface{} 182 } 183 184 func NewCertificateCloudMetadata(values map[string]interface{}) CertificateCloudMetadata { 185 return CertificateCloudMetadata{ 186 values: values, 187 } 188 } 189 190 func (ccm *CertificateCloudMetadata) GetKeystoreType() CloudKeystoreType { 191 typ := ccm.GetValue("__typename") 192 if typ == nil { 193 return CloudKeystoreTypeUnknown 194 } 195 switch typ { 196 case "AWSCertificateMetadata": 197 return CloudKeystoreTypeACM 198 case "AzureCertificateMetadata": 199 return CloudKeystoreTypeAKV 200 case "GCPCertificateMetadata": 201 return CloudKeystoreTypeGCM 202 default: 203 return CloudKeystoreTypeUnknown 204 } 205 } 206 207 func (ccm *CertificateCloudMetadata) GetMetadata() map[string]interface{} { 208 return ccm.values 209 } 210 211 func (ccm *CertificateCloudMetadata) GetValue(key string) interface{} { 212 if key == "" { 213 return nil 214 } 215 if ccm.values == nil { 216 return nil 217 } 218 return ccm.values[key] 219 } 220 221 type CloudMachineIdentity struct { 222 ID string 223 CloudKeystoreID string 224 CloudKeystoreName string 225 CloudProviderID string 226 CloudProviderName string 227 CertificateID string 228 Metadata *CertificateCloudMetadata 229 Status MachineIdentityStatus 230 StatusDetails string 231 } 232 233 type GetCloudMachineIdentityRequest struct { 234 KeystoreID *string 235 MachineIdentityID *string 236 Fingerprints []string 237 NewlyDiscovered *bool 238 Metadata *string 239 }