Skip to content
This repository has been archived by the owner on Jul 4, 2024. It is now read-only.

Commit

Permalink
feat: add managed by score annotation to support humanitec UI warnings (
Browse files Browse the repository at this point in the history
  • Loading branch information
johanneswuerbach authored Oct 3, 2023
2 parents dcf1340 + 6c33c9b commit 95f5cc1
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 21 deletions.
19 changes: 10 additions & 9 deletions internal/command/consts.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,16 @@ const (
)

var (
scoreFile string
overridesFile string
extensionsFile string
uiUrl string
apiUrl string
apiToken string
orgID string
appID string
envID string
scoreFile string
overridesFile string
extensionsFile string
uiUrl string
apiUrl string
apiToken string
orgID string
appID string
envID string
workloadSourceURL string

overrideParams []string
message string
Expand Down
3 changes: 2 additions & 1 deletion internal/command/delta.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ func init() {
deltaCmd.Flags().StringVarP(&scoreFile, "file", "f", scoreFileDefault, "Source SCORE file")
deltaCmd.Flags().StringVar(&overridesFile, "overrides", overridesFileDefault, "Overrides file")
deltaCmd.Flags().StringVar(&extensionsFile, "extensions", extensionsFileDefault, "Extensions file")
deltaCmd.Flags().StringVar(&workloadSourceURL, "workload-source-url", "", "URL of file that is managing the humanitec workload")
deltaCmd.Flags().StringVar(&uiUrl, "ui-url", uiUrlDefault, "Humanitec UI")
deltaCmd.Flags().StringVar(&apiUrl, "api-url", apiUrlDefault, "Humanitec API endpoint")
deltaCmd.Flags().StringVar(&deltaID, "delta", "", "The ID of an existing delta in Humanitec into which to merge the generated delta")
Expand Down Expand Up @@ -74,7 +75,7 @@ func delta(cmd *cobra.Command, args []string) error {
// Prepare a new deployment
//
log.Print("Preparing a new deployment...\n")
delta, err := humanitec.ConvertSpec(message, envID, spec, ext)
delta, err := humanitec.ConvertSpec(message, envID, workloadSourceURL, spec, ext)
if err != nil {
return fmt.Errorf("preparing new deployment: %w", err)
}
Expand Down
1 change: 1 addition & 0 deletions internal/command/draft.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ func init() {
draftCmd.Flags().StringVarP(&scoreFile, "file", "f", scoreFileDefault, "Source SCORE file")
draftCmd.Flags().StringVar(&overridesFile, "overrides", overridesFileDefault, "Overrides file")
draftCmd.Flags().StringVar(&extensionsFile, "extensions", extensionsFileDefault, "Extensions file")
draftCmd.Flags().StringVar(&workloadSourceURL, "workload-source-url", "", "URL of file that is managing the humanitec workload")
draftCmd.Flags().StringVar(&uiUrl, "ui-url", uiUrlDefault, "Humanitec API endpoint")
draftCmd.Flags().StringVar(&apiUrl, "api-url", apiUrlDefault, "Humanitec API endpoint")
draftCmd.Flags().StringVar(&apiToken, "token", "", "Humanitec API authentication token")
Expand Down
3 changes: 2 additions & 1 deletion internal/command/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ func init() {
runCmd.Flags().StringVarP(&scoreFile, "file", "f", scoreFileDefault, "Source SCORE file")
runCmd.Flags().StringVar(&overridesFile, "overrides", overridesFileDefault, "Overrides file")
runCmd.Flags().StringVar(&extensionsFile, "extensions", extensionsFileDefault, "Extensions file")
runCmd.Flags().StringVar(&workloadSourceURL, "workload-source-url", "", "URL of file that is managing the humanitec workload")
runCmd.Flags().StringVar(&envID, "env", "", "Environment ID")
runCmd.MarkFlagRequired("env")

Expand Down Expand Up @@ -68,7 +69,7 @@ func run(cmd *cobra.Command, args []string) error {
// Prepare a new deployment
//
log.Print("Preparing a new deployment...\n")
delta, err := humanitec.ConvertSpec(message, envID, spec, ext)
delta, err := humanitec.ConvertSpec(message, envID, workloadSourceURL, spec, ext)
if err != nil {
return fmt.Errorf("preparing new deployment: %w", err)
}
Expand Down
5 changes: 4 additions & 1 deletion internal/humanitec/consts.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package humanitec

const (
DefaultWorkloadProfile = "humanitec/default-module"
DefaultWorkloadProfile = "humanitec/default-module"
managedBy = "score-humanitec"
managedByAnnotation = "humanitec.io/managed-by"
workloadSourceAnnotation = "humanitec.io/workload-source"
)
11 changes: 9 additions & 2 deletions internal/humanitec/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,11 +143,17 @@ func convertContainerSpec(name string, spec *score.ContainerSpec, context *templ
}

// ConvertSpec converts SCORE specification into Humanitec deployment delta.
func ConvertSpec(name, envID string, spec *score.WorkloadSpec, ext *extensions.HumanitecExtensionsSpec) (*humanitec.CreateDeploymentDeltaRequest, error) {
func ConvertSpec(name, envID string, workloadSourceURL string, spec *score.WorkloadSpec, ext *extensions.HumanitecExtensionsSpec) (*humanitec.CreateDeploymentDeltaRequest, error) {
ctx, err := buildContext(spec.Metadata, spec.Resources, ext.Resources)
if err != nil {
return nil, fmt.Errorf("preparing context: %w", err)
}
annotations := map[string]interface{}{
managedByAnnotation: managedBy,
}
if workloadSourceURL != "" {
annotations[workloadSourceAnnotation] = workloadSourceURL
}

var containers = make(map[string]interface{}, len(spec.Containers))
for cName, cSpec := range spec.Containers {
Expand All @@ -159,7 +165,8 @@ func ConvertSpec(name, envID string, spec *score.WorkloadSpec, ext *extensions.H
}

var workloadSpec = map[string]interface{}{
"containers": containers,
"annotations": annotations,
"containers": containers,
}
if len(spec.Service.Ports) > 0 {
var ports = map[string]interface{}{}
Expand Down
24 changes: 17 additions & 7 deletions internal/humanitec/convert_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,12 @@ func TestScoreConvert(t *testing.T) {
)

var tests = []struct {
Name string
Source *score.WorkloadSpec
Extensions *extensions.HumanitecExtensionsSpec
Output *humanitec.CreateDeploymentDeltaRequest
Error error
Name string
Source *score.WorkloadSpec
Extensions *extensions.HumanitecExtensionsSpec
Output *humanitec.CreateDeploymentDeltaRequest
WorkloadSourceURL string
Error error
}{
{
Name: "Should convert SCORE to deployment delta",
Expand Down Expand Up @@ -168,14 +169,18 @@ func TestScoreConvert(t *testing.T) {
},
},
},
Extensions: &extensions.HumanitecExtensionsSpec{},
Extensions: &extensions.HumanitecExtensionsSpec{},
WorkloadSourceURL: "",
Output: &humanitec.CreateDeploymentDeltaRequest{
Metadata: humanitec.DeltaMetadata{EnvID: envID, Name: name},
Modules: humanitec.ModuleDeltas{
Add: map[string]map[string]interface{}{
"backend": {
"profile": "humanitec/default-module",
"spec": map[string]interface{}{
"annotations": map[string]interface{}{
"humanitec.io/managed-by": "score-humanitec",
},
"containers": map[string]interface{}{
"backend": map[string]interface{}{
"id": "backend",
Expand Down Expand Up @@ -352,13 +357,18 @@ func TestScoreConvert(t *testing.T) {
},
},
},
WorkloadSourceURL: "https://test.com",
Output: &humanitec.CreateDeploymentDeltaRequest{
Metadata: humanitec.DeltaMetadata{EnvID: envID, Name: name},
Modules: humanitec.ModuleDeltas{
Add: map[string]map[string]interface{}{
"test": {
"profile": "test-org/test-module",
"spec": map[string]interface{}{
"annotations": map[string]interface{}{
"humanitec.io/managed-by": "score-humanitec",
"humanitec.io/workload-source": "https://test.com",
},
"containers": map[string]interface{}{
"backend": map[string]interface{}{
"id": "backend",
Expand Down Expand Up @@ -444,7 +454,7 @@ func TestScoreConvert(t *testing.T) {

for _, tt := range tests {
t.Run(tt.Name, func(t *testing.T) {
res, err := ConvertSpec(name, envID, tt.Source, tt.Extensions)
res, err := ConvertSpec(name, envID, tt.WorkloadSourceURL, tt.Source, tt.Extensions)

if tt.Error != nil {
// On Error
Expand Down

0 comments on commit 95f5cc1

Please sign in to comment.