From d2ab104865734d53692a7a81026c3aa153f383ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Westerb=C3=B8?= Date: Thu, 22 Feb 2024 17:19:51 +0100 Subject: [PATCH] Adding support for kind Adjusting providertypes to lowercase --- pkg/apicontracts/apicontracts.go | 39 +++++++------- .../resourcedef_internalclusterorder.go | 53 ++++++++++++++----- pkg/messagebuscontracts/queues.go | 1 + pkg/models/providers/provider_consts.go | 10 ++-- 4 files changed, 67 insertions(+), 36 deletions(-) diff --git a/pkg/apicontracts/apicontracts.go b/pkg/apicontracts/apicontracts.go index ba84c1de..5d02e9df 100644 --- a/pkg/apicontracts/apicontracts.go +++ b/pkg/apicontracts/apicontracts.go @@ -4,6 +4,7 @@ import ( "time" identitymodels "github.com/NorskHelsenett/ror/pkg/models/identity" + "github.com/NorskHelsenett/ror/pkg/models/providers" "go.mongodb.org/mongo-driver/bson/primitive" ) @@ -66,21 +67,21 @@ type ClusterMetadataModel struct { } type AgentApiKeyModel struct { - Identifier string `json:"identifier" validate:"required,min=1,ne=' ',max=100"` - DatacenterName string `json:"datacenterName" validate:"required,min=1,ne=' '"` - WorkspaceName string `json:"workspaceName" validate:"required,min=1,ne=' '"` - Provider string `json:"provider" validate:"required,min=1,ne=' ',max=20"` - Type ApiKeyType `json:"type" validate:"required,min=1,ne='',eq=Cluster"` + Identifier string `json:"identifier" validate:"required,min=1,ne=' ',max=100"` + DatacenterName string `json:"datacenterName" validate:"required,min=1,ne=' '"` + WorkspaceName string `json:"workspaceName" validate:"required,min=1,ne=' '"` + Provider providers.ProviderType `json:"provider" validate:"required,min=1,ne=' ',max=20"` + Type ApiKeyType `json:"type" validate:"required,min=1,ne='',eq=Cluster"` } /// Domain object type Datacenter struct { - ID string `json:"id" bson:"_id,omitempty"` - Name string `json:"name"` - Provider string `json:"provider"` - Location DatacenterLocation `json:"location"` - APIEndpoint string `json:"apiEndpoint"` + ID string `json:"id" bson:"_id,omitempty"` + Name string `json:"name"` + Provider providers.ProviderType `json:"provider"` + Location DatacenterLocation `json:"location"` + APIEndpoint string `json:"apiEndpoint"` } type DatacenterLocation struct { @@ -375,15 +376,15 @@ type Billing struct { } type Price struct { - ID string `json:"id" bson:"_id,omitempty"` - Provider string `json:"provider"` - MachineClass string `json:"machineClass"` - Cpu int `json:"cpu"` - Memory int64 `json:"memory"` - MemoryBytes int64 `json:"memoryBytes"` - Price int `json:"price"` - From time.Time `json:"from"` - To time.Time `json:"to,omitempty"` + ID string `json:"id" bson:"_id,omitempty"` + Provider providers.ProviderType `json:"provider"` + MachineClass string `json:"machineClass"` + Cpu int `json:"cpu"` + Memory int64 `json:"memory"` + MemoryBytes int64 `json:"memoryBytes"` + Price int `json:"price"` + From time.Time `json:"from"` + To time.Time `json:"to,omitempty"` } type PaginatedResult[T any] struct { diff --git a/pkg/apicontracts/apiresourcecontracts/resourcedef_internalclusterorder.go b/pkg/apicontracts/apiresourcecontracts/resourcedef_internalclusterorder.go index 31fe8815..3c84fb23 100644 --- a/pkg/apicontracts/apiresourcecontracts/resourcedef_internalclusterorder.go +++ b/pkg/apicontracts/apiresourcecontracts/resourcedef_internalclusterorder.go @@ -13,39 +13,46 @@ type ResourceClusterOrder struct { } type ResourceClusterOrderSpec struct { - Provider providers.ProviderType `json:"provider" validate:"required,min=1,ne=' '"` - ClusterName string `json:"clusterName" validate:"required,min=1,ne=' '"` - ProjectId string `json:"projectId" validate:"required,min=1,ne=' '"` - OrderBy string `json:"orderBy" validate:"required,min=1,ne=' '"` - - Environment EnvironmentType `json:"environment" validate:"required,min=1,max=4"` - Criticality CriticalityLevel `json:"criticality" validate:"required,min=1,max=4"` - Sensitivity SensitivityLevel `json:"sensitivity" validate:"required,min=1,max=4"` - HighAvailability bool `json:"highAvailability" validate:"boolean"` - NodePools []ResourceClusterOrderSpecNodePool `json:"nodePools" validate:"required,min=1,dive,required"` + OrderType ResourceActionType `json:"orderType" validate:"required,min=1,ne=' '"` + Provider providers.ProviderType `json:"provider,omitempty"` + Cluster string `json:"cluster" validate:"required,min=1,ne=' '"` + ProjectId string `json:"projectId,omitempty"` + OrderBy string `json:"orderBy" validate:"required,min=1,ne=' '"` + + Environment EnvironmentType `json:"environment,omitempty" validate:"min=1,max=4"` + Criticality CriticalityLevel `json:"criticality,omitempty" validate:"min=1,max=4"` + Sensitivity SensitivityLevel `json:"sensitivity,omitempty" validate:"min=1,max=4"` + HighAvailability bool `json:"highAvailability,omitempty" validate:"boolean"` + NodePools []ResourceClusterOrderSpecNodePool `json:"nodePools,omitempty" validate:"min=1,dive,required"` ServiceTags map[string]string `json:"serviceTags,omitempty"` ProviderConfig map[string]interface{} `json:"providerConfig,omitempty"` - OwnerGroup string `json:"ownerGroup" validate:"required,min=1,ne=' '"` + OwnerGroup string `json:"ownerGroup,omitempty" validate:"min=1,ne=' '"` + K8sVersion string `json:"k8sVersion,omitempty"` } type ResourceProviderConfigTanzu struct { DatacenterId string `json:"datacenterId" validate:"required,min=1,ne=' '"` NamespaceId string `json:"namespaceId" validate:"required,min=1,ne=' '"` } + type ResourceProviderConfigAks struct { Region string `json:"region" validate:"required,min=1,ne=' '"` Subscription string `json:"subscription" validate:"required,min=1,ne=' '"` ResourceGroup string `json:"resourceGroup" validate:"required,min=1,ne=' '"` } +type ResourceProviderConfigKind struct { +} + type ResourceClusterOrderSpecNodePool struct { + Name string `json:"name" validate:"required,min=1,ne=' '"` MachineClass string `json:"machineClass" validate:"required,min=1,ne=' '"` Count int `json:"count" validate:"required,min=1"` } type ResourceClusterOrderStatus struct { Status string `json:"status"` - Phase string `json:"phase"` + Phase ResourceClusterOrderStatusPhase `json:"phase"` Conditions []ResourceKubernetesClusterStatusCondition `json:"conditions"` CreatedTime string `json:"createdTime"` UpdatedTime string `json:"updatedTime"` @@ -60,6 +67,28 @@ type ResourceClusterOrderCondition struct { Message string `json:"message"` } +type ResourceClusterOrderStatusPhase string + +const ( + ResourceClusterOrderStatusPhasePending ResourceClusterOrderStatusPhase = "Pending" + + ResourceClusterOrderStatusPhaseCreating ResourceClusterOrderStatusPhase = "Creating" + ResourceClusterOrderStatusPhaseUpdating ResourceClusterOrderStatusPhase = "Updating" + ResourceClusterOrderStatusPhaseDeleting ResourceClusterOrderStatusPhase = "Deleting" + + ResourceClusterOrderStatusPhaseCompleted ResourceClusterOrderStatusPhase = "Completed" + ResourceClusterOrderStatusPhaseFailed ResourceClusterOrderStatusPhase = "Failed" +) + +type ResourceActionType string + +const ( + ResourceActionTypeUnknown ResourceActionType = "" + ResourceActionTypeCreate ResourceActionType = "Create" + ResourceActionTypeUpdate ResourceActionType = "Update" + ResourceActionTypeDelete ResourceActionType = "Delete" +) + type EnvironmentType int const ( diff --git a/pkg/messagebuscontracts/queues.go b/pkg/messagebuscontracts/queues.go index 79e47ec2..29e3bae7 100644 --- a/pkg/messagebuscontracts/queues.go +++ b/pkg/messagebuscontracts/queues.go @@ -25,4 +25,5 @@ const ( ExchangeRorResources = "ror.resources" ExchangeRorEvents = "ror.events" ExchangeTanzu = "tanzu" + ExchangeKind = "kind" ) diff --git a/pkg/models/providers/provider_consts.go b/pkg/models/providers/provider_consts.go index 3dc8548b..2c655658 100644 --- a/pkg/models/providers/provider_consts.go +++ b/pkg/models/providers/provider_consts.go @@ -3,9 +3,9 @@ package providers type ProviderType string const ( - ProviderTypeUnknown ProviderType = "Unknown" - ProviderTypeTanzu ProviderType = "Tanzu" - ProviderTypeAks ProviderType = "AKS" - ProviderTypeK3d ProviderType = "K3D" - ProviderTypeKind ProviderType = "Kind" + ProviderTypeUnknown ProviderType = "unknown" + ProviderTypeTanzu ProviderType = "tanzu" + ProviderTypeAks ProviderType = "aks" + ProviderTypeK3d ProviderType = "k3d" + ProviderTypeKind ProviderType = "kind" )