You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@openwhisk.apache.org by gi...@git.apache.org on 2017/08/25 16:40:08 UTC

[GitHub] mrutkows commented on a change in pull request #392: Load the credentials the same way as client go does

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:
users@infra.apache.org


With regards,
Apache Git Services