diff --git a/Gopkg.lock b/Gopkg.lock index f3f33c77..c7084be6 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -31,6 +31,15 @@ packages = ["."] revision = "5df930a27be2502f99b292b7cc09ebad4d0891f4" +[[projects]] + branch = "master" + name = "github.com/fnproject/fdk-go" + packages = [ + ".", + "utils" + ] + revision = "1eb29530716f262bad5b83eb9a5b3f7483636949" + [[projects]] name = "github.com/fnproject/fn_go" packages = [ @@ -51,8 +60,8 @@ "provider/defaultprovider", "provider/oracle" ] - revision = "48652bf7061ea6b9592c48dc7452f3f275a83ef3" - version = "0.2.11" + revision = "a73952b43e3c258973f6788c0e1fab73adae33d3" + version = "0.2.12" [[projects]] name = "github.com/fsnotify/fsnotify" @@ -387,6 +396,6 @@ [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "50fbe27a6e7d101d509b451dc57c2497d0cea634bfc619b055d69da74ae40681" + inputs-digest = "2b8d75dba2323cd8238ac4954105b89eed0bf6c74d1112e9a16a6da02cb45917" solver-name = "gps-cdcl" solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml index 018f38d0..abc5ff8c 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -31,7 +31,7 @@ ignored = ["github.com/Azure/go-ansiterm*"] [[constraint]] name = "github.com/fnproject/fn_go" - version = "0.2.11" + version = "0.2.12" [[constraint]] name = "github.com/giantswarm/semver-bump" diff --git a/common/common.go b/common/common.go index b1a215a9..20510f40 100644 --- a/common/common.go +++ b/common/common.go @@ -11,8 +11,10 @@ import ( "log" "os" "os/exec" + "encoding/base32" "os/signal" "path/filepath" + "crypto/rand" "strings" "time" "unicode" @@ -32,6 +34,8 @@ const ( FunctionsDockerImage = "fnproject/fnserver" FuncfileDockerRuntime = "docker" MinRequiredDockerVersion = "17.5.0" + RequestID = "request-id" + RequestedLength = 16 ) // GetWd returns working directory. @@ -55,6 +59,16 @@ func GetDir(c *cli.Context) string { return dir } +func GetRequestID() string { + byteArr := make([]byte, RequestedLength) + _, err := rand.Read(byteArr) + if err != nil { + log.Fatalf("failed to generate random number for requestID") + } + + return base32.StdEncoding.WithPadding(base32.NoPadding).EncodeToString(byteArr) +} + // BuildFunc bumps version and builds function. func BuildFunc(c *cli.Context, fpath string, funcfile *FuncFile, buildArg []string, noCache bool) (*FuncFile, error) { var err error diff --git a/main.go b/main.go index cf30889c..afbdc9ac 100644 --- a/main.go +++ b/main.go @@ -2,8 +2,11 @@ package main import ( "bytes" + "crypto/rand" + "encoding/base32" "fmt" "io" + "log" "os" "sort" "strings" @@ -11,12 +14,23 @@ import ( "text/template" "github.com/fnproject/cli/commands" + "github.com/fnproject/cli/common" "github.com/fnproject/cli/common/color" "github.com/fnproject/cli/config" "github.com/spf13/viper" "github.com/urfave/cli" ) +func getRequestID() string { + byteArr := make([]byte, 16) + _, err := rand.Read(byteArr) + if err != nil { + log.Fatalf("failed to generate random number for requestID") + } + + return base32.StdEncoding.WithPadding(base32.NoPadding).EncodeToString(byteArr) +} + func newFn() *cli.App { app := cli.NewApp() app.Name = "fn" @@ -29,6 +43,8 @@ func newFn() *cli.App { if err != nil { return err } + + viper.Set(common.RequestID, common.GetRequestID()) commandArgOverrides(c) return nil } diff --git a/objects/app/apps.go b/objects/app/apps.go index b265c694..614d7ddf 100644 --- a/objects/app/apps.go +++ b/objects/app/apps.go @@ -12,11 +12,12 @@ import ( "github.com/fnproject/cli/client" "github.com/fnproject/cli/common" - fnclient "github.com/fnproject/fn_go/client" + fnclient "github.com/fnproject/fn_go/client" apiapps "github.com/fnproject/fn_go/client/apps" "github.com/fnproject/fn_go/models" "github.com/fnproject/fn_go/provider" "github.com/jmoiron/jsonq" + "github.com/spf13/viper" "github.com/urfave/cli" ) @@ -26,7 +27,8 @@ type appsCmd struct { } func (a *appsCmd) list(c *cli.Context) error { - params := &apiapps.GetAppsParams{Context: context.Background()} + ctx := provider.WithRequestID(context.Background(), viper.GetString("request-id")) + params := &apiapps.GetAppsParams{Context: ctx} var resApps []*models.App for { resp, err := a.client.Apps.GetApps(params)