Rename autoscaling section to scaling. (#585)

diff --git a/api/v1beta1/solrcloud_types.go b/api/v1beta1/solrcloud_types.go
index 9ad8ff5..eaa3838 100644
--- a/api/v1beta1/solrcloud_types.go
+++ b/api/v1beta1/solrcloud_types.go
@@ -96,9 +96,9 @@
 	// +optional
 	Availability SolrAvailabilityOptions `json:"availability,omitempty"`
 
-	// Define how Solr nodes should be autoscaled.
+	// Configure how Solr nodes should be scaled.
 	// +optional
-	Autoscaling SolrAutoscalingOptions `json:"autoscaling,omitempty"`
+	Scaling SolrScalingOptions `json:"scaling,omitempty"`
 
 	// +optional
 	BusyBoxImage *ContainerImage `json:"busyBoxImage,omitempty"`
@@ -726,9 +726,10 @@
 	ClusterWidePDB SolrPodDisruptionBudgetMethod = "ClusterWide"
 )
 
-type SolrAutoscalingOptions struct {
+type SolrScalingOptions struct {
 	// VacatePodsOnScaleDown determines whether Solr replicas are moved off of a Pod before the Pod is
 	// deleted due to the SolrCloud scaling down.
+	//
 	// +kubebuilder:default=true
 	// +optional
 	VacatePodsOnScaleDown *bool `json:"vacatePodsOnScaleDown,omitempty"`
diff --git a/api/v1beta1/zz_generated.deepcopy.go b/api/v1beta1/zz_generated.deepcopy.go
index 3b9e0b7..718946d 100644
--- a/api/v1beta1/zz_generated.deepcopy.go
+++ b/api/v1beta1/zz_generated.deepcopy.go
@@ -644,31 +644,6 @@
 }
 
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *SolrAutoscalingOptions) DeepCopyInto(out *SolrAutoscalingOptions) {
-	*out = *in
-	if in.VacatePodsOnScaleDown != nil {
-		in, out := &in.VacatePodsOnScaleDown, &out.VacatePodsOnScaleDown
-		*out = new(bool)
-		**out = **in
-	}
-	if in.PopulatePodsOnScaleUp != nil {
-		in, out := &in.PopulatePodsOnScaleUp, &out.PopulatePodsOnScaleUp
-		*out = new(bool)
-		**out = **in
-	}
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SolrAutoscalingOptions.
-func (in *SolrAutoscalingOptions) DeepCopy() *SolrAutoscalingOptions {
-	if in == nil {
-		return nil
-	}
-	out := new(SolrAutoscalingOptions)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *SolrAvailabilityOptions) DeepCopyInto(out *SolrAvailabilityOptions) {
 	*out = *in
 	in.PodDisruptionBudget.DeepCopyInto(&out.PodDisruptionBudget)
@@ -927,7 +902,7 @@
 	in.SolrAddressability.DeepCopyInto(&out.SolrAddressability)
 	in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy)
 	in.Availability.DeepCopyInto(&out.Availability)
-	in.Autoscaling.DeepCopyInto(&out.Autoscaling)
+	in.Scaling.DeepCopyInto(&out.Scaling)
 	if in.BusyBoxImage != nil {
 		in, out := &in.BusyBoxImage, &out.BusyBoxImage
 		*out = new(ContainerImage)
@@ -1258,6 +1233,31 @@
 }
 
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *SolrScalingOptions) DeepCopyInto(out *SolrScalingOptions) {
+	*out = *in
+	if in.VacatePodsOnScaleDown != nil {
+		in, out := &in.VacatePodsOnScaleDown, &out.VacatePodsOnScaleDown
+		*out = new(bool)
+		**out = **in
+	}
+	if in.PopulatePodsOnScaleUp != nil {
+		in, out := &in.PopulatePodsOnScaleUp, &out.PopulatePodsOnScaleUp
+		*out = new(bool)
+		**out = **in
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SolrScalingOptions.
+func (in *SolrScalingOptions) DeepCopy() *SolrScalingOptions {
+	if in == nil {
+		return nil
+	}
+	out := new(SolrScalingOptions)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *SolrSecurityOptions) DeepCopyInto(out *SolrSecurityOptions) {
 	*out = *in
 	if in.BootstrapSecurityJson != nil {
diff --git a/config/crd/bases/solr.apache.org_solrclouds.yaml b/config/crd/bases/solr.apache.org_solrclouds.yaml
index 5159336..217ce62 100644
--- a/config/crd/bases/solr.apache.org_solrclouds.yaml
+++ b/config/crd/bases/solr.apache.org_solrclouds.yaml
@@ -89,25 +89,6 @@
                 items:
                   type: string
                 type: array
-              autoscaling:
-                description: Define how Solr nodes should be autoscaled.
-                properties:
-                  populatePodsOnScaleUp:
-                    default: true
-                    description: "PopulatePodsOnScaleUp determines whether Solr replicas
-                      should be moved to newly-created Pods that have been created
-                      due to the SolrCloud scaling up. \n This feature is only available
-                      to users using Solr 9.3 or newer. If this is set to \"true\"
-                      for a cloud that is running an unsupported version of Solr,
-                      the replicas will not be moved."
-                    type: boolean
-                  vacatePodsOnScaleDown:
-                    default: true
-                    description: VacatePodsOnScaleDown determines whether Solr replicas
-                      are moved off of a Pod before the Pod is deleted due to the
-                      SolrCloud scaling down.
-                    type: boolean
-                type: object
               availability:
                 description: Define how Solr nodes should be available.
                 properties:
@@ -9195,6 +9176,25 @@
                 description: The number of solr nodes to run
                 format: int32
                 type: integer
+              scaling:
+                description: Configure how Solr nodes should be scaled.
+                properties:
+                  populatePodsOnScaleUp:
+                    default: true
+                    description: "PopulatePodsOnScaleUp determines whether Solr replicas
+                      should be moved to newly-created Pods that have been created
+                      due to the SolrCloud scaling up. \n This feature is only available
+                      to users using Solr 9.3 or newer. If this is set to \"true\"
+                      for a cloud that is running an unsupported version of Solr,
+                      the replicas will not be moved."
+                    type: boolean
+                  vacatePodsOnScaleDown:
+                    default: true
+                    description: VacatePodsOnScaleDown determines whether Solr replicas
+                      are moved off of a Pod before the Pod is deleted due to the
+                      SolrCloud scaling down.
+                    type: boolean
+                type: object
               solrAddressability:
                 description: Customize how Solr is addressed both internally and externally
                   in Kubernetes.
diff --git a/controllers/solr_cluster_ops_util.go b/controllers/solr_cluster_ops_util.go
index 66b718e..5d8ec3a 100644
--- a/controllers/solr_cluster_ops_util.go
+++ b/controllers/solr_cluster_ops_util.go
@@ -41,7 +41,7 @@
 		// Only do a managed scale down if the desiredPods is positive.
 		// The VacatePodsOnScaleDown option is enabled by default, so treat "nil" like "true"
 		if desiredPods < configuredPods && desiredPods > 0 &&
-			(instance.Spec.Autoscaling.VacatePodsOnScaleDown == nil || *instance.Spec.Autoscaling.VacatePodsOnScaleDown) {
+			(instance.Spec.Scaling.VacatePodsOnScaleDown == nil || *instance.Spec.Scaling.VacatePodsOnScaleDown) {
 			if len(podList) > configuredPods {
 				// There are too many pods, the statefulSet controller has yet to delete unwanted pods.
 				// Do not start the scale down until these extra pods are deleted.
@@ -60,7 +60,7 @@
 			} else {
 				clusterLockAcquired = true
 			}
-		} else if desiredPods > configuredPods && (instance.Spec.Autoscaling.PopulatePodsOnScaleUp == nil || *instance.Spec.Autoscaling.PopulatePodsOnScaleUp) {
+		} else if desiredPods > configuredPods && (instance.Spec.Scaling.PopulatePodsOnScaleUp == nil || *instance.Spec.Scaling.PopulatePodsOnScaleUp) {
 			if len(podList) < configuredPods {
 				// There are not enough pods, the statefulSet controller has yet to create the previously desired pods.
 				// Do not start the scale up until these missing pods are created.
diff --git a/docs/solr-cloud/README.md b/docs/solr-cloud/README.md
index ead8009..9d13bb8 100644
--- a/docs/solr-cloud/README.md
+++ b/docs/solr-cloud/README.md
@@ -20,7 +20,7 @@
 Child Pages:
 - [All SolrCloud CRD Options](solr-cloud-crd.md) - Please refer here when trying to find new SolrCloud options/features.
 - [Managed Updates](managed-updates.md)
-- [Autoscaling](autoscaling.md)
+- [Scaling](scaling.md)
 
 The Solr Operator supports creating and managing Solr Clouds.
 
@@ -79,7 +79,7 @@
 kubectl scale --replicas=5 solrcloud/example
 ```
 
-For more information on SolrCloud scaling, refer to the [autoscaling page](autoscaling.md).
+For more information on SolrCloud scaling, refer to the [scaling page](scaling.md).
 
 After issuing the scale command, start hitting the "Refresh" button in the Admin UI.
 You will see how the new Solr nodes are added.
diff --git a/docs/solr-cloud/autoscaling.md b/docs/solr-cloud/scaling.md
similarity index 84%
rename from docs/solr-cloud/autoscaling.md
rename to docs/solr-cloud/scaling.md
index 78be501..73d6df9 100644
--- a/docs/solr-cloud/autoscaling.md
+++ b/docs/solr-cloud/scaling.md
@@ -20,7 +20,7 @@
 
 Solr Clouds are complex distributed systems, and thus require additional help when trying to scale up or down.
 
-Scaling/Autoscaling can mean different things in different situations, and this is true even within the `SolrCloud.spec.autoscaling` section.
+Scaling/Autoscaling can mean different things in different situations, and this is true even within the `SolrCloud.spec.scaling` section.
 - Replicas can be moved when new nodes are added or when nodes need to be taken down
 - Nodes can be added/removed if more or less resources are desired.
 
@@ -28,11 +28,11 @@
 
 ## Configuration
 
-The `autoscaling` section in the SolrCloud CRD can be configured in the following ways
+The `scaling` section in the SolrCloud CRD can be configured in the following ways
 
 ```yaml
 spec:
-  autoscaling:
+  scaling:
     vacatePodsOnScaleDown: true # Default: true
     populatePodsOnScaleUp: true # Default: true
 ```
@@ -47,7 +47,7 @@
 ### Solr Pod Scale-Down
 
 When the desired number of Solr Pods that should be run `SolrCloud.Spec.Replicas` is decreased,
-the `SolrCloud.spec.autoscaling.vacatePodsOnScaleDown` option determines whether the Solr Operator should move replicas
+the `SolrCloud.spec.scaling.vacatePodsOnScaleDown` option determines whether the Solr Operator should move replicas
 off of the pods that are about to be deleted.
 
 When a StatefulSet, which the Solr Operator uses to run Solr pods, has its size decreased by `x` pods, it's the last
@@ -59,11 +59,11 @@
 The Solr Operator can update the cluster state to handle the scale-down operation by using Solr APIs
 to move replicas off of the soon-to-be-deleted pods.
 
-If `autoscaling.vacatePodsOnScaleDown` option is not enabled, then whenever the `SolrCloud.Spec.Replicas` is decreased,
+If `scaling.vacatePodsOnScaleDown` option is not enabled, then whenever the `SolrCloud.Spec.Replicas` is decreased,
 that change will be reflected in the StatefulSet immediately.
 Pods will be deleted even if replicas live on those pods.
 
-If `autoscaling.vacatePodsOnScaleDown` option is enabled, which it is by default, then the following steps occur:
+If `scaling.vacatePodsOnScaleDown` option is enabled, which it is by default, then the following steps occur:
 1. Acquire a cluster-ops lock on the SolrCloud. (This means other cluster operations, such as a rolling restart and scale up, cannot occur during the scale down operation)
 1. Scale down the last pod.
    1. Mark the pod as "notReady" so that traffic is diverted away from this pod (for requests to the common endpoint, requests that target that node directly will not be affected).
@@ -88,15 +88,15 @@
 ### Solr Pod Scale-Up
 
 When the desired number of Solr Pods that should be run `SolrCloud.Spec.Replicas` is increased,
-the `SolrCloud.spec.autoscaling.populatePodsOnScaleUp` option determines whether the Solr Operator should move replicas
+the `SolrCloud.spec.scaling.populatePodsOnScaleUp` option determines whether the Solr Operator should move replicas
 onto the pods that have been created because of the scale-up.
 
-If `autoscaling.populatePodsOnScaleUp` option is not enabled, then whenever the `SolrCloud.Spec.Replicas` is increased,
+If `scaling.populatePodsOnScaleUp` option is not enabled, then whenever the `SolrCloud.Spec.Replicas` is increased,
 the StatefulSet's replicas will be increased, and no other actions will be taken by the Solr Operator.
 This means that the new pods that are created will likely remain empty until the user takes an action themselves.
 This could be creating collections, migrating replicas or scaling up existing shards/collections.
 
-If `autoscaling.populatePodsOnScaleUp` option is enabled, which it is by default, then the following steps occur:
+If `scaling.populatePodsOnScaleUp` option is enabled, which it is by default, then the following steps occur:
 1. Acquire a cluster-ops lock on the SolrCloud. (This means other cluster operations, such as a rolling restart and scale down, cannot occur during the scale up operation)
 1. Scale up to the StatefulSet to the desired `spec.replicas` (number of pods).
 1. Wait for all pods in the cluster to become healthy.
@@ -111,6 +111,6 @@
 
 The managed scale-up option relies on the BalanceReplicas API in Solr, which was added in Solr 9.3.
 Therefore, this option cannot be used with Solr versions < 9.3.
-If `autoscaling.populatePodsOnScaleUp` option is enabled and an unsupported version of Solr is used, the cluster lock will
+If `scaling.populatePodsOnScaleUp` option is enabled and an unsupported version of Solr is used, the cluster lock will
 be given up after the BalanceReplicas API call fails.
-This behavior is very similar to `autoscaling.populatePodsOnScaleUp` being disabled.
+This behavior is very similar to `scaling.populatePodsOnScaleUp` being disabled.
diff --git a/docs/solr-cloud/solr-cloud-crd.md b/docs/solr-cloud/solr-cloud-crd.md
index 2fb54bd..f8f7043 100644
--- a/docs/solr-cloud/solr-cloud-crd.md
+++ b/docs/solr-cloud/solr-cloud-crd.md
@@ -271,16 +271,17 @@
 This means that even if Solr sets the ACLs on znodes, they will not be enforced by Zookeeper. If your organization requires Solr to use ZK ACLs, then you'll need to 
 deploy Zookeeper to Kubernetes using another approach, such as using a Helm chart. 
 
-## Autoscaling
+## Scaling
 _Since v0.8.0_
 
 ```yaml
 spec:
-  autoscaling:
+  scaling:
     vacatePodsOnScaleDown: true
+    populatePodsOnScaleUp: true
 ```
 
-Please refer to the [Autoscaling page](autoscaling.md) for more information.
+Please refer to the [Scaling page](scaling.md) for more information.
 
 ## Override Built-in Solr Configuration Files
 _Since v0.2.7_
diff --git a/docs/upgrade-notes.md b/docs/upgrade-notes.md
index 6d3cabf..254784a 100644
--- a/docs/upgrade-notes.md
+++ b/docs/upgrade-notes.md
@@ -110,10 +110,10 @@
 ## Upgrade Warnings and Notes
 
 ### v0.8.0
-- The new `SolrCloud.spec.autoscaling.vacatePodsOnScaleDown` option is enabled by default.
+- The new `SolrCloud.spec.scaling.vacatePodsOnScaleDown` option is enabled by default.
   This means that any SolrCloud that has its `spec.replicas` decreased will have the replicas migrated off of the soon-to-be-deleted pods by default.
   Set this value to `false` to retain the previous functionality.
-  More information can be found in the [Solr Pod Scale-Down](solr-cloud/autoscaling.md#solr-pod-scale-down) documentation.
+  More information can be found in the [Solr Pod Scale-Down](solr-cloud/scaling.md#solr-pod-scale-down) documentation.
 
 ### v0.7.0
 - **Kubernetes support is now limited to 1.21+.**  
diff --git a/helm/solr-operator/Chart.yaml b/helm/solr-operator/Chart.yaml
index f7e4586..3f94074 100644
--- a/helm/solr-operator/Chart.yaml
+++ b/helm/solr-operator/Chart.yaml
@@ -67,7 +67,7 @@
         - name: Github PR
           url: https://github.com/apache/solr-operator/pull/561
         - name: Documentation
-          url: https://apache.github.io/solr-operator/docs/solr-cloud/autoscaling.html#solr-pod-scale-down
+          url: https://apache.github.io/solr-operator/docs/solr-cloud/scaling.html#solr-pod-scale-down
     - kind: added
       description: Scale up of Solr Pods includes Replica migration by default, for Solr 9.3+.
       links:
@@ -76,7 +76,7 @@
         - name: Github PR
           url: https://github.com/apache/solr-operator/pull/575
         - name: Documentation
-          url: https://apache.github.io/solr-operator/docs/solr-cloud/autoscaling.html#solr-pod-scale-up
+          url: https://apache.github.io/solr-operator/docs/solr-cloud/scaling.html#solr-pod-scale-up
     - kind: changed
       description: The Solr Operator is now built with Go 1.20
       links:
diff --git a/helm/solr-operator/crds/crds.yaml b/helm/solr-operator/crds/crds.yaml
index 846658e..90ea10d 100644
--- a/helm/solr-operator/crds/crds.yaml
+++ b/helm/solr-operator/crds/crds.yaml
@@ -338,25 +338,6 @@
                 items:
                   type: string
                 type: array
-              autoscaling:
-                description: Define how Solr nodes should be autoscaled.
-                properties:
-                  populatePodsOnScaleUp:
-                    default: true
-                    description: "PopulatePodsOnScaleUp determines whether Solr replicas
-                      should be moved to newly-created Pods that have been created
-                      due to the SolrCloud scaling up. \n This feature is only available
-                      to users using Solr 9.3 or newer. If this is set to \"true\"
-                      for a cloud that is running an unsupported version of Solr,
-                      the replicas will not be moved."
-                    type: boolean
-                  vacatePodsOnScaleDown:
-                    default: true
-                    description: VacatePodsOnScaleDown determines whether Solr replicas
-                      are moved off of a Pod before the Pod is deleted due to the
-                      SolrCloud scaling down.
-                    type: boolean
-                type: object
               availability:
                 description: Define how Solr nodes should be available.
                 properties:
@@ -9444,6 +9425,25 @@
                 description: The number of solr nodes to run
                 format: int32
                 type: integer
+              scaling:
+                description: Configure how Solr nodes should be scaled.
+                properties:
+                  populatePodsOnScaleUp:
+                    default: true
+                    description: "PopulatePodsOnScaleUp determines whether Solr replicas
+                      should be moved to newly-created Pods that have been created
+                      due to the SolrCloud scaling up. \n This feature is only available
+                      to users using Solr 9.3 or newer. If this is set to \"true\"
+                      for a cloud that is running an unsupported version of Solr,
+                      the replicas will not be moved."
+                    type: boolean
+                  vacatePodsOnScaleDown:
+                    default: true
+                    description: VacatePodsOnScaleDown determines whether Solr replicas
+                      are moved off of a Pod before the Pod is deleted due to the
+                      SolrCloud scaling down.
+                    type: boolean
+                type: object
               solrAddressability:
                 description: Customize how Solr is addressed both internally and externally
                   in Kubernetes.
diff --git a/helm/solr/README.md b/helm/solr/README.md
index 407c4f9..aee977e 100644
--- a/helm/solr/README.md
+++ b/helm/solr/README.md
@@ -112,8 +112,8 @@
 | serviceAccount.create | boolean | `false` | Create a serviceAccount to be used for all pods being deployed (Solr & ZK). If `serviceAccount.name` is not specified, the full name of the deployment will be used. |
 | serviceAccount.name | string |  | The optional default service account used for Solr and ZK unless overridden below. If `serviceAccount.create` is set to `false`, this serviceAccount must exist in the target namespace. |
 | backupRepositories | []object | | A list of BackupRepositories to connect your SolrCloud to. Visit the [SolrBackup docs](https://apache.github.io/solr-operator/docs/solr-backup) or run `kubectl explain solrcloud.spec.backupRepositories` to see the available options. |
-| autoscaling.vacatePodsOnScaleDown | boolean | `true` | While scaling down the SolrCloud, move replicas off of Solr Pods before they are deleted. This only affects pods that will not exist after the scaleDown operation.  |
-| autoscaling.populatePodsOnScaleUp | boolean | `true` | While scaling up the SolrCloud, migrate replicas onto the new Solr Pods after they are created. This uses the Balance Replicas API in Solr that is only available in Solr 9.3+. This option will be ignored if using an unsupported version of Solr.  |
+| scaling.vacatePodsOnScaleDown | boolean | `true` | While scaling down the SolrCloud, move replicas off of Solr Pods before they are deleted. This only affects pods that will not exist after the scaleDown operation.  |
+| scaling.populatePodsOnScaleUp | boolean | `true` | While scaling up the SolrCloud, migrate replicas onto the new Solr Pods after they are created. This uses the Balance Replicas API in Solr that is only available in Solr 9.3+. This option will be ignored if using an unsupported version of Solr.  |
 
 ### Data Storage Options
 
diff --git a/helm/solr/templates/solrcloud.yaml b/helm/solr/templates/solrcloud.yaml
index b351ece..1bfab1e 100644
--- a/helm/solr/templates/solrcloud.yaml
+++ b/helm/solr/templates/solrcloud.yaml
@@ -114,10 +114,10 @@
       {{- toYaml .Values.availability.podDisruptionBudget | nindent 6 }}
   {{- end }}
 
-  {{- if .Values.autoscaling }}
-  autoscaling:
-    vacatePodsOnScaleDown: {{ .Values.autoscaling.vacatePodsOnScaleDown }}
-    populatePodsOnScaleUp: {{ .Values.autoscaling.populatePodsOnScaleUp }}
+  {{- if .Values.scaling }}
+  scaling:
+    vacatePodsOnScaleDown: {{ .Values.scaling.vacatePodsOnScaleDown }}
+    populatePodsOnScaleUp: {{ .Values.scaling.populatePodsOnScaleUp }}
   {{- end }}
 
   {{- if .Values.dataStorage }}
diff --git a/helm/solr/values.yaml b/helm/solr/values.yaml
index d1d6d36..5f70083 100644
--- a/helm/solr/values.yaml
+++ b/helm/solr/values.yaml
@@ -143,8 +143,8 @@
     enabled: true
     method: ClusterWide
 
-# Various settings to control autoscaling of Solr pods and replicas
-autoscaling:
+# Various settings to control scaling of Solr pods and replicas
+scaling:
   vacatePodsOnScaleDown: true
   populatePodsOnScaleUp: true
 
diff --git a/tests/e2e/solrcloud_scaling_test.go b/tests/e2e/solrcloud_scaling_test.go
index e0f2955..b906176 100644
--- a/tests/e2e/solrcloud_scaling_test.go
+++ b/tests/e2e/solrcloud_scaling_test.go
@@ -107,7 +107,7 @@
 	FContext("without replica migration", func() {
 
 		BeforeEach(func() {
-			solrCloud.Spec.Autoscaling.VacatePodsOnScaleDown = pointer.Bool(false)
+			solrCloud.Spec.Scaling.VacatePodsOnScaleDown = pointer.Bool(false)
 		})
 
 		FIt("Scales Down", func(ctx context.Context) {
@@ -188,7 +188,7 @@
 	FContext("without replica migration", func() {
 
 		BeforeEach(func() {
-			solrCloud.Spec.Autoscaling.PopulatePodsOnScaleUp = pointer.Bool(false)
+			solrCloud.Spec.Scaling.PopulatePodsOnScaleUp = pointer.Bool(false)
 		})
 
 		FIt("Scales Up", func(ctx context.Context) {