Skip to content

Commit

Permalink
merge master
Browse files Browse the repository at this point in the history
  • Loading branch information
anneliawa committed Jul 18, 2023
2 parents fa9644d + b5f1fd8 commit 46fee08
Show file tree
Hide file tree
Showing 15 changed files with 419 additions and 55 deletions.
38 changes: 33 additions & 5 deletions api/deployments/deployment_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ type DeployHandler interface {
GetComponentsForDeploymentName(ctx context.Context, appName, deploymentID string) ([]*deploymentModels.Component, error)
GetComponentsForDeployment(ctx context.Context, appName string, deployment *deploymentModels.DeploymentSummary) ([]*deploymentModels.Component, error)
GetLatestDeploymentForApplicationEnvironment(ctx context.Context, appName, environment string) (*deploymentModels.DeploymentSummary, error)
GetDeploymentsForJob(ctx context.Context, appName, jobName string) ([]*deploymentModels.DeploymentSummary, error)
GetDeploymentsForPipelineJob(context.Context, string, string) ([]*deploymentModels.DeploymentSummary, error)
GetJobComponentDeployments(context.Context, string, string, string) ([]*deploymentModels.DeploymentItem, error)
}

// DeployHandler Instance variables
Expand Down Expand Up @@ -105,8 +106,8 @@ func (deploy *deployHandler) GetDeploymentsForApplicationEnvironment(ctx context
return deployments, err
}

