You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by mr...@apache.org on 2018/01/04 22:01:23 UTC

[incubator-openwhisk-wskdeploy] branch master updated: Parameterizing trigger name rule name as well as triggers and actions inside rule (#678)

This is an automated email from the ASF dual-hosted git repository.

mrutkowski 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 cea9582  Parameterizing trigger name rule name as well as triggers and actions inside rule (#678)
cea9582 is described below

commit cea95823293abb5670d8bba2dcb1b225ea497ed0
Author: Belinda Vennam <be...@gmail.com>
AuthorDate: Thu Jan 4 16:01:21 2018 -0600

    Parameterizing trigger name rule name as well as triggers and actions inside rule (#678)
    
    * parameterizing trigger name rule name as well as triggers and actions inside rule
    
    * adding test case
    
    * updating based on comments move function to wskenv
---
 parsers/manifest_parser.go                |  2 +-
 parsers/manifest_parser_test.go           | 33 +++++++++++++++++++++++++++++++
 parsers/yamlparser.go                     | 29 ++++++++-------------------
 tests/dat/manifest_data_rule_env_var.yaml | 14 +++++++++++++
 wskenv/environment.go                     | 14 +++++++++++++
 5 files changed, 70 insertions(+), 22 deletions(-)

diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index 8403b47..5061351 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -691,7 +691,7 @@ func (dm *YAMLParser) ComposeTriggers(filePath string, pkg Package, ma whisk.Key
 
 	for _, trigger := range pkg.GetTriggerList() {
 		wsktrigger := new(whisk.Trigger)
-		wsktrigger.Name = trigger.Name
+		wsktrigger.Name = wskenv.ConvertSingleName(trigger.Name)
 		wsktrigger.Namespace = trigger.Namespace
 		pub := false
 		wsktrigger.Publish = &pub
diff --git a/parsers/manifest_parser_test.go b/parsers/manifest_parser_test.go
index 7ec496a..dde8866 100644
--- a/parsers/manifest_parser_test.go
+++ b/parsers/manifest_parser_test.go
@@ -1683,6 +1683,39 @@ func TestPackageName_Env_Var(t *testing.T) {
     }
 }
 
+func TestRuleName_Env_Var(t *testing.T) {
+    // read and parse manifest file with env var for rule name, and rule trigger and action
+    testRule := "test_rule"
+    os.Setenv("rule_name", testRule)
+    testTrigger := "test_trigger"
+    os.Setenv("trigger_name", testTrigger)
+    testAction := "test_actions"
+    os.Setenv("action_name", testAction);
+    mm := NewYAMLParser()
+    manifestfile := "../tests/dat/manifest_data_rule_env_var.yaml"
+    manifest, _ := mm.ParseManifest(manifestfile)
+    rules, err := mm.ComposeRulesFromAllPackages(manifest)
+    if err != nil {
+        assert.Fail(t, "Failed to compose rules")
+    }
+    packageName := "manifest1"
+
+    assert.Equal(t, 1, len(manifest.Packages[packageName].Rules), "Get rule list failed.")
+    for _, rule := range rules {
+      fmt.Print("ruleName:  ")
+      fmt.Print(rule)
+      //var rule = manifest.Packages[packageName].Rules[rule_name]
+      switch rule.Name {
+      case testRule:
+        assert.Equal(t, "test_trigger", rule.Trigger, "Get trigger name failed.")
+        assert.Equal(t, packageName + "/" + testAction, rule.Action, "Get action name failed.")
+        //assert.Equal(t, "true", rule.Rule, "Get rule expression failed.")
+      default:
+        t.Error("Get rule name failed")
+      }
+    }
+}
+
 func TestComposeActionForAnnotations(t *testing.T) {
     manifestFile := "../tests/dat/manifest_validate_action_annotations.yaml"
     mm := NewYAMLParser()
diff --git a/parsers/yamlparser.go b/parsers/yamlparser.go
index 9b95a09..58cd46b 100644
--- a/parsers/yamlparser.go
+++ b/parsers/yamlparser.go
@@ -177,18 +177,6 @@ func (yaml *YAML) GetProject() Project {
 	return yaml.Application
 }
 
-func convertSinglePackageName(packageName string) string {
-	if len(packageName) != 0 {
-		packageNameEnv := wskenv.GetEnvVar(packageName)
-		if str, ok := packageNameEnv.(string); ok {
-			return str
-		} else {
-			return packageName
-		}
-	}
-	return packageName
-}
-
 func convertPackageName(packageMap map[string]Package) map[string]Package {
 	packages := make(map[string]Package)
 	for packName, depPacks := range packageMap {
@@ -197,7 +185,7 @@ func convertPackageName(packageMap map[string]Package) map[string]Package {
 		if str, ok := packageName.(string); ok {
 			name = str
 		}
-		depPacks.Packagename = convertSinglePackageName(depPacks.Packagename)
+		depPacks.Packagename = wskenv.ConvertSingleName(depPacks.Packagename)
 		packages[name] = depPacks
 	}
 	return packages
@@ -205,12 +193,12 @@ func convertPackageName(packageMap map[string]Package) map[string]Package {
 
 func ReadEnvVariable(yaml *YAML) *YAML {
 	if yaml.Application.Name != "" {
-		yaml.Application.Package.Packagename = convertSinglePackageName(yaml.Application.Package.Packagename)
-		yaml.Package.Packagename = convertSinglePackageName(yaml.Package.Packagename)
+		yaml.Application.Package.Packagename = wskenv.ConvertSingleName(yaml.Application.Package.Packagename)
+		yaml.Package.Packagename = wskenv.ConvertSingleName(yaml.Package.Packagename)
 		yaml.Application.Packages = convertPackageName(yaml.Application.Packages)
 	} else {
-		yaml.Project.Package.Packagename = convertSinglePackageName(yaml.Project.Package.Packagename)
-		yaml.Package.Packagename = convertSinglePackageName(yaml.Package.Packagename)
+		yaml.Project.Package.Packagename = wskenv.ConvertSingleName(yaml.Project.Package.Packagename)
+		yaml.Package.Packagename = wskenv.ConvertSingleName(yaml.Package.Packagename)
 		yaml.Project.Packages = convertPackageName(yaml.Project.Packages)
 	}
 	yaml.Packages = convertPackageName(yaml.Packages)
@@ -232,13 +220,12 @@ func (trigger *Trigger) ComposeWskTrigger(kvarr []whisk.KeyValue) *whisk.Trigger
 //********************Rule functions*************************//
 func (rule *Rule) ComposeWskRule() *whisk.Rule {
 	wskrule := new(whisk.Rule)
-	wskrule.Name = rule.Name
+	wskrule.Name = wskenv.ConvertSingleName(rule.Name)
 	//wskrule.Namespace = rule.Namespace
 	pub := false
 	wskrule.Publish = &pub
-	wskrule.Trigger = rule.Trigger
-
-	wskrule.Action = rule.Action
+	wskrule.Trigger = wskenv.ConvertSingleName(rule.Trigger)
+	wskrule.Action = wskenv.ConvertSingleName(rule.Action)
 	return wskrule
 }
 
diff --git a/tests/dat/manifest_data_rule_env_var.yaml b/tests/dat/manifest_data_rule_env_var.yaml
new file mode 100644
index 0000000..71ef196
--- /dev/null
+++ b/tests/dat/manifest_data_rule_env_var.yaml
@@ -0,0 +1,14 @@
+# This test file is used to test the basic Trigger-Action-Rule grammar
+packages:
+  manifest1:
+      version: 1.0
+      license: Apache-2.0
+      actions:
+        first_action:
+          function: actions/hello.js
+      triggers:
+        $trigger_name:
+      rules:
+        $rule_name:
+          trigger: $trigger_name
+          action: $action_name
diff --git a/wskenv/environment.go b/wskenv/environment.go
index 9702371..50d935b 100644
--- a/wskenv/environment.go
+++ b/wskenv/environment.go
@@ -88,3 +88,17 @@ func GetEnvVar(key interface{}) interface{} {
 	}
 	return key
 }
+
+// Convert a string name with environment variables into
+// the new string with env variables replaced
+func ConvertSingleName(theName string) string {
+	if len(theName) != 0 {
+		theNameEnv := GetEnvVar(theName)
+		if str, ok := theNameEnv.(string); ok {
+			return str
+		} else {
+			return theName
+		}
+	}
+	return theName
+}

-- 
To stop receiving notification emails like this one, please contact
['"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>'].