mrutkows commented on a change in pull request #392: Load the credentials the
same way as client go does
URL:
https://github.com/apache/incubator-openwhisk-wskdeploy/pull/392#discussion_r135301997
##########
File path: deployers/whiskclient.go
##########
@@ -28,113 +28,165 @@ import (
"github.com/apache/incubator-openwhisk-client-go/whisk"
"github.com/apache/incubator-openwhisk-wskdeploy/parsers"
"github.com/apache/incubator-openwhisk-wskdeploy/utils"
+ "errors"
)
+const (
+ DEPLOYMENTFILE = "deployment.yml"
+ COMMANDLINE = "wskdeploy command line"
+ DEFAULTVALUE = "default value"
+ WSKPROPS = ".wskprops"
+ WHISKPROPERTY = "whisk.properties"
+ INTERINPUT = "interactve input"
+)
+
+type PropertyValue struct {
+ Value string
+ Source string
+}
+
+var GetPropertyValue = func (prop PropertyValue, newValue string, source
string) PropertyValue {
+ if len(prop.Value) == 0 && len(newValue) > 0 {
+ prop.Value = newValue
+ prop.Source = source
+ }
+ return prop
+}
+
+var GetPropertyUrlValueFromHost = func (prop PropertyValue, newValue string,
source string) PropertyValue {
+ if len(prop.Value) == 0 && len(newValue) > 0 {
+ url, error := utils.GetURLBase(newValue)
+ // If the api host is set in a correct format, convert it into base
url.
+ if error == nil {
+ prop.Value = url.String()
+ prop.Source = COMMANDLINE
+ }
+ }
+ return prop
+}
+
+var GetWhiskPropertiesImp = func () whisk.PropertiesImp {
+ return whisk.GetPropertiesImp()
+}
+
+var GetWskPropFromWskprops = func (pi whisk.Properties, proppath string)
(*whisk.Wskprops, error) {
+ return whisk.GetWskPropFromWskprops(pi, proppath)
+}
+
+var GetWskPropFromWhiskProperty = func (pi whisk.Properties) (*whisk.Wskprops,
error) {
+ return whisk.GetWskPropFromWhiskProperty(pi)
+}
+
+var GetCommandLineFlags = func () (string, string, string) {
+ return utils.Flags.ApiHost, utils.Flags.Auth, utils.Flags.Namespace
+}
+
func NewWhiskClient(proppath string, deploymentPath string, isInteractive
bool) (*whisk.Client, *whisk.Config) {
- var clientConfig *whisk.Config
-
- configs, err := utils.LoadConfiguration(proppath)
- utils.Check(err)
-
- credential := configs[2]
- if len(utils.Flags.Auth) > 0 {
- credential = utils.Flags.Auth
- }
- namespace := configs[0]
-
- if namespace == "" {
- namespace = "_"
- }
- //we need to get Apihost from property file which currently not defined
in sample deployment file.
-
- u := configs[1]
- if len(utils.Flags.ApiHost) > 0 {
- u = utils.Flags.ApiHost
- }
-
- var baseURL *url.URL
-
- if u == "" && isInteractive == true {
- host, err := promptForValue("\nPlease provide the hostname for
OpenWhisk [openwhisk.ng.bluemix.net]: ")
- utils.Check(err)
- if host == "" {
- host = "openwhisk.ng.bluemix.net"
- }
-
- fmt.Println("Host set to " + host)
-
- baseURL, err = utils.GetURLBase(host)
- utils.Check(err)
-
- } else if u == "" {
- // handle some error
- } else {
- baseURL, err = utils.GetURLBase(u)
- utils.Check(err)
- }
-
- if utils.FileExists(deploymentPath) {
- mm := parsers.NewYAMLParser()
- deployment := mm.ParseDeployment(deploymentPath)
- // We get the first package from the sample deployment file.
- credentialDep := deployment.Application.Credential
- namespaceDep := deployment.Application.Namespace
- baseUrlDep := deployment.Application.BaseUrl
-
- if credentialDep != "" {
- credential = credentialDep
- }
-
- if namespaceDep != "" {
- namespace = namespaceDep
- }
-
- if baseUrlDep != "" {
- u, err := url.Parse(baseUrlDep)
- utils.Check(err)
-
- baseURL = u
- }
-
- }
-
- if credential == "" && isInteractive == true {
- cred, err := promptForValue("\nPlease provide an authentication
token: ")
- utils.Check(err)
- credential = cred
-
- fmt.Println("Authentication token set.")
- }
-
- if namespace == "" && isInteractive == true {
- ns, err := promptForValue("\nPlease provide a namespace
[default]: ")
- utils.Check(err)
-
- if ns == "" {
- ns = "_"
- }
-
- namespace = ns
- fmt.Println("Namespace set to '" + namespace + "'")
- }
-
- clientConfig = &whisk.Config{
- AuthToken: credential, //Authtoken
- Namespace: namespace, //Namespace
- BaseURL: baseURL,
- Version: "v1",
- Insecure: true, // true if you want to ignore certificate
signing
-
- }
-
- // Setup network client
- client, err := whisk.NewClient(http.DefaultClient, clientConfig)
- utils.Check(err)
- return client, clientConfig
+ credential := PropertyValue {}
+ namespace := PropertyValue {}
+ baseUrl := PropertyValue {}
+
+ // First, we look up the above variables in the deployment file.
+ if utils.FileExists(deploymentPath) {
+ mm := parsers.NewYAMLParser()
+ deployment := mm.ParseDeployment(deploymentPath)
+ credential.Value = deployment.Application.Credential
+ credential.Source = DEPLOYMENTFILE
+ namespace.Value = deployment.Application.Namespace
+ namespace.Source = DEPLOYMENTFILE
+ baseUrl.Value = deployment.Application.BaseUrl
+ baseUrl.Source = DEPLOYMENTFILE
Review comment:
@houshengbo Where is the logic to pull 'credential' value from manifest.yaml
if not found in deployment.yaml?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services