Skip to content

Commit

Permalink
Reduced deployment item object
Browse files Browse the repository at this point in the history
  • Loading branch information
satr committed Jul 14, 2023
1 parent 8d39d7e commit 54eb02b
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 68 deletions.
19 changes: 9 additions & 10 deletions api/deployments/deployment_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ type DeployHandler interface {
GetComponentsForDeployment(ctx context.Context, appName string, deployment *deploymentModels.DeploymentSummary) ([]*deploymentModels.Component, error)
GetLatestDeploymentForApplicationEnvironment(ctx context.Context, appName, environment string) (*deploymentModels.DeploymentSummary, error)
GetDeploymentsForPipelineJob(context.Context, string, string) ([]*deploymentModels.DeploymentSummary, error)
GetDeploymentsForJobComponent(context.Context, string, string, string) ([]*deploymentModels.ComponentDeploymentSummary, error)
GetJobComponentDeployments(context.Context, string, string, string) ([]*deploymentModels.DeploymentItem, error)
}

// DeployHandler Instance variables
Expand Down Expand Up @@ -117,8 +117,8 @@ func (deploy *deployHandler) GetDeploymentsForPipelineJob(ctx context.Context, a
return deploy.getDeployments(ctx, appName, environments, jobName, false)
}

// GetDeploymentsForJobComponent Lists deployments for application job component name
func (deploy *deployHandler) GetDeploymentsForJobComponent(ctx context.Context, appName, environment, componentName string) ([]*deploymentModels.ComponentDeploymentSummary, error) {
// 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()})
Expand All @@ -127,22 +127,21 @@ func (deploy *deployHandler) GetDeploymentsForJobComponent(ctx context.Context,
}
rds := sortRdsByActiveFromDesc(radixDeploymentList.Items)

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

// GetDeploymentWithName Handler for GetDeploymentWithName
Expand Down Expand Up @@ -226,11 +225,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
28 changes: 14 additions & 14 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.

36 changes: 13 additions & 23 deletions api/deployments/models/component_deployment_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,44 +7,34 @@ import (
v1 "github.com/equinor/radix-operator/pkg/apis/radix/v1"
)

// ComponentDeploymentSummaryBuilder Builds DTOs
type ComponentDeploymentSummaryBuilder interface {
WithRadixDeployment(*v1.RadixDeployment) ComponentDeploymentSummaryBuilder
WithRadixDeployComponent(component v1.RadixCommonDeployComponent) ComponentDeploymentSummaryBuilder
Build() (*ComponentDeploymentSummary, error)
// DeploymentItemBuilder Builds DTOs
type DeploymentItemBuilder interface {
WithRadixDeployment(*v1.RadixDeployment) DeploymentItemBuilder
Build() (*DeploymentItem, error)
}

type componentDeploymentSummaryBuilder struct {
component v1.RadixCommonDeployComponent
type deploymentItemBuilder struct {
radixDeployment *v1.RadixDeployment
}

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

// WithRadixDeployComponent With RadixDeployComponent
func (b *componentDeploymentSummaryBuilder) WithRadixDeployComponent(component v1.RadixCommonDeployComponent) ComponentDeploymentSummaryBuilder {
b.component = component
return b
}

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

func (b *componentDeploymentSummaryBuilder) Build() (*ComponentDeploymentSummary, error) {
if b.component == nil || b.radixDeployment == nil {
return nil, fmt.Errorf("component or RadixDeployment are empty")
func (b *deploymentItemBuilder) Build() (*DeploymentItem, error) {
if b.radixDeployment == nil {
return nil, fmt.Errorf("RadixDeployment is empty")
}
return &ComponentDeploymentSummary{
return &DeploymentItem{
Name: b.radixDeployment.GetName(),
ComponentName: b.component.GetName(),
ActiveFrom: radixutils.FormatTimestamp(b.radixDeployment.Status.ActiveFrom.Time),
ActiveTo: radixutils.FormatTimestamp(b.radixDeployment.Status.ActiveTo.Time),
Condition: string(b.radixDeployment.Status.Condition),
GitCommitHash: b.radixDeployment.GetLabels()[kube.RadixCommitLabel],
}, nil
}
16 changes: 3 additions & 13 deletions api/deployments/models/deployment_summary.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,20 +73,15 @@ type DeploymentSummary struct {
GitTags string `json:"gitTags,omitempty"`
}

// ComponentDeploymentSummary describe a component deployment
// swagger:model ComponentDeploymentSummary
type ComponentDeploymentSummary struct {
// 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"`

// Name of the component
//
// required: true
ComponentName string `json:"componentName"`

// ActiveFrom Timestamp when the deployment starts (or created)
//
// required: true
Expand All @@ -104,9 +99,4 @@ type ComponentDeploymentSummary struct {
// required: false
// example: 4faca8595c5283a9d0f17a623b9255a0d9866a2e
GitCommitHash string `json:"gitCommitHash,omitempty"`

// Condition the condition of the component
//
// required: false
Condition string `json:"condition,omitempty"`
}
16 changes: 8 additions & 8 deletions api/environments/environment_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ func (c *environmentController) GetRoutes() models.Routes {
models.Route{
Path: rootPath + "/environments/{envName}/jobcomponents/{jobComponentName}/deployments",
Method: "GET",
HandlerFunc: c.GetJobComponentRadixDeployments,
HandlerFunc: c.GetJobComponentDeployments,
},
models.Route{
Path: rootPath + "/environments/{envName}/jobcomponents/{jobComponentName}/jobs",
Expand Down Expand Up @@ -1217,11 +1217,11 @@ func (c *environmentController) GetScheduledJobLog(accounts models.Accounts, w h
}
}

// GetJobComponentRadixDeployments Get list of RadixDeployments for the job component
func (c *environmentController) GetJobComponentRadixDeployments(accounts models.Accounts, w http.ResponseWriter, r *http.Request) {
// swagger:operation GET /applications/{appName}/environments/{envName}/jobcomponents/{jobComponentName}/deployments job GetJobComponentRadixDeployments
// GetJobComponentDeployments Get list of deployments for the job component
func (c *environmentController) GetJobComponentDeployments(accounts models.Accounts, w http.ResponseWriter, r *http.Request) {
// swagger:operation GET /applications/{appName}/environments/{envName}/jobcomponents/{jobComponentName}/deployments job GetJobComponentDeployments
// ---
// summary: Get list of RadixDeployments for the job component
// summary: Get list of deployments for the job component
// parameters:
// - name: appName
// in: path
Expand Down Expand Up @@ -1252,19 +1252,19 @@ func (c *environmentController) GetJobComponentRadixDeployments(accounts models.
// required: false
// responses:
// "200":
// description: "Radix component deployments"
// description: "Radix deployments"
// schema:
// type: array
// items:
// "$ref": "#/definitions/ComponentDeploymentSummary"
// "$ref": "#/definitions/DeploymentItem"
// "404":
// description: "Not found"
appName := mux.Vars(r)["appName"]
envName := mux.Vars(r)["envName"]
jobComponentName := mux.Vars(r)["jobComponentName"]

eh := c.environmentHandlerFactory(accounts)
jobComponentDeployments, err := eh.deployHandler.GetDeploymentsForJobComponent(r.Context(), appName, envName, jobComponentName)
jobComponentDeployments, err := eh.deployHandler.GetJobComponentDeployments(r.Context(), appName, envName, jobComponentName)

if err != nil {
radixhttp.ErrorResponse(w, r, err)
Expand Down

0 comments on commit 54eb02b

Please sign in to comment.