Remove github.com/pkg/errors with appropriate replacements (#3172)

* errors.Wrap* removal

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* remove errors.Errorf

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Remove remaining calls

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Few more errors

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Fix golint errors

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

---------

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
This commit is contained in:
Sanket Sudake
2025-02-20 08:58:37 +05:30
committed by GitHub
parent 2fd44174ce
commit caffed92f4
113 changed files with 585 additions and 588 deletions
+4
View File
@@ -14,6 +14,10 @@ on:
permissions: permissions:
contents: read contents: read
concurrency:
group: fission-codeql-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
CodeQL-Build: CodeQL-Build:
permissions: permissions:
+4
View File
@@ -12,6 +12,10 @@ on: [pull_request]
permissions: permissions:
contents: read contents: read
concurrency:
group: fission-dependency-review-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
dependency-review: dependency-review:
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
+4
View File
@@ -23,6 +23,10 @@ env:
permissions: permissions:
contents: read contents: read
concurrency:
group: fission-lint-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
lint: lint:
permissions: permissions:
+4
View File
@@ -29,6 +29,10 @@ env:
permissions: permissions:
contents: read contents: read
concurrency:
group: fission-ci-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
# Job to run change detection # Job to run change detection
integration-test: integration-test:
+4
View File
@@ -29,6 +29,10 @@ env:
permissions: permissions:
contents: read contents: read
concurrency:
group: fission-upgrade-test-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
upgrade-test: upgrade-test:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
+3 -2
View File
@@ -28,8 +28,9 @@ linters:
# - gocritic # - gocritic
linters-settings: linters-settings:
errcheck: errcheck:
ignore: go.uber.org/zap:Sync exclude-functions:
- (*go.uber.org/zap.Logger).Sync
goimports: goimports:
# put imports beginning with prefix after 3rd-party packages; # put imports beginning with prefix after 3rd-party packages;
# it's a comma-separated list of prefixes # it's a comma-separated list of prefixes
local: github.com/fission/fission local-prefixes: github.com/fission/fission
+2 -3
View File
@@ -24,7 +24,6 @@ import (
"strings" "strings"
"time" "time"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -41,12 +40,12 @@ import (
func Start(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, mgr manager.Interface, routerUrl string) error { func Start(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, mgr manager.Interface, routerUrl string) error {
fissionClient, err := clientGen.GetFissionClient() fissionClient, err := clientGen.GetFissionClient()
if err != nil { if err != nil {
return errors.Wrap(err, "failed to get fission client") return fmt.Errorf("failed to get fission client: %w", err)
} }
err = crd.WaitForFunctionCRDs(ctx, logger, fissionClient) err = crd.WaitForFunctionCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
return errors.Wrap(err, "error waiting for CRDs") return fmt.Errorf("error waiting for CRDs: %w", err)
} }
mqType := (fv1.MessageQueueType)(os.Getenv("MESSAGE_QUEUE_TYPE")) mqType := (fv1.MessageQueueType)(os.Getenv("MESSAGE_QUEUE_TYPE"))
+3 -2
View File
@@ -14,7 +14,8 @@ limitations under the License.
package app package app
import ( import (
"github.com/pkg/errors" "fmt"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -65,7 +66,7 @@ func App(clientOptions cmd.ClientOptions) *cobra.Command {
// } // }
client, err := cmd.NewClient(clientOptions) client, err := cmd.NewClient(clientOptions)
if err != nil { if err != nil {
return errors.Wrap(err, "failed to get fission client") return fmt.Errorf("failed to get fission client: %w", err)
} }
cmd.SetClientset(*client) cmd.SetClientset(*client)
return nil return nil
+1 -1
View File
@@ -25,7 +25,6 @@ require (
github.com/mholt/archives v0.1.0 github.com/mholt/archives v0.1.0
github.com/minio/minio-go v6.0.14+incompatible github.com/minio/minio-go v6.0.14+incompatible
github.com/ory/dockertest v3.3.5+incompatible github.com/ory/dockertest v3.3.5+incompatible
github.com/pkg/errors v0.9.1
github.com/prometheus/client_golang v1.20.5 github.com/prometheus/client_golang v1.20.5
github.com/prometheus/common v0.62.0 github.com/prometheus/common v0.62.0
github.com/robfig/cron/v3 v3.0.1 github.com/robfig/cron/v3 v3.0.1
@@ -217,6 +216,7 @@ require (
github.com/pierrec/lz4/v4 v4.1.22 // indirect github.com/pierrec/lz4/v4 v4.1.22 // indirect
github.com/pires/go-proxyproto v0.8.0 // indirect github.com/pires/go-proxyproto v0.8.0 // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect
+1 -1
View File
@@ -21,7 +21,7 @@ limitations under the License.
package v1 package v1
import ( import (
"k8s.io/api/autoscaling/v2" v2 "k8s.io/api/autoscaling/v2"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
runtime "k8s.io/apimachinery/pkg/runtime" runtime "k8s.io/apimachinery/pkg/runtime"
) )
+6 -7
View File
@@ -31,7 +31,6 @@ import (
"time" "time"
"github.com/dchest/uniuri" "github.com/dchest/uniuri"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
"github.com/fission/fission/pkg/info" "github.com/fission/fission/pkg/info"
@@ -206,7 +205,7 @@ func (builder *Builder) reply(ctx context.Context, w http.ResponseWriter, pkgFil
rBody, err := json.Marshal(resp) rBody, err := json.Marshal(resp)
if err != nil { if err != nil {
e := errors.Wrap(err, "error encoding response body") e := fmt.Errorf("error encoding response body: %w", err)
rBody = []byte(fmt.Sprintf(`{"buildLogs": "%s"}`, e.Error())) rBody = []byte(fmt.Sprintf(`{"buildLogs": "%s"}`, e.Error()))
statusCode = http.StatusInternalServerError statusCode = http.StatusInternalServerError
} }
@@ -247,12 +246,12 @@ func (builder *Builder) build(ctx context.Context, command string, args []string
stdout, err := cmd.StdoutPipe() stdout, err := cmd.StdoutPipe()
if err != nil { if err != nil {
return "", errors.Wrap(err, "error creating stdout pipe for cmd") return "", fmt.Errorf("error creating stdout pipe for cmd: %w", err)
} }
stderr, err := cmd.StderrPipe() stderr, err := cmd.StderrPipe()
if err != nil { if err != nil {
return "", errors.Wrap(err, "error creating stderr pipe for cmd") return "", fmt.Errorf("error creating stderr pipe for cmd: %w", err)
} }
// Init logs // Init logs
@@ -263,7 +262,7 @@ func (builder *Builder) build(ctx context.Context, command string, args []string
err = cmd.Start() err = cmd.Start()
if err != nil { if err != nil {
return "", errors.Wrap(err, "error starting cmd") return "", fmt.Errorf("error starting cmd: %w", err)
} }
fmt.Printf("========= START =========\n") fmt.Printf("========= START =========\n")
defer fmt.Printf("========= END ===========\n") defer fmt.Printf("========= END ===========\n")
@@ -276,14 +275,14 @@ func (builder *Builder) build(ctx context.Context, command string, args []string
} }
if err := scanner.Err(); err != nil { if err := scanner.Err(); err != nil {
scanErr := errors.Wrap(err, "error reading cmd output") scanErr := fmt.Errorf("error reading cmd output: %w", err)
fmt.Println(scanErr) fmt.Println(scanErr)
return buildLogs, scanErr return buildLogs, scanErr
} }
err = cmd.Wait() err = cmd.Wait()
if err != nil { if err != nil {
cmdErr := errors.Wrapf(err, "error waiting for cmd %q", command) cmdErr := fmt.Errorf("error waiting for cmd %q: %w", command, err)
fmt.Println(cmdErr) fmt.Println(cmdErr)
return buildLogs, cmdErr return buildLogs, cmdErr
} }
+6 -6
View File
@@ -20,12 +20,12 @@ import (
"bytes" "bytes"
"context" "context"
"encoding/json" "encoding/json"
"fmt"
"io" "io"
"net/http" "net/http"
"strings" "strings"
"github.com/hashicorp/go-retryablehttp" "github.com/hashicorp/go-retryablehttp"
"github.com/pkg/errors"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"go.uber.org/zap" "go.uber.org/zap"
"golang.org/x/net/context/ctxhttp" "golang.org/x/net/context/ctxhttp"
@@ -68,26 +68,26 @@ func (c *client) Build(ctx context.Context, req *builder.PackageBuildRequest) (*
body, err := json.Marshal(req) body, err := json.Marshal(req)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error marshaling json") return nil, fmt.Errorf("error marshaling json: %w", err)
} }
resp, err := ctxhttp.Post(ctx, c.httpClient.StandardClient(), c.url, "application/json", bytes.NewReader(body)) resp, err := ctxhttp.Post(ctx, c.httpClient.StandardClient(), c.url, "application/json", bytes.NewReader(body))
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("error sending request: %w", err)
} }
defer resp.Body.Close() defer resp.Body.Close()
rBody, err := io.ReadAll(resp.Body) rBody, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
logger.Error("error reading resp body", zap.Error(err)) logger.Error("error reading resp body", zap.Error(err))
return nil, err return nil, fmt.Errorf("error reading response body: %w", err)
} }
pkgBuildResp := builder.PackageBuildResponse{} pkgBuildResp := builder.PackageBuildResponse{}
err = json.Unmarshal(rBody, &pkgBuildResp) err = json.Unmarshal(rBody, &pkgBuildResp)
if err != nil { if err != nil {
logger.Error("error parsing resp body", zap.Error(err)) logger.Error("error parsing resp body", zap.Error(err))
return nil, err return nil, fmt.Errorf("error parsing response body: %w", err)
} }
return &pkgBuildResp, ferror.MakeErrorFromHTTP(resp) return &pkgBuildResp, ferror.MakeErrorFromHTTP(resp)
@@ -98,7 +98,7 @@ func (c *client) Clean(ctx context.Context, srcPkgFilename string) error {
req, err := http.NewRequest(http.MethodDelete, c.getCleanUrl(srcPkgFilename), http.NoBody) req, err := http.NewRequest(http.MethodDelete, c.getCleanUrl(srcPkgFilename), http.NoBody)
if err != nil { if err != nil {
return errors.Wrap(err, "failed to create http request for clean api") return fmt.Errorf("error creating http request: %w", err)
} }
resp, err := ctxhttp.Do(ctx, c.httpClient.StandardClient(), req) resp, err := ctxhttp.Do(ctx, c.httpClient.StandardClient(), req)
+5 -5
View File
@@ -18,10 +18,10 @@ package buildermgr
import ( import (
"context" "context"
"fmt"
"os" "os"
"time" "time"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -38,21 +38,21 @@ func Start(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *
fissionClient, err := clientGen.GetFissionClient() fissionClient, err := clientGen.GetFissionClient()
if err != nil { if err != nil {
return errors.Wrap(err, "failed to get fission client") return fmt.Errorf("failed to get fission client: %w", err)
} }
kubernetesClient, err := clientGen.GetKubernetesClient() kubernetesClient, err := clientGen.GetKubernetesClient()
if err != nil { if err != nil {
return errors.Wrap(err, "failed to get kubernetes client") return fmt.Errorf("failed to get kubernetes client: %w", err)
} }
err = crd.WaitForFunctionCRDs(ctx, logger, fissionClient) err = crd.WaitForFunctionCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
return errors.Wrap(err, "error waiting for CRDs") return fmt.Errorf("error waiting for CRDs: %w", err)
} }
fetcherConfig, err := fetcherConfig.MakeFetcherConfig("/packages") fetcherConfig, err := fetcherConfig.MakeFetcherConfig("/packages")
if err != nil { if err != nil {
return errors.Wrap(err, "error making fetcher config") return fmt.Errorf("error making fetcher config: %w", err)
} }
podSpecPatch, err := util.GetSpecFromConfigMap(fv1.BuilderPodSpecPath) podSpecPatch, err := util.GetSpecFromConfigMap(fv1.BuilderPodSpecPath)
+1 -2
View File
@@ -24,7 +24,6 @@ import (
"time" "time"
"github.com/dchest/uniuri" "github.com/dchest/uniuri"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -162,7 +161,7 @@ func updatePackage(ctx context.Context, logger *zap.Logger, fissionClient versio
if err != nil { if err != nil {
e := "error updating package" e := "error updating package"
logger.Error(e, zap.Error(err)) logger.Error(e, zap.Error(err))
return nil, errors.Wrap(err, e) return nil, fmt.Errorf("%s: %w", e, err)
} }
// return resource version for function to update function package ref // return resource version for function to update function package ref
+2 -2
View File
@@ -18,8 +18,8 @@ package canaryconfigmgr
import ( import (
"context" "context"
"fmt"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
@@ -47,7 +47,7 @@ func ConfigureFeatures(ctx context.Context, logger *zap.Logger, unitTestMode boo
// in the future when new optional features are added, we need to add corresponding feature handlers and invoke them here // in the future when new optional features are added, we need to add corresponding feature handlers and invoke them here
canaryCfgMgr, err := MakeCanaryConfigMgr(ctx, logger, fissionClient, kubeClient, featureConfig.CanaryConfig.PrometheusSvc) canaryCfgMgr, err := MakeCanaryConfigMgr(ctx, logger, fissionClient, kubeClient, featureConfig.CanaryConfig.PrometheusSvc)
if err != nil { if err != nil {
return errors.Wrap(err, "failed to start canary config manager") return fmt.Errorf("failed to start canary config manager: %w", err)
} }
canaryCfgMgr.Run(ctx, mgr) canaryCfgMgr.Run(ctx, mgr)
+6 -7
View File
@@ -21,7 +21,6 @@ import (
"fmt" "fmt"
"time" "time"
"github.com/pkg/errors"
prometheus "github.com/prometheus/client_golang/api" prometheus "github.com/prometheus/client_golang/api"
prometheusv1 "github.com/prometheus/client_golang/api/prometheus/v1" prometheusv1 "github.com/prometheus/client_golang/api/prometheus/v1"
"github.com/prometheus/common/model" "github.com/prometheus/common/model"
@@ -40,7 +39,7 @@ func MakePrometheusClient(logger *zap.Logger, prometheusSvc string) (*Prometheus
promApiClient, err := prometheus.NewClient(promApiConfig) promApiClient, err := prometheus.NewClient(promApiConfig)
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "error creating prometheus api client for svc: %s", prometheusSvc) return nil, fmt.Errorf("error creating prometheus api client for svc: %s: %w", prometheusSvc, err)
} }
apiQueryClient := prometheusv1.NewAPI(promApiClient) apiQueryClient := prometheusv1.NewAPI(promApiClient)
@@ -91,14 +90,14 @@ func (promApiClient *PrometheusApiClient) GetRequestsToFuncInWindow(ctx context.
reqs, err := promApiClient.executeQuery(ctx, queryString) reqs, err := promApiClient.executeQuery(ctx, queryString)
if err != nil { if err != nil {
return 0, errors.Wrapf(err, "error executing query: %s", queryString) return 0, fmt.Errorf("error executing query %s: %w", queryString, err)
} }
queryString = fmt.Sprintf("fission_function_calls_total{%s} offset %v", queryLabels, window) queryString = fmt.Sprintf("fission_function_calls_total{%s} offset %v", queryLabels, window)
reqsInPrevWindow, err := promApiClient.executeQuery(ctx, queryString) reqsInPrevWindow, err := promApiClient.executeQuery(ctx, queryString)
if err != nil { if err != nil {
return 0, errors.Wrapf(err, "error executing query: %s", queryString) return 0, fmt.Errorf("error executing query %s: %w", queryString, err)
} }
reqsInCurrentWindow := reqs - reqsInPrevWindow reqsInCurrentWindow := reqs - reqsInPrevWindow
@@ -117,14 +116,14 @@ func (promApiClient *PrometheusApiClient) GetTotalFailedRequestsToFuncInWindow(c
failedRequests, err := promApiClient.executeQuery(ctx, queryString) failedRequests, err := promApiClient.executeQuery(ctx, queryString)
if err != nil { if err != nil {
return 0, errors.Wrapf(err, "error executing query: %s", queryString) return 0, fmt.Errorf("error executing query %s: %w", queryString, err)
} }
queryString = fmt.Sprintf("fission_function_errors_total{%s} offset %v", queryLabels, window) queryString = fmt.Sprintf("fission_function_errors_total{%s} offset %v", queryLabels, window)
failedReqsInPrevWindow, err := promApiClient.executeQuery(ctx, queryString) failedReqsInPrevWindow, err := promApiClient.executeQuery(ctx, queryString)
if err != nil { if err != nil {
return 0, errors.Wrapf(err, "error executing query: %s", queryString) return 0, fmt.Errorf("error executing query %s: %w", queryString, err)
} }
failedReqsInCurrentWindow := failedRequests - failedReqsInPrevWindow failedReqsInCurrentWindow := failedRequests - failedReqsInPrevWindow
@@ -142,7 +141,7 @@ func (promApiClient *PrometheusApiClient) executeQuery(ctx context.Context, quer
val, warn, err := promApiClient.client.Query(ctx, queryString, time.Now()) val, warn, err := promApiClient.client.Query(ctx, queryString, time.Now())
if err != nil { if err != nil {
return 0, errors.Wrapf(err, "error querying prometheus") return 0, fmt.Errorf("error querying prometheus: %w", err)
} }
if warn != nil { if warn != nil {
+1 -1
View File
@@ -21,6 +21,7 @@ import (
"fmt" "fmt"
"time" "time"
kedaClient "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned"
"go.uber.org/zap" "go.uber.org/zap"
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -32,7 +33,6 @@ import (
"github.com/fission/fission/pkg/generated/clientset/versioned" "github.com/fission/fission/pkg/generated/clientset/versioned"
"github.com/fission/fission/pkg/utils" "github.com/fission/fission/pkg/utils"
kedaClient "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned"
) )
const ( const (
+8 -8
View File
@@ -1,20 +1,20 @@
package error package error
import ( import (
"fmt"
"net/http" "net/http"
"testing" "testing"
"github.com/pkg/errors"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
func TestIsNotFound(t *testing.T) { func TestIsNotFound(t *testing.T) {
errs := map[error]bool{ errs := map[error]bool{
nil: false, nil: false,
MakeError(ErrorNotFound, "someone not found"): true, MakeError(ErrorNotFound, "someone not found"): true,
MakeError(ErrorTooManyRequests, "too many requests"): false, MakeError(ErrorTooManyRequests, "too many requests"): false,
errors.Wrap(MakeError(ErrorNotFound, "someone not found"), "other information"): true, fmt.Errorf("other information: %w", MakeError(ErrorNotFound, "someone not found")): true,
errors.Wrap(MakeError(ErrorTooManyRequests, "too many requests"), "other information"): false, fmt.Errorf("other information: %w", MakeError(ErrorTooManyRequests, "too many requests")): false,
} }
for err, want := range errs { for err, want := range errs {
@@ -25,9 +25,9 @@ func TestIsNotFound(t *testing.T) {
func TestGetHTTPError(t *testing.T) { func TestGetHTTPError(t *testing.T) {
errs := map[int]error{ errs := map[int]error{
http.StatusBadRequest: MakeError(ErrorInvalidArgument, ""), http.StatusBadRequest: MakeError(ErrorInvalidArgument, ""),
http.StatusConflict: errors.Wrap(MakeError(ErrorNameExists, ""), ""), http.StatusConflict: fmt.Errorf("%w", MakeError(ErrorNameExists, "")),
http.StatusNotFound: errors.Wrap(MakeError(ErrorNotFound, ""), ""), http.StatusNotFound: fmt.Errorf("%w", MakeError(ErrorNotFound, "")),
http.StatusTooManyRequests: errors.Wrap(MakeError(ErrorTooManyRequests, "too many requests"), "other information"), http.StatusTooManyRequests: fmt.Errorf("other information: %w", MakeError(ErrorTooManyRequests, "too many requests")),
} }
for want, err := range errs { for want, err := range errs {
code, _ := GetHTTPError(err) code, _ := GetHTTPError(err)
+9 -9
View File
@@ -20,13 +20,13 @@ import (
"bytes" "bytes"
"context" "context"
"encoding/json" "encoding/json"
"fmt"
"io" "io"
"net/url" "net/url"
"strings" "strings"
"time" "time"
"github.com/hashicorp/go-retryablehttp" "github.com/hashicorp/go-retryablehttp"
"github.com/pkg/errors"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"go.uber.org/zap" "go.uber.org/zap"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -80,18 +80,18 @@ func (c *client) GetServiceForFunction(ctx context.Context, fn *fv1.Function) (s
body, err := json.Marshal(fn) body, err := json.Marshal(fn)
if err != nil { if err != nil {
return "", errors.Wrap(err, "could not marshal request body for getting service for function") return "", fmt.Errorf("could not marshal request body for getting service for function: %w", err)
} }
req, err := retryablehttp.NewRequestWithContext(ctx, "POST", executorURL, bytes.NewReader(body)) req, err := retryablehttp.NewRequestWithContext(ctx, "POST", executorURL, bytes.NewReader(body))
if err != nil { if err != nil {
return "", errors.Wrap(err, "could not create request for getting service for function") return "", fmt.Errorf("could not create request for getting service for function: %w", err)
} }
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
resp, err := c.httpClient.Do(req) resp, err := c.httpClient.Do(req)
if err != nil { if err != nil {
return "", errors.Wrap(err, "error posting to getting service for function") return "", fmt.Errorf("error posting to getting service for function: %w", err)
} }
defer resp.Body.Close() defer resp.Body.Close()
@@ -101,7 +101,7 @@ func (c *client) GetServiceForFunction(ctx context.Context, fn *fv1.Function) (s
svcName, err := io.ReadAll(resp.Body) svcName, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return "", errors.Wrap(err, "error reading response body from getting service for function") return "", fmt.Errorf("error reading response body from getting service for function: %w", err)
} }
return string(svcName), nil return string(svcName), nil
@@ -118,17 +118,17 @@ func (c *client) UnTapService(ctx context.Context, fnMeta metav1.ObjectMeta, exe
body, err := json.Marshal(tapSvc) body, err := json.Marshal(tapSvc)
if err != nil { if err != nil {
return errors.Wrap(err, "could not marshal request body for getting service for function") return fmt.Errorf("could not marshal request body for getting service for function: %w", err)
} }
req, err := retryablehttp.NewRequestWithContext(ctx, "POST", url, bytes.NewReader(body)) req, err := retryablehttp.NewRequestWithContext(ctx, "POST", url, bytes.NewReader(body))
if err != nil { if err != nil {
return errors.Wrap(err, "could not create request for untap service for function") return fmt.Errorf("could not create request for untap service for function: %w", err)
} }
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
resp, err := c.httpClient.Do(req) resp, err := c.httpClient.Do(req)
if err != nil { if err != nil {
return errors.Wrap(err, "error posting to getting service for function") return fmt.Errorf("error posting to getting service for function: %w", err)
} }
defer resp.Body.Close() defer resp.Body.Close()
@@ -194,7 +194,7 @@ func (c *client) _tapService(ctx context.Context, tapSvcReqs []TapServiceRequest
req, err := retryablehttp.NewRequestWithContext(ctx, "POST", executorURL, bytes.NewReader(body)) req, err := retryablehttp.NewRequestWithContext(ctx, "POST", executorURL, bytes.NewReader(body))
if err != nil { if err != nil {
return errors.Wrap(err, "could not create request for tap service request") return fmt.Errorf("could not create request for tap service request: %w", err)
} }
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
+2 -2
View File
@@ -18,8 +18,8 @@ package cms
import ( import (
"context" "context"
"fmt"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/cache"
@@ -72,7 +72,7 @@ func refreshPods(ctx context.Context, logger *zap.Logger, funcs []fv1.Function,
if exists { if exists {
err = et.RefreshFuncPods(ctx, logger, f) err = et.RefreshFuncPods(ctx, logger, f)
} else { } else {
err = errors.Errorf("Unknown executor type '%s'", f.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType) err = fmt.Errorf("Unknown executor type '%s'", f.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType)
} }
if err != nil { if err != nil {
+11 -12
View File
@@ -26,7 +26,6 @@ import (
"time" "time"
"github.com/dchest/uniuri" "github.com/dchest/uniuri"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
k8sCache "k8s.io/client-go/tools/cache" k8sCache "k8s.io/client-go/tools/cache"
@@ -213,7 +212,7 @@ func (executor *Executor) serveCreateFuncServices(ctx context.Context) {
// It normally happened if there are multiple requests are // It normally happened if there are multiple requests are
// waiting for the same function and executor failed to cre- // waiting for the same function and executor failed to cre-
// ate service for function. // ate service for function.
err = errors.Wrapf(err, "error getting service for function %s", fnName) err = fmt.Errorf("error getting service for function %s: %w", fnName, err)
req.respChan <- &createFuncServiceResponse{ req.respChan <- &createFuncServiceResponse{
funcSvc: fsvc, funcSvc: fsvc,
err: err, err: err,
@@ -233,7 +232,7 @@ func (executor *Executor) createServiceForFunction(ctx context.Context, fn *fv1.
t := fn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType t := fn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType
e, ok := executor.executorTypes[t] e, ok := executor.executorTypes[t]
if !ok { if !ok {
return nil, errors.Errorf("Unknown executor type '%s'", t) return nil, fmt.Errorf("Unknown executor type '%s'", t)
} }
fsvc, fsvcErr := e.GetFuncSvc(ctx, fn) fsvc, fsvcErr := e.GetFuncSvc(ctx, fn)
@@ -243,7 +242,7 @@ func (executor *Executor) createServiceForFunction(ctx context.Context, fn *fv1.
zap.Error(fsvcErr), zap.Error(fsvcErr),
zap.String("function_name", fn.ObjectMeta.Name), zap.String("function_name", fn.ObjectMeta.Name),
zap.String("function_namespace", fn.ObjectMeta.Namespace)) zap.String("function_namespace", fn.ObjectMeta.Namespace))
fsvcErr = errors.Wrap(fsvcErr, fmt.Sprintf("[%s] %s", fn.ObjectMeta.Name, e)) fsvcErr = fmt.Errorf("[%s] %s: %w", fn.ObjectMeta.Name, e, fsvcErr)
} }
return fsvc, fsvcErr return fsvc, fsvcErr
@@ -254,7 +253,7 @@ func (executor *Executor) getFunctionServiceFromCache(ctx context.Context, fn *f
t := fn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType t := fn.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType
e, ok := executor.executorTypes[t] e, ok := executor.executorTypes[t]
if !ok { if !ok {
return nil, errors.Errorf("Unknown executor type '%s'", t) return nil, fmt.Errorf("Unknown executor type '%s'", t)
} }
return e.GetFuncSvcFromCache(ctx, fn) return e.GetFuncSvcFromCache(ctx, fn)
} }
@@ -265,11 +264,11 @@ func StartExecutor(ctx context.Context, clientGen crd.ClientGeneratorInterface,
fissionClient, err := clientGen.GetFissionClient() fissionClient, err := clientGen.GetFissionClient()
if err != nil { if err != nil {
return errors.Wrap(err, "error making the fission client") return fmt.Errorf("error making the fission client: %w", err)
} }
kubernetesClient, err := clientGen.GetKubernetesClient() kubernetesClient, err := clientGen.GetKubernetesClient()
if err != nil { if err != nil {
return errors.Wrap(err, "error making the kube client") return fmt.Errorf("error making the kube client: %w", err)
} }
metricsClient, err := clientGen.GetMetricsClient() metricsClient, err := clientGen.GetMetricsClient()
if err != nil { if err != nil {
@@ -278,12 +277,12 @@ func StartExecutor(ctx context.Context, clientGen crd.ClientGeneratorInterface,
err = crd.WaitForFunctionCRDs(ctx, logger, fissionClient) err = crd.WaitForFunctionCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
return errors.Wrap(err, "error waiting for CRDs") return fmt.Errorf("error waiting for CRDs: %w", err)
} }
fetcherConfig, err := fetcherConfig.MakeFetcherConfig("/userfunc") fetcherConfig, err := fetcherConfig.MakeFetcherConfig("/userfunc")
if err != nil { if err != nil {
return errors.Wrap(err, "Error making fetcher config") return fmt.Errorf("Error making fetcher config: %w", err)
} }
executorInstanceID := strings.ToLower(uniuri.NewLen(8)) executorInstanceID := strings.ToLower(uniuri.NewLen(8))
@@ -312,7 +311,7 @@ func StartExecutor(ctx context.Context, clientGen crd.ClientGeneratorInterface,
finformerFactory, finformerFactory,
gpmInformerFactory, podSpecPatch) gpmInformerFactory, podSpecPatch)
if err != nil { if err != nil {
return errors.Wrap(err, "pool manager creation failed") return fmt.Errorf("pool manager creation failed: %w", err)
} }
executorLabel, err = utils.GetInformerLabelByExecutor(fv1.ExecutorTypeNewdeploy) executorLabel, err = utils.GetInformerLabelByExecutor(fv1.ExecutorTypeNewdeploy)
@@ -327,7 +326,7 @@ func StartExecutor(ctx context.Context, clientGen crd.ClientGeneratorInterface,
finformerFactory, finformerFactory,
ndmInformerFactory, podSpecPatch) ndmInformerFactory, podSpecPatch)
if err != nil { if err != nil {
return errors.Wrap(err, "new deploy manager creation failed") return fmt.Errorf("new deploy manager creation failed: %w", err)
} }
executorLabel, err = utils.GetInformerLabelByExecutor(fv1.ExecutorTypeContainer) executorLabel, err = utils.GetInformerLabelByExecutor(fv1.ExecutorTypeContainer)
@@ -341,7 +340,7 @@ func StartExecutor(ctx context.Context, clientGen crd.ClientGeneratorInterface,
executorInstanceID, finformerFactory, executorInstanceID, finformerFactory,
cnmInformerFactory) cnmInformerFactory)
if err != nil { if err != nil {
return errors.Wrap(err, "container manager creation failed") return fmt.Errorf("container manager creation failed: %w", err)
} }
executorTypes := make(map[fv1.ExecutorType]executortype.ExecutorType) executorTypes := make(map[fv1.ExecutorType]executortype.ExecutorType)
+6 -6
View File
@@ -19,6 +19,7 @@ package poolmgr
import ( import (
"context" "context"
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"math" "math"
"net" "net"
@@ -28,7 +29,6 @@ import (
"time" "time"
"github.com/dchest/uniuri" "github.com/dchest/uniuri"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
appsv1 "k8s.io/api/apps/v1" appsv1 "k8s.io/api/apps/v1"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
@@ -320,7 +320,7 @@ func (gp *GenericPool) choosePod(ctx context.Context, newLabels map[string]strin
// ending retry loop when the request canceled // ending retry loop when the request canceled
gp.readyPodQueue.Done(key) gp.readyPodQueue.Done(key)
gp.readyPodQueue.AddAfter(key, expoDelay) gp.readyPodQueue.AddAfter(key, expoDelay)
return "", nil, errors.Errorf("failed to relabel pod: %s", err) return "", nil, fmt.Errorf("failed to relabel pod: %s", err)
} else if err != nil { } else if err != nil {
logger.Error("failed to relabel pod", zap.Error(err), zap.String("pod", chosenPod.Name), zap.Duration("delay", expoDelay)) logger.Error("failed to relabel pod", zap.Error(err), zap.String("pod", chosenPod.Name), zap.Duration("delay", expoDelay))
gp.readyPodQueue.Done(key) gp.readyPodQueue.Done(key)
@@ -335,13 +335,13 @@ func (gp *GenericPool) choosePod(ctx context.Context, newLabels map[string]strin
// So we have to check both of them to ensure the patch success. // So we have to check both of them to ensure the patch success.
for k, v := range newLabels { for k, v := range newLabels {
if newPod.Labels[k] != v { if newPod.Labels[k] != v {
return "", nil, errors.Errorf("value of necessary labels '%s' mismatch: want '%s', get '%v'", return "", nil, fmt.Errorf("value of necessary labels '%s' mismatch: want '%s', get '%v'",
k, v, newPod.Labels[k]) k, v, newPod.Labels[k])
} }
} }
for k, v := range annotations { for k, v := range annotations {
if newPod.Annotations[k] != v { if newPod.Annotations[k] != v {
return "", nil, errors.Errorf("value of necessary annotations '%s' mismatch: want '%s', get '%v'", return "", nil, fmt.Errorf("value of necessary annotations '%s' mismatch: want '%s', get '%v'",
k, v, newPod.Annotations[k]) k, v, newPod.Annotations[k])
} }
} }
@@ -415,7 +415,7 @@ func (gp *GenericPool) specializePod(ctx context.Context, pod *apiv1.Pod, fn *fv
// for fetcher we don't need to create a service, just talk to the pod directly // for fetcher we don't need to create a service, just talk to the pod directly
podIP := pod.Status.PodIP podIP := pod.Status.PodIP
if len(podIP) == 0 { if len(podIP) == 0 {
return errors.Errorf("Pod %s in namespace %s has no IP", pod.ObjectMeta.Name, pod.ObjectMeta.Namespace) return fmt.Errorf("Pod %s in namespace %s has no IP", pod.ObjectMeta.Name, pod.ObjectMeta.Namespace)
} }
for _, cm := range fn.Spec.ConfigMaps { for _, cm := range fn.Spec.ConfigMaps {
_, err := gp.kubernetesClient.CoreV1().ConfigMaps(gp.fnNamespace).Get(ctx, cm.Name, metav1.GetOptions{}) _, err := gp.kubernetesClient.CoreV1().ConfigMaps(gp.fnNamespace).Get(ctx, cm.Name, metav1.GetOptions{})
@@ -571,7 +571,7 @@ func (gp *GenericPool) getFuncSvc(ctx context.Context, fn *fv1.Function) (*fscac
} }
if svc.ObjectMeta.Name != svcName { if svc.ObjectMeta.Name != svcName {
go gp.scheduleDeletePod(context.Background(), pod.ObjectMeta.Name) go gp.scheduleDeletePod(context.Background(), pod.ObjectMeta.Name)
return nil, errors.Errorf("sanity check failed for svc %s", svc.ObjectMeta.Name) return nil, fmt.Errorf("sanity check failed for svc %s", svc.ObjectMeta.Name)
} }
// the fission router isn't in the same namespace, so return a // the fission router isn't in the same namespace, so return a
+1 -1
View File
@@ -27,7 +27,6 @@ import (
"sync" "sync"
"time" "time"
"github.com/fission/fission/pkg/executor/metrics"
"go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/attribute"
"go.uber.org/zap" "go.uber.org/zap"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
@@ -47,6 +46,7 @@ import (
"github.com/fission/fission/pkg/crd" "github.com/fission/fission/pkg/crd"
"github.com/fission/fission/pkg/executor/executortype" "github.com/fission/fission/pkg/executor/executortype"
"github.com/fission/fission/pkg/executor/fscache" "github.com/fission/fission/pkg/executor/fscache"
"github.com/fission/fission/pkg/executor/metrics"
"github.com/fission/fission/pkg/executor/reaper" "github.com/fission/fission/pkg/executor/reaper"
executorUtils "github.com/fission/fission/pkg/executor/util" executorUtils "github.com/fission/fission/pkg/executor/util"
fetcherConfig "github.com/fission/fission/pkg/fetcher/config" fetcherConfig "github.com/fission/fission/pkg/fetcher/config"
+2 -7
View File
@@ -22,7 +22,6 @@ import (
"sync" "sync"
"time" "time"
"github.com/pkg/errors"
"go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/attribute"
"go.uber.org/zap" "go.uber.org/zap"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
@@ -292,7 +291,7 @@ func (fsc *FunctionServiceCache) Add(fsvc FuncSvc) (*FuncSvc, error) {
if IsNameExistError(err) { if IsNameExistError(err) {
err = nil err = nil
} else { } else {
err = errors.Wrap(err, "error caching fsvc") err = fmt.Errorf("error caching fsvc: %w", err)
} }
return nil, err return nil, err
} }
@@ -304,7 +303,7 @@ func (fsc *FunctionServiceCache) Add(fsvc FuncSvc) (*FuncSvc, error) {
if IsNameExistError(err) { if IsNameExistError(err) {
err = nil err = nil
} else { } else {
err = errors.Wrap(err, "error caching fsvc by function uid") err = fmt.Errorf("error caching fsvc by function uid: %w", err)
} }
return nil, err return nil, err
} }
@@ -383,10 +382,6 @@ func (fsc *FunctionServiceCache) DeleteFunctionSvc(ctx context.Context, fsvc *Fu
} }
} }
func (fsc *FunctionServiceCache) SetCPUUtilization(key crd.CacheKeyURG, svcHost string, cpuUsage resource.Quantity) {
fsc.connFunctionCache.SetCPUUtilization(key, svcHost, cpuUsage)
}
// DeleteOld deletes aged function service entries from cache. // DeleteOld deletes aged function service entries from cache.
func (fsc *FunctionServiceCache) DeleteOld(fsvc *FuncSvc, minAge time.Duration) (bool, error) { func (fsc *FunctionServiceCache) DeleteOld(fsvc *FuncSvc, minAge time.Duration) (bool, error) {
if time.Since(fsvc.Atime) < minAge { if time.Since(fsvc.Atime) < minAge {
+2 -1
View File
@@ -17,8 +17,9 @@ limitations under the License.
package metrics package metrics
import ( import (
"github.com/fission/fission/pkg/utils/metrics"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
"github.com/fission/fission/pkg/utils/metrics"
) )
var ( var (
+1 -1
View File
@@ -23,10 +23,10 @@ import (
"testing" "testing"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
apiv1 "k8s.io/api/core/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
"github.com/fission/fission/pkg/utils/loggerfactory" "github.com/fission/fission/pkg/utils/loggerfactory"
apiv1 "k8s.io/api/core/v1"
) )
func TestGetSpecFromConfigMap(t *testing.T) { func TestGetSpecFromConfigMap(t *testing.T) {
+2 -2
View File
@@ -4,12 +4,12 @@ import (
"bytes" "bytes"
"context" "context"
"encoding/json" "encoding/json"
"fmt"
"io" "io"
"net/http" "net/http"
"strings" "strings"
"time" "time"
"github.com/pkg/errors"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"go.uber.org/zap" "go.uber.org/zap"
"golang.org/x/net/context/ctxhttp" "golang.org/x/net/context/ctxhttp"
@@ -104,7 +104,7 @@ func sendRequest(logger *zap.Logger, ctx context.Context, httpClient *http.Clien
// skip retry and return directly due to context deadline exceeded // skip retry and return directly due to context deadline exceeded
if err == context.DeadlineExceeded { if err == context.DeadlineExceeded {
msg := "error specializing function pod, either increase the specialization timeout for function or check function pod log would help." msg := "error specializing function pod, either increase the specialization timeout for function or check function pod log would help."
err = errors.Wrap(err, msg) err = fmt.Errorf("%s: %w", msg, err)
logger.Error(msg, zap.Error(err), zap.String("url", url)) logger.Error(msg, zap.Error(err), zap.String("url", url))
return nil, err return nil, err
} }
+1 -2
View File
@@ -7,7 +7,6 @@ import (
"path/filepath" "path/filepath"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/pkg/errors"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -305,7 +304,7 @@ func (cfg *Config) addFetcherToPodSpecWithCommand(podSpec *apiv1.PodSpec, mainCo
for _, existingContainer := range podSpec.Containers { for _, existingContainer := range podSpec.Containers {
existingContainerNames = append(existingContainerNames, existingContainer.Name) existingContainerNames = append(existingContainerNames, existingContainer.Name)
} }
return errors.Errorf("could not find main container '%s' in given PodSpec. Found: %v", return fmt.Errorf("could not find main container '%s' in given PodSpec. Found: %v",
mainContainerName, mainContainerName,
existingContainerNames) existingContainerNames)
} }
+27 -27
View File
@@ -20,6 +20,7 @@ import (
"bytes" "bytes"
"context" "context"
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"io" "io"
"net/http" "net/http"
@@ -29,7 +30,6 @@ import (
"time" "time"
"github.com/google/uuid" "github.com/google/uuid"
"github.com/pkg/errors"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"go.uber.org/zap" "go.uber.org/zap"
"golang.org/x/net/context/ctxhttp" "golang.org/x/net/context/ctxhttp"
@@ -92,21 +92,21 @@ func MakeFetcher(logger *zap.Logger, clientGen crd.ClientGeneratorInterface, sha
fissionClient, err := clientGen.GetFissionClient() fissionClient, err := clientGen.GetFissionClient()
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error making the fission client") return nil, fmt.Errorf("error making the fission client: %w", err)
} }
kubeClient, err := clientGen.GetKubernetesClient() kubeClient, err := clientGen.GetKubernetesClient()
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error making the kube client") return nil, fmt.Errorf("error making the kube client: %w", err)
} }
name, err := os.ReadFile(podInfoMountDir + "/name") name, err := os.ReadFile(podInfoMountDir + "/name")
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error reading pod name from downward volume") return nil, fmt.Errorf("error reading pod name from downward volume: %w", err)
} }
namespace, err := os.ReadFile(podInfoMountDir + "/namespace") namespace, err := os.ReadFile(podInfoMountDir + "/namespace")
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error reading pod namespace from downward volume") return nil, fmt.Errorf("error reading pod namespace from downward volume: %w", err)
} }
hc := &http.Client{Transport: otelhttp.NewTransport(http.DefaultTransport)} hc := &http.Client{Transport: otelhttp.NewTransport(http.DefaultTransport)}
@@ -140,7 +140,7 @@ func writeSecretOrConfigMap(dataMap map[string][]byte, dirPath string) error {
writeFilePath := filepath.Join(dirPath, key) writeFilePath := filepath.Join(dirPath, key)
err := os.WriteFile(writeFilePath, val, 0750) err := os.WriteFile(writeFilePath, val, 0750)
if err != nil { if err != nil {
return errors.Wrapf(err, "Failed to write file %s", writeFilePath) return fmt.Errorf("failed to write file %s: %w", writeFilePath, err)
} }
} }
return nil return nil
@@ -255,7 +255,7 @@ func (fetcher *Fetcher) Fetch(ctx context.Context, pkg *fv1.Package, req Functio
storePath, err := utils.SanitizeFilePath(filepath.Join(fetcher.sharedVolumePath, req.Filename), fetcher.sharedVolumePath) storePath, err := utils.SanitizeFilePath(filepath.Join(fetcher.sharedVolumePath, req.Filename), fetcher.sharedVolumePath)
if err != nil { if err != nil {
logger.Error(err.Error(), zap.String("filename", req.Filename)) logger.Error(err.Error(), zap.String("filename", req.Filename))
return http.StatusBadRequest, errors.New(fmt.Sprintf("%s, request: %v", err, req)) return http.StatusBadRequest, fmt.Errorf("%s, request: %v", err, req)
} }
// verify first if the file already exists. // verify first if the file already exists.
@@ -270,7 +270,7 @@ func (fetcher *Fetcher) Fetch(ctx context.Context, pkg *fv1.Package, req Functio
tmpPath, err := utils.SanitizeFilePath(storePath+".tmp", fetcher.sharedVolumePath) tmpPath, err := utils.SanitizeFilePath(storePath+".tmp", fetcher.sharedVolumePath)
if err != nil { if err != nil {
logger.Error(err.Error(), zap.String("filename", req.Filename)) logger.Error(err.Error(), zap.String("filename", req.Filename))
return http.StatusBadRequest, errors.New(fmt.Sprintf("%s, request: %v", err, req)) return http.StatusBadRequest, fmt.Errorf("%s, request: %v", err, req)
} }
if req.FetchType == fv1.FETCH_URL { if req.FetchType == fv1.FETCH_URL {
@@ -284,7 +284,7 @@ func (fetcher *Fetcher) Fetch(ctx context.Context, pkg *fv1.Package, req Functio
if err != nil { if err != nil {
e := "failed to download url" e := "failed to download url"
logger.Error(e, zap.Error(err), zap.String("url", req.Url)) logger.Error(e, zap.Error(err), zap.String("url", req.Url))
return http.StatusBadRequest, errors.Wrapf(err, "%s: %s", e, req.Url) return http.StatusBadRequest, fmt.Errorf("%s: %s: %w", e, req.Url, err)
} }
} else { } else {
var archive *fv1.Archive var archive *fv1.Archive
@@ -301,7 +301,7 @@ func (fetcher *Fetcher) Fetch(ctx context.Context, pkg *fv1.Package, req Functio
zap.String("package_name", pkg.ObjectMeta.Name), zap.String("package_name", pkg.ObjectMeta.Name),
zap.String("package_namespace", pkg.ObjectMeta.Namespace), zap.String("package_namespace", pkg.ObjectMeta.Namespace),
zap.Any("package_build_status", pkg.Status.BuildStatus)) zap.Any("package_build_status", pkg.Status.BuildStatus))
return http.StatusInternalServerError, errors.New(fmt.Sprintf("%s: pkg %s.%s has a status of %s", e, pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace, pkg.Status.BuildStatus)) return http.StatusInternalServerError, fmt.Errorf("%s: pkg %s.%s has a status of %s", e, pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace, pkg.Status.BuildStatus)
} }
archive = &pkg.Spec.Deployment archive = &pkg.Spec.Deployment
} else { } else {
@@ -315,7 +315,7 @@ func (fetcher *Fetcher) Fetch(ctx context.Context, pkg *fv1.Package, req Functio
if err != nil { if err != nil {
e := "failed to write file" e := "failed to write file"
logger.Error(e, zap.Error(err), zap.String("location", tmpPath)) logger.Error(e, zap.Error(err), zap.String("location", tmpPath))
return http.StatusInternalServerError, errors.Wrapf(err, "%s %s", e, tmpPath) return http.StatusInternalServerError, fmt.Errorf("%s %s: %w", e, tmpPath, err)
} }
otelUtils.SpanTrackEvent(ctx, "archiveLiteral", otelUtils.GetAttributesForPackage(pkg)...) otelUtils.SpanTrackEvent(ctx, "archiveLiteral", otelUtils.GetAttributesForPackage(pkg)...)
} else { } else {
@@ -329,7 +329,7 @@ func (fetcher *Fetcher) Fetch(ctx context.Context, pkg *fv1.Package, req Functio
if err != nil { if err != nil {
e := "failed to download url" e := "failed to download url"
logger.Error(e, zap.Error(err), zap.String("url", req.Url)) logger.Error(e, zap.Error(err), zap.String("url", req.Url))
return http.StatusBadRequest, errors.Wrapf(err, "%s %s", e, req.Url) return http.StatusBadRequest, fmt.Errorf("%s %s: %w", e, req.Url, err)
} }
// check file integrity only if checksum is not empty. // check file integrity only if checksum is not empty.
@@ -338,13 +338,13 @@ func (fetcher *Fetcher) Fetch(ctx context.Context, pkg *fv1.Package, req Functio
if err != nil { if err != nil {
e := "failed to get checksum" e := "failed to get checksum"
logger.Error(e, zap.Error(err)) logger.Error(e, zap.Error(err))
return http.StatusBadRequest, errors.Wrap(err, e) return http.StatusBadRequest, fmt.Errorf("%s: %w", e, err)
} }
err = verifyChecksum(checksum, &archive.Checksum) err = verifyChecksum(checksum, &archive.Checksum)
if err != nil { if err != nil {
e := "failed to verify checksum" e := "failed to verify checksum"
logger.Error(e, zap.Error(err)) logger.Error(e, zap.Error(err))
return http.StatusBadRequest, errors.Wrap(err, e) return http.StatusBadRequest, fmt.Errorf("%s: %w", e, err)
} }
} }
} }
@@ -373,7 +373,7 @@ func (fetcher *Fetcher) Fetch(ctx context.Context, pkg *fv1.Package, req Functio
zap.Error(err), zap.Error(err),
zap.String("original_path", tmpPath), zap.String("original_path", tmpPath),
zap.String("rename_path", storePath)) zap.String("rename_path", storePath))
return http.StatusInternalServerError, err return http.StatusInternalServerError, fmt.Errorf("error renaming file: %w", err)
} }
otelUtils.SpanTrackEvent(ctx, "packageFetched", otelUtils.GetAttributesForPackage(pkg)...) otelUtils.SpanTrackEvent(ctx, "packageFetched", otelUtils.GetAttributesForPackage(pkg)...)
@@ -409,7 +409,7 @@ func (fetcher *Fetcher) FetchSecretsAndCfgMaps(ctx context.Context, secrets []fv
secretDir, err := utils.SanitizeFilePath(filepath.Join(fetcher.sharedSecretPath, secret.Namespace, secret.Name), fetcher.sharedSecretPath) secretDir, err := utils.SanitizeFilePath(filepath.Join(fetcher.sharedSecretPath, secret.Namespace, secret.Name), fetcher.sharedSecretPath)
if err != nil { if err != nil {
logger.Error(err.Error(), zap.String("directory", secretDir), zap.String("secret_name", secret.Name), zap.String("secret_namespace", secret.Namespace)) logger.Error(err.Error(), zap.String("directory", secretDir), zap.String("secret_name", secret.Name), zap.String("secret_namespace", secret.Namespace))
return http.StatusBadRequest, errors.New(fmt.Sprintf("%s, request: %v", err, secret)) return http.StatusBadRequest, fmt.Errorf("%s, request: %v", err, secret)
} }
err = os.MkdirAll(secretDir, os.ModeDir|0750) err = os.MkdirAll(secretDir, os.ModeDir|0750)
@@ -420,7 +420,7 @@ func (fetcher *Fetcher) FetchSecretsAndCfgMaps(ctx context.Context, secrets []fv
zap.String("directory", secretDir), zap.String("directory", secretDir),
zap.String("secret_name", secret.Name), zap.String("secret_name", secret.Name),
zap.String("secret_namespace", secret.Namespace)) zap.String("secret_namespace", secret.Namespace))
return http.StatusInternalServerError, errors.Wrapf(err, "%s: %s", e, secretDir) return http.StatusInternalServerError, fmt.Errorf("%s: %s: %w", e, secretDir, err)
} }
err = writeSecretOrConfigMap(data.Data, secretDir) err = writeSecretOrConfigMap(data.Data, secretDir)
if err != nil { if err != nil {
@@ -461,8 +461,8 @@ func (fetcher *Fetcher) FetchSecretsAndCfgMaps(ctx context.Context, secrets []fv
configDir, err := utils.SanitizeFilePath(filepath.Join(fetcher.sharedConfigPath, config.Namespace, config.Name), fetcher.sharedConfigPath) configDir, err := utils.SanitizeFilePath(filepath.Join(fetcher.sharedConfigPath, config.Namespace, config.Name), fetcher.sharedConfigPath)
if err != nil { if err != nil {
logger.Error(err.Error(), zap.String("directory", configDir), zap.String("config_map_name", config.Name), zap.String("config_map_namespace", config.Namespace)) logger.Error(err.Error(), zap.String("directory", configDir), zap.String("config_map_name", config.Name), zap.String("config_map_namespace", config.Namespace))
return http.StatusBadRequest, errors.New(fmt.Sprintf("%s, request: %v", err, return http.StatusBadRequest, fmt.Errorf("%s, request: %v", err,
config)) config)
} }
err = os.MkdirAll(configDir, os.ModeDir|0750) err = os.MkdirAll(configDir, os.ModeDir|0750)
@@ -473,7 +473,7 @@ func (fetcher *Fetcher) FetchSecretsAndCfgMaps(ctx context.Context, secrets []fv
zap.String("directory", configDir), zap.String("directory", configDir),
zap.String("config_map_name", config.Name), zap.String("config_map_name", config.Name),
zap.String("config_map_namespace", config.Namespace)) zap.String("config_map_namespace", config.Namespace))
return http.StatusInternalServerError, errors.Wrapf(err, "%s: %s", e, configDir) return http.StatusInternalServerError, fmt.Errorf("%s: %s: %w", e, configDir, err)
} }
configMap := make(map[string][]byte) configMap := make(map[string][]byte)
for key, val := range data.Data { for key, val := range data.Data {
@@ -617,7 +617,7 @@ func (fetcher *Fetcher) UploadHandler(w http.ResponseWriter, r *http.Request) {
func (fetcher *Fetcher) rename(src string, dst string) error { func (fetcher *Fetcher) rename(src string, dst string) error {
err := os.Rename(src, dst) err := os.Rename(src, dst)
if err != nil { if err != nil {
return errors.Wrap(err, "failed to move file") return fmt.Errorf("failed to move file: %w", err)
} }
return nil return nil
} }
@@ -673,17 +673,17 @@ func (fetcher *Fetcher) SpecializePod(ctx context.Context, fetchReq FunctionFetc
pkg, err := fetcher.getPkgInformation(ctx, fetchReq) pkg, err := fetcher.getPkgInformation(ctx, fetchReq)
if err != nil { if err != nil {
return errors.Wrap(err, "error getting package information") return fmt.Errorf("error getting package information: %w", err)
} }
_, err = fetcher.Fetch(ctx, pkg, fetchReq) _, err = fetcher.Fetch(ctx, pkg, fetchReq)
if err != nil { if err != nil {
return errors.Wrap(err, "error fetching deploy package") return fmt.Errorf("error fetching deploy package: %w", err)
} }
_, err = fetcher.FetchSecretsAndCfgMaps(ctx, fetchReq.Secrets, fetchReq.ConfigMaps) _, err = fetcher.FetchSecretsAndCfgMaps(ctx, fetchReq.Secrets, fetchReq.ConfigMaps)
if err != nil { if err != nil {
return errors.Wrap(err, "error fetching secrets/configs") return fmt.Errorf("error fetching secrets/configs: %w", err)
} }
// Specialize the pod // Specialize the pod
@@ -695,7 +695,7 @@ func (fetcher *Fetcher) SpecializePod(ctx context.Context, fetchReq FunctionFetc
loadPayload, err := json.Marshal(loadReq) loadPayload, err := json.Marshal(loadReq)
if err != nil { if err != nil {
return errors.Wrap(err, "error encoding load request") return fmt.Errorf("error encoding load request: %w", err)
} }
// Instead of using "localhost", here we use "127.0.0.1" for // Instead of using "localhost", here we use "127.0.0.1" for
@@ -739,10 +739,10 @@ func (fetcher *Fetcher) SpecializePod(ctx context.Context, fetchReq FunctionFetc
err = ferror.MakeErrorFromHTTP(resp) err = ferror.MakeErrorFromHTTP(resp)
} }
return errors.Wrap(err, "error specializing function pod") return fmt.Errorf("error specializing function pod: %w", err)
} }
return errors.Wrapf(err, "error specializing function pod after %v times", maxRetries) return fmt.Errorf("error specializing function pod after %v times: %w", maxRetries, err)
} }
// WsStartHandler is used to generate websocket events in Kubernetes // WsStartHandler is used to generate websocket events in Kubernetes
+6 -6
View File
@@ -17,10 +17,10 @@ limitations under the License.
package canaryconfig package canaryconfig
import ( import (
"errors"
"fmt" "fmt"
"time" "time"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -57,7 +57,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) (err error) {
_, fnNs, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) _, fnNs, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in creating canaryconfig") return fmt.Errorf("error in creating canaryconfig: %w", err)
} }
incrementStep := input.Int(flagkey.CanaryWeightIncrement) incrementStep := input.Int(flagkey.CanaryWeightIncrement)
failureThreshold := input.Int(flagkey.CanaryFailureThreshold) failureThreshold := input.Int(flagkey.CanaryFailureThreshold)
@@ -66,13 +66,13 @@ func (opts *CreateSubCommand) complete(input cli.Input) (err error) {
// check for time parsing // check for time parsing
_, err = time.ParseDuration(incrementInterval) _, err = time.ParseDuration(incrementInterval)
if err != nil { if err != nil {
return errors.Wrap(err, "error parsing time duration") return fmt.Errorf("error parsing time duration: %w", err)
} }
// check that the trigger exists in the same namespace. // check that the trigger exists in the same namespace.
htTrigger, err := opts.Client().FissionClientSet.CoreV1().HTTPTriggers(fnNs).Get(input.Context(), ht, metav1.GetOptions{}) htTrigger, err := opts.Client().FissionClientSet.CoreV1().HTTPTriggers(fnNs).Get(input.Context(), ht, metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error finding http trigger referenced in the canary config") return fmt.Errorf("error finding http trigger referenced in the canary config: %w", err)
} }
// check that the trigger has function reference type function weights // check that the trigger has function reference type function weights
@@ -95,7 +95,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) (err error) {
fnList := []string{newFunc, oldFunc} fnList := []string{newFunc, oldFunc}
err = util.CheckFunctionExistence(input.Context(), opts.Client(), fnList, fnNs) err = util.CheckFunctionExistence(input.Context(), opts.Client(), fnList, fnNs)
if err != nil { if err != nil {
return errors.Wrap(err, "error checking functions existence") return fmt.Errorf("error checking functions existence: %w", err)
} }
// finally create canaryCfg in the same namespace as the functions referenced // finally create canaryCfg in the same namespace as the functions referenced
@@ -124,7 +124,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) (err error) {
func (opts *CreateSubCommand) run(input cli.Input) error { func (opts *CreateSubCommand) run(input cli.Input) error {
_, err := opts.Client().FissionClientSet.CoreV1().CanaryConfigs(opts.canary.ObjectMeta.Namespace).Create(input.Context(), opts.canary, metav1.CreateOptions{}) _, err := opts.Client().FissionClientSet.CoreV1().CanaryConfigs(opts.canary.ObjectMeta.Namespace).Create(input.Context(), opts.canary, metav1.CreateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error creating canary config") return fmt.Errorf("error creating canary config: %w", err)
} }
fmt.Printf("canary config '%s' created\n", opts.canary.ObjectMeta.Name) fmt.Printf("canary config '%s' created\n", opts.canary.ObjectMeta.Name)
+2 -3
View File
@@ -19,7 +19,6 @@ package canaryconfig
import ( import (
"fmt" "fmt"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -39,7 +38,7 @@ func Delete(input cli.Input) error {
func (opts *DeleteSubCommand) run(input cli.Input) (err error) { func (opts *DeleteSubCommand) run(input cli.Input) (err error) {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceCanary) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceCanary)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting canaryConfig ") return fmt.Errorf("error in deleting canaryConfig: %w", err)
} }
err = opts.Client().FissionClientSet.CoreV1().CanaryConfigs(namespace).Delete(input.Context(), input.String(flagkey.CanaryName), metav1.DeleteOptions{}) err = opts.Client().FissionClientSet.CoreV1().CanaryConfigs(namespace).Delete(input.Context(), input.String(flagkey.CanaryName), metav1.DeleteOptions{})
@@ -47,7 +46,7 @@ func (opts *DeleteSubCommand) run(input cli.Input) (err error) {
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) { if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
return nil return nil
} }
return errors.Wrap(err, "error deleting canary config") return fmt.Errorf("error deleting canary config: %w", err)
} }
fmt.Printf("canaryconfig '%v.%v' deleted\n", input.String(flagkey.CanaryName), namespace) fmt.Printf("canaryconfig '%v.%v' deleted\n", input.String(flagkey.CanaryName), namespace)
+2 -3
View File
@@ -21,7 +21,6 @@ import (
"os" "os"
"text/tabwriter" "text/tabwriter"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -41,12 +40,12 @@ func (opts *GetSubCommand) run(input cli.Input) (err error) {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceCanary) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceCanary)
if err != nil { if err != nil {
return errors.Wrap(err, "error getting canary config") return fmt.Errorf("error getting canary config: %w", err)
} }
canaryCfg, err := opts.Client().FissionClientSet.CoreV1().CanaryConfigs(namespace).Get(input.Context(), input.String(flagkey.CanaryName), metav1.GetOptions{}) canaryCfg, err := opts.Client().FissionClientSet.CoreV1().CanaryConfigs(namespace).Get(input.Context(), input.String(flagkey.CanaryName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting canary config") return fmt.Errorf("error getting canary config: %w", err)
} }
w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0) w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0)
+2 -3
View File
@@ -21,7 +21,6 @@ import (
"os" "os"
"text/tabwriter" "text/tabwriter"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -49,7 +48,7 @@ func (opts *ListSubCommand) do(input cli.Input) error {
func (opts *ListSubCommand) complete(input cli.Input) (err error) { func (opts *ListSubCommand) complete(input cli.Input) (err error) {
_, opts.namespace, err = opts.GetResourceNamespace(input, flagkey.NamespaceCanary) _, opts.namespace, err = opts.GetResourceNamespace(input, flagkey.NamespaceCanary)
if err != nil { if err != nil {
return errors.Wrap(err, "error in listing canary config ") return fmt.Errorf("error in listing canary config: %w", err)
} }
return nil return nil
} }
@@ -62,7 +61,7 @@ func (opts *ListSubCommand) run(input cli.Input) (err error) {
canaryCfgs, err := opts.Client().FissionClientSet.CoreV1().CanaryConfigs(opts.namespace).List(input.Context(), metav1.ListOptions{}) canaryCfgs, err := opts.Client().FissionClientSet.CoreV1().CanaryConfigs(opts.namespace).List(input.Context(), metav1.ListOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error listing canary config") return fmt.Errorf("error listing canary config: %w", err)
} }
w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0) w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0)
+4 -5
View File
@@ -20,7 +20,6 @@ import (
"fmt" "fmt"
"time" "time"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -50,7 +49,7 @@ func (opts *UpdateSubCommand) complete(input cli.Input) (err error) {
// get the current config // get the current config
_, ns, err := opts.GetResourceNamespace(input, flagkey.NamespaceCanary) _, ns, err := opts.GetResourceNamespace(input, flagkey.NamespaceCanary)
if err != nil { if err != nil {
return errors.Wrap(err, "error updating canary config") return fmt.Errorf("error updating canary config: %w", err)
} }
incrementStep := input.Int(flagkey.CanaryWeightIncrement) incrementStep := input.Int(flagkey.CanaryWeightIncrement)
failureThreshold := input.Int(flagkey.CanaryFailureThreshold) failureThreshold := input.Int(flagkey.CanaryFailureThreshold)
@@ -59,12 +58,12 @@ func (opts *UpdateSubCommand) complete(input cli.Input) (err error) {
// check for time parsing // check for time parsing
_, err = time.ParseDuration(incrementInterval) _, err = time.ParseDuration(incrementInterval)
if err != nil { if err != nil {
return errors.Wrap(err, "error parsing time duration") return fmt.Errorf("error parsing time duration: %w", err)
} }
canaryCfg, err := opts.Client().FissionClientSet.CoreV1().CanaryConfigs(ns).Get(input.Context(), input.String(flagkey.CanaryName), metav1.GetOptions{}) canaryCfg, err := opts.Client().FissionClientSet.CoreV1().CanaryConfigs(ns).Get(input.Context(), input.String(flagkey.CanaryName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting canary config") return fmt.Errorf("error getting canary config: %w", err)
} }
var updateNeeded bool var updateNeeded bool
@@ -93,7 +92,7 @@ func (opts *UpdateSubCommand) complete(input cli.Input) (err error) {
func (opts *UpdateSubCommand) run(input cli.Input) error { func (opts *UpdateSubCommand) run(input cli.Input) error {
_, err := opts.Client().FissionClientSet.CoreV1().CanaryConfigs(opts.canary.ObjectMeta.Namespace).Update(input.Context(), opts.canary, metav1.UpdateOptions{}) _, err := opts.Client().FissionClientSet.CoreV1().CanaryConfigs(opts.canary.ObjectMeta.Namespace).Update(input.Context(), opts.canary, metav1.UpdateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error updating canary config") return fmt.Errorf("error updating canary config: %w", err)
} }
fmt.Printf("canary config '%v' updated\n", opts.canary.ObjectMeta.Name) fmt.Printf("canary config '%v' updated\n", opts.canary.ObjectMeta.Name)
return nil return nil
+2 -3
View File
@@ -20,7 +20,6 @@ import (
"fmt" "fmt"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/pkg/errors"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -101,7 +100,7 @@ func (opts *CreateSubCommand) run(input cli.Input) (err error) {
specFile := fmt.Sprintf("env-%v.yaml", opts.env.ObjectMeta.Name) specFile := fmt.Sprintf("env-%v.yaml", opts.env.ObjectMeta.Name)
err = spec.SpecSave(*opts.env, specFile, false) err = spec.SpecSave(*opts.env, specFile, false)
if err != nil { if err != nil {
return errors.Wrap(err, "error saving environment spec") return fmt.Errorf("error saving environment spec: %w", err)
} }
return nil return nil
} }
@@ -110,7 +109,7 @@ func (opts *CreateSubCommand) run(input cli.Input) (err error) {
_, err = opts.Client().FissionClientSet.CoreV1().Environments(opts.env.Namespace).Create(input.Context(), opts.env, metav1.CreateOptions{}) _, err = opts.Client().FissionClientSet.CoreV1().Environments(opts.env.Namespace).Create(input.Context(), opts.env, metav1.CreateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error creating resource") return fmt.Errorf("error creating resource: %w", err)
} }
fmt.Printf("environment '%v' created\n", opts.env.ObjectMeta.Name) fmt.Printf("environment '%v' created\n", opts.env.ObjectMeta.Name)
+4 -4
View File
@@ -17,9 +17,9 @@ limitations under the License.
package environment package environment
import ( import (
"errors"
"fmt" "fmt"
"github.com/pkg/errors"
kerrors "k8s.io/apimachinery/pkg/api/errors" kerrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -41,7 +41,7 @@ func (opts *DeleteSubCommand) do(input cli.Input) (err error) {
_, currentContextNS, err := opts.GetResourceNamespace(input, flagkey.NamespaceEnvironment) _, currentContextNS, err := opts.GetResourceNamespace(input, flagkey.NamespaceEnvironment)
if err != nil { if err != nil {
return errors.Wrap(err, "error creating environment") return fmt.Errorf("error creating environment: %w", err)
} }
console.Verbose(2, "Searching for resource in %s Namespace", currentContextNS) console.Verbose(2, "Searching for resource in %s Namespace", currentContextNS)
envName := input.String(flagkey.EnvName) envName := input.String(flagkey.EnvName)
@@ -49,7 +49,7 @@ func (opts *DeleteSubCommand) do(input cli.Input) (err error) {
if !input.Bool(flagkey.EnvForce) { if !input.Bool(flagkey.EnvForce) {
fns, err := opts.Client().FissionClientSet.CoreV1().Functions(metav1.NamespaceAll).List(input.Context(), metav1.ListOptions{}) fns, err := opts.Client().FissionClientSet.CoreV1().Functions(metav1.NamespaceAll).List(input.Context(), metav1.ListOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "Error getting functions wrt environment.") return fmt.Errorf("Error getting functions wrt environment.: %w", err)
} }
for _, fn := range fns.Items { for _, fn := range fns.Items {
@@ -65,7 +65,7 @@ func (opts *DeleteSubCommand) do(input cli.Input) (err error) {
if input.Bool(flagkey.IgnoreNotFound) && kerrors.IsNotFound(err) { if input.Bool(flagkey.IgnoreNotFound) && kerrors.IsNotFound(err) {
return nil return nil
} }
return errors.Wrap(err, "error deleting environment") return fmt.Errorf("error deleting environment: %w", err)
} }
fmt.Printf("environment '%s' deleted\n", envName) fmt.Printf("environment '%s' deleted\n", envName)
+2 -3
View File
@@ -21,7 +21,6 @@ import (
"os" "os"
"text/tabwriter" "text/tabwriter"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -41,12 +40,12 @@ func (opts *GetSubCommand) do(input cli.Input) (err error) {
_, currentNS, err := opts.GetResourceNamespace(input, flagkey.NamespaceEnvironment) _, currentNS, err := opts.GetResourceNamespace(input, flagkey.NamespaceEnvironment)
if err != nil { if err != nil {
return errors.Wrap(err, "error creating environment") return fmt.Errorf("error creating environment: %w", err)
} }
env, err := opts.Client().FissionClientSet.CoreV1().Environments(currentNS).Get(input.Context(), input.String(flagkey.EnvName), metav1.GetOptions{}) env, err := opts.Client().FissionClientSet.CoreV1().Environments(currentNS).Get(input.Context(), input.String(flagkey.EnvName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting environment") return fmt.Errorf("error getting environment: %w", err)
} }
w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0) w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0)
+2 -3
View File
@@ -21,7 +21,6 @@ import (
"os" "os"
"text/tabwriter" "text/tabwriter"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -41,7 +40,7 @@ func (opts *ListSubCommand) do(input cli.Input) (err error) {
_, currentNS, err := opts.GetResourceNamespace(input, flagkey.NamespaceEnvironment) _, currentNS, err := opts.GetResourceNamespace(input, flagkey.NamespaceEnvironment)
if err != nil { if err != nil {
return errors.Wrap(err, "error creating environment") return fmt.Errorf("error creating environment: %w", err)
} }
if input.Bool(flagkey.AllNamespaces) { if input.Bool(flagkey.AllNamespaces) {
@@ -50,7 +49,7 @@ func (opts *ListSubCommand) do(input cli.Input) (err error) {
response, err := opts.Client().FissionClientSet.CoreV1().Environments(currentNS).List(input.Context(), metav1.ListOptions{}) response, err := opts.Client().FissionClientSet.CoreV1().Environments(currentNS).List(input.Context(), metav1.ListOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error listing environments") return fmt.Errorf("error listing environments: %w", err)
} }
envs := response.Items envs := response.Items
+3 -4
View File
@@ -21,7 +21,6 @@ import (
"os" "os"
"text/tabwriter" "text/tabwriter"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/labels"
@@ -44,12 +43,12 @@ func (opts *ListPodsSubCommand) do(input cli.Input) (err error) {
_, currentNS, err := opts.GetResourceNamespace(input, flagkey.NamespaceEnvironment) _, currentNS, err := opts.GetResourceNamespace(input, flagkey.NamespaceEnvironment)
if err != nil { if err != nil {
return errors.Wrap(err, "error creating environment") return fmt.Errorf("error creating environment: %w", err)
} }
_, err = opts.Client().FissionClientSet.CoreV1().Environments(currentNS).Get(input.Context(), input.String(flagkey.EnvName), metav1.GetOptions{}) _, err = opts.Client().FissionClientSet.CoreV1().Environments(currentNS).Get(input.Context(), input.String(flagkey.EnvName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting environment") return fmt.Errorf("error getting environment: %w", err)
} }
// label selector // label selector
@@ -65,7 +64,7 @@ func (opts *ListPodsSubCommand) do(input cli.Input) (err error) {
LabelSelector: labels.Set(selector).AsSelector().String(), LabelSelector: labels.Set(selector).AsSelector().String(),
}) })
if err != nil { if err != nil {
return errors.Wrap(err, "error listing environments") return fmt.Errorf("error listing environments: %w", err)
} }
w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0) w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
+10 -9
View File
@@ -17,11 +17,12 @@ limitations under the License.
package environment package environment
import ( import (
"errors"
"fmt" "fmt"
"strconv" "strconv"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/pkg/errors"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -57,11 +58,11 @@ func (opts *UpdateSubCommand) complete(input cli.Input) (err error) {
_, currentContextNS, err := opts.GetResourceNamespace(input, flagkey.NamespaceEnvironment) _, currentContextNS, err := opts.GetResourceNamespace(input, flagkey.NamespaceEnvironment)
if err != nil { if err != nil {
return errors.Wrap(err, "error creating environment") return fmt.Errorf("error creating environment: %w", err)
} }
env, err := opts.Client().FissionClientSet.CoreV1().Environments(currentContextNS).Get(input.Context(), input.String(flagkey.EnvName), metav1.GetOptions{}) env, err := opts.Client().FissionClientSet.CoreV1().Environments(currentContextNS).Get(input.Context(), input.String(flagkey.EnvName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error finding environment") return fmt.Errorf("error finding environment: %w", err)
} }
env, err = updateExistingEnvironmentWithCmd(env, input) env, err = updateExistingEnvironmentWithCmd(env, input)
@@ -89,13 +90,13 @@ func (opts *UpdateSubCommand) run(input cli.Input) error {
specFile := fmt.Sprintf("env-%s.yaml", m.Name) specFile := fmt.Sprintf("env-%s.yaml", m.Name)
err = spec.SpecSave(*opts.env, specFile, true) err = spec.SpecSave(*opts.env, specFile, true)
if err != nil { if err != nil {
return errors.Wrap(err, "error saving environment spec") return fmt.Errorf("error saving environment spec: %w", err)
} }
return nil return nil
} }
enew, err := opts.Client().FissionClientSet.CoreV1().Environments(opts.env.ObjectMeta.Namespace).Update(input.Context(), opts.env, metav1.UpdateOptions{}) enew, err := opts.Client().FissionClientSet.CoreV1().Environments(opts.env.ObjectMeta.Namespace).Update(input.Context(), opts.env, metav1.UpdateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error updating environment") return fmt.Errorf("error updating environment: %w", err)
} }
fmt.Printf("environment '%v' updated\n", enew.ObjectMeta.Name) fmt.Printf("environment '%v' updated\n", enew.ObjectMeta.Name)
@@ -151,7 +152,7 @@ func updateExistingEnvironmentWithCmd(env *fv1.Environment, input cli.Input) (*f
mincpu := input.Int(flagkey.RuntimeMincpu) mincpu := input.Int(flagkey.RuntimeMincpu)
cpuRequest, err := resource.ParseQuantity(strconv.Itoa(mincpu) + "m") cpuRequest, err := resource.ParseQuantity(strconv.Itoa(mincpu) + "m")
if err != nil { if err != nil {
e = multierror.Append(e, errors.Wrap(err, "Failed to parse mincpu")) e = multierror.Append(e, fmt.Errorf("failed to parse mincpu: %w", err))
} }
env.Spec.Resources.Requests[v1.ResourceCPU] = cpuRequest env.Spec.Resources.Requests[v1.ResourceCPU] = cpuRequest
} }
@@ -160,7 +161,7 @@ func updateExistingEnvironmentWithCmd(env *fv1.Environment, input cli.Input) (*f
maxcpu := input.Int(flagkey.RuntimeMaxcpu) maxcpu := input.Int(flagkey.RuntimeMaxcpu)
cpuLimit, err := resource.ParseQuantity(strconv.Itoa(maxcpu) + "m") cpuLimit, err := resource.ParseQuantity(strconv.Itoa(maxcpu) + "m")
if err != nil { if err != nil {
e = multierror.Append(e, errors.Wrap(err, "Failed to parse maxcpu")) e = multierror.Append(e, fmt.Errorf("Failed to parse maxcpu: %w", err))
} }
env.Spec.Resources.Limits[v1.ResourceCPU] = cpuLimit env.Spec.Resources.Limits[v1.ResourceCPU] = cpuLimit
} }
@@ -169,7 +170,7 @@ func updateExistingEnvironmentWithCmd(env *fv1.Environment, input cli.Input) (*f
minmem := input.Int(flagkey.RuntimeMinmemory) minmem := input.Int(flagkey.RuntimeMinmemory)
memRequest, err := resource.ParseQuantity(strconv.Itoa(minmem) + "Mi") memRequest, err := resource.ParseQuantity(strconv.Itoa(minmem) + "Mi")
if err != nil { if err != nil {
e = multierror.Append(e, errors.Wrap(err, "Failed to parse minmemory")) e = multierror.Append(e, fmt.Errorf("Failed to parse minmemory: %w", err))
} }
env.Spec.Resources.Requests[v1.ResourceMemory] = memRequest env.Spec.Resources.Requests[v1.ResourceMemory] = memRequest
} }
@@ -178,7 +179,7 @@ func updateExistingEnvironmentWithCmd(env *fv1.Environment, input cli.Input) (*f
maxmem := input.Int(flagkey.RuntimeMaxmemory) maxmem := input.Int(flagkey.RuntimeMaxmemory)
memLimit, err := resource.ParseQuantity(strconv.Itoa(maxmem) + "Mi") memLimit, err := resource.ParseQuantity(strconv.Itoa(maxmem) + "Mi")
if err != nil { if err != nil {
e = multierror.Append(e, errors.Wrap(err, "Failed to parse maxmemory")) e = multierror.Append(e, fmt.Errorf("Failed to parse maxmemory: %w", err))
} }
env.Spec.Resources.Limits[v1.ResourceMemory] = memLimit env.Spec.Resources.Limits[v1.ResourceMemory] = memLimit
} }
+22 -22
View File
@@ -17,9 +17,9 @@ limitations under the License.
package function package function
import ( import (
"errors"
"fmt" "fmt"
"github.com/pkg/errors"
asv2 "k8s.io/api/autoscaling/v2" asv2 "k8s.io/api/autoscaling/v2"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
k8serrors "k8s.io/apimachinery/pkg/api/errors" k8serrors "k8s.io/apimachinery/pkg/api/errors"
@@ -67,7 +67,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
userProvidedNS, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) userProvidedNS, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error retrieving namespace information") return fmt.Errorf("error retrieving namespace information: %w", err)
} }
// user wants a spec, create a yaml file with package and function // user wants a spec, create a yaml file with package and function
@@ -93,7 +93,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
fnTimeout := input.Int(flagkey.FnExecutionTimeout) fnTimeout := input.Int(flagkey.FnExecutionTimeout)
if fnTimeout <= 0 { if fnTimeout <= 0 {
return errors.Errorf("--%v must be greater than 0", flagkey.FnExecutionTimeout) return fmt.Errorf("--%v must be greater than 0", flagkey.FnExecutionTimeout)
} }
fnIdleTimeout := input.Int(flagkey.FnIdleTimeout) fnIdleTimeout := input.Int(flagkey.FnIdleTimeout)
@@ -119,7 +119,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
cfgMapNames := input.StringSlice(flagkey.FnCfgMap) cfgMapNames := input.StringSlice(flagkey.FnCfgMap)
if input.String(flagkey.FnExecutorType) == string(fv1.ExecutorTypeContainer) { if input.String(flagkey.FnExecutorType) == string(fv1.ExecutorTypeContainer) {
return errors.Errorf("this command does not support creating function of executor type container. Check `fission function run-container --help`") return fmt.Errorf("this command does not support creating function of executor type container. Check `fission function run-container --help`")
} }
invokeStrategy, err := getInvokeStrategy(input, nil) invokeStrategy, err := getInvokeStrategy(input, nil)
@@ -141,7 +141,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
fr, err := spec.ReadSpecs(specDir, specIgnore, false) fr, err := spec.ReadSpecs(specDir, specIgnore, false)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error reading spec in '%s'", specDir)) return fmt.Errorf("error reading spec in '%s': %w", specDir, err)
} }
obj := fr.SpecExists(&fv1.Package{ // In case of spec I might or might not have the `fnNamespace`, how will I get pkg objectMeta here. obj := fr.SpecExists(&fv1.Package{ // In case of spec I might or might not have the `fnNamespace`, how will I get pkg objectMeta here.
@@ -151,7 +151,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
}, },
}, true, false) }, true, false)
if obj == nil { if obj == nil {
return errors.Errorf("please create package %s spec file with namespace %s before referencing it", pkgName, userProvidedNS) return fmt.Errorf("please create package %s spec file with namespace %s before referencing it", pkgName, userProvidedNS)
} }
pkg = obj.(*fv1.Package) pkg = obj.(*fv1.Package)
@@ -160,7 +160,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
// use existing package // use existing package
pkg, err = opts.Client().FissionClientSet.CoreV1().Packages(fnNamespace).Get(input.Context(), pkgName, metav1.GetOptions{}) pkg, err = opts.Client().FissionClientSet.CoreV1().Packages(fnNamespace).Get(input.Context(), pkgName, metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("read package in '%s' in Namespace: %s. Package needs to be present in the same namespace as function", pkgName, fnNamespace)) return fmt.Errorf("read package in '%s' in Namespace: %s. Package needs to be present in the same namespace as function: %w", pkgName, fnNamespace, err)
} }
pkgMetadata = &pkg.ObjectMeta pkgMetadata = &pkg.ObjectMeta
} }
@@ -180,7 +180,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
fr, err := spec.ReadSpecs(specDir, specIgnore, false) fr, err := spec.ReadSpecs(specDir, specIgnore, false)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error reading spec in '%s'", specDir)) return fmt.Errorf("error reading spec in '%s': %w", specDir, err)
} }
exists, err := fr.ExistsInSpecs(fv1.Environment{ exists, err := fr.ExistsInSpecs(fv1.Environment{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@@ -201,7 +201,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
if e, ok := err.(ferror.Error); ok && e.Code == ferror.ErrorNotFound { if e, ok := err.(ferror.Error); ok && e.Code == ferror.ErrorNotFound {
console.Warn(fmt.Sprintf("Environment \"%s\" does not exist. Please create the environment before executing the function. \nFor example: `fission env create --name %s --envns %s --image <image>`\n", envName, envName, fnNamespace)) console.Warn(fmt.Sprintf("Environment \"%s\" does not exist. Please create the environment before executing the function. \nFor example: `fission env create --name %s --envns %s --image <image>`\n", envName, envName, fnNamespace))
} else { } else {
return errors.Wrap(err, "error retrieving environment information") return fmt.Errorf("error retrieving environment information: %w", err)
} }
} }
} }
@@ -228,7 +228,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
pkgMetadata, err = _package.CreatePackage(input, opts.Client(), pkgName, fnNamespace, envName, pkgMetadata, err = _package.CreatePackage(input, opts.Client(), pkgName, fnNamespace, envName,
srcArchiveFiles, deployArchiveFiles, buildcmd, specDir, opts.specFile, noZip, userProvidedNS) srcArchiveFiles, deployArchiveFiles, buildcmd, specDir, opts.specFile, noZip, userProvidedNS)
if err != nil { if err != nil {
return errors.Wrap(err, "error creating package") return fmt.Errorf("error creating package: %w", err)
} }
} }
@@ -244,7 +244,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
if k8serrors.IsNotFound(err) { if k8serrors.IsNotFound(err) {
console.Warn(fmt.Sprintf("Secret %s not found in Namespace: %s. Secret needs to be present in the same namespace as function", secretName, fnNamespace)) console.Warn(fmt.Sprintf("Secret %s not found in Namespace: %s. Secret needs to be present in the same namespace as function", secretName, fnNamespace))
} else { } else {
return errors.Wrapf(err, "error checking secret %s", secretName) return fmt.Errorf("error checking secret %s: %w", secretName, err)
} }
} }
newSecret := fv1.SecretReference{ newSecret := fv1.SecretReference{
@@ -274,7 +274,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
if k8serrors.IsNotFound(err) { if k8serrors.IsNotFound(err) {
console.Warn(fmt.Sprintf("ConfigMap %s not found in Namespace: %s. ConfigMap needs to be present in the same namespace as function", cfgMapName, fnNamespace)) console.Warn(fmt.Sprintf("ConfigMap %s not found in Namespace: %s. ConfigMap needs to be present in the same namespace as function", cfgMapName, fnNamespace))
} else { } else {
return errors.Wrapf(err, "error checking configmap %s", cfgMapName) return fmt.Errorf("error checking configmap %s: %w", cfgMapName, err)
} }
} }
newCfgMap := fv1.ConfigMapReference{ newCfgMap := fv1.ConfigMapReference{
@@ -368,14 +368,14 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
if input.Bool(flagkey.SpecSave) { if input.Bool(flagkey.SpecSave) {
err := spec.SpecSave(*opts.function, opts.specFile, false) err := spec.SpecSave(*opts.function, opts.specFile, false)
if err != nil { if err != nil {
return errors.Wrap(err, "error saving function spec") return fmt.Errorf("error saving function spec: %w", err)
} }
return nil return nil
} }
_, err := opts.Client().FissionClientSet.CoreV1().Functions(opts.function.ObjectMeta.Namespace).Create(input.Context(), opts.function, metav1.CreateOptions{}) _, err := opts.Client().FissionClientSet.CoreV1().Functions(opts.function.ObjectMeta.Namespace).Create(input.Context(), opts.function, metav1.CreateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error creating function") return fmt.Errorf("error creating function: %w", err)
} }
fmt.Printf("function '%s' created\n", opts.function.ObjectMeta.Name) fmt.Printf("function '%s' created\n", opts.function.ObjectMeta.Name)
@@ -420,7 +420,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
} }
_, err = opts.Client().FissionClientSet.CoreV1().HTTPTriggers(opts.function.ObjectMeta.Namespace).Create(input.Context(), ht, metav1.CreateOptions{}) _, err = opts.Client().FissionClientSet.CoreV1().HTTPTriggers(opts.function.ObjectMeta.Namespace).Create(input.Context(), ht, metav1.CreateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error creating HTTP trigger") return fmt.Errorf("error creating HTTP trigger: %w", err)
} }
fmt.Printf("route created: %s %s -> %s\n", methods, triggerUrl, opts.function.ObjectMeta.Name) fmt.Printf("route created: %s %s -> %s\n", methods, triggerUrl, opts.function.ObjectMeta.Name)
@@ -490,7 +490,7 @@ func getExecutorType(input cli.Input) (executorType fv1.ExecutorType, err error)
case string(fv1.ExecutorTypeContainer): case string(fv1.ExecutorTypeContainer):
executorType = fv1.ExecutorTypeContainer executorType = fv1.ExecutorTypeContainer
default: default:
err = errors.Errorf("executor type must be one of '%v', '%v' or '%v'", fv1.ExecutorTypePoolmgr, fv1.ExecutorTypeNewdeploy, fv1.ExecutorTypeContainer) err = fmt.Errorf("executor type must be one of '%v', '%v' or '%v'", fv1.ExecutorTypePoolmgr, fv1.ExecutorTypeNewdeploy, fv1.ExecutorTypeContainer)
} }
return executorType, err return executorType, err
} }
@@ -501,7 +501,7 @@ func getExecutionStrategy(fnExecutor fv1.ExecutorType, input cli.Input) (strateg
if input.IsSet(flagkey.FnSpecializationTimeout) { if input.IsSet(flagkey.FnSpecializationTimeout) {
specializationTimeout = input.Int(flagkey.FnSpecializationTimeout) specializationTimeout = input.Int(flagkey.FnSpecializationTimeout)
if specializationTimeout < fv1.DefaultSpecializationTimeOut { if specializationTimeout < fv1.DefaultSpecializationTimeOut {
return nil, errors.Errorf("%v must be greater than or equal to 120 seconds", flagkey.FnSpecializationTimeout) return nil, fmt.Errorf("%v must be greater than or equal to 120 seconds", flagkey.FnSpecializationTimeout)
} }
} }
@@ -529,7 +529,7 @@ func getExecutionStrategy(fnExecutor fv1.ExecutorType, input cli.Input) (strateg
if input.IsSet(flagkey.ReplicasMaxscale) { if input.IsSet(flagkey.ReplicasMaxscale) {
maxScale = input.Int(flagkey.ReplicasMaxscale) maxScale = input.Int(flagkey.ReplicasMaxscale)
if maxScale <= 0 { if maxScale <= 0 {
return nil, errors.Errorf("%v must be greater than 0", flagkey.ReplicasMaxscale) return nil, fmt.Errorf("%v must be greater than 0", flagkey.ReplicasMaxscale)
} }
} }
@@ -573,7 +573,7 @@ func updateExecutionStrategy(input cli.Input, existingExecutionStrategy *fv1.Exe
case string(fv1.ExecutorTypeContainer): case string(fv1.ExecutorTypeContainer):
fnExecutor = fv1.ExecutorTypeContainer fnExecutor = fv1.ExecutorTypeContainer
default: default:
return nil, errors.Errorf("executor type must be one of '%v', %v or '%v'", fv1.ExecutorTypePoolmgr, fv1.ExecutorTypeNewdeploy, fv1.ExecutorTypeContainer) return nil, fmt.Errorf("executor type must be one of '%v', %v or '%v'", fv1.ExecutorTypePoolmgr, fv1.ExecutorTypeNewdeploy, fv1.ExecutorTypeContainer)
} }
} }
@@ -582,7 +582,7 @@ func updateExecutionStrategy(input cli.Input, existingExecutionStrategy *fv1.Exe
if input.IsSet(flagkey.FnSpecializationTimeout) { if input.IsSet(flagkey.FnSpecializationTimeout) {
specializationTimeout = input.Int(flagkey.FnSpecializationTimeout) specializationTimeout = input.Int(flagkey.FnSpecializationTimeout)
if specializationTimeout < fv1.DefaultSpecializationTimeOut { if specializationTimeout < fv1.DefaultSpecializationTimeOut {
return nil, errors.Errorf("%v must be greater than or equal to 120 seconds", flagkey.FnSpecializationTimeout) return nil, fmt.Errorf("%v must be greater than or equal to 120 seconds", flagkey.FnSpecializationTimeout)
} }
} else { } else {
if specializationTimeout < fv1.DefaultSpecializationTimeOut { if specializationTimeout < fv1.DefaultSpecializationTimeOut {
@@ -618,7 +618,7 @@ func updateExecutionStrategy(input cli.Input, existingExecutionStrategy *fv1.Exe
if input.IsSet(flagkey.ReplicasMaxscale) { if input.IsSet(flagkey.ReplicasMaxscale) {
maxScale = input.Int(flagkey.ReplicasMaxscale) maxScale = input.Int(flagkey.ReplicasMaxscale)
if maxScale <= 0 { if maxScale <= 0 {
return nil, errors.Errorf("%v must be greater than 0", flagkey.ReplicasMaxscale) return nil, fmt.Errorf("%v must be greater than 0", flagkey.ReplicasMaxscale)
} }
} else { } else {
if maxScale <= 0 { if maxScale <= 0 {
@@ -655,7 +655,7 @@ func updateExecutionStrategy(input cli.Input, existingExecutionStrategy *fv1.Exe
func getTargetCPU(input cli.Input) (int, error) { func getTargetCPU(input cli.Input) (int, error) {
targetCPU := input.Int(flagkey.RuntimeTargetcpu) targetCPU := input.Int(flagkey.RuntimeTargetcpu)
if targetCPU <= 0 || targetCPU > 100 { if targetCPU <= 0 || targetCPU > 100 {
return 0, errors.Errorf("%v must be a value between 1 - 100", flagkey.RuntimeTargetcpu) return 0, fmt.Errorf("%v must be a value between 1 - 100", flagkey.RuntimeTargetcpu)
} }
return targetCPU, nil return targetCPU, nil
} }
+2 -3
View File
@@ -19,7 +19,6 @@ package function
import ( import (
"fmt" "fmt"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -40,7 +39,7 @@ func (opts *DeleteSubCommand) do(input cli.Input) error {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
m := &metav1.ObjectMeta{ m := &metav1.ObjectMeta{
Name: input.String(flagkey.FnName), Name: input.String(flagkey.FnName),
@@ -52,7 +51,7 @@ func (opts *DeleteSubCommand) do(input cli.Input) error {
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) { if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
return nil return nil
} }
return errors.Wrap(err, fmt.Sprintf("delete function '%s'", m.Name)) return fmt.Errorf("delete function '%s': %w", m.Name, err)
} }
fmt.Printf("function '%s' deleted\n", m.Name) fmt.Printf("function '%s' deleted\n", m.Name)
+4 -4
View File
@@ -17,9 +17,9 @@ limitations under the License.
package function package function
import ( import (
"fmt"
"os" "os"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -38,16 +38,16 @@ func Get(input cli.Input) error {
func (opts *GetSubCommand) do(input cli.Input) error { func (opts *GetSubCommand) do(input cli.Input) error {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in get function ") return fmt.Errorf("error in get function : %w", err)
} }
fn, err := opts.Client().FissionClientSet.CoreV1().Functions(namespace).Get(input.Context(), input.String(flagkey.FnName), metav1.GetOptions{}) fn, err := opts.Client().FissionClientSet.CoreV1().Functions(namespace).Get(input.Context(), input.String(flagkey.FnName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting function") return fmt.Errorf("error getting function: %w", err)
} }
pkg, err := opts.Client().FissionClientSet.CoreV1().Packages(fn.Spec.Package.PackageRef.Namespace).Get(input.Context(), fn.Spec.Package.PackageRef.Name, metav1.GetOptions{}) pkg, err := opts.Client().FissionClientSet.CoreV1().Packages(fn.Spec.Package.PackageRef.Namespace).Get(input.Context(), fn.Spec.Package.PackageRef.Name, metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting package") return fmt.Errorf("error getting package: %w", err)
} }
os.Stdout.Write(pkg.Spec.Deployment.Literal) os.Stdout.Write(pkg.Spec.Deployment.Literal)
+2 -3
View File
@@ -19,7 +19,6 @@ package function
import ( import (
"fmt" "fmt"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -38,12 +37,12 @@ func GetMeta(input cli.Input) error {
func (opts *GetMetaSubCommand) do(input cli.Input) error { func (opts *GetMetaSubCommand) do(input cli.Input) error {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in getting meta function ") return fmt.Errorf("error in getting meta function : %w", err)
} }
fn, err := opts.Client().FissionClientSet.CoreV1().Functions(namespace).Get(input.Context(), input.String(flagkey.FnName), metav1.GetOptions{}) fn, err := opts.Client().FissionClientSet.CoreV1().Functions(namespace).Get(input.Context(), input.String(flagkey.FnName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting function") return fmt.Errorf("error getting function: %w", err)
} }
fmt.Printf("Name: %v\n", fn.ObjectMeta.Name) fmt.Printf("Name: %v\n", fn.ObjectMeta.Name)
+2 -3
View File
@@ -22,7 +22,6 @@ import (
"strings" "strings"
"text/tabwriter" "text/tabwriter"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -41,7 +40,7 @@ func List(input cli.Input) error {
func (opts *ListSubCommand) do(input cli.Input) error { func (opts *ListSubCommand) do(input cli.Input) error {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in listing function ") return fmt.Errorf("error in listing function : %w", err)
} }
if input.Bool(flagkey.AllNamespaces) { if input.Bool(flagkey.AllNamespaces) {
@@ -50,7 +49,7 @@ func (opts *ListSubCommand) do(input cli.Input) error {
fns, err := opts.Client().FissionClientSet.CoreV1().Functions(namespace).List(input.Context(), metav1.ListOptions{}) fns, err := opts.Client().FissionClientSet.CoreV1().Functions(namespace).List(input.Context(), metav1.ListOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error listing functions") return fmt.Errorf("error listing functions: %w", err)
} }
w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0) w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0)
+4 -4
View File
@@ -19,11 +19,11 @@ package function
import ( import (
"bytes" "bytes"
"context" "context"
"fmt"
"io" "io"
"os" "os"
"time" "time"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -44,7 +44,7 @@ func Log(input cli.Input) error {
func (opts *LogSubCommand) do(input cli.Input) error { func (opts *LogSubCommand) do(input cli.Input) error {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in logs for function ") return fmt.Errorf("error in logs for function : %w", err)
} }
dbType := input.String(flagkey.FnLogDBType) dbType := input.String(flagkey.FnLogDBType)
@@ -60,7 +60,7 @@ func (opts *LogSubCommand) do(input cli.Input) error {
f, err := opts.Client().FissionClientSet.CoreV1().Functions(namespace).Get(input.Context(), input.String(flagkey.FnName), metav1.GetOptions{}) f, err := opts.Client().FissionClientSet.CoreV1().Functions(namespace).Get(input.Context(), input.String(flagkey.FnName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting function") return fmt.Errorf("error getting function: %w", err)
} }
logDBOptions := logdb.LogDBOptions{ logDBOptions := logdb.LogDBOptions{
@@ -70,7 +70,7 @@ func (opts *LogSubCommand) do(input cli.Input) error {
// request the controller to establish a proxy server to the database. // request the controller to establish a proxy server to the database.
logDB, err := logdb.GetLogDB(dbType, input.Context(), logDBOptions) logDB, err := logdb.GetLogDB(dbType, input.Context(), logDBOptions)
if err != nil { if err != nil {
return errors.Wrapf(err, "failed to get log from %s", dbType) return fmt.Errorf("failed to get log from %s: %w", dbType, err)
} }
requestChan := make(chan struct{}) requestChan := make(chan struct{})
+3 -4
View File
@@ -21,7 +21,6 @@ import (
"os" "os"
"text/tabwriter" "text/tabwriter"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/labels"
@@ -45,12 +44,12 @@ func (opts *ListPodsSubCommand) do(input cli.Input) error {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in finding pod for function ") return fmt.Errorf("error in finding pod for function : %w", err)
} }
// validate function // validate function
_, err = opts.Client().FissionClientSet.CoreV1().Functions(namespace).Get(input.Context(), input.String(flagkey.FnName), metav1.GetOptions{}) _, err = opts.Client().FissionClientSet.CoreV1().Functions(namespace).Get(input.Context(), input.String(flagkey.FnName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting function") return fmt.Errorf("error getting function: %w", err)
} }
selector := map[string]string{ selector := map[string]string{
@@ -64,7 +63,7 @@ func (opts *ListPodsSubCommand) do(input cli.Input) error {
LabelSelector: labels.Set(selector).AsSelector().String(), LabelSelector: labels.Set(selector).AsSelector().String(),
}) })
if err != nil { if err != nil {
return errors.Wrap(err, "error listing environments") return fmt.Errorf("error listing environments: %w", err)
} }
w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0) w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
@@ -20,7 +20,8 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/pkg/errors" "errors"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
kerrors "k8s.io/apimachinery/pkg/api/errors" kerrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -57,7 +58,7 @@ func (opts *RunContainerSubCommand) complete(input cli.Input) error {
_, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) _, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in running container for function ") return fmt.Errorf("error in running container for function : %w", err)
} }
// user wants a spec, create a yaml file with package and function // user wants a spec, create a yaml file with package and function
@@ -80,7 +81,7 @@ func (opts *RunContainerSubCommand) complete(input cli.Input) error {
fnTimeout := input.Int(flagkey.FnExecutionTimeout) fnTimeout := input.Int(flagkey.FnExecutionTimeout)
if fnTimeout <= 0 { if fnTimeout <= 0 {
return errors.Errorf("--%v must be greater than 0", flagkey.FnExecutionTimeout) return fmt.Errorf("--%v must be greater than 0", flagkey.FnExecutionTimeout)
} }
fnIdleTimeout := input.Int(flagkey.FnIdleTimeout) fnIdleTimeout := input.Int(flagkey.FnIdleTimeout)
@@ -132,7 +133,7 @@ func (opts *RunContainerSubCommand) complete(input cli.Input) error {
if kerrors.IsNotFound(err) { if kerrors.IsNotFound(err) {
console.Warn(fmt.Sprintf("Secret %s not found in Namespace: %s. Secret needs to be present in the same namespace as function", secretName, fnNamespace)) console.Warn(fmt.Sprintf("Secret %s not found in Namespace: %s. Secret needs to be present in the same namespace as function", secretName, fnNamespace))
} else { } else {
return errors.Wrapf(err, "error checking secret %s", secretName) return fmt.Errorf("error checking secret %s: %w", secretName, err)
} }
} }
} }
@@ -156,7 +157,7 @@ func (opts *RunContainerSubCommand) complete(input cli.Input) error {
if kerrors.IsNotFound(err) { if kerrors.IsNotFound(err) {
console.Warn(fmt.Sprintf("ConfigMap %s not found in Namespace: %s. ConfigMap needs to be present in the same namespace as function", cfgMapName, fnNamespace)) console.Warn(fmt.Sprintf("ConfigMap %s not found in Namespace: %s. ConfigMap needs to be present in the same namespace as function", cfgMapName, fnNamespace))
} else { } else {
return errors.Wrapf(err, "error checking configmap %s", cfgMapName) return fmt.Errorf("error checking configmap %s: %w", cfgMapName, err)
} }
} }
} }
@@ -228,14 +229,14 @@ func (opts *RunContainerSubCommand) run(input cli.Input) error {
if input.Bool(flagkey.SpecSave) { if input.Bool(flagkey.SpecSave) {
err := spec.SpecSave(*opts.function, opts.specFile, false) err := spec.SpecSave(*opts.function, opts.specFile, false)
if err != nil { if err != nil {
return errors.Wrap(err, "error saving function spec") return fmt.Errorf("error saving function spec: %w", err)
} }
return nil return nil
} }
_, err := opts.Client().FissionClientSet.CoreV1().Functions(opts.function.ObjectMeta.Namespace).Create(input.Context(), opts.function, metav1.CreateOptions{}) _, err := opts.Client().FissionClientSet.CoreV1().Functions(opts.function.ObjectMeta.Namespace).Create(input.Context(), opts.function, metav1.CreateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error creating function") return fmt.Errorf("error creating function: %w", err)
} }
fmt.Printf("function '%v' created\n", opts.function.ObjectMeta.Name) fmt.Printf("function '%v' created\n", opts.function.ObjectMeta.Name)
+8 -7
View File
@@ -27,7 +27,8 @@ import (
"strings" "strings"
"time" "time"
"github.com/pkg/errors" "errors"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"go.opentelemetry.io/otel" "go.opentelemetry.io/otel"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -53,12 +54,12 @@ func (opts *TestSubCommand) do(input cli.Input) error {
fnName := input.String(flagkey.FnName) fnName := input.String(flagkey.FnName)
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in testing function ") return fmt.Errorf("error in testing function : %w", err)
} }
function, err := opts.Client().FissionClientSet.CoreV1().Functions(namespace).Get(input.Context(), fnName, metav1.GetOptions{}) function, err := opts.Client().FissionClientSet.CoreV1().Functions(namespace).Get(input.Context(), fnName, metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("read function '%s'", fnName)) return fmt.Errorf("read function '%s': %w", fnName, err)
} }
m := &metav1.ObjectMeta{ m := &metav1.ObjectMeta{
@@ -68,7 +69,7 @@ func (opts *TestSubCommand) do(input cli.Input) error {
routerURL, err := util.GetRouterURL(input.Context(), opts.Client()) routerURL, err := util.GetRouterURL(input.Context(), opts.Client())
if err != nil { if err != nil {
return errors.Wrap(err, "error getting router URL") return fmt.Errorf("error getting router URL: %w", err)
} }
fnURI := util.UrlForFunction(m.Name, m.Namespace) fnURI := util.UrlForFunction(m.Name, m.Namespace)
if input.IsSet(flagkey.FnSubPath) { if input.IsSet(flagkey.FnSubPath) {
@@ -146,7 +147,7 @@ func (opts *TestSubCommand) do(input cli.Input) error {
body, err := io.ReadAll(resp.Body) body, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return errors.Wrap(err, "error reading response from function") return fmt.Errorf("error reading response from function: %w", err)
} }
if resp.StatusCode < 400 { if resp.StatusCode < 400 {
@@ -186,7 +187,7 @@ func doHTTPRequest(ctx context.Context, url string, headers []string, method, bo
req, err := http.NewRequest(method, url, strings.NewReader(body)) req, err := http.NewRequest(method, url, strings.NewReader(body))
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error creating HTTP request") return nil, fmt.Errorf("error creating HTTP request: %w", err)
} }
accesstoken, ok := os.LookupEnv(util.FISSION_AUTH_TOKEN) accesstoken, ok := os.LookupEnv(util.FISSION_AUTH_TOKEN)
@@ -213,7 +214,7 @@ func doHTTPRequest(ctx context.Context, url string, headers []string, method, bo
hc := &http.Client{Transport: otelhttp.NewTransport(http.DefaultTransport)} hc := &http.Client{Transport: otelhttp.NewTransport(http.DefaultTransport)}
resp, err := hc.Do(req.WithContext(ctx)) resp, err := hc.Do(req.WithContext(ctx))
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error executing HTTP request") return nil, fmt.Errorf("error executing HTTP request: %w", err)
} }
if console.Verbosity >= 2 { if console.Verbosity >= 2 {
+10 -11
View File
@@ -19,7 +19,6 @@ package function
import ( import (
"fmt" "fmt"
"github.com/pkg/errors"
k8serrors "k8s.io/apimachinery/pkg/api/errors" k8serrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -55,7 +54,7 @@ func (opts *UpdateSubCommand) complete(input cli.Input) error {
fnName := input.String(flagkey.FnName) fnName := input.String(flagkey.FnName)
_, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) _, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in updating function ") return fmt.Errorf("error in updating function : %w", err)
} }
if input.Bool(flagkey.SpecSave) { if input.Bool(flagkey.SpecSave) {
opts.specFile = fmt.Sprintf("function-%s.yaml", fnName) opts.specFile = fmt.Sprintf("function-%s.yaml", fnName)
@@ -63,7 +62,7 @@ func (opts *UpdateSubCommand) complete(input cli.Input) error {
function, err := opts.Client().FissionClientSet.CoreV1().Functions(fnNamespace).Get(input.Context(), input.String(flagkey.FnName), metav1.GetOptions{}) function, err := opts.Client().FissionClientSet.CoreV1().Functions(fnNamespace).Get(input.Context(), input.String(flagkey.FnName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("read function '%v'", fnName)) return fmt.Errorf("read function '%v': %w", fnName, err)
} }
envName := input.String(flagkey.FnEnvironmentName) envName := input.String(flagkey.FnEnvironmentName)
@@ -135,7 +134,7 @@ func (opts *UpdateSubCommand) complete(input cli.Input) error {
if input.IsSet(flagkey.FnExecutionTimeout) { if input.IsSet(flagkey.FnExecutionTimeout) {
fnTimeout := input.Int(flagkey.FnExecutionTimeout) fnTimeout := input.Int(flagkey.FnExecutionTimeout)
if fnTimeout <= 0 { if fnTimeout <= 0 {
return errors.Errorf("--%v must be greater than 0", flagkey.FnExecutionTimeout) return fmt.Errorf("--%v must be greater than 0", flagkey.FnExecutionTimeout)
} }
function.Spec.FunctionTimeout = fnTimeout function.Spec.FunctionTimeout = fnTimeout
} }
@@ -184,23 +183,23 @@ func (opts *UpdateSubCommand) complete(input cli.Input) error {
pkg, err := opts.Client().FissionClientSet.CoreV1().Packages(fnNamespace).Get(input.Context(), pkgName, metav1.GetOptions{}) pkg, err := opts.Client().FissionClientSet.CoreV1().Packages(fnNamespace).Get(input.Context(), pkgName, metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("read package '%v.%v'. Pkg should be present in the same ns as the function", pkgName, fnNamespace)) return fmt.Errorf("read package '%v.%v'. Pkg should be present in the same ns as the function: %w", pkgName, fnNamespace, err)
} }
forceUpdate := input.Bool(flagkey.PkgForce) forceUpdate := input.Bool(flagkey.PkgForce)
fnList, err := _package.GetFunctionsByPackage(input.Context(), opts.Client(), pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace) fnList, err := _package.GetFunctionsByPackage(input.Context(), opts.Client(), pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace)
if err != nil { if err != nil {
return errors.Wrap(err, "error getting function list") return fmt.Errorf("error getting function list: %w", err)
} }
if !forceUpdate && len(fnList) > 1 { if !forceUpdate && len(fnList) > 1 {
return errors.Errorf("Package is used by multiple functions, use --%v to force update", flagkey.PkgForce) return fmt.Errorf("package is used by multiple functions, use --%v to force update", flagkey.PkgForce)
} }
newPkgMeta, err := _package.UpdatePackage(input, opts.Client(), opts.specFile, pkg) newPkgMeta, err := _package.UpdatePackage(input, opts.Client(), opts.specFile, pkg)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error updating package '%v'", pkgName)) return fmt.Errorf("error updating package '%v': %w", pkgName, err)
} }
// the package resource version of function has been changed, // the package resource version of function has been changed,
@@ -217,7 +216,7 @@ func (opts *UpdateSubCommand) complete(input cli.Input) error {
} }
err = _package.UpdateFunctionPackageResourceVersion(input.Context(), opts.Client(), newPkgMeta, fns...) err = _package.UpdateFunctionPackageResourceVersion(input.Context(), opts.Client(), newPkgMeta, fns...)
if err != nil { if err != nil {
return errors.Wrap(err, "error updating function package reference resource version") return fmt.Errorf("error updating function package reference resource version: %w", err)
} }
} }
@@ -255,13 +254,13 @@ func (opts *UpdateSubCommand) run(input cli.Input) error {
} }
err = spec.SpecSave(*opts.function, opts.specFile, false) err = spec.SpecSave(*opts.function, opts.specFile, false)
if err != nil { if err != nil {
return errors.Wrap(err, "error saving function spec") return fmt.Errorf("error saving function spec: %w", err)
} }
return nil return nil
} }
_, err := opts.Client().FissionClientSet.CoreV1().Functions(opts.function.Namespace).Update(input.Context(), opts.function, metav1.UpdateOptions{}) _, err := opts.Client().FissionClientSet.CoreV1().Functions(opts.function.Namespace).Update(input.Context(), opts.function, metav1.UpdateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error updating function") return fmt.Errorf("error updating function: %w", err)
} }
fmt.Printf("Function '%v' updated\n", opts.function.ObjectMeta.Name) fmt.Printf("Function '%v' updated\n", opts.function.ObjectMeta.Name)
@@ -20,7 +20,6 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/pkg/errors"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
k8serrors "k8s.io/apimachinery/pkg/api/errors" k8serrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -55,13 +54,13 @@ func (opts *UpdateContainerSubCommand) complete(input cli.Input) error {
_, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) _, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in updating container for function ") return fmt.Errorf("error in updating container for function : %w", err)
} }
function, err := opts.Client().FissionClientSet.CoreV1().Functions(fnNamespace).Get(input.Context(), input.String(flagkey.FnName), metav1.GetOptions{}) function, err := opts.Client().FissionClientSet.CoreV1().Functions(fnNamespace).Get(input.Context(), input.String(flagkey.FnName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("read function '%v'", fnName)) return fmt.Errorf("read function '%v': %w", fnName, err)
} }
if fv1.ExecutorTypeContainer != function.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType { if fv1.ExecutorTypeContainer != function.Spec.InvokeStrategy.ExecutionStrategy.ExecutorType {
return fmt.Errorf("executor type for function is not %s", fv1.ExecutorTypeContainer) return fmt.Errorf("executor type for function is not %s", fv1.ExecutorTypeContainer)
@@ -122,7 +121,7 @@ func (opts *UpdateContainerSubCommand) complete(input cli.Input) error {
if input.IsSet(flagkey.FnExecutionTimeout) { if input.IsSet(flagkey.FnExecutionTimeout) {
fnTimeout := input.Int(flagkey.FnExecutionTimeout) fnTimeout := input.Int(flagkey.FnExecutionTimeout)
if fnTimeout <= 0 { if fnTimeout <= 0 {
return errors.Errorf("--%v must be greater than 0", flagkey.FnExecutionTimeout) return fmt.Errorf("--%v must be greater than 0", flagkey.FnExecutionTimeout)
} }
function.Spec.FunctionTimeout = fnTimeout function.Spec.FunctionTimeout = fnTimeout
} }
@@ -146,7 +145,7 @@ func (opts *UpdateContainerSubCommand) complete(input cli.Input) error {
function.Spec.Resources = *resReqs function.Spec.Resources = *resReqs
if len(function.Spec.PodSpec.Containers) > 1 { if len(function.Spec.PodSpec.Containers) > 1 {
return errors.Errorf("function %s has more than one container, only one container is supported", fnName) return fmt.Errorf("function %s has more than one container, only one container is supported", fnName)
} }
container := &function.Spec.PodSpec.Containers[0] container := &function.Spec.PodSpec.Containers[0]
if imageName != "" { if imageName != "" {
@@ -154,7 +153,7 @@ func (opts *UpdateContainerSubCommand) complete(input cli.Input) error {
} }
if port != 0 { if port != 0 {
if len(container.Ports) > 1 { if len(container.Ports) > 1 {
return errors.Errorf("function %s has more than one port, only one port is supported", fnName) return fmt.Errorf("function %s has more than one port, only one port is supported", fnName)
} }
container.Ports = []apiv1.ContainerPort{ container.Ports = []apiv1.ContainerPort{
{ {
@@ -186,7 +185,7 @@ func (opts *UpdateContainerSubCommand) complete(input cli.Input) error {
func (opts *UpdateContainerSubCommand) run(input cli.Input) error { func (opts *UpdateContainerSubCommand) run(input cli.Input) error {
_, err := opts.Client().FissionClientSet.CoreV1().Functions(opts.function.Namespace).Update(input.Context(), opts.function, metav1.UpdateOptions{}) _, err := opts.Client().FissionClientSet.CoreV1().Functions(opts.function.Namespace).Update(input.Context(), opts.function, metav1.UpdateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error updating function") return fmt.Errorf("error updating function: %w", err)
} }
return nil return nil
+8 -7
View File
@@ -22,7 +22,8 @@ import (
"os" "os"
"strings" "strings"
"github.com/pkg/errors" "errors"
kerrors "k8s.io/apimachinery/pkg/api/errors" kerrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -75,7 +76,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
userProvidedNS, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) userProvidedNS, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
triggerUrl := input.String(flagkey.HtUrl) triggerUrl := input.String(flagkey.HtUrl)
@@ -125,7 +126,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
specIgnore := util.GetSpecIgnore(input) specIgnore := util.GetSpecIgnore(input)
fr, err := spec.ReadSpecs(specDir, specIgnore, false) fr, err := spec.ReadSpecs(specDir, specIgnore, false)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error reading spec in '%v'", specDir)) return fmt.Errorf("error reading spec in '%v': %w", specDir, err)
} }
for _, fn := range functionList { for _, fn := range functionList {
exists, err := fr.ExistsInSpecs(fv1.Function{ exists, err := fr.ExistsInSpecs(fv1.Function{
@@ -167,7 +168,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
input.StringSlice(flagkey.HtIngressAnnotation), input.String(flagkey.HtIngressRule), input.StringSlice(flagkey.HtIngressAnnotation), input.String(flagkey.HtIngressRule),
input.String(flagkey.HtIngressTLS), fallbackURL, nil) input.String(flagkey.HtIngressTLS), fallbackURL, nil)
if err != nil { if err != nil {
return errors.Wrap(err, "error parsing ingress configuration") return fmt.Errorf("error parsing ingress configuration: %w", err)
} }
opts.trigger = &fv1.HTTPTrigger{ opts.trigger = &fv1.HTTPTrigger{
@@ -198,7 +199,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
specFile := fmt.Sprintf("route-%v.yaml", opts.trigger.ObjectMeta.Name) specFile := fmt.Sprintf("route-%v.yaml", opts.trigger.ObjectMeta.Name)
err := spec.SpecSave(*opts.trigger, specFile, false) err := spec.SpecSave(*opts.trigger, specFile, false)
if err != nil { if err != nil {
return errors.Wrap(err, "error saving HTTP trigger spec") return fmt.Errorf("error saving HTTP trigger spec: %w", err)
} }
return nil return nil
} }
@@ -206,12 +207,12 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
// Ensure we don't have a duplicate HTTP route defined (same URL and method) // Ensure we don't have a duplicate HTTP route defined (same URL and method)
err := util.CheckHTTPTriggerDuplicates(input.Context(), opts.Client(), opts.trigger) err := util.CheckHTTPTriggerDuplicates(input.Context(), opts.Client(), opts.trigger)
if err != nil { if err != nil {
return errors.Wrap(err, "Error while creating HTTP Trigger") return fmt.Errorf("Error while creating HTTP Trigger: %w", err)
} }
_, err = opts.Client().FissionClientSet.CoreV1().HTTPTriggers(opts.trigger.Namespace).Create(input.Context(), opts.trigger, metav1.CreateOptions{}) _, err = opts.Client().FissionClientSet.CoreV1().HTTPTriggers(opts.trigger.Namespace).Create(input.Context(), opts.trigger, metav1.CreateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "create HTTP trigger") return fmt.Errorf("create HTTP trigger: %w", err)
} }
fmt.Printf("trigger '%v' created\n", opts.trigger.ObjectMeta.Name) fmt.Printf("trigger '%v' created\n", opts.trigger.ObjectMeta.Name)
+5 -6
View File
@@ -20,7 +20,6 @@ import (
"fmt" "fmt"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -53,14 +52,14 @@ func (opts *DeleteSubCommand) complete(input cli.Input) (err error) {
opts.triggerName = input.String(flagkey.HtName) opts.triggerName = input.String(flagkey.HtName)
opts.functionName = input.String(flagkey.HtFnName) opts.functionName = input.String(flagkey.HtFnName)
if len(opts.triggerName) == 0 && len(opts.functionName) == 0 { if len(opts.triggerName) == 0 && len(opts.functionName) == 0 {
return errors.Errorf("need --%v or --%v", flagkey.HtName, flagkey.HtFnName) return fmt.Errorf("need --%v or --%v", flagkey.HtName, flagkey.HtFnName)
} else if len(opts.triggerName) > 0 && len(opts.functionName) > 0 { } else if len(opts.triggerName) > 0 && len(opts.functionName) > 0 {
return errors.Errorf("need either of --%v or --%v and not both arguments", flagkey.HtName, flagkey.HtFnName) return fmt.Errorf("need either of --%v or --%v and not both arguments", flagkey.HtName, flagkey.HtFnName)
} }
_, opts.namespace, err = opts.GetResourceNamespace(input, flagkey.NamespaceTrigger) _, opts.namespace, err = opts.GetResourceNamespace(input, flagkey.NamespaceTrigger)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
return nil return nil
} }
@@ -68,7 +67,7 @@ func (opts *DeleteSubCommand) complete(input cli.Input) (err error) {
func (opts *DeleteSubCommand) run(input cli.Input) error { func (opts *DeleteSubCommand) run(input cli.Input) error {
triggers, err := opts.Client().FissionClientSet.CoreV1().HTTPTriggers(opts.namespace).List(input.Context(), metav1.ListOptions{}) triggers, err := opts.Client().FissionClientSet.CoreV1().HTTPTriggers(opts.namespace).List(input.Context(), metav1.ListOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting HTTP trigger list") return fmt.Errorf("error getting HTTP trigger list: %w", err)
} }
var triggersToDelete []string var triggersToDelete []string
@@ -99,7 +98,7 @@ func (opts *DeleteSubCommand) run(input cli.Input) error {
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) { if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
return nil return nil
} }
return errors.Wrap(errs.ErrorOrNil(), "error deleting trigger(s)") return fmt.Errorf("error deleting trigger(s): %w", errs.ErrorOrNil())
} }
return nil return nil
+2 -3
View File
@@ -22,7 +22,6 @@ import (
"strings" "strings"
"text/tabwriter" "text/tabwriter"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -46,12 +45,12 @@ func (opts *GetSubCommand) do(input cli.Input) error {
func (opts *GetSubCommand) run(input cli.Input) (err error) { func (opts *GetSubCommand) run(input cli.Input) (err error) {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
ht, err := opts.Client().FissionClientSet.CoreV1().HTTPTriggers(namespace).Get(input.Context(), input.String(flagkey.HtName), metav1.GetOptions{}) ht, err := opts.Client().FissionClientSet.CoreV1().HTTPTriggers(namespace).Get(input.Context(), input.String(flagkey.HtName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting http trigger") return fmt.Errorf("error getting http trigger: %w", err)
} }
printHtSummary([]fv1.HTTPTrigger{*ht}) printHtSummary([]fv1.HTTPTrigger{*ht})
+4 -3
View File
@@ -17,7 +17,8 @@ limitations under the License.
package httptrigger package httptrigger
import ( import (
"github.com/pkg/errors" "fmt"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -42,7 +43,7 @@ func (opts *ListSubCommand) run(input cli.Input) (err error) {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
if input.Bool(flagkey.AllNamespaces) { if input.Bool(flagkey.AllNamespaces) {
@@ -51,7 +52,7 @@ func (opts *ListSubCommand) run(input cli.Input) (err error) {
hts, err := opts.Client().FissionClientSet.CoreV1().HTTPTriggers(namespace).List(input.Context(), v1.ListOptions{}) hts, err := opts.Client().FissionClientSet.CoreV1().HTTPTriggers(namespace).List(input.Context(), v1.ListOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error listing HTTP triggers") return fmt.Errorf("error listing HTTP triggers: %w", err)
} }
filterFunctionName := input.String(flagkey.HtFnName) filterFunctionName := input.String(flagkey.HtFnName)
+9 -8
View File
@@ -20,7 +20,8 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/pkg/errors" "errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -54,12 +55,12 @@ func (opts *UpdateSubCommand) complete(input cli.Input) (err error) {
_, triggerNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger) _, triggerNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
ht, err := opts.Client().FissionClientSet.CoreV1().HTTPTriggers(triggerNamespace).Get(input.Context(), htName, metav1.GetOptions{}) ht, err := opts.Client().FissionClientSet.CoreV1().HTTPTriggers(triggerNamespace).Get(input.Context(), htName, metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting HTTP trigger") return fmt.Errorf("error getting HTTP trigger: %w", err)
} }
triggerUrl := input.String(flagkey.HtUrl) triggerUrl := input.String(flagkey.HtUrl)
@@ -113,7 +114,7 @@ func (opts *UpdateSubCommand) complete(input cli.Input) (err error) {
// set function reference // set function reference
functionRef, err := setHtFunctionRef(functionList, functionWeightsList) functionRef, err := setHtFunctionRef(functionList, functionWeightsList)
if err != nil { if err != nil {
return errors.Wrap(err, "error setting function weight") return fmt.Errorf("error setting function weight: %w", err)
} }
ht.Spec.FunctionReference = *functionRef ht.Spec.FunctionReference = *functionRef
@@ -138,7 +139,7 @@ func (opts *UpdateSubCommand) complete(input cli.Input) (err error) {
input.StringSlice(flagkey.HtIngressAnnotation), input.String(flagkey.HtIngressRule), input.StringSlice(flagkey.HtIngressAnnotation), input.String(flagkey.HtIngressRule),
input.String(flagkey.HtIngressTLS), fallbackURL, &ht.Spec.IngressConfig) input.String(flagkey.HtIngressTLS), fallbackURL, &ht.Spec.IngressConfig)
if err != nil { if err != nil {
return errors.Wrap(err, "error parsing ingress configuration") return fmt.Errorf("error parsing ingress configuration: %w", err)
} }
ht.Spec.IngressConfig = *ingress ht.Spec.IngressConfig = *ingress
} }
@@ -157,18 +158,18 @@ func (opts *UpdateSubCommand) run(input cli.Input) error {
specFile := fmt.Sprintf("route-%s.yaml", opts.trigger.ObjectMeta.Name) specFile := fmt.Sprintf("route-%s.yaml", opts.trigger.ObjectMeta.Name)
err = spec.SpecSave(*opts.trigger, specFile, true) err = spec.SpecSave(*opts.trigger, specFile, true)
if err != nil { if err != nil {
return errors.Wrap(err, "error saving HTTP trigger spec") return fmt.Errorf("error saving HTTP trigger spec: %w", err)
} }
return nil return nil
} }
err := util.CheckHTTPTriggerDuplicates(input.Context(), opts.Client(), opts.trigger) err := util.CheckHTTPTriggerDuplicates(input.Context(), opts.Client(), opts.trigger)
if err != nil { if err != nil {
return errors.Wrap(err, "Error while creating HTTP Trigger") return fmt.Errorf("Error while creating HTTP Trigger: %w", err)
} }
_, err = opts.Client().FissionClientSet.CoreV1().HTTPTriggers(opts.trigger.ObjectMeta.Namespace).Update(input.Context(), opts.trigger, metav1.UpdateOptions{}) _, err = opts.Client().FissionClientSet.CoreV1().HTTPTriggers(opts.trigger.ObjectMeta.Namespace).Update(input.Context(), opts.trigger, metav1.UpdateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error updating the HTTP trigger") return fmt.Errorf("error updating the HTTP trigger: %w", err)
} }
fmt.Printf("trigger '%v' updated\n", opts.trigger.ObjectMeta.Name) fmt.Printf("trigger '%v' updated\n", opts.trigger.ObjectMeta.Name)
return nil return nil
+4 -5
View File
@@ -19,7 +19,6 @@ package kubewatch
import ( import (
"fmt" "fmt"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -59,7 +58,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.KwNamespace) _, namespace, err := opts.GetResourceNamespace(input, flagkey.KwNamespace)
if err != nil { if err != nil {
return errors.Wrap(err, "error in listing function ") return fmt.Errorf("error in listing function : %w", err)
} }
objType := input.String(flagkey.KwObjType) objType := input.String(flagkey.KwObjType)
@@ -69,7 +68,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
specIgnore := util.GetSpecIgnore(input) specIgnore := util.GetSpecIgnore(input)
fr, err := spec.ReadSpecs(specDir, specIgnore, false) fr, err := spec.ReadSpecs(specDir, specIgnore, false)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error reading spec in '%v'", specDir)) return fmt.Errorf("error reading spec in '%v': %w", specDir, err)
} }
exists, err := fr.ExistsInSpecs(fv1.Function{ exists, err := fr.ExistsInSpecs(fv1.Function{
@@ -117,14 +116,14 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
specFile := fmt.Sprintf("kubewatch-%v.yaml", opts.watcher.ObjectMeta.Name) specFile := fmt.Sprintf("kubewatch-%v.yaml", opts.watcher.ObjectMeta.Name)
err := spec.SpecSave(*opts.watcher, specFile, false) err := spec.SpecSave(*opts.watcher, specFile, false)
if err != nil { if err != nil {
return errors.Wrap(err, "error saving kubewatch spec") return fmt.Errorf("error saving kubewatch spec: %w", err)
} }
return nil return nil
} }
_, err := opts.Client().FissionClientSet.CoreV1().KubernetesWatchTriggers(opts.watcher.ObjectMeta.Namespace).Create(input.Context(), opts.watcher, metav1.CreateOptions{}) _, err := opts.Client().FissionClientSet.CoreV1().KubernetesWatchTriggers(opts.watcher.ObjectMeta.Namespace).Create(input.Context(), opts.watcher, metav1.CreateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error creating kubewatch") return fmt.Errorf("error creating kubewatch: %w", err)
} }
fmt.Printf("trigger '%v' created\n", opts.watcher.ObjectMeta.Name) fmt.Printf("trigger '%v' created\n", opts.watcher.ObjectMeta.Name)
+2 -3
View File
@@ -19,7 +19,6 @@ package kubewatch
import ( import (
"fmt" "fmt"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -50,7 +49,7 @@ func (opts *DeleteSubCommand) complete(input cli.Input) (err error) {
opts.name = input.String(flagkey.KwName) opts.name = input.String(flagkey.KwName)
_, opts.namespace, err = opts.GetResourceNamespace(input, flagkey.NamespaceTrigger) _, opts.namespace, err = opts.GetResourceNamespace(input, flagkey.NamespaceTrigger)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting kubewatch") return fmt.Errorf("error in deleting kubewatch: %w", err)
} }
return nil return nil
} }
@@ -61,7 +60,7 @@ func (opts *DeleteSubCommand) run(input cli.Input) error {
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) { if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
return nil return nil
} }
return errors.Wrap(err, "error deleting kubewatch") return fmt.Errorf("error deleting kubewatch: %w", err)
} }
fmt.Printf("trigger '%v' deleted\n", opts.name) fmt.Printf("trigger '%v' deleted\n", opts.name)
+2 -3
View File
@@ -21,7 +21,6 @@ import (
"os" "os"
"text/tabwriter" "text/tabwriter"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
v1 "github.com/fission/fission/pkg/apis/core/v1" v1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -50,7 +49,7 @@ func (opts *ListSubCommand) do(input cli.Input) error {
func (opts *ListSubCommand) complete(input cli.Input) (err error) { func (opts *ListSubCommand) complete(input cli.Input) (err error) {
_, opts.namespace, err = opts.GetResourceNamespace(input, flagkey.NamespaceTrigger) _, opts.namespace, err = opts.GetResourceNamespace(input, flagkey.NamespaceTrigger)
if err != nil { if err != nil {
return errors.Wrap(err, "error listing kubewatchers") return fmt.Errorf("error listing kubewatchers: %w", err)
} }
return nil return nil
} }
@@ -63,7 +62,7 @@ func (opts *ListSubCommand) run(input cli.Input) (err error) {
ws, err = opts.Client().FissionClientSet.CoreV1().KubernetesWatchTriggers(opts.namespace).List(input.Context(), metav1.ListOptions{}) ws, err = opts.Client().FissionClientSet.CoreV1().KubernetesWatchTriggers(opts.namespace).List(input.Context(), metav1.ListOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error listing kubewatchers") return fmt.Errorf("error listing kubewatchers: %w", err)
} }
w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0) w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0)
+7 -6
View File
@@ -19,7 +19,8 @@ package mqtrigger
import ( import (
"fmt" "fmt"
"github.com/pkg/errors" "errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -60,7 +61,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
userProvidedNS, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) userProvidedNS, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
mqtKind := input.String(flagkey.MqtKind) mqtKind := input.String(flagkey.MqtKind)
@@ -130,7 +131,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) error {
specIgnore := util.GetSpecIgnore(input) specIgnore := util.GetSpecIgnore(input)
fr, err := spec.ReadSpecs(specDir, specIgnore, false) fr, err := spec.ReadSpecs(specDir, specIgnore, false)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error reading spec in '%v'", specDir)) return fmt.Errorf("error reading spec in '%v': %w", specDir, err)
} }
exists, err := fr.ExistsInSpecs(fv1.Function{ exists, err := fr.ExistsInSpecs(fv1.Function{
@@ -201,14 +202,14 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
specFile := fmt.Sprintf("mqtrigger-%v.yaml", opts.trigger.ObjectMeta.Name) specFile := fmt.Sprintf("mqtrigger-%v.yaml", opts.trigger.ObjectMeta.Name)
err := spec.SpecSave(*opts.trigger, specFile, false) err := spec.SpecSave(*opts.trigger, specFile, false)
if err != nil { if err != nil {
return errors.Wrap(err, "error saving message queue trigger spec") return fmt.Errorf("error saving message queue trigger spec: %w", err)
} }
return nil return nil
} }
_, err := opts.Client().FissionClientSet.CoreV1().MessageQueueTriggers(opts.trigger.ObjectMeta.Namespace).Create(input.Context(), opts.trigger, metav1.CreateOptions{}) _, err := opts.Client().FissionClientSet.CoreV1().MessageQueueTriggers(opts.trigger.ObjectMeta.Namespace).Create(input.Context(), opts.trigger, metav1.CreateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "create message queue trigger") return fmt.Errorf("create message queue trigger: %w", err)
} }
fmt.Printf("trigger '%s' created\n", opts.trigger.ObjectMeta.Name) fmt.Printf("trigger '%s' created\n", opts.trigger.ObjectMeta.Name)
@@ -218,7 +219,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
func checkMQTopicAvailability(mqType fv1.MessageQueueType, mqtKind string, topics ...string) error { func checkMQTopicAvailability(mqType fv1.MessageQueueType, mqtKind string, topics ...string) error {
for _, t := range topics { for _, t := range topics {
if len(t) > 0 && !validator.IsValidTopic((string)(mqType), t, mqtKind) { if len(t) > 0 && !validator.IsValidTopic((string)(mqType), t, mqtKind) {
return errors.Errorf("invalid topic for %s: %s", mqType, t) return fmt.Errorf("invalid topic for %s: %s", mqType, t)
} }
} }
return nil return nil
+2 -3
View File
@@ -19,7 +19,6 @@ package mqtrigger
import ( import (
"fmt" "fmt"
"github.com/pkg/errors"
kerrors "k8s.io/apimachinery/pkg/api/errors" kerrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -49,7 +48,7 @@ func (opts *DeleteSubCommand) complete(input cli.Input) (err error) {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
opts.metadata = &metav1.ObjectMeta{ opts.metadata = &metav1.ObjectMeta{
@@ -65,7 +64,7 @@ func (opts *DeleteSubCommand) run(input cli.Input) error {
if input.Bool(flagkey.IgnoreNotFound) && kerrors.IsNotFound(err) { if input.Bool(flagkey.IgnoreNotFound) && kerrors.IsNotFound(err) {
return nil return nil
} }
return errors.Wrap(err, "error deleting message queue trigger") return fmt.Errorf("error deleting message queue trigger: %w", err)
} }
fmt.Printf("trigger '%v' deleted\n", opts.metadata.Name) fmt.Printf("trigger '%v' deleted\n", opts.metadata.Name)
+2 -3
View File
@@ -21,7 +21,6 @@ import (
"os" "os"
"text/tabwriter" "text/tabwriter"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -49,7 +48,7 @@ func (opts *ListSubCommand) do(input cli.Input) error {
func (opts *ListSubCommand) complete(input cli.Input) (err error) { func (opts *ListSubCommand) complete(input cli.Input) (err error) {
_, opts.namespace, err = opts.GetResourceNamespace(input, flagkey.NamespaceTrigger) _, opts.namespace, err = opts.GetResourceNamespace(input, flagkey.NamespaceTrigger)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
return nil return nil
} }
@@ -62,7 +61,7 @@ func (opts *ListSubCommand) run(input cli.Input) (err error) {
mqts, err := opts.Client().FissionClientSet.CoreV1().MessageQueueTriggers(opts.namespace).List(input.Context(), metav1.ListOptions{}) mqts, err := opts.Client().FissionClientSet.CoreV1().MessageQueueTriggers(opts.namespace).List(input.Context(), metav1.ListOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error listing message queue triggers") return fmt.Errorf("error listing message queue triggers: %w", err)
} }
w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0) w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0)
+6 -5
View File
@@ -19,7 +19,8 @@ package mqtrigger
import ( import (
"fmt" "fmt"
"github.com/pkg/errors" "errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -51,12 +52,12 @@ func (opts *UpdateSubCommand) do(input cli.Input) error {
func (opts *UpdateSubCommand) complete(input cli.Input) (err error) { func (opts *UpdateSubCommand) complete(input cli.Input) (err error) {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
mqt, err := opts.Client().FissionClientSet.CoreV1().MessageQueueTriggers(namespace).Get(input.Context(), input.String(flagkey.MqtName), metav1.GetOptions{}) mqt, err := opts.Client().FissionClientSet.CoreV1().MessageQueueTriggers(namespace).Get(input.Context(), input.String(flagkey.MqtName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting message queue trigger") return fmt.Errorf("error getting message queue trigger: %w", err)
} }
topic := input.String(flagkey.MqtTopic) topic := input.String(flagkey.MqtTopic)
@@ -158,13 +159,13 @@ func (opts *UpdateSubCommand) run(input cli.Input) error {
specFile := fmt.Sprintf("mqtrigger-%s.yaml", opts.trigger.ObjectMeta.Name) specFile := fmt.Sprintf("mqtrigger-%s.yaml", opts.trigger.ObjectMeta.Name)
err = spec.SpecSave(*opts.trigger, specFile, true) err = spec.SpecSave(*opts.trigger, specFile, true)
if err != nil { if err != nil {
return errors.Wrap(err, "error saving message queue trigger spec") return fmt.Errorf("error saving message queue trigger spec: %w", err)
} }
return nil return nil
} }
_, err := opts.Client().FissionClientSet.CoreV1().MessageQueueTriggers(opts.trigger.ObjectMeta.Namespace).Update(input.Context(), opts.trigger, metav1.UpdateOptions{}) _, err := opts.Client().FissionClientSet.CoreV1().MessageQueueTriggers(opts.trigger.ObjectMeta.Namespace).Update(input.Context(), opts.trigger, metav1.UpdateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error updating message queue trigger") return fmt.Errorf("error updating message queue trigger: %w", err)
} }
fmt.Printf("message queue trigger '%v' updated\n", opts.trigger.ObjectMeta.Name) fmt.Printf("message queue trigger '%v' updated\n", opts.trigger.ObjectMeta.Name)
+9 -10
View File
@@ -23,7 +23,6 @@ import (
"time" "time"
"github.com/dchest/uniuri" "github.com/dchest/uniuri"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -56,7 +55,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
pkgName := input.String(flagkey.PkgName) pkgName := input.String(flagkey.PkgName)
if len(pkgName) == 0 { if len(pkgName) == 0 {
if input.Bool(flagkey.SpecSave) && len(input.String(flagkey.PkgName)) == 0 { if input.Bool(flagkey.SpecSave) && len(input.String(flagkey.PkgName)) == 0 {
return errors.Errorf("--%v is necessary when creating spec file", flagkey.PkgName) return fmt.Errorf("--%v is necessary when creating spec file", flagkey.PkgName)
} else { } else {
console.Warn(fmt.Sprintf("--%v will be soon marked as required flag, see 'help' for details", flagkey.HtName)) console.Warn(fmt.Sprintf("--%v will be soon marked as required flag, see 'help' for details", flagkey.HtName))
} }
@@ -83,7 +82,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
} }
if len(srcArchiveFiles) == 0 && len(deployArchiveFiles) == 0 { if len(srcArchiveFiles) == 0 && len(deployArchiveFiles) == 0 {
return errors.Errorf("need --%v or --%v or --%v argument", flagkey.PkgCode, flagkey.PkgSrcArchive, flagkey.PkgDeployArchive) return fmt.Errorf("need --%v or --%v or --%v argument", flagkey.PkgCode, flagkey.PkgSrcArchive, flagkey.PkgDeployArchive)
} }
var specDir, specFile string var specDir, specFile string
@@ -91,14 +90,14 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
if input.Bool(flagkey.SpecSave) { if input.Bool(flagkey.SpecSave) {
// since package CRD created using --spec, not validate by k8s. So we need to validate it and make sure package name is not more than 63 characters. // since package CRD created using --spec, not validate by k8s. So we need to validate it and make sure package name is not more than 63 characters.
if len(pkgName) > 63 { if len(pkgName) > 63 {
return errors.Errorf("error creating package: package name %v, must be no more than 63 characters", pkgName) return fmt.Errorf("error creating package: package name %v, must be no more than 63 characters", pkgName)
} }
specDir = util.GetSpecDir(input) specDir = util.GetSpecDir(input)
specIgnore := util.GetSpecIgnore(input) specIgnore := util.GetSpecIgnore(input)
fr, err := spec.ReadSpecs(specDir, specIgnore, false) fr, err := spec.ReadSpecs(specDir, specIgnore, false)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error reading spec in '%v'", specDir)) return fmt.Errorf("error reading spec in '%v': %w", specDir, err)
} }
exists, err := fr.ExistsInSpecs(fv1.Environment{ exists, err := fr.ExistsInSpecs(fv1.Environment{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
@@ -155,7 +154,7 @@ func CreatePackage(input cli.Input, client cmd.Client, pkgName string, pkgNamesp
} }
deployment, err := CreateArchive(client, input, deployArchiveFiles, noZip, insecure, deployChecksum, specDir, specFile) deployment, err := CreateArchive(client, input, deployArchiveFiles, noZip, insecure, deployChecksum, specDir, specFile)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error creating deploy archive") return nil, fmt.Errorf("error creating deploy archive: %w", err)
} }
pkgSpec.Deployment = *deployment pkgSpec.Deployment = *deployment
if len(pkgName) == 0 { if len(pkgName) == 0 {
@@ -165,7 +164,7 @@ func CreatePackage(input cli.Input, client cmd.Client, pkgName string, pkgNamesp
if len(srcArchiveFiles) > 0 { if len(srcArchiveFiles) > 0 {
source, err := CreateArchive(client, input, srcArchiveFiles, false, insecure, srcChecksum, specDir, specFile) source, err := CreateArchive(client, input, srcArchiveFiles, false, insecure, srcChecksum, specDir, specFile)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error creating source archive") return nil, fmt.Errorf("error creating source archive: %w", err)
} }
pkgSpec.Source = *source pkgSpec.Source = *source
pkgStatus = fv1.BuildStatusPending // set package build status to pending pkgStatus = fv1.BuildStatusPending // set package build status to pending
@@ -202,7 +201,7 @@ func CreatePackage(input cli.Input, client cmd.Client, pkgName string, pkgNamesp
// if a package with the same spec exists, don't create a new spec file // if a package with the same spec exists, don't create a new spec file
fr, err := spec.ReadSpecs(util.GetSpecDir(input), util.GetSpecIgnore(input), false) fr, err := spec.ReadSpecs(util.GetSpecDir(input), util.GetSpecIgnore(input), false)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error reading specs") return nil, fmt.Errorf("error reading specs: %w", err)
} }
obj := fr.SpecExists(pkg, true, true) obj := fr.SpecExists(pkg, true, true)
@@ -214,7 +213,7 @@ func CreatePackage(input cli.Input, client cmd.Client, pkgName string, pkgNamesp
err = spec.SpecSave(*pkg, specFile, false) err = spec.SpecSave(*pkg, specFile, false)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error saving package spec") return nil, fmt.Errorf("error saving package spec: %w", err)
} }
return &pkg.ObjectMeta, nil return &pkg.ObjectMeta, nil
} else { } else {
@@ -222,7 +221,7 @@ func CreatePackage(input cli.Input, client cmd.Client, pkgName string, pkgNamesp
pkgMetadata, err := client.FissionClientSet.CoreV1().Packages(pkgNamespace).Create(input.Context(), pkg, metav1.CreateOptions{}) pkgMetadata, err := client.FissionClientSet.CoreV1().Packages(pkgNamespace).Create(input.Context(), pkg, metav1.CreateOptions{})
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error creating package") return nil, fmt.Errorf("error creating package: %w", err)
} }
fmt.Printf("Package '%v' created\n", pkgMetadata.GetName()) fmt.Printf("Package '%v' created\n", pkgMetadata.GetName())
return &pkgMetadata.ObjectMeta, nil return &pkgMetadata.ObjectMeta, nil
+6 -5
View File
@@ -20,7 +20,8 @@ import (
"context" "context"
"fmt" "fmt"
"github.com/pkg/errors" "errors"
kerrors "k8s.io/apimachinery/pkg/api/errors" kerrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -61,7 +62,7 @@ func (opts *DeleteSubCommand) complete(input cli.Input) (err error) {
opts.force = input.Bool(flagkey.PkgForce) opts.force = input.Bool(flagkey.PkgForce)
if len(opts.name) == 0 && !opts.deleteOrphans { if len(opts.name) == 0 && !opts.deleteOrphans {
return errors.Errorf("need --%v or --%v flag", flagkey.PkgName, flagkey.PkgOrphan) return fmt.Errorf("need --%v or --%v flag", flagkey.PkgName, flagkey.PkgOrphan)
} }
return nil return nil
@@ -74,7 +75,7 @@ func (opts *DeleteSubCommand) run(input cli.Input) error {
if input.Bool(flagkey.IgnoreNotFound) && kerrors.IsNotFound(err) { if input.Bool(flagkey.IgnoreNotFound) && kerrors.IsNotFound(err) {
return nil return nil
} }
return errors.Wrap(err, "find package") return fmt.Errorf("find package: %w", err)
} }
fnList, err := GetFunctionsByPackage(input.Context(), opts.Client(), opts.name, opts.namespace) fnList, err := GetFunctionsByPackage(input.Context(), opts.Client(), opts.name, opts.namespace)
@@ -96,7 +97,7 @@ func (opts *DeleteSubCommand) run(input cli.Input) error {
if opts.deleteOrphans { if opts.deleteOrphans {
err := deleteOrphanPkgs(input.Context(), opts.Client(), opts.namespace) err := deleteOrphanPkgs(input.Context(), opts.Client(), opts.namespace)
if err != nil { if err != nil {
return errors.Wrap(err, "deleting orphan packages") return fmt.Errorf("deleting orphan packages: %w", err)
} }
fmt.Println("Orphan packages deleted") fmt.Println("Orphan packages deleted")
} }
@@ -114,7 +115,7 @@ func deleteOrphanPkgs(ctx context.Context, client cmd.Client, pkgNamespace strin
for _, pkg := range pkgList.Items { for _, pkg := range pkgList.Items {
fnList, err := GetFunctionsByPackage(ctx, client, pkg.ObjectMeta.Name, pkgNamespace) fnList, err := GetFunctionsByPackage(ctx, client, pkg.ObjectMeta.Name, pkgNamespace)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("get functions sharing package %s", pkg.ObjectMeta.Name)) return fmt.Errorf("get functions sharing package %v: %w", pkg.ObjectMeta.Name, err)
} }
if len(fnList) == 0 { if len(fnList) == 0 {
err = deletePackage(ctx, client, pkg.ObjectMeta.Name, pkgNamespace) err = deletePackage(ctx, client, pkg.ObjectMeta.Name, pkgNamespace)
+2 -2
View File
@@ -18,10 +18,10 @@ package _package
import ( import (
"bytes" "bytes"
"fmt"
"io" "io"
"os" "os"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -88,7 +88,7 @@ func (opts *GetSubCommand) run(input cli.Input) error {
readCloser, err := pkgutil.DownloadStrorageURL(input.Context(), opts.Client(), archive.URL) readCloser, err := pkgutil.DownloadStrorageURL(input.Context(), opts.Client(), archive.URL)
if err != nil { if err != nil {
return errors.Wrapf(err, "error downloading from storage service url: %s", archive.URL) return fmt.Errorf("error downloading from storage service url: %s: %w", archive.URL, err)
} }
defer readCloser.Close() defer readCloser.Close()
+2 -2
View File
@@ -17,9 +17,9 @@ limitations under the License.
package _package package _package
import ( import (
"fmt"
"os" "os"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -60,7 +60,7 @@ func (opts *InfoSubCommand) complete(input cli.Input) (err error) {
func (opts *InfoSubCommand) run(input cli.Input) error { func (opts *InfoSubCommand) run(input cli.Input) error {
pkg, err := opts.Client().FissionClientSet.CoreV1().Packages(opts.namespace).Get(input.Context(), opts.name, metav1.GetOptions{}) pkg, err := opts.Client().FissionClientSet.CoreV1().Packages(opts.namespace).Get(input.Context(), opts.name, metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrapf(err, "error finding package %s", opts.name) return fmt.Errorf("error finding package %s: %w", opts.name, err)
} }
pkgutil.PrintPackageSummary(os.Stdout, pkg) pkgutil.PrintPackageSummary(os.Stdout, pkg)
+1 -2
View File
@@ -23,7 +23,6 @@ import (
"text/tabwriter" "text/tabwriter"
"time" "time"
"github.com/pkg/errors"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -87,7 +86,7 @@ func (opts *ListSubCommand) run(input cli.Input) (err error) {
if opts.listOrphans { if opts.listOrphans {
fnList, err := GetFunctionsByPackage(input.Context(), opts.Client(), pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace) fnList, err := GetFunctionsByPackage(input.Context(), opts.Client(), pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("get functions sharing package %s", pkg.ObjectMeta.Name)) return fmt.Errorf("get functions sharing package %v: %w", pkg.ObjectMeta.Name, err)
} }
if len(fnList) > 0 { if len(fnList) > 0 {
show = false show = false
+15 -14
View File
@@ -24,9 +24,10 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
"errors"
"github.com/dchest/uniuri" "github.com/dchest/uniuri"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/pkg/errors"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -54,7 +55,7 @@ func CreateArchive(client cmd.Client, input cli.Input, includeFiles []string, no
if len(specFile) > 0 { if len(specFile) > 0 {
rootDir, err = filepath.Abs(specDir + "/..") rootDir, err = filepath.Abs(specDir + "/..")
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "error getting root directory of spec directory") return nil, fmt.Errorf("error getting root directory of spec directory: %w", err)
} }
} }
errs := utils.MultiErrorWithFormat() errs := utils.MultiErrorWithFormat()
@@ -75,24 +76,24 @@ func CreateArchive(client cmd.Client, input cli.Input, includeFiles []string, no
// Get files from inputs as number of files decide next steps // Get files from inputs as number of files decide next steps
absPath, err := filepath.Abs(path) absPath, err := filepath.Abs(path)
if err != nil { if err != nil {
errs = multierror.Append(errs, errors.Wrapf(err, "error converting path to the absolute path \"%v\"", path)) errs = multierror.Append(errs, fmt.Errorf("error converting path to the absolute path \"%v\": %w", path, err))
continue continue
} }
if !strings.HasPrefix(absPath, rootDir) { if !strings.HasPrefix(absPath, rootDir) {
errs = multierror.Append(errs, errors.Errorf("The files (%v) should be put under the same parent directory (%v) of spec directory; otherwise, the archive will be empty when applying spec files", path, rootDir)) errs = multierror.Append(errs, fmt.Errorf("The files (%v) should be put under the same parent directory (%v) of spec directory; otherwise, the archive will be empty when applying spec files", path, rootDir))
continue continue
} }
path := filepath.Join(rootDir, path) path := filepath.Join(rootDir, path)
files, err := utils.FindAllGlobs(path) files, err := utils.FindAllGlobs(path)
if err != nil { if err != nil {
errs = multierror.Append(errs, errors.Wrap(err, "error finding all globs")) errs = multierror.Append(errs, fmt.Errorf("error finding all globs: %w", err))
continue continue
} }
if len(files) == 0 { if len(files) == 0 {
errs = multierror.Append(errs, errors.Errorf("Error finding any files with path \"%v\"", path)) errs = multierror.Append(errs, fmt.Errorf("Error finding any files with path \"%v\"", path))
} }
} }
@@ -127,12 +128,12 @@ func CreateArchive(client cmd.Client, input cli.Input, includeFiles []string, no
file := filepath.Join(tmpDir, uuid.NewString()) file := filepath.Join(tmpDir, uuid.NewString())
err = utils.DownloadUrl(input.Context(), http.DefaultClient, fileURL, file) err = utils.DownloadUrl(input.Context(), http.DefaultClient, fileURL, file)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error downloading file from the given URL") return nil, fmt.Errorf("error downloading file from the given URL: %w", err)
} }
csum, err = utils.GetFileChecksum(file) csum, err = utils.GetFileChecksum(file)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error generating file SHA256 checksum") return nil, fmt.Errorf("error generating file SHA256 checksum: %w", err)
} }
} }
@@ -160,7 +161,7 @@ func CreateArchive(client cmd.Client, input cli.Input, includeFiles []string, no
specIgnore := util.GetSpecIgnore(input) specIgnore := util.GetSpecIgnore(input)
fr, err := spec.ReadSpecs(specDir, specIgnore, false) fr, err := spec.ReadSpecs(specDir, specIgnore, false)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error reading specs") return nil, fmt.Errorf("error reading specs: %w", err)
} }
obj := fr.SpecExists(aus, true, true) obj := fr.SpecExists(aus, true, true)
@@ -172,7 +173,7 @@ func CreateArchive(client cmd.Client, input cli.Input, includeFiles []string, no
// save the uploadspec // save the uploadspec
err := spec.SpecSave(*aus, specFile, false) err := spec.SpecSave(*aus, specFile, false)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error saving archive spec") return nil, fmt.Errorf("error saving archive spec: %w", err)
} }
} }
} }
@@ -208,14 +209,14 @@ func makeArchiveFile(ctx context.Context, archiveNameHint string, archiveInput [
// Get files from inputs as number of files decide next steps // Get files from inputs as number of files decide next steps
files, err := utils.FindAllGlobs(archiveInput...) files, err := utils.FindAllGlobs(archiveInput...)
if err != nil { if err != nil {
return "", errors.Wrap(err, "error finding all globs") return "", fmt.Errorf("error finding all globs: %w", err)
} }
// We have one file; if it's a zip file, no need to archive it // We have one file; if it's a zip file, no need to archive it
if len(files) == 1 { if len(files) == 1 {
// make sure it exists // make sure it exists
if _, err := os.Stat(files[0]); err != nil { if _, err := os.Stat(files[0]); err != nil {
return "", errors.Wrapf(err, "open input file %v", files[0]) return "", fmt.Errorf("open input file %v: %w", files[0], err)
} }
// if it's an existing zip file OR we're not supposed to zip it, don't do anything // if it's an existing zip file OR we're not supposed to zip it, don't do anything
@@ -227,12 +228,12 @@ func makeArchiveFile(ctx context.Context, archiveNameHint string, archiveInput [
// For anything else, create a new archive // For anything else, create a new archive
tmpDir, err := utils.GetTempDir() tmpDir, err := utils.GetTempDir()
if err != nil { if err != nil {
return "", errors.Wrap(err, "error create temporary archive directory") return "", fmt.Errorf("error create temporary archive directory: %w", err)
} }
archivePath, err := utils.MakeZipArchiveWithGlobs(ctx, filepath.Join(tmpDir, archiveFileName), archiveInput...) archivePath, err := utils.MakeZipArchiveWithGlobs(ctx, filepath.Join(tmpDir, archiveFileName), archiveInput...)
if err != nil { if err != nil {
return "", errors.Wrap(err, "create archive file") return "", fmt.Errorf("create archive file: %w", err)
} }
return archivePath, nil return archivePath, nil
+4 -5
View File
@@ -19,7 +19,6 @@ package _package
import ( import (
"fmt" "fmt"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -58,17 +57,17 @@ func (opts *RebuildSubCommand) complete(input cli.Input) (err error) {
func (opts *RebuildSubCommand) run(input cli.Input) error { func (opts *RebuildSubCommand) run(input cli.Input) error {
pkg, err := opts.Client().FissionClientSet.CoreV1().Packages(opts.namespace).Get(input.Context(), opts.name, metav1.GetOptions{}) pkg, err := opts.Client().FissionClientSet.CoreV1().Packages(opts.namespace).Get(input.Context(), opts.name, metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrapf(err, "package %s not found", opts.name) return fmt.Errorf("package %s not found: %w", opts.name, err)
} }
if pkg.Status.BuildStatus != fv1.BuildStatusFailed { if pkg.Status.BuildStatus != fv1.BuildStatusFailed {
return errors.New(fmt.Sprintf("Package %v is not in %v state.", return fmt.Errorf("Package %v is not in %v state.",
pkg.ObjectMeta.Name, fv1.BuildStatusFailed)) pkg.ObjectMeta.Name, fv1.BuildStatusFailed)
} }
_, err = updatePackageStatus(input.Context(), opts.Client(), pkg, fv1.BuildStatusPending) _, err = updatePackageStatus(input.Context(), opts.Client(), pkg, fv1.BuildStatusPending)
if err != nil { if err != nil {
return errors.Wrap(err, "update package status") return fmt.Errorf("update package status: %w", err)
} }
fmt.Printf("Retrying build for pkg %v. Use \"fission pkg info --name %v\" to view status.\n", pkg.ObjectMeta.Name, pkg.ObjectMeta.Name) fmt.Printf("Retrying build for pkg %v. Use \"fission pkg info --name %v\" to view status.\n", pkg.ObjectMeta.Name, pkg.ObjectMeta.Name)
+13 -12
View File
@@ -21,8 +21,9 @@ import (
"fmt" "fmt"
"time" "time"
"errors"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -66,29 +67,29 @@ func (opts *UpdateSubCommand) run(input cli.Input) error {
pkgName := input.String(flagkey.PkgName) pkgName := input.String(flagkey.PkgName)
pkg, err := opts.Client().FissionClientSet.CoreV1().Packages(opts.pkgNamespace).Get(input.Context(), opts.pkgName, metav1.GetOptions{}) pkg, err := opts.Client().FissionClientSet.CoreV1().Packages(opts.pkgNamespace).Get(input.Context(), opts.pkgName, metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting package") return fmt.Errorf("error getting package: %w", err)
} }
forceUpdate := input.Bool(flagkey.PkgForce) forceUpdate := input.Bool(flagkey.PkgForce)
fnList, err := GetFunctionsByPackage(input.Context(), opts.Client(), pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace) fnList, err := GetFunctionsByPackage(input.Context(), opts.Client(), pkg.ObjectMeta.Name, pkg.ObjectMeta.Namespace)
if err != nil { if err != nil {
return errors.Wrap(err, "error getting function list") return fmt.Errorf("error getting function list: %w", err)
} }
if !forceUpdate && len(fnList) > 1 { if !forceUpdate && len(fnList) > 1 {
return errors.Errorf("package is used by multiple functions, use --%v to force update", flagkey.PkgForce) return fmt.Errorf("package is used by multiple functions, use --%v to force update", flagkey.PkgForce)
} }
specFile := fmt.Sprintf("package-%s.yaml", pkgName) specFile := fmt.Sprintf("package-%s.yaml", pkgName)
newPkgMeta, err := UpdatePackage(input, opts.Client(), specFile, pkg) newPkgMeta, err := UpdatePackage(input, opts.Client(), specFile, pkg)
if err != nil { if err != nil {
return errors.Wrap(err, "error updating package") return fmt.Errorf("error updating package: %w", err)
} }
if pkg.ObjectMeta.ResourceVersion != newPkgMeta.ResourceVersion { if pkg.ObjectMeta.ResourceVersion != newPkgMeta.ResourceVersion {
err = UpdateFunctionPackageResourceVersion(input.Context(), opts.Client(), newPkgMeta, fnList...) err = UpdateFunctionPackageResourceVersion(input.Context(), opts.Client(), newPkgMeta, fnList...)
if err != nil { if err != nil {
return errors.Wrap(err, "error updating function package reference resource version") return fmt.Errorf("error updating function package reference resource version: %w", err)
} }
} }
@@ -130,7 +131,7 @@ func UpdatePackage(input cli.Input, client cmd.Client, specFile string, pkg *fv1
if input.IsSet(flagkey.PkgSrcArchive) { if input.IsSet(flagkey.PkgSrcArchive) {
srcArchive, err := CreateArchive(client, input, srcArchiveFiles, noZip, insecure, srcChecksum, "", "") srcArchive, err := CreateArchive(client, input, srcArchiveFiles, noZip, insecure, srcChecksum, "", "")
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error creating source archive") return nil, fmt.Errorf("error creating source archive: %w", err)
} }
pkg.Spec.Source = *srcArchive pkg.Spec.Source = *srcArchive
needToRebuild = true needToRebuild = true
@@ -146,7 +147,7 @@ func UpdatePackage(input cli.Input, client cmd.Client, specFile string, pkg *fv1
if input.IsSet(flagkey.PkgDeployArchive) || input.IsSet(flagkey.PkgCode) { if input.IsSet(flagkey.PkgDeployArchive) || input.IsSet(flagkey.PkgCode) {
deployArchive, err := CreateArchive(client, input, deployArchiveFiles, noZip, insecure, deployChecksum, "", "") deployArchive, err := CreateArchive(client, input, deployArchiveFiles, noZip, insecure, deployChecksum, "", "")
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error creating deploy archive") return nil, fmt.Errorf("error creating deploy archive: %w", err)
} }
pkg.Spec.Deployment = *deployArchive pkg.Spec.Deployment = *deployArchive
// Users may update the env, envNS and deploy archive at the same time, // Users may update the env, envNS and deploy archive at the same time,
@@ -178,7 +179,7 @@ func UpdatePackage(input cli.Input, client cmd.Client, specFile string, pkg *fv1
// if a package with the same spec exists, don't create a new spec file // if a package with the same spec exists, don't create a new spec file
fr, err := spec.ReadSpecs(util.GetSpecDir(input), util.GetSpecIgnore(input), false) fr, err := spec.ReadSpecs(util.GetSpecDir(input), util.GetSpecIgnore(input), false)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error reading specs") return nil, fmt.Errorf("error reading specs: %w", err)
} }
obj := fr.SpecExists(pkg, true, true) obj := fr.SpecExists(pkg, true, true)
@@ -190,14 +191,14 @@ func UpdatePackage(input cli.Input, client cmd.Client, specFile string, pkg *fv1
err = spec.SpecSave(*pkg, specFile, true) err = spec.SpecSave(*pkg, specFile, true)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error saving package spec") return nil, fmt.Errorf("error saving package spec: %w", err)
} }
return &pkg.ObjectMeta, nil return &pkg.ObjectMeta, nil
} }
newPkgMeta, err := client.FissionClientSet.CoreV1().Packages(pkg.ObjectMeta.Namespace).Update(input.Context(), pkg, metav1.UpdateOptions{}) newPkgMeta, err := client.FissionClientSet.CoreV1().Packages(pkg.ObjectMeta.Namespace).Update(input.Context(), pkg, metav1.UpdateOptions{})
if err != nil { if err != nil {
return nil, errors.Wrap(err, "update package") return nil, fmt.Errorf("update package: %w", err)
} }
fmt.Printf("Package '%v' updated\n", newPkgMeta.GetName()) fmt.Printf("Package '%v' updated\n", newPkgMeta.GetName())
@@ -213,7 +214,7 @@ func UpdateFunctionPackageResourceVersion(ctx context.Context, client cmd.Client
fn.Spec.Package.PackageRef.ResourceVersion = pkgMeta.ResourceVersion fn.Spec.Package.PackageRef.ResourceVersion = pkgMeta.ResourceVersion
_, err := client.FissionClientSet.CoreV1().Functions(fn.ObjectMeta.Namespace).Update(ctx, &fn, metav1.UpdateOptions{}) _, err := client.FissionClientSet.CoreV1().Functions(fn.ObjectMeta.Namespace).Update(ctx, &fn, metav1.UpdateOptions{})
if err != nil { if err != nil {
errs = multierror.Append(errs, errors.Wrapf(err, "error updating package resource version of function '%v'", fn.ObjectMeta.Name)) errs = multierror.Append(errs, fmt.Errorf("error updating package resource version of function '%v': %w", fn.ObjectMeta.Name, err))
} }
} }
+8 -10
View File
@@ -26,8 +26,6 @@ import (
"strings" "strings"
"text/tabwriter" "text/tabwriter"
"github.com/pkg/errors"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
"github.com/fission/fission/pkg/fission-cli/cmd" "github.com/fission/fission/pkg/fission-cli/cmd"
"github.com/fission/fission/pkg/fission-cli/util" "github.com/fission/fission/pkg/fission-cli/util"
@@ -53,19 +51,19 @@ func UploadArchiveFile(ctx context.Context, client cmd.Client, fileName string)
} else { } else {
storagesvcURL, err := util.GetStorageURL(ctx, client) storagesvcURL, err := util.GetStorageURL(ctx, client)
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "error getting fission storage service URL") return nil, fmt.Errorf("error getting fission storage service URL: %w", err)
} }
storageClient := storageSvcClient.MakeClient(storagesvcURL.String()) storageClient := storageSvcClient.MakeClient(storagesvcURL.String())
// TODO add a progress bar // TODO add a progress bar
id, err := storageClient.Upload(ctx, fileName, nil) id, err := storageClient.Upload(ctx, fileName, nil)
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "error uploading to fission storage service") return nil, fmt.Errorf("error uploading to fission storage service: %w", err)
} }
archiveURL, err := getArchiveURL(ctx, client, id, storagesvcURL) archiveURL, err := getArchiveURL(ctx, client, id, storagesvcURL)
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "could not get URL of archive") return nil, fmt.Errorf("could not get URL of archive: %w", err)
} }
archive.Type = fv1.ArchiveTypeUrl archive.Type = fv1.ArchiveTypeUrl
@@ -73,7 +71,7 @@ func UploadArchiveFile(ctx context.Context, client cmd.Client, fileName string)
csum, err := utils.GetFileChecksum(fileName) csum, err := utils.GetFileChecksum(fileName)
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "calculate checksum for file %v", fileName) return nil, fmt.Errorf("calculate checksum for file %v: %w", fileName, err)
} }
archive.Checksum = *csum archive.Checksum = *csum
@@ -121,7 +119,7 @@ func getArchiveURL(ctx context.Context, client cmd.Client, archiveID string, ser
func GetContents(filePath string) ([]byte, error) { func GetContents(filePath string) ([]byte, error) {
code, err := os.ReadFile(filePath) code, err := os.ReadFile(filePath)
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "error reading %v", filePath) return nil, fmt.Errorf("error reading %v: %w", filePath, err)
} }
return code, nil return code, nil
} }
@@ -131,13 +129,13 @@ func GetContents(filePath string) ([]byte, error) {
func DownloadToTempFile(fileUrl string) (string, error) { func DownloadToTempFile(fileUrl string) (string, error) {
reader, err := DownloadURL(fileUrl) reader, err := DownloadURL(fileUrl)
if err != nil { if err != nil {
return "", errors.Wrapf(err, "error downloading from url: %v", fileUrl) return "", fmt.Errorf("error downloading from url: %v: %w", fileUrl, err)
} }
defer reader.Close() defer reader.Close()
tmpDir, err := utils.GetTempDir() tmpDir, err := utils.GetTempDir()
if err != nil { if err != nil {
return "", errors.Wrapf(err, "error creating temp directory %v", tmpDir) return "", fmt.Errorf("error creating temp directory %v: %w", tmpDir, err)
} }
tmpFilename := uuid.NewString() tmpFilename := uuid.NewString()
@@ -145,7 +143,7 @@ func DownloadToTempFile(fileUrl string) (string, error) {
err = WriteArchiveToFile(destination, reader) err = WriteArchiveToFile(destination, reader)
if err != nil { if err != nil {
return "", errors.Wrapf(err, "error writing archive to file %v", destination) return "", fmt.Errorf("error writing archive to file %v: %w", destination, err)
} }
return destination, nil return destination, nil
+23 -24
View File
@@ -27,7 +27,6 @@ import (
"github.com/fsnotify/fsnotify" "github.com/fsnotify/fsnotify"
"github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8sCache "k8s.io/client-go/tools/cache" k8sCache "k8s.io/client-go/tools/cache"
@@ -145,14 +144,14 @@ func (opts *ApplySubCommand) run(input cli.Input) error {
var err error var err error
watcher, err = fsnotify.NewWatcher() watcher, err = fsnotify.NewWatcher()
if err != nil { if err != nil {
return errors.Wrap(err, "error creating file watcher") return fmt.Errorf("error creating file watcher: %w", err)
} }
// add watches // add watches
rootDir := filepath.Clean(specDir + "/..") rootDir := filepath.Clean(specDir + "/..")
err = filepath.Walk(rootDir, func(path string, info os.FileInfo, err error) error { err = filepath.Walk(rootDir, func(path string, info os.FileInfo, err error) error {
if err != nil { if err != nil {
return errors.Wrap(err, "error scanning project files") return fmt.Errorf("error scanning project files: %w", err)
} }
if ignoreFile(path) { if ignoreFile(path) {
@@ -161,12 +160,12 @@ func (opts *ApplySubCommand) run(input cli.Input) error {
err = watcher.Add(path) err = watcher.Add(path)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error watching path %v", path)) return fmt.Errorf("error watching path %v: %w", path, err)
} }
return nil return nil
}) })
if err != nil { if err != nil {
return errors.Wrap(err, "error scanning files to watch") return fmt.Errorf("error scanning files to watch: %w", err)
} }
} }
@@ -174,19 +173,19 @@ func (opts *ApplySubCommand) run(input cli.Input) error {
// read all specs // read all specs
fr, err := ReadSpecs(specDir, specIgnore, applyCommitLabel) fr, err := ReadSpecs(specDir, specIgnore, applyCommitLabel)
if err != nil { if err != nil {
return errors.Wrap(err, "error reading specs") return fmt.Errorf("error reading specs: %w", err)
} }
if validateSpecs { if validateSpecs {
err = validateForApply(input, fr) err = validateForApply(input, fr)
if err != nil { if err != nil {
return errors.Wrap(err, "abort applying resources") return fmt.Errorf("abort applying resources: %w", err)
} }
} }
err = opts.insertNamespace(input, fr) err = opts.insertNamespace(input, fr)
if err != nil { if err != nil {
return errors.Wrap(err, "error inserting namespace") return fmt.Errorf("error inserting namespace: %w", err)
} }
err = warnIfDirtyWorkTree(filepath.Clean(specDir + "/..")) err = warnIfDirtyWorkTree(filepath.Clean(specDir + "/.."))
@@ -197,7 +196,7 @@ func (opts *ApplySubCommand) run(input cli.Input) error {
// make changes to the cluster based on the specs // make changes to the cluster based on the specs
pkgMetas, as, err := applyResources(input, opts.Client(), specDir, fr, deleteResources, input.Bool(flagkey.SpecAllowConflicts)) pkgMetas, as, err := applyResources(input, opts.Client(), specDir, fr, deleteResources, input.Bool(flagkey.SpecAllowConflicts))
if err != nil { if err != nil {
return errors.Wrap(err, "error applying specs") return fmt.Errorf("error applying specs: %w", err)
} }
printApplyStatus(as) printApplyStatus(as)
@@ -239,7 +238,7 @@ func (opts *ApplySubCommand) run(input cli.Input) error {
err = waitForFileWatcherToSettleDown(watcher) err = waitForFileWatcherToSettleDown(watcher)
if err != nil { if err != nil {
return errors.Wrap(err, "error watching files") return fmt.Errorf("error watching files: %w", err)
} }
break waitloop break waitloop
@@ -247,7 +246,7 @@ func (opts *ApplySubCommand) run(input cli.Input) error {
pkgWatchCancel() pkgWatchCancel()
if err != nil { if err != nil {
return errors.Wrap(err, "error watching files") return fmt.Errorf("error watching files: %w", err)
} }
} }
} }
@@ -408,7 +407,7 @@ func applyArchives(input cli.Input, fclient cmd.Client, specDir string, fr *Fiss
if strings.HasPrefix(ar.URL, ARCHIVE_URL_PREFIX) { if strings.HasPrefix(ar.URL, ARCHIVE_URL_PREFIX) {
availableAr, ok := archiveFiles[ar.URL] availableAr, ok := archiveFiles[ar.URL]
if !ok { if !ok {
return errors.Errorf("unknown archive name %v", strings.TrimPrefix(ar.URL, ARCHIVE_URL_PREFIX)) return fmt.Errorf("unknown archive name %v", strings.TrimPrefix(ar.URL, ARCHIVE_URL_PREFIX))
} }
ar.Type = availableAr.Type ar.Type = availableAr.Type
ar.Literal = availableAr.Literal ar.Literal = availableAr.Literal
@@ -433,13 +432,13 @@ func applyResources(input cli.Input, fclient cmd.Client, specDir string, fr *Fis
_, ras, err := applyEnvironments(input.Context(), fclient, fr, delete, specAllowConflicts) _, ras, err := applyEnvironments(input.Context(), fclient, fr, delete, specAllowConflicts)
if err != nil { if err != nil {
return nil, nil, errors.Wrap(err, "environment apply failed") return nil, nil, fmt.Errorf("environment apply failed: %w", err)
} }
applyStatus["environment"] = *ras applyStatus["environment"] = *ras
pkgMeta, ras, err := applyPackages(input.Context(), fclient, fr, delete, specAllowConflicts) pkgMeta, ras, err := applyPackages(input.Context(), fclient, fr, delete, specAllowConflicts)
if err != nil { if err != nil {
return nil, nil, errors.Wrap(err, "package apply failed") return nil, nil, fmt.Errorf("package apply failed: %w", err)
} }
applyStatus["package"] = *ras applyStatus["package"] = *ras
@@ -460,7 +459,7 @@ func applyResources(input cli.Input, fclient cmd.Client, specDir string, fr *Fis
// spec. It may exist outside the spec, but we're going to treat // spec. It may exist outside the spec, but we're going to treat
// that as an error, so that we encourage self-contained specs. // that as an error, so that we encourage self-contained specs.
// Is there a good use case for non-self contained specs? // Is there a good use case for non-self contained specs?
return nil, nil, errors.Errorf("function %v/%v references package %v/%v, which doesn't exist in the specs", return nil, nil, fmt.Errorf("function %v/%v references package %v/%v, which doesn't exist in the specs",
f.ObjectMeta.Namespace, f.ObjectMeta.Name, f.Spec.Package.PackageRef.Namespace, f.Spec.Package.PackageRef.Name) f.ObjectMeta.Namespace, f.ObjectMeta.Name, f.Spec.Package.PackageRef.Namespace, f.Spec.Package.PackageRef.Name)
} }
fr.Functions[i].Spec.Package.PackageRef.ResourceVersion = m.ResourceVersion fr.Functions[i].Spec.Package.PackageRef.ResourceVersion = m.ResourceVersion
@@ -468,31 +467,31 @@ func applyResources(input cli.Input, fclient cmd.Client, specDir string, fr *Fis
_, ras, err = applyFunctions(input.Context(), fclient, fr, delete, specAllowConflicts) _, ras, err = applyFunctions(input.Context(), fclient, fr, delete, specAllowConflicts)
if err != nil { if err != nil {
return nil, nil, errors.Wrap(err, "function apply failed") return nil, nil, fmt.Errorf("function apply failed: %w", err)
} }
applyStatus["function"] = *ras applyStatus["function"] = *ras
_, ras, err = applyHTTPTriggers(input.Context(), fclient, fr, delete, specAllowConflicts) _, ras, err = applyHTTPTriggers(input.Context(), fclient, fr, delete, specAllowConflicts)
if err != nil { if err != nil {
return nil, nil, errors.Wrap(err, "HTTPTrigger apply failed") return nil, nil, fmt.Errorf("HTTPTrigger apply failed: %w", err)
} }
applyStatus["HTTPTrigger"] = *ras applyStatus["HTTPTrigger"] = *ras
_, ras, err = applyKubernetesWatchTriggers(input.Context(), fclient, fr, delete, specAllowConflicts) _, ras, err = applyKubernetesWatchTriggers(input.Context(), fclient, fr, delete, specAllowConflicts)
if err != nil { if err != nil {
return nil, nil, errors.Wrap(err, "KubernetesWatchTrigger apply failed") return nil, nil, fmt.Errorf("KubernetesWatchTrigger apply failed: %w", err)
} }
applyStatus["KubernetesWatchTrigger"] = *ras applyStatus["KubernetesWatchTrigger"] = *ras
_, ras, err = applyTimeTriggers(input.Context(), fclient, fr, delete, specAllowConflicts) _, ras, err = applyTimeTriggers(input.Context(), fclient, fr, delete, specAllowConflicts)
if err != nil { if err != nil {
return nil, nil, errors.Wrap(err, "TimeTrigger apply failed") return nil, nil, fmt.Errorf("TimeTrigger apply failed: %w", err)
} }
applyStatus["TimeTrigger"] = *ras applyStatus["TimeTrigger"] = *ras
_, ras, err = applyMessageQueueTriggers(input.Context(), fclient, fr, delete, specAllowConflicts) _, ras, err = applyMessageQueueTriggers(input.Context(), fclient, fr, delete, specAllowConflicts)
if err != nil { if err != nil {
return nil, nil, errors.Wrap(err, "MessageQueueTrigger apply failed") return nil, nil, fmt.Errorf("MessageQueueTrigger apply failed: %w", err)
} }
applyStatus["MessageQueueTrigger"] = *ras applyStatus["MessageQueueTrigger"] = *ras
@@ -526,14 +525,14 @@ func localArchiveFromSpec(ctx context.Context, specDir string, aus *spectypes.Ar
console.Verbose(2, "try to find globs in path '%v'", absGlob) console.Verbose(2, "try to find globs in path '%v'", absGlob)
fs, err := utils.FindAllGlobs(absGlob) fs, err := utils.FindAllGlobs(absGlob)
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "Invalid glob in archive %v: %v", aus.Name, relativeGlob) return nil, fmt.Errorf("Invalid glob in archive %v: %v: %w", aus.Name, relativeGlob, err)
} }
files = append(files, fs...) files = append(files, fs...)
} }
} }
if len(files) == 0 { if len(files) == 0 {
return nil, errors.Errorf("archive '%v' is empty", aus.Name) return nil, fmt.Errorf("archive '%v' is empty", aus.Name)
} }
// if it's just one file, use its path directly // if it's just one file, use its path directly
@@ -585,7 +584,7 @@ func localArchiveFromSpec(ctx context.Context, specDir string, aus *spectypes.Ar
// checksum // checksum
csum, err := utils.GetFileChecksum(archiveFileName) csum, err := utils.GetFileChecksum(archiveFileName)
if err != nil { if err != nil {
return nil, errors.Errorf("failed to calculate archive checksum for %v (%v): %v", aus.Name, archiveFileName, err) return nil, fmt.Errorf("failed to calculate archive checksum for %v (%v): %v", aus.Name, archiveFileName, err)
} }
// archive object // archive object
@@ -626,7 +625,7 @@ func waitForPackageBuild(ctx context.Context, fclient cmd.Client, pkg *fv1.Packa
return pkg, nil return pkg, nil
} }
if time.Since(start) > 5*time.Minute { if time.Since(start) > 5*time.Minute {
return nil, errors.Errorf("package %v has been building for a while, giving up on waiting for it", pkg.ObjectMeta.Name) return nil, fmt.Errorf("package %v has been building for a while, giving up on waiting for it", pkg.ObjectMeta.Name)
} }
// TODO watch instead // TODO watch instead
+18 -19
View File
@@ -21,7 +21,6 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8sCache "k8s.io/client-go/tools/cache" k8sCache "k8s.io/client-go/tools/cache"
@@ -55,13 +54,13 @@ func (opts *DestroySubCommand) run(input cli.Input) error {
// read everything // read everything
fr, err := ReadSpecs(specDir, specIgnore, false) fr, err := ReadSpecs(specDir, specIgnore, false)
if err != nil { if err != nil {
return errors.Wrap(err, "error reading specs") return fmt.Errorf("error reading specs: %w", err)
} }
if !input.Bool(flagkey.ForceDelete) { if !input.Bool(flagkey.ForceDelete) {
err = opts.insertNSToResource(input, fr) err = opts.insertNSToResource(input, fr)
if err != nil { if err != nil {
return errors.Wrap(err, "error adding namespace") return fmt.Errorf("error adding namespace: %w", err)
} }
} else { } else {
// if force delete set to true we fetch all resources with our deployment ID and delete them // if force delete set to true we fetch all resources with our deployment ID and delete them
@@ -72,14 +71,14 @@ func (opts *DestroySubCommand) run(input cli.Input) error {
// "apply" the empty state // "apply" the empty state
err = forceDeleteResources(input.Context(), opts.Client(), &emptyFr) err = forceDeleteResources(input.Context(), opts.Client(), &emptyFr)
if err != nil { if err != nil {
return errors.Wrap(err, "error deleting resources") return fmt.Errorf("error deleting resources: %w", err)
} }
return nil return nil
} }
forceDelete := input.Bool(flagkey.ForceDelete) forceDelete := input.Bool(flagkey.ForceDelete)
err = deleteResources(input.Context(), opts.Client(), fr, forceDelete) err = deleteResources(input.Context(), opts.Client(), fr, forceDelete)
if err != nil { if err != nil {
return errors.Wrap(err, "error deleting resources") return fmt.Errorf("error deleting resources: %w", err)
} }
return nil return nil
@@ -91,37 +90,37 @@ func forceDeleteResources(ctx context.Context, fclient cmd.Client, fr *FissionRe
_, _, err = applyHTTPTriggers(ctx, fclient, fr, true, false) _, _, err = applyHTTPTriggers(ctx, fclient, fr, true, false)
if err != nil { if err != nil {
return errors.Wrap(err, "HTTPTrigger delete failed") return fmt.Errorf("HTTPTrigger delete failed: %w", err)
} }
_, _, err = applyKubernetesWatchTriggers(ctx, fclient, fr, true, false) _, _, err = applyKubernetesWatchTriggers(ctx, fclient, fr, true, false)
if err != nil { if err != nil {
return errors.Wrap(err, "KubernetesWatchTrigger delete failed") return fmt.Errorf("KubernetesWatchTrigger delete failed: %w", err)
} }
_, _, err = applyTimeTriggers(ctx, fclient, fr, true, false) _, _, err = applyTimeTriggers(ctx, fclient, fr, true, false)
if err != nil { if err != nil {
return errors.Wrap(err, "TimeTrigger delete failed") return fmt.Errorf("TimeTrigger delete failed: %w", err)
} }
_, _, err = applyMessageQueueTriggers(ctx, fclient, fr, true, false) _, _, err = applyMessageQueueTriggers(ctx, fclient, fr, true, false)
if err != nil { if err != nil {
return errors.Wrap(err, "MessageQueueTrigger delete failed") return fmt.Errorf("MessageQueueTrigger delete failed: %w", err)
} }
_, _, err = applyFunctions(ctx, fclient, fr, true, false) _, _, err = applyFunctions(ctx, fclient, fr, true, false)
if err != nil { if err != nil {
return errors.Wrap(err, "function delete failed") return fmt.Errorf("function delete failed: %w", err)
} }
_, _, err = applyPackages(ctx, fclient, fr, true, false) _, _, err = applyPackages(ctx, fclient, fr, true, false)
if err != nil { if err != nil {
return errors.Wrap(err, "package delete failed") return fmt.Errorf("package delete failed: %w", err)
} }
_, _, err = applyEnvironments(ctx, fclient, fr, true, false) _, _, err = applyEnvironments(ctx, fclient, fr, true, false)
if err != nil { if err != nil {
return errors.Wrap(err, "environment delete failed") return fmt.Errorf("environment delete failed: %w", err)
} }
return nil return nil
@@ -183,37 +182,37 @@ func deleteResources(ctx context.Context, fclient cmd.Client, fr *FissionResourc
err = destroyHTTPTriggers(ctx, fclient, fr) err = destroyHTTPTriggers(ctx, fclient, fr)
if err != nil { if err != nil {
return errors.Wrap(err, "HTTPTrigger delete failed") return fmt.Errorf("HTTPTrigger delete failed: %w", err)
} }
err = destroyKubernetesWatchTriggers(ctx, fclient, fr) err = destroyKubernetesWatchTriggers(ctx, fclient, fr)
if err != nil { if err != nil {
return errors.Wrap(err, "KubernetesWatchTrigger delete failed") return fmt.Errorf("KubernetesWatchTrigger delete failed: %w", err)
} }
err = destroyTimeTriggers(ctx, fclient, fr) err = destroyTimeTriggers(ctx, fclient, fr)
if err != nil { if err != nil {
return errors.Wrap(err, "TimeTrigger delete failed") return fmt.Errorf("TimeTrigger delete failed: %w", err)
} }
err = destroyMessageQueueTriggers(ctx, fclient, fr) err = destroyMessageQueueTriggers(ctx, fclient, fr)
if err != nil { if err != nil {
return errors.Wrap(err, "MessageQueueTrigger delete failed") return fmt.Errorf("MessageQueueTrigger delete failed: %w", err)
} }
err = destroyFunctions(ctx, fclient, fr) err = destroyFunctions(ctx, fclient, fr)
if err != nil { if err != nil {
return errors.Wrap(err, "function delete failed") return fmt.Errorf("function delete failed: %w", err)
} }
err = destroyPackages(ctx, fclient, fr) err = destroyPackages(ctx, fclient, fr)
if err != nil { if err != nil {
return errors.Wrap(err, "package delete failed") return fmt.Errorf("package delete failed: %w", err)
} }
err = destroyEnvironments(ctx, fclient, fr) err = destroyEnvironments(ctx, fclient, fr)
if err != nil { if err != nil {
return errors.Wrap(err, "environment delete failed") return fmt.Errorf("environment delete failed: %w", err)
} }
return nil return nil
+4 -5
View File
@@ -21,7 +21,6 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"github.com/pkg/errors"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -58,7 +57,7 @@ func (opts *InitSubCommand) complete(input cli.Input) error {
// come up with a name using the current dir // come up with a name using the current dir
dir, err := filepath.Abs(".") dir, err := filepath.Abs(".")
if err != nil { if err != nil {
return errors.Wrap(err, "error getting current working directory") return fmt.Errorf("error getting current working directory: %w", err)
} }
basename := filepath.Base(dir) basename := filepath.Base(dir)
name = util.KubifyName(basename) name = util.KubifyName(basename)
@@ -73,7 +72,7 @@ func (opts *InitSubCommand) complete(input cli.Input) error {
fmt.Printf("Creating fission spec directory '%v'\n", specDir) fmt.Printf("Creating fission spec directory '%v'\n", specDir)
err := os.MkdirAll(specDir, 0755) err := os.MkdirAll(specDir, 0755)
if err != nil { if err != nil {
return errors.Wrapf(err, "create spec directory '%v'", specDir) return fmt.Errorf("create spec directory '%v': %w", specDir, err)
} }
// Write the deployment config // Write the deployment config
@@ -101,7 +100,7 @@ func (opts *InitSubCommand) run(input cli.Input) error {
config := filepath.Join(specDir, "fission-deployment-config.yaml") config := filepath.Join(specDir, "fission-deployment-config.yaml")
if _, err := os.Stat(config); err == nil { if _, err := os.Stat(config); err == nil {
return errors.Errorf("Spec DeploymentConfig already exists in directory '%v'", specDir) return fmt.Errorf("Spec DeploymentConfig already exists in directory '%v'", specDir)
} }
// Add a bit of documentation to the spec dir here // Add a bit of documentation to the spec dir here
@@ -112,7 +111,7 @@ func (opts *InitSubCommand) run(input cli.Input) error {
err = writeDeploymentConfig(config, opts.deployConfig) err = writeDeploymentConfig(config, opts.deployConfig)
if err != nil { if err != nil {
return errors.Wrap(err, "error writing deployment config") return fmt.Errorf("error writing deployment config: %w", err)
} }
// Other possible things to do here: // Other possible things to do here:
+17 -18
View File
@@ -24,7 +24,6 @@ import (
"text/tabwriter" "text/tabwriter"
"time" "time"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -56,7 +55,7 @@ func (opts *ListSubCommand) run(input cli.Input) error {
specIgnore := util.GetSpecIgnore(input) specIgnore := util.GetSpecIgnore(input)
fr, err := ReadSpecs(specDir, specIgnore, false) fr, err := ReadSpecs(specDir, specIgnore, false)
if err != nil { if err != nil {
return errors.Wrap(err, "error reading specs") return fmt.Errorf("error reading specs: %w", err)
} }
deployID = fr.DeploymentConfig.UID deployID = fr.DeploymentConfig.UID
} }
@@ -83,7 +82,7 @@ func (opts *ListSubCommand) getResource(input cli.Input, namespace string, deplo
allfn, err = getAllFunctions(input.Context(), opts.Client(), namespace) allfn, err = getAllFunctions(input.Context(), opts.Client(), namespace)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error getting Functions from %s namespaces", printNS)) return fmt.Errorf("error getting Functions from %s namespaces: %w", printNS, err)
} }
specfns := getAppliedFunctions(allfn, deployID) specfns := getAppliedFunctions(allfn, deployID)
ShowFunctions(specfns) ShowFunctions(specfns)
@@ -91,7 +90,7 @@ func (opts *ListSubCommand) getResource(input cli.Input, namespace string, deplo
var allenvs []fv1.Environment var allenvs []fv1.Environment
allenvs, err = getAllEnvironments(input.Context(), opts.Client(), namespace) allenvs, err = getAllEnvironments(input.Context(), opts.Client(), namespace)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error getting Environments from %s namespaces", printNS)) return fmt.Errorf("error getting Environments from %s namespaces: %w", printNS, err)
} }
specenvs := getAppliedEnvironments(allenvs, deployID) specenvs := getAppliedEnvironments(allenvs, deployID)
ShowEnvironments(specenvs) ShowEnvironments(specenvs)
@@ -99,7 +98,7 @@ func (opts *ListSubCommand) getResource(input cli.Input, namespace string, deplo
var pkglists []fv1.Package var pkglists []fv1.Package
pkglists, err = getAllPackages(input.Context(), opts.Client(), namespace) pkglists, err = getAllPackages(input.Context(), opts.Client(), namespace)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error getting Packages from %s namespaces", printNS)) return fmt.Errorf("error getting Packages from %s namespaces: %w", printNS, err)
} }
specPkgs := getAppliedPackages(pkglists, deployID) specPkgs := getAppliedPackages(pkglists, deployID)
ShowPackages(specPkgs) ShowPackages(specPkgs)
@@ -107,7 +106,7 @@ func (opts *ListSubCommand) getResource(input cli.Input, namespace string, deplo
var canaryCfgs []fv1.CanaryConfig var canaryCfgs []fv1.CanaryConfig
canaryCfgs, err = getAllCanaryConfigs(input.Context(), opts.Client(), namespace) canaryCfgs, err = getAllCanaryConfigs(input.Context(), opts.Client(), namespace)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error getting Canary Config from %s namespaces", printNS)) return fmt.Errorf("error getting Canary Config from %s namespaces: %w", printNS, err)
} }
specCanaryCfgs := getAppliedCanaryConfigs(canaryCfgs, deployID) specCanaryCfgs := getAppliedCanaryConfigs(canaryCfgs, deployID)
ShowCanaryConfigs(specCanaryCfgs) ShowCanaryConfigs(specCanaryCfgs)
@@ -115,7 +114,7 @@ func (opts *ListSubCommand) getResource(input cli.Input, namespace string, deplo
var hts []fv1.HTTPTrigger var hts []fv1.HTTPTrigger
hts, err = getAllHTTPTriggers(input.Context(), opts.Client(), namespace) hts, err = getAllHTTPTriggers(input.Context(), opts.Client(), namespace)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error getting HTTP Triggers from %s namespaces", printNS)) return fmt.Errorf("error getting HTTP Triggers from %s namespaces: %w", printNS, err)
} }
specHTTPTriggers := getAppliedHTTPTriggers(hts, deployID) specHTTPTriggers := getAppliedHTTPTriggers(hts, deployID)
ShowHTTPTriggers(specHTTPTriggers) ShowHTTPTriggers(specHTTPTriggers)
@@ -123,7 +122,7 @@ func (opts *ListSubCommand) getResource(input cli.Input, namespace string, deplo
var mqts []fv1.MessageQueueTrigger var mqts []fv1.MessageQueueTrigger
mqts, err = getAllMessageQueueTriggers(input.Context(), opts.Client(), input.String(flagkey.MqtMQType), namespace) mqts, err = getAllMessageQueueTriggers(input.Context(), opts.Client(), input.String(flagkey.MqtMQType), namespace)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error getting MessageQueue Triggers from %s namespaces", printNS)) return fmt.Errorf("error getting MessageQueue Triggers from %s namespaces: %w", printNS, err)
} }
specMessageQueueTriggers := getAppliedMessageQueueTriggers(mqts, deployID) specMessageQueueTriggers := getAppliedMessageQueueTriggers(mqts, deployID)
ShowMQTriggers(specMessageQueueTriggers) ShowMQTriggers(specMessageQueueTriggers)
@@ -131,7 +130,7 @@ func (opts *ListSubCommand) getResource(input cli.Input, namespace string, deplo
var tts []fv1.TimeTrigger var tts []fv1.TimeTrigger
tts, err = getAllTimeTriggers(input.Context(), opts.Client(), namespace) tts, err = getAllTimeTriggers(input.Context(), opts.Client(), namespace)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error getting Time Triggers from %s namespaces", printNS)) return fmt.Errorf("error getting Time Triggers from %s namespaces: %w", printNS, err)
} }
specTimeTriggers := getAppliedTimeTriggers(tts, deployID) specTimeTriggers := getAppliedTimeTriggers(tts, deployID)
ShowTimeTriggers(specTimeTriggers) ShowTimeTriggers(specTimeTriggers)
@@ -139,7 +138,7 @@ func (opts *ListSubCommand) getResource(input cli.Input, namespace string, deplo
var kws []fv1.KubernetesWatchTrigger var kws []fv1.KubernetesWatchTrigger
kws, err = getAllKubeWatchTriggers(input.Context(), opts.Client(), namespace) kws, err = getAllKubeWatchTriggers(input.Context(), opts.Client(), namespace)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error getting Kube Watchers from %s namespaces", printNS)) return fmt.Errorf("error getting Kube Watchers from %s namespaces: %w", printNS, err)
} }
specKubeWatchers := getSpecKubeWatchers(kws, deployID) specKubeWatchers := getSpecKubeWatchers(kws, deployID)
ShowAppliedKubeWatchers(specKubeWatchers) ShowAppliedKubeWatchers(specKubeWatchers)
@@ -424,7 +423,7 @@ func ShowAppliedKubeWatchers(ws []fv1.KubernetesWatchTrigger) {
func getAllFunctions(ctx context.Context, client cmd.Client, namespace string) ([]fv1.Function, error) { func getAllFunctions(ctx context.Context, client cmd.Client, namespace string) ([]fv1.Function, error) {
fns, err := client.FissionClientSet.CoreV1().Functions(namespace).List(ctx, metav1.ListOptions{}) fns, err := client.FissionClientSet.CoreV1().Functions(namespace).List(ctx, metav1.ListOptions{})
if err != nil { if err != nil {
return nil, errors.Errorf("Unable to get Functions %v", err.Error()) return nil, fmt.Errorf("Unable to get Functions %v", err.Error())
} }
return fns.Items, nil return fns.Items, nil
} }
@@ -433,7 +432,7 @@ func getAllFunctions(ctx context.Context, client cmd.Client, namespace string) (
func getAllEnvironments(ctx context.Context, client cmd.Client, namespace string) ([]fv1.Environment, error) { func getAllEnvironments(ctx context.Context, client cmd.Client, namespace string) ([]fv1.Environment, error) {
envs, err := client.FissionClientSet.CoreV1().Environments(namespace).List(ctx, metav1.ListOptions{}) envs, err := client.FissionClientSet.CoreV1().Environments(namespace).List(ctx, metav1.ListOptions{})
if err != nil { if err != nil {
return nil, errors.Errorf("Unable to get Environments %v", err.Error()) return nil, fmt.Errorf("Unable to get Environments %v", err.Error())
} }
return envs.Items, nil return envs.Items, nil
} }
@@ -442,7 +441,7 @@ func getAllEnvironments(ctx context.Context, client cmd.Client, namespace string
func getAllPackages(ctx context.Context, client cmd.Client, namespace string) ([]fv1.Package, error) { func getAllPackages(ctx context.Context, client cmd.Client, namespace string) ([]fv1.Package, error) {
pkgList, err := client.FissionClientSet.CoreV1().Packages(namespace).List(ctx, metav1.ListOptions{}) pkgList, err := client.FissionClientSet.CoreV1().Packages(namespace).List(ctx, metav1.ListOptions{})
if err != nil { if err != nil {
return nil, errors.Errorf("Unable to get Packages %v", err.Error()) return nil, fmt.Errorf("Unable to get Packages %v", err.Error())
} }
return pkgList.Items, nil return pkgList.Items, nil
} }
@@ -451,7 +450,7 @@ func getAllPackages(ctx context.Context, client cmd.Client, namespace string) ([
func getAllCanaryConfigs(ctx context.Context, client cmd.Client, namespace string) ([]fv1.CanaryConfig, error) { func getAllCanaryConfigs(ctx context.Context, client cmd.Client, namespace string) ([]fv1.CanaryConfig, error) {
canaryCfgs, err := client.FissionClientSet.CoreV1().CanaryConfigs(namespace).List(ctx, metav1.ListOptions{}) canaryCfgs, err := client.FissionClientSet.CoreV1().CanaryConfigs(namespace).List(ctx, metav1.ListOptions{})
if err != nil { if err != nil {
return nil, errors.Errorf("Unable to get Canary Configs %v", err.Error()) return nil, fmt.Errorf("Unable to get Canary Configs %v", err.Error())
} }
return canaryCfgs.Items, nil return canaryCfgs.Items, nil
} }
@@ -460,7 +459,7 @@ func getAllCanaryConfigs(ctx context.Context, client cmd.Client, namespace strin
func getAllHTTPTriggers(ctx context.Context, client cmd.Client, namespace string) ([]fv1.HTTPTrigger, error) { func getAllHTTPTriggers(ctx context.Context, client cmd.Client, namespace string) ([]fv1.HTTPTrigger, error) {
hts, err := client.FissionClientSet.CoreV1().HTTPTriggers(namespace).List(ctx, metav1.ListOptions{}) hts, err := client.FissionClientSet.CoreV1().HTTPTriggers(namespace).List(ctx, metav1.ListOptions{})
if err != nil { if err != nil {
return nil, errors.Errorf("Unable to get HTTP Triggers %v", err.Error()) return nil, fmt.Errorf("Unable to get HTTP Triggers %v", err.Error())
} }
return hts.Items, nil return hts.Items, nil
} }
@@ -469,7 +468,7 @@ func getAllHTTPTriggers(ctx context.Context, client cmd.Client, namespace string
func getAllMessageQueueTriggers(ctx context.Context, client cmd.Client, mqttype string, namespace string) ([]fv1.MessageQueueTrigger, error) { func getAllMessageQueueTriggers(ctx context.Context, client cmd.Client, mqttype string, namespace string) ([]fv1.MessageQueueTrigger, error) {
mqts, err := client.FissionClientSet.CoreV1().MessageQueueTriggers(namespace).List(ctx, metav1.ListOptions{}) mqts, err := client.FissionClientSet.CoreV1().MessageQueueTriggers(namespace).List(ctx, metav1.ListOptions{})
if err != nil { if err != nil {
return nil, errors.Errorf("Unable to get MessageQueue Triggers %v", err.Error()) return nil, fmt.Errorf("Unable to get MessageQueue Triggers %v", err.Error())
} }
return mqts.Items, nil return mqts.Items, nil
} }
@@ -478,7 +477,7 @@ func getAllMessageQueueTriggers(ctx context.Context, client cmd.Client, mqttype
func getAllTimeTriggers(ctx context.Context, client cmd.Client, namespace string) ([]fv1.TimeTrigger, error) { func getAllTimeTriggers(ctx context.Context, client cmd.Client, namespace string) ([]fv1.TimeTrigger, error) {
tts, err := client.FissionClientSet.CoreV1().TimeTriggers(namespace).List(ctx, metav1.ListOptions{}) tts, err := client.FissionClientSet.CoreV1().TimeTriggers(namespace).List(ctx, metav1.ListOptions{})
if err != nil { if err != nil {
return nil, errors.Errorf("Unable to get Time Triggers %v", err.Error()) return nil, fmt.Errorf("Unable to get Time Triggers %v", err.Error())
} }
return tts.Items, nil return tts.Items, nil
} }
@@ -487,7 +486,7 @@ func getAllTimeTriggers(ctx context.Context, client cmd.Client, namespace string
func getAllKubeWatchTriggers(ctx context.Context, client cmd.Client, namespace string) ([]fv1.KubernetesWatchTrigger, error) { func getAllKubeWatchTriggers(ctx context.Context, client cmd.Client, namespace string) ([]fv1.KubernetesWatchTrigger, error) {
ws, err := client.FissionClientSet.CoreV1().KubernetesWatchTriggers(namespace).List(ctx, metav1.ListOptions{}) ws, err := client.FissionClientSet.CoreV1().KubernetesWatchTriggers(namespace).List(ctx, metav1.ListOptions{})
if err != nil { if err != nil {
return nil, errors.Errorf("Unable to get Kube Watchers %v", err.Error()) return nil, fmt.Errorf("Unable to get Kube Watchers %v", err.Error())
} }
return ws.Items, nil return ws.Items, nil
} }
+20 -21
View File
@@ -24,7 +24,6 @@ import (
"strings" "strings"
multierror "github.com/hashicorp/go-multierror" multierror "github.com/hashicorp/go-multierror"
"github.com/pkg/errors"
k8serrors "k8s.io/apimachinery/pkg/api/errors" k8serrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8sCache "k8s.io/client-go/tools/cache" k8sCache "k8s.io/client-go/tools/cache"
@@ -128,7 +127,7 @@ type (
func save(data []byte, specDir string, specFile string, truncate bool) error { func save(data []byte, specDir string, specFile string, truncate bool) error {
// verify // verify
if _, err := os.Stat(filepath.Join(specDir, "fission-deployment-config.yaml")); os.IsNotExist(err) { if _, err := os.Stat(filepath.Join(specDir, "fission-deployment-config.yaml")); os.IsNotExist(err) {
return errors.Wrap(err, "Couldn't find specs, run `fission spec init` first") return fmt.Errorf("Couldn't find specs, run `fission spec init` first: %w", err)
} }
filename := filepath.Join(specDir, specFile) filename := filepath.Join(specDir, specFile)
@@ -136,7 +135,7 @@ func save(data []byte, specDir string, specFile string, truncate bool) error {
newFile := false newFile := false
if _, err := os.Stat(filename); os.IsNotExist(err) { if _, err := os.Stat(filename); os.IsNotExist(err) {
if truncate { if truncate {
return errors.Errorf("spec file does not exists") return fmt.Errorf("spec file does not exists")
} }
newFile = true newFile = true
} }
@@ -144,14 +143,14 @@ func save(data []byte, specDir string, specFile string, truncate bool) error {
// open spec file to append or write // open spec file to append or write
f, err := os.OpenFile(filename, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0600) f, err := os.OpenFile(filename, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0600)
if err != nil { if err != nil {
return errors.Wrap(err, "couldn't create spec file") return fmt.Errorf("couldn't create spec file: %w", err)
} }
defer f.Close() defer f.Close()
if truncate { if truncate {
err = f.Truncate(0) err = f.Truncate(0)
if err != nil { if err != nil {
return errors.Wrap(err, "couldn't truncate the spec file") return fmt.Errorf("couldn't truncate the spec file: %w", err)
} }
} else { } else {
@@ -159,7 +158,7 @@ func save(data []byte, specDir string, specFile string, truncate bool) error {
if !newFile { if !newFile {
_, err = f.Write([]byte("\n---\n")) _, err = f.Write([]byte("\n---\n"))
if err != nil { if err != nil {
return errors.Wrap(err, "couldn't write to spec file") return fmt.Errorf("couldn't write to spec file: %w", err)
} }
} }
} }
@@ -167,7 +166,7 @@ func save(data []byte, specDir string, specFile string, truncate bool) error {
// write our resource // write our resource
_, err = f.Write(data) _, err = f.Write(data)
if err != nil { if err != nil {
return errors.Wrap(err, "couldn't write to spec file") return fmt.Errorf("couldn't write to spec file: %w", err)
} }
return nil return nil
} }
@@ -183,7 +182,7 @@ func SpecSave(resource interface{}, specFile string, update bool) error {
fr, err := ReadSpecs(specDir, util.SPEC_IGNORE_FILE, false) fr, err := ReadSpecs(specDir, util.SPEC_IGNORE_FILE, false)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error reading spec in '%v'", specDir)) return fmt.Errorf("error reading spec in '%v': %w", specDir, err)
} }
exists, err := fr.ExistsInSpecs(resource) exists, err := fr.ExistsInSpecs(resource)
@@ -192,7 +191,7 @@ func SpecSave(resource interface{}, specFile string, update bool) error {
} }
if exists { if exists {
return errors.Errorf("same name resource (%v) already exists in namespace (%v)", meta.Name, meta.Namespace) return fmt.Errorf("same name resource (%v) already exists in namespace (%v)", meta.Name, meta.Namespace)
} }
truncate := false truncate := false
@@ -277,11 +276,11 @@ func crdToYaml(resource interface{}) (metav1.ObjectMeta, string, []byte, error)
kind = typedres.TypeMeta.Kind kind = typedres.TypeMeta.Kind
data, err = yaml.Marshal(typedres) data, err = yaml.Marshal(typedres)
default: default:
err = errors.Errorf("unknown object type '%v'", typedres) err = fmt.Errorf("unknown object type '%v'", typedres)
} }
if err != nil { if err != nil {
return metav1.ObjectMeta{}, "", nil, errors.Wrap(err, "couldn't marshal YAML") return metav1.ObjectMeta{}, "", nil, fmt.Errorf("couldn't marshal YAML: %w", err)
} }
return meta, kind, data, nil return meta, kind, data, nil
@@ -559,7 +558,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location, commitLabelVal st
var tm types.TypeMeta var tm types.TypeMeta
err := yaml.Unmarshal(b, &tm) err := yaml.Unmarshal(b, &tm)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to decode yaml %v", string(b))) return fmt.Errorf("Failed to decode yaml %s: %w", string(b), err)
} }
switch tm.Kind { switch tm.Kind {
@@ -567,7 +566,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location, commitLabelVal st
var v fv1.Package var v fv1.Package
err = yaml.Unmarshal(b, &v) err = yaml.Unmarshal(b, &v)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) return fmt.Errorf("Failed to parse %v in %v: %w", tm.Kind, loc, err)
} }
m = &v.ObjectMeta m = &v.ObjectMeta
applyCommitLabel(commitLabelVal, m) applyCommitLabel(commitLabelVal, m)
@@ -576,7 +575,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location, commitLabelVal st
var v fv1.Function var v fv1.Function
err = yaml.Unmarshal(b, &v) err = yaml.Unmarshal(b, &v)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) return fmt.Errorf("Failed to parse %v in %v: %w", tm.Kind, loc, err)
} }
m = &v.ObjectMeta m = &v.ObjectMeta
applyCommitLabel(commitLabelVal, m) applyCommitLabel(commitLabelVal, m)
@@ -585,7 +584,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location, commitLabelVal st
var v fv1.Environment var v fv1.Environment
err = yaml.Unmarshal(b, &v) err = yaml.Unmarshal(b, &v)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) return fmt.Errorf("Failed to parse %v in %v: %w", tm.Kind, loc, err)
} }
m = &v.ObjectMeta m = &v.ObjectMeta
applyCommitLabel(commitLabelVal, m) applyCommitLabel(commitLabelVal, m)
@@ -594,7 +593,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location, commitLabelVal st
var v fv1.HTTPTrigger var v fv1.HTTPTrigger
err = yaml.Unmarshal(b, &v) err = yaml.Unmarshal(b, &v)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) return fmt.Errorf("Failed to parse %v in %v: %w", tm.Kind, loc, err)
} }
m = &v.ObjectMeta m = &v.ObjectMeta
applyCommitLabel(commitLabelVal, m) applyCommitLabel(commitLabelVal, m)
@@ -603,7 +602,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location, commitLabelVal st
var v fv1.KubernetesWatchTrigger var v fv1.KubernetesWatchTrigger
err = yaml.Unmarshal(b, &v) err = yaml.Unmarshal(b, &v)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) return fmt.Errorf("Failed to parse %v in %v: %w", tm.Kind, loc, err)
} }
m = &v.ObjectMeta m = &v.ObjectMeta
applyCommitLabel(commitLabelVal, m) applyCommitLabel(commitLabelVal, m)
@@ -612,7 +611,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location, commitLabelVal st
var v fv1.TimeTrigger var v fv1.TimeTrigger
err = yaml.Unmarshal(b, &v) err = yaml.Unmarshal(b, &v)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) return fmt.Errorf("Failed to parse %v in %v: %w", tm.Kind, loc, err)
} }
m = &v.ObjectMeta m = &v.ObjectMeta
applyCommitLabel(commitLabelVal, m) applyCommitLabel(commitLabelVal, m)
@@ -621,7 +620,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location, commitLabelVal st
var v fv1.MessageQueueTrigger var v fv1.MessageQueueTrigger
err = yaml.Unmarshal(b, &v) err = yaml.Unmarshal(b, &v)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) return fmt.Errorf("Failed to parse %v in %v: %w", tm.Kind, loc, err)
} }
m = &v.ObjectMeta m = &v.ObjectMeta
applyCommitLabel(commitLabelVal, m) applyCommitLabel(commitLabelVal, m)
@@ -633,7 +632,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location, commitLabelVal st
var v types.DeploymentConfig var v types.DeploymentConfig
err = yaml.Unmarshal(b, &v) err = yaml.Unmarshal(b, &v)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) return fmt.Errorf("Failed to parse %v in %v: %w", tm.Kind, loc, err)
} }
fr.DeploymentConfig = v fr.DeploymentConfig = v
@@ -641,7 +640,7 @@ func (fr *FissionResources) ParseYaml(b []byte, loc *Location, commitLabelVal st
var v types.ArchiveUploadSpec var v types.ArchiveUploadSpec
err = yaml.Unmarshal(b, &v) err = yaml.Unmarshal(b, &v)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse %v in %v", tm.Kind, loc)) return fmt.Errorf("Failed to parse %v in %v: %w", tm.Kind, loc, err)
} }
m = &metav1.ObjectMeta{ m = &metav1.ObjectMeta{
+11 -12
View File
@@ -25,7 +25,6 @@ import (
"strings" "strings"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
@@ -71,7 +70,7 @@ func (opts *ValidateSubCommand) run(input cli.Input, fr *FissionResources) (err
if fr == nil { if fr == nil {
fr, err = ReadSpecs(specDir, specIgnore, false) fr, err = ReadSpecs(specDir, specIgnore, false)
if err != nil { if err != nil {
return errors.Wrap(err, "error reading specs") return fmt.Errorf("error reading specs: %w", err)
} }
} }
@@ -83,12 +82,12 @@ func (opts *ValidateSubCommand) run(input cli.Input, fr *FissionResources) (err
// this does the rest of the checks, like dangling refs // this does the rest of the checks, like dangling refs
warnings, err = fr.Validate(input, opts.Client()) warnings, err = fr.Validate(input, opts.Client())
if err != nil { if err != nil {
return errors.Wrap(err, "error validating specs") return fmt.Errorf("error validating specs: %w", err)
} }
err = resourceConflictCheck(input.Context(), opts.Client(), fr, input.Bool(flagkey.SpecAllowConflicts), "") err = resourceConflictCheck(input.Context(), opts.Client(), fr, input.Bool(flagkey.SpecAllowConflicts), "")
if err != nil { if err != nil {
return errors.Wrap(err, "name conflict error") return fmt.Errorf("name conflict error: %w", err)
} }
for _, warning := range warnings { for _, warning := range warnings {
@@ -110,7 +109,7 @@ func resourceConflictCheck(ctx context.Context, c cmd.Client, fr *FissionResourc
fnList, err := getAllFunctions(ctx, c, namespace) fnList, err := getAllFunctions(ctx, c, namespace)
if err != nil { if err != nil {
return errors.Errorf("Unable to get Functions %v", err.Error()) return fmt.Errorf("Unable to get Functions %v", err.Error())
} }
for _, sObj := range fr.Functions { for _, sObj := range fr.Functions {
for _, cObj := range fnList { for _, cObj := range fnList {
@@ -123,7 +122,7 @@ func resourceConflictCheck(ctx context.Context, c cmd.Client, fr *FissionResourc
envList, err := getAllEnvironments(ctx, c, namespace) envList, err := getAllEnvironments(ctx, c, namespace)
if err != nil { if err != nil {
return errors.Errorf("Unable to get Environments %v", err.Error()) return fmt.Errorf("Unable to get Environments %v", err.Error())
} }
for _, sObj := range fr.Environments { for _, sObj := range fr.Environments {
for _, cObj := range envList { for _, cObj := range envList {
@@ -136,7 +135,7 @@ func resourceConflictCheck(ctx context.Context, c cmd.Client, fr *FissionResourc
pkgList, err := getAllPackages(ctx, c, namespace) pkgList, err := getAllPackages(ctx, c, namespace)
if err != nil { if err != nil {
return errors.Errorf("Unable to get Packages %v", err.Error()) return fmt.Errorf("Unable to get Packages %v", err.Error())
} }
for _, sObj := range fr.Packages { for _, sObj := range fr.Packages {
for _, cObj := range pkgList { for _, cObj := range pkgList {
@@ -149,7 +148,7 @@ func resourceConflictCheck(ctx context.Context, c cmd.Client, fr *FissionResourc
httptriggerList, err := getAllHTTPTriggers(ctx, c, namespace) httptriggerList, err := getAllHTTPTriggers(ctx, c, namespace)
if err != nil { if err != nil {
return errors.Errorf("Unable to get HTTPTrigger %v", err.Error()) return fmt.Errorf("Unable to get HTTPTrigger %v", err.Error())
} }
for _, sObj := range fr.HttpTriggers { for _, sObj := range fr.HttpTriggers {
for _, cObj := range httptriggerList { for _, cObj := range httptriggerList {
@@ -162,7 +161,7 @@ func resourceConflictCheck(ctx context.Context, c cmd.Client, fr *FissionResourc
mqtriggerList, err := getAllMessageQueueTriggers(ctx, c, "", namespace) mqtriggerList, err := getAllMessageQueueTriggers(ctx, c, "", namespace)
if err != nil { if err != nil {
return errors.Errorf("Unable to get Message Queue Trigger %v", err.Error()) return fmt.Errorf("Unable to get Message Queue Trigger %v", err.Error())
} }
for _, sObj := range fr.MessageQueueTriggers { for _, sObj := range fr.MessageQueueTriggers {
for _, cObj := range mqtriggerList { for _, cObj := range mqtriggerList {
@@ -175,7 +174,7 @@ func resourceConflictCheck(ctx context.Context, c cmd.Client, fr *FissionResourc
timetriggerList, err := getAllTimeTriggers(ctx, c, namespace) timetriggerList, err := getAllTimeTriggers(ctx, c, namespace)
if err != nil { if err != nil {
return errors.Errorf("Unable to get Time Trigger %v", err.Error()) return fmt.Errorf("Unable to get Time Trigger %v", err.Error())
} }
for _, sObj := range fr.TimeTriggers { for _, sObj := range fr.TimeTriggers {
for _, cObj := range timetriggerList { for _, cObj := range timetriggerList {
@@ -188,7 +187,7 @@ func resourceConflictCheck(ctx context.Context, c cmd.Client, fr *FissionResourc
kubewatchtriggerList, err := getAllKubeWatchTriggers(ctx, c, namespace) kubewatchtriggerList, err := getAllKubeWatchTriggers(ctx, c, namespace)
if err != nil { if err != nil {
return errors.Errorf("Unable to get Kubernetes Watch Trigger %v", err.Error()) return fmt.Errorf("Unable to get Kubernetes Watch Trigger %v", err.Error())
} }
for _, sObj := range fr.KubernetesWatchTriggers { for _, sObj := range fr.KubernetesWatchTriggers {
for _, cObj := range kubewatchtriggerList { for _, cObj := range kubewatchtriggerList {
@@ -226,7 +225,7 @@ func ReadSpecs(specDir, specIgnore string, applyCommitLabel bool) (*FissionResou
// make sure spec directory exists before continue // make sure spec directory exists before continue
if _, err := os.Stat(specDir); os.IsNotExist(err) { if _, err := os.Stat(specDir); os.IsNotExist(err) {
return nil, errors.Errorf("Spec directory %v doesn't exist. "+ return nil, fmt.Errorf("Spec directory %v doesn't exist. "+
"Please check directory path or run \"fission spec init\" to create it.", specDir) "Please check directory path or run \"fission spec init\" to create it.", specDir)
} }
+2 -4
View File
@@ -23,8 +23,6 @@ import (
"sync" "sync"
"time" "time"
"github.com/pkg/errors"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
"github.com/fission/fission/pkg/fission-cli/cmd" "github.com/fission/fission/pkg/fission-cli/cmd"
"github.com/fission/fission/pkg/fission-cli/cmd/support/resources" "github.com/fission/fission/pkg/fission-cli/cmd/support/resources"
@@ -58,12 +56,12 @@ func (opts *DumpSubCommand) do(input cli.Input) error {
panic(err) panic(err)
} }
} else if err != nil { } else if err != nil {
panic(errors.Wrap(err, "Error checking dump directory status")) panic(fmt.Errorf("Error checking dump directory status: %w", err))
} }
outputDir, err = filepath.Abs(outputDir) outputDir, err = filepath.Abs(outputDir)
if err != nil { if err != nil {
panic(errors.Wrap(err, "Error creating dump directory for dumping files")) panic(fmt.Errorf("Error creating dump directory for dumping files: %w", err))
} }
k8sClient := opts.Client().KubernetesClient k8sClient := opts.Client().KubernetesClient
+7 -6
View File
@@ -23,7 +23,8 @@ import (
"github.com/fission/fission/pkg/fission-cli/cmd" "github.com/fission/fission/pkg/fission-cli/cmd"
"github.com/fission/fission/pkg/utils/uuid" "github.com/fission/fission/pkg/utils/uuid"
"github.com/pkg/errors" "errors"
"github.com/robfig/cron/v3" "github.com/robfig/cron/v3"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -65,7 +66,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) (err error) {
userProvidedNS, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction) userProvidedNS, fnNamespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceFunction)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
cronSpec := input.String(flagkey.TtCron) cronSpec := input.String(flagkey.TtCron)
@@ -78,7 +79,7 @@ func (opts *CreateSubCommand) complete(input cli.Input) (err error) {
specIgnore := util.GetSpecIgnore(input) specIgnore := util.GetSpecIgnore(input)
fr, err := spec.ReadSpecs(specDir, specIgnore, false) fr, err := spec.ReadSpecs(specDir, specIgnore, false)
if err != nil { if err != nil {
return errors.Wrap(err, fmt.Sprintf("error reading spec in '%v'", specDir)) return fmt.Errorf("error reading spec in '%v': %w", specDir, err)
} }
exists, err := fr.ExistsInSpecs(fv1.Function{ exists, err := fr.ExistsInSpecs(fv1.Function{
@@ -135,14 +136,14 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
specFile := fmt.Sprintf("timetrigger-%v.yaml", opts.trigger.ObjectMeta.Name) specFile := fmt.Sprintf("timetrigger-%v.yaml", opts.trigger.ObjectMeta.Name)
err := spec.SpecSave(*opts.trigger, specFile, false) err := spec.SpecSave(*opts.trigger, specFile, false)
if err != nil { if err != nil {
return errors.Wrap(err, "error saving time trigger spec") return fmt.Errorf("error saving time trigger spec: %w", err)
} }
return nil return nil
} }
_, err := opts.Client().FissionClientSet.CoreV1().TimeTriggers(opts.trigger.Namespace).Create(input.Context(), opts.trigger, metav1.CreateOptions{}) _, err := opts.Client().FissionClientSet.CoreV1().TimeTriggers(opts.trigger.Namespace).Create(input.Context(), opts.trigger, metav1.CreateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error creating Time trigger") return fmt.Errorf("error creating Time trigger: %w", err)
} }
fmt.Printf("trigger '%v' created\n", opts.trigger.ObjectMeta.Name) fmt.Printf("trigger '%v' created\n", opts.trigger.ObjectMeta.Name)
@@ -151,7 +152,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
err = getCronNextNActivationTime(opts.trigger.Spec.Cron, t, 1) err = getCronNextNActivationTime(opts.trigger.Spec.Cron, t, 1)
if err != nil { if err != nil {
return errors.Wrap(err, "error passing cron spec examination") return fmt.Errorf("error passing cron spec examination: %w", err)
} }
return nil return nil
+2 -3
View File
@@ -19,7 +19,6 @@ package timetrigger
import ( import (
"fmt" "fmt"
"github.com/pkg/errors"
kerrors "k8s.io/apimachinery/pkg/api/errors" kerrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -40,7 +39,7 @@ func (opts *DeleteSubCommand) do(input cli.Input) (err error) {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
err = opts.Client().FissionClientSet.CoreV1().TimeTriggers(namespace).Delete(input.Context(), input.String(flagkey.TtName), metav1.DeleteOptions{}) err = opts.Client().FissionClientSet.CoreV1().TimeTriggers(namespace).Delete(input.Context(), input.String(flagkey.TtName), metav1.DeleteOptions{})
@@ -48,7 +47,7 @@ func (opts *DeleteSubCommand) do(input cli.Input) (err error) {
if input.Bool(flagkey.IgnoreNotFound) && kerrors.IsNotFound(err) { if input.Bool(flagkey.IgnoreNotFound) && kerrors.IsNotFound(err) {
return nil return nil
} }
return errors.Wrap(err, "error deleting trigger") return fmt.Errorf("error deleting trigger: %w", err)
} }
fmt.Printf("trigger '%v' deleted\n", input.String(flagkey.TtName)) fmt.Printf("trigger '%v' deleted\n", input.String(flagkey.TtName))
+2 -3
View File
@@ -21,7 +21,6 @@ import (
"os" "os"
"text/tabwriter" "text/tabwriter"
"github.com/pkg/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -40,7 +39,7 @@ func List(input cli.Input) error {
func (opts *ListSubCommand) do(input cli.Input) (err error) { func (opts *ListSubCommand) do(input cli.Input) (err error) {
_, ttNs, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger) _, ttNs, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
if input.Bool(flagkey.AllNamespaces) { if input.Bool(flagkey.AllNamespaces) {
@@ -49,7 +48,7 @@ func (opts *ListSubCommand) do(input cli.Input) (err error) {
tts, err := opts.Client().FissionClientSet.CoreV1().TimeTriggers(ttNs).List(input.Context(), metav1.ListOptions{}) tts, err := opts.Client().FissionClientSet.CoreV1().TimeTriggers(ttNs).List(input.Context(), metav1.ListOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "list Time triggers") return fmt.Errorf("list Time triggers: %w", err)
} }
w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0) w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0)
+4 -2
View File
@@ -17,7 +17,9 @@ limitations under the License.
package timetrigger package timetrigger
import ( import (
"github.com/pkg/errors" "fmt"
"errors"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
"github.com/fission/fission/pkg/fission-cli/cmd" "github.com/fission/fission/pkg/fission-cli/cmd"
@@ -49,7 +51,7 @@ func (opts *ShowSubCommand) run(flaginput cli.Input) error {
err := getCronNextNActivationTime(cronSpec, t, round) err := getCronNextNActivationTime(cronSpec, t, round)
if err != nil { if err != nil {
return errors.Wrap(err, "error passing cron spec examination") return fmt.Errorf("error passing cron spec examination: %w", err)
} }
return nil return nil
+7 -6
View File
@@ -19,7 +19,8 @@ package timetrigger
import ( import (
"fmt" "fmt"
"github.com/pkg/errors" "errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -51,12 +52,12 @@ func (opts *UpdateSubCommand) do(input cli.Input) error {
func (opts *UpdateSubCommand) complete(input cli.Input) error { func (opts *UpdateSubCommand) complete(input cli.Input) error {
_, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger) _, namespace, err := opts.GetResourceNamespace(input, flagkey.NamespaceTrigger)
if err != nil { if err != nil {
return errors.Wrap(err, "error in deleting function ") return fmt.Errorf("error in deleting function : %w", err)
} }
tt, err := opts.Client().FissionClientSet.CoreV1().TimeTriggers(namespace).Get(input.Context(), input.String(flagkey.TtName), metav1.GetOptions{}) tt, err := opts.Client().FissionClientSet.CoreV1().TimeTriggers(namespace).Get(input.Context(), input.String(flagkey.TtName), metav1.GetOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error getting time trigger") return fmt.Errorf("error getting time trigger: %w", err)
} }
updated := false updated := false
@@ -105,13 +106,13 @@ func (opts *UpdateSubCommand) run(input cli.Input) error {
specFile := fmt.Sprintf("timetrigger-%s.yaml", opts.trigger.ObjectMeta.Name) specFile := fmt.Sprintf("timetrigger-%s.yaml", opts.trigger.ObjectMeta.Name)
err = spec.SpecSave(*opts.trigger, specFile, true) err = spec.SpecSave(*opts.trigger, specFile, true)
if err != nil { if err != nil {
return errors.Wrap(err, "error saving time trigger spec") return fmt.Errorf("error saving time trigger spec: %w", err)
} }
return nil return nil
} }
_, err := opts.Client().FissionClientSet.CoreV1().TimeTriggers(opts.trigger.ObjectMeta.Namespace).Update(input.Context(), opts.trigger, metav1.UpdateOptions{}) _, err := opts.Client().FissionClientSet.CoreV1().TimeTriggers(opts.trigger.ObjectMeta.Namespace).Update(input.Context(), opts.trigger, metav1.UpdateOptions{})
if err != nil { if err != nil {
return errors.Wrap(err, "error updating Time trigger") return fmt.Errorf("error updating Time trigger: %w", err)
} }
fmt.Printf("trigger '%v' updated\n", opts.trigger.ObjectMeta.Name) fmt.Printf("trigger '%v' updated\n", opts.trigger.ObjectMeta.Name)
@@ -123,7 +124,7 @@ func (opts *UpdateSubCommand) run(input cli.Input) error {
err = getCronNextNActivationTime(opts.trigger.Spec.Cron, t, 1) err = getCronNextNActivationTime(opts.trigger.Spec.Cron, t, 1)
if err != nil { if err != nil {
return errors.Wrap(err, "error passing cron spec examination") return fmt.Errorf("error passing cron spec examination: %w", err)
} }
return nil return nil
+2 -4
View File
@@ -24,8 +24,6 @@ import (
"net/http" "net/http"
"os" "os"
"github.com/pkg/errors"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
"github.com/fission/fission/pkg/fission-cli/cmd" "github.com/fission/fission/pkg/fission-cli/cmd"
@@ -73,7 +71,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
} }
routerURL, err := util.GetRouterURL(input.Context(), opts.Client()) routerURL, err := util.GetRouterURL(input.Context(), opts.Client())
if err != nil { if err != nil {
return errors.Wrap(err, "error getting router URL") return fmt.Errorf("error getting router URL: %w", err)
} }
authAuthenticatorUrl := routerURL.JoinPath(authURI) authAuthenticatorUrl := routerURL.JoinPath(authURI)
console.Verbose(2, "Auth URI: %s", authAuthenticatorUrl.String()) console.Verbose(2, "Auth URI: %s", authAuthenticatorUrl.String())
@@ -86,7 +84,7 @@ func (opts *CreateSubCommand) run(input cli.Input) error {
body, err := io.ReadAll(resp.Body) body, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return errors.Wrap(err, "error creating token") return fmt.Errorf("error creating token: %w", err)
} }
if resp.StatusCode == http.StatusCreated { if resp.StatusCode == http.StatusCreated {
+1 -2
View File
@@ -19,7 +19,6 @@ package version
import ( import (
"fmt" "fmt"
"github.com/pkg/errors"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli" "github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
@@ -39,7 +38,7 @@ func (opts *VersionSubCommand) do(input cli.Input) error {
ver := util.GetVersion(input.Context(), input, opts.Client()) ver := util.GetVersion(input.Context(), input, opts.Client())
bs, err := yaml.Marshal(ver) bs, err := yaml.Marshal(ver)
if err != nil { if err != nil {
return errors.Wrap(err, "error formatting versions") return fmt.Errorf("error formatting versions: %w", err)
} }
fmt.Print(string(bs)) fmt.Print(string(bs))
return nil return nil
+3 -4
View File
@@ -29,7 +29,6 @@ import (
"time" "time"
influxdbClient "github.com/influxdata/influxdb/client/v2" influxdbClient "github.com/influxdata/influxdb/client/v2"
"github.com/pkg/errors"
ferror "github.com/fission/fission/pkg/error" ferror "github.com/fission/fission/pkg/error"
"github.com/fission/fission/pkg/fission-cli/util" "github.com/fission/fission/pkg/fission-cli/util"
@@ -153,12 +152,12 @@ func (influx InfluxDB) GetLogs(ctx context.Context, filter LogFilter, output *by
msg := fmt.Sprintf("Timestamp: %s\nNamespace: %s\nFunction Name: %s\nFunction ID: %s\nPod: %s\nContainer: %s\nStream: %s\nLog: %s\n---\n", msg := fmt.Sprintf("Timestamp: %s\nNamespace: %s\nFunction Name: %s\nFunction ID: %s\nPod: %s\nContainer: %s\nStream: %s\nLog: %s\n---\n",
logEntry.Timestamp, logEntry.Namespace, logEntry.FuncName, logEntry.FuncUid, logEntry.Pod, logEntry.Container, logEntry.Stream, logEntry.Message) logEntry.Timestamp, logEntry.Namespace, logEntry.FuncName, logEntry.FuncUid, logEntry.Pod, logEntry.Container, logEntry.Stream, logEntry.Message)
if _, err := output.WriteString(msg); err != nil { if _, err := output.WriteString(msg); err != nil {
return errors.Wrapf(err, "error copying pod log") return fmt.Errorf("error copying pod log: %w", err)
} }
} else { } else {
msg := fmt.Sprintf("[%s] %s\n", logEntry.Timestamp, logEntry.Message) msg := fmt.Sprintf("[%s] %s\n", logEntry.Timestamp, logEntry.Message)
if _, err := output.WriteString(msg); err != nil { if _, err := output.WriteString(msg); err != nil {
return errors.Wrapf(err, "error copying pod log") return fmt.Errorf("error copying pod log: %w", err)
} }
} }
} }
@@ -173,7 +172,7 @@ func (influx InfluxDB) query(ctx context.Context, query influxdbClient.Query) (*
req, err := http.NewRequest(http.MethodPost, influx.endpoint, nil) req, err := http.NewRequest(http.MethodPost, influx.endpoint, nil)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error creating request for log proxy") return nil, fmt.Errorf("error creating request for log proxy: %w", err)
} }
req.SetBasicAuth(username, password) req.SetBasicAuth(username, password)
+6 -7
View File
@@ -24,7 +24,6 @@ import (
"sort" "sort"
"strconv" "strconv"
"github.com/pkg/errors"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/labels"
@@ -85,7 +84,7 @@ func GetFunctionPodLogs(ctx context.Context, client cmd.Client, logFilter LogFil
} }
if len(podList.Items) <= 0 { if len(podList.Items) <= 0 {
return errors.Errorf("no active pods found for function in namespace %s", podNs) return fmt.Errorf("no active pods found for function in namespace %s", podNs)
} }
pods := podList.Items pods := podList.Items
@@ -94,7 +93,7 @@ func GetFunctionPodLogs(ctx context.Context, client cmd.Client, logFilter LogFil
// get the pod with highest resource version // get the pod with highest resource version
err = streamContainerLog(ctx, client.KubernetesClient, &pod, logFilter, podLogs) err = streamContainerLog(ctx, client.KubernetesClient, &pod, logFilter, podLogs)
if err != nil { if err != nil {
return errors.Wrapf(err, "error getting container logs") return fmt.Errorf("error getting container logs: %w", err)
} }
} }
} else { } else {
@@ -108,7 +107,7 @@ func GetFunctionPodLogs(ctx context.Context, client cmd.Client, logFilter LogFil
// get the pod with highest resource version // get the pod with highest resource version
err = streamContainerLog(ctx, client.KubernetesClient, &pods[0], logFilter, podLogs) err = streamContainerLog(ctx, client.KubernetesClient, &pods[0], logFilter, podLogs)
if err != nil { if err != nil {
return errors.Wrapf(err, "error getting container logs") return fmt.Errorf("error getting container logs: %w", err)
} }
} }
@@ -132,7 +131,7 @@ func streamContainerLog(ctx context.Context, kubernetesClient kubernetes.Interfa
podLogs, err := podLogsReq.Stream(ctx) podLogs, err := podLogsReq.Stream(ctx)
if err != nil { if err != nil {
return errors.Wrapf(err, "error streaming pod log") return fmt.Errorf("error streaming pod log: %w", err)
} }
if logFilter.Details { if logFilter.Details {
@@ -140,13 +139,13 @@ func streamContainerLog(ctx context.Context, kubernetesClient kubernetes.Interfa
msg := fmt.Sprintf("\n=== Function=%s Environment=%s Namespace=%s Pod=%s Container=%s Node=%s\n", msg := fmt.Sprintf("\n=== Function=%s Environment=%s Namespace=%s Pod=%s Container=%s Node=%s\n",
fn.ObjectMeta.Name, fn.Spec.Environment.Name, pod.Namespace, pod.Name, container.Name, pod.Spec.NodeName) fn.ObjectMeta.Name, fn.Spec.Environment.Name, pod.Namespace, pod.Name, container.Name, pod.Spec.NodeName)
if _, err := output.WriteString(msg); err != nil { if _, err := output.WriteString(msg); err != nil {
return errors.Wrapf(err, "error copying pod log") return fmt.Errorf("error copying pod log: %w", err)
} }
} }
_, err = io.Copy(output, podLogs) _, err = io.Copy(output, podLogs)
if err != nil { if err != nil {
return errors.Wrapf(err, "error copying pod log") return fmt.Errorf("error copying pod log: %w", err)
} }
podLogs.Close() podLogs.Close()
+9 -10
View File
@@ -26,7 +26,6 @@ import (
"strings" "strings"
"time" "time"
"github.com/pkg/errors"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/portforward" "k8s.io/client-go/tools/portforward"
@@ -50,7 +49,7 @@ func SetupPortForward(ctx context.Context, client cmd.Client, namespace, labelSe
lcPort, err := utils.FindFreePort() lcPort, err := utils.FindFreePort()
if err != nil { if err != nil {
return "", errors.Wrap(err, "error finding unused port") return "", fmt.Errorf("error finding unused port: %w", err)
} }
localPort := strconv.Itoa(lcPort) localPort := strconv.Itoa(lcPort)
@@ -118,9 +117,9 @@ func runPortForward(ctx context.Context, client cmd.Client, labelSelector string
podList, err := client.KubernetesClient.CoreV1().Pods(ns). podList, err := client.KubernetesClient.CoreV1().Pods(ns).
List(ctx, metav1.ListOptions{LabelSelector: labelSelector}) List(ctx, metav1.ListOptions{LabelSelector: labelSelector})
if err != nil { if err != nil {
return nil, nil, errors.Wrapf(err, "error getting pod for port-forwarding with label selector %v", labelSelector) return nil, nil, fmt.Errorf("error getting pod for port-forwarding with label selector %v: %w", labelSelector, err)
} else if len(podList.Items) == 0 { } else if len(podList.Items) == 0 {
return nil, nil, errors.Errorf("no available pod for port-forwarding with label selector %v", labelSelector) return nil, nil, fmt.Errorf("no available pod for port-forwarding with label selector %v", labelSelector)
} }
nsList := make([]string, 0) nsList := make([]string, 0)
@@ -136,7 +135,7 @@ func runPortForward(ctx context.Context, client cmd.Client, labelSelector string
namespaces[p.Namespace] = append(namespaces[p.Namespace], &p) namespaces[p.Namespace] = append(namespaces[p.Namespace], &p)
} }
if len(nsList) > 1 { if len(nsList) > 1 {
return nil, nil, errors.Errorf("Found %v fission installs, set FISSION_NAMESPACE to one of: %v", return nil, nil, fmt.Errorf("Found %v fission installs, set FISSION_NAMESPACE to one of: %v",
len(namespaces), strings.Join(nsList, " ")) len(namespaces), strings.Join(nsList, " "))
} }
} }
@@ -146,7 +145,7 @@ func runPortForward(ctx context.Context, client cmd.Client, labelSelector string
ns = nsList[0] ns = nsList[0]
pods, ok := namespaces[ns] pods, ok := namespaces[ns]
if !ok { if !ok {
return nil, nil, errors.Errorf("Error finding fission install within the given namespace %v, please check FISSION_NAMESPACE is set properly", ns) return nil, nil, fmt.Errorf("Error finding fission install within the given namespace %v, please check FISSION_NAMESPACE is set properly", ns)
} }
var podName, podNameSpace string var podName, podNameSpace string
@@ -164,10 +163,10 @@ func runPortForward(ctx context.Context, client cmd.Client, labelSelector string
svcs, err := client.KubernetesClient.CoreV1().Services(podNameSpace). svcs, err := client.KubernetesClient.CoreV1().Services(podNameSpace).
List(ctx, metav1.ListOptions{LabelSelector: labelSelector}) List(ctx, metav1.ListOptions{LabelSelector: labelSelector})
if err != nil { if err != nil {
return nil, nil, errors.Wrapf(err, "Error getting %v service", labelSelector) return nil, nil, fmt.Errorf("Error getting %v service: %w", labelSelector, err)
} }
if len(svcs.Items) == 0 { if len(svcs.Items) == 0 {
return nil, nil, errors.Errorf("Service %v not found", labelSelector) return nil, nil, fmt.Errorf("Service %v not found", labelSelector)
} }
service := &svcs.Items[0] service := &svcs.Items[0]
@@ -192,7 +191,7 @@ func runPortForward(ctx context.Context, client cmd.Client, labelSelector string
// actually start the port-forwarding process here // actually start the port-forwarding process here
transport, upgrader, err := spdy.RoundTripperFor(client.RestConfig) transport, upgrader, err := spdy.RoundTripperFor(client.RestConfig)
if err != nil { if err != nil {
return nil, nil, errors.Errorf("Failed to connect to Fission service on Kubernetes") return nil, nil, fmt.Errorf("Failed to connect to Fission service on Kubernetes")
} }
dialer := spdy.NewDialer(upgrader, &http.Client{Transport: transport}, "POST", url) dialer := spdy.NewDialer(upgrader, &http.Client{Transport: transport}, "POST", url)
@@ -202,7 +201,7 @@ func runPortForward(ctx context.Context, client cmd.Client, labelSelector string
} }
fw, err := portforward.New(dialer, ports, stopChannel, readyChannel, outStream, os.Stderr) fw, err := portforward.New(dialer, ports, stopChannel, readyChannel, outStream, os.Stderr)
if err != nil { if err != nil {
return nil, nil, errors.Wrap(err, "error creating port forwarder") return nil, nil, fmt.Errorf("error creating port forwarder: %w", err)
} }
go func() { go func() {
+13 -12
View File
@@ -32,8 +32,9 @@ import (
ignore "github.com/sabhiram/go-gitignore" ignore "github.com/sabhiram/go-gitignore"
"errors"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/pkg/errors"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -254,7 +255,7 @@ func GetResourceReqs(input cli.Input, resReqs *v1.ResourceRequirements) (*v1.Res
mincpu := input.Int(flagkey.RuntimeMincpu) mincpu := input.Int(flagkey.RuntimeMincpu)
cpuRequest, err := resource.ParseQuantity(strconv.Itoa(mincpu) + "m") cpuRequest, err := resource.ParseQuantity(strconv.Itoa(mincpu) + "m")
if err != nil { if err != nil {
e = multierror.Append(e, errors.Wrap(err, "Failed to parse mincpu")) e = multierror.Append(e, fmt.Errorf("Failed to parse mincpu: %w", err))
} }
r.Requests[v1.ResourceCPU] = cpuRequest r.Requests[v1.ResourceCPU] = cpuRequest
} }
@@ -263,7 +264,7 @@ func GetResourceReqs(input cli.Input, resReqs *v1.ResourceRequirements) (*v1.Res
minmem := input.Int(flagkey.RuntimeMinmemory) minmem := input.Int(flagkey.RuntimeMinmemory)
memRequest, err := resource.ParseQuantity(strconv.Itoa(minmem) + "Mi") memRequest, err := resource.ParseQuantity(strconv.Itoa(minmem) + "Mi")
if err != nil { if err != nil {
e = multierror.Append(e, errors.Wrap(err, "Failed to parse minmemory")) e = multierror.Append(e, fmt.Errorf("Failed to parse minmemory: %w", err))
} }
r.Requests[v1.ResourceMemory] = memRequest r.Requests[v1.ResourceMemory] = memRequest
} }
@@ -272,7 +273,7 @@ func GetResourceReqs(input cli.Input, resReqs *v1.ResourceRequirements) (*v1.Res
maxcpu := input.Int(flagkey.RuntimeMaxcpu) maxcpu := input.Int(flagkey.RuntimeMaxcpu)
cpuLimit, err := resource.ParseQuantity(strconv.Itoa(maxcpu) + "m") cpuLimit, err := resource.ParseQuantity(strconv.Itoa(maxcpu) + "m")
if err != nil { if err != nil {
e = multierror.Append(e, errors.Wrap(err, "Failed to parse maxcpu")) e = multierror.Append(e, fmt.Errorf("Failed to parse maxcpu: %w", err))
} }
r.Limits[v1.ResourceCPU] = cpuLimit r.Limits[v1.ResourceCPU] = cpuLimit
} }
@@ -281,7 +282,7 @@ func GetResourceReqs(input cli.Input, resReqs *v1.ResourceRequirements) (*v1.Res
maxmem := input.Int(flagkey.RuntimeMaxmemory) maxmem := input.Int(flagkey.RuntimeMaxmemory)
memLimit, err := resource.ParseQuantity(strconv.Itoa(maxmem) + "Mi") memLimit, err := resource.ParseQuantity(strconv.Itoa(maxmem) + "Mi")
if err != nil { if err != nil {
e = multierror.Append(e, errors.Wrap(err, "Failed to parse maxmemory")) e = multierror.Append(e, fmt.Errorf("Failed to parse maxmemory: %w", err))
} }
r.Limits[v1.ResourceMemory] = memLimit r.Limits[v1.ResourceMemory] = memLimit
} }
@@ -340,7 +341,7 @@ func GetSpecIgnoreParser(specDir, specIgnore string) (ignore.IgnoreParser, error
if _, err := os.Stat(specIgnorePath); errors.Is(err, os.ErrNotExist) { if _, err := os.Stat(specIgnorePath); errors.Is(err, os.ErrNotExist) {
// return error if it's custom spec ignore file // return error if it's custom spec ignore file
if specIgnore != SPEC_IGNORE_FILE { if specIgnore != SPEC_IGNORE_FILE {
return nil, errors.Errorf("Spec ignore file '%s' doesn't exist. "+ return nil, fmt.Errorf("Spec ignore file '%s' doesn't exist. "+
"Please check the file path: '%s'", specIgnore, specIgnorePath) "Please check the file path: '%s'", specIgnore, specIgnorePath)
} }
return ignore.CompileIgnoreLines(), nil return ignore.CompileIgnoreLines(), nil
@@ -423,7 +424,7 @@ func ParseAnnotations(annotations []string) (map[string]string, error) {
} }
} }
if invalidAnnotations != "" { if invalidAnnotations != "" {
return nil, errors.Errorf("invalid annotations: %s", invalidAnnotations) return nil, fmt.Errorf("invalid annotations: %s", invalidAnnotations)
} }
return annotationMap, nil return annotationMap, nil
} }
@@ -523,7 +524,7 @@ func GetSvcName(ctx context.Context, kClient kubernetes.Interface, application s
} }
if len(services.Items) > 1 || len(services.Items) == 0 { if len(services.Items) > 1 || len(services.Items) == 0 {
return "", errors.Errorf("more than one service found for application=%s", application) return "", fmt.Errorf("more than one service found for application=%s", application)
} }
service := services.Items[0] service := services.Items[0]
return service.Name + "." + service.Namespace, nil return service.Name + "." + service.Namespace, nil
@@ -576,7 +577,7 @@ func FunctionPodLogs(ctx context.Context, fnName, ns string, client cmd.Client)
// get the pod with highest resource version // get the pod with highest resource version
err = getContainerLog(ctx, client.KubernetesClient, f, &pods[0]) err = getContainerLog(ctx, client.KubernetesClient, f, &pods[0])
if err != nil { if err != nil {
return errors.Wrapf(err, "error getting container logs") return fmt.Errorf("error getting container logs: %w", err)
} }
return err return err
@@ -591,19 +592,19 @@ func getContainerLog(ctx context.Context, kubernetesClient kubernetes.Interface,
podLogs, err := podLogsReq.Stream(ctx) podLogs, err := podLogsReq.Stream(ctx)
if err != nil { if err != nil {
return errors.Wrapf(err, "error streaming pod log") return fmt.Errorf("error streaming pod log: %w", err)
} }
msg := fmt.Sprintf("\n%v\nFunction: %v\nEnvironment: %v\nNamespace: %v\nPod: %v\nContainer: %v\nNode: %v\n%v\n", seq, msg := fmt.Sprintf("\n%v\nFunction: %v\nEnvironment: %v\nNamespace: %v\nPod: %v\nContainer: %v\nNode: %v\n%v\n", seq,
fn.ObjectMeta.Name, fn.Spec.Environment.Name, pod.Namespace, pod.Name, container.Name, pod.Spec.NodeName, seq) fn.ObjectMeta.Name, fn.Spec.Environment.Name, pod.Namespace, pod.Name, container.Name, pod.Spec.NodeName, seq)
if _, err := io.WriteString(os.Stdout, msg); err != nil { if _, err := io.WriteString(os.Stdout, msg); err != nil {
return errors.Wrapf(err, "error copying pod log") return fmt.Errorf("error copying pod log: %w", err)
} }
_, err = io.Copy(os.Stdout, podLogs) _, err = io.Copy(os.Stdout, podLogs)
if err != nil { if err != nil {
return errors.Wrapf(err, "error copying pod log") return fmt.Errorf("error copying pod log: %w", err)
} }
podLogs.Close() podLogs.Close()
+5 -5
View File
@@ -18,8 +18,8 @@ package kubewatcher
import ( import (
"context" "context"
"fmt"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
"github.com/fission/fission/pkg/crd" "github.com/fission/fission/pkg/crd"
@@ -30,23 +30,23 @@ import (
func Start(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, mgr manager.Interface, routerUrl string) error { func Start(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, mgr manager.Interface, routerUrl string) error {
fissionClient, err := clientGen.GetFissionClient() fissionClient, err := clientGen.GetFissionClient()
if err != nil { if err != nil {
return errors.Wrap(err, "failed to get fission client") return fmt.Errorf("failed to get fission client: %w", err)
} }
kubeClient, err := clientGen.GetKubernetesClient() kubeClient, err := clientGen.GetKubernetesClient()
if err != nil { if err != nil {
return errors.Wrap(err, "failed to get kubernetes client") return fmt.Errorf("failed to get kubernetes client: %w", err)
} }
err = crd.WaitForFunctionCRDs(ctx, logger, fissionClient) err = crd.WaitForFunctionCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
return errors.Wrap(err, "error waiting for CRDs") return fmt.Errorf("error waiting for CRDs: %w", err)
} }
poster := publisher.MakeWebhookPublisher(logger, routerUrl) poster := publisher.MakeWebhookPublisher(logger, routerUrl)
kubeWatch := MakeKubeWatcher(ctx, logger, kubeClient, poster) kubeWatch := MakeKubeWatcher(ctx, logger, kubeClient, poster)
ws, err := MakeWatchSync(ctx, logger, fissionClient, kubeWatch) ws, err := MakeWatchSync(ctx, logger, fissionClient, kubeWatch)
if err != nil { if err != nil {
return errors.Wrap(err, "error making watch sync") return fmt.Errorf("error making watch sync: %w", err)
} }
ws.Run(ctx, mgr) ws.Run(ctx, mgr)
+2 -2
View File
@@ -17,9 +17,9 @@ limitations under the License.
package factory package factory
import ( import (
"fmt"
"sync" "sync"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -56,7 +56,7 @@ func Register(mqType fv1.MessageQueueType, factory MessageQueueFactory) {
func Create(logger *zap.Logger, mqType fv1.MessageQueueType, mqConfig messageQueue.Config, routerUrl string) (messageQueue.MessageQueue, error) { func Create(logger *zap.Logger, mqType fv1.MessageQueueType, mqConfig messageQueue.Config, routerUrl string) (messageQueue.MessageQueue, error) {
factory, registered := messageQueueFactories[mqType] factory, registered := messageQueueFactories[mqType]
if !registered { if !registered {
return nil, errors.Errorf("no supported message queue type found for %q", mqType) return nil, fmt.Errorf("no supported message queue type found for %q", mqType)
} }
return factory.Create(logger, mqConfig, routerUrl) return factory.Create(logger, mqConfig, routerUrl)
} }
+3 -2
View File
@@ -23,8 +23,9 @@ import (
"strconv" "strconv"
"strings" "strings"
"errors"
"github.com/IBM/sarama" "github.com/IBM/sarama"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
@@ -215,7 +216,7 @@ func (ch *MqtConsumerGroupHandler) kafkaMsgHandler(msg *sarama.ConsumerMessage)
errorString := "request body error: " + string(body) errorString := "request body error: " + string(body)
errorHeaders := generateErrorHeaders(errorString) errorHeaders := generateErrorHeaders(errorString)
errorHandler(ch.logger, ch.trigger, ch.producer, ch.fnUrl, errorHandler(ch.logger, ch.trigger, ch.producer, ch.fnUrl,
errors.Wrap(err, errorString), errorHeaders) fmt.Errorf("%s: %w", errorString, err), errorHeaders)
return return
} }
if resp.StatusCode != 200 { if resp.StatusCode != 200 {
+2 -1
View File
@@ -25,8 +25,9 @@ import (
"strconv" "strconv"
"strings" "strings"
"errors"
"github.com/IBM/sarama" "github.com/IBM/sarama"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
+7 -7
View File
@@ -10,7 +10,6 @@ import (
"strings" "strings"
"time" "time"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
appsv1 "k8s.io/api/apps/v1" appsv1 "k8s.io/api/apps/v1"
apiv1 "k8s.io/api/core/v1" apiv1 "k8s.io/api/core/v1"
@@ -18,13 +17,14 @@ import (
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
k8sCache "k8s.io/client-go/tools/cache" k8sCache "k8s.io/client-go/tools/cache"
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
kedaClient "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned"
fv1 "github.com/fission/fission/pkg/apis/core/v1" fv1 "github.com/fission/fission/pkg/apis/core/v1"
"github.com/fission/fission/pkg/crd" "github.com/fission/fission/pkg/crd"
"github.com/fission/fission/pkg/executor/util" "github.com/fission/fission/pkg/executor/util"
"github.com/fission/fission/pkg/utils" "github.com/fission/fission/pkg/utils"
"github.com/fission/fission/pkg/utils/manager" "github.com/fission/fission/pkg/utils/manager"
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
kedaClient "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned"
) )
var ( var (
@@ -103,20 +103,20 @@ func mqTriggerEventHandlers(ctx context.Context, logger *zap.Logger, kubeClient
func StartScalerManager(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, mgr manager.Interface, routerURL string) error { func StartScalerManager(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, mgr manager.Interface, routerURL string) error {
fissionClient, err := clientGen.GetFissionClient() fissionClient, err := clientGen.GetFissionClient()
if err != nil { if err != nil {
return errors.Wrap(err, "failed to get fission client") return fmt.Errorf("failed to get fission client: %w", err)
} }
kubeClient, err := clientGen.GetKubernetesClient() kubeClient, err := clientGen.GetKubernetesClient()
if err != nil { if err != nil {
return errors.Wrap(err, "failed to get kubernetes client") return fmt.Errorf("failed to get kubernetes client: %w", err)
} }
kedaClient, err := clientGen.GetKedaClient() kedaClient, err := clientGen.GetKedaClient()
if err != nil { if err != nil {
return errors.Wrap(err, "failed to get keda client") return fmt.Errorf("failed to get keda client: %w", err)
} }
err = crd.WaitForFunctionCRDs(ctx, logger, fissionClient) err = crd.WaitForFunctionCRDs(ctx, logger, fissionClient)
if err != nil { if err != nil {
return errors.Wrap(err, "error waiting for CRDs") return fmt.Errorf("error waiting for CRDs: %w", err)
} }
for _, informer := range utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.MessageQueueResource) { for _, informer := range utils.GetInformersForNamespaces(fissionClient, time.Minute*30, fv1.MessageQueueResource) {
+2 -1
View File
@@ -12,8 +12,9 @@ import (
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/fake" "k8s.io/client-go/kubernetes/fake"
fv1 "github.com/fission/fission/pkg/apis/core/v1"
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1" kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
fv1 "github.com/fission/fission/pkg/apis/core/v1"
) )
func Test_toEnvVar(t *testing.T) { func Test_toEnvVar(t *testing.T) {
+2 -1
View File
@@ -7,9 +7,10 @@ import (
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/assert"
"github.com/fission/fission/pkg/utils/loggerfactory" "github.com/fission/fission/pkg/utils/loggerfactory"
otelUtils "github.com/fission/fission/pkg/utils/otel" otelUtils "github.com/fission/fission/pkg/utils/otel"
"github.com/stretchr/testify/assert"
) )
func TestPublisher(t *testing.T) { func TestPublisher(t *testing.T) {
+2 -1
View File
@@ -25,11 +25,12 @@ import (
"strings" "strings"
"time" "time"
otelUtils "github.com/fission/fission/pkg/utils/otel"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"go.opentelemetry.io/otel" "go.opentelemetry.io/otel"
"go.uber.org/zap" "go.uber.org/zap"
"golang.org/x/net/context/ctxhttp" "golang.org/x/net/context/ctxhttp"
otelUtils "github.com/fission/fission/pkg/utils/otel"
) )
type ( type (
+2 -1
View File
@@ -29,7 +29,8 @@ import (
"strings" "strings"
"time" "time"
"github.com/pkg/errors" "errors"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"go.uber.org/zap" "go.uber.org/zap"
k8stypes "k8s.io/apimachinery/pkg/types" k8stypes "k8s.io/apimachinery/pkg/types"
+2 -3
View File
@@ -20,7 +20,6 @@ import (
"fmt" "fmt"
"time" "time"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
k8sCache "k8s.io/client-go/tools/cache" k8sCache "k8s.io/client-go/tools/cache"
@@ -111,7 +110,7 @@ func (frr *functionReferenceResolver) resolve(trigger fv1.HTTPTrigger) (*resolve
} }
default: default:
return nil, errors.Errorf("unrecognized function reference type %v", trigger.Spec.FunctionReference.Type) return nil, fmt.Errorf("unrecognized function reference type %v", trigger.Spec.FunctionReference.Type)
} }
// cache resolve result // cache resolve result
@@ -145,7 +144,7 @@ func (frr *functionReferenceResolver) resolveByName(namespace, name string) (*re
} }
if !isExist { if !isExist {
frr.logger.Error("function does not exists", zap.String("name", name), zap.String("namespace", namespace)) frr.logger.Error("function does not exists", zap.String("name", name), zap.String("namespace", namespace))
return nil, errors.Errorf("function %s/%s does not exist", namespace, name) return nil, fmt.Errorf("function %s/%s does not exist", namespace, name)
} }
f := obj.(*fv1.Function) f := obj.(*fv1.Function)

Some files were not shown because too many files have changed in this diff Show More