diff --git a/pkg/fission-cli/main.go b/pkg/fission-cli/main.go index 878fdea0..a774b2a9 100644 --- a/pkg/fission-cli/main.go +++ b/pkg/fission-cli/main.go @@ -260,6 +260,7 @@ func NewCliApp() *cli.App { pkgDeployArchiveFlag := cli.StringSliceFlag{Name: "deployarchive, deploy", Usage: "Local path or URL for binary archive"} pkgBuildCmdFlag := cli.StringFlag{Name: "buildcmd", Usage: "Build command for builder to run with"} pkgOutputFlag := cli.StringFlag{Name: "output, o", Usage: "Output filename to save archive content"} + pkgStatusFlag := cli.StringFlag{Name: "status", Usage: `Filter packages by status`} pkgOrphanFlag := cli.BoolFlag{Name: "orphan", Usage: "orphan packages that are not referenced by any function"} pkgSubCommands := []cli.Command{ {Name: "create", Usage: "Create new package", Flags: []cli.Flag{pkgNamespaceFlag, pkgEnvironmentFlag, envNamespaceFlag, pkgSrcArchiveFlag, pkgDeployArchiveFlag, pkgBuildCmdFlag}, Action: pkgCreate}, @@ -268,7 +269,7 @@ func NewCliApp() *cli.App { {Name: "getsrc", Usage: "Get source archive content", Flags: []cli.Flag{pkgNameFlag, pkgNamespaceFlag, pkgOutputFlag}, Action: pkgSourceGet}, {Name: "getdeploy", Usage: "Get deployment archive content", Flags: []cli.Flag{pkgNameFlag, pkgNamespaceFlag, pkgOutputFlag}, Action: pkgDeployGet}, {Name: "info", Usage: "Show package information", Flags: []cli.Flag{pkgNameFlag, pkgNamespaceFlag}, Action: pkgInfo}, - {Name: "list", Usage: "List all packages", Flags: []cli.Flag{pkgOrphanFlag, pkgNamespaceFlag}, Action: pkgList}, + {Name: "list", Usage: "List all packages", Flags: []cli.Flag{pkgOrphanFlag, pkgStatusFlag, pkgNamespaceFlag}, Action: pkgList}, {Name: "delete", Usage: "Delete package", Flags: []cli.Flag{pkgNameFlag, pkgNamespaceFlag, pkgForceFlag, pkgOrphanFlag}, Action: pkgDelete}, } diff --git a/pkg/fission-cli/package.go b/pkg/fission-cli/package.go index 4894c1c5..3d2d56d5 100644 --- a/pkg/fission-cli/package.go +++ b/pkg/fission-cli/package.go @@ -327,6 +327,7 @@ func pkgList(c *cli.Context) error { client := util.GetApiClient(c.GlobalString("server")) // option for the user to list all orphan packages (not referenced by any function) listOrphans := c.Bool("orphan") + status := c.String("status") pkgNamespace := c.String("pkgNamespace") pkgList, err := client.PackageList(pkgNamespace) @@ -346,13 +347,20 @@ func pkgList(c *cli.Context) error { fnList, err := getFunctionsByPackage(client, pkg.Metadata.Name, pkg.Metadata.Namespace) util.CheckErr(err, fmt.Sprintf("get functions sharing package %s", pkg.Metadata.Name)) if len(fnList) == 0 { - fmt.Fprintf(w, "%v\t%v\t%v\t%v\n", pkg.Metadata.Name, pkg.Status.BuildStatus, pkg.Spec.Environment.Name, pkg.Status.LastUpdateTimestamp.Format(time.RFC3339)) + if status == "" { + fmt.Fprintf(w, "%v\t%v\t%v\n", pkg.Metadata.Name, pkg.Status.BuildStatus, pkg.Spec.Environment.Name) + } else if status == string(pkg.Status.BuildStatus) { + fmt.Fprintf(w, "%v\t%v\t%v\n", pkg.Metadata.Name, pkg.Status.BuildStatus, pkg.Spec.Environment.Name) + } } } } else { for _, pkg := range pkgList { - fmt.Fprintf(w, "%v\t%v\t%v\t%v\n", pkg.Metadata.Name, - pkg.Status.BuildStatus, pkg.Spec.Environment.Name, pkg.Status.LastUpdateTimestamp.Format(time.RFC3339)) + if status == "" { + fmt.Fprintf(w, "%v\t%v\t%v\n", pkg.Metadata.Name, pkg.Status.BuildStatus, pkg.Spec.Environment.Name) + } else if status == string(pkg.Status.BuildStatus) { + fmt.Fprintf(w, "%v\t%v\t%v\n", pkg.Metadata.Name, pkg.Status.BuildStatus, pkg.Spec.Environment.Name) + } } }