Skip to content

Commit 33e16e8

Browse files
Merge pull request #15955 from deads2k/server-37-import
Automatic merge from submit-queue import prefix adds a fix for TSB from #15727
2 parents 233358f + f8dfe5a commit 33e16e8

File tree

83 files changed

+359
-1654
lines changed

Some content is hidden

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

83 files changed

+359
-1654
lines changed

pkg/api/legacy/install.go

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package legacy
2+
3+
import (
4+
"fmt"
5+
6+
"k8s.io/apimachinery/pkg/api/meta"
7+
"k8s.io/apimachinery/pkg/apimachinery"
8+
"k8s.io/apimachinery/pkg/apimachinery/registered"
9+
"k8s.io/apimachinery/pkg/runtime"
10+
"k8s.io/apimachinery/pkg/runtime/schema"
11+
"k8s.io/apimachinery/pkg/util/sets"
12+
kapi "k8s.io/kubernetes/pkg/api"
13+
)
14+
15+
var (
16+
accessor = meta.NewAccessor()
17+
coreV1 = schema.GroupVersion{Group: "", Version: "v1"}
18+
)
19+
20+
func InstallLegacy(group string, addToCore, addToCoreV1 func(*runtime.Scheme) error, rootScopedKinds sets.String, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
21+
interfacesFor := interfacesForGroup(group)
22+
23+
// install core V1 types temporarily into a local scheme to enumerate them
24+
mapper := meta.NewDefaultRESTMapper([]schema.GroupVersion{coreV1}, interfacesFor)
25+
localScheme := runtime.NewScheme()
26+
if err := addToCoreV1(localScheme); err != nil {
27+
panic(err)
28+
}
29+
for kind := range localScheme.KnownTypes(coreV1) {
30+
scope := meta.RESTScopeNamespace
31+
if rootScopedKinds.Has(kind) {
32+
scope = meta.RESTScopeRoot
33+
}
34+
mapper.Add(coreV1.WithKind(kind), scope)
35+
}
36+
37+
// register core v1 version. Should be done by kube (if the import dependencies are right).
38+
registry.RegisterVersions([]schema.GroupVersion{coreV1})
39+
if err := registry.EnableVersions(coreV1); err != nil {
40+
panic(err)
41+
}
42+
43+
// register types as core v1
44+
if err := addToCore(scheme); err != nil {
45+
panic(err)
46+
}
47+
if err := addToCoreV1(scheme); err != nil {
48+
panic(err)
49+
}
50+
51+
// add to group
52+
legacyGroupMeta := apimachinery.GroupMeta{
53+
GroupVersion: coreV1,
54+
GroupVersions: []schema.GroupVersion{coreV1},
55+
RESTMapper: mapper,
56+
SelfLinker: runtime.SelfLinker(accessor),
57+
InterfacesFor: interfacesFor,
58+
}
59+
if err := registry.RegisterGroup(legacyGroupMeta); err != nil {
60+
panic(err)
61+
}
62+
}
63+
64+
func interfacesForGroup(group string) func(version schema.GroupVersion) (*meta.VersionInterfaces, error) {
65+
return func(version schema.GroupVersion) (*meta.VersionInterfaces, error) {
66+
switch version {
67+
case coreV1:
68+
return &meta.VersionInterfaces{
69+
ObjectConvertor: kapi.Scheme,
70+
MetadataAccessor: accessor,
71+
}, nil
72+
73+
default:
74+
g, _ := kapi.Registry.Group(group)
75+
return nil, fmt.Errorf("unsupported storage version: %s (valid: %v)", version, g.GroupVersions)
76+
}
77+
}
78+
}

pkg/apps/apis/apps/install/apigroup.go

Lines changed: 0 additions & 32 deletions
This file was deleted.

pkg/apps/apis/apps/install/install.go

Lines changed: 19 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,34 @@
11
package install
22

33
import (
4-
"fmt"
5-
6-
"github.com/golang/glog"
7-
8-
"k8s.io/apimachinery/pkg/api/meta"
9-
"k8s.io/apimachinery/pkg/apimachinery"
4+
"k8s.io/apimachinery/pkg/apimachinery/announced"
5+
"k8s.io/apimachinery/pkg/apimachinery/registered"
106
"k8s.io/apimachinery/pkg/runtime"
11-
"k8s.io/apimachinery/pkg/runtime/schema"
12-
"k8s.io/apimachinery/pkg/util/sets"
137
kapi "k8s.io/kubernetes/pkg/api"
148

9+
legacy "github.com/openshift/origin/pkg/api/legacy"
1510
deployapi "github.com/openshift/origin/pkg/apps/apis/apps"
1611
deployapiv1 "github.com/openshift/origin/pkg/apps/apis/apps/v1"
12+
"k8s.io/apimachinery/pkg/util/sets"
1713
)
1814

