Skip to content

Commit e14ad46

Browse files
authored
Merge pull request #1729 from feiskyer/cluster-autoscaler-release-1.2
Cluster Autoscaler 1.2: cherry-picks of #1641, #1703 and #1708
2 parents e258d5e + 248389b commit e14ad46

File tree

41 files changed

+1910
-508
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1910
-508
lines changed

cluster-autoscaler/Godeps/Godeps.json

Lines changed: 352 additions & 342 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library")
2+
3+
go_library(
4+
name = "go_default_library",
5+
srcs = [
6+
"authorization.go",
7+
"autorest.go",
8+
"client.go",
9+
"error.go",
10+
"preparer.go",
11+
"responder.go",
12+
"retriablerequest.go",
13+
"retriablerequest_1.7.go",
14+
"retriablerequest_1.8.go",
15+
"sender.go",
16+
"utility.go",
17+
"version.go",
18+
],
19+
importmap = "k8s.io/kubernetes/vendor/github.com/Azure/go-autorest/autorest",
20+
importpath = "github.com/Azure/go-autorest/autorest",
21+
visibility = ["//visibility:public"],
22+
deps = [
23+
"//vendor/github.com/Azure/go-autorest/autorest/adal:go_default_library",
24+
"//vendor/github.com/Azure/go-autorest/logger:go_default_library",
25+
"//vendor/github.com/Azure/go-autorest/version:go_default_library",
26+
],
27+
)
28+
29+
filegroup(
30+
name = "package-srcs",
31+
srcs = glob(["**"]),
32+
tags = ["automanaged"],
33+
visibility = ["//visibility:private"],
34+
)
35+
36+
filegroup(
37+
name = "all-srcs",
38+
srcs = [
39+
":package-srcs",
40+
"//vendor/github.com/Azure/go-autorest/autorest/adal:all-srcs",
41+
"//vendor/github.com/Azure/go-autorest/autorest/azure:all-srcs",
42+
"//vendor/github.com/Azure/go-autorest/autorest/date:all-srcs",
43+
"//vendor/github.com/Azure/go-autorest/autorest/to:all-srcs",
44+
"//vendor/github.com/Azure/go-autorest/autorest/validation:all-srcs",
45+
],
46+
tags = ["automanaged"],
47+
visibility = ["//visibility:public"],
48+
)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library")
2+
3+
go_library(
4+
name = "go_default_library",
5+
srcs = [
6+
"config.go",
7+
"devicetoken.go",
8+
"persist.go",
9+
"sender.go",
10+
"token.go",
11+
],
12+
importmap = "k8s.io/kubernetes/vendor/github.com/Azure/go-autorest/autorest/adal",
13+
importpath = "github.com/Azure/go-autorest/autorest/adal",
14+
visibility = ["//visibility:public"],
15+
deps = [
16+
"//vendor/github.com/Azure/go-autorest/autorest/date:go_default_library",
17+
"//vendor/github.com/Azure/go-autorest/version:go_default_library",
18+
"//vendor/github.com/dgrijalva/jwt-go:go_default_library",
19+
],
20+
)
21+
22+
filegroup(
23+
name = "package-srcs",
24+
srcs = glob(["**"]),
25+
tags = ["automanaged"],
26+
visibility = ["//visibility:private"],
27+
)
28+
29+
filegroup(
30+
name = "all-srcs",
31+
srcs = [":package-srcs"],
32+
tags = ["automanaged"],
33+
visibility = ["//visibility:public"],
34+
)

cluster-autoscaler/_override/github.com/Azure/go-autorest/autorest/adal/config.go

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,6 @@ import (
1919
"net/url"
2020
)
2121

