You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@openwhisk.apache.org by GitBox <gi...@apache.org> on 2018/01/04 22:01:26 UTC

[GitHub] mrutkows closed pull request #678: Parameterizing trigger name rule name as well as triggers and actions inside rule

mrutkows closed pull request #678: Parameterizing trigger name rule name as well as triggers and actions inside rule
URL: https://github.com/apache/incubator-openwhisk-wskdeploy/pull/678
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index 8403b47e..5061351c 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 7ec496ae..dde8866a 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 9b95a097..58cd46be 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 00000000..71ef1960
--- /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 97023712..50d935ba 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
+}


 

----------------------------------------------------------------
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