committed by
Ta-Ching Chen
parent
9d7355cbaa
commit
ad28922871
+16
-2
@@ -394,6 +394,17 @@ func fnUpdate(c *cli.Context) error {
|
|||||||
|
|
||||||
envName := c.String("env")
|
envName := c.String("env")
|
||||||
envNamespace := c.String("envNamespace")
|
envNamespace := c.String("envNamespace")
|
||||||
|
// if the new env specified is the same as the old one, no need to update package
|
||||||
|
// same is true for all update parameters, but, for now, we dont check all of them - because, its ok to
|
||||||
|
// re-write the object with same old values, we just end up getting a new resource version for the object.
|
||||||
|
if len(envName) > 0 && envName == function.Spec.Environment.Name {
|
||||||
|
envName = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
if envNamespace == function.Spec.Environment.Namespace {
|
||||||
|
envNamespace = ""
|
||||||
|
}
|
||||||
|
|
||||||
deployArchiveName := c.String("code")
|
deployArchiveName := c.String("code")
|
||||||
if len(deployArchiveName) == 0 {
|
if len(deployArchiveName) == 0 {
|
||||||
deployArchiveName = c.String("deploy")
|
deployArchiveName = c.String("deploy")
|
||||||
@@ -455,6 +466,9 @@ func fnUpdate(c *cli.Context) error {
|
|||||||
|
|
||||||
if len(envName) > 0 {
|
if len(envName) > 0 {
|
||||||
function.Spec.Environment.Name = envName
|
function.Spec.Environment.Name = envName
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(envNamespace) > 0 {
|
||||||
function.Spec.Environment.Namespace = envNamespace
|
function.Spec.Environment.Namespace = envNamespace
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -473,7 +487,7 @@ func fnUpdate(c *cli.Context) error {
|
|||||||
|
|
||||||
pkgMetadata := &pkg.Metadata
|
pkgMetadata := &pkg.Metadata
|
||||||
|
|
||||||
if len(deployArchiveName) != 0 || len(srcArchiveName) != 0 || len(buildcmd) != 0 || len(envName) != 0 {
|
if len(deployArchiveName) != 0 || len(srcArchiveName) != 0 || len(buildcmd) != 0 || len(envName) != 0 || len(envNamespace) != 0 {
|
||||||
fnList, err := getFunctionsByPackage(client, pkg.Metadata.Name, pkg.Metadata.Namespace)
|
fnList, err := getFunctionsByPackage(client, pkg.Metadata.Name, pkg.Metadata.Namespace)
|
||||||
checkErr(err, "get function list")
|
checkErr(err, "get function list")
|
||||||
|
|
||||||
@@ -481,7 +495,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, false)
|
pkgMetadata, err = 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())
|
||||||
|
|||||||
+26
-4
@@ -117,6 +117,17 @@ func pkgUpdate(c *cli.Context) error {
|
|||||||
})
|
})
|
||||||
checkErr(err, "get package")
|
checkErr(err, "get package")
|
||||||
|
|
||||||
|
// if the new env specified is the same as the old one, no need to update package
|
||||||
|
// same is true for all update parameters, but, for now, we dont check all of them - because, its ok to
|
||||||
|
// re-write the object with same old values, we just end up getting a new resource version for the object.
|
||||||
|
if len(envName) > 0 && envName == pkg.Spec.Environment.Name {
|
||||||
|
envName = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
if envNamespace == pkg.Spec.Environment.Namespace {
|
||||||
|
envNamespace = ""
|
||||||
|
}
|
||||||
|
|
||||||
fnList, err := getFunctionsByPackage(client, pkg.Metadata.Name, pkg.Metadata.Namespace)
|
fnList, err := getFunctionsByPackage(client, pkg.Metadata.Name, pkg.Metadata.Namespace)
|
||||||
checkErr(err, "get function list")
|
checkErr(err, "get function list")
|
||||||
|
|
||||||
@@ -124,8 +135,11 @@ func pkgUpdate(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")
|
||||||
}
|
}
|
||||||
|
|
||||||
newPkgMeta := updatePackage(client, pkg,
|
newPkgMeta, err := updatePackage(client, pkg,
|
||||||
envName, envNamespace, srcArchiveName, deployArchiveName, buildcmd, false)
|
envName, envNamespace, srcArchiveName, deployArchiveName, buildcmd, false)
|
||||||
|
if err != nil {
|
||||||
|
checkErr(err, "update package")
|
||||||
|
}
|
||||||
|
|
||||||
// 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,13 +154,17 @@ 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, forceRebuild bool) *metav1.ObjectMeta {
|
srcArchiveName, deployArchiveName, buildcmd string, forceRebuild bool) (*metav1.ObjectMeta, error) {
|
||||||
|
|
||||||
var srcArchiveMetadata, deployArchiveMetadata *fission.Archive
|
var srcArchiveMetadata, deployArchiveMetadata *fission.Archive
|
||||||
needToBuild := false
|
needToBuild := false
|
||||||
|
|
||||||
if len(envName) > 0 {
|
if len(envName) > 0 {
|
||||||
pkg.Spec.Environment.Name = envName
|
pkg.Spec.Environment.Name = envName
|
||||||
|
needToBuild = true
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(envNamespace) > 0 {
|
||||||
pkg.Spec.Environment.Namespace = envNamespace
|
pkg.Spec.Environment.Namespace = envNamespace
|
||||||
needToBuild = true
|
needToBuild = true
|
||||||
}
|
}
|
||||||
@@ -165,6 +183,9 @@ func updatePackage(client *client.Client, pkg *crd.Package, envName, envNamespac
|
|||||||
if len(deployArchiveName) > 0 {
|
if len(deployArchiveName) > 0 {
|
||||||
deployArchiveMetadata = createArchive(client, deployArchiveName, "")
|
deployArchiveMetadata = createArchive(client, deployArchiveName, "")
|
||||||
pkg.Spec.Deployment = *deployArchiveMetadata
|
pkg.Spec.Deployment = *deployArchiveMetadata
|
||||||
|
// Users may update the env, envNS and deploy archive at the same time,
|
||||||
|
// but without the source archive. In this case, we should set needToBuild to false
|
||||||
|
needToBuild = false
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set package as pending status when needToBuild is true
|
// Set package as pending status when needToBuild is true
|
||||||
@@ -178,7 +199,7 @@ func updatePackage(client *client.Client, pkg *crd.Package, envName, envNamespac
|
|||||||
newPkgMeta, err := client.PackageUpdate(pkg)
|
newPkgMeta, err := client.PackageUpdate(pkg)
|
||||||
checkErr(err, "update package")
|
checkErr(err, "update package")
|
||||||
|
|
||||||
return newPkgMeta
|
return newPkgMeta, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func pkgSourceGet(c *cli.Context) error {
|
func pkgSourceGet(c *cli.Context) error {
|
||||||
@@ -408,7 +429,8 @@ func pkgRebuild(c *cli.Context) error {
|
|||||||
pkg.Metadata.Name, fission.BuildStatusFailed))
|
pkg.Metadata.Name, fission.BuildStatusFailed))
|
||||||
}
|
}
|
||||||
|
|
||||||
updatePackage(client, pkg, "", "", "", "", "", true)
|
_, err = updatePackage(client, pkg, "", "", "", "", "", true)
|
||||||
|
checkErr(err, "update package")
|
||||||
|
|
||||||
fmt.Printf("Retrying build for pkg %v. Use \"fission pkg info --name %v\" to view status.\n", pkg.Metadata.Name, pkg.Metadata.Name)
|
fmt.Printf("Retrying build for pkg %v. Use \"fission pkg info --name %v\" to view status.\n", pkg.Metadata.Name, pkg.Metadata.Name)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user