-
Notifications
You must be signed in to change notification settings - Fork 73
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added the support for --image-name flag in the astro deploy command #1751
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -44,6 +44,8 @@ var ( | |||||||||||||||||||||||||||||||
ErrDagOnlyDeployNotEnabledForDeployment = errors.New("to perform this operation, first set the Deployment type to 'dag_deploy' via the UI or the API or the CLI") | ||||||||||||||||||||||||||||||||
ErrEmptyDagFolderUserCancelledOperation = errors.New("no DAGs found in the dags folder. User canceled the operation") | ||||||||||||||||||||||||||||||||
ErrBYORegistryDomainNotSet = errors.New("Custom registry host is not set in config. It can be set at astronomer.houston.config.deployments.registry.protectedCustomRegistry.updateRegistry.host") //nolint | ||||||||||||||||||||||||||||||||
ErrNoRuntimeVersionPassed = errors.New("no runtime version was provided") | ||||||||||||||||||||||||||||||||
ErrNoImageNamePassed = errors.New("no image name was provided") | ||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
const ( | ||||||||||||||||||||||||||||||||
|
@@ -204,14 +206,18 @@ func buildPushDockerImage(houstonClient houston.ClientInterface, c *config.Conte | |||||||||||||||||||||||||||||||
if byoRegistryEnabled { | ||||||||||||||||||||||||||||||||
runtimeVersion, _ := imageHandler.GetLabel("", runtimeImageLabel) | ||||||||||||||||||||||||||||||||
airflowVersion, _ := imageHandler.GetLabel("", airflowImageLabel) | ||||||||||||||||||||||||||||||||
req := houston.UpdateDeploymentImageRequest{ReleaseName: name, Image: remoteImage, AirflowVersion: airflowVersion, RuntimeVersion: runtimeVersion} | ||||||||||||||||||||||||||||||||
_, err := houston.Call(houstonClient.UpdateDeploymentImage)(req) | ||||||||||||||||||||||||||||||||
_, err := updateDeploymentImageAPICall(houstonClient, remoteImage, name, airflowVersion, runtimeVersion) | ||||||||||||||||||||||||||||||||
return err | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
return nil | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
func updateDeploymentImageAPICall(houstonClient houston.ClientInterface, imageName, releaseName, airflowVersion, runtimeVersion string) (interface{}, error) { | ||||||||||||||||||||||||||||||||
req := houston.UpdateDeploymentImageRequest{ReleaseName: releaseName, Image: imageName, AirflowVersion: airflowVersion, RuntimeVersion: runtimeVersion} | ||||||||||||||||||||||||||||||||
return houston.Call(houstonClient.UpdateDeploymentImage)(req) | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
func validAirflowImageRepo(image string) bool { | ||||||||||||||||||||||||||||||||
validDockerfileBaseImages := map[string]bool{ | ||||||||||||||||||||||||||||||||
"quay.io/astronomer/ap-airflow": true, | ||||||||||||||||||||||||||||||||
|
@@ -427,3 +433,27 @@ func DagsOnlyDeploy(houstonClient houston.ClientInterface, appConfig *houston.Ap | |||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
return fileutil.UploadFile(&uploadFileArgs) | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
func UpdateDeploymentImage(houstonClient houston.ClientInterface, deploymentID, wsID, runtimeVersion, imageName string) error { | ||||||||||||||||||||||||||||||||
if runtimeVersion == "" { | ||||||||||||||||||||||||||||||||
return ErrNoRuntimeVersionPassed | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
if imageName == "" { | ||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: Should we validate that the image being passed is built using the same runtime version as the one being passed on as user input? Or does the Houston API do that for us? |
||||||||||||||||||||||||||||||||
return ErrNoImageNamePassed | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
deploymentIDForCurrentCmd, _, err := getDeploymentIDForCurrentCommandVar(houstonClient, wsID, deploymentID, deploymentID == "") | ||||||||||||||||||||||||||||||||
if err != nil { | ||||||||||||||||||||||||||||||||
return err | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
deploymentID = deploymentIDForCurrentCmd | ||||||||||||||||||||||||||||||||
if deploymentID == "" { | ||||||||||||||||||||||||||||||||
return errInvalidDeploymentID | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
Comment on lines
+444
to
+451
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
nit: simplifying the logic |
||||||||||||||||||||||||||||||||
deploymentInfo, err := houston.Call(houstonClient.GetDeployment)(deploymentID) | ||||||||||||||||||||||||||||||||
if err != nil { | ||||||||||||||||||||||||||||||||
return fmt.Errorf("failed to get deployment info: %w", err) | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
_, err = updateDeploymentImageAPICall(houstonClient, imageName, deploymentInfo.ReleaseName, "", runtimeVersion) | ||||||||||||||||||||||||||||||||
fmt.Println("Image successfully updated") | ||||||||||||||||||||||||||||||||
return err | ||||||||||||||||||||||||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: do we need to validate that
runtimeVersion
is a valid semver and present inupdates.astronomer.io
? Or does the Houston API do that for us?