Add rebuild subcommand to pkg command (#808)

This commit is contained in:
Ta-Ching Chen
2018-08-12 04:13:25 +08:00
committed by GitHub
parent ee61c8c333
commit e730376e3e
3 changed files with 32 additions and 4 deletions
+1 -1
View File
@@ -481,7 +481,7 @@ func fnUpdate(c *cli.Context) error {
log.Fatal("Package is used by multiple functions, use --force to force update")
}
pkgMetadata = updatePackage(client, pkg, envName, envNamespace, srcArchiveName, deployArchiveName, buildcmd)
pkgMetadata = updatePackage(client, pkg, envName, envNamespace, srcArchiveName, deployArchiveName, buildcmd, false)
checkErr(err, fmt.Sprintf("update package '%v'", pkgName))
fmt.Printf("package '%v' updated\n", pkgMetadata.GetName())
+1
View File
@@ -241,6 +241,7 @@ func main() {
pkgSubCommands := []cli.Command{
{Name: "create", Usage: "Create new package", Flags: []cli.Flag{pkgNamespaceFlag, pkgEnvironmentFlag, envNamespaceFlag, pkgSrcArchiveFlag, pkgDeployArchiveFlag, pkgBuildCmdFlag}, Action: pkgCreate},
{Name: "update", Usage: "Update package", Flags: []cli.Flag{pkgNameFlag, pkgNamespaceFlag, pkgEnvironmentFlag, envNamespaceFlag, pkgSrcArchiveFlag, pkgDeployArchiveFlag, pkgBuildCmdFlag, pkgForceFlag}, Action: pkgUpdate},
{Name: "rebuild", Usage: "Rebuild a failed package", Flags: []cli.Flag{pkgNameFlag, pkgNamespaceFlag}, Action: pkgRebuild},
{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},
+30 -3
View File
@@ -125,7 +125,7 @@ func pkgUpdate(c *cli.Context) error {
}
newPkgMeta := updatePackage(client, pkg,
envName, envNamespace, srcArchiveName, deployArchiveName, buildcmd)
envName, envNamespace, srcArchiveName, deployArchiveName, buildcmd, false)
// update resource version of package reference of functions that shared the same package
for _, fn := range fnList {
@@ -140,7 +140,7 @@ func pkgUpdate(c *cli.Context) error {
}
func updatePackage(client *client.Client, pkg *crd.Package, envName, envNamespace,
srcArchiveName, deployArchiveName, buildcmd string) *metav1.ObjectMeta {
srcArchiveName, deployArchiveName, buildcmd string, forceRebuild bool) *metav1.ObjectMeta {
var srcArchiveMetadata, deployArchiveMetadata *fission.Archive
needToBuild := false
@@ -168,7 +168,7 @@ func updatePackage(client *client.Client, pkg *crd.Package, envName, envNamespac
}
// Set package as pending status when needToBuild is true
if needToBuild {
if needToBuild || forceRebuild {
// change into pending state to trigger package build
pkg.Status = fission.PackageStatus{
BuildStatus: fission.BuildStatusPending,
@@ -387,3 +387,30 @@ func pkgDelete(c *cli.Context) error {
return nil
}
func pkgRebuild(c *cli.Context) error {
client := getClient(c.GlobalString("server"))
pkgName := c.String("name")
if len(pkgName) == 0 {
log.Fatal("Need name of package, use --name")
}
pkgNamespace := c.String("pkgNamespace")
pkg, err := client.PackageGet(&metav1.ObjectMeta{
Name: pkgName,
Namespace: pkgNamespace,
})
checkErr(err, "find package")
if pkg.Status.BuildStatus != fission.BuildStatusFailed {
log.Fatal(fmt.Sprintf("Package %v is not in %v state.",
pkg.Metadata.Name, fission.BuildStatusFailed))
}
updatePackage(client, pkg, "", "", "", "", "", true)
fmt.Printf("Retrying build for pkg %v. Use \"fission pkg info --name %v\" to view status.\n", pkg.Metadata.Name, pkg.Metadata.Name)
return nil
}