19-
const importPrefix = "github.com/openshift/origin/pkg/apps/apis/apps"
20-
21-
var accessor = meta.NewAccessor()
22-
23-
// availableVersions lists all known external versions for this group from most preferred to least preferred
24-
var availableVersions = []schema.GroupVersion{deployapiv1.LegacySchemeGroupVersion}
25-
2615
func init() {
27-
kapi.Registry.RegisterVersions(availableVersions)
28-
externalVersions := []schema.GroupVersion{}
29-
for _, v := range availableVersions {
30-
if kapi.Registry.IsAllowedVersion(v) {
31-
externalVersions = append(externalVersions, v)
32-
}
33-
}
34-
if len(externalVersions) == 0 {
35-
glog.Infof("No version is registered for group %v", deployapi.LegacyGroupName)
36-
return
37-
}
38-
39-
if err := kapi.Registry.EnableVersions(externalVersions...); err != nil {
40-
panic(err)
41-
}
42-
if err := enableVersions(externalVersions); err != nil {
43-
panic(err)
44-
}
45-
46-
installApiGroup()
16+
legacy.InstallLegacy(deployapi.GroupName, deployapi.AddToSchemeInCoreGroup, deployapiv1.AddToSchemeInCoreGroup, sets.NewString(), kapi.Registry, kapi.Scheme)
17+
Install(kapi.GroupFactoryRegistry, kapi.Registry, kapi.Scheme)
4718
}
4819

49-
// TODO: enableVersions should be centralized rather than spread in each API
50-
// group.
51-
// We can combine kapi.Registry.RegisterVersions, kapi.Registry.EnableVersions and
52-
// kapi.Registry.RegisterGroup once we have moved enableVersions there.
53-
func enableVersions(externalVersions []schema.GroupVersion) error {
54-
addVersionsToScheme(externalVersions...)
55-
preferredExternalVersion := externalVersions[0]
56-
57-
groupMeta := apimachinery.GroupMeta{
58-
GroupVersion: preferredExternalVersion,
59-
GroupVersions: externalVersions,
60-
RESTMapper: newRESTMapper(externalVersions),
61-
SelfLinker: runtime.SelfLinker(accessor),
62-
InterfacesFor: interfacesFor,
63-
}
64-
65-
if err := kapi.Registry.RegisterGroup(groupMeta); err != nil {
66-
return err
67-
}
68-
return nil
69-
}
70-
71-
func addVersionsToScheme(externalVersions ...schema.GroupVersion) {
72-
// add the internal version to Scheme
73-
deployapi.AddToSchemeInCoreGroup(kapi.Scheme)
74-
// add the enabled external versions to Scheme
75-
for _, v := range externalVersions {
76-
if !kapi.Registry.IsEnabledVersion(v) {
77-
glog.Errorf("Version %s is not enabled, so it will not be added to the Scheme.", v)
78-
continue
79-
}
80-
switch v {
81-
case deployapiv1.LegacySchemeGroupVersion:
82-
deployapiv1.AddToSchemeInCoreGroup(kapi.Scheme)
83-
84-
default:
85-
glog.Errorf("Version %s is not known, so it will not be added to the Scheme.", v)
86-
continue
87-
}
88-
}
89-
}
90-
91-
func newRESTMapper(externalVersions []schema.GroupVersion) meta.RESTMapper {
92-
rootScoped := sets.NewString()
93-
ignoredKinds := sets.NewString()
94-
return meta.NewDefaultRESTMapperFromScheme(externalVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped, kapi.Scheme)
95-
}
96-
97-
func interfacesFor(version schema.GroupVersion) (*meta.VersionInterfaces, error) {
98-
switch version {
99-
case deployapiv1.LegacySchemeGroupVersion:
100-
return &meta.VersionInterfaces{
101-
ObjectConvertor: kapi.Scheme,
102-
MetadataAccessor: accessor,
103-
}, nil
104-
105-
default:
106-
g, _ := kapi.Registry.Group(deployapi.LegacyGroupName)
107-
return nil, fmt.Errorf("unsupported storage version: %s (valid: %v)", version, g.GroupVersions)
20+
// Install registers the API group and adds types to a scheme
21+
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
22+
if err := announced.NewGroupMetaFactory(
23+
&announced.GroupMetaFactoryArgs{
24+
GroupName: deployapi.GroupName,
25+
VersionPreferenceOrder: []string{deployapiv1.SchemeGroupVersion.Version},
26+
AddInternalObjectsToScheme: deployapi.AddToScheme,
27+
},
28+
announced.VersionToSchemeFunc{
29+
deployapiv1.SchemeGroupVersion.Version: deployapiv1.AddToScheme,
30+
},
31+
).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil {
32+
panic(err)
10833
}
10934
}

pkg/authorization/apis/authorization/install/apigroup.go

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)