Handle duplicate archive and package specs; handle multifile archives better (#1018)

Archives with multiple files should have all files in the inputs.
Also clean up some inconsistent variable naming -- archive name,
archive file path, and archive input files were all stored in
incorrectly-named variables.
This commit is contained in:
Soam Vasani
2018-12-11 16:35:31 +08:00
committed by Ta-Ching Chen
parent f0c0936b87
commit 2699aa6069
6 changed files with 192 additions and 92 deletions
+16 -15
View File
@@ -193,6 +193,7 @@ func fnCreate(c *cli.Context) error {
spec = true
specFile = fmt.Sprintf("function-%v.yaml", fnName)
}
specDir := getSpecDir(c)
// check for unique function names within a namespace
fnList, err := client.FunctionList(fnNamespace)
@@ -252,25 +253,25 @@ func fnCreate(c *cli.Context) error {
}
}
srcArchiveName := c.StringSlice("src")
var deployArchiveName []string
codeFlag := false
srcArchiveFiles := c.StringSlice("src")
var deployArchiveFiles []string
noZip := false
code := c.String("code")
if len(code) == 0 {
deployArchiveName = c.StringSlice("deploy")
deployArchiveFiles = c.StringSlice("deploy")
} else {
deployArchiveName = append(deployArchiveName, c.String("code"))
codeFlag = true
deployArchiveFiles = append(deployArchiveFiles, c.String("code"))
noZip = true
}
// fatal when both src & deploy archive are empty
if len(srcArchiveName) == 0 && len(deployArchiveName) == 0 {
if len(srcArchiveFiles) == 0 && len(deployArchiveFiles) == 0 {
log.Fatal("Need --deploy or --src argument.")
}
buildcmd := c.String("buildcmd")
// create new package in the same namespace as the function.
pkgMetadata = createPackage(client, fnNamespace, envName, envNamespace, srcArchiveName, deployArchiveName, buildcmd, specFile, codeFlag)
pkgMetadata = createPackage(client, fnNamespace, envName, envNamespace, srcArchiveFiles, deployArchiveFiles, buildcmd, specDir, specFile, noZip)
fmt.Printf("package '%v' created\n", pkgMetadata.Name)
}
@@ -471,17 +472,17 @@ func fnUpdate(c *cli.Context) error {
envNamespace = ""
}
var deployArchiveName []string
var deployArchiveFiles []string
codeFlag := false
code := c.String("code")
if len(code) == 0 {
deployArchiveName = c.StringSlice("deploy")
deployArchiveFiles = c.StringSlice("deploy")
} else {
deployArchiveName = append(deployArchiveName, c.String("code"))
deployArchiveFiles = append(deployArchiveFiles, c.String("code"))
codeFlag = true
}
srcArchiveName := c.StringSlice("src")
srcArchiveFiles := c.StringSlice("src")
pkgName := c.String("pkg")
entrypoint := c.String("entrypoint")
buildcmd := c.String("buildcmd")
@@ -490,7 +491,7 @@ func fnUpdate(c *cli.Context) error {
secretName := c.String("secret")
cfgMapName := c.String("configmap")
if len(srcArchiveName) > 0 && len(deployArchiveName) > 0 {
if len(srcArchiveFiles) > 0 && len(deployArchiveFiles) > 0 {
log.Fatal("Need either of --src or --deploy and not both arguments.")
}
@@ -566,7 +567,7 @@ func fnUpdate(c *cli.Context) error {
pkgMetadata := &pkg.Metadata
if len(deployArchiveName) != 0 || len(srcArchiveName) != 0 || len(buildcmd) != 0 || len(envName) != 0 || len(envNamespace) != 0 {
if len(deployArchiveFiles) != 0 || len(srcArchiveFiles) != 0 || len(buildcmd) != 0 || len(envName) != 0 || len(envNamespace) != 0 {
fnList, err := getFunctionsByPackage(client, pkg.Metadata.Name, pkg.Metadata.Namespace)
util.CheckErr(err, "get function list")
@@ -574,7 +575,7 @@ func fnUpdate(c *cli.Context) error {
log.Fatal("Package is used by multiple functions, use --force to force update")
}
pkgMetadata, err = updatePackage(client, pkg, envName, envNamespace, srcArchiveName, deployArchiveName, buildcmd, false, codeFlag)
pkgMetadata, err = updatePackage(client, pkg, envName, envNamespace, srcArchiveFiles, deployArchiveFiles, buildcmd, false, codeFlag)
util.CheckErr(err, fmt.Sprintf("update package '%v'", pkgName))
fmt.Printf("package '%v' updated\n", pkgMetadata.GetName())