Skip to content

Commit

Permalink
Adding missing methods
Browse files Browse the repository at this point in the history
Signed-off-by: Giovanni Liva <giovanni.liva@dynatrace.com>
  • Loading branch information
thisthat authored and odubajDT committed Oct 25, 2022
1 parent 15f98b5 commit d9a817f
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 15 deletions.
30 changes: 16 additions & 14 deletions operator/api/v1alpha1/common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,20 +122,22 @@ type KeptnMeters struct {
}

const (
AppName attribute.Key = attribute.Key("keptn.deployment.app.name")
AppVersion attribute.Key = attribute.Key("keptn.deployment.app.version")
AppNamespace attribute.Key = attribute.Key("keptn.deployment.app.namespace")
AppStatus attribute.Key = attribute.Key("keptn.deployment.app.status")
WorkloadName attribute.Key = attribute.Key("keptn.deployment.workload.name")
WorkloadVersion attribute.Key = attribute.Key("keptn.deployment.workload.version")
WorkloadNamespace attribute.Key = attribute.Key("keptn.deployment.workload.namespace")
WorkloadStatus attribute.Key = attribute.Key("keptn.deployment.workload.status")
TaskStatus attribute.Key = attribute.Key("keptn.deployment.task.status")
TaskName attribute.Key = attribute.Key("keptn.deployment.task.name")
TaskType attribute.Key = attribute.Key("keptn.deployment.task.type")
EvaluationStatus attribute.Key = attribute.Key("keptn.deployment.evaluation.status")
EvaluationName attribute.Key = attribute.Key("keptn.deployment.evaluation.name")
EvaluationType attribute.Key = attribute.Key("keptn.deployment.evaluation.type")
AppName attribute.Key = attribute.Key("keptn.deployment.app.name")
AppVersion attribute.Key = attribute.Key("keptn.deployment.app.version")
AppNamespace attribute.Key = attribute.Key("keptn.deployment.app.namespace")
AppStatus attribute.Key = attribute.Key("keptn.deployment.app.status")
AppPreviousVersion attribute.Key = attribute.Key("keptn.deployment.app.previousversion")
WorkloadName attribute.Key = attribute.Key("keptn.deployment.workload.name")
WorkloadVersion attribute.Key = attribute.Key("keptn.deployment.workload.version")
WorkloadPreviousVersion attribute.Key = attribute.Key("keptn.deployment.workload.previousversion")
WorkloadNamespace attribute.Key = attribute.Key("keptn.deployment.workload.namespace")
WorkloadStatus attribute.Key = attribute.Key("keptn.deployment.workload.status")
TaskStatus attribute.Key = attribute.Key("keptn.deployment.task.status")
TaskName attribute.Key = attribute.Key("keptn.deployment.task.name")
TaskType attribute.Key = attribute.Key("keptn.deployment.task.type")
EvaluationStatus attribute.Key = attribute.Key("keptn.deployment.evaluation.status")
EvaluationName attribute.Key = attribute.Key("keptn.deployment.evaluation.name")
EvaluationType attribute.Key = attribute.Key("keptn.deployment.evaluation.type")
)

func GenerateTaskName(checkType CheckType, taskName string) string {
Expand Down
8 changes: 8 additions & 0 deletions operator/api/v1alpha1/keptnappversion_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,3 +195,11 @@ func (v KeptnAppVersion) GetMetricsAttributes() []attribute.KeyValue {
common.AppStatus.String(string(v.Status.Status)),
}
}

func (v KeptnAppVersion) GetDurationMetricsAttributes() []attribute.KeyValue {
return []attribute.KeyValue{
common.AppName.String(v.Spec.AppName),
common.AppVersion.String(v.Spec.Version),
common.AppPreviousVersion.String(v.Spec.PreviousVersion),
}
}
9 changes: 9 additions & 0 deletions operator/api/v1alpha1/keptnworkloadinstance_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -232,3 +232,12 @@ func (i KeptnWorkloadInstance) GetMetricsAttributes() []attribute.KeyValue {
common.WorkloadStatus.String(string(i.Status.Status)),
}
}

