mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	comments 1: comments
This commit is contained in:
		@@ -42,11 +42,6 @@ var specialVerbs = map[string]bool{
 | 
			
		||||
	"watch":    true,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// namespaceSubresouces is a set of all the subresources available on a namespace resource.  This is a special case because
 | 
			
		||||
// URLs look like api/v1beta3/namspaces/<namespace name>/[subresource | resource].  We need to be able to distinguish the two
 | 
			
		||||
// different cases.
 | 
			
		||||
var namespaceSubresources = util.NewStringSet("status", "finalize")
 | 
			
		||||
 | 
			
		||||
// Constant for the retry-after interval on rate limiting.
 | 
			
		||||
// TODO: maybe make this dynamic? or user-adjustable?
 | 
			
		||||
const RetryAfter = "1"
 | 
			
		||||
@@ -244,7 +239,9 @@ type APIRequestInfo struct {
 | 
			
		||||
	Namespace  string
 | 
			
		||||
	// Resource is the name of the resource being requested.  This is not the kind.  For example: pods
 | 
			
		||||
	Resource string
 | 
			
		||||
	// Subresource is the name of the subresource being requested.  This is not the kind or the resource.  For example: status for a pods/pod-name/status
 | 
			
		||||
	// Subresource is the name of the subresource being requested.  This is a different resource, scoped to the parent resource, but it may have a different kind.
 | 
			
		||||
	// For instance, /pods has the resource "pods" and the kind "Pod", while /pods/foo/status has the resource "pods", the sub resource "status", and the kind "Pod"
 | 
			
		||||
	// (because status operates on pods). The binding resource for a pod though may be /pods/foo/binding, which has resource "pods", subresource "binding", and kind "Binding".
 | 
			
		||||
	Subresource string
 | 
			
		||||
	// Kind is the type of object being manipulated.  For example: Pod
 | 
			
		||||
	Kind string
 | 
			
		||||
@@ -262,6 +259,7 @@ type APIRequestInfoResolver struct {
 | 
			
		||||
	RestMapper  meta.RESTMapper
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TODO write an integration test against the swagger doc to test the APIRequestInfo and match up behavior to responses
 | 
			
		||||
// GetAPIRequestInfo returns the information from the http request.  If error is not nil, APIRequestInfo holds the information as best it is known before the failure
 | 
			
		||||
// Valid Inputs:
 | 
			
		||||
// Storage paths
 | 
			
		||||
@@ -340,7 +338,7 @@ func (r *APIRequestInfoResolver) GetAPIRequestInfo(req *http.Request) (APIReques
 | 
			
		||||
 | 
			
		||||
			// if there is another step after the namespace name and it is not a known namespace subresource
 | 
			
		||||
			// move currentParts to include it as a resource in its own right
 | 
			
		||||
			if len(currentParts) > 2 && !namespaceSubresources.Has(currentParts[2]) {
 | 
			
		||||
			if len(currentParts) > 2 {
 | 
			
		||||
				currentParts = currentParts[2:]
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -182,9 +182,7 @@ func TestGetAPIRequestInfo(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
		// subresource identification
 | 
			
		||||
		{"GET", "/namespaces/other/pods/foo/status", "get", "", "other", "pods", "status", "Pod", "foo", []string{"pods", "foo", "status"}},
 | 
			
		||||
		{"GET", "/namespaces/other/finalize", "get", "", "other", "namespaces", "finalize", "Namespace", "other", []string{"namespaces", "other", "finalize"}},
 | 
			
		||||
		{"PUT", "/namespaces/other/status", "update", "", "other", "namespaces", "status", "Namespace", "other", []string{"namespaces", "other", "status"}},
 | 
			
		||||
		{"PUT", "/namespaces/other/anything", "update", "", "other", "anything", "", "", "", []string{"anything"}},
 | 
			
		||||
		{"PUT", "/namespaces/other/finalize", "update", "", "other", "finalize", "", "", "", []string{"finalize"}},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	apiRequestInfoResolver := &APIRequestInfoResolver{util.NewStringSet("api"), latest.RESTMapper}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user