Skip to content

Commit

Permalink
Merge pull request #11 from containerum/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
MargoTuleninova committed Aug 1, 2018
2 parents fd54f25 + dd8ebc8 commit 6023155
Show file tree
Hide file tree
Showing 59 changed files with 795 additions and 204 deletions.
24 changes: 12 additions & 12 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ required = ["github.com/containerum/kube-client"]

[[constraint]]
name = "github.com/containerum/kube-client"
version = "^0.23.2"
version = "^0.23.20"

[[constraint]]
name = "k8s.io/kubernetes"
Expand Down
2 changes: 1 addition & 1 deletion cmd/kube-api/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func initServer(c *cli.Context) error {

// Wait for interrupt signal to gracefully shutdown the server with
// a timeout of 5 seconds.
quit := make(chan os.Signal)
quit := make(chan os.Signal, 1)
signal.Notify(quit, os.Interrupt) // subscribe on interrupt event
<-quit // wait for event
logrus.Infoln("shutting down server...")
Expand Down
18 changes: 15 additions & 3 deletions pkg/kubernetes/secret.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,21 @@ import (
api_meta "k8s.io/apimachinery/pkg/apis/meta/v1"
)

//GetSecretList returns secrets list
func (k *Kube) GetSecretList(nsName string) (*api_core.SecretList, error) {
secrets, err := k.CoreV1().Secrets(nsName).List(api_meta.ListOptions{})
//GetTLSSecretList returns TLS secrets list
func (k *Kube) GetTLSSecretList(nsName string) (*api_core.SecretList, error) {
secrets, err := k.CoreV1().Secrets(nsName).List(api_meta.ListOptions{FieldSelector: "type=Opaque"})
if err != nil {
log.WithFields(log.Fields{
"Namespace": nsName,
}).Error(err)
return nil, err
}
return secrets, nil
}

//GetDockerSecretList returns Docker secrets list
func (k *Kube) GetDockerSecretList(nsName string) (*api_core.SecretList, error) {
secrets, err := k.CoreV1().Secrets(nsName).List(api_meta.ListOptions{FieldSelector: "type=kubernetes.io/dockerconfigjson"})
if err != nil {
log.WithFields(log.Fields{
"Namespace": nsName,
Expand Down
7 changes: 3 additions & 4 deletions pkg/model/configmap.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func ParseKubeConfigMapList(cmi interface{}, parseforuser bool) (*kube_types.Con
}
newCms = append(newCms, *newCm)
}
return &kube_types.ConfigMapsList{newCms}, nil
return &kube_types.ConfigMapsList{ConfigMaps: newCms}, nil
}

// ParseKubeConfigMap parses kubernetes v1.ConfigMap to more convenient ConfigMap struct.
Expand All @@ -45,7 +45,7 @@ func ParseKubeConfigMap(cmi interface{}, parseforuser bool) (*kube_types.ConfigM

newData := make(map[string]string)
for k, v := range cm.Data {
newData[k] = string(v)
newData[k] = v
}

owner := cm.GetObjectMeta().GetLabels()[ownerLabel]
Expand Down Expand Up @@ -77,9 +77,8 @@ func (cm *ConfigMapKubeAPI) ToKube(nsName string, labels map[string]string) (*ap
dec, err := base64.StdEncoding.DecodeString(v)
if err != nil {
return nil, []error{fmt.Errorf("unable to decode base64 string '%v': %v", v, err)}
} else {
cm.Data[k] = string(dec)
}
cm.Data[k] = string(dec)
}

newCm := api_core.ConfigMap{
Expand Down
49 changes: 32 additions & 17 deletions pkg/model/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func ParseKubeDeploymentList(deploys interface{}, parseforuser bool) (*kube_type

deployments = append(deployments, *deployment)
}
return &kube_types.DeploymentsList{deployments}, nil
return &kube_types.DeploymentsList{Deployments: deployments}, nil
}

// ParseKubeDeployment parses kubernetes v1.Deployment to more convenient Deployment struct
Expand Down Expand Up @@ -84,14 +84,15 @@ func ParseKubeDeployment(deployment interface{}, parseforuser bool) (*kube_types
UpdatedReplicas: int(deploy.Status.UpdatedReplicas),
UnavailableReplicas: int(deploy.Status.UnavailableReplicas),
},
CreatedAt: deploy.ObjectMeta.CreationTimestamp.UTC().Format(time.RFC3339),
SolutionID: deploy.GetObjectMeta().GetLabels()[solutionLabel],
Containers: containers,
TotalCPU: uint(totalcpu.ScaledValue(api_resource.Milli)),
TotalMemory: uint(totalmem.Value() / 1024 / 1024),
Owner: deploy.GetObjectMeta().GetLabels()[ownerLabel],
Version: version,
Active: true,
CreatedAt: deploy.ObjectMeta.CreationTimestamp.UTC().Format(time.RFC3339),
SolutionID: deploy.GetObjectMeta().GetLabels()[solutionLabel],
Containers: containers,
ImagePullSecrets: getImagePullSecrets(deploy.Spec.Template.Spec.ImagePullSecrets),
TotalCPU: uint(totalcpu.ScaledValue(api_resource.Milli)),
TotalMemory: uint(totalmem.Value() / 1024 / 1024),
Owner: deploy.GetObjectMeta().GetLabels()[ownerLabel],
Version: version,
Active: true,
}

if parseforuser {
Expand All @@ -102,7 +103,7 @@ func ParseKubeDeployment(deployment interface{}, parseforuser bool) (*kube_types
}

func getVolumeMode(volumes []api_core.Volume) map[string]int32 {
volumemap := make(map[string]int32, 0)
volumemap := make(map[string]int32)
for _, v := range volumes {
if v.ConfigMap != nil {
volumemap[v.Name] = *v.ConfigMap.DefaultMode
Expand All @@ -112,7 +113,7 @@ func getVolumeMode(volumes []api_core.Volume) map[string]int32 {
}

func getVolumeStorageName(volumes []api_core.Volume) map[string]string {
volumemap := make(map[string]string, 0)
volumemap := make(map[string]string)
for _, v := range volumes {
if v.PersistentVolumeClaim != nil {
volumemap[v.Name] = v.PersistentVolumeClaim.ClaimName
Expand All @@ -121,6 +122,14 @@ func getVolumeStorageName(volumes []api_core.Volume) map[string]string {
return volumemap
}

func getImagePullSecrets(secrets []api_core.LocalObjectReference) []string {
secretsList := []string{}
for _, v := range secrets {
secretsList = append(secretsList, v.Name)
}
return secretsList
}

//ToKube creates kubernetes v1.Deployment from Deployment struct and namespace labels
func (deploy *DeploymentKubeAPI) ToKube(nsName string, labels map[string]string) (*api_apps.Deployment, []error) {
err := deploy.Validate()
Expand Down Expand Up @@ -159,6 +168,11 @@ func (deploy *DeploymentKubeAPI) ToKube(nsName string, labels map[string]string)
return nil, []error{verr}
}

var imagePullSecrets []api_core.LocalObjectReference
for _, im := range deploy.ImagePullSecrets {
imagePullSecrets = append(imagePullSecrets, api_core.LocalObjectReference{im})
}

newDeploy := api_apps.Deployment{
TypeMeta: api_meta.TypeMeta{
Kind: deploymentKind,
Expand All @@ -183,7 +197,8 @@ func (deploy *DeploymentKubeAPI) ToKube(nsName string, labels map[string]string)
NodeSelector: map[string]string{
"role": "slave",
},
Volumes: volumes,
ImagePullSecrets: imagePullSecrets,
Volumes: volumes,
},
ObjectMeta: api_meta.ObjectMeta{
Labels: labels,
Expand All @@ -196,9 +211,9 @@ func (deploy *DeploymentKubeAPI) ToKube(nsName string, labels map[string]string)
}

func makeContainers(containers []kube_types.Container) ([]api_core.Container, []error) {
var containersAfter []api_core.Container
containersAfter := make([]api_core.Container, len(containers))

for _, c := range containers {
for i, c := range containers {
errs := validateContainer(c, c.Limits.CPU, c.Limits.Memory)
if errs != nil {
return nil, errs
Expand Down Expand Up @@ -226,7 +241,7 @@ func makeContainers(containers []kube_types.Container) ([]api_core.Container, []

container.Resources = *rq

containersAfter = append(containersAfter, container)
containersAfter[i] = container
}
return containersAfter, nil
}
Expand Down Expand Up @@ -297,8 +312,8 @@ func makeContainerResourceQuota(cpu, memory uint) *api_core.ResourceRequirements

func makeTemplateVolumes(containers []kube_types.Container) ([]api_core.Volume, error) {
templateVolumes := make([]api_core.Volume, 0)
existingVolume := make(map[string]bool, 0)
existingMountPath := make(map[string]bool, 0)
existingVolume := make(map[string]bool)
existingMountPath := make(map[string]bool)

for _, c := range containers {
for _, v := range c.VolumeMounts {
Expand Down
2 changes: 1 addition & 1 deletion pkg/model/endpoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ func ParseKubeEndpointList(endpointi interface{}) (*EndpointsList, error) {
}
newEndpoints = append(newEndpoints, *newEndpoint)
}
return &EndpointsList{newEndpoints}, nil
return &EndpointsList{Endpoints: newEndpoints}, nil
}

// ParseKubeEndpoint parses kubernetes v1.Endpoint to more convenient Endpoint struct
Expand Down
4 changes: 2 additions & 2 deletions pkg/model/ingress.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func ParseKubeIngressList(ingressi interface{}, parseforuser bool) (*kube_types.
}
newIngresses = append(newIngresses, *newIngress)
}
return &kube_types.IngressesList{newIngresses}, nil
return &kube_types.IngressesList{Ingress: newIngresses}, nil
}

// ParseKubeIngress parses kubernetes v1beta1.Ingress to more convenient Ingress struct
Expand Down Expand Up @@ -85,7 +85,7 @@ func parseRules(rules []api_extensions.IngressRule, secrets map[string]string) [
}

func parseTLS(tlss []api_extensions.IngressTLS) map[string]string {
secrets := make(map[string]string, 0)
secrets := make(map[string]string)

for _, v := range tlss {
for _, h := range v.Hosts {
Expand Down
6 changes: 3 additions & 3 deletions pkg/model/namespace.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func ParseKubeResourceQuotaList(quotas interface{}, parseforuser bool) (*kube_ty
}
namespaces = append(namespaces, *ns)
}
return &kube_types.NamespacesList{namespaces}, nil
return &kube_types.NamespacesList{Namespaces: namespaces}, nil
}

// ParseKubeResourceQuota parses kubernetes v1.ResourceQuota to more convenient Namespace struct.
Expand Down Expand Up @@ -136,11 +136,11 @@ func MakeResourceQuota(ns string, labels map[string]string, resources kube_types

func ParseNamespaceListForUser(headers UserHeaderDataMap, nsl []kube_types.Namespace) *kube_types.NamespacesList {
nso := make([]kube_types.Namespace, 0)
ret := kube_types.NamespacesList{nso}
ret := kube_types.NamespacesList{Namespaces: nso}
for _, ns := range nsl {
ns = *ParseForUser(&ns, headers)
if ns.Label != "" {
ret.Namespaces = append(ret.Namespaces, kube_types.Namespace(ns))
ret.Namespaces = append(ret.Namespaces, ns)
}
}
return &ret
Expand Down
9 changes: 5 additions & 4 deletions pkg/model/pod.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func ParseKubePodList(pods interface{}, parseforuser bool) *kube_types.PodsList
for _, po := range podList.Items {
ret = append(ret, ParseKubePod(&po, parseforuser))
}
return &kube_types.PodsList{ret}
return &kube_types.PodsList{Pods: ret}
}

// ParseKubePod parses kubernetes v1.PodList to more convenient Pod struct.
Expand All @@ -39,9 +39,10 @@ func ParseKubePod(pod interface{}, parseforuser bool) kube_types.Pod {
Status: &model.PodStatus{
Phase: string(obj.Status.Phase),
},
TotalCPU: uint(cpu.ScaledValue(api_resource.Milli)),
TotalMemory: uint(mem.Value() / 1024 / 1024),
Owner: owner,
ImagePullSecrets: getImagePullSecrets(obj.Spec.ImagePullSecrets),
TotalCPU: uint(cpu.ScaledValue(api_resource.Milli)),
TotalMemory: uint(mem.Value() / 1024 / 1024),
Owner: owner,
}

if parseforuser {
Expand Down
Loading

0 comments on commit 6023155

Please sign in to comment.