Skip to content

Commit 59ba79b

Browse files
authored
Merge pull request kubernetes#3572 from jayantjain93/NoNodePoolIssue
added a new NodeGroupDoesNotExistError in errors.go
2 parents 09c597e + d987394 commit 59ba79b

File tree

4 files changed

+42
-10
lines changed

4 files changed

+42
-10
lines changed

cluster-autoscaler/cloudprovider/gce/autoscaling_gce_client.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ import (
2626
"strings"
2727
"time"
2828

29+
"google.golang.org/api/googleapi"
2930
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider"
31+
"k8s.io/autoscaler/cluster-autoscaler/utils/errors"
3032
"k8s.io/autoscaler/cluster-autoscaler/utils/klogx"
3133

3234
gce "google.golang.org/api/compute/v1"
@@ -152,6 +154,11 @@ func (client *autoscalingGceClientV1) FetchMigTargetSize(migRef GceRef) (int64,
152154
registerRequest("instance_group_managers", "get")
153155
igm, err := client.gceService.InstanceGroupManagers.Get(migRef.Project, migRef.Zone, migRef.Name).Do()
154156
if err != nil {
157+
if err, ok := err.(*googleapi.Error); ok {
158+
if err.Code == http.StatusNotFound {
159+
return 0, errors.NewAutoscalerError(errors.NodeGroupDoesNotExistError, "%s", err.Error())
160+
}
161+
}
155162
return 0, err
156163
}
157164
return igm.TargetSize, nil
@@ -345,6 +352,11 @@ func (client *autoscalingGceClientV1) FetchMigTemplate(migRef GceRef) (*gce.Inst
345352
registerRequest("instance_group_managers", "get")
346353
igm, err := client.gceService.InstanceGroupManagers.Get(migRef.Project, migRef.Zone, migRef.Name).Do()
347354
if err != nil {
355+
if err, ok := err.(*googleapi.Error); ok {
356+
if err.Code == http.StatusNotFound {
357+
return nil, errors.NewAutoscalerError(errors.NodeGroupDoesNotExistError, "%s", err.Error())
358+
}
359+
}
348360
return nil, err
349361
}
350362
templateUrl, err := url.Parse(igm.InstanceTemplate)

cluster-autoscaler/cloudprovider/gce/mig_target_sizes_provider.go

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ limitations under the License.
1717
package gce
1818

1919
import (
20-
"fmt"
21-
klog "k8s.io/klog/v2"
2220
"sync"
21+
22+
klog "k8s.io/klog/v2"
2323
)
2424

2525
// MigTargetSizesProvider allows obtaining target sizes of MIGs
@@ -55,7 +55,9 @@ func (c *cachingMigTargetSizesProvider) GetMigTargetSize(migRef GceRef) (int64,
5555
}
5656

5757
newTargetSizes, err := c.fillInMigTargetSizeCache()
58-
if err != nil {
58+
59+
size, found := newTargetSizes[migRef]
60+
if err != nil || !found {
5961
// fallback to querying for single mig
6062
targetSize, err = c.gceClient.FetchMigTargetSize(migRef)
6163
if err != nil {
@@ -65,12 +67,6 @@ func (c *cachingMigTargetSizesProvider) GetMigTargetSize(migRef GceRef) (int64,
6567
return targetSize, nil
6668
}
6769

68-
// if we still do not have value here return an error
69-
size, found := newTargetSizes[migRef]
70-
if !found {
71-
return 0, fmt.Errorf("Could not get target size for mig %v", migRef.String())
72-
}
73-
7470
// we are good
7571
return size, nil
7672
}

cluster-autoscaler/utils/errors/errors.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ const (
5858
// ConfigurationError is an error related to bad configuration provided
5959
// by a user.
6060
ConfigurationError AutoscalerErrorType = "configurationError"
61+
// NodeGroupDoesNotExistError signifies that a NodeGroup
62+
// does not exist.
63+
NodeGroupDoesNotExistError AutoscalerErrorType = "nodeGroupDoesNotExistError"
6164
)
6265

6366
// NewAutoscalerError returns new autoscaler error with a message constructed from format string

cluster-autoscaler/utils/test/test_utils.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ func NewHttpServerMock() *HttpServerMock {
225225
mux.HandleFunc("/",
226226
func(w http.ResponseWriter, req *http.Request) {
227227
result := httpServerMock.handle(req.URL.Path)
228-
w.Write([]byte(result))
228+
_, _ = w.Write([]byte(result))
229229
})
230230

231231
server := httptest.NewServer(mux)
@@ -237,3 +237,24 @@ func (l *HttpServerMock) handle(url string) string {
237237
args := l.Called(url)
238238
return args.String(0)
239239
}
240+
241+
// NewHttpServerMockWithStatusCode creates new HttpServerMock.
242+
func NewHttpServerMockWithStatusCode() *HttpServerMock {
243+
httpServerMock := &HttpServerMock{}
244+
mux := http.NewServeMux()
245+
mux.HandleFunc("/",
246+
func(w http.ResponseWriter, req *http.Request) {
247+
code, result := httpServerMock.handleWithStatusCode(req.URL.Path)
248+
w.WriteHeader(code)
249+
_, _ = w.Write([]byte(result))
250+
})
251+
252+
server := httptest.NewServer(mux)
253+
httpServerMock.Server = server
254+
return httpServerMock
255+
}
256+
257+
func (l *HttpServerMock) handleWithStatusCode(url string) (int, string) {
258+
args := l.Called(url)
259+
return args.Int(0), args.String(1)
260+
}

0 commit comments

Comments
 (0)