// GetDeploymentsForJob Lists deployments for job name
func (deploy *deployHandler) GetDeploymentsForJob(ctx context.Context, appName, jobName string) ([]*deploymentModels.DeploymentSummary, error) {
// GetDeploymentsForPipelineJob Lists deployments for pipeline job name
func (deploy *deployHandler) GetDeploymentsForPipelineJob(ctx context.Context, appName, jobName string) ([]*deploymentModels.DeploymentSummary, error) {
environments, err := deploy.getEnvironmentNames(ctx, appName)
if err != nil {
return nil, err
Expand All @@ -115,6 +116,33 @@ func (deploy *deployHandler) GetDeploymentsForJob(ctx context.Context, appName,
return deploy.getDeployments(ctx, appName, environments, jobName, false)
}

// GetJobComponentDeployments Lists deployments for job component
func (deploy *deployHandler) GetJobComponentDeployments(ctx context.Context, appName, environment, componentName string) ([]*deploymentModels.DeploymentItem, error) {
ns := operatorUtils.GetEnvironmentNamespace(appName, environment)
radixDeploymentList, err := deploy.accounts.UserAccount.RadixClient.RadixV1().RadixDeployments(ns).List(ctx, metav1.ListOptions{LabelSelector: radixlabels.Merge(
radixlabels.ForApplicationName(appName), radixlabels.ForEnvironmentName(environment)).String()})
if err != nil {
return nil, err
}
rds := sortRdsByActiveFromDesc(radixDeploymentList.Items)

var deploymentItems []*deploymentModels.DeploymentItem
for _, rd := range rds {
for _, jobComponent := range rd.Spec.Jobs {
if jobComponent.Name != componentName {
continue
}
deploymentItem, err := deploymentModels.NewDeploymentItemBuilder().WithRadixDeployment(&rd).Build()
if err != nil {
return nil, err
}
deploymentItems = append(deploymentItems, deploymentItem)
break
}
}
return deploymentItems, nil
}

// GetDeploymentWithName Handler for GetDeploymentWithName
func (deploy *deployHandler) GetDeploymentWithName(ctx context.Context, appName, deploymentName string) (*deploymentModels.Deployment, error) {
// Need to list all deployments to find active to of deployment
Expand Down Expand Up @@ -196,11 +224,11 @@ func (deploy *deployHandler) getDeployments(ctx context.Context, appName string,
var radixDeploymentList []v1.RadixDeployment
namespaces := slice.Map(environments, func(env string) string { return operatorUtils.GetEnvironmentNamespace(appName, env) })
for _, ns := range namespaces {
rdlist, err := deploy.accounts.UserAccount.RadixClient.RadixV1().RadixDeployments(ns).List(ctx, metav1.ListOptions{LabelSelector: rdLabelSelector.String()})
rdList, err := deploy.accounts.UserAccount.RadixClient.RadixV1().RadixDeployments(ns).List(ctx, metav1.ListOptions{LabelSelector: rdLabelSelector.String()})
if err != nil {
return nil, err
}
radixDeploymentList = append(radixDeploymentList, rdlist.Items...)
radixDeploymentList = append(radixDeploymentList, rdList.Items...)
}

appNamespace := operatorUtils.GetAppNamespace(appName)
Expand Down
27 changes: 21 additions & 6 deletions api/deployments/mock/deployment_handler_mock.go

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

4 changes: 4 additions & 0 deletions api/deployments/models/component_deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,10 @@ type ScheduledJobSummary struct {
// required: true
// example: 1
FailedCount int32 `json:"failedCount"`

// Timestamp of the job restart, if applied.
// +optional
Restart string
}

// Node Defines node attributes, where pod should be scheduled
Expand Down
40 changes: 40 additions & 0 deletions api/deployments/models/component_deployment_builder.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package models

import (
"fmt"
radixutils "github.com/equinor/radix-common/utils"
"github.com/equinor/radix-operator/pkg/apis/kube"
v1 "github.com/equinor/radix-operator/pkg/apis/radix/v1"
)

// DeploymentItemBuilder Builds DTOs
type DeploymentItemBuilder interface {
WithRadixDeployment(*v1.RadixDeployment) DeploymentItemBuilder
Build() (*DeploymentItem, error)
}

type deploymentItemBuilder struct {
radixDeployment *v1.RadixDeployment
}

// NewDeploymentItemBuilder Constructor for application DeploymentItemBuilder
func NewDeploymentItemBuilder() DeploymentItemBuilder {
return &deploymentItemBuilder{}
}

func (b *deploymentItemBuilder) WithRadixDeployment(rd *v1.RadixDeployment) DeploymentItemBuilder {
b.radixDeployment = rd
return b
}

func (b *deploymentItemBuilder) Build() (*DeploymentItem, error) {
if b.radixDeployment == nil {
return nil, fmt.Errorf("RadixDeployment is empty")
}
return &DeploymentItem{
Name: b.radixDeployment.GetName(),
ActiveFrom: radixutils.FormatTimestamp(b.radixDeployment.Status.ActiveFrom.Time),
ActiveTo: radixutils.FormatTimestamp(b.radixDeployment.Status.ActiveTo.Time),
GitCommitHash: b.radixDeployment.GetLabels()[kube.RadixCommitLabel],
}, nil
}
28 changes: 28 additions & 0 deletions api/deployments/models/deployment_summary.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,31 @@ type DeploymentSummary struct {
// example: "v1.22.1 v1.22.3"
GitTags string `json:"gitTags,omitempty"`
}

// DeploymentItem describe a deployment short info
// swagger:model DeploymentItem
type DeploymentItem struct {
// Name the unique name of the Radix application deployment
//
// required: true
// example: radix-canary-golang-tzbqi
Name string `json:"name"`

// ActiveFrom Timestamp when the deployment starts (or created)
//
// required: true
// example: 2006-01-02T15:04:05Z
ActiveFrom string `json:"activeFrom"`

// ActiveTo Timestamp when the deployment ends
//
// required: false
// example: 2006-01-02T15:04:05Z
ActiveTo string `json:"activeTo,omitempty"`

// GitCommitHash the hash of the git commit from which radixconfig.yaml was parsed
//
// required: false
// example: 4faca8595c5283a9d0f17a623b9255a0d9866a2e
GitCommitHash string `json:"gitCommitHash,omitempty"`
}
Loading

0 comments on commit 46fee08

Please sign in to comment.