Add rebuild subcommand to pkg command (#808)
This commit is contained in:
+1
-1
@@ -481,7 +481,7 @@ func fnUpdate(c *cli.Context) error {
|
|||||||
log.Fatal("Package is used by multiple functions, use --force to force update")
|
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))
|
checkErr(err, fmt.Sprintf("update package '%v'", pkgName))
|
||||||
|
|
||||||
fmt.Printf("package '%v' updated\n", pkgMetadata.GetName())
|
fmt.Printf("package '%v' updated\n", pkgMetadata.GetName())
|
||||||
|
|||||||
@@ -241,6 +241,7 @@ func main() {
|
|||||||
pkgSubCommands := []cli.Command{
|
pkgSubCommands := []cli.Command{
|
||||||
{Name: "create", Usage: "Create new package", Flags: []cli.Flag{pkgNamespaceFlag, pkgEnvironmentFlag, envNamespaceFlag, pkgSrcArchiveFlag, pkgDeployArchiveFlag, pkgBuildCmdFlag}, Action: pkgCreate},
|
{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: "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: "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: "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: "info", Usage: "Show package information", Flags: []cli.Flag{pkgNameFlag, pkgNamespaceFlag}, Action: pkgInfo},
|
||||||
|
|||||||
+30
-3
@@ -125,7 +125,7 @@ func pkgUpdate(c *cli.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
newPkgMeta := updatePackage(client, pkg,
|
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
|
// update resource version of package reference of functions that shared the same package
|
||||||
for _, fn := range fnList {
|
for _, fn := range fnList {
|
||||||
@@ -140,7 +140,7 @@ func pkgUpdate(c *cli.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func updatePackage(client *client.Client, pkg *crd.Package, envName, envNamespace,
|
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
|
var srcArchiveMetadata, deployArchiveMetadata *fission.Archive
|
||||||
needToBuild := false
|
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
|
// Set package as pending status when needToBuild is true
|
||||||
if needToBuild {
|
if needToBuild || forceRebuild {
|
||||||
// change into pending state to trigger package build
|
// change into pending state to trigger package build
|
||||||
pkg.Status = fission.PackageStatus{
|
pkg.Status = fission.PackageStatus{
|
||||||
BuildStatus: fission.BuildStatusPending,
|
BuildStatus: fission.BuildStatusPending,
|
||||||
@@ -387,3 +387,30 @@ func pkgDelete(c *cli.Context) error {
|
|||||||
|
|
||||||
return nil
|
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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user