mv error to storage,warp error

Signed-off-by: Weiping Cai <weiping.cai@daocloud.io>
pull/8331/head
Weiping Cai 5 years ago
parent 4d45bcb35c
commit bd454fb427
No known key found for this signature in database
GPG Key ID: 97CBE6D7C8EBC386

@ -17,7 +17,6 @@ limitations under the License.
package main
import (
"bytes"
"fmt"
"io"
"time"
@ -193,10 +192,6 @@ func runInstall(args []string, client *action.Install, valueOpts *values.Options
return nil, err
}
if _, err := isLimitSize(chartRequested.Raw); err != nil {
return nil, err
}
if chartRequested.Metadata.Deprecated {
fmt.Fprintln(out, "WARNING: This chart is deprecated")
}
@ -245,20 +240,6 @@ func isChartInstallable(ch *chart.Chart) (bool, error) {
return false, errors.Errorf("%s charts are not installable", ch.Metadata.Type)
}
// It is to limit the total size of the template file to 3m, and the content of files over 3m should not be allowed to be installed.
//
// This is because the server requires the requestbody to be less than 3m when creating secrets.For details, please refer to: https://github.com/kubernetes/kubernetes/blob/release-1.18/staging/src/k8s.io/apiserver/pkg/server/config.go#L323
func isLimitSize(raw []*chart.File) (bool, error) {
totalSize := int64(0)
for _, r := range raw {
totalSize += int64(bytes.Count(r.Data, []byte("")))
}
if totalSize < int64(3 * 1024 * 1024) {
return true, nil
}
return false,errors.Errorf("Chart package too large, limit is 3MB.")
}
// Provide dynamic auto-completion for the install and template commands
func compInstall(args []string, toComplete string, client *action.Install) ([]string, completion.BashCompDirective) {
requiredArgs := 1

@ -166,6 +166,8 @@ func (cfgmaps *ConfigMaps) Create(key string, rls *rspb.Release) error {
if _, err := cfgmaps.impl.Create(context.Background(), obj, metav1.CreateOptions{}); err != nil {
if apierrors.IsAlreadyExists(err) {
return ErrReleaseExists
}else if apierrors.IsRequestEntityTooLargeError(err){
return ErrPackageTooLarge
}
cfgmaps.Log("create: failed to create: %s", err)

@ -29,6 +29,8 @@ var (
ErrReleaseNotFound = errors.New("release: not found")
// ErrReleaseExists indicates that a release already exists.
ErrReleaseExists = errors.New("release: already exists")
// ErrPackageTooLarge indicates that package too large,because of storage limit,reference: https://github.com/kubernetes/kubernetes/blob/release-1.18/staging/src/k8s.io/apiserver/pkg/server/config.go#L323
ErrPackageTooLarge = errors.New("Chart package too large,storage limit is 3145728")
// ErrInvalidKey indicates that a release key could not be parsed.
ErrInvalidKey = errors.New("release: invalid key")
// ErrNoDeployedReleases indicates that there are no releases with the given key in the deployed state

@ -156,6 +156,8 @@ func (secrets *Secrets) Create(key string, rls *rspb.Release) error {
if _, err := secrets.impl.Create(context.Background(), obj, metav1.CreateOptions{}); err != nil {
if apierrors.IsAlreadyExists(err) {
return ErrReleaseExists
}else if apierrors.IsRequestEntityTooLargeError(err){
return ErrPackageTooLarge
}
return errors.Wrap(err, "create: failed to create")
@ -179,6 +181,11 @@ func (secrets *Secrets) Update(key string, rls *rspb.Release) error {
}
// push the secret object out into the kubiverse
_, err = secrets.impl.Update(context.Background(), obj, metav1.UpdateOptions{})
if apierrors.IsRequestEntityTooLargeError(err){
return ErrPackageTooLarge
}
return errors.Wrap(err, "update: failed to update")
}

Loading…
Cancel
Save