func (i KeptnWorkloadInstance) GetIntervalMetricsAttributes() []attribute.KeyValue {
return []attribute.KeyValue{
common.AppName.String(i.Spec.AppName),
common.WorkloadName.String(i.Spec.WorkloadName),
common.WorkloadVersion.String(i.Spec.Version),
common.WorkloadPreviousVersion.String(i.Spec.PreviousVersion),
}
}
3 changes: 2 additions & 1 deletion operator/controllers/keptnappversion/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,8 @@ func (r *KeptnAppVersionReconciler) GetDeploymentInterval(ctx context.Context) (

if appInstance.Spec.PreviousVersion != "" {
previousAppVersion := &klcv1alpha1.KeptnAppVersion{}
err := r.Get(ctx, types.NamespacedName{Name: fmt.Sprintf("%s-%s", appInstance.Spec.AppName, appInstance.Spec.PreviousVersion), Namespace: appInstance.Namespace}, previousAppVersion)
appName := fmt.Sprintf("%s-%s", appInstance.Spec.AppName, appInstance.Spec.PreviousVersion)
err := r.Get(ctx, types.NamespacedName{Name: appName, Namespace: appInstance.Namespace}, previousAppVersion)
if err != nil {
r.Log.Error(err, "Previous App Version not found")
} else {
Expand Down
48 changes: 48 additions & 0 deletions operator/controllers/keptnworkloadinstance/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -368,3 +368,51 @@ func (r *KeptnWorkloadInstanceReconciler) getAppVersionForWorkloadInstance(ctx c
}
return true, latestVersion, nil
}

func (r *KeptnWorkloadInstanceReconciler) GetDeploymentInterval(ctx context.Context) ([]common.GaugeFloatValue, error) {
workloadInstances := &klcv1alpha1.KeptnWorkloadInstanceList{}
err := r.List(ctx, workloadInstances)
if err != nil {
return nil, fmt.Errorf("could not retrieve workload instances: %w", err)
}

res := []common.GaugeFloatValue{}
for _, workloadInstance := range workloadInstances.Items {
if workloadInstance.Spec.PreviousVersion != "" {
previousAppVersion := &klcv1alpha1.KeptnWorkloadInstance{}
err := r.Get(ctx, types.NamespacedName{Name: fmt.Sprintf("%s-%s", workloadInstance.Spec.WorkloadName, workloadInstance.Spec.PreviousVersion), Namespace: workloadInstance.Namespace}, previousAppVersion)
if err != nil {
r.Log.Error(err, "Previous Workload Version not found")
} else if workloadInstance.IsEndTimeSet() {
previousInterval := workloadInstance.Status.StartTime.Time.Sub(previousAppVersion.Status.EndTime.Time)
res = append(res, common.GaugeFloatValue{
Value: previousInterval.Seconds(),
Attributes: workloadInstance.GetIntervalMetricsAttributes(),
})
}
}
}
return res, nil
}

func (r *KeptnWorkloadInstanceReconciler) GetDeploymentDuration(ctx context.Context) ([]common.GaugeFloatValue, error) {
workloadInstances := &klcv1alpha1.KeptnWorkloadInstanceList{}
err := r.List(ctx, workloadInstances)
if err != nil {
return nil, fmt.Errorf("could not retrieve workload instances: %w", err)
}

res := []common.GaugeFloatValue{}

for _, workloadInstance := range workloadInstances.Items {
if workloadInstance.IsEndTimeSet() {
duration := workloadInstance.Status.EndTime.Time.Sub(workloadInstance.Status.StartTime.Time)
res = append(res, common.GaugeFloatValue{
Value: duration.Seconds(),
Attributes: workloadInstance.GetIntervalMetricsAttributes(),
})
}
}

return res, nil
}

0 comments on commit d9a817f

Please sign in to comment.