22-
const (
23-
activeDirectoryAPIVersion = "1.0"
24-
)
25-
2622
// OAuthConfig represents the endpoints needed
2723
// in OAuth operations
2824
type OAuthConfig struct {
@@ -46,11 +42,25 @@ func validateStringParam(param, name string) error {
4642

4743
// NewOAuthConfig returns an OAuthConfig with tenant specific urls
4844
func NewOAuthConfig(activeDirectoryEndpoint, tenantID string) (*OAuthConfig, error) {
45+
apiVer := "1.0"
46+
return NewOAuthConfigWithAPIVersion(activeDirectoryEndpoint, tenantID, &apiVer)
47+
}
48+
49+
// NewOAuthConfigWithAPIVersion returns an OAuthConfig with tenant specific urls.
50+
// If apiVersion is not nil the "api-version" query parameter will be appended to the endpoint URLs with the specified value.
51+
func NewOAuthConfigWithAPIVersion(activeDirectoryEndpoint, tenantID string, apiVersion *string) (*OAuthConfig, error) {
4952
if err := validateStringParam(activeDirectoryEndpoint, "activeDirectoryEndpoint"); err != nil {
5053
return nil, err
5154
}
55+
api := ""
5256
// it's legal for tenantID to be empty so don't validate it
53-
const activeDirectoryEndpointTemplate = "%s/oauth2/%s?api-version=%s"
57+
if apiVersion != nil {
58+
if err := validateStringParam(*apiVersion, "apiVersion"); err != nil {
59+
return nil, err
60+
}
61+
api = fmt.Sprintf("?api-version=%s", *apiVersion)
62+
}
63+
const activeDirectoryEndpointTemplate = "%s/oauth2/%s%s"
5464
u, err := url.Parse(activeDirectoryEndpoint)
5565
if err != nil {
5666
return nil, err
@@ -59,15 +69,15 @@ func NewOAuthConfig(activeDirectoryEndpoint, tenantID string) (*OAuthConfig, err
5969
if err != nil {
6070
return nil, err
6171
}
62-
authorizeURL, err := u.Parse(fmt.Sprintf(activeDirectoryEndpointTemplate, tenantID, "authorize", activeDirectoryAPIVersion))
72+
authorizeURL, err := u.Parse(fmt.Sprintf(activeDirectoryEndpointTemplate, tenantID, "authorize", api))
6373
if err != nil {
6474
return nil, err
6575
}
66-
tokenURL, err := u.Parse(fmt.Sprintf(activeDirectoryEndpointTemplate, tenantID, "token", activeDirectoryAPIVersion))
76+
tokenURL, err := u.Parse(fmt.Sprintf(activeDirectoryEndpointTemplate, tenantID, "token", api))
6777
if err != nil {
6878
return nil, err
6979
}
70-
deviceCodeURL, err := u.Parse(fmt.Sprintf(activeDirectoryEndpointTemplate, tenantID, "devicecode", activeDirectoryAPIVersion))
80+
deviceCodeURL, err := u.Parse(fmt.Sprintf(activeDirectoryEndpointTemplate, tenantID, "devicecode", api))
7181
if err != nil {
7282
return nil, err
7383
}

cluster-autoscaler/_override/github.com/Azure/go-autorest/autorest/adal/sender.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func (sf SenderFunc) Do(r *http.Request) (*http.Response, error) {
3838
return sf(r)
3939
}
4040

41-
// SendDecorator takes and possibility decorates, by wrapping, a Sender. Decorators may affect the
41+
// SendDecorator takes and possibly decorates, by wrapping, a Sender. Decorators may affect the
4242
// http.Request and pass it along or, first, pass the http.Request along then react to the
4343
// http.Response result.
4444
type SendDecorator func(Sender) Sender

cluster-autoscaler/_override/github.com/Azure/go-autorest/autorest/adal/token.go

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ import (
2929
"net"
3030
"net/http"
3131
"net/url"
32-
"strconv"
3332
"strings"
3433
"sync"
3534
"time"
3635

3736
"github.com/Azure/go-autorest/autorest/date"
37+
"github.com/Azure/go-autorest/version"
3838
"github.com/dgrijalva/jwt-go"
3939
)
4040

@@ -96,31 +96,40 @@ type RefresherWithContext interface {
9696
type TokenRefreshCallback func(Token) error
9797

9898
// Token encapsulates the access token used to authorize Azure requests.
99+
// https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-oauth2-client-creds-grant-flow#service-to-service-access-token-response
99100
type Token struct {
100101
AccessToken string `json:"access_token"`
101102
RefreshToken string `json:"refresh_token"`
102103

103-
ExpiresIn string `json:"expires_in"`
104-
ExpiresOn string `json:"expires_on"`
105-
NotBefore string `json:"not_before"`
104+
ExpiresIn json.Number `json:"expires_in"`
105+
ExpiresOn json.Number `json:"expires_on"`
106+
NotBefore json.Number `json:"not_before"`
106107

107108
Resource string `json:"resource"`
108109
Type string `json:"token_type"`
109110
}
110111

112+
func newToken() Token {
113+
return Token{
114+
ExpiresIn: "0",
115+
ExpiresOn: "0",
116+
NotBefore: "0",
117+
}
118+
}
119+
111120
// IsZero returns true if the token object is zero-initialized.
112121
func (t Token) IsZero() bool {
113122
return t == Token{}
114123
}
115124

116125
// Expires returns the time.Time when the Token expires.
117126
func (t Token) Expires() time.Time {
118-
s, err := strconv.Atoi(t.ExpiresOn)
127+
s, err := t.ExpiresOn.Float64()
119128
if err != nil {
120129
s = -3600
121130
}
122131

123-
expiration := date.NewUnixTimeFromSeconds(float64(s))
132+
expiration := date.NewUnixTimeFromSeconds(s)
124133

125134
return time.Time(expiration).UTC()
126135
}
@@ -217,6 +226,8 @@ func (secret *ServicePrincipalCertificateSecret) SignJwt(spt *ServicePrincipalTo
217226

218227
token := jwt.New(jwt.SigningMethodRS256)
219228
token.Header["x5t"] = thumbprint
229+
x5c := []string{base64.StdEncoding.EncodeToString(secret.Certificate.Raw)}
230+
token.Header["x5c"] = x5c
220231
token.Claims = jwt.MapClaims{
221232
"aud": spt.inner.OauthConfig.TokenEndpoint.String(),
222233
"iss": spt.inner.ClientID,
@@ -413,6 +424,7 @@ func NewServicePrincipalTokenWithSecret(oauthConfig OAuthConfig, id string, reso
413424
}
414425
spt := &ServicePrincipalToken{
415426
inner: servicePrincipalToken{
427+
Token: newToken(),
416428
OauthConfig: oauthConfig,
417429
Secret: secret,
418430
ClientID: id,
@@ -652,6 +664,7 @@ func newServicePrincipalTokenFromMSI(msiEndpoint, resource string, userAssignedI
652664

653665
spt := &ServicePrincipalToken{
654666
inner: servicePrincipalToken{
667+
Token: newToken(),
655668
OauthConfig: OAuthConfig{
656669
TokenEndpoint: *msiEndpointURL,
657670
},
@@ -778,6 +791,7 @@ func (spt *ServicePrincipalToken) refreshInternal(ctx context.Context, resource
778791
if err != nil {
779792
return fmt.Errorf("adal: Failed to build the refresh request. Error = '%v'", err)
780793
}
794+
req.Header.Add("User-Agent", version.UserAgent())
781795
req = req.WithContext(ctx)
782796
if !isIMDS(spt.inner.OauthConfig.TokenEndpoint) {
783797
v := url.Values{}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library")
2+
3+
go_library(
4+
name = "go_default_library",
5+
srcs = [
6+
"async.go",
7+
"azure.go",
8+
"environments.go",
9+
"metadata_environment.go",
10+
"rp.go",
11+
],
12+
importmap = "k8s.io/kubernetes/vendor/github.com/Azure/go-autorest/autorest/azure",
13+
importpath = "github.com/Azure/go-autorest/autorest/azure",
14+
visibility = ["//visibility:public"],
15+
deps = ["//vendor/github.com/Azure/go-autorest/autorest:go_default_library"],
16+
)
17+
18+
filegroup(
19+
name = "package-srcs",
20+
srcs = glob(["**"]),
21+
tags = ["automanaged"],
22+
visibility = ["//visibility:private"],
23+
)
24+
25+
filegroup(
26+
name = "all-srcs",
27+
srcs = [":package-srcs"],
28+
tags = ["automanaged"],
29+
visibility = ["//visibility:public"],
30+
)

0 commit comments

Comments
 (0)