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:
[email protected]


With regards,
Apache Git Services

Reply via email to