This is an automated email from the ASF dual-hosted git repository. pdesai pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-wskdeploy.git
The following commit(s) were added to refs/heads/master by this push: new a3efa2c Bug fix. Export shouldn't fail when ApiGW missing (#979) a3efa2c is described below commit a3efa2c9d5e99c7d38322d4bca61a4a414c6ef88 Author: Pavel Kravchenko <kpa...@il.ibm.com> AuthorDate: Mon Sep 10 21:00:06 2018 +0300 Bug fix. Export shouldn't fail when ApiGW missing (#979) * Bug fix. Export shouldn't fail when ApiGW missing * reverting unneeded formatting --- cmd/export.go | 92 ++++++++++++++++++++++------------------ wski18n/i18n_ids.go | 1 + wski18n/i18n_resources.go | 22 +++++----- wski18n/resources/en_US.all.json | 4 ++ 4 files changed, 66 insertions(+), 53 deletions(-) diff --git a/cmd/export.go b/cmd/export.go index a894906..886344e 100644 --- a/cmd/export.go +++ b/cmd/export.go @@ -30,6 +30,7 @@ import ( "github.com/apache/incubator-openwhisk-wskdeploy/runtimes" "github.com/apache/incubator-openwhisk-wskdeploy/utils" "github.com/apache/incubator-openwhisk-wskdeploy/wski18n" + "github.com/apache/incubator-openwhisk-wskdeploy/wskprint" "github.com/spf13/cobra" ) @@ -274,68 +275,75 @@ func exportProject(projectName string, targetManifest string) error { } - // List API request query parameters - apiListReqOptions := new(whisk.ApiListRequestOptions) - apiListReqOptions.SpaceGuid = strings.Split(client.Config.AuthToken, ":")[0] - apiListReqOptions.AccessToken = client.Config.ApigwAccessToken + // API Gateway is an optional component. Export APIs only when ApigwAccessToken is configured + if len(client.ApigwAccessToken) == 0 { + warningString := wski18n.T(wski18n.ID_MSG_CONFIG_MISSING_APIGW_ACCESS_TOKEN) + wskprint.PrintOpenWhiskWarning(warningString) + } else { - // Get list of APIs from OW - retApiList, _, err := client.Apis.List(apiListReqOptions) - if err != nil { - return err - } + // List API request query parameters + apiListReqOptions := new(whisk.ApiListRequestOptions) + apiListReqOptions.SpaceGuid = strings.Split(client.Config.AuthToken, ":")[0] + apiListReqOptions.AccessToken = client.Config.ApigwAccessToken + + // Get list of APIs from OW + retApiList, _, err := client.Apis.List(apiListReqOptions) + if err != nil { + return err + } - // iterate over the list of APIs to determine whether any of them part of the managed project - retApiArray := (*whisk.RetApiArray)(retApiList) - for _, api := range retApiArray.Apis { + // iterate over the list of APIs to determine whether any of them part of the managed project + retApiArray := (*whisk.RetApiArray)(retApiList) + for _, api := range retApiArray.Apis { - apiName := api.ApiValue.Swagger.Info.Title - apiBasePath := strings.TrimPrefix(api.ApiValue.Swagger.BasePath, "/") + apiName := api.ApiValue.Swagger.Info.Title + apiBasePath := strings.TrimPrefix(api.ApiValue.Swagger.BasePath, "/") - // run over api paths looking for one pointing to an action belonging to the given project - for path := range api.ApiValue.Swagger.Paths { - for op, opv := range api.ApiValue.Swagger.Paths[path].MakeOperationMap() { - if len(opv.XOpenWhisk.Package) > 0 { - pkgName := opv.XOpenWhisk.Package + // run over api paths looking for one pointing to an action belonging to the given project + for path := range api.ApiValue.Swagger.Paths { + for op, opv := range api.ApiValue.Swagger.Paths[path].MakeOperationMap() { + if len(opv.XOpenWhisk.Package) > 0 { + pkgName := opv.XOpenWhisk.Package - if pkg, ok := maniyaml.Packages[pkgName]; ok { - if pkg.Namespace == opv.XOpenWhisk.Namespace { + if pkg, ok := maniyaml.Packages[pkgName]; ok { + if pkg.Namespace == opv.XOpenWhisk.Namespace { - // now adding the api to the maniyaml - if pkg.Apis == nil { - pkg.Apis = make(map[string]map[string]map[string]map[string]parsers.APIMethodResponse) - } + // now adding the api to the maniyaml + if pkg.Apis == nil { + pkg.Apis = make(map[string]map[string]map[string]map[string]parsers.APIMethodResponse) + } - path = strings.TrimPrefix(path, "/") + path = strings.TrimPrefix(path, "/") - apiMethodResponse := *new(parsers.APIMethodResponse) - splitApiUrl := strings.Split(opv.XOpenWhisk.ApiUrl, ".") - responseType := splitApiUrl[len(splitApiUrl)-1] + apiMethodResponse := *new(parsers.APIMethodResponse) + splitApiUrl := strings.Split(opv.XOpenWhisk.ApiUrl, ".") + responseType := splitApiUrl[len(splitApiUrl)-1] - apiMethodResponse.Method = op - apiMethodResponse.Response = responseType + apiMethodResponse.Method = op + apiMethodResponse.Response = responseType - if pkgApi, ok := pkg.Apis[apiName]; ok { - if pkgApiBasePath, ok := pkgApi[apiBasePath]; ok { - if _, ok := pkgApiBasePath[path]; ok { - pkg.Apis[apiName][apiBasePath][path][opv.XOpenWhisk.ActionName] = apiMethodResponse + if pkgApi, ok := pkg.Apis[apiName]; ok { + if pkgApiBasePath, ok := pkgApi[apiBasePath]; ok { + if _, ok := pkgApiBasePath[path]; ok { + pkg.Apis[apiName][apiBasePath][path][opv.XOpenWhisk.ActionName] = apiMethodResponse + } else { + pkg.Apis[apiName][apiBasePath][path] = map[string]parsers.APIMethodResponse{} + pkg.Apis[apiName][apiBasePath][path][opv.XOpenWhisk.ActionName] = apiMethodResponse + } } else { + pkg.Apis[apiName][apiBasePath] = map[string]map[string]parsers.APIMethodResponse{} pkg.Apis[apiName][apiBasePath][path] = map[string]parsers.APIMethodResponse{} pkg.Apis[apiName][apiBasePath][path][opv.XOpenWhisk.ActionName] = apiMethodResponse } } else { + pkg.Apis[apiName] = map[string]map[string]map[string]parsers.APIMethodResponse{} pkg.Apis[apiName][apiBasePath] = map[string]map[string]parsers.APIMethodResponse{} pkg.Apis[apiName][apiBasePath][path] = map[string]parsers.APIMethodResponse{} pkg.Apis[apiName][apiBasePath][path][opv.XOpenWhisk.ActionName] = apiMethodResponse } - } else { - pkg.Apis[apiName] = map[string]map[string]map[string]parsers.APIMethodResponse{} - pkg.Apis[apiName][apiBasePath] = map[string]map[string]parsers.APIMethodResponse{} - pkg.Apis[apiName][apiBasePath][path] = map[string]parsers.APIMethodResponse{} - pkg.Apis[apiName][apiBasePath][path][opv.XOpenWhisk.ActionName] = apiMethodResponse - } - maniyaml.Packages[pkgName] = pkg + maniyaml.Packages[pkgName] = pkg + } } } } diff --git a/wski18n/i18n_ids.go b/wski18n/i18n_ids.go index faaf979..041aff8 100644 --- a/wski18n/i18n_ids.go +++ b/wski18n/i18n_ids.go @@ -336,4 +336,5 @@ var I18N_ID_SET = [](string){ ID_WARN_PACKAGES_NOT_FOUND_X_path_X, ID_WARN_RUNTIME_CHANGED_X_runtime_X_action_X, ID_WARN_WHISK_PROPS_DEPRECATED, + ID_MSG_CONFIG_MISSING_APIGW_ACCESS_TOKEN, } diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go index ecc0f6a..2a1c643 100644 --- a/wski18n/i18n_resources.go +++ b/wski18n/i18n_resources.go @@ -92,12 +92,12 @@ func wski18nResourcesDe_deAllJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)} + info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(436), modTime: time.Unix(1536397114, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x3c\x6b\x8f\x1b\x37\x92\xdf\xfd\x2b\x0a\xc1\x02\x4e\x80\x19\x4d\xb2\x87\x03\x0e\xc6\xf9\x80\x39\x7b\x92\x9d\x8d\xed\x31\xc6\xe3\x0d\x02\xdb\x68\x53\xdd\x25\x89\xab\x6e\xb2\x97\x64\x4b\x56\x06\xfa\xef\x87\x2a\x92\xdd\xad\x47\x3f\x24\x3b\xb8\xf5\x17\x4b\x22\x59\x2f\x16\xeb\x49\xce\x87\x27\x00\x8f\x4f\x00\x00\xbe\x93\xd9\x77\xcf\xe0\xbb\xc2\xce\x93\xd2\xe0\x4c\x7e\x49\xd0\x18\x6d\xbe\xbb\xf0\xa3\xce\x08 [...] +var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x3c\x6b\x8f\x1b\x37\x92\xdf\xfd\x2b\x0a\xc1\x02\x4e\x80\x19\x4d\xb2\x87\x03\x0e\xc6\xf9\x80\x39\x7b\x92\x9d\x8d\xed\x31\xc6\xe3\x0d\x02\xdb\x68\x53\xdd\x25\x89\xab\x6e\xb2\x97\x64\x4b\x56\x06\xfa\xef\x87\x2a\x92\xdd\xad\x47\x3f\x24\x3b\xb8\xf5\x17\x4b\x22\x59\x2f\x16\xeb\x49\xce\x87\x27\x00\x8f\x4f\x00\x00\xbe\x93\xd9\x77\xcf\xe0\xbb\xc2\xce\x93\xd2\xe0\x4c\x7e\x49\xd0\x18\x6d\xbe\xbb\xf0\xa3\xce\x08 [...] func wski18nResourcesEn_usAllJsonBytes() ([]byte, error) { return bindataRead( @@ -112,7 +112,7 @@ func wski18nResourcesEn_usAllJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 19493, mode: os.FileMode(420), modTime: time.Unix(1535665259, 0)} + info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 19618, mode: os.FileMode(436), modTime: time.Unix(1536397293, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -132,7 +132,7 @@ func wski18nResourcesEs_esAllJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)} + info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(436), modTime: time.Unix(1536397114, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -152,7 +152,7 @@ func wski18nResourcesFr_frAllJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)} + info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(436), modTime: time.Unix(1536397114, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -172,7 +172,7 @@ func wski18nResourcesIt_itAllJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)} + info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(436), modTime: time.Unix(1536397114, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -192,7 +192,7 @@ func wski18nResourcesJa_jaAllJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)} + info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(436), modTime: time.Unix(1536397114, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -212,7 +212,7 @@ func wski18nResourcesKo_krAllJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)} + info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(436), modTime: time.Unix(1536397114, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -232,7 +232,7 @@ func wski18nResourcesPt_brAllJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)} + info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(436), modTime: time.Unix(1536397114, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -252,7 +252,7 @@ func wski18nResourcesZh_hansAllJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)} + info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(436), modTime: time.Unix(1536397114, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -272,7 +272,7 @@ func wski18nResourcesZh_hantAllJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)} + info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(436), modTime: time.Unix(1536397114, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/wski18n/resources/en_US.all.json b/wski18n/resources/en_US.all.json index 35978ee..9545ea2 100644 --- a/wski18n/resources/en_US.all.json +++ b/wski18n/resources/en_US.all.json @@ -503,5 +503,9 @@ { "id": "msg_dbg_packages_found_project", "translation": "Deployment file [{{.path}}]: Found packages under project [{{.name}}].\n" + }, + { + "id": "msg_config_missing_apigw_access_token", + "translation": "The apigw access token is not configured.\n" } ]