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>'].