Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
18609e17
Commit
18609e17
authored
Jan 30, 2015
by
nikhiljindal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moving /watch, /proxy and /redirect registration to go-restful
parent
acbadc8a
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
59 additions
and
40 deletions
+59
-40
api_installer.go
pkg/apiserver/api_installer.go
+0
-0
apiserver.go
pkg/apiserver/apiserver.go
+0
-0
apiserver_test.go
pkg/apiserver/apiserver_test.go
+32
-26
proxy_test.go
pkg/apiserver/proxy_test.go
+21
-9
redirect_test.go
pkg/apiserver/redirect_test.go
+1
-1
master.go
pkg/master/master.go
+5
-3
auth_test.go
test/integration/auth_test.go
+0
-1
No files found.
pkg/apiserver/api_installer.go
0 → 100644
View file @
18609e17
This diff is collapsed.
Click to expand it.
pkg/apiserver/apiserver.go
View file @
18609e17
This diff is collapsed.
Click to expand it.
pkg/apiserver/apiserver_test.go
View file @
18609e17
...
...
@@ -55,7 +55,7 @@ var codec = runtime.CodecFor(api.Scheme, testVersion)
var
accessor
=
meta
.
NewAccessor
()
var
versioner
runtime
.
ResourceVersioner
=
accessor
var
selfLinker
runtime
.
SelfLinker
=
accessor
var
mapper
meta
.
RESTMapper
var
mapper
,
namespaceMapper
,
legacyNamespaceMapper
meta
.
RESTMapper
// The mappers with namespace and with legacy namespace scopes.
var
admissionControl
admission
.
Interface
func
interfacesFor
(
version
string
)
(
*
meta
.
VersionInterfaces
,
error
)
{
...
...
@@ -71,6 +71,19 @@ func interfacesFor(version string) (*meta.VersionInterfaces, error) {
}
}
func
newMapper
()
*
meta
.
DefaultRESTMapper
{
return
meta
.
NewDefaultRESTMapper
(
versions
,
func
(
version
string
)
(
*
meta
.
VersionInterfaces
,
bool
)
{
interfaces
,
err
:=
interfacesFor
(
version
)
if
err
!=
nil
{
return
nil
,
false
}
return
interfaces
,
true
},
)
}
func
init
()
{
// Certain API objects are returned regardless of the contents of storage:
// api.Status is returned in errors
...
...
@@ -83,26 +96,20 @@ func init() {
api
.
Scheme
.
AddKnownTypes
(
testVersion
,
&
Simple
{},
&
SimpleList
{},
&
api
.
Status
{})
defMapper
:=
meta
.
NewDefaultRESTMapper
(
versions
,
func
(
version
string
)
(
*
meta
.
VersionInterfaces
,
bool
)
{
interfaces
,
err
:=
interfacesFor
(
version
)
if
err
!=
nil
{
return
nil
,
false
}
return
interfaces
,
true
},
)
nsMapper
:=
newMapper
()
legacyNsMapper
:=
newMapper
()
// enumerate all supported versions, get the kinds, and register with the mapper how to address our resources
for
_
,
version
:=
range
versions
{
for
kind
:=
range
api
.
Scheme
.
KnownTypes
(
version
)
{
mixedCase
:=
true
scope
:=
meta
.
RESTScopeNamespaceLegacy
defMapper
.
Add
(
scop
e
,
kind
,
version
,
mixedCase
)
legacyNsMapper
.
Add
(
meta
.
RESTScopeNamespaceLegacy
,
kind
,
version
,
mixedCase
)
nsMapper
.
Add
(
meta
.
RESTScopeNamespac
e
,
kind
,
version
,
mixedCase
)
}
}
mapper
=
defMapper
mapper
=
legacyNsMapper
legacyNamespaceMapper
=
legacyNsMapper
namespaceMapper
=
nsMapper
admissionControl
=
admit
.
NewAlwaysAdmit
()
}
...
...
@@ -274,7 +281,7 @@ func TestNotFound(t *testing.T) {
"PUT without extra segment"
:
{
"PUT"
,
"/prefix/version/foo"
,
http
.
StatusMethodNotAllowed
},
"PUT with extra segment"
:
{
"PUT"
,
"/prefix/version/foo/bar/baz"
,
http
.
StatusNotFound
},
"watch missing storage"
:
{
"GET"
,
"/prefix/version/watch/"
,
http
.
StatusNotFound
},
"watch with bad method"
:
{
"POST"
,
"/prefix/version/watch/foo/bar"
,
http
.
Status
NotFoun
d
},
"watch with bad method"
:
{
"POST"
,
"/prefix/version/watch/foo/bar"
,
http
.
Status
MethodNotAllowe
d
},
}
handler
:=
Handle
(
map
[
string
]
RESTStorage
{
"foo"
:
&
SimpleRESTStorage
{},
...
...
@@ -318,15 +325,15 @@ func TestUnimplementedRESTStorage(t *testing.T) {
ErrCode
int
}
cases
:=
map
[
string
]
T
{
"GET object"
:
{
"GET"
,
"/prefix/version/foo/bar"
,
http
.
StatusNotFound
},
"GET list"
:
{
"GET"
,
"/prefix/version/foo"
,
http
.
StatusNotFound
},
"POST list"
:
{
"POST"
,
"/prefix/version/foo"
,
http
.
StatusNotFound
},
"PUT object"
:
{
"PUT"
,
"/prefix/version/foo/bar"
,
http
.
StatusNotFound
},
"DELETE object"
:
{
"DELETE"
,
"/prefix/version/foo/bar"
,
http
.
StatusNotFound
},
//"watch list": {"GET", "/prefix/version/watch/foo"
},
//"watch object": {"GET", "/prefix/version/watch/foo/bar"
},
"proxy object"
:
{
"GET"
,
"/prefix/version/proxy/foo/bar"
,
http
.
Status
MethodNotAllowe
d
},
"redirect object"
:
{
"GET"
,
"/prefix/version/redirect/foo/bar"
,
http
.
Status
MethodNotAllowe
d
},
"GET object"
:
{
"GET"
,
"/prefix/version/foo/bar"
,
http
.
StatusNotFound
},
"GET list"
:
{
"GET"
,
"/prefix/version/foo"
,
http
.
StatusNotFound
},
"POST list"
:
{
"POST"
,
"/prefix/version/foo"
,
http
.
StatusNotFound
},
"PUT object"
:
{
"PUT"
,
"/prefix/version/foo/bar"
,
http
.
StatusNotFound
},
"DELETE object"
:
{
"DELETE"
,
"/prefix/version/foo/bar"
,
http
.
StatusNotFound
},
"watch list"
:
{
"GET"
,
"/prefix/version/watch/foo"
,
http
.
StatusNotFound
},
"watch object"
:
{
"GET"
,
"/prefix/version/watch/foo/bar"
,
http
.
StatusNotFound
},
"proxy object"
:
{
"GET"
,
"/prefix/version/proxy/foo/bar"
,
http
.
Status
NotFoun
d
},
"redirect object"
:
{
"GET"
,
"/prefix/version/redirect/foo/bar"
,
http
.
Status
NotFoun
d
},
}
handler
:=
Handle
(
map
[
string
]
RESTStorage
{
"foo"
:
UnimplementedRESTStorage
{},
...
...
@@ -347,9 +354,8 @@ func TestUnimplementedRESTStorage(t *testing.T) {
}
defer
response
.
Body
.
Close
()
data
,
_
:=
ioutil
.
ReadAll
(
response
.
Body
)
t
.
Logf
(
"resp: %s"
,
string
(
data
))
if
response
.
StatusCode
!=
v
.
ErrCode
{
t
.
Errorf
(
"%s: expected %d for %s, Got %s"
,
k
,
http
.
StatusNotFound
,
v
.
Method
,
string
(
data
))
t
.
Errorf
(
"%s: expected %d for %s, Got %s"
,
k
,
v
.
ErrCode
,
v
.
Method
,
string
(
data
))
continue
}
}
...
...
pkg/apiserver/proxy_test.go
View file @
18609e17
...
...
@@ -236,18 +236,30 @@ func TestProxy(t *testing.T) {
resourceLocation
:
proxyServer
.
URL
,
expectedResourceNamespace
:
item
.
reqNamespace
,
}
handler
:=
Handle
(
map
[
string
]
RESTStorage
{
namespaceHandler
:=
Handle
(
map
[
string
]
RESTStorage
{
"foo"
:
simpleStorage
,
},
codec
,
"/prefix"
,
"version"
,
selfLinker
,
admissionControl
,
namespaceMapper
)
namespaceServer
:=
httptest
.
NewServer
(
namespaceHandler
)
defer
namespaceServer
.
Close
()
legacyNamespaceHandler
:=
Handle
(
map
[
string
]
RESTStorage
{
"foo"
:
simpleStorage
,
},
codec
,
"/prefix"
,
"version"
,
selfLinker
,
admissionControl
,
m
apper
)
server
:=
httptest
.
NewServer
(
h
andler
)
defer
s
erver
.
Close
()
},
codec
,
"/prefix"
,
"version"
,
selfLinker
,
admissionControl
,
legacyNamespaceM
apper
)
legacyNamespaceServer
:=
httptest
.
NewServer
(
legacyNamespaceH
andler
)
defer
legacyNamespaceS
erver
.
Close
()
// test each supported URL pattern for finding the redirection resource in the proxy in a particular namespace
proxyTestPatterns
:=
[]
string
{
"/prefix/version/proxy/foo/id"
+
item
.
path
+
"?namespace="
+
item
.
reqNamespace
,
"/prefix/version/proxy/ns/"
+
item
.
reqNamespace
+
"/foo/id"
+
item
.
path
,
serverPatterns
:=
[]
struct
{
server
*
httptest
.
Server
proxyTestPattern
string
}{
{
namespaceServer
,
"/prefix/version/proxy/ns/"
+
item
.
reqNamespace
+
"/foo/id"
+
item
.
path
},
{
legacyNamespaceServer
,
"/prefix/version/proxy/foo/id"
+
item
.
path
+
"?namespace="
+
item
.
reqNamespace
},
}
for
_
,
proxyTestPattern
:=
range
proxyTestPatterns
{
for
_
,
serverPattern
:=
range
serverPatterns
{
server
:=
serverPattern
.
server
proxyTestPattern
:=
serverPattern
.
proxyTestPattern
req
,
err
:=
http
.
NewRequest
(
item
.
method
,
server
.
URL
+
proxyTestPattern
,
...
...
@@ -268,7 +280,7 @@ func TestProxy(t *testing.T) {
}
resp
.
Body
.
Close
()
if
e
,
a
:=
item
.
respBody
,
string
(
gotResp
);
e
!=
a
{
t
.
Errorf
(
"%v - expected %v, got %v
"
,
item
.
method
,
e
,
a
)
t
.
Errorf
(
"%v - expected %v, got %v
. url: %#v"
,
item
.
method
,
e
,
a
,
req
.
URL
)
}
}
}
...
...
pkg/apiserver/redirect_test.go
View file @
18609e17
...
...
@@ -84,7 +84,7 @@ func TestRedirectWithNamespaces(t *testing.T) {
}
handler
:=
Handle
(
map
[
string
]
RESTStorage
{
"foo"
:
simpleStorage
,
},
codec
,
"/prefix"
,
"version"
,
selfLinker
,
admissionControl
,
m
apper
)
},
codec
,
"/prefix"
,
"version"
,
selfLinker
,
admissionControl
,
namespaceM
apper
)
server
:=
httptest
.
NewServer
(
handler
)
defer
server
.
Close
()
...
...
pkg/master/master.go
View file @
18609e17
...
...
@@ -317,6 +317,8 @@ func New(c *Config) *Master {
m
.
mux
=
mux
m
.
handlerContainer
=
NewHandlerContainer
(
mux
)
}
// Use CurlyRouter to be able to use regular expressions in paths. Regular expressions are required in paths for example for proxy (where the path is proxy/{kind}/{name}/{*})
m
.
handlerContainer
.
Router
(
restful
.
CurlyRouter
{})
m
.
muxHelper
=
&
apiserver
.
MuxHelper
{
m
.
mux
,
[]
string
{}}
m
.
masterServices
=
util
.
NewRunner
(
m
.
serviceWriterLoop
,
m
.
roServiceWriterLoop
)
...
...
@@ -401,14 +403,14 @@ func (m *Master) init(c *Config) {
}
apiVersions
:=
[]
string
{
"v1beta1"
,
"v1beta2"
}
if
err
:=
apiserver
.
NewAPIGroupVersion
(
m
.
api_v1beta1
())
.
InstallREST
(
m
.
handlerContainer
,
m
.
muxHelper
,
c
.
APIPrefix
,
"v1beta1"
);
err
!=
nil
{
if
err
:=
apiserver
.
NewAPIGroupVersion
(
m
.
api_v1beta1
())
.
InstallREST
(
m
.
handlerContainer
,
c
.
APIPrefix
,
"v1beta1"
);
err
!=
nil
{
glog
.
Fatalf
(
"Unable to setup API v1beta1: %v"
,
err
)
}
if
err
:=
apiserver
.
NewAPIGroupVersion
(
m
.
api_v1beta2
())
.
InstallREST
(
m
.
handlerContainer
,
m
.
muxHelper
,
c
.
APIPrefix
,
"v1beta2"
);
err
!=
nil
{
if
err
:=
apiserver
.
NewAPIGroupVersion
(
m
.
api_v1beta2
())
.
InstallREST
(
m
.
handlerContainer
,
c
.
APIPrefix
,
"v1beta2"
);
err
!=
nil
{
glog
.
Fatalf
(
"Unable to setup API v1beta2: %v"
,
err
)
}
if
c
.
EnableV1Beta3
{
if
err
:=
apiserver
.
NewAPIGroupVersion
(
m
.
api_v1beta3
())
.
InstallREST
(
m
.
handlerContainer
,
m
.
muxHelper
,
c
.
APIPrefix
,
"v1beta3"
);
err
!=
nil
{
if
err
:=
apiserver
.
NewAPIGroupVersion
(
m
.
api_v1beta3
())
.
InstallREST
(
m
.
handlerContainer
,
c
.
APIPrefix
,
"v1beta3"
);
err
!=
nil
{
glog
.
Fatalf
(
"Unable to setup API v1beta3: %v"
,
err
)
}
apiVersions
=
[]
string
{
"v1beta1"
,
"v1beta2"
,
"v1beta3"
}
...
...
test/integration/auth_test.go
View file @
18609e17
...
...
@@ -259,7 +259,6 @@ func getTestRequests() []struct {
{
"DELETE"
,
"/api/v1beta1/foo"
+
timeoutFlag
,
""
,
code404
},
// Special verbs on nodes
// TODO: Will become 405 once these are converted to go-restful
{
"GET"
,
"/api/v1beta1/proxy/minions/a"
,
""
,
code404
},
{
"GET"
,
"/api/v1beta1/redirect/minions/a"
,
""
,
code404
},
// TODO: test .../watch/..., which doesn't end before the test timeout.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment