-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathdeployment.go
58 lines (48 loc) · 2.1 KB
/
deployment.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// Copyright © 2021 - 2022 Dell Inc. or its subsidiaries. All Rights Reserved.
//
// 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 deployment
import (
"context"
"time"
//"fmt"
"github.com/dell/csm-operator/pkg/logger"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
appsv1 "k8s.io/client-go/applyconfigurations/apps/v1"
"k8s.io/client-go/kubernetes"
//"reflect"
)
// SleepTime - minimum time to sleep before checking the state of controller pod
var SleepTime = 10 * time.Second
// SyncDeployment - Syncs a Deployment for controller
func SyncDeployment(ctx context.Context, deployment appsv1.DeploymentApplyConfiguration, k8sClient kubernetes.Interface, csmName string) error {
log := logger.GetLogger(ctx)
log.Infow("Sync Deployment:", "name", *deployment.ObjectMetaApplyConfiguration.Name)
deployments := k8sClient.AppsV1().Deployments(*deployment.ObjectMetaApplyConfiguration.Namespace)
found, err := deployments.Get(ctx, *deployment.ObjectMetaApplyConfiguration.Name, metav1.GetOptions{})
if err != nil {
log.Errorw("get SyncDeployment error", "Error", err.Error())
}
opts := metav1.ApplyOptions{FieldManager: "application/apply-patch"}
if found == nil || found.Name == "" {
log.Infow("No existing Deployment", "Name:", deployment.Name)
} else {
log.Infow("found deployment", "image", found.Spec.Template.Spec.Containers[0].Image)
}
deployment.Spec.Template.Labels["csm"] = csmName
set, err := deployments.Apply(ctx, &deployment, opts)
if err != nil {
log.Errorw("Apply Deployment error", "set", err.Error())
return err
}
log.Infow("deployment apply done", "name", set.Name)
return nil
}