diff --git a/api/v1alpha1/openapi.yaml b/api/v1alpha1/openapi.yaml index b4a26029e..bf5a36d71 100644 --- a/api/v1alpha1/openapi.yaml +++ b/api/v1alpha1/openapi.yaml @@ -2916,12 +2916,12 @@ components: type: integer description: CPU cores per worker node x-oapi-codegen-extra-tags: - validate: "required,min=2,max=200" + validate: "required,min=2,max=384" workerNodeMemory: type: integer description: Memory (GB) per worker node x-oapi-codegen-extra-tags: - validate: "required,min=4,max=512" + validate: "required,min=4,max=4096" workerNodeThreads: type: integer minimum: 2 @@ -2936,12 +2936,12 @@ components: type: integer description: "CPU cores per control plane node (default: 6)" x-oapi-codegen-extra-tags: - validate: "omitempty,min=2,max=200" + validate: "omitempty,min=2,max=384" controlPlaneMemory: type: integer description: "Memory in GB per control plane node (default: 16)" x-oapi-codegen-extra-tags: - validate: "omitempty,min=4,max=512" + validate: "omitempty,min=4,max=4096" controlPlaneNodeCount: type: integer enum: [1, 3] diff --git a/api/v1alpha1/spec.gen.go b/api/v1alpha1/spec.gen.go index 0817c3b26..e5bbddfec 100644 --- a/api/v1alpha1/spec.gen.go +++ b/api/v1alpha1/spec.gen.go @@ -18,161 +18,161 @@ import ( // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/v1alpha1/types.gen.go b/api/v1alpha1/types.gen.go index 8aac20442..8acddae7f 100644 --- a/api/v1alpha1/types.gen.go +++ b/api/v1alpha1/types.gen.go @@ -196,10 +196,10 @@ type ClusterRequirementsRequest struct { ClusterId string `json:"clusterId" validate:"required"` // ControlPlaneCPU CPU cores per control plane node (default: 6) - ControlPlaneCPU *int `json:"controlPlaneCPU,omitempty" validate:"omitempty,min=2,max=200"` + ControlPlaneCPU *int `json:"controlPlaneCPU,omitempty" validate:"omitempty,min=2,max=384"` // ControlPlaneMemory Memory in GB per control plane node (default: 16) - ControlPlaneMemory *int `json:"controlPlaneMemory,omitempty" validate:"omitempty,min=4,max=512"` + ControlPlaneMemory *int `json:"controlPlaneMemory,omitempty" validate:"omitempty,min=4,max=4096"` // ControlPlaneNodeCount Number of control plane nodes: 1 or 3 (default: 3) ControlPlaneNodeCount *ClusterRequirementsRequestControlPlaneNodeCount `json:"controlPlaneNodeCount,omitempty" validate:"omitempty,oneof=1 3"` @@ -217,10 +217,10 @@ type ClusterRequirementsRequest struct { MemoryOverCommitRatio ClusterRequirementsRequestMemoryOverCommitRatio `json:"memoryOverCommitRatio" validate:"required"` // WorkerNodeCPU CPU cores per worker node - WorkerNodeCPU int `json:"workerNodeCPU" validate:"required,min=2,max=200"` + WorkerNodeCPU int `json:"workerNodeCPU" validate:"required,min=2,max=384"` // WorkerNodeMemory Memory (GB) per worker node - WorkerNodeMemory int `json:"workerNodeMemory" validate:"required,min=4,max=512"` + WorkerNodeMemory int `json:"workerNodeMemory" validate:"required,min=4,max=4096"` // WorkerNodeThreads Number of CPU threads per worker node (for SMT calculation). If not provided, assumes no SMT (threads = cores). Must be >= workerNodeCPU WorkerNodeThreads *int `json:"workerNodeThreads,omitempty" validate:"omitempty,min=2,max=2000"` diff --git a/internal/service/sizer.go b/internal/service/sizer.go index cd9a523ca..5226035e8 100644 --- a/internal/service/sizer.go +++ b/internal/service/sizer.go @@ -57,9 +57,9 @@ const ( MinFallbackNodeMemory = 4 // MaxRecommendedNodeCPU is the maximum recommended CPU for nodes - MaxRecommendedNodeCPU = 200 + MaxRecommendedNodeCPU = 384 // MaxRecommendedNodeMemory is the maximum recommended memory (GB) for nodes - MaxRecommendedNodeMemory = 512 + MaxRecommendedNodeMemory = 4096 // MinFailoverNodes is the minimum number of failover nodes MinFailoverNodes = 2 diff --git a/internal/service/sizer_test.go b/internal/service/sizer_test.go index 5a22c67e2..198eb6ab8 100644 --- a/internal/service/sizer_test.go +++ b/internal/service/sizer_test.go @@ -712,12 +712,12 @@ var _ = Describe("sizer service", func() { request.ControlPlaneSchedulable = util.BoolPtr(true) request.ControlPlaneCPU = util.IntPtr(100) request.ControlPlaneMemory = util.IntPtr(200) - // Create inventory that requires > 200 CPU (max) on a single node - // With 1:4 over-commit: 1000 CPU / 4 = 250 CPU actual - // With 0.8 capacity: 250 / 0.8 = 312.5 CPU needed (exceeds max of 200) - assessment := createTestAssessment(assessmentID, clusterID, 10, 1000, 2000) + // Create inventory that requires > 384 CPU (max) on a single node + // With 1:4 over-commit: 1230 CPU / 4 = 307.5 CPU actual + // With 0.8 capacity: 307.5 / 0.8 = 384.375 CPU needed (exceeds max of 384) + assessment := createTestAssessment(assessmentID, clusterID, 10, 1230, 2000) mockStore.assessments[assessmentID] = assessment - testServer = createTestSizerServer(createTestSizerResponse(2, 1, 1, 1000, 2000), http.StatusOK, false) + testServer = createTestSizerServer(createTestSizerResponse(2, 1, 1, 1230, 2000), http.StatusOK, false) sizerClient = client.NewSizerClient(testServer.URL, 5*time.Second) sizerService = service.NewSizerService(sizerClient, mockStore) @@ -727,7 +727,7 @@ var _ = Describe("sizer service", func() { Expect(result).To(BeNil()) _, ok := err.(*service.ErrInvalidRequest) Expect(ok).To(BeTrue()) - // Should recommend multi-node, not "use at least 200 CPU" which would be misleading + // Should recommend multi-node, not "use at least ... CPU" which would be misleading Expect(err.Error()).To(Equal("workload does not fit on a single node. Use a multi-node cluster.")) Expect(err.Error()).NotTo(ContainSubstring("Use at least")) })