diff options
author | HuabingZhao <zhao.huabing@zte.com.cn> | 2017-09-04 15:00:54 +0800 |
---|---|---|
committer | HuabingZhao <zhao.huabing@zte.com.cn> | 2017-09-04 15:06:21 +0800 |
commit | 43dac0bc4302fed79eaeb661723ca584a9c0496a (patch) | |
tree | a78f60300d73f0a69ed12e946d3fe4580455d8ba /kube2msb/src/kube_work.go | |
parent | a7837a0ac51704003c6aacba2dacb8e64f681622 (diff) |
restructure the source directory
Issue-ID: OOM-61
Change-Id: Ib6f633d517ad197bfdbca59b374cdad2f1ed897e
Signed-off-by: HuabingZhao <zhao.huabing@zte.com.cn>
Diffstat (limited to 'kube2msb/src/kube_work.go')
-rw-r--r-- | kube2msb/src/kube_work.go | 195 |
1 files changed, 0 insertions, 195 deletions
diff --git a/kube2msb/src/kube_work.go b/kube2msb/src/kube_work.go deleted file mode 100644 index 4e99cbd..0000000 --- a/kube2msb/src/kube_work.go +++ /dev/null @@ -1,195 +0,0 @@ -/* -Copyright 2017 ZTE, Inc. and others. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -package main - -import ( - "log" - "sync" - - kapi "k8s.io/kubernetes/pkg/api" -) - -type KubeBookKeeper interface { - AddService(*kapi.Service) - RemoveService(*kapi.Service) - UpdateService(*kapi.Service) - AddPod(*kapi.Pod) - RemovePod(*kapi.Pod) - UpdatePod(*kapi.Pod) -} - -type ClientBookKeeper struct { - sync.Mutex - KubeBookKeeper - services map[string]*kapi.Service - pods map[string]*kapi.Pod - msbQueue chan<- MSBWork -} - -func newClientBookKeeper() *ClientBookKeeper { - return &ClientBookKeeper{ - services: make(map[string]*kapi.Service), - pods: make(map[string]*kapi.Pod), - } -} - -func (client *ClientBookKeeper) AddService(svc *kapi.Service) { - client.Lock() - defer client.Unlock() - if _, ok := svc.ObjectMeta.Annotations[serviceKey]; !ok { - log.Println("Not the target, skip this ADD notification for service:", svc.Name) - return - } - - if _, ok := client.services[svc.Name]; ok { - log.Printf("service:%s already exist. skip this ADD notification.", svc.Name) - return - } - - if kapi.IsServiceIPSet(svc) { - if svc.Spec.Type == kapi.ServiceTypeClusterIP || svc.Spec.Type == kapi.ServiceTypeNodePort { - log.Printf("Adding %s service:%s", svc.Spec.Type, svc.Name) - client.msbQueue <- MSBWork{ - Action: MSBWorkAddService, - ServiceInfo: svc.ObjectMeta.Annotations[serviceKey], - IPAddress: svc.Spec.ClusterIP, - } - } else if svc.Spec.Type == kapi.ServiceTypeLoadBalancer { - log.Println("Adding LoadBalancerIP service:", svc.Name) - client.msbQueue <- MSBWork{ - Action: MSBWorkAddService, - ServiceInfo: svc.ObjectMeta.Annotations[serviceKey], - IPAddress: svc.Spec.LoadBalancerIP, - } - } else { - log.Printf("Service Type:%s for Service:%s is not supported", svc.Spec.Type, svc.Name) - return - } - client.services[svc.Name] = svc - log.Println("Queued Service to be added: ", svc.Name) - } else { - // if ClusterIP is not set, do not create a DNS records - log.Printf("Skipping dns record for headless service: %s\n", svc.Name) - } -} - -func (client *ClientBookKeeper) RemoveService(svc *kapi.Service) { - client.Lock() - defer client.Unlock() - if _, ok := svc.ObjectMeta.Annotations[serviceKey]; !ok { - log.Println("Not the target, skip this Remove notification for service:", svc.Name) - return - } - - if _, ok := client.services[svc.Name]; !ok { - log.Printf("Service:%s not exist. skip this REMOVE notification.", svc.Name) - return - } - - if svc.Spec.Type == kapi.ServiceTypeClusterIP || svc.Spec.Type == kapi.ServiceTypeNodePort { - log.Printf("Removing %s service:%s", svc.Spec.Type, svc.Name) - //Perform All DNS Removes - client.msbQueue <- MSBWork{ - Action: MSBWorkRemoveService, - ServiceInfo: svc.ObjectMeta.Annotations[serviceKey], - IPAddress: svc.Spec.ClusterIP, - } - } else if svc.Spec.Type == kapi.ServiceTypeLoadBalancer { - log.Println("Removing LoadBalancerIP service:", svc.Name) - client.msbQueue <- MSBWork{ - Action: MSBWorkRemoveService, - ServiceInfo: svc.ObjectMeta.Annotations[serviceKey], - IPAddress: svc.Spec.LoadBalancerIP, - } - } else { - log.Printf("Service Type:%s for Service:%s is not supported", svc.Spec.Type, svc.Name) - return - } - delete(client.services, svc.Name) - log.Println("Queued Service to be removed: ", svc.Name) -} - -func (client *ClientBookKeeper) UpdateService(svc *kapi.Service) { - if _, ok := svc.ObjectMeta.Annotations[serviceKey]; !ok { - log.Println("Not the target, skip this Update notification for service:", svc.Name) - return - } - - client.RemoveService(svc) - client.AddService(svc) -} - -func (client *ClientBookKeeper) AddPod(pod *kapi.Pod) { - client.Lock() - defer client.Unlock() - if _, ok := pod.Annotations[serviceKey]; !ok { - log.Println("Not the target, skip this ADD notification for pod:", pod.Name) - return - } - - if _, ok := client.pods[pod.Name]; ok { - log.Printf("Pod:%s already exist. skip this ADD notification.", pod.Name) - return - } - - //newly added Pod - if pod.Name == "" || pod.Status.PodIP == "" { - log.Printf("Pod:%s has neither name nor pod ip. skip this ADD notification.", pod.Name) - addMap[pod.Name] = pod - return - } - - //Perform All DNS Adds - client.msbQueue <- MSBWork{ - Action: MSBWorkAddPod, - ServiceInfo: pod.Annotations[serviceKey], - IPAddress: pod.Status.PodIP, - } - client.pods[pod.Name] = pod - log.Println("Queued Pod to be added: ", pod.Name) -} - -func (client *ClientBookKeeper) RemovePod(pod *kapi.Pod) { - client.Lock() - defer client.Unlock() - if _, ok := pod.Annotations[serviceKey]; !ok { - log.Println("Not the target, skip this Remove notification for pod:", pod.Name) - return - } - - if _, ok := client.pods[pod.Name]; !ok { - log.Printf("Pod:%s not exist. skip this REMOVE notification.", pod.Name) - return - } - //Perform All DNS Removes - client.msbQueue <- MSBWork{ - Action: MSBWorkRemovePod, - ServiceInfo: pod.Annotations[serviceKey], - IPAddress: pod.Status.PodIP, - } - delete(client.pods, pod.Name) - log.Println("Queued Pod to be removed: ", pod.Name) -} - -func (client *ClientBookKeeper) UpdatePod(pod *kapi.Pod) { - if _, ok := pod.Annotations[serviceKey]; !ok { - log.Println("Not the target, skip this Update notification for pod:", pod.Name) - return - } - - client.RemovePod(pod) - client.AddPod(pod) -} |