mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-16 06:32:32 +00:00
Merge pull request #43644 from nicksardo/gce-healthchecks
Automatic merge from submit-queue (batch tested with PRs 42617, 43247, 43509, 43644, 43820) [GCE] Support legacy-https and generic health checks **What this PR does / why we need it**: - Adds CRUD functions to manage `compute.HttpsHealthChecks` The legacy HTTPS healthchecks will be used by the GLBC (GCE Load balancer Controller) - Adds CRUD functions to manage `compute.HealthChecks` These are required for the internal load balancer - Removes the logic that disregards NotFound errors on DeleteHttpHealthChecks as this is useful information for callers. Here are the three known invocations within kubernetes: [gce/gce_loadbalancer.go#L457](bc6e77d42f/pkg/cloudprovider/providers/gce/gce_loadbalancer.go (L457)
): Only prints warning that HC wasn't deleted -> acceptable [gce/gce_loadbalancer.go#L465](bc6e77d42f/pkg/cloudprovider/providers/gce/gce_loadbalancer.go (L465)
): Err is ignored if not nil -> acceptable [e2e/framework/ingress_utils.go#L530](bc6e77d42f/test/e2e/framework/ingress_utils.go (L530)
): Already checks if is NotFound error -> acceptable **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: Step one of https://github.com/kubernetes/ingress/issues/494 Step one of #33483 **Special notes for your reviewer**: **Release note**: ```release-note NONE ```
This commit is contained in:
@@ -16,13 +16,9 @@ limitations under the License.
|
|||||||
|
|
||||||
package gce
|
package gce
|
||||||
|
|
||||||
import (
|
import compute "google.golang.org/api/compute/v1"
|
||||||
"net/http"
|
|
||||||
|
|
||||||
compute "google.golang.org/api/compute/v1"
|
// Legacy HTTP Health Checks
|
||||||
)
|
|
||||||
|
|
||||||
// Health Checks
|
|
||||||
|
|
||||||
// GetHttpHealthCheck returns the given HttpHealthCheck by name.
|
// GetHttpHealthCheck returns the given HttpHealthCheck by name.
|
||||||
func (gce *GCECloud) GetHttpHealthCheck(name string) (*compute.HttpHealthCheck, error) {
|
func (gce *GCECloud) GetHttpHealthCheck(name string) (*compute.HttpHealthCheck, error) {
|
||||||
@@ -42,9 +38,6 @@ func (gce *GCECloud) UpdateHttpHealthCheck(hc *compute.HttpHealthCheck) error {
|
|||||||
func (gce *GCECloud) DeleteHttpHealthCheck(name string) error {
|
func (gce *GCECloud) DeleteHttpHealthCheck(name string) error {
|
||||||
op, err := gce.service.HttpHealthChecks.Delete(gce.projectID, name).Do()
|
op, err := gce.service.HttpHealthChecks.Delete(gce.projectID, name).Do()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if isHTTPErrorCode(err, http.StatusNotFound) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return gce.waitForGlobalOp(op)
|
return gce.waitForGlobalOp(op)
|
||||||
@@ -59,8 +52,88 @@ func (gce *GCECloud) CreateHttpHealthCheck(hc *compute.HttpHealthCheck) error {
|
|||||||
return gce.waitForGlobalOp(op)
|
return gce.waitForGlobalOp(op)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListHttpHealthCheck lists all HttpHealthChecks in the project.
|
// ListHttpHealthChecks lists all HttpHealthChecks in the project.
|
||||||
func (gce *GCECloud) ListHttpHealthChecks() (*compute.HttpHealthCheckList, error) {
|
func (gce *GCECloud) ListHttpHealthChecks() (*compute.HttpHealthCheckList, error) {
|
||||||
// TODO: use PageToken to list all not just the first 500
|
// TODO: use PageToken to list all not just the first 500
|
||||||
return gce.service.HttpHealthChecks.List(gce.projectID).Do()
|
return gce.service.HttpHealthChecks.List(gce.projectID).Do()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Legacy HTTPS Health Checks
|
||||||
|
|
||||||
|
// GetHttpsHealthCheck returns the given HttpsHealthCheck by name.
|
||||||
|
func (gce *GCECloud) GetHttpsHealthCheck(name string) (*compute.HttpsHealthCheck, error) {
|
||||||
|
return gce.service.HttpsHealthChecks.Get(gce.projectID, name).Do()
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateHttpsHealthCheck applies the given HttpsHealthCheck as an update.
|
||||||
|
func (gce *GCECloud) UpdateHttpsHealthCheck(hc *compute.HttpsHealthCheck) error {
|
||||||
|
op, err := gce.service.HttpsHealthChecks.Update(gce.projectID, hc.Name, hc).Do()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return gce.waitForGlobalOp(op)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteHttpsHealthCheck deletes the given HttpsHealthCheck by name.
|
||||||
|
func (gce *GCECloud) DeleteHttpsHealthCheck(name string) error {
|
||||||
|
op, err := gce.service.HttpsHealthChecks.Delete(gce.projectID, name).Do()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return gce.waitForGlobalOp(op)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateHttpsHealthCheck creates the given HttpsHealthCheck.
|
||||||
|
func (gce *GCECloud) CreateHttpsHealthCheck(hc *compute.HttpsHealthCheck) error {
|
||||||
|
op, err := gce.service.HttpsHealthChecks.Insert(gce.projectID, hc).Do()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return gce.waitForGlobalOp(op)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListHttpsHealthChecks lists all HttpsHealthChecks in the project.
|
||||||
|
func (gce *GCECloud) ListHttpsHealthChecks() (*compute.HttpsHealthCheckList, error) {
|
||||||
|
// TODO: use PageToken to list all not just the first 500
|
||||||
|
return gce.service.HttpsHealthChecks.List(gce.projectID).Do()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generic HealthCheck
|
||||||
|
|
||||||
|
// GetHealthCheck returns the given HealthCheck by name.
|
||||||
|
func (gce *GCECloud) GetHealthCheck(name string) (*compute.HealthCheck, error) {
|
||||||
|
return gce.service.HealthChecks.Get(gce.projectID, name).Do()
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateHealthCheck applies the given HealthCheck as an update.
|
||||||
|
func (gce *GCECloud) UpdateHealthCheck(hc *compute.HealthCheck) error {
|
||||||
|
op, err := gce.service.HealthChecks.Update(gce.projectID, hc.Name, hc).Do()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return gce.waitForGlobalOp(op)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteHealthCheck deletes the given HealthCheck by name.
|
||||||
|
func (gce *GCECloud) DeleteHealthCheck(name string) error {
|
||||||
|
op, err := gce.service.HealthChecks.Delete(gce.projectID, name).Do()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return gce.waitForGlobalOp(op)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateHealthCheck creates the given HealthCheck.
|
||||||
|
func (gce *GCECloud) CreateHealthCheck(hc *compute.HealthCheck) error {
|
||||||
|
op, err := gce.service.HealthChecks.Insert(gce.projectID, hc).Do()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return gce.waitForGlobalOp(op)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListHealthChecks lists all HealthCheck in the project.
|
||||||
|
func (gce *GCECloud) ListHealthChecks() (*compute.HealthCheckList, error) {
|
||||||
|
// TODO: use PageToken to list all not just the first 500
|
||||||
|
return gce.service.HealthChecks.List(gce.projectID).Do()
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user