mirror of https://github.com/k3s-io/k3s
Merge pull request #40658 from sttts/sttts-more-cutoffs-4
Automatic merge from submit-queue (batch tested with PRs 40798, 40658) genericapiserver: cut off more dependencies – episode 4 Follow-up of https://github.com/kubernetes/kubernetes/pull/40426. TODO: - [x] resync client-go before "genericapiserver: cutting off pkg/api deps" when #40426 went in and mirror repos are synched. approved based on #40363pull/6/head
commit
056728067d
|
@ -17,7 +17,6 @@ go_library(
|
||||||
"field_constants.go",
|
"field_constants.go",
|
||||||
"helpers.go",
|
"helpers.go",
|
||||||
"json.go",
|
"json.go",
|
||||||
"meta.go",
|
|
||||||
"ref.go",
|
"ref.go",
|
||||||
"register.go",
|
"register.go",
|
||||||
"resource_helpers.go",
|
"resource_helpers.go",
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package api
|
|
||||||
|
|
||||||
import (
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
)
|
|
||||||
|
|
||||||
// HasObjectMetaSystemFieldValues returns true if fields that are managed by the system on ObjectMeta have values.
|
|
||||||
func HasObjectMetaSystemFieldValues(meta *metav1.ObjectMeta) bool {
|
|
||||||
return !meta.CreationTimestamp.Time.IsZero() ||
|
|
||||||
len(meta.UID) != 0
|
|
||||||
}
|
|
|
@ -63,7 +63,6 @@ go_library(
|
||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/apis/extensions:go_default_library",
|
|
||||||
"//pkg/genericapiserver/endpoints/handlers:go_default_library",
|
"//pkg/genericapiserver/endpoints/handlers:go_default_library",
|
||||||
"//pkg/genericapiserver/endpoints/handlers/responsewriters:go_default_library",
|
"//pkg/genericapiserver/endpoints/handlers/responsewriters:go_default_library",
|
||||||
"//pkg/genericapiserver/registry/rest:go_default_library",
|
"//pkg/genericapiserver/registry/rest:go_default_library",
|
||||||
|
|
|
@ -20,7 +20,6 @@ go_test(
|
||||||
library = ":go_default_library",
|
library = ":go_default_library",
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/apis/authentication:go_default_library",
|
|
||||||
"//pkg/apis/batch:go_default_library",
|
"//pkg/apis/batch:go_default_library",
|
||||||
"//pkg/genericapiserver/endpoints/handlers/responsewriters:go_default_library",
|
"//pkg/genericapiserver/endpoints/handlers/responsewriters:go_default_library",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
||||||
|
@ -28,6 +27,7 @@ go_test(
|
||||||
"//vendor:k8s.io/apiserver/pkg/authentication/user",
|
"//vendor:k8s.io/apiserver/pkg/authentication/user",
|
||||||
"//vendor:k8s.io/apiserver/pkg/authorization/authorizer",
|
"//vendor:k8s.io/apiserver/pkg/authorization/authorizer",
|
||||||
"//vendor:k8s.io/apiserver/pkg/endpoints/request",
|
"//vendor:k8s.io/apiserver/pkg/endpoints/request",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/apis/authentication",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -43,8 +43,6 @@ go_library(
|
||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api:go_default_library",
|
|
||||||
"//pkg/apis/authentication:go_default_library",
|
|
||||||
"//pkg/genericapiserver/endpoints/handlers/responsewriters:go_default_library",
|
"//pkg/genericapiserver/endpoints/handlers/responsewriters:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:github.com/pborman/uuid",
|
"//vendor:github.com/pborman/uuid",
|
||||||
|
@ -56,6 +54,8 @@ go_library(
|
||||||
"//vendor:k8s.io/apiserver/pkg/authorization/authorizer",
|
"//vendor:k8s.io/apiserver/pkg/authorization/authorizer",
|
||||||
"//vendor:k8s.io/apiserver/pkg/endpoints/request",
|
"//vendor:k8s.io/apiserver/pkg/endpoints/request",
|
||||||
"//vendor:k8s.io/apiserver/pkg/server/httplog",
|
"//vendor:k8s.io/apiserver/pkg/server/httplog",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/api",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/apis/authentication",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ import (
|
||||||
|
|
||||||
utilnet "k8s.io/apimachinery/pkg/util/net"
|
utilnet "k8s.io/apimachinery/pkg/util/net"
|
||||||
"k8s.io/apiserver/pkg/endpoints/request"
|
"k8s.io/apiserver/pkg/endpoints/request"
|
||||||
authenticationapi "k8s.io/kubernetes/pkg/apis/authentication"
|
authenticationapi "k8s.io/client-go/pkg/apis/authentication"
|
||||||
"k8s.io/kubernetes/pkg/genericapiserver/endpoints/handlers/responsewriters"
|
"k8s.io/kubernetes/pkg/genericapiserver/endpoints/handlers/responsewriters"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,8 @@ import (
|
||||||
"k8s.io/apiserver/pkg/authorization/authorizer"
|
"k8s.io/apiserver/pkg/authorization/authorizer"
|
||||||
"k8s.io/apiserver/pkg/endpoints/request"
|
"k8s.io/apiserver/pkg/endpoints/request"
|
||||||
"k8s.io/apiserver/pkg/server/httplog"
|
"k8s.io/apiserver/pkg/server/httplog"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/client-go/pkg/api"
|
||||||
authenticationapi "k8s.io/kubernetes/pkg/apis/authentication"
|
authenticationapi "k8s.io/client-go/pkg/apis/authentication"
|
||||||
"k8s.io/kubernetes/pkg/genericapiserver/endpoints/handlers/responsewriters"
|
"k8s.io/kubernetes/pkg/genericapiserver/endpoints/handlers/responsewriters"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ import (
|
||||||
"k8s.io/apiserver/pkg/authentication/user"
|
"k8s.io/apiserver/pkg/authentication/user"
|
||||||
"k8s.io/apiserver/pkg/authorization/authorizer"
|
"k8s.io/apiserver/pkg/authorization/authorizer"
|
||||||
"k8s.io/apiserver/pkg/endpoints/request"
|
"k8s.io/apiserver/pkg/endpoints/request"
|
||||||
authenticationapi "k8s.io/kubernetes/pkg/apis/authentication"
|
authenticationapi "k8s.io/client-go/pkg/apis/authentication"
|
||||||
)
|
)
|
||||||
|
|
||||||
type impersonateAuthorizer struct{}
|
type impersonateAuthorizer struct{}
|
||||||
|
|
|
@ -38,7 +38,6 @@ import (
|
||||||
"k8s.io/apiserver/pkg/endpoints/handlers/negotiation"
|
"k8s.io/apiserver/pkg/endpoints/handlers/negotiation"
|
||||||
"k8s.io/apiserver/pkg/endpoints/metrics"
|
"k8s.io/apiserver/pkg/endpoints/metrics"
|
||||||
"k8s.io/apiserver/pkg/endpoints/request"
|
"k8s.io/apiserver/pkg/endpoints/request"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
|
||||||
"k8s.io/kubernetes/pkg/genericapiserver/endpoints/handlers"
|
"k8s.io/kubernetes/pkg/genericapiserver/endpoints/handlers"
|
||||||
"k8s.io/kubernetes/pkg/genericapiserver/registry/rest"
|
"k8s.io/kubernetes/pkg/genericapiserver/registry/rest"
|
||||||
|
|
||||||
|
@ -154,8 +153,9 @@ func (a *APIInstaller) getResourceKind(path string, storage rest.Storage) (schem
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO This keeps it doing what it was doing before, but it doesn't feel right.
|
// TODO: keep rid of extensions api group dependency here
|
||||||
if fqKind.Group == extensions.GroupName && fqKind.Kind == "ThirdPartyResourceData" {
|
// This keeps it doing what it was doing before, but it doesn't feel right.
|
||||||
|
if fqKind.Group == "extensions" && fqKind.Kind == "ThirdPartyResourceData" {
|
||||||
fqKindToRegister = a.group.GroupVersion.WithKind(fqKind.Kind)
|
fqKindToRegister = a.group.GroupVersion.WithKind(fqKind.Kind)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,11 +49,11 @@ func TestFillObjectMetaSystemFields(t *testing.T) {
|
||||||
func TestHasObjectMetaSystemFieldValues(t *testing.T) {
|
func TestHasObjectMetaSystemFieldValues(t *testing.T) {
|
||||||
ctx := genericapirequest.NewDefaultContext()
|
ctx := genericapirequest.NewDefaultContext()
|
||||||
resource := metav1.ObjectMeta{}
|
resource := metav1.ObjectMeta{}
|
||||||
if api.HasObjectMetaSystemFieldValues(&resource) {
|
if metav1.HasObjectMetaSystemFieldValues(&resource) {
|
||||||
t.Errorf("the resource does not have all fields yet populated, but incorrectly reports it does")
|
t.Errorf("the resource does not have all fields yet populated, but incorrectly reports it does")
|
||||||
}
|
}
|
||||||
FillObjectMetaSystemFields(ctx, &resource)
|
FillObjectMetaSystemFields(ctx, &resource)
|
||||||
if !api.HasObjectMetaSystemFieldValues(&resource) {
|
if !metav1.HasObjectMetaSystemFieldValues(&resource) {
|
||||||
t.Errorf("the resource does have all fields populated, but incorrectly reports it does not")
|
t.Errorf("the resource does have all fields populated, but incorrectly reports it does not")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -328,7 +328,7 @@ func (t *Tester) testCreateHasMetadata(valid runtime.Object) {
|
||||||
t.Fatalf("Unexpected object from result: %#v", obj)
|
t.Fatalf("Unexpected object from result: %#v", obj)
|
||||||
}
|
}
|
||||||
defer t.delete(t.TestContext(), obj)
|
defer t.delete(t.TestContext(), obj)
|
||||||
if !api.HasObjectMetaSystemFieldValues(objectMeta) {
|
if !metav1.HasObjectMetaSystemFieldValues(objectMeta) {
|
||||||
t.Errorf("storage did not populate object meta field values")
|
t.Errorf("storage did not populate object meta field values")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,6 @@ go_test(
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/testapi:go_default_library",
|
"//pkg/api/testapi:go_default_library",
|
||||||
"//pkg/api/v1:go_default_library",
|
|
||||||
"//pkg/apis/extensions:go_default_library",
|
"//pkg/apis/extensions:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
"//pkg/generated/openapi:go_default_library",
|
"//pkg/generated/openapi:go_default_library",
|
||||||
|
@ -35,6 +34,7 @@ go_test(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
||||||
|
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/net",
|
"//vendor:k8s.io/apimachinery/pkg/util/net",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/version",
|
"//vendor:k8s.io/apimachinery/pkg/version",
|
||||||
|
|
|
@ -37,21 +37,42 @@ import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
utilnet "k8s.io/apimachinery/pkg/util/net"
|
utilnet "k8s.io/apimachinery/pkg/util/net"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/apimachinery/pkg/version"
|
"k8s.io/apimachinery/pkg/version"
|
||||||
"k8s.io/apiserver/pkg/authentication/user"
|
"k8s.io/apiserver/pkg/authentication/user"
|
||||||
"k8s.io/apiserver/pkg/authorization/authorizer"
|
"k8s.io/apiserver/pkg/authorization/authorizer"
|
||||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
|
||||||
openapigen "k8s.io/kubernetes/pkg/generated/openapi"
|
openapigen "k8s.io/kubernetes/pkg/generated/openapi"
|
||||||
"k8s.io/kubernetes/pkg/genericapiserver/registry/rest"
|
"k8s.io/kubernetes/pkg/genericapiserver/registry/rest"
|
||||||
etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing"
|
etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
extensionsGroupName = "extensions"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
v1GroupVersion = schema.GroupVersion{Group: "", Version: "v1"}
|
||||||
|
|
||||||
|
scheme = runtime.NewScheme()
|
||||||
|
codecs = serializer.NewCodecFactory(scheme)
|
||||||
|
parameterCodec = runtime.NewParameterCodec(scheme)
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
metav1.AddToGroupVersion(scheme, metav1.SchemeGroupVersion)
|
||||||
|
scheme.AddUnversionedTypes(v1GroupVersion,
|
||||||
|
&metav1.Status{},
|
||||||
|
&metav1.APIVersions{},
|
||||||
|
&metav1.APIGroupList{},
|
||||||
|
&metav1.APIGroup{},
|
||||||
|
&metav1.APIResourceList{},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// setUp is a convience function for setting up for (most) tests.
|
// setUp is a convience function for setting up for (most) tests.
|
||||||
func setUp(t *testing.T) (*etcdtesting.EtcdTestServer, Config, *assert.Assertions) {
|
func setUp(t *testing.T) (*etcdtesting.EtcdTestServer, Config, *assert.Assertions) {
|
||||||
etcdServer, _ := etcdtesting.NewUnsecuredEtcd3TestClientServer(t)
|
etcdServer, _ := etcdtesting.NewUnsecuredEtcd3TestClientServer(t)
|
||||||
|
@ -119,8 +140,8 @@ func TestInstallAPIGroups(t *testing.T) {
|
||||||
scheme := runtime.NewScheme()
|
scheme := runtime.NewScheme()
|
||||||
scheme.AddKnownTypeWithName(gv.WithKind("Getter"), getter.New())
|
scheme.AddKnownTypeWithName(gv.WithKind("Getter"), getter.New())
|
||||||
scheme.AddKnownTypeWithName(gv.WithKind("NoVerb"), noVerbs.New())
|
scheme.AddKnownTypeWithName(gv.WithKind("NoVerb"), noVerbs.New())
|
||||||
scheme.AddKnownTypes(v1.SchemeGroupVersion, &metav1.Status{})
|
scheme.AddKnownTypes(v1GroupVersion, &metav1.Status{})
|
||||||
metav1.AddToGroupVersion(scheme, v1.SchemeGroupVersion)
|
metav1.AddToGroupVersion(scheme, v1GroupVersion)
|
||||||
|
|
||||||
interfacesFor := func(version schema.GroupVersion) (*meta.VersionInterfaces, error) {
|
interfacesFor := func(version schema.GroupVersion) (*meta.VersionInterfaces, error) {
|
||||||
return &meta.VersionInterfaces{
|
return &meta.VersionInterfaces{
|
||||||
|
@ -146,15 +167,15 @@ func TestInstallAPIGroups(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
OptionsExternalVersion: &schema.GroupVersion{Version: "v1"},
|
OptionsExternalVersion: &schema.GroupVersion{Version: "v1"},
|
||||||
ParameterCodec: api.ParameterCodec,
|
ParameterCodec: parameterCodec,
|
||||||
NegotiatedSerializer: api.Codecs,
|
NegotiatedSerializer: codecs,
|
||||||
Scheme: scheme,
|
Scheme: scheme,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
apis := []APIGroupInfo{
|
apis := []APIGroupInfo{
|
||||||
testAPI(schema.GroupVersion{Group: "", Version: "v1"}),
|
testAPI(schema.GroupVersion{Group: "", Version: "v1"}),
|
||||||
testAPI(schema.GroupVersion{Group: "extensions", Version: "v1"}),
|
testAPI(schema.GroupVersion{Group: extensionsGroupName, Version: "v1"}),
|
||||||
testAPI(schema.GroupVersion{Group: "batch", Version: "v1"}),
|
testAPI(schema.GroupVersion{Group: "batch", Version: "v1"}),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -467,11 +488,11 @@ func TestDiscoveryAtAPIS(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
extensionsPreferredVersion := metav1.GroupVersionForDiscovery{
|
extensionsPreferredVersion := metav1.GroupVersionForDiscovery{
|
||||||
GroupVersion: extensions.GroupName + "/preferred",
|
GroupVersion: extensionsGroupName + "/preferred",
|
||||||
Version: "preferred",
|
Version: "preferred",
|
||||||
}
|
}
|
||||||
master.AddAPIGroupForDiscovery(metav1.APIGroup{
|
master.AddAPIGroupForDiscovery(metav1.APIGroup{
|
||||||
Name: extensions.GroupName,
|
Name: extensionsGroupName,
|
||||||
Versions: extensionsVersions,
|
Versions: extensionsVersions,
|
||||||
PreferredVersion: extensionsPreferredVersion,
|
PreferredVersion: extensionsPreferredVersion,
|
||||||
})
|
})
|
||||||
|
@ -483,13 +504,13 @@ func TestDiscoveryAtAPIS(t *testing.T) {
|
||||||
|
|
||||||
assert.Equal(1, len(groupList.Groups))
|
assert.Equal(1, len(groupList.Groups))
|
||||||
groupListGroup := groupList.Groups[0]
|
groupListGroup := groupList.Groups[0]
|
||||||
assert.Equal(extensions.GroupName, groupListGroup.Name)
|
assert.Equal(extensionsGroupName, groupListGroup.Name)
|
||||||
assert.Equal(extensionsVersions, groupListGroup.Versions)
|
assert.Equal(extensionsVersions, groupListGroup.Versions)
|
||||||
assert.Equal(extensionsPreferredVersion, groupListGroup.PreferredVersion)
|
assert.Equal(extensionsPreferredVersion, groupListGroup.PreferredVersion)
|
||||||
assert.Equal(master.discoveryAddresses.ServerAddressByClientCIDRs(utilnet.GetClientIP(&http.Request{})), groupListGroup.ServerAddressByClientCIDRs)
|
assert.Equal(master.discoveryAddresses.ServerAddressByClientCIDRs(utilnet.GetClientIP(&http.Request{})), groupListGroup.ServerAddressByClientCIDRs)
|
||||||
|
|
||||||
// Remove the group.
|
// Remove the group.
|
||||||
master.RemoveAPIGroupForDiscovery(extensions.GroupName)
|
master.RemoveAPIGroupForDiscovery(extensionsGroupName)
|
||||||
groupList, err = getGroupList(server)
|
groupList, err = getGroupList(server)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
|
|
|
@ -98,7 +98,7 @@ func TestServiceRegistryCreate(t *testing.T) {
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
created_service := created_svc.(*api.Service)
|
created_service := created_svc.(*api.Service)
|
||||||
if !api.HasObjectMetaSystemFieldValues(&created_service.ObjectMeta) {
|
if !metav1.HasObjectMetaSystemFieldValues(&created_service.ObjectMeta) {
|
||||||
t.Errorf("storage did not populate object meta field values")
|
t.Errorf("storage did not populate object meta field values")
|
||||||
}
|
}
|
||||||
if created_service.Name != "foo" {
|
if created_service.Name != "foo" {
|
||||||
|
@ -218,7 +218,7 @@ func TestServiceRegistryCreateMultiNodePortsService(t *testing.T) {
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
created_service := created_svc.(*api.Service)
|
created_service := created_svc.(*api.Service)
|
||||||
if !api.HasObjectMetaSystemFieldValues(&created_service.ObjectMeta) {
|
if !metav1.HasObjectMetaSystemFieldValues(&created_service.ObjectMeta) {
|
||||||
t.Errorf("storage did not populate object meta field values")
|
t.Errorf("storage did not populate object meta field values")
|
||||||
}
|
}
|
||||||
if created_service.Name != test.name {
|
if created_service.Name != test.name {
|
||||||
|
|
|
@ -35,13 +35,16 @@ go_test(
|
||||||
library = ":go_default_library",
|
library = ":go_default_library",
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api:go_default_library",
|
|
||||||
"//pkg/api/testapi:go_default_library",
|
|
||||||
"//pkg/storage/etcd/testing/testingcert:go_default_library",
|
"//pkg/storage/etcd/testing/testingcert:go_default_library",
|
||||||
"//vendor:github.com/coreos/etcd/integration",
|
"//vendor:github.com/coreos/etcd/integration",
|
||||||
"//vendor:github.com/coreos/etcd/pkg/transport",
|
"//vendor:github.com/coreos/etcd/pkg/transport",
|
||||||
"//vendor:golang.org/x/net/context",
|
"//vendor:golang.org/x/net/context",
|
||||||
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
|
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
||||||
|
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer",
|
||||||
"//vendor:k8s.io/apiserver/pkg/storage/storagebackend",
|
"//vendor:k8s.io/apiserver/pkg/storage/storagebackend",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/api",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/api/v1",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -25,16 +25,27 @@ import (
|
||||||
|
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
|
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
"k8s.io/apiserver/pkg/storage/storagebackend"
|
"k8s.io/apiserver/pkg/storage/storagebackend"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
clientapi "k8s.io/client-go/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
clientapiv1 "k8s.io/client-go/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/storage/etcd/testing/testingcert"
|
"k8s.io/kubernetes/pkg/storage/etcd/testing/testingcert"
|
||||||
|
|
||||||
"github.com/coreos/etcd/integration"
|
"github.com/coreos/etcd/integration"
|
||||||
"github.com/coreos/etcd/pkg/transport"
|
"github.com/coreos/etcd/pkg/transport"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestTLSConnection(t *testing.T) {
|
func TestTLSConnection(t *testing.T) {
|
||||||
|
scheme := runtime.NewScheme()
|
||||||
|
codecs := runtimeserializer.NewCodecFactory(scheme)
|
||||||
|
codec := codecs.LegacyCodec(schema.GroupVersion{Version: "v1"})
|
||||||
|
|
||||||
|
// TODO: use k8s.io/apiserver internal type instead of borrowing it from client-go
|
||||||
|
clientapi.AddToScheme(scheme)
|
||||||
|
clientapiv1.AddToScheme(scheme)
|
||||||
|
|
||||||
certFile, keyFile, caFile := configureTLSCerts(t)
|
certFile, keyFile, caFile := configureTLSCerts(t)
|
||||||
defer os.RemoveAll(filepath.Dir(certFile))
|
defer os.RemoveAll(filepath.Dir(certFile))
|
||||||
|
|
||||||
|
@ -56,14 +67,14 @@ func TestTLSConnection(t *testing.T) {
|
||||||
CertFile: certFile,
|
CertFile: certFile,
|
||||||
KeyFile: keyFile,
|
KeyFile: keyFile,
|
||||||
CAFile: caFile,
|
CAFile: caFile,
|
||||||
Codec: testapi.Default.Codec(),
|
Codec: codec,
|
||||||
}
|
}
|
||||||
storage, destroyFunc, err := newETCD3Storage(cfg)
|
storage, destroyFunc, err := newETCD3Storage(cfg)
|
||||||
defer destroyFunc()
|
defer destroyFunc()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
err = storage.Create(context.TODO(), "/abc", &api.Pod{}, nil, 0)
|
err = storage.Create(context.TODO(), "/abc", &clientapi.Pod{}, nil, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Create failed: %v", err)
|
t.Fatalf("Create failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -226,3 +226,9 @@ func NewUIDPreconditions(uid string) *Preconditions {
|
||||||
u := types.UID(uid)
|
u := types.UID(uid)
|
||||||
return &Preconditions{UID: &u}
|
return &Preconditions{UID: &u}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasObjectMetaSystemFieldValues returns true if fields that are managed by the system on ObjectMeta have values.
|
||||||
|
func HasObjectMetaSystemFieldValues(meta *ObjectMeta) bool {
|
||||||
|
return !meta.CreationTimestamp.Time.IsZero() ||
|
||||||
|
len(meta.UID) != 0
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue