Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
H
helm3
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
helm3
Commits
de5a6a93
Unverified
Commit
de5a6a93
authored
Oct 11, 2018
by
Adam Reese
Committed by
GitHub
Oct 11, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4734 from adamreese/ref/kube-1.12
ref(*): kubernetes v1.12 support
parents
e7d93f23
dbf84cd2
Show whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
244 additions
and
266 deletions
+244
-266
helm.go
cmd/helm/helm.go
+1
-16
uninstall.go
cmd/helm/installer/uninstall.go
+6
-6
uninstall_test.go
cmd/helm/installer/uninstall_test.go
+8
-8
reset.go
cmd/helm/reset.go
+4
-3
reset_test.go
cmd/helm/reset_test.go
+3
-3
rudder.go
cmd/rudder/rudder.go
+4
-4
tiller.go
cmd/tiller/tiller.go
+4
-3
glide.lock
glide.lock
+44
-53
glide.yaml
glide.yaml
+35
-40
portforwarder_test.go
pkg/helm/portforwarder/portforwarder_test.go
+1
-1
client.go
pkg/kube/client.go
+32
-28
client_test.go
pkg/kube/client_test.go
+15
-15
namespace.go
pkg/kube/namespace.go
+8
-8
namespace_test.go
pkg/kube/namespace_test.go
+2
-2
result.go
pkg/kube/result.go
+1
-1
result_test.go
pkg/kube/result_test.go
+1
-1
environment.go
pkg/releasetesting/environment.go
+2
-2
test_suite.go
pkg/releasetesting/test_suite.go
+5
-5
test_suite_test.go
pkg/releasetesting/test_suite_test.go
+5
-5
cfgmaps.go
pkg/storage/driver/cfgmaps.go
+6
-6
cfgmaps_test.go
pkg/storage/driver/cfgmaps_test.go
+2
-2
mock_test.go
pkg/storage/driver/mock_test.go
+27
-26
secrets.go
pkg/storage/driver/secrets.go
+6
-6
secrets_test.go
pkg/storage/driver/secrets_test.go
+2
-2
environment.go
pkg/tiller/environment/environment.go
+5
-5
environment_test.go
pkg/tiller/environment/environment_test.go
+5
-5
release_modules.go
pkg/tiller/release_modules.go
+2
-2
release_server.go
pkg/tiller/release_server.go
+3
-3
release_server_test.go
pkg/tiller/release_server_test.go
+5
-5
No files found.
cmd/helm/helm.go
View file @
de5a6a93
...
@@ -28,10 +28,10 @@ import (
...
@@ -28,10 +28,10 @@ import (
"google.golang.org/grpc/status"
"google.golang.org/grpc/status"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/rest"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
// Import to initialize client auth plugins.
// Import to initialize client auth plugins.
_
"k8s.io/client-go/plugin/pkg/client/auth"
_
"k8s.io/client-go/plugin/pkg/client/auth"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/helm"
helm_env
"k8s.io/helm/pkg/helm/environment"
helm_env
"k8s.io/helm/pkg/helm/environment"
"k8s.io/helm/pkg/helm/portforwarder"
"k8s.io/helm/pkg/helm/portforwarder"
...
@@ -256,21 +256,6 @@ func getKubeClient(context string, kubeconfig string) (*rest.Config, kubernetes.
...
@@ -256,21 +256,6 @@ func getKubeClient(context string, kubeconfig string) (*rest.Config, kubernetes.
return
config
,
client
,
nil
return
config
,
client
,
nil
}
}
// getInternalKubeClient creates a Kubernetes config and an "internal" client for a given kubeconfig context.
//
// Prefer the similar getKubeClient if you don't need to use such an internal client.
func
getInternalKubeClient
(
context
string
,
kubeconfig
string
)
(
internalclientset
.
Interface
,
error
)
{
config
,
err
:=
configForContext
(
context
,
kubeconfig
)
if
err
!=
nil
{
return
nil
,
err
}
client
,
err
:=
internalclientset
.
NewForConfig
(
config
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"could not get Kubernetes client: %s"
,
err
)
}
return
client
,
nil
}
// ensureHelmClient returns a new helm client impl. if h is not nil.
// ensureHelmClient returns a new helm client impl. if h is not nil.
func
ensureHelmClient
(
h
helm
.
Interface
)
helm
.
Interface
{
func
ensureHelmClient
(
h
helm
.
Interface
)
helm
.
Interface
{
if
h
!=
nil
{
if
h
!=
nil
{
...
...
cmd/helm/installer/uninstall.go
View file @
de5a6a93
...
@@ -19,8 +19,8 @@ package installer // import "k8s.io/helm/cmd/helm/installer"
...
@@ -19,8 +19,8 @@ package installer // import "k8s.io/helm/cmd/helm/installer"
import
(
import
(
apierrors
"k8s.io/apimachinery/pkg/api/errors"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/
kubernetes/pkg/client/clientset_generated/internalclientset
"
"k8s.io/
client-go/kubernetes
"
core
client
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion
"
core
v1
"k8s.io/client-go/kubernetes/typed/core/v1
"
)
)
const
(
const
(
...
@@ -30,7 +30,7 @@ const (
...
@@ -30,7 +30,7 @@ const (
)
)
// Uninstall uses Kubernetes client to uninstall Tiller.
// Uninstall uses Kubernetes client to uninstall Tiller.
func
Uninstall
(
client
internalclientset
.
Interface
,
opts
*
Options
)
error
{
func
Uninstall
(
client
kubernetes
.
Interface
,
opts
*
Options
)
error
{
if
err
:=
deleteService
(
client
.
Core
(),
opts
.
Namespace
);
err
!=
nil
{
if
err
:=
deleteService
(
client
.
Core
(),
opts
.
Namespace
);
err
!=
nil
{
return
err
return
err
}
}
...
@@ -41,7 +41,7 @@ func Uninstall(client internalclientset.Interface, opts *Options) error {
...
@@ -41,7 +41,7 @@ func Uninstall(client internalclientset.Interface, opts *Options) error {
}
}
// deleteService deletes the Tiller Service resource
// deleteService deletes the Tiller Service resource
func
deleteService
(
client
core
client
.
ServicesGetter
,
namespace
string
)
error
{
func
deleteService
(
client
core
v1
.
ServicesGetter
,
namespace
string
)
error
{
err
:=
client
.
Services
(
namespace
)
.
Delete
(
serviceName
,
&
metav1
.
DeleteOptions
{})
err
:=
client
.
Services
(
namespace
)
.
Delete
(
serviceName
,
&
metav1
.
DeleteOptions
{})
return
ingoreNotFound
(
err
)
return
ingoreNotFound
(
err
)
}
}
...
@@ -49,13 +49,13 @@ func deleteService(client coreclient.ServicesGetter, namespace string) error {
...
@@ -49,13 +49,13 @@ func deleteService(client coreclient.ServicesGetter, namespace string) error {
// deleteDeployment deletes the Tiller Deployment resource
// deleteDeployment deletes the Tiller Deployment resource
// We need to use the reaper instead of the kube API because GC for deployment dependents
// We need to use the reaper instead of the kube API because GC for deployment dependents
// is not yet supported at the k8s server level (<= 1.5)
// is not yet supported at the k8s server level (<= 1.5)
func
deleteDeployment
(
client
internalclientset
.
Interface
,
namespace
string
)
error
{
func
deleteDeployment
(
client
kubernetes
.
Interface
,
namespace
string
)
error
{
err
:=
client
.
Extensions
()
.
Deployments
(
namespace
)
.
Delete
(
deploymentName
,
&
metav1
.
DeleteOptions
{})
err
:=
client
.
Extensions
()
.
Deployments
(
namespace
)
.
Delete
(
deploymentName
,
&
metav1
.
DeleteOptions
{})
return
ingoreNotFound
(
err
)
return
ingoreNotFound
(
err
)
}
}
// deleteSecret deletes the Tiller Secret resource
// deleteSecret deletes the Tiller Secret resource
func
deleteSecret
(
client
core
client
.
SecretsGetter
,
namespace
string
)
error
{
func
deleteSecret
(
client
core
v1
.
SecretsGetter
,
namespace
string
)
error
{
err
:=
client
.
Secrets
(
namespace
)
.
Delete
(
secretName
,
&
metav1
.
DeleteOptions
{})
err
:=
client
.
Secrets
(
namespace
)
.
Delete
(
secretName
,
&
metav1
.
DeleteOptions
{})
return
ingoreNotFound
(
err
)
return
ingoreNotFound
(
err
)
}
}
...
...
cmd/helm/installer/uninstall_test.go
View file @
de5a6a93
...
@@ -19,17 +19,17 @@ package installer // import "k8s.io/helm/cmd/helm/installer"
...
@@ -19,17 +19,17 @@ package installer // import "k8s.io/helm/cmd/helm/installer"
import
(
import
(
"testing"
"testing"
"k8s.io/api/core/v1"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/kubernetes/fake"
testcore
"k8s.io/client-go/testing"
testcore
"k8s.io/client-go/testing"
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
)
)
func
TestUninstall
(
t
*
testing
.
T
)
{
func
TestUninstall
(
t
*
testing
.
T
)
{
fc
:=
&
fake
.
Clientset
{}
fc
:=
&
fake
.
Clientset
{}
opts
:=
&
Options
{
Namespace
:
core
.
NamespaceDefault
}
opts
:=
&
Options
{
Namespace
:
v1
.
NamespaceDefault
}
if
err
:=
Uninstall
(
fc
,
opts
);
err
!=
nil
{
if
err
:=
Uninstall
(
fc
,
opts
);
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %#+v"
,
err
)
t
.
Errorf
(
"unexpected error: %#+v"
,
err
)
}
}
...
@@ -45,7 +45,7 @@ func TestUninstall_serviceNotFound(t *testing.T) {
...
@@ -45,7 +45,7 @@ func TestUninstall_serviceNotFound(t *testing.T) {
return
true
,
nil
,
apierrors
.
NewNotFound
(
schema
.
GroupResource
{
Resource
:
"services"
},
"1"
)
return
true
,
nil
,
apierrors
.
NewNotFound
(
schema
.
GroupResource
{
Resource
:
"services"
},
"1"
)
})
})
opts
:=
&
Options
{
Namespace
:
core
.
NamespaceDefault
}
opts
:=
&
Options
{
Namespace
:
v1
.
NamespaceDefault
}
if
err
:=
Uninstall
(
fc
,
opts
);
err
!=
nil
{
if
err
:=
Uninstall
(
fc
,
opts
);
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %#+v"
,
err
)
t
.
Errorf
(
"unexpected error: %#+v"
,
err
)
}
}
...
@@ -58,10 +58,10 @@ func TestUninstall_serviceNotFound(t *testing.T) {
...
@@ -58,10 +58,10 @@ func TestUninstall_serviceNotFound(t *testing.T) {
func
TestUninstall_deploymentNotFound
(
t
*
testing
.
T
)
{
func
TestUninstall_deploymentNotFound
(
t
*
testing
.
T
)
{
fc
:=
&
fake
.
Clientset
{}
fc
:=
&
fake
.
Clientset
{}
fc
.
AddReactor
(
"delete"
,
"deployments"
,
func
(
action
testcore
.
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
fc
.
AddReactor
(
"delete"
,
"deployments"
,
func
(
action
testcore
.
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
return
true
,
nil
,
apierrors
.
NewNotFound
(
core
.
Resource
(
"deployments"
)
,
"1"
)
return
true
,
nil
,
apierrors
.
NewNotFound
(
schema
.
GroupResource
{
Resource
:
"deployments"
}
,
"1"
)
})
})
opts
:=
&
Options
{
Namespace
:
core
.
NamespaceDefault
}
opts
:=
&
Options
{
Namespace
:
v1
.
NamespaceDefault
}
if
err
:=
Uninstall
(
fc
,
opts
);
err
!=
nil
{
if
err
:=
Uninstall
(
fc
,
opts
);
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %#+v"
,
err
)
t
.
Errorf
(
"unexpected error: %#+v"
,
err
)
}
}
...
@@ -74,10 +74,10 @@ func TestUninstall_deploymentNotFound(t *testing.T) {
...
@@ -74,10 +74,10 @@ func TestUninstall_deploymentNotFound(t *testing.T) {
func
TestUninstall_secretNotFound
(
t
*
testing
.
T
)
{
func
TestUninstall_secretNotFound
(
t
*
testing
.
T
)
{
fc
:=
&
fake
.
Clientset
{}
fc
:=
&
fake
.
Clientset
{}
fc
.
AddReactor
(
"delete"
,
"secrets"
,
func
(
action
testcore
.
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
fc
.
AddReactor
(
"delete"
,
"secrets"
,
func
(
action
testcore
.
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
return
true
,
nil
,
apierrors
.
NewNotFound
(
core
.
Resource
(
"secrets"
)
,
"1"
)
return
true
,
nil
,
apierrors
.
NewNotFound
(
schema
.
GroupResource
{
Resource
:
"secrets"
}
,
"1"
)
})
})
opts
:=
&
Options
{
Namespace
:
core
.
NamespaceDefault
}
opts
:=
&
Options
{
Namespace
:
v1
.
NamespaceDefault
}
if
err
:=
Uninstall
(
fc
,
opts
);
err
!=
nil
{
if
err
:=
Uninstall
(
fc
,
opts
);
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %#+v"
,
err
)
t
.
Errorf
(
"unexpected error: %#+v"
,
err
)
}
}
...
...
cmd/helm/reset.go
View file @
de5a6a93
...
@@ -23,7 +23,8 @@ import (
...
@@ -23,7 +23,8 @@ import (
"os"
"os"
"github.com/spf13/cobra"
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/client-go/kubernetes"
"k8s.io/helm/cmd/helm/installer"
"k8s.io/helm/cmd/helm/installer"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/helm"
...
@@ -44,7 +45,7 @@ type resetCmd struct {
...
@@ -44,7 +45,7 @@ type resetCmd struct {
out
io
.
Writer
out
io
.
Writer
home
helmpath
.
Home
home
helmpath
.
Home
client
helm
.
Interface
client
helm
.
Interface
kubeClient
internalclientset
.
Interface
kubeClient
kubernetes
.
Interface
}
}
func
newResetCmd
(
client
helm
.
Interface
,
out
io
.
Writer
)
*
cobra
.
Command
{
func
newResetCmd
(
client
helm
.
Interface
,
out
io
.
Writer
)
*
cobra
.
Command
{
...
@@ -90,7 +91,7 @@ func newResetCmd(client helm.Interface, out io.Writer) *cobra.Command {
...
@@ -90,7 +91,7 @@ func newResetCmd(client helm.Interface, out io.Writer) *cobra.Command {
// runReset uninstalls tiller from Kubernetes Cluster and deletes local config
// runReset uninstalls tiller from Kubernetes Cluster and deletes local config
func
(
d
*
resetCmd
)
run
()
error
{
func
(
d
*
resetCmd
)
run
()
error
{
if
d
.
kubeClient
==
nil
{
if
d
.
kubeClient
==
nil
{
c
,
err
:=
getInternal
KubeClient
(
settings
.
KubeContext
,
settings
.
KubeConfig
)
_
,
c
,
err
:=
get
KubeClient
(
settings
.
KubeContext
,
settings
.
KubeConfig
)
if
err
!=
nil
{
if
err
!=
nil
{
return
fmt
.
Errorf
(
"could not get kubernetes client: %s"
,
err
)
return
fmt
.
Errorf
(
"could not get kubernetes client: %s"
,
err
)
}
}
...
...
cmd/helm/reset_test.go
View file @
de5a6a93
...
@@ -23,8 +23,8 @@ import (
...
@@ -23,8 +23,8 @@ import (
"strings"
"strings"
"testing"
"testing"
"k8s.io/
kubernetes/pkg/apis/core
"
"k8s.io/
api/core/v1
"
"k8s.io/
kubernetes/pkg/client/clientset_generated/internalclientset
/fake"
"k8s.io/
client-go/kubernetes
/fake"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/helm/helmpath"
"k8s.io/helm/pkg/helm/helmpath"
...
@@ -101,7 +101,7 @@ func verifyResetCmd(t *testing.T, tc resetCase) {
...
@@ -101,7 +101,7 @@ func verifyResetCmd(t *testing.T, tc resetCase) {
home
:
helmpath
.
Home
(
home
),
home
:
helmpath
.
Home
(
home
),
client
:
c
,
client
:
c
,
kubeClient
:
fc
,
kubeClient
:
fc
,
namespace
:
core
.
NamespaceDefault
,
namespace
:
v1
.
NamespaceDefault
,
}
}
err
=
cmd
.
run
()
err
=
cmd
.
run
()
...
...
cmd/rudder/rudder.go
View file @
de5a6a93
...
@@ -21,12 +21,12 @@ import (
...
@@ -21,12 +21,12 @@ import (
"fmt"
"fmt"
"net"
"net"
"github.com/spf13/pflag"
"golang.org/x/net/context"
"golang.org/x/net/context"
"google.golang.org/grpc"
"google.golang.org/grpc"
"google.golang.org/grpc/grpclog"
"google.golang.org/grpc/grpclog"
"k8s.io/
kubernetes/pkg/client/clientset_generated/internalclientset
"
"k8s.io/
client-go/kubernetes
"
"github.com/spf13/pflag"
"k8s.io/helm/pkg/kube"
"k8s.io/helm/pkg/kube"
rudderAPI
"k8s.io/helm/pkg/proto/hapi/rudder"
rudderAPI
"k8s.io/helm/pkg/proto/hapi/rudder"
"k8s.io/helm/pkg/tiller"
"k8s.io/helm/pkg/tiller"
...
@@ -34,7 +34,7 @@ import (
...
@@ -34,7 +34,7 @@ import (
)
)
var
kubeClient
*
kube
.
Client
var
kubeClient
*
kube
.
Client
var
clientset
internalclientset
.
Interface
var
clientset
kubernetes
.
Interface
type
options
struct
{
type
options
struct
{
listen
string
listen
string
...
@@ -59,7 +59,7 @@ func main() {
...
@@ -59,7 +59,7 @@ func main() {
opts
.
regAndParseFlags
()
opts
.
regAndParseFlags
()
var
err
error
var
err
error
kubeClient
=
kube
.
New
(
nil
)
kubeClient
=
kube
.
New
(
nil
)
clientset
,
err
=
kubeClient
.
ClientSet
()
clientset
,
err
=
kubeClient
.
Kubernetes
ClientSet
()
if
err
!=
nil
{
if
err
!=
nil
{
grpclog
.
Fatalf
(
"Cannot initialize Kubernetes connection: %s"
,
err
)
grpclog
.
Fatalf
(
"Cannot initialize Kubernetes connection: %s"
,
err
)
}
}
...
...
cmd/tiller/tiller.go
View file @
de5a6a93
...
@@ -39,6 +39,7 @@ import (
...
@@ -39,6 +39,7 @@ import (
// Import to initialize client auth plugins.
// Import to initialize client auth plugins.
_
"k8s.io/client-go/plugin/pkg/client/auth"
_
"k8s.io/client-go/plugin/pkg/client/auth"
"k8s.io/helm/pkg/kube"
"k8s.io/helm/pkg/kube"
"k8s.io/helm/pkg/proto/hapi/services"
"k8s.io/helm/pkg/proto/hapi/services"
"k8s.io/helm/pkg/storage"
"k8s.io/helm/pkg/storage"
...
@@ -120,7 +121,7 @@ func start() {
...
@@ -120,7 +121,7 @@ func start() {
healthSrv
:=
health
.
NewServer
()
healthSrv
:=
health
.
NewServer
()
healthSrv
.
SetServingStatus
(
"Tiller"
,
healthpb
.
HealthCheckResponse_NOT_SERVING
)
healthSrv
.
SetServingStatus
(
"Tiller"
,
healthpb
.
HealthCheckResponse_NOT_SERVING
)
clientset
,
err
:=
kube
.
New
(
nil
)
.
ClientSet
()
clientset
,
err
:=
kube
.
New
(
nil
)
.
Kubernetes
ClientSet
()
if
err
!=
nil
{
if
err
!=
nil
{
logger
.
Fatalf
(
"Cannot initialize Kubernetes connection: %s"
,
err
)
logger
.
Fatalf
(
"Cannot initialize Kubernetes connection: %s"
,
err
)
}
}
...
@@ -129,13 +130,13 @@ func start() {
...
@@ -129,13 +130,13 @@ func start() {
case
storageMemory
:
case
storageMemory
:
env
.
Releases
=
storage
.
Init
(
driver
.
NewMemory
())
env
.
Releases
=
storage
.
Init
(
driver
.
NewMemory
())
case
storageConfigMap
:
case
storageConfigMap
:
cfgmaps
:=
driver
.
NewConfigMaps
(
clientset
.
Core
()
.
ConfigMaps
(
namespace
()))
cfgmaps
:=
driver
.
NewConfigMaps
(
clientset
.
Core
V1
()
.
ConfigMaps
(
namespace
()))
cfgmaps
.
Log
=
newLogger
(
"storage/driver"
)
.
Printf
cfgmaps
.
Log
=
newLogger
(
"storage/driver"
)
.
Printf
env
.
Releases
=
storage
.
Init
(
cfgmaps
)
env
.
Releases
=
storage
.
Init
(
cfgmaps
)
env
.
Releases
.
Log
=
newLogger
(
"storage"
)
.
Printf
env
.
Releases
.
Log
=
newLogger
(
"storage"
)
.
Printf
case
storageSecret
:
case
storageSecret
:
secrets
:=
driver
.
NewSecrets
(
clientset
.
Core
()
.
Secrets
(
namespace
()))
secrets
:=
driver
.
NewSecrets
(
clientset
.
Core
V1
()
.
Secrets
(
namespace
()))
secrets
.
Log
=
newLogger
(
"storage/driver"
)
.
Printf
secrets
.
Log
=
newLogger
(
"storage/driver"
)
.
Printf
env
.
Releases
=
storage
.
Init
(
secrets
)
env
.
Releases
=
storage
.
Init
(
secrets
)
...
...
glide.lock
View file @
de5a6a93
hash:
a4a7df055da2413c8e42cb127833a77d6a2910396efdabf5a7dc5af956478fef
hash:
30b1d3f31b7bd310a9434e081bae3d5dc18c0a79b3674c0adffccc8d602e9227
updated: 2018-
09-13T18:30:19.732109-06:00
updated: 2018-
10-04T17:11:58.043264Z
imports:
imports:
- name: cloud.google.com/go
- name: cloud.google.com/go
version: 3b1ae45394a234c385be014e9a488f2bb6eef821
version: 3b1ae45394a234c385be014e9a488f2bb6eef821
...
@@ -11,22 +11,23 @@ imports:
...
@@ -11,22 +11,23 @@ imports:
- name: github.com/asaskevich/govalidator
- name: github.com/asaskevich/govalidator
version: 7664702784775e51966f0885f5cd27435916517b
version: 7664702784775e51966f0885f5cd27435916517b
- name: github.com/Azure/go-ansiterm
- name: github.com/Azure/go-ansiterm
version:
19f72df4d05d31cbe1c56bfc8045c96babff6c7e
version:
d6e3b3328b783f23731bc4d058875b0371ff8109
subpackages:
subpackages:
- winterm
- winterm
- name: github.com/Azure/go-autorest
- name: github.com/Azure/go-autorest
version:
1ff28809256a84bb6966640ff3d0371af82ccba4
version:
bca49d5b51a50dc5bb17bbf6204c711c6dbded06
subpackages:
subpackages:
- autorest
- autorest
- autorest/adal
- autorest/adal
- autorest/azure
- autorest/azure
- autorest/date
- autorest/date
- version
- name: github.com/beorn7/perks
- name: github.com/beorn7/perks
version: 3ac7bf7a47d159a033b107610db8a1b6575507a4
version: 3ac7bf7a47d159a033b107610db8a1b6575507a4
subpackages:
subpackages:
- quantile
- quantile
- name: github.com/BurntSushi/toml
- name: github.com/BurntSushi/toml
version:
b26d9c308763d68093482582cea63d69be07a0f0
version:
3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005
- name: github.com/chai2010/gettext-go
- name: github.com/chai2010/gettext-go
version: c6fed771bfd517099caf0f7a961671fa8ed08723
version: c6fed771bfd517099caf0f7a961671fa8ed08723
subpackages:
subpackages:
...
@@ -52,7 +53,7 @@ imports:
...
@@ -52,7 +53,7 @@ imports:
- digestset
- digestset
- reference
- reference
- name: github.com/docker/docker
- name: github.com/docker/docker
version:
4f3616fb1c112e206b88cb7a9922bf49067a7756
version:
a9fbbdc8dd8794b20af358382ab780559bca589d
subpackages:
subpackages:
- api
- api
- api/types
- api/types
...
@@ -71,19 +72,15 @@ imports:
...
@@ -71,19 +72,15 @@ imports:
- api/types/versions
- api/types/versions
- api/types/volume
- api/types/volume
- client
- client
- pkg/ioutils
- daemon/logger/jsonfilelog/jsonlog
- pkg/jsonlog
- pkg/jsonmessage
- pkg/jsonmessage
- pkg/longpath
- pkg/mount
- pkg/mount
- pkg/parsers
- pkg/parsers
- pkg/parsers/operatingsystem
- pkg/parsers/operatingsystem
- pkg/stdcopy
- pkg/stdcopy
- pkg/sysinfo
- pkg/sysinfo
- pkg/system
- pkg/term
- pkg/term
- pkg/term/windows
- pkg/term/windows
- pkg/tlsconfig
- name: github.com/docker/go-connections
- name: github.com/docker/go-connections
version: 3ede32e2033de7505e6500d6c868c2b9ed9f169d
version: 3ede32e2033de7505e6500d6c868c2b9ed9f169d
subpackages:
subpackages:
...
@@ -97,7 +94,7 @@ imports:
...
@@ -97,7 +94,7 @@ imports:
subpackages:
subpackages:
- spdy
- spdy
- name: github.com/evanphx/json-patch
- name: github.com/evanphx/json-patch
version:
94e38aa1586e8a6c8a75770bddf5ff84c48a106b
version:
36442dbdb585210f8d5a1b45e67aa323c197d5c4
- name: github.com/exponent-io/jsonpath
- name: github.com/exponent-io/jsonpath
version: d6023ce2651d8eafb5c75bb0c7167536102ec9f5
version: d6023ce2651d8eafb5c75bb0c7167536102ec9f5
- name: github.com/fatih/camelcase
- name: github.com/fatih/camelcase
...
@@ -180,7 +177,7 @@ imports:
...
@@ -180,7 +177,7 @@ imports:
- name: github.com/huandu/xstrings
- name: github.com/huandu/xstrings
version: 3959339b333561bf62a38b424fd41517c2c90f40
version: 3959339b333561bf62a38b424fd41517c2c90f40
- name: github.com/imdario/mergo
- name: github.com/imdario/mergo
version:
6633656539c1639d9d78127b7d47c622b5d7b6dc
version:
9316a62528ac99aaecb4e47eadd6dc8aa6533d58
- name: github.com/inconshreveable/mousetrap
- name: github.com/inconshreveable/mousetrap
version: 76626ae9c91c4f2a10f34cad8ce83ea42c93bb75
version: 76626ae9c91c4f2a10f34cad8ce83ea42c93bb75
- name: github.com/json-iterator/go
- name: github.com/json-iterator/go
...
@@ -202,7 +199,7 @@ imports:
...
@@ -202,7 +199,7 @@ imports:
- name: github.com/mattn/go-runewidth
- name: github.com/mattn/go-runewidth
version: d6bea18f789704b5f83375793155289da36a3c7f
version: d6bea18f789704b5f83375793155289da36a3c7f
- name: github.com/matttproud/golang_protobuf_extensions
- name: github.com/matttproud/golang_protobuf_extensions
version:
fc2b8d3a73c4867e51861bbdd5ae3c1f0869dd6a
version:
c12348ce28de40eed0136aa2b644d0ee0650e56c
subpackages:
subpackages:
- pbutil
- pbutil
- name: github.com/mitchellh/go-wordwrap
- name: github.com/mitchellh/go-wordwrap
...
@@ -256,11 +253,11 @@ imports:
...
@@ -256,11 +253,11 @@ imports:
subpackages:
subpackages:
- doc
- doc
- name: github.com/spf13/pflag
- name: github.com/spf13/pflag
version:
583c0c0531f06d5278b7d917446061adc344b5cd
version:
298182f68c66c05229eb03ac171abe6e309ee79a
- name: github.com/technosophos/moniker
- name: github.com/technosophos/moniker
version: a5dbd03a2245d554160e3ae6bfdcf969fe58b431
version: a5dbd03a2245d554160e3ae6bfdcf969fe58b431
- name: golang.org/x/crypto
- name: golang.org/x/crypto
version:
49796115aa4b964c318aad4f3084fdb41e9aa067
version:
de0752318171da717af4ce24d0a2e8626afaeb11
subpackages:
subpackages:
- cast5
- cast5
- ed25519
- ed25519
...
@@ -294,7 +291,7 @@ imports:
...
@@ -294,7 +291,7 @@ imports:
- jws
- jws
- jwt
- jwt
- name: golang.org/x/sys
- name: golang.org/x/sys
version:
43eea11bc92608addb41b8a406b0407495c106f6
version:
95c6576299259db960f6c5b9b69ea52422860fce
subpackages:
subpackages:
- unix
- unix
- windows
- windows
...
@@ -361,7 +358,7 @@ imports:
...
@@ -361,7 +358,7 @@ imports:
- name: gopkg.in/inf.v0
- name: gopkg.in/inf.v0
version: 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4
version: 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4
- name: gopkg.in/square/go-jose.v2
- name: gopkg.in/square/go-jose.v2
version:
f8f38de21b4dcd69d0413faf231983f5fd6634b
1
version:
89060dee6a84df9a4dae49f676f0c755037834f
1
subpackages:
subpackages:
- cipher
- cipher
- json
- json
...
@@ -369,7 +366,7 @@ imports:
...
@@ -369,7 +366,7 @@ imports:
- name: gopkg.in/yaml.v2
- name: gopkg.in/yaml.v2
version: 670d4cfef0544295bc27a114dbac37980d83185a
version: 670d4cfef0544295bc27a114dbac37980d83185a
- name: k8s.io/api
- name: k8s.io/api
version:
2d6f90ab1293a1fb871cf149423ebb72aa7423aa
version:
fd83cbc87e7632ccd8bbab63d2b673d4e0c631cc
subpackages:
subpackages:
- admission/v1beta1
- admission/v1beta1
- admissionregistration/v1alpha1
- admissionregistration/v1alpha1
...
@@ -383,10 +380,12 @@ imports:
...
@@ -383,10 +380,12 @@ imports:
- authorization/v1beta1
- authorization/v1beta1
- autoscaling/v1
- autoscaling/v1
- autoscaling/v2beta1
- autoscaling/v2beta1
- autoscaling/v2beta2
- batch/v1
- batch/v1
- batch/v1beta1
- batch/v1beta1
- batch/v2alpha1
- batch/v2alpha1
- certificates/v1beta1
- certificates/v1beta1
- coordination/v1beta1
- core/v1
- core/v1
- events/v1beta1
- events/v1beta1
- extensions/v1beta1
- extensions/v1beta1
...
@@ -403,11 +402,11 @@ imports:
...
@@ -403,11 +402,11 @@ imports:
- storage/v1alpha1
- storage/v1alpha1
- storage/v1beta1
- storage/v1beta1
- name: k8s.io/apiextensions-apiserver
- name: k8s.io/apiextensions-apiserver
version:
898b0eda132e1aeac43a459785144ee4bf9b0a2e
version:
05e89e265cc594459a3d33a63e779d94e6614c63
subpackages:
subpackages:
- pkg/features
- pkg/features
- name: k8s.io/apimachinery
- name: k8s.io/apimachinery
version:
103fd098999dc9c0c88536f5c9ad2e5da39373ae
version:
6dd46049f39503a1fc8d65de4bd566829e95faff
subpackages:
subpackages:
- pkg/api/equality
- pkg/api/equality
- pkg/api/errors
- pkg/api/errors
...
@@ -447,6 +446,7 @@ imports:
...
@@ -447,6 +446,7 @@ imports:
- pkg/util/intstr
- pkg/util/intstr
- pkg/util/json
- pkg/util/json
- pkg/util/mergepatch
- pkg/util/mergepatch
- pkg/util/naming
- pkg/util/net
- pkg/util/net
- pkg/util/rand
- pkg/util/rand
- pkg/util/remotecommand
- pkg/util/remotecommand
...
@@ -463,7 +463,7 @@ imports:
...
@@ -463,7 +463,7 @@ imports:
- third_party/forked/golang/netutil
- third_party/forked/golang/netutil
- third_party/forked/golang/reflect
- third_party/forked/golang/reflect
- name: k8s.io/apiserver
- name: k8s.io/apiserver
version:
8b122ec9e3bbab91a262d17a39325e69349dc44d
version:
e85ad7b666fef0476185731329f4cff1536efff8
subpackages:
subpackages:
- pkg/apis/audit
- pkg/apis/audit
- pkg/authentication/authenticator
- pkg/authentication/authenticator
...
@@ -472,8 +472,14 @@ imports:
...
@@ -472,8 +472,14 @@ imports:
- pkg/endpoints/request
- pkg/endpoints/request
- pkg/features
- pkg/features
- pkg/util/feature
- pkg/util/feature
- name: k8s.io/cli-runtime
version: 79bf4e0b64544d8c490247abae089bea572ddae6
subpackages:
- pkg/genericclioptions
- pkg/genericclioptions/printers
- pkg/genericclioptions/resource
- name: k8s.io/client-go
- name: k8s.io/client-go
version:
59698c7d9724b0f95f9dc9e7f7dfdcc3dfeceb82
version:
1638f8970cefaa404ff3a62950f88b08292b2696
subpackages:
subpackages:
- discovery
- discovery
- discovery/fake
- discovery/fake
...
@@ -504,6 +510,8 @@ imports:
...
@@ -504,6 +510,8 @@ imports:
- kubernetes/typed/autoscaling/v1/fake
- kubernetes/typed/autoscaling/v1/fake
- kubernetes/typed/autoscaling/v2beta1
- kubernetes/typed/autoscaling/v2beta1
- kubernetes/typed/autoscaling/v2beta1/fake
- kubernetes/typed/autoscaling/v2beta1/fake
- kubernetes/typed/autoscaling/v2beta2
- kubernetes/typed/autoscaling/v2beta2/fake
- kubernetes/typed/batch/v1
- kubernetes/typed/batch/v1
- kubernetes/typed/batch/v1/fake
- kubernetes/typed/batch/v1/fake
- kubernetes/typed/batch/v1beta1
- kubernetes/typed/batch/v1beta1
...
@@ -512,6 +520,8 @@ imports:
...
@@ -512,6 +520,8 @@ imports:
- kubernetes/typed/batch/v2alpha1/fake
- kubernetes/typed/batch/v2alpha1/fake
- kubernetes/typed/certificates/v1beta1
- kubernetes/typed/certificates/v1beta1
- kubernetes/typed/certificates/v1beta1/fake
- kubernetes/typed/certificates/v1beta1/fake
- kubernetes/typed/coordination/v1beta1
- kubernetes/typed/coordination/v1beta1/fake
- kubernetes/typed/core/v1
- kubernetes/typed/core/v1
- kubernetes/typed/core/v1/fake
- kubernetes/typed/core/v1/fake
- kubernetes/typed/events/v1beta1
- kubernetes/typed/events/v1beta1
...
@@ -540,8 +550,6 @@ imports:
...
@@ -540,8 +550,6 @@ imports:
- kubernetes/typed/storage/v1alpha1/fake
- kubernetes/typed/storage/v1alpha1/fake
- kubernetes/typed/storage/v1beta1
- kubernetes/typed/storage/v1beta1
- kubernetes/typed/storage/v1beta1/fake
- kubernetes/typed/storage/v1beta1/fake
- listers/apps/v1
- listers/core/v1
- pkg/apis/clientauthentication
- pkg/apis/clientauthentication
- pkg/apis/clientauthentication/v1alpha1
- pkg/apis/clientauthentication/v1alpha1
- pkg/apis/clientauthentication/v1beta1
- pkg/apis/clientauthentication/v1beta1
...
@@ -578,6 +586,7 @@ imports:
...
@@ -578,6 +586,7 @@ imports:
- tools/record
- tools/record
- tools/reference
- tools/reference
- tools/remotecommand
- tools/remotecommand
- tools/watch
- transport
- transport
- transport/spdy
- transport/spdy
- util/buffer
- util/buffer
...
@@ -590,13 +599,13 @@ imports:
...
@@ -590,13 +599,13 @@ imports:
- util/jsonpath
- util/jsonpath
- util/retry
- util/retry
- name: k8s.io/kube-openapi
- name: k8s.io/kube-openapi
version:
91cfa479c814065e420cee7ed227db0f63a5854e
version:
0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803
subpackages:
subpackages:
- pkg/util/proto
- pkg/util/proto
- pkg/util/proto/testing
- pkg/util/proto/testing
- pkg/util/proto/validation
- pkg/util/proto/validation
- name: k8s.io/kubernetes
- name: k8s.io/kubernetes
version:
2e809eed16445fff9dcbfc56e9936cf76ccbdadc
version:
54a352dda957bce0f88e49b65a6ee8bba8c0ba74
subpackages:
subpackages:
- pkg/api/events
- pkg/api/events
- pkg/api/legacyscheme
- pkg/api/legacyscheme
...
@@ -630,6 +639,7 @@ imports:
...
@@ -630,6 +639,7 @@ imports:
- pkg/apis/autoscaling/install
- pkg/apis/autoscaling/install
- pkg/apis/autoscaling/v1
- pkg/apis/autoscaling/v1
- pkg/apis/autoscaling/v2beta1
- pkg/apis/autoscaling/v2beta1
- pkg/apis/autoscaling/v2beta2
- pkg/apis/batch
- pkg/apis/batch
- pkg/apis/batch/install
- pkg/apis/batch/install
- pkg/apis/batch/v1
- pkg/apis/batch/v1
...
@@ -638,9 +648,9 @@ imports:
...
@@ -638,9 +648,9 @@ imports:
- pkg/apis/certificates
- pkg/apis/certificates
- pkg/apis/certificates/install
- pkg/apis/certificates/install
- pkg/apis/certificates/v1beta1
- pkg/apis/certificates/v1beta1
- pkg/apis/co
mponentconfig
- pkg/apis/co
ordination
- pkg/apis/co
mponentconfig
/install
- pkg/apis/co
ordination
/install
- pkg/apis/co
mponentconfig/v1alph
a1
- pkg/apis/co
ordination/v1bet
a1
- pkg/apis/core
- pkg/apis/core
- pkg/apis/core/helper
- pkg/apis/core/helper
- pkg/apis/core/helper/qos
- pkg/apis/core/helper/qos
...
@@ -684,40 +694,24 @@ imports:
...
@@ -684,40 +694,24 @@ imports:
- pkg/apis/storage/v1beta1
- pkg/apis/storage/v1beta1
- pkg/capabilities
- pkg/capabilities
- pkg/client/clientset_generated/internalclientset
- pkg/client/clientset_generated/internalclientset
- pkg/client/clientset_generated/internalclientset/fake
- pkg/client/clientset_generated/internalclientset/scheme
- pkg/client/clientset_generated/internalclientset/scheme
- pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion
- pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion
- pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/apps/internalversion
- pkg/client/clientset_generated/internalclientset/typed/apps/internalversion
- pkg/client/clientset_generated/internalclientset/typed/apps/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion
- pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion
- pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion
- pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion
- pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion
- pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion
- pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/batch/internalversion
- pkg/client/clientset_generated/internalclientset/typed/batch/internalversion
- pkg/client/clientset_generated/internalclientset/typed/batch/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion
- pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion
- pkg/client/clientset_generated/internalclientset/typed/c
ertificates/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/c
oordination/internalversion
- pkg/client/clientset_generated/internalclientset/typed/core/internalversion
- pkg/client/clientset_generated/internalclientset/typed/core/internalversion
- pkg/client/clientset_generated/internalclientset/typed/core/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/events/internalversion
- pkg/client/clientset_generated/internalclientset/typed/events/internalversion
- pkg/client/clientset_generated/internalclientset/typed/events/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion
- pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion
- pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/networking/internalversion
- pkg/client/clientset_generated/internalclientset/typed/networking/internalversion
- pkg/client/clientset_generated/internalclientset/typed/networking/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/policy/internalversion
- pkg/client/clientset_generated/internalclientset/typed/policy/internalversion
- pkg/client/clientset_generated/internalclientset/typed/policy/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion
- pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion
- pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/scheduling/internalversion
- pkg/client/clientset_generated/internalclientset/typed/scheduling/internalversion
- pkg/client/clientset_generated/internalclientset/typed/scheduling/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/settings/internalversion
- pkg/client/clientset_generated/internalclientset/typed/settings/internalversion
- pkg/client/clientset_generated/internalclientset/typed/settings/internalversion/fake
- pkg/client/clientset_generated/internalclientset/typed/storage/internalversion
- pkg/client/clientset_generated/internalclientset/typed/storage/internalversion
- pkg/client/clientset_generated/internalclientset/typed/storage/internalversion/fake
- pkg/controller
- pkg/controller
- pkg/controller/deployment/util
- pkg/controller/deployment/util
- pkg/credentialprovider
- pkg/credentialprovider
...
@@ -733,9 +727,6 @@ imports:
...
@@ -733,9 +727,6 @@ imports:
- pkg/kubectl/cmd/util/openapi
- pkg/kubectl/cmd/util/openapi
- pkg/kubectl/cmd/util/openapi/testing
- pkg/kubectl/cmd/util/openapi/testing
- pkg/kubectl/cmd/util/openapi/validation
- pkg/kubectl/cmd/util/openapi/validation
- pkg/kubectl/genericclioptions
- pkg/kubectl/genericclioptions/printers
- pkg/kubectl/genericclioptions/resource
- pkg/kubectl/scheme
- pkg/kubectl/scheme
- pkg/kubectl/util
- pkg/kubectl/util
- pkg/kubectl/util/hash
- pkg/kubectl/util/hash
...
@@ -763,16 +754,16 @@ imports:
...
@@ -763,16 +754,16 @@ imports:
- pkg/util/net/sets
- pkg/util/net/sets
- pkg/util/node
- pkg/util/node
- pkg/util/parsers
- pkg/util/parsers
- pkg/util/pointer
- pkg/util/slice
- pkg/util/slice
- pkg/util/taints
- pkg/util/taints
- pkg/version
- pkg/version
- name: k8s.io/utils
- name: k8s.io/utils
version:
258e2a2fa64568210fbd6267cf1d8fd87c3cb86e
version:
66066c83e385e385ccc3c964b44fd7dcd413d0ed
subpackages:
subpackages:
- clock
- clock
- exec
- exec
- exec/testing
- exec/testing
- pointer
- name: vbom.ml/util
- name: vbom.ml/util
version: db5cfe13f5cc80a4990d98e2e1b0707a4d1a5394
version: db5cfe13f5cc80a4990d98e2e1b0707a4d1a5394
subpackages:
subpackages:
...
@@ -783,7 +774,7 @@ testImports:
...
@@ -783,7 +774,7 @@ testImports:
subpackages:
subpackages:
- difflib
- difflib
- name: github.com/stretchr/testify
- name: github.com/stretchr/testify
version:
e3a8ff8ce36581f87a15341206f205b1da46705
9
version:
c679ae2cc0cb27ec3293fea7e254e47386f05d6
9
subpackages:
subpackages:
- assert
- assert
- require
- require
glide.yaml
View file @
de5a6a93
package
:
k8s.io/helm
package
:
k8s.io/helm
import
:
import
:
-
package
:
golang.org/x/net
-
package
:
golang.org/x/net
subpackages
:
subpackages
:
-
context
-
context
-
package
:
github.com/spf13/cobra
-
package
:
github.com/spf13/cobra
version
:
c439c4fa093711d42e1b01acb1235b52004753c1
version
:
c439c4fa093711d42e1b01acb1235b52004753c1
-
package
:
github.com/spf13/pflag
-
package
:
github.com/spf13/pflag
version
:
583c0c0531f06d5278b7d917446061adc344b5cd
version
:
~1.0.1
-
package
:
github.com/Masterminds/vcs
-
package
:
github.com/Masterminds/vcs
version
:
~1.11.0
# Pin version of mergo that is compatible with both sprig and Kubernetes
# Pin version of mergo that is compatible with both sprig and Kubernetes
-
package
:
github.com/imdario/mergo
-
package
:
github.com/imdario/mergo
version
:
6633656539c1639d9d78127b7d47c622b5d7b6dc
version
:
v0.3.5
-
package
:
github.com/Masterminds/sprig
-
package
:
github.com/Masterminds/sprig
version
:
^2.16.0
version
:
^2.16.0
-
package
:
github.com/ghodss/yaml
-
package
:
github.com/ghodss/yaml
-
package
:
github.com/Masterminds/semver
-
package
:
github.com/Masterminds/semver
version
:
~1.3.1
version
:
~1.3.1
-
package
:
github.com/technosophos/moniker
-
package
:
github.com/technosophos/moniker
version
:
~0.2
version
:
~0.2
-
package
:
github.com/golang/protobuf
-
package
:
github.com/golang/protobuf
version
:
1643683e1b54a9e88ad26d98f81400c8c9d9f4f9
version
:
1643683e1b54a9e88ad26d98f81400c8c9d9f4f9
subpackages
:
subpackages
:
-
proto
-
proto
-
ptypes/any
-
ptypes/any
-
ptypes/timestamp
-
ptypes/timestamp
-
package
:
google.golang.org/grpc
-
package
:
google.golang.org/grpc
version
:
1.7.2
version
:
1.7.2
-
package
:
github.com/gosuri/uitable
-
package
:
github.com/gosuri/uitable
-
package
:
github.com/asaskevich/govalidator
-
package
:
github.com/asaskevich/govalidator
version
:
^4.0.0
version
:
^4.0.0
-
package
:
golang.org/x/crypto
-
package
:
golang.org/x/crypto
subpackages
:
subpackages
:
-
openpgp
-
openpgp
-
ssh/terminal
-
ssh/terminal
# pin version of golang.org/x/sys that is compatible with golang.org/x/crypto
-
package
:
github.com/gobwas/glob
-
package
:
golang.org/x/sys
version
:
43eea11
subpackages
:
-
unix
-
windows
-
package
:
github.com/gobwas/glob
version
:
^0.2.1
version
:
^0.2.1
-
package
:
github.com/evanphx/json-patch
-
package
:
github.com/evanphx/json-patch
-
package
:
github.com/BurntSushi/toml
-
package
:
github.com/BurntSushi/toml
version
:
~0.3.0
version
:
~0.3.0
-
package
:
github.com/prometheus/client_golang
-
package
:
github.com/prometheus/client_golang
version
:
0.8.0
version
:
0.8.0
-
package
:
github.com/grpc-ecosystem/go-grpc-prometheus
-
package
:
github.com/grpc-ecosystem/go-grpc-prometheus
-
package
:
k8s.io/kubernetes
-
package
:
k8s.io/kubernetes
version
:
release-1.11
version
:
release-1.12
-
package
:
k8s.io/client-go
-
package
:
k8s.io/client-go
version
:
kubernetes-1.11.1
version
:
kubernetes-1.12.0
-
package
:
k8s.io/api
-
package
:
k8s.io/api
version
:
kubernetes-1.11.1
version
:
kubernetes-1.12.0
-
package
:
k8s.io/apimachinery
-
package
:
k8s.io/apimachinery
version
:
kubernetes-1.11.1
version
:
kubernetes-1.12.0
-
package
:
k8s.io/apiserver
-
package
:
k8s.io/apiserver
version
:
kubernetes-1.11.1
version
:
kubernetes-1.12.0
-
package
:
github.com/cyphar/filepath-securejoin
-
package
:
k8s.io/cli-runtime
version
:
kubernetes-1.12.0
-
package
:
github.com/cyphar/filepath-securejoin
version
:
^0.2.1
version
:
^0.2.1
testImports
:
testImports
:
-
package
:
github.com/stretchr/testify
-
package
:
github.com/stretchr/testify
version
:
^1.1.4
version
:
^1.1.4
subpackages
:
subpackages
:
-
assert
-
assert
pkg/helm/portforwarder/portforwarder_test.go
View file @
de5a6a93
...
@@ -76,7 +76,7 @@ func TestGetFirstPod(t *testing.T) {
...
@@ -76,7 +76,7 @@ func TestGetFirstPod(t *testing.T) {
for
_
,
tt
:=
range
tests
{
for
_
,
tt
:=
range
tests
{
client
:=
fake
.
NewSimpleClientset
(
&
v1
.
PodList
{
Items
:
tt
.
pods
})
client
:=
fake
.
NewSimpleClientset
(
&
v1
.
PodList
{
Items
:
tt
.
pods
})
name
,
err
:=
GetTillerPodName
(
client
.
Core
(),
v1
.
NamespaceDefault
)
name
,
err
:=
GetTillerPodName
(
client
.
Core
V1
(),
v1
.
NamespaceDefault
)
if
(
err
!=
nil
)
!=
tt
.
err
{
if
(
err
!=
nil
)
!=
tt
.
err
{
t
.
Errorf
(
"%q. expected error: %v, got %v"
,
tt
.
name
,
tt
.
err
,
err
)
t
.
Errorf
(
"%q. expected error: %v, got %v"
,
tt
.
name
,
tt
.
err
,
err
)
}
}
...
...
pkg/kube/client.go
View file @
de5a6a93
...
@@ -18,6 +18,7 @@ package kube // import "k8s.io/helm/pkg/kube"
...
@@ -18,6 +18,7 @@ package kube // import "k8s.io/helm/pkg/kube"
import
(
import
(
"bytes"
"bytes"
"context"
"encoding/json"
"encoding/json"
goerrors
"errors"
goerrors
"errors"
"fmt"
"fmt"
...
@@ -42,20 +43,19 @@ import (
...
@@ -42,20 +43,19 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/cli-runtime/pkg/genericclioptions"
"k8s.io/cli-runtime/pkg/genericclioptions/resource"
watchtools
"k8s.io/client-go/tools/watch"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/legacyscheme"
batchinternal
"k8s.io/kubernetes/pkg/apis/batch"
batchinternal
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl/cmd/get"
"k8s.io/kubernetes/pkg/kubectl/cmd/get"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/validation"
"k8s.io/kubernetes/pkg/kubectl/validation"
)
)
const
(
// MissingGetHeader is added to Get's output when a resource is not found.
// MissingGetHeader is added to Get's output when a resource is not found.
const
MissingGetHeader
=
"==> MISSING
\n
KIND
\t\t
NAME
\n
"
MissingGetHeader
=
"==> MISSING
\n
KIND
\t\t
NAME
\n
"
)
// ErrNoObjectsVisited indicates that during a visit operation, no matching objects were found.
// ErrNoObjectsVisited indicates that during a visit operation, no matching objects were found.
var
ErrNoObjectsVisited
=
goerrors
.
New
(
"no objects visited"
)
var
ErrNoObjectsVisited
=
goerrors
.
New
(
"no objects visited"
)
...
@@ -86,7 +86,7 @@ type ResourceActorFunc func(*resource.Info) error
...
@@ -86,7 +86,7 @@ type ResourceActorFunc func(*resource.Info) error
//
//
// Namespace will set the namespace.
// Namespace will set the namespace.
func
(
c
*
Client
)
Create
(
namespace
string
,
reader
io
.
Reader
,
timeout
int64
,
shouldWait
bool
)
error
{
func
(
c
*
Client
)
Create
(
namespace
string
,
reader
io
.
Reader
,
timeout
int64
,
shouldWait
bool
)
error
{
client
,
err
:=
c
.
ClientSet
()
client
,
err
:=
c
.
Kubernetes
ClientSet
()
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
@@ -163,7 +163,7 @@ func (c *Client) Get(namespace string, reader io.Reader) (string, error) {
...
@@ -163,7 +163,7 @@ func (c *Client) Get(namespace string, reader io.Reader) (string, error) {
return
""
,
err
return
""
,
err
}
}
var
objPods
=
make
(
map
[
string
][]
core
.
Pod
)
var
objPods
=
make
(
map
[
string
][]
v1
.
Pod
)
missing
:=
[]
string
{}
missing
:=
[]
string
{}
err
=
perform
(
infos
,
func
(
info
*
resource
.
Info
)
error
{
err
=
perform
(
infos
,
func
(
info
*
resource
.
Info
)
error
{
...
@@ -368,7 +368,7 @@ func perform(infos Result, fn ResourceActorFunc) error {
...
@@ -368,7 +368,7 @@ func perform(infos Result, fn ResourceActorFunc) error {
}
}
func
createResource
(
info
*
resource
.
Info
)
error
{
func
createResource
(
info
*
resource
.
Info
)
error
{
obj
,
err
:=
resource
.
NewHelper
(
info
.
Client
,
info
.
Mapping
)
.
Create
(
info
.
Namespace
,
true
,
info
.
Object
)
obj
,
err
:=
resource
.
NewHelper
(
info
.
Client
,
info
.
Mapping
)
.
Create
(
info
.
Namespace
,
true
,
info
.
Object
,
nil
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
@@ -438,7 +438,7 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object,
...
@@ -438,7 +438,7 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object,
// send patch to server
// send patch to server
helper
:=
resource
.
NewHelper
(
target
.
Client
,
target
.
Mapping
)
helper
:=
resource
.
NewHelper
(
target
.
Client
,
target
.
Mapping
)
obj
,
err
:=
helper
.
Patch
(
target
.
Namespace
,
target
.
Name
,
patchType
,
patch
)
obj
,
err
:=
helper
.
Patch
(
target
.
Namespace
,
target
.
Name
,
patchType
,
patch
,
nil
)
if
err
!=
nil
{
if
err
!=
nil
{
kind
:=
target
.
Mapping
.
GroupVersionKind
.
Kind
kind
:=
target
.
Mapping
.
GroupVersionKind
.
Kind
log
.
Printf
(
"Cannot patch %s: %q (%v)"
,
kind
,
target
.
Name
,
err
)
log
.
Printf
(
"Cannot patch %s: %q (%v)"
,
kind
,
target
.
Name
,
err
)
...
@@ -479,12 +479,12 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object,
...
@@ -479,12 +479,12 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object,
return
nil
return
nil
}
}
client
,
err
:=
c
.
ClientSet
()
client
,
err
:=
c
.
Kubernetes
ClientSet
()
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
pods
,
err
:=
client
.
Core
()
.
Pods
(
target
.
Namespace
)
.
List
(
metav1
.
ListOptions
{
pods
,
err
:=
client
.
Core
V1
()
.
Pods
(
target
.
Namespace
)
.
List
(
metav1
.
ListOptions
{
FieldSelector
:
fields
.
Everything
()
.
String
(),
FieldSelector
:
fields
.
Everything
()
.
String
(),
LabelSelector
:
labels
.
Set
(
selector
)
.
AsSelector
()
.
String
(),
LabelSelector
:
labels
.
Set
(
selector
)
.
AsSelector
()
.
String
(),
})
})
...
@@ -497,7 +497,7 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object,
...
@@ -497,7 +497,7 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object,
c
.
Log
(
"Restarting pod: %v/%v"
,
pod
.
Namespace
,
pod
.
Name
)
c
.
Log
(
"Restarting pod: %v/%v"
,
pod
.
Namespace
,
pod
.
Name
)
// Delete each pod for get them restarted with changed spec.
// Delete each pod for get them restarted with changed spec.
if
err
:=
client
.
Core
()
.
Pods
(
pod
.
Namespace
)
.
Delete
(
pod
.
Name
,
metav1
.
NewPreconditionDeleteOptions
(
string
(
pod
.
UID
)));
err
!=
nil
{
if
err
:=
client
.
Core
V1
()
.
Pods
(
pod
.
Namespace
)
.
Delete
(
pod
.
Name
,
metav1
.
NewPreconditionDeleteOptions
(
string
(
pod
.
UID
)));
err
!=
nil
{
return
err
return
err
}
}
}
}
...
@@ -561,7 +561,9 @@ func (c *Client) watchUntilReady(timeout time.Duration, info *resource.Info) err
...
@@ -561,7 +561,9 @@ func (c *Client) watchUntilReady(timeout time.Duration, info *resource.Info) err
// In the future, we might want to add some special logic for types
// In the future, we might want to add some special logic for types
// like Ingress, Volume, etc.
// like Ingress, Volume, etc.
_
,
err
=
watch
.
Until
(
timeout
,
w
,
func
(
e
watch
.
Event
)
(
bool
,
error
)
{
ctx
,
cancel
:=
watchtools
.
ContextWithOptionalTimeout
(
context
.
Background
(),
timeout
)
defer
cancel
()
_
,
err
=
watchtools
.
UntilWithoutRetry
(
ctx
,
w
,
func
(
e
watch
.
Event
)
(
bool
,
error
)
{
switch
e
.
Type
{
switch
e
.
Type
{
case
watch
.
Added
,
watch
.
Modified
:
case
watch
.
Added
,
watch
.
Modified
:
// For things like a secret or a config map, this is the best indicator
// For things like a secret or a config map, this is the best indicator
...
@@ -623,26 +625,26 @@ func scrubValidationError(err error) error {
...
@@ -623,26 +625,26 @@ func scrubValidationError(err error) error {
// WaitAndGetCompletedPodPhase waits up to a timeout until a pod enters a completed phase
// WaitAndGetCompletedPodPhase waits up to a timeout until a pod enters a completed phase
// and returns said phase (PodSucceeded or PodFailed qualify).
// and returns said phase (PodSucceeded or PodFailed qualify).
func
(
c
*
Client
)
WaitAndGetCompletedPodPhase
(
namespace
string
,
reader
io
.
Reader
,
timeout
time
.
Duration
)
(
core
.
PodPhase
,
error
)
{
func
(
c
*
Client
)
WaitAndGetCompletedPodPhase
(
namespace
string
,
reader
io
.
Reader
,
timeout
time
.
Duration
)
(
v1
.
PodPhase
,
error
)
{
infos
,
err
:=
c
.
Build
(
namespace
,
reader
)
infos
,
err
:=
c
.
Build
(
namespace
,
reader
)
if
err
!=
nil
{
if
err
!=
nil
{
return
core
.
PodUnknown
,
err
return
v1
.
PodUnknown
,
err
}
}
info
:=
infos
[
0
]
info
:=
infos
[
0
]
kind
:=
info
.
Mapping
.
GroupVersionKind
.
Kind
kind
:=
info
.
Mapping
.
GroupVersionKind
.
Kind
if
kind
!=
"Pod"
{
if
kind
!=
"Pod"
{
return
core
.
PodUnknown
,
fmt
.
Errorf
(
"%s is not a Pod"
,
info
.
Name
)
return
v1
.
PodUnknown
,
fmt
.
Errorf
(
"%s is not a Pod"
,
info
.
Name
)
}
}
if
err
:=
c
.
watchPodUntilComplete
(
timeout
,
info
);
err
!=
nil
{
if
err
:=
c
.
watchPodUntilComplete
(
timeout
,
info
);
err
!=
nil
{
return
core
.
PodUnknown
,
err
return
v1
.
PodUnknown
,
err
}
}
if
err
:=
info
.
Get
();
err
!=
nil
{
if
err
:=
info
.
Get
();
err
!=
nil
{
return
core
.
PodUnknown
,
err
return
v1
.
PodUnknown
,
err
}
}
status
:=
info
.
Object
.
(
*
core
.
Pod
)
.
Status
.
Phase
status
:=
info
.
Object
.
(
*
v1
.
Pod
)
.
Status
.
Phase
return
status
,
nil
return
status
,
nil
}
}
...
@@ -654,7 +656,9 @@ func (c *Client) watchPodUntilComplete(timeout time.Duration, info *resource.Inf
...
@@ -654,7 +656,9 @@ func (c *Client) watchPodUntilComplete(timeout time.Duration, info *resource.Inf
}
}
c
.
Log
(
"Watching pod %s for completion with timeout of %v"
,
info
.
Name
,
timeout
)
c
.
Log
(
"Watching pod %s for completion with timeout of %v"
,
info
.
Name
,
timeout
)
_
,
err
=
watch
.
Until
(
timeout
,
w
,
func
(
e
watch
.
Event
)
(
bool
,
error
)
{
ctx
,
cancel
:=
watchtools
.
ContextWithOptionalTimeout
(
context
.
Background
(),
timeout
)
defer
cancel
()
_
,
err
=
watchtools
.
UntilWithoutRetry
(
ctx
,
w
,
func
(
e
watch
.
Event
)
(
bool
,
error
)
{
return
isPodComplete
(
e
)
return
isPodComplete
(
e
)
})
})
...
@@ -662,15 +666,15 @@ func (c *Client) watchPodUntilComplete(timeout time.Duration, info *resource.Inf
...
@@ -662,15 +666,15 @@ func (c *Client) watchPodUntilComplete(timeout time.Duration, info *resource.Inf
}
}
func
isPodComplete
(
event
watch
.
Event
)
(
bool
,
error
)
{
func
isPodComplete
(
event
watch
.
Event
)
(
bool
,
error
)
{
o
,
ok
:=
event
.
Object
.
(
*
core
.
Pod
)
o
,
ok
:=
event
.
Object
.
(
*
v1
.
Pod
)
if
!
ok
{
if
!
ok
{
return
true
,
fmt
.
Errorf
(
"expected a *
core
.Pod, got %T"
,
event
.
Object
)
return
true
,
fmt
.
Errorf
(
"expected a *
v1
.Pod, got %T"
,
event
.
Object
)
}
}
if
event
.
Type
==
watch
.
Deleted
{
if
event
.
Type
==
watch
.
Deleted
{
return
false
,
fmt
.
Errorf
(
"pod not found"
)
return
false
,
fmt
.
Errorf
(
"pod not found"
)
}
}
switch
o
.
Status
.
Phase
{
switch
o
.
Status
.
Phase
{
case
core
.
PodFailed
,
core
.
PodSucceeded
:
case
v1
.
PodFailed
,
v1
.
PodSucceeded
:
return
true
,
nil
return
true
,
nil
}
}
return
false
,
nil
return
false
,
nil
...
@@ -678,7 +682,7 @@ func isPodComplete(event watch.Event) (bool, error) {
...
@@ -678,7 +682,7 @@ func isPodComplete(event watch.Event) (bool, error) {
//get a kubernetes resources' relation pods
//get a kubernetes resources' relation pods
// kubernetes resource used select labels to relate pods
// kubernetes resource used select labels to relate pods
func
(
c
*
Client
)
getSelectRelationPod
(
info
*
resource
.
Info
,
objPods
map
[
string
][]
core
.
Pod
)
(
map
[
string
][]
core
.
Pod
,
error
)
{
func
(
c
*
Client
)
getSelectRelationPod
(
info
*
resource
.
Info
,
objPods
map
[
string
][]
v1
.
Pod
)
(
map
[
string
][]
v1
.
Pod
,
error
)
{
if
info
==
nil
{
if
info
==
nil
{
return
objPods
,
nil
return
objPods
,
nil
}
}
...
@@ -691,9 +695,9 @@ func (c *Client) getSelectRelationPod(info *resource.Info, objPods map[string][]
...
@@ -691,9 +695,9 @@ func (c *Client) getSelectRelationPod(info *resource.Info, objPods map[string][]
return
objPods
,
nil
return
objPods
,
nil
}
}
client
,
_
:=
c
.
ClientSet
()
client
,
_
:=
c
.
Kubernetes
ClientSet
()
pods
,
err
:=
client
.
Core
()
.
Pods
(
info
.
Namespace
)
.
List
(
metav1
.
ListOptions
{
pods
,
err
:=
client
.
Core
V1
()
.
Pods
(
info
.
Namespace
)
.
List
(
metav1
.
ListOptions
{
FieldSelector
:
fields
.
Everything
()
.
String
(),
FieldSelector
:
fields
.
Everything
()
.
String
(),
LabelSelector
:
labels
.
Set
(
selector
)
.
AsSelector
()
.
String
(),
LabelSelector
:
labels
.
Set
(
selector
)
.
AsSelector
()
.
String
(),
})
})
...
@@ -718,7 +722,7 @@ func (c *Client) getSelectRelationPod(info *resource.Info, objPods map[string][]
...
@@ -718,7 +722,7 @@ func (c *Client) getSelectRelationPod(info *resource.Info, objPods map[string][]
return
objPods
,
nil
return
objPods
,
nil
}
}
func
isFoundPod
(
podItem
[]
core
.
Pod
,
pod
core
.
Pod
)
bool
{
func
isFoundPod
(
podItem
[]
v1
.
Pod
,
pod
v1
.
Pod
)
bool
{
for
_
,
value
:=
range
podItem
{
for
_
,
value
:=
range
podItem
{
if
(
value
.
Namespace
==
pod
.
Namespace
)
&&
(
value
.
Name
==
pod
.
Name
)
{
if
(
value
.
Namespace
==
pod
.
Namespace
)
&&
(
value
.
Name
==
pod
.
Name
)
{
return
true
return
true
...
...
pkg/kube/client_test.go
View file @
de5a6a93
...
@@ -24,15 +24,15 @@ import (
...
@@ -24,15 +24,15 @@ import (
"strings"
"strings"
"testing"
"testing"
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/cli-runtime/pkg/genericclioptions/resource"
"k8s.io/client-go/rest/fake"
"k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/apis/core"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/scheme"
)
)
...
@@ -42,34 +42,34 @@ func objBody(codec runtime.Codec, obj runtime.Object) io.ReadCloser {
...
@@ -42,34 +42,34 @@ func objBody(codec runtime.Codec, obj runtime.Object) io.ReadCloser {
return
ioutil
.
NopCloser
(
bytes
.
NewReader
([]
byte
(
runtime
.
EncodeOrDie
(
codec
,
obj
))))
return
ioutil
.
NopCloser
(
bytes
.
NewReader
([]
byte
(
runtime
.
EncodeOrDie
(
codec
,
obj
))))
}
}
func
newPod
(
name
string
)
core
.
Pod
{
func
newPod
(
name
string
)
v1
.
Pod
{
return
newPodWithStatus
(
name
,
core
.
PodStatus
{},
""
)
return
newPodWithStatus
(
name
,
v1
.
PodStatus
{},
""
)
}
}
func
newPodWithStatus
(
name
string
,
status
core
.
PodStatus
,
namespace
string
)
core
.
Pod
{
func
newPodWithStatus
(
name
string
,
status
v1
.
PodStatus
,
namespace
string
)
v1
.
Pod
{
ns
:=
core
.
NamespaceDefault
ns
:=
v1
.
NamespaceDefault
if
namespace
!=
""
{
if
namespace
!=
""
{
ns
=
namespace
ns
=
namespace
}
}
return
core
.
Pod
{
return
v1
.
Pod
{
ObjectMeta
:
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
name
,
Name
:
name
,
Namespace
:
ns
,
Namespace
:
ns
,
SelfLink
:
"/api/v1/namespaces/default/pods/"
+
name
,
SelfLink
:
"/api/v1/namespaces/default/pods/"
+
name
,
},
},
Spec
:
core
.
PodSpec
{
Spec
:
v1
.
PodSpec
{
Containers
:
[]
core
.
Container
{{
Containers
:
[]
v1
.
Container
{{
Name
:
"app:v4"
,
Name
:
"app:v4"
,
Image
:
"abc/app:v4"
,
Image
:
"abc/app:v4"
,
Ports
:
[]
core
.
ContainerPort
{{
Name
:
"http"
,
ContainerPort
:
80
}},
Ports
:
[]
v1
.
ContainerPort
{{
Name
:
"http"
,
ContainerPort
:
80
}},
}},
}},
},
},
Status
:
status
,
Status
:
status
,
}
}
}
}
func
newPodList
(
names
...
string
)
core
.
PodList
{
func
newPodList
(
names
...
string
)
v1
.
PodList
{
var
list
core
.
PodList
var
list
v1
.
PodList
for
_
,
name
:=
range
names
{
for
_
,
name
:=
range
names
{
list
.
Items
=
append
(
list
.
Items
,
newPod
(
name
))
list
.
Items
=
append
(
list
.
Items
,
newPod
(
name
))
}
}
...
@@ -114,8 +114,8 @@ func TestUpdate(t *testing.T) {
...
@@ -114,8 +114,8 @@ func TestUpdate(t *testing.T) {
listA
:=
newPodList
(
"starfish"
,
"otter"
,
"squid"
)
listA
:=
newPodList
(
"starfish"
,
"otter"
,
"squid"
)
listB
:=
newPodList
(
"starfish"
,
"otter"
,
"dolphin"
)
listB
:=
newPodList
(
"starfish"
,
"otter"
,
"dolphin"
)
listC
:=
newPodList
(
"starfish"
,
"otter"
,
"dolphin"
)
listC
:=
newPodList
(
"starfish"
,
"otter"
,
"dolphin"
)
listB
.
Items
[
0
]
.
Spec
.
Containers
[
0
]
.
Ports
=
[]
core
.
ContainerPort
{{
Name
:
"https"
,
ContainerPort
:
443
}}
listB
.
Items
[
0
]
.
Spec
.
Containers
[
0
]
.
Ports
=
[]
v1
.
ContainerPort
{{
Name
:
"https"
,
ContainerPort
:
443
}}
listC
.
Items
[
0
]
.
Spec
.
Containers
[
0
]
.
Ports
=
[]
core
.
ContainerPort
{{
Name
:
"https"
,
ContainerPort
:
443
}}
listC
.
Items
[
0
]
.
Spec
.
Containers
[
0
]
.
Ports
=
[]
v1
.
ContainerPort
{{
Name
:
"https"
,
ContainerPort
:
443
}}
var
actions
[]
string
var
actions
[]
string
...
@@ -163,7 +163,7 @@ func TestUpdate(t *testing.T) {
...
@@ -163,7 +163,7 @@ func TestUpdate(t *testing.T) {
}
}
codec
:=
legacyscheme
.
Codecs
.
LegacyCodec
(
scheme
.
Scheme
.
PrioritizedVersionsAllGroups
()
...
)
codec
:=
legacyscheme
.
Codecs
.
LegacyCodec
(
scheme
.
Scheme
.
PrioritizedVersionsAllGroups
()
...
)
if
err
:=
c
.
Update
(
core
.
NamespaceDefault
,
objBody
(
codec
,
&
listA
),
objBody
(
codec
,
&
listB
),
false
,
false
,
0
,
false
);
err
!=
nil
{
if
err
:=
c
.
Update
(
v1
.
NamespaceDefault
,
objBody
(
codec
,
&
listA
),
objBody
(
codec
,
&
listB
),
false
,
false
,
0
,
false
);
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
// TODO: Find a way to test methods that use Client Set
// TODO: Find a way to test methods that use Client Set
...
...
pkg/kube/namespace.go
View file @
de5a6a93
...
@@ -17,14 +17,14 @@ limitations under the License.
...
@@ -17,14 +17,14 @@ limitations under the License.
package
kube
// import "k8s.io/helm/pkg/kube"
package
kube
// import "k8s.io/helm/pkg/kube"
import
(
import
(
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
)
)
func
createNamespace
(
client
internalclientset
.
Interface
,
namespace
string
)
error
{
func
createNamespace
(
client
kubernetes
.
Interface
,
namespace
string
)
error
{
ns
:=
&
core
.
Namespace
{
ns
:=
&
v1
.
Namespace
{
ObjectMeta
:
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
namespace
,
Name
:
namespace
,
Labels
:
map
[
string
]
string
{
Labels
:
map
[
string
]
string
{
...
@@ -32,15 +32,15 @@ func createNamespace(client internalclientset.Interface, namespace string) error
...
@@ -32,15 +32,15 @@ func createNamespace(client internalclientset.Interface, namespace string) error
},
},
},
},
}
}
_
,
err
:=
client
.
Core
()
.
Namespaces
()
.
Create
(
ns
)
_
,
err
:=
client
.
Core
V1
()
.
Namespaces
()
.
Create
(
ns
)
return
err
return
err
}
}
func
getNamespace
(
client
internalclientset
.
Interface
,
namespace
string
)
(
*
core
.
Namespace
,
error
)
{
func
getNamespace
(
client
kubernetes
.
Interface
,
namespace
string
)
(
*
v1
.
Namespace
,
error
)
{
return
client
.
Core
()
.
Namespaces
()
.
Get
(
namespace
,
metav1
.
GetOptions
{})
return
client
.
Core
V1
()
.
Namespaces
()
.
Get
(
namespace
,
metav1
.
GetOptions
{})
}
}
func
ensureNamespace
(
client
internalclientset
.
Interface
,
namespace
string
)
error
{
func
ensureNamespace
(
client
kubernetes
.
Interface
,
namespace
string
)
error
{
_
,
err
:=
getNamespace
(
client
,
namespace
)
_
,
err
:=
getNamespace
(
client
,
namespace
)
if
err
!=
nil
&&
errors
.
IsNotFound
(
err
)
{
if
err
!=
nil
&&
errors
.
IsNotFound
(
err
)
{
err
=
createNamespace
(
client
,
namespace
)
err
=
createNamespace
(
client
,
namespace
)
...
...
pkg/kube/namespace_test.go
View file @
de5a6a93
...
@@ -20,7 +20,7 @@ import (
...
@@ -20,7 +20,7 @@ import (
"testing"
"testing"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/
kubernetes/pkg/client/clientset_generated/internalclientset
/fake"
"k8s.io/
client-go/kubernetes
/fake"
)
)
func
TestEnsureNamespace
(
t
*
testing
.
T
)
{
func
TestEnsureNamespace
(
t
*
testing
.
T
)
{
...
@@ -31,7 +31,7 @@ func TestEnsureNamespace(t *testing.T) {
...
@@ -31,7 +31,7 @@ func TestEnsureNamespace(t *testing.T) {
if
err
:=
ensureNamespace
(
client
,
"foo"
);
err
!=
nil
{
if
err
:=
ensureNamespace
(
client
,
"foo"
);
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %s"
,
err
)
t
.
Fatalf
(
"unexpected error: %s"
,
err
)
}
}
if
_
,
err
:=
client
.
Core
()
.
Namespaces
()
.
Get
(
"foo"
,
metav1
.
GetOptions
{});
err
!=
nil
{
if
_
,
err
:=
client
.
Core
V1
()
.
Namespaces
()
.
Get
(
"foo"
,
metav1
.
GetOptions
{});
err
!=
nil
{
t
.
Fatalf
(
"unexpected error: %s"
,
err
)
t
.
Fatalf
(
"unexpected error: %s"
,
err
)
}
}
}
}
pkg/kube/result.go
View file @
de5a6a93
...
@@ -16,7 +16,7 @@ limitations under the License.
...
@@ -16,7 +16,7 @@ limitations under the License.
package
kube
// import "k8s.io/helm/pkg/kube"
package
kube
// import "k8s.io/helm/pkg/kube"
import
"k8s.io/
kubernetes/pkg/kubectl
/genericclioptions/resource"
import
"k8s.io/
cli-runtime/pkg
/genericclioptions/resource"
// Result provides convenience methods for comparing collections of Infos.
// Result provides convenience methods for comparing collections of Infos.
type
Result
[]
*
resource
.
Info
type
Result
[]
*
resource
.
Info
...
...
pkg/kube/result_test.go
View file @
de5a6a93
...
@@ -21,7 +21,7 @@ import (
...
@@ -21,7 +21,7 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/
kubernetes/pkg/kubectl
/genericclioptions/resource"
"k8s.io/
cli-runtime/pkg
/genericclioptions/resource"
)
)
func
TestResult
(
t
*
testing
.
T
)
{
func
TestResult
(
t
*
testing
.
T
)
{
...
...
pkg/releasetesting/environment.go
View file @
de5a6a93
...
@@ -22,7 +22,7 @@ import (
...
@@ -22,7 +22,7 @@ import (
"log"
"log"
"time"
"time"
"k8s.io/
kubernetes/pkg/apis/core
"
"k8s.io/
api/core/v1
"
"k8s.io/helm/pkg/proto/hapi/release"
"k8s.io/helm/pkg/proto/hapi/release"
"k8s.io/helm/pkg/proto/hapi/services"
"k8s.io/helm/pkg/proto/hapi/services"
...
@@ -49,7 +49,7 @@ func (env *Environment) createTestPod(test *test) error {
...
@@ -49,7 +49,7 @@ func (env *Environment) createTestPod(test *test) error {
return
nil
return
nil
}
}
func
(
env
*
Environment
)
getTestPodStatus
(
test
*
test
)
(
core
.
PodPhase
,
error
)
{
func
(
env
*
Environment
)
getTestPodStatus
(
test
*
test
)
(
v1
.
PodPhase
,
error
)
{
b
:=
bytes
.
NewBufferString
(
test
.
manifest
)
b
:=
bytes
.
NewBufferString
(
test
.
manifest
)
status
,
err
:=
env
.
KubeClient
.
WaitAndGetCompletedPodPhase
(
env
.
Namespace
,
b
,
time
.
Duration
(
env
.
Timeout
)
*
time
.
Second
)
status
,
err
:=
env
.
KubeClient
.
WaitAndGetCompletedPodPhase
(
env
.
Namespace
,
b
,
time
.
Duration
(
env
.
Timeout
)
*
time
.
Second
)
if
err
!=
nil
{
if
err
!=
nil
{
...
...
pkg/releasetesting/test_suite.go
View file @
de5a6a93
...
@@ -22,7 +22,7 @@ import (
...
@@ -22,7 +22,7 @@ import (
"github.com/ghodss/yaml"
"github.com/ghodss/yaml"
"github.com/golang/protobuf/ptypes/timestamp"
"github.com/golang/protobuf/ptypes/timestamp"
"k8s.io/
kubernetes/pkg/apis/core
"
"k8s.io/
api/core/v1
"
"k8s.io/helm/pkg/hooks"
"k8s.io/helm/pkg/hooks"
"k8s.io/helm/pkg/proto/hapi/release"
"k8s.io/helm/pkg/proto/hapi/release"
...
@@ -90,7 +90,7 @@ func (ts *TestSuite) Run(env *Environment) error {
...
@@ -90,7 +90,7 @@ func (ts *TestSuite) Run(env *Environment) error {
}
}
resourceCleanExit
:=
true
resourceCleanExit
:=
true
status
:=
core
.
PodUnknown
status
:=
v1
.
PodUnknown
if
resourceCreated
{
if
resourceCreated
{
status
,
err
=
env
.
getTestPodStatus
(
test
)
status
,
err
=
env
.
getTestPodStatus
(
test
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -119,15 +119,15 @@ func (ts *TestSuite) Run(env *Environment) error {
...
@@ -119,15 +119,15 @@ func (ts *TestSuite) Run(env *Environment) error {
return
nil
return
nil
}
}
func
(
t
*
test
)
assignTestResult
(
podStatus
core
.
PodPhase
)
error
{
func
(
t
*
test
)
assignTestResult
(
podStatus
v1
.
PodPhase
)
error
{
switch
podStatus
{
switch
podStatus
{
case
core
.
PodSucceeded
:
case
v1
.
PodSucceeded
:
if
t
.
expectedSuccess
{
if
t
.
expectedSuccess
{
t
.
result
.
Status
=
release
.
TestRun_SUCCESS
t
.
result
.
Status
=
release
.
TestRun_SUCCESS
}
else
{
}
else
{
t
.
result
.
Status
=
release
.
TestRun_FAILURE
t
.
result
.
Status
=
release
.
TestRun_FAILURE
}
}
case
core
.
PodFailed
:
case
v1
.
PodFailed
:
if
!
t
.
expectedSuccess
{
if
!
t
.
expectedSuccess
{
t
.
result
.
Status
=
release
.
TestRun_SUCCESS
t
.
result
.
Status
=
release
.
TestRun_SUCCESS
}
else
{
}
else
{
...
...
pkg/releasetesting/test_suite_test.go
View file @
de5a6a93
...
@@ -26,7 +26,7 @@ import (
...
@@ -26,7 +26,7 @@ import (
"golang.org/x/net/context"
"golang.org/x/net/context"
grpc
"google.golang.org/grpc"
grpc
"google.golang.org/grpc"
"google.golang.org/grpc/metadata"
"google.golang.org/grpc/metadata"
"k8s.io/
kubernetes/pkg/apis/core
"
"k8s.io/
api/core/v1
"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/proto/hapi/chart"
"k8s.io/helm/pkg/proto/hapi/chart"
...
@@ -324,8 +324,8 @@ func newPodSucceededKubeClient() *podSucceededKubeClient {
...
@@ -324,8 +324,8 @@ func newPodSucceededKubeClient() *podSucceededKubeClient {
}
}
}
}
func
(
p
*
podSucceededKubeClient
)
WaitAndGetCompletedPodPhase
(
ns
string
,
r
io
.
Reader
,
timeout
time
.
Duration
)
(
core
.
PodPhase
,
error
)
{
func
(
p
*
podSucceededKubeClient
)
WaitAndGetCompletedPodPhase
(
ns
string
,
r
io
.
Reader
,
timeout
time
.
Duration
)
(
v1
.
PodPhase
,
error
)
{
return
core
.
PodSucceeded
,
nil
return
v1
.
PodSucceeded
,
nil
}
}
type
podFailedKubeClient
struct
{
type
podFailedKubeClient
struct
{
...
@@ -338,6 +338,6 @@ func newPodFailedKubeClient() *podFailedKubeClient {
...
@@ -338,6 +338,6 @@ func newPodFailedKubeClient() *podFailedKubeClient {
}
}
}
}
func
(
p
*
podFailedKubeClient
)
WaitAndGetCompletedPodPhase
(
ns
string
,
r
io
.
Reader
,
timeout
time
.
Duration
)
(
core
.
PodPhase
,
error
)
{
func
(
p
*
podFailedKubeClient
)
WaitAndGetCompletedPodPhase
(
ns
string
,
r
io
.
Reader
,
timeout
time
.
Duration
)
(
v1
.
PodPhase
,
error
)
{
return
core
.
PodFailed
,
nil
return
v1
.
PodFailed
,
nil
}
}
pkg/storage/driver/cfgmaps.go
View file @
de5a6a93
...
@@ -22,12 +22,12 @@ import (
...
@@ -22,12 +22,12 @@ import (
"strings"
"strings"
"time"
"time"
"k8s.io/api/core/v1"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
kblabels
"k8s.io/apimachinery/pkg/labels"
kblabels
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/kubernetes/pkg/apis/core"
corev1
"k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
rspb
"k8s.io/helm/pkg/proto/hapi/release"
rspb
"k8s.io/helm/pkg/proto/hapi/release"
storageerrors
"k8s.io/helm/pkg/storage/errors"
storageerrors
"k8s.io/helm/pkg/storage/errors"
...
@@ -41,13 +41,13 @@ const ConfigMapsDriverName = "ConfigMap"
...
@@ -41,13 +41,13 @@ const ConfigMapsDriverName = "ConfigMap"
// ConfigMaps is a wrapper around an implementation of a kubernetes
// ConfigMaps is a wrapper around an implementation of a kubernetes
// ConfigMapsInterface.
// ConfigMapsInterface.
type
ConfigMaps
struct
{
type
ConfigMaps
struct
{
impl
internalversion
.
ConfigMapInterface
impl
corev1
.
ConfigMapInterface
Log
func
(
string
,
...
interface
{})
Log
func
(
string
,
...
interface
{})
}
}
// NewConfigMaps initializes a new ConfigMaps wrapping an implementation of
// NewConfigMaps initializes a new ConfigMaps wrapping an implementation of
// the kubernetes ConfigMapsInterface.
// the kubernetes ConfigMapsInterface.
func
NewConfigMaps
(
impl
internalversion
.
ConfigMapInterface
)
*
ConfigMaps
{
func
NewConfigMaps
(
impl
corev1
.
ConfigMapInterface
)
*
ConfigMaps
{
return
&
ConfigMaps
{
return
&
ConfigMaps
{
impl
:
impl
,
impl
:
impl
,
Log
:
func
(
_
string
,
_
...
interface
{})
{},
Log
:
func
(
_
string
,
_
...
interface
{})
{},
...
@@ -229,7 +229,7 @@ func (cfgmaps *ConfigMaps) Delete(key string) (rls *rspb.Release, err error) {
...
@@ -229,7 +229,7 @@ func (cfgmaps *ConfigMaps) Delete(key string) (rls *rspb.Release, err error) {
// "OWNER" - owner of the configmap, currently "TILLER".
// "OWNER" - owner of the configmap, currently "TILLER".
// "NAME" - name of the release.
// "NAME" - name of the release.
//
//
func
newConfigMapsObject
(
key
string
,
rls
*
rspb
.
Release
,
lbs
labels
)
(
*
core
.
ConfigMap
,
error
)
{
func
newConfigMapsObject
(
key
string
,
rls
*
rspb
.
Release
,
lbs
labels
)
(
*
v1
.
ConfigMap
,
error
)
{
const
owner
=
"TILLER"
const
owner
=
"TILLER"
// encode the release
// encode the release
...
@@ -249,7 +249,7 @@ func newConfigMapsObject(key string, rls *rspb.Release, lbs labels) (*core.Confi
...
@@ -249,7 +249,7 @@ func newConfigMapsObject(key string, rls *rspb.Release, lbs labels) (*core.Confi
lbs
.
set
(
"VERSION"
,
strconv
.
Itoa
(
int
(
rls
.
Version
)))
lbs
.
set
(
"VERSION"
,
strconv
.
Itoa
(
int
(
rls
.
Version
)))
// create and return configmap object
// create and return configmap object
return
&
core
.
ConfigMap
{
return
&
v1
.
ConfigMap
{
ObjectMeta
:
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
key
,
Name
:
key
,
Labels
:
lbs
.
toMap
(),
Labels
:
lbs
.
toMap
(),
...
...
pkg/storage/driver/cfgmaps_test.go
View file @
de5a6a93
...
@@ -19,7 +19,7 @@ import (
...
@@ -19,7 +19,7 @@ import (
"testing"
"testing"
"github.com/gogo/protobuf/proto"
"github.com/gogo/protobuf/proto"
"k8s.io/
kubernetes/pkg/apis/core
"
"k8s.io/
api/core/v1
"
rspb
"k8s.io/helm/pkg/proto/hapi/release"
rspb
"k8s.io/helm/pkg/proto/hapi/release"
)
)
...
@@ -69,7 +69,7 @@ func TestUNcompressedConfigMapGet(t *testing.T) {
...
@@ -69,7 +69,7 @@ func TestUNcompressedConfigMapGet(t *testing.T) {
}
}
cfgmap
.
Data
[
"release"
]
=
base64
.
StdEncoding
.
EncodeToString
(
b
)
cfgmap
.
Data
[
"release"
]
=
base64
.
StdEncoding
.
EncodeToString
(
b
)
var
mock
MockConfigMapsInterface
var
mock
MockConfigMapsInterface
mock
.
objects
=
map
[
string
]
*
core
.
ConfigMap
{
key
:
cfgmap
}
mock
.
objects
=
map
[
string
]
*
v1
.
ConfigMap
{
key
:
cfgmap
}
cfgmaps
:=
NewConfigMaps
(
&
mock
)
cfgmaps
:=
NewConfigMaps
(
&
mock
)
// get release with key
// get release with key
...
...
pkg/storage/driver/mock_test.go
View file @
de5a6a93
...
@@ -20,10 +20,11 @@ import (
...
@@ -20,10 +20,11 @@ import (
"fmt"
"fmt"
"testing"
"testing"
"k8s.io/api/core/v1"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/
kubernetes/pkg/apis/core
"
"k8s.io/
apimachinery/pkg/runtime/schema
"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion
"
corev1
"k8s.io/client-go/kubernetes/typed/core/v1
"
rspb
"k8s.io/helm/pkg/proto/hapi/release"
rspb
"k8s.io/helm/pkg/proto/hapi/release"
)
)
...
@@ -76,14 +77,14 @@ func newTestFixtureCfgMaps(t *testing.T, releases ...*rspb.Release) *ConfigMaps
...
@@ -76,14 +77,14 @@ func newTestFixtureCfgMaps(t *testing.T, releases ...*rspb.Release) *ConfigMaps
// MockConfigMapsInterface mocks a kubernetes ConfigMapsInterface
// MockConfigMapsInterface mocks a kubernetes ConfigMapsInterface
type
MockConfigMapsInterface
struct
{
type
MockConfigMapsInterface
struct
{
internalversion
.
ConfigMapInterface
corev1
.
ConfigMapInterface
objects
map
[
string
]
*
core
.
ConfigMap
objects
map
[
string
]
*
v1
.
ConfigMap
}
}
// Init initializes the MockConfigMapsInterface with the set of releases.
// Init initializes the MockConfigMapsInterface with the set of releases.
func
(
mock
*
MockConfigMapsInterface
)
Init
(
t
*
testing
.
T
,
releases
...*
rspb
.
Release
)
{
func
(
mock
*
MockConfigMapsInterface
)
Init
(
t
*
testing
.
T
,
releases
...*
rspb
.
Release
)
{
mock
.
objects
=
map
[
string
]
*
core
.
ConfigMap
{}
mock
.
objects
=
map
[
string
]
*
v1
.
ConfigMap
{}
for
_
,
rls
:=
range
releases
{
for
_
,
rls
:=
range
releases
{
objkey
:=
testKey
(
rls
.
Name
,
rls
.
Version
)
objkey
:=
testKey
(
rls
.
Name
,
rls
.
Version
)
...
@@ -97,17 +98,17 @@ func (mock *MockConfigMapsInterface) Init(t *testing.T, releases ...*rspb.Releas
...
@@ -97,17 +98,17 @@ func (mock *MockConfigMapsInterface) Init(t *testing.T, releases ...*rspb.Releas
}
}
// Get returns the ConfigMap by name.
// Get returns the ConfigMap by name.
func
(
mock
*
MockConfigMapsInterface
)
Get
(
name
string
,
options
metav1
.
GetOptions
)
(
*
core
.
ConfigMap
,
error
)
{
func
(
mock
*
MockConfigMapsInterface
)
Get
(
name
string
,
options
metav1
.
GetOptions
)
(
*
v1
.
ConfigMap
,
error
)
{
object
,
ok
:=
mock
.
objects
[
name
]
object
,
ok
:=
mock
.
objects
[
name
]
if
!
ok
{
if
!
ok
{
return
nil
,
apierrors
.
NewNotFound
(
core
.
Resource
(
"tests"
)
,
name
)
return
nil
,
apierrors
.
NewNotFound
(
schema
.
GroupResource
{
Resource
:
"tests"
}
,
name
)
}
}
return
object
,
nil
return
object
,
nil
}
}
// List returns the a of ConfigMaps.
// List returns the a of ConfigMaps.
func
(
mock
*
MockConfigMapsInterface
)
List
(
opts
metav1
.
ListOptions
)
(
*
core
.
ConfigMapList
,
error
)
{
func
(
mock
*
MockConfigMapsInterface
)
List
(
opts
metav1
.
ListOptions
)
(
*
v1
.
ConfigMapList
,
error
)
{
var
list
core
.
ConfigMapList
var
list
v1
.
ConfigMapList
for
_
,
cfgmap
:=
range
mock
.
objects
{
for
_
,
cfgmap
:=
range
mock
.
objects
{
list
.
Items
=
append
(
list
.
Items
,
*
cfgmap
)
list
.
Items
=
append
(
list
.
Items
,
*
cfgmap
)
}
}
...
@@ -115,20 +116,20 @@ func (mock *MockConfigMapsInterface) List(opts metav1.ListOptions) (*core.Config
...
@@ -115,20 +116,20 @@ func (mock *MockConfigMapsInterface) List(opts metav1.ListOptions) (*core.Config
}
}
// Create creates a new ConfigMap.
// Create creates a new ConfigMap.
func
(
mock
*
MockConfigMapsInterface
)
Create
(
cfgmap
*
core
.
ConfigMap
)
(
*
core
.
ConfigMap
,
error
)
{
func
(
mock
*
MockConfigMapsInterface
)
Create
(
cfgmap
*
v1
.
ConfigMap
)
(
*
v1
.
ConfigMap
,
error
)
{
name
:=
cfgmap
.
ObjectMeta
.
Name
name
:=
cfgmap
.
ObjectMeta
.
Name
if
object
,
ok
:=
mock
.
objects
[
name
];
ok
{
if
object
,
ok
:=
mock
.
objects
[
name
];
ok
{
return
object
,
apierrors
.
NewAlreadyExists
(
core
.
Resource
(
"tests"
)
,
name
)
return
object
,
apierrors
.
NewAlreadyExists
(
schema
.
GroupResource
{
Resource
:
"tests"
}
,
name
)
}
}
mock
.
objects
[
name
]
=
cfgmap
mock
.
objects
[
name
]
=
cfgmap
return
cfgmap
,
nil
return
cfgmap
,
nil
}
}
// Update updates a ConfigMap.
// Update updates a ConfigMap.
func
(
mock
*
MockConfigMapsInterface
)
Update
(
cfgmap
*
core
.
ConfigMap
)
(
*
core
.
ConfigMap
,
error
)
{
func
(
mock
*
MockConfigMapsInterface
)
Update
(
cfgmap
*
v1
.
ConfigMap
)
(
*
v1
.
ConfigMap
,
error
)
{
name
:=
cfgmap
.
ObjectMeta
.
Name
name
:=
cfgmap
.
ObjectMeta
.
Name
if
_
,
ok
:=
mock
.
objects
[
name
];
!
ok
{
if
_
,
ok
:=
mock
.
objects
[
name
];
!
ok
{
return
nil
,
apierrors
.
NewNotFound
(
core
.
Resource
(
"tests"
),
name
)
return
nil
,
apierrors
.
NewNotFound
(
v1
.
Resource
(
"tests"
),
name
)
}
}
mock
.
objects
[
name
]
=
cfgmap
mock
.
objects
[
name
]
=
cfgmap
return
cfgmap
,
nil
return
cfgmap
,
nil
...
@@ -137,7 +138,7 @@ func (mock *MockConfigMapsInterface) Update(cfgmap *core.ConfigMap) (*core.Confi
...
@@ -137,7 +138,7 @@ func (mock *MockConfigMapsInterface) Update(cfgmap *core.ConfigMap) (*core.Confi
// Delete deletes a ConfigMap by name.
// Delete deletes a ConfigMap by name.
func
(
mock
*
MockConfigMapsInterface
)
Delete
(
name
string
,
opts
*
metav1
.
DeleteOptions
)
error
{
func
(
mock
*
MockConfigMapsInterface
)
Delete
(
name
string
,
opts
*
metav1
.
DeleteOptions
)
error
{
if
_
,
ok
:=
mock
.
objects
[
name
];
!
ok
{
if
_
,
ok
:=
mock
.
objects
[
name
];
!
ok
{
return
apierrors
.
NewNotFound
(
core
.
Resource
(
"tests"
),
name
)
return
apierrors
.
NewNotFound
(
v1
.
Resource
(
"tests"
),
name
)
}
}
delete
(
mock
.
objects
,
name
)
delete
(
mock
.
objects
,
name
)
return
nil
return
nil
...
@@ -154,14 +155,14 @@ func newTestFixtureSecrets(t *testing.T, releases ...*rspb.Release) *Secrets {
...
@@ -154,14 +155,14 @@ func newTestFixtureSecrets(t *testing.T, releases ...*rspb.Release) *Secrets {
// MockSecretsInterface mocks a kubernetes SecretsInterface
// MockSecretsInterface mocks a kubernetes SecretsInterface
type
MockSecretsInterface
struct
{
type
MockSecretsInterface
struct
{
internalversion
.
SecretInterface
corev1
.
SecretInterface
objects
map
[
string
]
*
core
.
Secret
objects
map
[
string
]
*
v1
.
Secret
}
}
// Init initializes the MockSecretsInterface with the set of releases.
// Init initializes the MockSecretsInterface with the set of releases.
func
(
mock
*
MockSecretsInterface
)
Init
(
t
*
testing
.
T
,
releases
...*
rspb
.
Release
)
{
func
(
mock
*
MockSecretsInterface
)
Init
(
t
*
testing
.
T
,
releases
...*
rspb
.
Release
)
{
mock
.
objects
=
map
[
string
]
*
core
.
Secret
{}
mock
.
objects
=
map
[
string
]
*
v1
.
Secret
{}
for
_
,
rls
:=
range
releases
{
for
_
,
rls
:=
range
releases
{
objkey
:=
testKey
(
rls
.
Name
,
rls
.
Version
)
objkey
:=
testKey
(
rls
.
Name
,
rls
.
Version
)
...
@@ -175,17 +176,17 @@ func (mock *MockSecretsInterface) Init(t *testing.T, releases ...*rspb.Release)
...
@@ -175,17 +176,17 @@ func (mock *MockSecretsInterface) Init(t *testing.T, releases ...*rspb.Release)
}
}
// Get returns the Secret by name.
// Get returns the Secret by name.
func
(
mock
*
MockSecretsInterface
)
Get
(
name
string
,
options
metav1
.
GetOptions
)
(
*
core
.
Secret
,
error
)
{
func
(
mock
*
MockSecretsInterface
)
Get
(
name
string
,
options
metav1
.
GetOptions
)
(
*
v1
.
Secret
,
error
)
{
object
,
ok
:=
mock
.
objects
[
name
]
object
,
ok
:=
mock
.
objects
[
name
]
if
!
ok
{
if
!
ok
{
return
nil
,
apierrors
.
NewNotFound
(
core
.
Resource
(
"tests"
)
,
name
)
return
nil
,
apierrors
.
NewNotFound
(
schema
.
GroupResource
{
Resource
:
"tests"
}
,
name
)
}
}
return
object
,
nil
return
object
,
nil
}
}
// List returns the a of Secret.
// List returns the a of Secret.
func
(
mock
*
MockSecretsInterface
)
List
(
opts
metav1
.
ListOptions
)
(
*
core
.
SecretList
,
error
)
{
func
(
mock
*
MockSecretsInterface
)
List
(
opts
metav1
.
ListOptions
)
(
*
v1
.
SecretList
,
error
)
{
var
list
core
.
SecretList
var
list
v1
.
SecretList
for
_
,
secret
:=
range
mock
.
objects
{
for
_
,
secret
:=
range
mock
.
objects
{
list
.
Items
=
append
(
list
.
Items
,
*
secret
)
list
.
Items
=
append
(
list
.
Items
,
*
secret
)
}
}
...
@@ -193,20 +194,20 @@ func (mock *MockSecretsInterface) List(opts metav1.ListOptions) (*core.SecretLis
...
@@ -193,20 +194,20 @@ func (mock *MockSecretsInterface) List(opts metav1.ListOptions) (*core.SecretLis
}
}
// Create creates a new Secret.
// Create creates a new Secret.
func
(
mock
*
MockSecretsInterface
)
Create
(
secret
*
core
.
Secret
)
(
*
core
.
Secret
,
error
)
{
func
(
mock
*
MockSecretsInterface
)
Create
(
secret
*
v1
.
Secret
)
(
*
v1
.
Secret
,
error
)
{
name
:=
secret
.
ObjectMeta
.
Name
name
:=
secret
.
ObjectMeta
.
Name
if
object
,
ok
:=
mock
.
objects
[
name
];
ok
{
if
object
,
ok
:=
mock
.
objects
[
name
];
ok
{
return
object
,
apierrors
.
NewAlreadyExists
(
core
.
Resource
(
"tests"
)
,
name
)
return
object
,
apierrors
.
NewAlreadyExists
(
schema
.
GroupResource
{
Resource
:
"tests"
}
,
name
)
}
}
mock
.
objects
[
name
]
=
secret
mock
.
objects
[
name
]
=
secret
return
secret
,
nil
return
secret
,
nil
}
}
// Update updates a Secret.
// Update updates a Secret.
func
(
mock
*
MockSecretsInterface
)
Update
(
secret
*
core
.
Secret
)
(
*
core
.
Secret
,
error
)
{
func
(
mock
*
MockSecretsInterface
)
Update
(
secret
*
v1
.
Secret
)
(
*
v1
.
Secret
,
error
)
{
name
:=
secret
.
ObjectMeta
.
Name
name
:=
secret
.
ObjectMeta
.
Name
if
_
,
ok
:=
mock
.
objects
[
name
];
!
ok
{
if
_
,
ok
:=
mock
.
objects
[
name
];
!
ok
{
return
nil
,
apierrors
.
NewNotFound
(
core
.
Resource
(
"tests"
)
,
name
)
return
nil
,
apierrors
.
NewNotFound
(
schema
.
GroupResource
{
Resource
:
"tests"
}
,
name
)
}
}
mock
.
objects
[
name
]
=
secret
mock
.
objects
[
name
]
=
secret
return
secret
,
nil
return
secret
,
nil
...
@@ -215,7 +216,7 @@ func (mock *MockSecretsInterface) Update(secret *core.Secret) (*core.Secret, err
...
@@ -215,7 +216,7 @@ func (mock *MockSecretsInterface) Update(secret *core.Secret) (*core.Secret, err
// Delete deletes a Secret by name.
// Delete deletes a Secret by name.
func
(
mock
*
MockSecretsInterface
)
Delete
(
name
string
,
opts
*
metav1
.
DeleteOptions
)
error
{
func
(
mock
*
MockSecretsInterface
)
Delete
(
name
string
,
opts
*
metav1
.
DeleteOptions
)
error
{
if
_
,
ok
:=
mock
.
objects
[
name
];
!
ok
{
if
_
,
ok
:=
mock
.
objects
[
name
];
!
ok
{
return
apierrors
.
NewNotFound
(
core
.
Resource
(
"tests"
)
,
name
)
return
apierrors
.
NewNotFound
(
schema
.
GroupResource
{
Resource
:
"tests"
}
,
name
)
}
}
delete
(
mock
.
objects
,
name
)
delete
(
mock
.
objects
,
name
)
return
nil
return
nil
...
...
pkg/storage/driver/secrets.go
View file @
de5a6a93
...
@@ -22,12 +22,12 @@ import (
...
@@ -22,12 +22,12 @@ import (
"strings"
"strings"
"time"
"time"
"k8s.io/api/core/v1"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
kblabels
"k8s.io/apimachinery/pkg/labels"
kblabels
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/kubernetes/pkg/apis/core"
corev1
"k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
rspb
"k8s.io/helm/pkg/proto/hapi/release"
rspb
"k8s.io/helm/pkg/proto/hapi/release"
storageerrors
"k8s.io/helm/pkg/storage/errors"
storageerrors
"k8s.io/helm/pkg/storage/errors"
...
@@ -41,13 +41,13 @@ const SecretsDriverName = "Secret"
...
@@ -41,13 +41,13 @@ const SecretsDriverName = "Secret"
// Secrets is a wrapper around an implementation of a kubernetes
// Secrets is a wrapper around an implementation of a kubernetes
// SecretsInterface.
// SecretsInterface.
type
Secrets
struct
{
type
Secrets
struct
{
impl
internalversion
.
SecretInterface
impl
corev1
.
SecretInterface
Log
func
(
string
,
...
interface
{})
Log
func
(
string
,
...
interface
{})
}
}
// NewSecrets initializes a new Secrets wrapping an implmenetation of
// NewSecrets initializes a new Secrets wrapping an implmenetation of
// the kubernetes SecretsInterface.
// the kubernetes SecretsInterface.
func
NewSecrets
(
impl
internalversion
.
SecretInterface
)
*
Secrets
{
func
NewSecrets
(
impl
corev1
.
SecretInterface
)
*
Secrets
{
return
&
Secrets
{
return
&
Secrets
{
impl
:
impl
,
impl
:
impl
,
Log
:
func
(
_
string
,
_
...
interface
{})
{},
Log
:
func
(
_
string
,
_
...
interface
{})
{},
...
@@ -229,7 +229,7 @@ func (secrets *Secrets) Delete(key string) (rls *rspb.Release, err error) {
...
@@ -229,7 +229,7 @@ func (secrets *Secrets) Delete(key string) (rls *rspb.Release, err error) {
// "OWNER" - owner of the secret, currently "TILLER".
// "OWNER" - owner of the secret, currently "TILLER".
// "NAME" - name of the release.
// "NAME" - name of the release.
//
//
func
newSecretsObject
(
key
string
,
rls
*
rspb
.
Release
,
lbs
labels
)
(
*
core
.
Secret
,
error
)
{
func
newSecretsObject
(
key
string
,
rls
*
rspb
.
Release
,
lbs
labels
)
(
*
v1
.
Secret
,
error
)
{
const
owner
=
"TILLER"
const
owner
=
"TILLER"
// encode the release
// encode the release
...
@@ -249,7 +249,7 @@ func newSecretsObject(key string, rls *rspb.Release, lbs labels) (*core.Secret,
...
@@ -249,7 +249,7 @@ func newSecretsObject(key string, rls *rspb.Release, lbs labels) (*core.Secret,
lbs
.
set
(
"VERSION"
,
strconv
.
Itoa
(
int
(
rls
.
Version
)))
lbs
.
set
(
"VERSION"
,
strconv
.
Itoa
(
int
(
rls
.
Version
)))
// create and return secret object
// create and return secret object
return
&
core
.
Secret
{
return
&
v1
.
Secret
{
ObjectMeta
:
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
key
,
Name
:
key
,
Labels
:
lbs
.
toMap
(),
Labels
:
lbs
.
toMap
(),
...
...
pkg/storage/driver/secrets_test.go
View file @
de5a6a93
...
@@ -19,7 +19,7 @@ import (
...
@@ -19,7 +19,7 @@ import (
"testing"
"testing"
"github.com/gogo/protobuf/proto"
"github.com/gogo/protobuf/proto"
"k8s.io/
kubernetes/pkg/apis/core
"
"k8s.io/
api/core/v1
"
rspb
"k8s.io/helm/pkg/proto/hapi/release"
rspb
"k8s.io/helm/pkg/proto/hapi/release"
)
)
...
@@ -69,7 +69,7 @@ func TestUNcompressedSecretGet(t *testing.T) {
...
@@ -69,7 +69,7 @@ func TestUNcompressedSecretGet(t *testing.T) {
}
}
secret
.
Data
[
"release"
]
=
[]
byte
(
base64
.
StdEncoding
.
EncodeToString
(
b
))
secret
.
Data
[
"release"
]
=
[]
byte
(
base64
.
StdEncoding
.
EncodeToString
(
b
))
var
mock
MockSecretsInterface
var
mock
MockSecretsInterface
mock
.
objects
=
map
[
string
]
*
core
.
Secret
{
key
:
secret
}
mock
.
objects
=
map
[
string
]
*
v1
.
Secret
{
key
:
secret
}
secrets
:=
NewSecrets
(
&
mock
)
secrets
:=
NewSecrets
(
&
mock
)
// get release with key
// get release with key
...
...
pkg/tiller/environment/environment.go
View file @
de5a6a93
...
@@ -26,8 +26,8 @@ import (
...
@@ -26,8 +26,8 @@ import (
"io"
"io"
"time"
"time"
"k8s.io/
kubernetes/pkg/apis/core
"
"k8s.io/
api/core/v1
"
"k8s.io/
kubernetes/pkg/kubectl
/genericclioptions/resource"
"k8s.io/
cli-runtime/pkg
/genericclioptions/resource"
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/engine"
"k8s.io/helm/pkg/engine"
...
@@ -140,7 +140,7 @@ type KubeClient interface {
...
@@ -140,7 +140,7 @@ type KubeClient interface {
// WaitAndGetCompletedPodPhase waits up to a timeout until a pod enters a completed phase
// WaitAndGetCompletedPodPhase waits up to a timeout until a pod enters a completed phase
// and returns said phase (PodSucceeded or PodFailed qualify).
// and returns said phase (PodSucceeded or PodFailed qualify).
WaitAndGetCompletedPodPhase
(
namespace
string
,
reader
io
.
Reader
,
timeout
time
.
Duration
)
(
core
.
PodPhase
,
error
)
WaitAndGetCompletedPodPhase
(
namespace
string
,
reader
io
.
Reader
,
timeout
time
.
Duration
)
(
v1
.
PodPhase
,
error
)
}
}
// PrintingKubeClient implements KubeClient, but simply prints the reader to
// PrintingKubeClient implements KubeClient, but simply prints the reader to
...
@@ -192,9 +192,9 @@ func (p *PrintingKubeClient) BuildUnstructured(ns string, reader io.Reader) (kub
...
@@ -192,9 +192,9 @@ func (p *PrintingKubeClient) BuildUnstructured(ns string, reader io.Reader) (kub
}
}
// WaitAndGetCompletedPodPhase implements KubeClient WaitAndGetCompletedPodPhase.
// WaitAndGetCompletedPodPhase implements KubeClient WaitAndGetCompletedPodPhase.
func
(
p
*
PrintingKubeClient
)
WaitAndGetCompletedPodPhase
(
namespace
string
,
reader
io
.
Reader
,
timeout
time
.
Duration
)
(
core
.
PodPhase
,
error
)
{
func
(
p
*
PrintingKubeClient
)
WaitAndGetCompletedPodPhase
(
namespace
string
,
reader
io
.
Reader
,
timeout
time
.
Duration
)
(
v1
.
PodPhase
,
error
)
{
_
,
err
:=
io
.
Copy
(
p
.
Out
,
reader
)
_
,
err
:=
io
.
Copy
(
p
.
Out
,
reader
)
return
core
.
PodUnknown
,
err
return
v1
.
PodUnknown
,
err
}
}
// Environment provides the context for executing a client request.
// Environment provides the context for executing a client request.
...
...
pkg/tiller/environment/environment_test.go
View file @
de5a6a93
...
@@ -22,8 +22,8 @@ import (
...
@@ -22,8 +22,8 @@ import (
"testing"
"testing"
"time"
"time"
"k8s.io/
kubernetes/pkg/apis/core
"
"k8s.io/
api/core/v1
"
"k8s.io/
kubernetes/pkg/kubectl
/genericclioptions/resource"
"k8s.io/
cli-runtime/pkg
/genericclioptions/resource"
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/kube"
"k8s.io/helm/pkg/kube"
...
@@ -61,11 +61,11 @@ func (k *mockKubeClient) Build(ns string, reader io.Reader) (kube.Result, error)
...
@@ -61,11 +61,11 @@ func (k *mockKubeClient) Build(ns string, reader io.Reader) (kube.Result, error)
func
(
k
*
mockKubeClient
)
BuildUnstructured
(
ns
string
,
reader
io
.
Reader
)
(
kube
.
Result
,
error
)
{
func
(
k
*
mockKubeClient
)
BuildUnstructured
(
ns
string
,
reader
io
.
Reader
)
(
kube
.
Result
,
error
)
{
return
[]
*
resource
.
Info
{},
nil
return
[]
*
resource
.
Info
{},
nil
}
}
func
(
k
*
mockKubeClient
)
WaitAndGetCompletedPodPhase
(
namespace
string
,
reader
io
.
Reader
,
timeout
time
.
Duration
)
(
core
.
PodPhase
,
error
)
{
func
(
k
*
mockKubeClient
)
WaitAndGetCompletedPodPhase
(
namespace
string
,
reader
io
.
Reader
,
timeout
time
.
Duration
)
(
v1
.
PodPhase
,
error
)
{
return
core
.
PodUnknown
,
nil
return
v1
.
PodUnknown
,
nil
}
}
func
(
k
*
mockKubeClient
)
WaitAndGetCompletedPodStatus
(
namespace
string
,
reader
io
.
Reader
,
timeout
time
.
Duration
)
(
core
.
PodPhase
,
error
)
{
func
(
k
*
mockKubeClient
)
WaitAndGetCompletedPodStatus
(
namespace
string
,
reader
io
.
Reader
,
timeout
time
.
Duration
)
(
v1
.
PodPhase
,
error
)
{
return
""
,
nil
return
""
,
nil
}
}
...
...
pkg/tiller/release_modules.go
View file @
de5a6a93
...
@@ -23,7 +23,7 @@ import (
...
@@ -23,7 +23,7 @@ import (
"log"
"log"
"strings"
"strings"
"k8s.io/
kubernetes/pkg/client/clientset_generated/internalclientset
"
"k8s.io/
client-go/kubernetes
"
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/kube"
"k8s.io/helm/pkg/kube"
...
@@ -46,7 +46,7 @@ type ReleaseModule interface {
...
@@ -46,7 +46,7 @@ type ReleaseModule interface {
// LocalReleaseModule is a local implementation of ReleaseModule
// LocalReleaseModule is a local implementation of ReleaseModule
type
LocalReleaseModule
struct
{
type
LocalReleaseModule
struct
{
clientset
internalclientset
.
Interface
clientset
kubernetes
.
Interface
}
}
// Create creates a release via kubeclient from provided environment
// Create creates a release via kubeclient from provided environment
...
...
pkg/tiller/release_server.go
View file @
de5a6a93
...
@@ -28,7 +28,7 @@ import (
...
@@ -28,7 +28,7 @@ import (
"gopkg.in/yaml.v2"
"gopkg.in/yaml.v2"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/discovery"
"k8s.io/client-go/discovery"
"k8s.io/
kubernetes/pkg/client/clientset_generated/internalclientset
"
"k8s.io/
client-go/kubernetes
"
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/hooks"
"k8s.io/helm/pkg/hooks"
...
@@ -83,12 +83,12 @@ var ValidName = regexp.MustCompile("^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])+
...
@@ -83,12 +83,12 @@ var ValidName = regexp.MustCompile("^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])+
type
ReleaseServer
struct
{
type
ReleaseServer
struct
{
ReleaseModule
ReleaseModule
env
*
environment
.
Environment
env
*
environment
.
Environment
clientset
internalclientset
.
Interface
clientset
kubernetes
.
Interface
Log
func
(
string
,
...
interface
{})
Log
func
(
string
,
...
interface
{})
}
}
// NewReleaseServer creates a new release server.
// NewReleaseServer creates a new release server.
func
NewReleaseServer
(
env
*
environment
.
Environment
,
clientset
internalclientset
.
Interface
,
useRemote
bool
)
*
ReleaseServer
{
func
NewReleaseServer
(
env
*
environment
.
Environment
,
clientset
kubernetes
.
Interface
,
useRemote
bool
)
*
ReleaseServer
{
var
releaseModule
ReleaseModule
var
releaseModule
ReleaseModule
if
useRemote
{
if
useRemote
{
releaseModule
=
&
RemoteReleaseModule
{}
releaseModule
=
&
RemoteReleaseModule
{}
...
...
pkg/tiller/release_server_test.go
View file @
de5a6a93
...
@@ -31,9 +31,9 @@ import (
...
@@ -31,9 +31,9 @@ import (
"github.com/technosophos/moniker"
"github.com/technosophos/moniker"
"golang.org/x/net/context"
"golang.org/x/net/context"
"google.golang.org/grpc/metadata"
"google.golang.org/grpc/metadata"
"k8s.io/
kubernetes/pkg/apis/core
"
"k8s.io/
api/core/v1
"
"k8s.io/
kubernetes/pkg/client/clientset_generated/internalclientset/fak
e"
"k8s.io/
cli-runtime/pkg/genericclioptions/resourc
e"
"k8s.io/
kubernetes/pkg/kubectl/genericclioptions/resourc
e"
"k8s.io/
client-go/kubernetes/fak
e"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/helm"
"k8s.io/helm/pkg/hooks"
"k8s.io/helm/pkg/hooks"
...
@@ -605,8 +605,8 @@ func (kc *mockHooksKubeClient) Build(ns string, reader io.Reader) (kube.Result,
...
@@ -605,8 +605,8 @@ func (kc *mockHooksKubeClient) Build(ns string, reader io.Reader) (kube.Result,
func
(
kc
*
mockHooksKubeClient
)
BuildUnstructured
(
ns
string
,
reader
io
.
Reader
)
(
kube
.
Result
,
error
)
{
func
(
kc
*
mockHooksKubeClient
)
BuildUnstructured
(
ns
string
,
reader
io
.
Reader
)
(
kube
.
Result
,
error
)
{
return
[]
*
resource
.
Info
{},
nil
return
[]
*
resource
.
Info
{},
nil
}
}
func
(
kc
*
mockHooksKubeClient
)
WaitAndGetCompletedPodPhase
(
namespace
string
,
reader
io
.
Reader
,
timeout
time
.
Duration
)
(
core
.
PodPhase
,
error
)
{
func
(
kc
*
mockHooksKubeClient
)
WaitAndGetCompletedPodPhase
(
namespace
string
,
reader
io
.
Reader
,
timeout
time
.
Duration
)
(
v1
.
PodPhase
,
error
)
{
return
core
.
PodUnknown
,
nil
return
v1
.
PodUnknown
,
nil
}
}
func
deletePolicyStub
(
kubeClient
*
mockHooksKubeClient
)
*
ReleaseServer
{
func
deletePolicyStub
(
kubeClient
*
mockHooksKubeClient
)
*
ReleaseServer
{
...
...
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