Skip to content
This repository was archived by the owner on Feb 8, 2021. It is now read-only.

Commit e6f81cb

Browse files
author
harry
authored
Merge pull request #113 from YaoZengzeng/grpc-pod-remove
grpc for pod remove
2 parents 38d599d + b66e507 commit e6f81cb

File tree

4 files changed

+28
-20
lines changed

4 files changed

+28
-20
lines changed

hack/hypernetes/hyper.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ Initrd=/var/lib/hyper/hyper-initrd.img
3636
DisableIptables=true
3737
StorageDriver=devicemapper
3838
Hypervisor=libvirt
39+
gRPCHost=127.0.0.1:22318
3940
EOF
4041

4142
# Start libvirtd and hyperd services

pkg/kubelet/hyper/hyper.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,11 @@ func New(runtimeHelper kubecontainer.RuntimeHelper,
101101
containerLogsDir string,
102102
os kubecontainer.OSInterface,
103103
) (kubecontainer.Runtime, error) {
104+
hyperClient, err := NewHyperClient()
105+
if err != nil {
106+
return nil, err
107+
}
108+
104109
hyper := &runtime{
105110
dockerKeyring: credentialprovider.NewDockerKeyring(),
106111
containerLogsDir: containerLogsDir,
@@ -110,7 +115,7 @@ func New(runtimeHelper kubecontainer.RuntimeHelper,
110115
os: os,
111116
recorder: recorder,
112117
networkPlugin: networkPlugin,
113-
hyperClient: NewHyperClient(),
118+
hyperClient: hyperClient,
114119
kubeClient: kubeClient,
115120
disableHyperInternalService: disableHyperInternalService,
116121
}

pkg/kubelet/hyper/hyperclient.go

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,16 @@ import (
3535
"github.com/docker/docker/pkg/parsers"
3636
"github.com/docker/docker/pkg/term"
3737
"github.com/golang/glog"
38+
"golang.org/x/net/context"
39+
"google.golang.org/grpc"
40+
grpctypes "k8s.io/kubernetes/pkg/kubelet/hyper/types"
3841
)
3942

4043
const (
4144
HYPER_PROTO = "unix"
4245
HYPER_ADDR = "/var/run/hyper.sock"
4346
HYPER_SCHEME = "http"
47+
HYPER_SERVER = "127.0.0.1:22318"
4448
DEFAULT_IMAGE_TAG = "latest"
4549

4650
KEY_COMMAND = "command"
@@ -89,6 +93,7 @@ type HyperClient struct {
8993
proto string
9094
addr string
9195
scheme string
96+
client grpctypes.PublicAPIClient
9297
}
9398

9499
type AttachToContainerOptions struct {
@@ -136,18 +141,23 @@ type podRemoveResult struct {
136141
ID string `json:"ID"`
137142
}
138143

139-
func NewHyperClient() *HyperClient {
144+
func NewHyperClient() (*HyperClient, error) {
140145
var (
141146
scheme = HYPER_SCHEME
142147
proto = HYPER_PROTO
143148
addr = HYPER_ADDR
144149
)
150+
conn, err := grpc.Dial(HYPER_SERVER, grpc.WithInsecure())
151+
if err != nil {
152+
return nil, err
153+
}
145154

146155
return &HyperClient{
147156
proto: proto,
148157
addr: addr,
149158
scheme: scheme,
150-
}
159+
client: grpctypes.NewPublicAPIClient(conn),
160+
}, nil
151161
}
152162

153163
var (
@@ -483,23 +493,12 @@ func (client *HyperClient) RemoveImage(imageID string) error {
483493
}
484494

485495
func (client *HyperClient) RemovePod(podID string) error {
486-
v := url.Values{}
487-
v.Set(KEY_POD_ID, podID)
488-
body, _, err := client.call("DELETE", "/pod?"+v.Encode(), "", nil)
489-
if err != nil && !strings.Contains(err.Error(), "Can not find") {
490-
return err
496+
request := grpctypes.PodRemoveRequest{
497+
PodID: podID,
491498
}
492-
493-
var result podRemoveResult
494-
err = json.Unmarshal(body, &result)
499+
_, err := client.client.PodRemove(context.Background(), &request)
495500
if err != nil {
496-
glog.Warningf("Can not unmarshal pod delete result: %s, assume removed", string(body))
497-
return nil
498-
}
499-
// !(errCode == types.E_OK || errCode == types.E_VM_SHUTDOWN)
500-
if result.Code != 0 && result.Code != 2 {
501-
glog.Errorf("Delete pod %s failed: %s", podID, result.Cause)
502-
return errors.New(result.Cause)
501+
return err
503502
}
504503

505504
return nil

pkg/proxy/haproxy/proxier.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,11 @@ var _ proxy.ProxyProvider = &Proxier{}
9393

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

0 commit comments

Comments
 (0)