Skip to content

Commit

Permalink
add faked cloud-config support
Browse files Browse the repository at this point in the history
Signed-off-by: yaoyao.xyy <yaoyao.xyy@alibaba-inc.com>
  • Loading branch information
aoxn committed Jun 26, 2018
1 parent 48170bd commit 1e52e1e
Show file tree
Hide file tree
Showing 10 changed files with 413 additions and 279 deletions.
15 changes: 10 additions & 5 deletions cloud-controller-manager/alicloud/alicloud.go
Expand Up @@ -65,13 +65,15 @@ type CloudConfig struct {
VpcID string `json:"vpcid"`
Region string `json:"region"`
ZoneID string `json:"zoneid"`

VswitchID string `json:"vswitchid"`

AccessKeyID string `json:"accessKeyID"`
AccessKeySecret string `json:"accessKeySecret"`
}
}

var cfg CloudConfig

func init() {
cloudprovider.RegisterCloudProvider(ProviderName,
func(config io.Reader) (cloudprovider.Interface, error) {
Expand All @@ -80,7 +82,6 @@ func init() {
keysecret = ""
)
if config != nil {
var cfg CloudConfig
if err := json.NewDecoder(config).Decode(&cfg); err != nil {
return nil, err
}
Expand Down Expand Up @@ -153,7 +154,7 @@ func (c *Cloud) GetLoadBalancer(clusterName string, service *v1.Service) (status
}

return &v1.LoadBalancerStatus{
Ingress: []v1.LoadBalancerIngress{{IP: lb.Address, Hostname: domain(service, lb)}}}, true, nil
Ingress: []v1.LoadBalancerIngress{{IP: lb.Address}}}, true, nil
}

// EnsureLoadBalancer creates a new load balancer 'name', or updates the existing one. Returns the status of the balancer
Expand Down Expand Up @@ -210,7 +211,6 @@ func (c *Cloud) EnsureLoadBalancer(clusterName string, service *v1.Service, node
Ingress: []v1.LoadBalancerIngress{
{
IP: lb.Address,
Hostname: domain(service, lb),
},
},
}, nil
Expand Down Expand Up @@ -241,7 +241,6 @@ func (c *Cloud) UpdateLoadBalancer(clusterName string, service *v1.Service, node
func (c *Cloud) EnsureLoadBalancerDeleted(clusterName string, service *v1.Service) error {
glog.V(2).Infof("Alicloud.EnsureLoadBalancerDeleted(%v, %v, %v, %v, %v, %v)",
clusterName, service.Namespace, service.Name, c.region, service.Spec.LoadBalancerIP, service.Spec.Ports)
glog.V(4).Infof("SERVICE: %+v\n",service)
return c.climgr.LoadBalancers().EnsureLoadBalanceDeleted(service)
}

Expand Down Expand Up @@ -387,6 +386,12 @@ func (c *Cloud) DeleteRoute(clusterName string, route *cloudprovider.Route) erro

// GetZone returns the Zone containing the current failure zone and locality region that the program is running in
func (c *Cloud) GetZone() (cloudprovider.Zone, error) {
if cfg.Global.ZoneID != "" && cfg.Global.Region != "" {
return cloudprovider.Zone{
Region: cfg.Global.Region,
FailureDomain: cfg.Global.ZoneID,
}, nil
}
host, err := c.climgr.MetaData().InstanceID()
if err != nil {
return cloudprovider.Zone{}, errors.New(fmt.Sprintf("Alicloud.GetZone(): error execute c.meta.InstanceID(). message=[%s]", err.Error()))
Expand Down
90 changes: 26 additions & 64 deletions cloud-controller-manager/alicloud/alicloud_test.go
Expand Up @@ -31,6 +31,7 @@ import (
"errors"
"github.com/denverdino/aliyungo/ecs"
"github.com/denverdino/aliyungo/common"
"k8s.io/kubernetes/pkg/cloudprovider"
)

var keyid string
Expand All @@ -52,54 +53,6 @@ var (
nodeName = "iZuf694l8lw6xvdx6gh7tkZ"
)

func TestLoadBalancerDomain(t *testing.T) {
domain := loadBalancerDomain("", "idd",string(DEFAULT_REGION))
t.Log(domain)
if domain != "idd.cn-hangzhou.alicontainer.com" {
t.Fatal("TestLoadBalancerDomain fail")
}
domain = loadBalancerDomain("user", "idd",string(DEFAULT_REGION))
t.Log(domain)
if domain != "user.idd.cn-hangzhou.alicontainer.com" {
t.Fatal("TestLoadBalancerDomain with user fail")
}
}

func TestFromLoadBalancerDomain(t *testing.T) {
service := &v1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: "my-service",
UID: types.UID(serviceUID),
},
Spec: v1.ServiceSpec{
Type: v1.ServiceTypeLoadBalancer,
SessionAffinity: v1.ServiceAffinityNone,
},
Status: v1.ServiceStatus{
LoadBalancer: v1.LoadBalancerStatus{
Ingress: []v1.LoadBalancerIngress{
{
IP: "1.1.1.1",
// indicate user defined loadbalancer
Hostname: loadBalancerDomain("my-service","lbid",string(DEFAULT_REGION)),
},
},
},
},
}

lbid := fromLoadBalancerStatus(service)
if lbid != "lbid" {
t.Fatal("must equal to lbid")
}
t.Log(lbid)
service.Status.LoadBalancer.Ingress[0].Hostname = loadBalancerDomain("","lbid",string(DEFAULT_REGION))
t.Log(lbid)
if lbid != "lbid" {
t.Fatal("short must equal to lbid")
}
}

func TestBase64(t *testing.T) {
data := "YWJjCg=="
key, err := b64.StdEncoding.DecodeString(data)
Expand Down Expand Up @@ -188,7 +141,10 @@ func TestEnsureLoadBalancerBasic(t *testing.T) {
if args.LoadBalancerName != "" {
base[0].LoadBalancerName = args.LoadBalancerName
return base, nil
} else {
}
if len(args.Tags)>0{
base[0].LoadBalancerName = cloudprovider.GetLoadBalancerName(service)
}else {
return nil, errors.New("loadbalancerid or loadbanancername must be specified.\n")
}
return base, nil
Expand Down Expand Up @@ -371,7 +327,10 @@ func TestEnsureLoadBalancerHTTPS(t *testing.T) {
if args.LoadBalancerName != "" {
base[0].LoadBalancerName = args.LoadBalancerName
return base, nil
} else {
}
if len(args.Tags)>0{
base[0].LoadBalancerName = cloudprovider.GetLoadBalancerName(service)
}else {
return nil, errors.New("loadbalancerid or loadbanancername must be specified.\n")
}
return base, nil
Expand Down Expand Up @@ -552,7 +511,10 @@ func TestEnsureLoadBalancerWithPortChange(t *testing.T) {
if args.LoadBalancerName != "" {
base[0].LoadBalancerName = args.LoadBalancerName
return base, nil
} else {
}
if len(args.Tags)>0{
base[0].LoadBalancerName = cloudprovider.GetLoadBalancerName(service)
}else {
return nil, errors.New("loadbalancerid or loadbanancername must be specified.\n")
}
return base, nil
Expand Down Expand Up @@ -761,7 +723,10 @@ func TestEnsureLoadbalancerDeleted(t *testing.T) {
if args.LoadBalancerName != "" {
base[0].LoadBalancerName = args.LoadBalancerName
return base, nil
} else {
}
if len(args.Tags)>0{
base[0].LoadBalancerName = cloudprovider.GetLoadBalancerName(service)
}else {
return nil, errors.New("loadbalancerid or loadbanancername must be specified.\n")
}
return base, nil
Expand Down Expand Up @@ -832,6 +797,9 @@ func TestEnsureLoadBalancerDeleteWithUserDefined(t *testing.T) {
ObjectMeta: metav1.ObjectMeta{
Name: "my-service",
UID: types.UID(serviceUID),
Annotations: map[string]string{
//ServiceAnnotationLoadBalancerId: "idbllll",
},
},
Spec: v1.ServiceSpec{
Ports: []v1.ServicePort{
Expand All @@ -845,8 +813,6 @@ func TestEnsureLoadBalancerDeleteWithUserDefined(t *testing.T) {
Ingress: []v1.LoadBalancerIngress{
{
IP: "1.1.1.1",
// indicate user defined loadbalancer
Hostname: loadBalancerDomain("my-service",base[0].LoadBalancerId,string(DEFAULT_REGION)),
},
},
},
Expand All @@ -864,7 +830,10 @@ func TestEnsureLoadBalancerDeleteWithUserDefined(t *testing.T) {
if args.LoadBalancerName != "" {
base[0].LoadBalancerName = args.LoadBalancerName
return base, nil
} else {
}
if len(args.Tags)>0{
base[0].LoadBalancerName = cloudprovider.GetLoadBalancerName(service)
}else {
return nil, errors.New("loadbalancerid or loadbanancername must be specified.\n")
}
return base, nil
Expand All @@ -873,7 +842,7 @@ func TestEnsureLoadBalancerDeleteWithUserDefined(t *testing.T) {
t.Logf("findloadbalancer, [%s]", loadBalancerId)
return loadbalancerAttrib(&base[0]), nil
},
deleteLoadBalancer: func(loadBalancerId string) (err error) {
deleteLoadBalancer: func(loadBalancerId string) (err error) {
base = []slb.LoadBalancerType{}
return nil
},
Expand All @@ -889,15 +858,8 @@ func TestEnsureLoadBalancerDeleteWithUserDefined(t *testing.T) {
t.Errorf("TestEnsureLoadBalancerDeleteWithUserDefined error: %s\n", e.Error())
}
t.Log(PrettyJson(base))
if len(base) != 1 {
t.Fatal("TestEnsureLoadBalancerDeleteWithUserDefined error, expected not to be deleted")
}

base = newBaseLoadbalancer()
service.Status.LoadBalancer.Ingress[0].Hostname = loadBalancerDomain("",base[0].LoadBalancerId,string(DEFAULT_REGION))
e = cloud.EnsureLoadBalancerDeleted(clusterName, service)
if len(base) != 0 {
t.Fatal("TestEnsureLoadBalancerDeleteWithUserDefined error, expected to be deleted")
t.Fatal("TestEnsureLoadBalancerDeleteWithUserDefined error, expected not to be deleted")
}
}

Expand Down

0 comments on commit 1e52e1e

Please sign in to comment.