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
7e65d569
Commit
7e65d569
authored
Oct 27, 2016
by
deads2k
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove non-reuseable bits of MasterServer
parent
cda55a78
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
194 additions
and
180 deletions
+194
-180
reststorage_interfaces.go
pkg/genericapiserver/reststorage_interfaces.go
+1
-0
BUILD
pkg/master/BUILD
+0
-12
master.go
pkg/master/master.go
+0
-0
master_test.go
pkg/master/master_test.go
+15
-153
thirdparty.go
pkg/master/thirdparty/thirdparty.go
+12
-4
storage_apps.go
pkg/registry/apps/rest/storage_apps.go
+4
-0
storage_authentication.go
pkg/registry/authentication/rest/storage_authentication.go
+4
-0
storage_authorization.go
pkg/registry/authorization/rest/storage_authorization.go
+4
-0
storage_autoscaling.go
pkg/registry/autoscaling/rest/storage_autoscaling.go
+4
-0
storage_batch.go
pkg/registry/batch/rest/storage_batch.go
+4
-0
storage_certificates.go
pkg/registry/certificates/rest/storage_certificates.go
+4
-0
BUILD
pkg/registry/core/rest/BUILD
+14
-0
storage_core.go
pkg/registry/core/rest/storage_core.go
+54
-6
storage_core_test.go
pkg/registry/core/rest/storage_core_test.go
+52
-0
storage_extensions.go
pkg/registry/extensions/rest/storage_extensions.go
+4
-0
storage_policy.go
pkg/registry/policy/rest/storage_policy.go
+4
-0
storage_rbac.go
pkg/registry/rbac/rest/storage_rbac.go
+9
-5
storage_storage.go
pkg/registry/storage/rest/storage_storage.go
+4
-0
test_owners.csv
test/test_owners.csv
+1
-0
No files found.
pkg/genericapiserver/reststorage_interfaces.go
View file @
7e65d569
...
@@ -24,5 +24,6 @@ import (
...
@@ -24,5 +24,6 @@ import (
type
RESTOptionsGetter
func
(
resource
unversioned
.
GroupResource
)
generic
.
RESTOptions
type
RESTOptionsGetter
func
(
resource
unversioned
.
GroupResource
)
generic
.
RESTOptions
type
RESTStorageProvider
interface
{
type
RESTStorageProvider
interface
{
GroupName
()
string
NewRESTStorage
(
apiResourceConfigSource
APIResourceConfigSource
,
restOptionsGetter
RESTOptionsGetter
)
(
APIGroupInfo
,
bool
)
NewRESTStorage
(
apiResourceConfigSource
APIResourceConfigSource
,
restOptionsGetter
RESTOptionsGetter
)
(
APIGroupInfo
,
bool
)
}
}
pkg/master/BUILD
View file @
7e65d569
...
@@ -32,38 +32,28 @@ go_library(
...
@@ -32,38 +32,28 @@ go_library(
"//pkg/apis/apps/v1alpha1:go_default_library",
"//pkg/apis/apps/v1alpha1:go_default_library",
"//pkg/apis/authentication/install:go_default_library",
"//pkg/apis/authentication/install:go_default_library",
"//pkg/apis/authentication/v1beta1:go_default_library",
"//pkg/apis/authentication/v1beta1:go_default_library",
"//pkg/apis/authorization:go_default_library",
"//pkg/apis/authorization/install:go_default_library",
"//pkg/apis/authorization/install:go_default_library",
"//pkg/apis/authorization/v1beta1:go_default_library",
"//pkg/apis/authorization/v1beta1:go_default_library",
"//pkg/apis/autoscaling:go_default_library",
"//pkg/apis/autoscaling/install:go_default_library",
"//pkg/apis/autoscaling/install:go_default_library",
"//pkg/apis/autoscaling/v1:go_default_library",
"//pkg/apis/autoscaling/v1:go_default_library",
"//pkg/apis/batch:go_default_library",
"//pkg/apis/batch/install:go_default_library",
"//pkg/apis/batch/install:go_default_library",
"//pkg/apis/batch/v1:go_default_library",
"//pkg/apis/batch/v1:go_default_library",
"//pkg/apis/certificates:go_default_library",
"//pkg/apis/certificates/install:go_default_library",
"//pkg/apis/certificates/install:go_default_library",
"//pkg/apis/certificates/v1alpha1:go_default_library",
"//pkg/apis/certificates/v1alpha1:go_default_library",
"//pkg/apis/componentconfig/install:go_default_library",
"//pkg/apis/componentconfig/install:go_default_library",
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/extensions/install:go_default_library",
"//pkg/apis/extensions/install:go_default_library",
"//pkg/apis/extensions/v1beta1:go_default_library",
"//pkg/apis/extensions/v1beta1:go_default_library",
"//pkg/apis/imagepolicy/install:go_default_library",
"//pkg/apis/imagepolicy/install:go_default_library",
"//pkg/apis/policy:go_default_library",
"//pkg/apis/policy/install:go_default_library",
"//pkg/apis/policy/install:go_default_library",
"//pkg/apis/policy/v1alpha1:go_default_library",
"//pkg/apis/policy/v1alpha1:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/apis/rbac/install:go_default_library",
"//pkg/apis/rbac/install:go_default_library",
"//pkg/apis/rbac/v1alpha1:go_default_library",
"//pkg/apis/rbac/v1alpha1:go_default_library",
"//pkg/apis/storage:go_default_library",
"//pkg/apis/storage/install:go_default_library",
"//pkg/apis/storage/install:go_default_library",
"//pkg/apis/storage/v1beta1:go_default_library",
"//pkg/apis/storage/v1beta1:go_default_library",
"//pkg/apiserver:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/genericapiserver:go_default_library",
"//pkg/genericapiserver:go_default_library",
"//pkg/healthz:go_default_library",
"//pkg/healthz:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//pkg/master/ports:go_default_library",
"//pkg/master/thirdparty:go_default_library",
"//pkg/master/thirdparty:go_default_library",
"//pkg/registry/apps/rest:go_default_library",
"//pkg/registry/apps/rest:go_default_library",
"//pkg/registry/authentication/rest:go_default_library",
"//pkg/registry/authentication/rest:go_default_library",
...
@@ -84,12 +74,10 @@ go_library(
...
@@ -84,12 +74,10 @@ go_library(
"//pkg/registry/rbac/rest:go_default_library",
"//pkg/registry/rbac/rest:go_default_library",
"//pkg/registry/storage/rest:go_default_library",
"//pkg/registry/storage/rest:go_default_library",
"//pkg/routes:go_default_library",
"//pkg/routes:go_default_library",
"//pkg/storage/etcd/util:go_default_library",
"//pkg/util/async:go_default_library",
"//pkg/util/async:go_default_library",
"//pkg/util/intstr:go_default_library",
"//pkg/util/intstr:go_default_library",
"//pkg/util/net:go_default_library",
"//pkg/util/net:go_default_library",
"//pkg/util/runtime:go_default_library",
"//pkg/util/runtime:go_default_library",
"//pkg/util/sets:go_default_library",
"//pkg/util/wait:go_default_library",
"//pkg/util/wait:go_default_library",
"//vendor:github.com/golang/glog",
"//vendor:github.com/golang/glog",
"//vendor:github.com/prometheus/client_golang/prometheus",
"//vendor:github.com/prometheus/client_golang/prometheus",
...
...
pkg/master/master.go
View file @
7e65d569
This diff is collapsed.
Click to expand it.
pkg/master/master_test.go
View file @
7e65d569
...
@@ -102,9 +102,6 @@ func setUp(t *testing.T) (*Master, *etcdtesting.EtcdTestServer, Config, *assert.
...
@@ -102,9 +102,6 @@ func setUp(t *testing.T) (*Master, *etcdtesting.EtcdTestServer, Config, *assert.
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
fakeNodeClient
:=
fake
.
NewSimpleClientset
(
registrytest
.
MakeNodeList
([]
string
{
"node1"
,
"node2"
},
api
.
NodeResources
{}))
master
.
nodeClient
=
fakeNodeClient
.
Core
()
.
Nodes
()
return
master
,
server
,
*
config
,
assert
.
New
(
t
)
return
master
,
server
,
*
config
,
assert
.
New
(
t
)
}
}
...
@@ -181,23 +178,6 @@ func TestVersion(t *testing.T) {
...
@@ -181,23 +178,6 @@ func TestVersion(t *testing.T) {
}
}
}
}
// TestGetServersToValidate verifies the unexported getServersToValidate function
func
TestGetServersToValidate
(
t
*
testing
.
T
)
{
_
,
etcdserver
,
config
,
assert
:=
setUp
(
t
)
defer
etcdserver
.
Terminate
(
t
)
servers
:=
getServersToValidate
(
config
.
StorageFactory
)
// Expected servers to validate: scheduler, controller-manager and etcd.
assert
.
Equal
(
3
,
len
(
servers
),
"unexpected server list: %#v"
,
servers
)
for
_
,
server
:=
range
[]
string
{
"scheduler"
,
"controller-manager"
,
"etcd-0"
}
{
if
_
,
ok
:=
servers
[
server
];
!
ok
{
t
.
Errorf
(
"server list missing: %s"
,
server
)
}
}
}
// TestFindExternalAddress verifies both pass and fail cases for the unexported
// TestFindExternalAddress verifies both pass and fail cases for the unexported
// findExternalAddress function
// findExternalAddress function
func
TestFindExternalAddress
(
t
*
testing
.
T
)
{
func
TestFindExternalAddress
(
t
*
testing
.
T
)
{
...
@@ -230,34 +210,36 @@ func (*fakeEndpointReconciler) ReconcileEndpoints(serviceName string, ip net.IP,
...
@@ -230,34 +210,36 @@ func (*fakeEndpointReconciler) ReconcileEndpoints(serviceName string, ip net.IP,
// TestGetNodeAddresses verifies that proper results are returned
// TestGetNodeAddresses verifies that proper results are returned
// when requesting node addresses.
// when requesting node addresses.
func
TestGetNodeAddresses
(
t
*
testing
.
T
)
{
func
TestGetNodeAddresses
(
t
*
testing
.
T
)
{
master
,
etcdserver
,
_
,
assert
:=
setUp
(
t
)
assert
:=
assert
.
New
(
t
)
defer
etcdserver
.
Terminate
(
t
)
fakeNodeClient
:=
fake
.
NewSimpleClientset
(
registrytest
.
MakeNodeList
([]
string
{
"node1"
,
"node2"
},
api
.
NodeResources
{}))
.
Core
()
.
Nodes
()
addressProvider
:=
nodeAddressProvider
{
fakeNodeClient
}
// Fail case (no addresses associated with nodes)
// Fail case (no addresses associated with nodes)
nodes
,
_
:=
master
.
n
odeClient
.
List
(
api
.
ListOptions
{})
nodes
,
_
:=
fakeN
odeClient
.
List
(
api
.
ListOptions
{})
addrs
,
err
:=
master
.
getNode
Addresses
()
addrs
,
err
:=
addressProvider
.
external
Addresses
()
assert
.
Error
(
err
,
"
getNodeA
ddresses should have caused an error as there are no addresses."
)
assert
.
Error
(
err
,
"
a
ddresses should have caused an error as there are no addresses."
)
assert
.
Equal
([]
string
(
nil
),
addrs
)
assert
.
Equal
([]
string
(
nil
),
addrs
)
// Pass case with External type IP
// Pass case with External type IP
nodes
,
_
=
master
.
n
odeClient
.
List
(
api
.
ListOptions
{})
nodes
,
_
=
fakeN
odeClient
.
List
(
api
.
ListOptions
{})
for
index
:=
range
nodes
.
Items
{
for
index
:=
range
nodes
.
Items
{
nodes
.
Items
[
index
]
.
Status
.
Addresses
=
[]
api
.
NodeAddress
{{
Type
:
api
.
NodeExternalIP
,
Address
:
"127.0.0.1"
}}
nodes
.
Items
[
index
]
.
Status
.
Addresses
=
[]
api
.
NodeAddress
{{
Type
:
api
.
NodeExternalIP
,
Address
:
"127.0.0.1"
}}
master
.
n
odeClient
.
Update
(
&
nodes
.
Items
[
index
])
fakeN
odeClient
.
Update
(
&
nodes
.
Items
[
index
])
}
}
addrs
,
err
=
master
.
getNode
Addresses
()
addrs
,
err
=
addressProvider
.
external
Addresses
()
assert
.
NoError
(
err
,
"
getNodeA
ddresses should not have returned an error."
)
assert
.
NoError
(
err
,
"
a
ddresses should not have returned an error."
)
assert
.
Equal
([]
string
{
"127.0.0.1"
,
"127.0.0.1"
},
addrs
)
assert
.
Equal
([]
string
{
"127.0.0.1"
,
"127.0.0.1"
},
addrs
)
// Pass case with LegacyHost type IP
// Pass case with LegacyHost type IP
nodes
,
_
=
master
.
n
odeClient
.
List
(
api
.
ListOptions
{})
nodes
,
_
=
fakeN
odeClient
.
List
(
api
.
ListOptions
{})
for
index
:=
range
nodes
.
Items
{
for
index
:=
range
nodes
.
Items
{
nodes
.
Items
[
index
]
.
Status
.
Addresses
=
[]
api
.
NodeAddress
{{
Type
:
api
.
NodeLegacyHostIP
,
Address
:
"127.0.0.2"
}}
nodes
.
Items
[
index
]
.
Status
.
Addresses
=
[]
api
.
NodeAddress
{{
Type
:
api
.
NodeLegacyHostIP
,
Address
:
"127.0.0.2"
}}
master
.
n
odeClient
.
Update
(
&
nodes
.
Items
[
index
])
fakeN
odeClient
.
Update
(
&
nodes
.
Items
[
index
])
}
}
addrs
,
err
=
master
.
getNode
Addresses
()
addrs
,
err
=
addressProvider
.
external
Addresses
()
assert
.
NoError
(
err
,
"
getNodeA
ddresses failback should not have returned an error."
)
assert
.
NoError
(
err
,
"
a
ddresses failback should not have returned an error."
)
assert
.
Equal
([]
string
{
"127.0.0.2"
,
"127.0.0.2"
},
addrs
)
assert
.
Equal
([]
string
{
"127.0.0.2"
,
"127.0.0.2"
},
addrs
)
}
}
...
@@ -350,126 +332,6 @@ func TestAPIVersionOfDiscoveryEndpoints(t *testing.T) {
...
@@ -350,126 +332,6 @@ func TestAPIVersionOfDiscoveryEndpoints(t *testing.T) {
}
}
func
TestDiscoveryAtAPIS
(
t
*
testing
.
T
)
{
master
,
etcdserver
,
_
,
assert
:=
newLimitedMaster
(
t
)
defer
etcdserver
.
Terminate
(
t
)
server
:=
httptest
.
NewServer
(
master
.
GenericAPIServer
.
HandlerContainer
.
ServeMux
)
resp
,
err
:=
http
.
Get
(
server
.
URL
+
"/apis"
)
if
!
assert
.
NoError
(
err
)
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
assert
.
Equal
(
http
.
StatusOK
,
resp
.
StatusCode
)
groupList
:=
unversioned
.
APIGroupList
{}
assert
.
NoError
(
decodeResponse
(
resp
,
&
groupList
))
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
expectGroupNames
:=
sets
.
NewString
(
autoscaling
.
GroupName
,
batch
.
GroupName
,
apps
.
GroupName
,
extensions
.
GroupName
)
expectVersions
:=
map
[
string
][]
unversioned
.
GroupVersionForDiscovery
{
autoscaling
.
GroupName
:
{
{
GroupVersion
:
testapi
.
Autoscaling
.
GroupVersion
()
.
String
(),
Version
:
testapi
.
Autoscaling
.
GroupVersion
()
.
Version
,
},
},
// batch is using its pkg/apis/batch/ types here since during installation
// both versions get installed and testapi.go currently does not support
// multi-versioned clients
batch
.
GroupName
:
{
{
GroupVersion
:
batchapiv1
.
SchemeGroupVersion
.
String
(),
Version
:
batchapiv1
.
SchemeGroupVersion
.
Version
,
},
{
GroupVersion
:
batchapiv2alpha1
.
SchemeGroupVersion
.
String
(),
Version
:
batchapiv2alpha1
.
SchemeGroupVersion
.
Version
,
},
},
apps
.
GroupName
:
{
{
GroupVersion
:
testapi
.
Apps
.
GroupVersion
()
.
String
(),
Version
:
testapi
.
Apps
.
GroupVersion
()
.
Version
,
},
},
extensions
.
GroupName
:
{
{
GroupVersion
:
testapi
.
Extensions
.
GroupVersion
()
.
String
(),
Version
:
testapi
.
Extensions
.
GroupVersion
()
.
Version
,
},
},
}
expectPreferredVersion
:=
map
[
string
]
unversioned
.
GroupVersionForDiscovery
{
autoscaling
.
GroupName
:
{
GroupVersion
:
registered
.
GroupOrDie
(
autoscaling
.
GroupName
)
.
GroupVersion
.
String
(),
Version
:
registered
.
GroupOrDie
(
autoscaling
.
GroupName
)
.
GroupVersion
.
Version
,
},
batch
.
GroupName
:
{
GroupVersion
:
registered
.
GroupOrDie
(
batch
.
GroupName
)
.
GroupVersion
.
String
(),
Version
:
registered
.
GroupOrDie
(
batch
.
GroupName
)
.
GroupVersion
.
Version
,
},
apps
.
GroupName
:
{
GroupVersion
:
registered
.
GroupOrDie
(
apps
.
GroupName
)
.
GroupVersion
.
String
(),
Version
:
registered
.
GroupOrDie
(
apps
.
GroupName
)
.
GroupVersion
.
Version
,
},
extensions
.
GroupName
:
{
GroupVersion
:
registered
.
GroupOrDie
(
extensions
.
GroupName
)
.
GroupVersion
.
String
(),
Version
:
registered
.
GroupOrDie
(
extensions
.
GroupName
)
.
GroupVersion
.
Version
,
},
}
assert
.
Equal
(
4
,
len
(
groupList
.
Groups
))
for
_
,
group
:=
range
groupList
.
Groups
{
if
!
expectGroupNames
.
Has
(
group
.
Name
)
{
t
.
Errorf
(
"got unexpected group %s"
,
group
.
Name
)
}
assert
.
Equal
(
expectVersions
[
group
.
Name
],
group
.
Versions
)
assert
.
Equal
(
expectPreferredVersion
[
group
.
Name
],
group
.
PreferredVersion
)
}
thirdPartyGV
:=
unversioned
.
GroupVersionForDiscovery
{
GroupVersion
:
"company.com/v1"
,
Version
:
"v1"
}
master
.
thirdPartyResourceServer
.
InstallThirdPartyResource
(
&
extensions
.
ThirdPartyResource
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
"foo.company.com"
},
Versions
:
[]
extensions
.
APIVersion
{{
Name
:
"v1"
}},
})
resp
,
err
=
http
.
Get
(
server
.
URL
+
"/apis"
)
if
!
assert
.
NoError
(
err
)
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
assert
.
Equal
(
http
.
StatusOK
,
resp
.
StatusCode
)
assert
.
NoError
(
decodeResponse
(
resp
,
&
groupList
))
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %v"
,
err
)
}
assert
.
Equal
(
5
,
len
(
groupList
.
Groups
))
expectGroupNames
.
Insert
(
"company.com"
)
expectVersions
[
"company.com"
]
=
[]
unversioned
.
GroupVersionForDiscovery
{
thirdPartyGV
}
expectPreferredVersion
[
"company.com"
]
=
thirdPartyGV
for
_
,
group
:=
range
groupList
.
Groups
{
if
!
expectGroupNames
.
Has
(
group
.
Name
)
{
t
.
Errorf
(
"got unexpected group %s"
,
group
.
Name
)
}
assert
.
Equal
(
expectVersions
[
group
.
Name
],
group
.
Versions
)
assert
.
Equal
(
expectPreferredVersion
[
group
.
Name
],
group
.
PreferredVersion
)
}
}
func
writeResponseToFile
(
resp
*
http
.
Response
,
filename
string
)
error
{
defer
resp
.
Body
.
Close
()
data
,
err
:=
ioutil
.
ReadAll
(
resp
.
Body
)
if
err
!=
nil
{
return
err
}
return
ioutil
.
WriteFile
(
filename
,
data
,
0755
)
}
// TestValidOpenAPISpec verifies that the open api is added
// TestValidOpenAPISpec verifies that the open api is added
// at the proper endpoint and the spec is valid.
// at the proper endpoint and the spec is valid.
func
TestValidOpenAPISpec
(
t
*
testing
.
T
)
{
func
TestValidOpenAPISpec
(
t
*
testing
.
T
)
{
...
...
pkg/master/thirdparty/thirdparty.go
View file @
7e65d569
...
@@ -58,7 +58,7 @@ type ThirdPartyResourceServer struct {
...
@@ -58,7 +58,7 @@ type ThirdPartyResourceServer struct {
deleteCollectionWorkers
int
deleteCollectionWorkers
int
// storage for third party objects
// storage for third party objects
T
hirdPartyStorageConfig
*
storagebackend
.
Config
t
hirdPartyStorageConfig
*
storagebackend
.
Config
// map from api path to a tuple of (storage for the objects, APIGroup)
// map from api path to a tuple of (storage for the objects, APIGroup)
thirdPartyResources
map
[
string
]
*
thirdPartyEntry
thirdPartyResources
map
[
string
]
*
thirdPartyEntry
// protects the map
// protects the map
...
@@ -68,11 +68,19 @@ type ThirdPartyResourceServer struct {
...
@@ -68,11 +68,19 @@ type ThirdPartyResourceServer struct {
disableThirdPartyControllerForTesting
bool
disableThirdPartyControllerForTesting
bool
}
}
func
NewThirdPartyResourceServer
(
genericAPIServer
*
genericapiserver
.
GenericAPIServer
)
*
ThirdPartyResourceServer
{
func
NewThirdPartyResourceServer
(
genericAPIServer
*
genericapiserver
.
GenericAPIServer
,
storageFactory
genericapiserver
.
StorageFactory
)
*
ThirdPartyResourceServer
{
ret
urn
&
ThirdPartyResourceServer
{
ret
:=
&
ThirdPartyResourceServer
{
genericAPIServer
:
genericAPIServer
,
genericAPIServer
:
genericAPIServer
,
thirdPartyResources
:
map
[
string
]
*
thirdPartyEntry
{},
thirdPartyResources
:
map
[
string
]
*
thirdPartyEntry
{},
}
}
var
err
error
ret
.
thirdPartyStorageConfig
,
err
=
storageFactory
.
NewConfig
(
extensions
.
Resource
(
"thirdpartyresources"
))
if
err
!=
nil
{
glog
.
Fatalf
(
"Error building third party storage: %v"
,
err
)
}
return
ret
}
}
// thirdPartyEntry combines objects storage and API group into one struct
// thirdPartyEntry combines objects storage and API group into one struct
...
@@ -276,7 +284,7 @@ func (m *ThirdPartyResourceServer) InstallThirdPartyResource(rsrc *extensions.Th
...
@@ -276,7 +284,7 @@ func (m *ThirdPartyResourceServer) InstallThirdPartyResource(rsrc *extensions.Th
func
(
m
*
ThirdPartyResourceServer
)
thirdpartyapi
(
group
,
kind
,
version
,
pluralResource
string
)
*
apiserver
.
APIGroupVersion
{
func
(
m
*
ThirdPartyResourceServer
)
thirdpartyapi
(
group
,
kind
,
version
,
pluralResource
string
)
*
apiserver
.
APIGroupVersion
{
resourceStorage
:=
thirdpartyresourcedataetcd
.
NewREST
(
resourceStorage
:=
thirdpartyresourcedataetcd
.
NewREST
(
generic
.
RESTOptions
{
generic
.
RESTOptions
{
StorageConfig
:
m
.
T
hirdPartyStorageConfig
,
StorageConfig
:
m
.
t
hirdPartyStorageConfig
,
Decorator
:
generic
.
UndecoratedStorage
,
Decorator
:
generic
.
UndecoratedStorage
,
DeleteCollectionWorkers
:
m
.
deleteCollectionWorkers
,
DeleteCollectionWorkers
:
m
.
deleteCollectionWorkers
,
},
},
...
...
pkg/registry/apps/rest/storage_apps.go
View file @
7e65d569
...
@@ -50,3 +50,7 @@ func (p RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource genericapis
...
@@ -50,3 +50,7 @@ func (p RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource genericapis
}
}
return
storage
return
storage
}
}
func
(
p
RESTStorageProvider
)
GroupName
()
string
{
return
apps
.
GroupName
}
pkg/registry/authentication/rest/storage_authentication.go
View file @
7e65d569
...
@@ -60,3 +60,7 @@ func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource genericapise
...
@@ -60,3 +60,7 @@ func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource genericapise
return
storage
return
storage
}
}
func
(
p
RESTStorageProvider
)
GroupName
()
string
{
return
authentication
.
GroupName
}
pkg/registry/authorization/rest/storage_authorization.go
View file @
7e65d569
...
@@ -64,3 +64,7 @@ func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource genericapise
...
@@ -64,3 +64,7 @@ func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource genericapise
return
storage
return
storage
}
}
func
(
p
RESTStorageProvider
)
GroupName
()
string
{
return
authorization
.
GroupName
}
pkg/registry/autoscaling/rest/storage_autoscaling.go
View file @
7e65d569
...
@@ -50,3 +50,7 @@ func (p RESTStorageProvider) v1Storage(apiResourceConfigSource genericapiserver.
...
@@ -50,3 +50,7 @@ func (p RESTStorageProvider) v1Storage(apiResourceConfigSource genericapiserver.
}
}
return
storage
return
storage
}
}
func
(
p
RESTStorageProvider
)
GroupName
()
string
{
return
autoscaling
.
GroupName
}
pkg/registry/batch/rest/storage_batch.go
View file @
7e65d569
...
@@ -73,3 +73,7 @@ func (p RESTStorageProvider) v2alpha1Storage(apiResourceConfigSource genericapis
...
@@ -73,3 +73,7 @@ func (p RESTStorageProvider) v2alpha1Storage(apiResourceConfigSource genericapis
}
}
return
storage
return
storage
}
}
func
(
p
RESTStorageProvider
)
GroupName
()
string
{
return
batch
.
GroupName
}
pkg/registry/certificates/rest/storage_certificates.go
View file @
7e65d569
...
@@ -51,3 +51,7 @@ func (p RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource genericapis
...
@@ -51,3 +51,7 @@ func (p RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource genericapis
}
}
return
storage
return
storage
}
}
func
(
p
RESTStorageProvider
)
GroupName
()
string
{
return
certificates
.
GroupName
}
pkg/registry/core/rest/BUILD
View file @
7e65d569
...
@@ -24,6 +24,7 @@ go_library(
...
@@ -24,6 +24,7 @@ go_library(
"//pkg/client/restclient:go_default_library",
"//pkg/client/restclient:go_default_library",
"//pkg/genericapiserver:go_default_library",
"//pkg/genericapiserver:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//pkg/master/ports:go_default_library",
"//pkg/registry/core/componentstatus:go_default_library",
"//pkg/registry/core/componentstatus:go_default_library",
"//pkg/registry/core/configmap/etcd:go_default_library",
"//pkg/registry/core/configmap/etcd:go_default_library",
"//pkg/registry/core/controller/etcd:go_default_library",
"//pkg/registry/core/controller/etcd:go_default_library",
...
@@ -49,6 +50,19 @@ go_library(
...
@@ -49,6 +50,19 @@ go_library(
"//pkg/registry/core/service/ipallocator:go_default_library",
"//pkg/registry/core/service/ipallocator:go_default_library",
"//pkg/registry/core/service/portallocator:go_default_library",
"//pkg/registry/core/service/portallocator:go_default_library",
"//pkg/registry/core/serviceaccount/etcd:go_default_library",
"//pkg/registry/core/serviceaccount/etcd:go_default_library",
"//pkg/storage/etcd/util:go_default_library",
"//pkg/util/net:go_default_library",
"//pkg/util/net:go_default_library",
"//vendor:github.com/golang/glog",
],
)
go_test(
name = "go_default_test",
srcs = ["storage_core_test.go"],
library = "go_default_library",
tags = ["automanaged"],
deps = [
"//pkg/api/unversioned:go_default_library",
"//pkg/storage/storagebackend:go_default_library",
],
],
)
)
pkg/registry/core/rest/storage_core.go
View file @
7e65d569
...
@@ -20,8 +20,13 @@ import (
...
@@ -20,8 +20,13 @@ import (
"fmt"
"fmt"
"net"
"net"
"net/http"
"net/http"
"net/url"
"strconv"
"strings"
"time"
"time"
"github.com/golang/glog"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/rest"
"k8s.io/kubernetes/pkg/api/rest"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/unversioned"
...
@@ -31,6 +36,7 @@ import (
...
@@ -31,6 +36,7 @@ import (
"k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/genericapiserver"
"k8s.io/kubernetes/pkg/genericapiserver"
kubeletclient
"k8s.io/kubernetes/pkg/kubelet/client"
kubeletclient
"k8s.io/kubernetes/pkg/kubelet/client"
"k8s.io/kubernetes/pkg/master/ports"
"k8s.io/kubernetes/pkg/registry/core/componentstatus"
"k8s.io/kubernetes/pkg/registry/core/componentstatus"
configmapetcd
"k8s.io/kubernetes/pkg/registry/core/configmap/etcd"
configmapetcd
"k8s.io/kubernetes/pkg/registry/core/configmap/etcd"
controlleretcd
"k8s.io/kubernetes/pkg/registry/core/controller/etcd"
controlleretcd
"k8s.io/kubernetes/pkg/registry/core/controller/etcd"
...
@@ -56,6 +62,7 @@ import (
...
@@ -56,6 +62,7 @@ import (
ipallocator
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
ipallocator
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
"k8s.io/kubernetes/pkg/registry/core/service/portallocator"
"k8s.io/kubernetes/pkg/registry/core/service/portallocator"
serviceaccountetcd
"k8s.io/kubernetes/pkg/registry/core/serviceaccount/etcd"
serviceaccountetcd
"k8s.io/kubernetes/pkg/registry/core/serviceaccount/etcd"
etcdutil
"k8s.io/kubernetes/pkg/storage/etcd/util"
utilnet
"k8s.io/kubernetes/pkg/util/net"
utilnet
"k8s.io/kubernetes/pkg/util/net"
)
)
...
@@ -72,14 +79,9 @@ type LegacyRESTStorageProvider struct {
...
@@ -72,14 +79,9 @@ type LegacyRESTStorageProvider struct {
ServiceClusterIPRange
*
net
.
IPNet
ServiceClusterIPRange
*
net
.
IPNet
ServiceNodePortRange
utilnet
.
PortRange
ServiceNodePortRange
utilnet
.
PortRange
// ComponentStatusServerFunc is a func used to locate servers to back component status
ComponentStatusServerFunc
ComponentStatusServerFunc
LoopbackClientConfig
*
restclient
.
Config
LoopbackClientConfig
*
restclient
.
Config
}
}
type
ComponentStatusServerFunc
func
()
map
[
string
]
apiserver
.
Server
// LegacyRESTStorage returns stateful information about particular instances of REST storage to
// LegacyRESTStorage returns stateful information about particular instances of REST storage to
// master.go for wiring controllers.
// master.go for wiring controllers.
// TODO remove this by running the controller as a poststarthook
// TODO remove this by running the controller as a poststarthook
...
@@ -227,7 +229,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(restOptionsGetter generi
...
@@ -227,7 +229,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(restOptionsGetter generi
"persistentVolumeClaims/status"
:
persistentVolumeClaimStatusStorage
,
"persistentVolumeClaims/status"
:
persistentVolumeClaimStatusStorage
,
"configMaps"
:
configMapStorage
,
"configMaps"
:
configMapStorage
,
"componentStatuses"
:
componentstatus
.
NewStorage
(
c
.
ComponentStatusServerFunc
),
"componentStatuses"
:
componentstatus
.
NewStorage
(
c
omponentStatusStorage
{
c
.
StorageFactory
}
.
serversToValidate
),
}
}
if
registered
.
IsEnabledVersion
(
unversioned
.
GroupVersion
{
Group
:
"autoscaling"
,
Version
:
"v1"
})
{
if
registered
.
IsEnabledVersion
(
unversioned
.
GroupVersion
{
Group
:
"autoscaling"
,
Version
:
"v1"
})
{
restStorageMap
[
"replicationControllers/scale"
]
=
controllerStorage
.
Scale
restStorageMap
[
"replicationControllers/scale"
]
=
controllerStorage
.
Scale
...
@@ -239,3 +241,49 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(restOptionsGetter generi
...
@@ -239,3 +241,49 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(restOptionsGetter generi
return
restStorage
,
apiGroupInfo
,
nil
return
restStorage
,
apiGroupInfo
,
nil
}
}
func
(
p
LegacyRESTStorageProvider
)
GroupName
()
string
{
return
api
.
GroupName
}
type
componentStatusStorage
struct
{
storageFactory
genericapiserver
.
StorageFactory
}
func
(
s
componentStatusStorage
)
serversToValidate
()
map
[
string
]
apiserver
.
Server
{
serversToValidate
:=
map
[
string
]
apiserver
.
Server
{
"controller-manager"
:
{
Addr
:
"127.0.0.1"
,
Port
:
ports
.
ControllerManagerPort
,
Path
:
"/healthz"
},
"scheduler"
:
{
Addr
:
"127.0.0.1"
,
Port
:
ports
.
SchedulerPort
,
Path
:
"/healthz"
},
}
for
ix
,
machine
:=
range
s
.
storageFactory
.
Backends
()
{
etcdUrl
,
err
:=
url
.
Parse
(
machine
)
if
err
!=
nil
{
glog
.
Errorf
(
"Failed to parse etcd url for validation: %v"
,
err
)
continue
}
var
port
int
var
addr
string
if
strings
.
Contains
(
etcdUrl
.
Host
,
":"
)
{
var
portString
string
addr
,
portString
,
err
=
net
.
SplitHostPort
(
etcdUrl
.
Host
)
if
err
!=
nil
{
glog
.
Errorf
(
"Failed to split host/port: %s (%v)"
,
etcdUrl
.
Host
,
err
)
continue
}
port
,
_
=
strconv
.
Atoi
(
portString
)
}
else
{
addr
=
etcdUrl
.
Host
port
=
2379
}
// TODO: etcd health checking should be abstracted in the storage tier
serversToValidate
[
fmt
.
Sprintf
(
"etcd-%d"
,
ix
)]
=
apiserver
.
Server
{
Addr
:
addr
,
EnableHTTPS
:
etcdUrl
.
Scheme
==
"https"
,
Port
:
port
,
Path
:
"/health"
,
Validate
:
etcdutil
.
EtcdHealthCheck
,
}
}
return
serversToValidate
}
pkg/registry/core/rest/storage_core_test.go
0 → 100644
View file @
7e65d569
/*
Copyright 2016 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
rest
import
(
"testing"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/storage/storagebackend"
)
func
TestGetServersToValidate
(
t
*
testing
.
T
)
{
servers
:=
componentStatusStorage
{
fakeStorageFactory
{}}
.
serversToValidate
()
if
e
,
a
:=
3
,
len
(
servers
);
e
!=
a
{
t
.
Errorf
(
"expected %v, got %v"
,
e
,
a
)
}
for
_
,
server
:=
range
[]
string
{
"scheduler"
,
"controller-manager"
,
"etcd-0"
}
{
if
_
,
ok
:=
servers
[
server
];
!
ok
{
t
.
Errorf
(
"server list missing: %s"
,
server
)
}
}
}
type
fakeStorageFactory
struct
{}
func
(
f
fakeStorageFactory
)
NewConfig
(
groupResource
unversioned
.
GroupResource
)
(
*
storagebackend
.
Config
,
error
)
{
return
nil
,
nil
}
func
(
f
fakeStorageFactory
)
ResourcePrefix
(
groupResource
unversioned
.
GroupResource
)
string
{
return
""
}
func
(
f
fakeStorageFactory
)
Backends
()
[]
string
{
return
[]
string
{
"etcd-0"
}
}
pkg/registry/extensions/rest/storage_extensions.go
View file @
7e65d569
...
@@ -140,3 +140,7 @@ func (p RESTStorageProvider) postStartHookFunc(hookContext genericapiserver.Post
...
@@ -140,3 +140,7 @@ func (p RESTStorageProvider) postStartHookFunc(hookContext genericapiserver.Post
return
nil
return
nil
}
}
func
(
p
RESTStorageProvider
)
GroupName
()
string
{
return
extensions
.
GroupName
}
pkg/registry/policy/rest/storage_policy.go
View file @
7e65d569
...
@@ -50,3 +50,7 @@ func (p RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource genericapis
...
@@ -50,3 +50,7 @@ func (p RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource genericapis
}
}
return
storage
return
storage
}
}
func
(
p
RESTStorageProvider
)
GroupName
()
string
{
return
policy
.
GroupName
}
pkg/registry/rbac/rest/storage_rbac.go
View file @
7e65d569
...
@@ -49,10 +49,10 @@ type RESTStorageProvider struct {
...
@@ -49,10 +49,10 @@ type RESTStorageProvider struct {
AuthorizerRBACSuperUser
string
AuthorizerRBACSuperUser
string
}
}
var
_
genericapiserver
.
RESTStorageProvider
=
&
RESTStorageProvider
{}
var
_
genericapiserver
.
RESTStorageProvider
=
RESTStorageProvider
{}
var
_
genericapiserver
.
PostStartHookProvider
=
&
RESTStorageProvider
{}
var
_
genericapiserver
.
PostStartHookProvider
=
RESTStorageProvider
{}
func
(
p
*
RESTStorageProvider
)
NewRESTStorage
(
apiResourceConfigSource
genericapiserver
.
APIResourceConfigSource
,
restOptionsGetter
genericapiserver
.
RESTOptionsGetter
)
(
genericapiserver
.
APIGroupInfo
,
bool
)
{
func
(
p
RESTStorageProvider
)
NewRESTStorage
(
apiResourceConfigSource
genericapiserver
.
APIResourceConfigSource
,
restOptionsGetter
genericapiserver
.
RESTOptionsGetter
)
(
genericapiserver
.
APIGroupInfo
,
bool
)
{
apiGroupInfo
:=
genericapiserver
.
NewDefaultAPIGroupInfo
(
rbac
.
GroupName
)
apiGroupInfo
:=
genericapiserver
.
NewDefaultAPIGroupInfo
(
rbac
.
GroupName
)
if
apiResourceConfigSource
.
AnyResourcesForVersionEnabled
(
rbacapiv1alpha1
.
SchemeGroupVersion
)
{
if
apiResourceConfigSource
.
AnyResourcesForVersionEnabled
(
rbacapiv1alpha1
.
SchemeGroupVersion
)
{
...
@@ -63,7 +63,7 @@ func (p *RESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapis
...
@@ -63,7 +63,7 @@ func (p *RESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapis
return
apiGroupInfo
,
true
return
apiGroupInfo
,
true
}
}
func
(
p
*
RESTStorageProvider
)
v1alpha1Storage
(
apiResourceConfigSource
genericapiserver
.
APIResourceConfigSource
,
restOptionsGetter
genericapiserver
.
RESTOptionsGetter
)
map
[
string
]
rest
.
Storage
{
func
(
p
RESTStorageProvider
)
v1alpha1Storage
(
apiResourceConfigSource
genericapiserver
.
APIResourceConfigSource
,
restOptionsGetter
genericapiserver
.
RESTOptionsGetter
)
map
[
string
]
rest
.
Storage
{
version
:=
rbacapiv1alpha1
.
SchemeGroupVersion
version
:=
rbacapiv1alpha1
.
SchemeGroupVersion
once
:=
new
(
sync
.
Once
)
once
:=
new
(
sync
.
Once
)
...
@@ -100,7 +100,7 @@ func (p *RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource genericapi
...
@@ -100,7 +100,7 @@ func (p *RESTStorageProvider) v1alpha1Storage(apiResourceConfigSource genericapi
return
storage
return
storage
}
}
func
(
p
*
RESTStorageProvider
)
PostStartHook
()
(
string
,
genericapiserver
.
PostStartHookFunc
,
error
)
{
func
(
p
RESTStorageProvider
)
PostStartHook
()
(
string
,
genericapiserver
.
PostStartHookFunc
,
error
)
{
return
"rbac/bootstrap-roles"
,
PostStartHook
,
nil
return
"rbac/bootstrap-roles"
,
PostStartHook
,
nil
}
}
...
@@ -153,3 +153,7 @@ func PostStartHook(hookContext genericapiserver.PostStartHookContext) error {
...
@@ -153,3 +153,7 @@ func PostStartHook(hookContext genericapiserver.PostStartHookContext) error {
return
nil
return
nil
}
}
func
(
p
RESTStorageProvider
)
GroupName
()
string
{
return
rbac
.
GroupName
}
pkg/registry/storage/rest/storage_storage.go
View file @
7e65d569
...
@@ -52,3 +52,7 @@ func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource genericapise
...
@@ -52,3 +52,7 @@ func (p RESTStorageProvider) v1beta1Storage(apiResourceConfigSource genericapise
return
storage
return
storage
}
}
func
(
p
RESTStorageProvider
)
GroupName
()
string
{
return
storageapi
.
GroupName
}
test/test_owners.csv
View file @
7e65d569
...
@@ -686,6 +686,7 @@ k8s.io/kubernetes/pkg/registry/core/podtemplate,thockin,1
...
@@ -686,6 +686,7 @@ k8s.io/kubernetes/pkg/registry/core/podtemplate,thockin,1
k8s.io/kubernetes/pkg/registry/core/podtemplate/etcd,brendandburns,1
k8s.io/kubernetes/pkg/registry/core/podtemplate/etcd,brendandburns,1
k8s.io/kubernetes/pkg/registry/core/resourcequota,vulpecula,1
k8s.io/kubernetes/pkg/registry/core/resourcequota,vulpecula,1
k8s.io/kubernetes/pkg/registry/core/resourcequota/etcd,ghodss,1
k8s.io/kubernetes/pkg/registry/core/resourcequota/etcd,ghodss,1
k8s.io/kubernetes/pkg/registry/core/rest,deads2k,0
k8s.io/kubernetes/pkg/registry/core/secret,jdef,1
k8s.io/kubernetes/pkg/registry/core/secret,jdef,1
k8s.io/kubernetes/pkg/registry/core/secret/etcd,freehan,1
k8s.io/kubernetes/pkg/registry/core/secret/etcd,freehan,1
k8s.io/kubernetes/pkg/registry/core/service,madhusudancs,1
k8s.io/kubernetes/pkg/registry/core/service,madhusudancs,1
...
...
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