From b5bb1c6a75936e39c6f9172a655da91b2d203fec Mon Sep 17 00:00:00 2001 From: srinandan <13950006+srinandan@users.noreply.github.com> Date: Fri, 6 May 2022 09:50:50 -0700 Subject: [PATCH] fix #4: allow default revisions --- client/apis/apis.go | 22 ++++++++++++++++++++++ client/sharedflows/sharedflows.go | 22 ++++++++++++++++++++++ cmd/apis/depapi.go | 7 ++++++- cmd/apis/depwaitapi.go | 7 ++++++- cmd/apis/fetchapi.go | 10 +++++++--- cmd/apis/undepapi.go | 5 +++++ cmd/sharedflows/depsf.go | 7 ++++++- cmd/sharedflows/fetchsf.go | 10 +++++++--- 8 files changed, 81 insertions(+), 9 deletions(-) diff --git a/client/apis/apis.go b/client/apis/apis.go index c10c91bd0..1792a6ebd 100644 --- a/client/apis/apis.go +++ b/client/apis/apis.go @@ -105,6 +105,28 @@ func GetProxy(name string, revision int) (respBody []byte, err error) { return respBody, err } +//GetHighestProxyRevision +func GetHighestProxyRevision(name string) (version int, err error) { + apiclient.SetPrintOutput(false) + u, _ := url.Parse(apiclient.BaseURL) + u.Path = path.Join(u.Path, apiclient.GetApigeeOrg(), "apis", name) + respBody, err := apiclient.HttpClient(apiclient.GetPrintOutput(), u.String()) + apiclient.SetPrintOutput(true) + if err != nil { + return -1, err + } + + proxyRevisions := proxy{} + if err = json.Unmarshal(respBody, &proxyRevisions); err != nil { + return -1, err + } + version, err = strconv.Atoi(maxRevision(proxyRevisions.Revision)) + if err != nil { + return -1, nil + } + return version, nil +} + //GenerateDeployChangeReport func GenerateDeployChangeReport(name string, revision int, overrides bool) (respBody []byte, err error) { u, _ := url.Parse(apiclient.BaseURL) diff --git a/client/sharedflows/sharedflows.go b/client/sharedflows/sharedflows.go index 0fba9d960..a7ee34474 100644 --- a/client/sharedflows/sharedflows.go +++ b/client/sharedflows/sharedflows.go @@ -63,6 +63,28 @@ func Get(name string, revision int) (respBody []byte, err error) { return respBody, err } +//GetHighestSfRevision +func GetHighestSfRevision(name string) (version int, err error) { + apiclient.SetPrintOutput(false) + u, _ := url.Parse(apiclient.BaseURL) + u.Path = path.Join(u.Path, apiclient.GetApigeeOrg(), "sharedflows", name) + respBody, err := apiclient.HttpClient(apiclient.GetPrintOutput(), u.String()) + apiclient.SetPrintOutput(true) + if err != nil { + return -1, err + } + + sfRevisions := sharedflow{} + if err = json.Unmarshal(respBody, &sfRevisions); err != nil { + return -1, err + } + version, err = strconv.Atoi(maxRevision(sfRevisions.Revision)) + if err != nil { + return -1, nil + } + return version, nil +} + //Delete func Delete(name string, revision int) (respBody []byte, err error) { u, _ := url.Parse(apiclient.BaseURL) diff --git a/cmd/apis/depapi.go b/cmd/apis/depapi.go index 5a9afa39e..0b1dfb9da 100644 --- a/cmd/apis/depapi.go +++ b/cmd/apis/depapi.go @@ -30,6 +30,11 @@ var DepCmd = &cobra.Command{ return apiclient.SetApigeeOrg(org) }, RunE: func(cmd *cobra.Command, args []string) (err error) { + if revision == -1 { + if revision, err = apis.GetHighestProxyRevision(name); err != nil { + return + } + } _, err = apis.DeployProxy(name, revision, overrides, serviceAccountName) return }, @@ -45,7 +50,7 @@ func init() { DepCmd.Flags().StringVarP(&env, "env", "e", "", "Apigee environment name") DepCmd.Flags().IntVarP(&revision, "rev", "v", - -1, "API Proxy revision") + -1, "API Proxy revision. If not set, the highest revision is used") DepCmd.Flags().BoolVarP(&overrides, "ovr", "r", false, "Forces deployment of the new revision") DepCmd.Flags().StringVarP(&serviceAccountName, "sa", "s", diff --git a/cmd/apis/depwaitapi.go b/cmd/apis/depwaitapi.go index 9ac85b73a..fe00ed2c6 100644 --- a/cmd/apis/depwaitapi.go +++ b/cmd/apis/depwaitapi.go @@ -35,6 +35,11 @@ var DepWaitCmd = &cobra.Command{ return nil }, RunE: func(cmd *cobra.Command, args []string) (err error) { + if revision == -1 { + if revision, err = apis.GetHighestProxyRevision(name); err != nil { + return + } + } if _, err = apis.DeployProxy(name, revision, overrides, serviceAccountName); err != nil { return err @@ -82,7 +87,7 @@ func init() { DepWaitCmd.Flags().StringVarP(&env, "env", "e", "", "Apigee environment name") DepWaitCmd.Flags().IntVarP(&revision, "rev", "v", - -1, "API Proxy revision") + -1, "API Proxy revision. If not set, the highest revision is used.") DepWaitCmd.Flags().BoolVarP(&overrides, "ovr", "r", false, "Forces deployment of the new revision") DepWaitCmd.Flags().StringVarP(&serviceAccountName, "sa", "s", diff --git a/cmd/apis/fetchapi.go b/cmd/apis/fetchapi.go index 865654d7a..5bc5cdbef 100644 --- a/cmd/apis/fetchapi.go +++ b/cmd/apis/fetchapi.go @@ -28,7 +28,12 @@ var FetCmd = &cobra.Command{ Args: func(cmd *cobra.Command, args []string) (err error) { return apiclient.SetApigeeOrg(org) }, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, args []string) (err error) { + if revision == -1 { + if revision, err = apis.GetHighestProxyRevision(name); err != nil { + return + } + } return apis.FetchProxy(name, revision) }, } @@ -38,8 +43,7 @@ func init() { FetCmd.Flags().StringVarP(&name, "name", "n", "", "API Proxy Bundle Name") FetCmd.Flags().IntVarP(&revision, "rev", "v", - -1, "API Proxy revision") + -1, "API Proxy revision. If not set, the highest revision is used") _ = FetCmd.MarkFlagRequired("name") - _ = FetCmd.MarkFlagRequired("rev") } diff --git a/cmd/apis/undepapi.go b/cmd/apis/undepapi.go index ae54c0274..0421eadcd 100644 --- a/cmd/apis/undepapi.go +++ b/cmd/apis/undepapi.go @@ -30,6 +30,11 @@ var UndepCmd = &cobra.Command{ return apiclient.SetApigeeOrg(org) }, RunE: func(cmd *cobra.Command, args []string) (err error) { + if revision == -1 { + if revision, err = apis.GetHighestProxyRevision(name); err != nil { + return + } + } _, err = apis.UndeployProxy(name, revision) return }, diff --git a/cmd/sharedflows/depsf.go b/cmd/sharedflows/depsf.go index bae2baa30..c597663bd 100644 --- a/cmd/sharedflows/depsf.go +++ b/cmd/sharedflows/depsf.go @@ -30,6 +30,11 @@ var DepCmd = &cobra.Command{ return apiclient.SetApigeeOrg(org) }, RunE: func(cmd *cobra.Command, args []string) (err error) { + if revision == -1 { + if revision, err = sharedflows.GetHighestSfRevision(name); err != nil { + return + } + } _, err = sharedflows.Deploy(name, revision, overrides, serviceAccountName) return }, @@ -45,7 +50,7 @@ func init() { DepCmd.Flags().StringVarP(&env, "env", "e", "", "Apigee environment name") DepCmd.Flags().IntVarP(&revision, "rev", "v", - -1, "Sharedflow revision") + -1, "Sharedflow revision. If not set, the highest revision is used") DepCmd.Flags().BoolVarP(&overrides, "ovr", "r", false, "Forces deployment of the new revision") DepCmd.Flags().StringVarP(&serviceAccountName, "sa", "s", diff --git a/cmd/sharedflows/fetchsf.go b/cmd/sharedflows/fetchsf.go index 6533a64bc..950c07c8b 100644 --- a/cmd/sharedflows/fetchsf.go +++ b/cmd/sharedflows/fetchsf.go @@ -29,7 +29,12 @@ var FetCmd = &cobra.Command{ apiclient.SetApigeeEnv(env) return apiclient.SetApigeeOrg(org) }, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, args []string) (err error) { + if revision == -1 { + if revision, err = sharedflows.GetHighestSfRevision(name); err != nil { + return + } + } return sharedflows.Fetch(name, revision) }, } @@ -39,8 +44,7 @@ func init() { FetCmd.Flags().StringVarP(&name, "name", "n", "", "Shared flow Bundle Name") FetCmd.Flags().IntVarP(&revision, "rev", "v", - -1, "Shared flow revision") + -1, "Shared flow revision. If not set, the highest revision is used") _ = FetCmd.MarkFlagRequired("name") - _ = FetCmd.MarkFlagRequired("rev") }