mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Storage factory should not hardcode special resources
Prepares for future movement
This commit is contained in:
		@@ -57,6 +57,8 @@ type DefaultStorageFactory struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	Overrides map[unversioned.GroupResource]groupResourceOverrides
 | 
						Overrides map[unversioned.GroupResource]groupResourceOverrides
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						DefaultResourcePrefixes map[unversioned.GroupResource]string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// DefaultMediaType is the media type used to store resources. If it is not set, "application/json" is used.
 | 
						// DefaultMediaType is the media type used to store resources. If it is not set, "application/json" is used.
 | 
				
			||||||
	DefaultMediaType string
 | 
						DefaultMediaType string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -99,6 +101,17 @@ var _ StorageFactory = &DefaultStorageFactory{}
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const AllResources = "*"
 | 
					const AllResources = "*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// specialDefaultResourcePrefixes are prefixes compiled into Kubernetes.
 | 
				
			||||||
 | 
					// TODO: move out of this package, it is not generic
 | 
				
			||||||
 | 
					var specialDefaultResourcePrefixes = map[unversioned.GroupResource]string{
 | 
				
			||||||
 | 
						unversioned.GroupResource{Group: "", Resource: "replicationControllers"}: "controllers",
 | 
				
			||||||
 | 
						unversioned.GroupResource{Group: "", Resource: "replicationcontrollers"}: "controllers",
 | 
				
			||||||
 | 
						unversioned.GroupResource{Group: "", Resource: "endpoints"}:              "services/endpoints",
 | 
				
			||||||
 | 
						unversioned.GroupResource{Group: "", Resource: "nodes"}:                  "minions",
 | 
				
			||||||
 | 
						unversioned.GroupResource{Group: "", Resource: "services"}:               "services/specs",
 | 
				
			||||||
 | 
						unversioned.GroupResource{Group: "extensions", Resource: "ingresses"}:    "ingress",
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewDefaultStorageFactory(config storagebackend.Config, defaultMediaType string, defaultSerializer runtime.StorageSerializer, resourceEncodingConfig ResourceEncodingConfig, resourceConfig APIResourceConfigSource) *DefaultStorageFactory {
 | 
					func NewDefaultStorageFactory(config storagebackend.Config, defaultMediaType string, defaultSerializer runtime.StorageSerializer, resourceEncodingConfig ResourceEncodingConfig, resourceConfig APIResourceConfigSource) *DefaultStorageFactory {
 | 
				
			||||||
	if len(defaultMediaType) == 0 {
 | 
						if len(defaultMediaType) == 0 {
 | 
				
			||||||
		defaultMediaType = runtime.ContentTypeJSON
 | 
							defaultMediaType = runtime.ContentTypeJSON
 | 
				
			||||||
@@ -110,6 +123,7 @@ func NewDefaultStorageFactory(config storagebackend.Config, defaultMediaType str
 | 
				
			|||||||
		DefaultSerializer:       defaultSerializer,
 | 
							DefaultSerializer:       defaultSerializer,
 | 
				
			||||||
		ResourceEncodingConfig:  resourceEncodingConfig,
 | 
							ResourceEncodingConfig:  resourceEncodingConfig,
 | 
				
			||||||
		APIResourceConfigSource: resourceConfig,
 | 
							APIResourceConfigSource: resourceConfig,
 | 
				
			||||||
 | 
							DefaultResourcePrefixes: specialDefaultResourcePrefixes,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		newStorageCodecFn: NewStorageCodec,
 | 
							newStorageCodecFn: NewStorageCodec,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -283,21 +297,12 @@ func NewStorageCodec(storageMediaType string, ns runtime.StorageSerializer, stor
 | 
				
			|||||||
	return runtime.NewCodec(encoder, decoder), nil
 | 
						return runtime.NewCodec(encoder, decoder), nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var specialDefaultResourcePrefixes = map[unversioned.GroupResource]string{
 | 
					 | 
				
			||||||
	unversioned.GroupResource{Group: "", Resource: "replicationControllers"}: "controllers",
 | 
					 | 
				
			||||||
	unversioned.GroupResource{Group: "", Resource: "replicationcontrollers"}: "controllers",
 | 
					 | 
				
			||||||
	unversioned.GroupResource{Group: "", Resource: "endpoints"}:              "services/endpoints",
 | 
					 | 
				
			||||||
	unversioned.GroupResource{Group: "", Resource: "nodes"}:                  "minions",
 | 
					 | 
				
			||||||
	unversioned.GroupResource{Group: "", Resource: "services"}:               "services/specs",
 | 
					 | 
				
			||||||
	unversioned.GroupResource{Group: "extensions", Resource: "ingresses"}:    "ingress",
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (s *DefaultStorageFactory) ResourcePrefix(groupResource unversioned.GroupResource) string {
 | 
					func (s *DefaultStorageFactory) ResourcePrefix(groupResource unversioned.GroupResource) string {
 | 
				
			||||||
	chosenStorageResource := s.getStorageGroupResource(groupResource)
 | 
						chosenStorageResource := s.getStorageGroupResource(groupResource)
 | 
				
			||||||
	groupOverride := s.Overrides[getAllResourcesAlias(chosenStorageResource)]
 | 
						groupOverride := s.Overrides[getAllResourcesAlias(chosenStorageResource)]
 | 
				
			||||||
	exactResourceOverride := s.Overrides[chosenStorageResource]
 | 
						exactResourceOverride := s.Overrides[chosenStorageResource]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	etcdResourcePrefix := specialDefaultResourcePrefixes[chosenStorageResource]
 | 
						etcdResourcePrefix := s.DefaultResourcePrefixes[chosenStorageResource]
 | 
				
			||||||
	if len(groupOverride.etcdResourcePrefix) > 0 {
 | 
						if len(groupOverride.etcdResourcePrefix) > 0 {
 | 
				
			||||||
		etcdResourcePrefix = groupOverride.etcdResourcePrefix
 | 
							etcdResourcePrefix = groupOverride.etcdResourcePrefix
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user