Skip to content

Commit

Permalink
Merge pull request kubernetes#113 from YaoZengzeng/grpc-pod-remove
Browse files Browse the repository at this point in the history
grpc for pod remove
  • Loading branch information
harry committed Aug 29, 2016
2 parents 38d599d + b66e507 commit e6f81cb
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 20 deletions.
1 change: 1 addition & 0 deletions hack/hypernetes/hyper.sh
Expand Up @@ -36,6 +36,7 @@ Initrd=/var/lib/hyper/hyper-initrd.img
DisableIptables=true
StorageDriver=devicemapper
Hypervisor=libvirt
gRPCHost=127.0.0.1:22318
EOF

# Start libvirtd and hyperd services
Expand Down
7 changes: 6 additions & 1 deletion pkg/kubelet/hyper/hyper.go
Expand Up @@ -101,6 +101,11 @@ func New(runtimeHelper kubecontainer.RuntimeHelper,
containerLogsDir string,
os kubecontainer.OSInterface,
) (kubecontainer.Runtime, error) {
hyperClient, err := NewHyperClient()
if err != nil {
return nil, err
}

hyper := &runtime{
dockerKeyring: credentialprovider.NewDockerKeyring(),
containerLogsDir: containerLogsDir,
Expand All @@ -110,7 +115,7 @@ func New(runtimeHelper kubecontainer.RuntimeHelper,
os: os,
recorder: recorder,
networkPlugin: networkPlugin,
hyperClient: NewHyperClient(),
hyperClient: hyperClient,
kubeClient: kubeClient,
disableHyperInternalService: disableHyperInternalService,
}
Expand Down
33 changes: 16 additions & 17 deletions pkg/kubelet/hyper/hyperclient.go
Expand Up @@ -35,12 +35,16 @@ import (
"github.com/docker/docker/pkg/parsers"
"github.com/docker/docker/pkg/term"
"github.com/golang/glog"
"golang.org/x/net/context"
"google.golang.org/grpc"
grpctypes "k8s.io/kubernetes/pkg/kubelet/hyper/types"
)

const (
HYPER_PROTO = "unix"
HYPER_ADDR = "/var/run/hyper.sock"
HYPER_SCHEME = "http"
HYPER_SERVER = "127.0.0.1:22318"
DEFAULT_IMAGE_TAG = "latest"

KEY_COMMAND = "command"
Expand Down Expand Up @@ -89,6 +93,7 @@ type HyperClient struct {
proto string
addr string
scheme string
client grpctypes.PublicAPIClient
}

type AttachToContainerOptions struct {
Expand Down Expand Up @@ -136,18 +141,23 @@ type podRemoveResult struct {
ID string `json:"ID"`
}

func NewHyperClient() *HyperClient {
func NewHyperClient() (*HyperClient, error) {
var (
scheme = HYPER_SCHEME
proto = HYPER_PROTO
addr = HYPER_ADDR
)
conn, err := grpc.Dial(HYPER_SERVER, grpc.WithInsecure())
if err != nil {
return nil, err
}

return &HyperClient{
proto: proto,
addr: addr,
scheme: scheme,
}
client: grpctypes.NewPublicAPIClient(conn),
}, nil
}

var (
Expand Down Expand Up @@ -483,23 +493,12 @@ func (client *HyperClient) RemoveImage(imageID string) error {
}

func (client *HyperClient) RemovePod(podID string) error {
v := url.Values{}
v.Set(KEY_POD_ID, podID)
body, _, err := client.call("DELETE", "/pod?"+v.Encode(), "", nil)
if err != nil && !strings.Contains(err.Error(), "Can not find") {
return err
request := grpctypes.PodRemoveRequest{
PodID: podID,
}

var result podRemoveResult
err = json.Unmarshal(body, &result)
_, err := client.client.PodRemove(context.Background(), &request)
if err != nil {
glog.Warningf("Can not unmarshal pod delete result: %s, assume removed", string(body))
return nil
}
// !(errCode == types.E_OK || errCode == types.E_VM_SHUTDOWN)
if result.Code != 0 && result.Code != 2 {
glog.Errorf("Delete pod %s failed: %s", podID, result.Cause)
return errors.New(result.Cause)
return err
}

return nil
Expand Down
7 changes: 5 additions & 2 deletions pkg/proxy/haproxy/proxier.go
Expand Up @@ -93,8 +93,11 @@ var _ proxy.ProxyProvider = &Proxier{}

// NewProxier returns a new Proxier given an pod-buildin-haproxy Interface instance.
func NewProxier(syncPeriod time.Duration, kubeClient *kubeclient.Client, disableHyperInternalService bool) (*Proxier, error) {
client := hyper.NewHyperClient()
_, err := client.Version()
client, err := hyper.NewHyperClient()
if err != nil {
return nil, err
}
_, err = client.Version()
if err != nil {
glog.Errorf("Can not get hyper version: %v", err)
return nil, err
Expand Down

0 comments on commit e6f81cb

Please sign in to comment.