Skip to content

Commit

Permalink
Added option to update labels & description in project (#260)
Browse files Browse the repository at this point in the history
* wip: Add project label & description in update command

Signed-off-by: Yuvraj <code@evalsocket.dev>
  • Loading branch information
yindia committed Jan 24, 2022
1 parent 0e61f13 commit cfde70d
Show file tree
Hide file tree
Showing 20 changed files with 426 additions and 423 deletions.
5 changes: 3 additions & 2 deletions flytectl/clierrors/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ package clierrors
var (
ErrInvalidStateUpdate = "Invalid state passed. Specify either activate or archive\n"

ErrProjectNotPassed = "Project not passed\n"
ErrFailedProjectUpdate = "Project %v failed to get updated to %v state due to %v\n"
ErrProjectNotPassed = "Project not passed\n"
ErrProjectNameNotPassed = "project name is required flag"
ErrFailedProjectUpdate = "Project %v failed to get updated due to %v\n"

ErrLPNotPassed = "Launch plan name not passed\n"
ErrLPVersionNotPassed = "Launch plan version not passed\n" //nolint
Expand Down
64 changes: 64 additions & 0 deletions flytectl/cmd/config/subcommand/project/configproject_flags.go

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

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

77 changes: 76 additions & 1 deletion flytectl/cmd/config/subcommand/project/project_config.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
package project

import (
"fmt"
"io/ioutil"

"github.com/flyteorg/flytectl/clierrors"

"github.com/flyteorg/flytectl/pkg/filters"
"github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin"
"gopkg.in/yaml.v2"
)

//go:generate pflags Config --default-var DefaultConfig --bind-default-var
Expand All @@ -11,7 +18,75 @@ var (
}
)

// Config
// Config holds the flag for get project
type Config struct {
Filter filters.Filters `json:"filter" pflag:","`
}

//go:generate pflags ConfigProject --default-var DefaultProjectConfig --bind-default-var

// ConfigProject hold configuration for project update flags.
type ConfigProject struct {
ID string `json:"id" pflag:",id for the project specified as argument."`
ActivateProject bool `json:"activateProject" pflag:",(Deprecated) Activates the project specified as argument. Only used in update"`
ArchiveProject bool `json:"archiveProject" pflag:",(Deprecated) Archives the project specified as argument. Only used in update"`
Activate bool `json:"activate" pflag:",Activates the project specified as argument. Only used in update"`
Archive bool `json:"archive" pflag:",Archives the project specified as argument. Only used in update"`
Name string `json:"name" pflag:",name for the project specified as argument."`
DryRun bool `json:"dryRun" pflag:",execute command without making any modifications."`
Description string `json:"description" pflag:",description for the project specified as argument."`
Labels map[string]string `json:"labels" pflag:",labels for the project specified as argument."`
File string `json:"file" pflag:",file for the project definition."`
}

var DefaultProjectConfig = &ConfigProject{
Description: "",
Labels: map[string]string{},
}

//GetProjectSpec return project spec from a file/flags
func (c *ConfigProject) GetProjectSpec(id string) (*admin.Project, error) {
projectSpec := admin.Project{}
if len(c.File) > 0 {
yamlFile, err := ioutil.ReadFile(c.File)
if err != nil {
return nil, err
}
err = yaml.Unmarshal(yamlFile, &projectSpec)
if err != nil {
return nil, err
}
return &projectSpec, nil
}

projectSpec.Id = id
projectSpec.Name = c.Name
projectSpec.Description = c.Description
projectSpec.Labels = &admin.Labels{
Values: c.Labels,
}
return &projectSpec, nil
}

//MapToAdminState return project spec from a file/flags
func (c *ConfigProject) MapToAdminState() (admin.Project_ProjectState, error) {
if c.ActivateProject {
c.Activate = c.ActivateProject
}
if c.ArchiveProject {
c.Archive = c.ArchiveProject
}

activate := c.Activate
archive := c.Archive

if activate || archive {
if activate == archive {
return admin.Project_ACTIVE, fmt.Errorf(clierrors.ErrInvalidStateUpdate)
}
if archive {
return admin.Project_ARCHIVED, nil
}
}
return admin.Project_ACTIVE, nil
}

0 comments on commit cfde70d

Please sign in to comment.