You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by lz...@apache.org on 2017/08/31 01:34:28 UTC

[incubator-openwhisk-wskdeploy] branch master updated: Adding deprecation warning for using package in deployment file (#418)

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

lz1982 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 b429552  Adding deprecation warning for using package in deployment file (#418)
b429552 is described below

commit b42955299142fb89e2dfef7fbed989954430575b
Author: Priti Desai <pd...@us.ibm.com>
AuthorDate: Wed Aug 30 18:34:26 2017 -0700

    Adding deprecation warning for using package in deployment file (#418)
    
    * Adding deprecation warning for using package in deployment file
    
    * Converting array of packages to map
    
    * updating integration tests deployment files
    
    * binding input values instead of param struct
    
    * Adding integration tests
    
    * git is forcing to rename integration tests as previous commit created some
    discrepancy
---
 deployers/deploymentreader.go                      | 59 ++++++++++++++--------
 deployers/deploymentreader_test.go                 |  2 +-
 parsers/yamlparser.go                              |  2 +-
 tests/dat/deployment.yaml                          |  2 +-
 tests/src/integration/flagstests/deployment.yml    |  6 +--
 tests/src/integration/flagstests/manifest.yml      |  2 +-
 tests/src/integration/triggerrule/deployment.yml   |  6 +--
 .../actions/helloworld.js                          | 11 ++++
 .../validatePackageInDeployment/deployment.yaml    |  9 ++++
 .../validatePackageInDeployment/manifest.yaml      | 12 +++++
 .../validatePackageInDeployment_test.go            | 42 +++++++++++++++
 .../actions/helloworld.js                          | 11 ++++
 .../validatePackagesInDeployment/deployment.yaml   |  9 ++++
 .../validatePackagesInDeployment/manifest.yaml     | 12 +++++
 .../validatePackagesInDeployment_test.go           | 42 +++++++++++++++
 tests/src/integration/zipaction/deployment.yml     |  4 +-
 tests/usecases/alarmtrigger/deployment.yaml        |  4 +-
 tests/usecases/badyaml/deployment.yaml             |  6 +--
 tests/usecases/data-processing-app/deployment.yaml |  2 +-
 .../usecases/defaulttest-bindings/deployment.yaml  |  2 +-
 tests/usecases/openstack/deployment.yaml           |  4 +-
 tests/usecases/triggerrule/deployment.yml          |  2 +-
 tests/usecases/whiskbot/deployment.yaml            |  2 +-
 23 files changed, 207 insertions(+), 46 deletions(-)

diff --git a/deployers/deploymentreader.go b/deployers/deploymentreader.go
index 967916a..42db43d 100644
--- a/deployers/deploymentreader.go
+++ b/deployers/deploymentreader.go
@@ -23,6 +23,7 @@ import (
 	"github.com/apache/incubator-openwhisk-client-go/whisk"
 	"github.com/apache/incubator-openwhisk-wskdeploy/parsers"
 	"github.com/apache/incubator-openwhisk-wskdeploy/utils"
+	"log"
 )
 
 type DeploymentReader struct {
@@ -63,18 +64,27 @@ func (reader *DeploymentReader) BindAssets() error {
 
 func (reader *DeploymentReader) bindPackageInputsAndAnnotations() {
 
-	packArray := make([]parsers.Package, 0)
+	packMap := make(map[string]parsers.Package)
 
 	if reader.DeploymentDescriptor.Application.Packages == nil {
-		packArray = append(packArray, reader.DeploymentDescriptor.Application.Package)
+		// a single package is specified in deployment YAML file with "package" key
+		packMap[reader.DeploymentDescriptor.Application.Package.Packagename] = reader.DeploymentDescriptor.Application.Package
+		log.Println("WARNING: The package YAML key in deployment file will soon be deprecated. Please use packages instead as described in specifications.")
 	} else {
-		for _, depPacks := range reader.DeploymentDescriptor.Application.Packages {
-			packArray = append(packArray, depPacks)
+		for packName, depPacks := range reader.DeploymentDescriptor.Application.Packages {
+			depPacks.Packagename = packName
+			packMap[packName] = depPacks
 		}
 	}
 
-	for _, pack := range packArray {
-		serviceDeployPack := reader.serviceDeployer.Deployment.Packages[pack.Packagename]
+	for packName, pack := range packMap {
+
+		serviceDeployPack := reader.serviceDeployer.Deployment.Packages[packName]
+
+		if serviceDeployPack == nil {
+			log.Println("WARNING: Package name in deployment file " + packName + " does not match with manifest file.")
+			break
+		}
 
 		keyValArr := make(whisk.KeyValueArr, 0)
 
@@ -84,7 +94,7 @@ func (reader *DeploymentReader) bindPackageInputsAndAnnotations() {
 
 				keyVal.Key = name
 
-				keyVal.Value = utils.GetEnvVar(input)
+				keyVal.Value = utils.GetEnvVar(input.Value)
 
 				keyValArr = append(keyValArr, keyVal)
 			}
@@ -123,21 +133,27 @@ func (reader *DeploymentReader) bindPackageInputsAndAnnotations() {
 
 func (reader *DeploymentReader) bindActionInputsAndAnnotations() {
 
-	packArray := make([]parsers.Package, 1)
+	packMap := make(map[string]parsers.Package)
 
 	if reader.DeploymentDescriptor.Application.Packages == nil {
-		packArray = append(packArray, reader.DeploymentDescriptor.Application.Package)
+		// a single package is specified in deployment YAML file with "package" key
+		packMap[reader.DeploymentDescriptor.Application.Package.Packagename] = reader.DeploymentDescriptor.Application.Package
 	} else {
-		for _, depPacks := range reader.DeploymentDescriptor.Application.Packages {
-			packArray = append(packArray, depPacks)
+		for packName, depPacks := range reader.DeploymentDescriptor.Application.Packages {
+			depPacks.Packagename = packName
+			packMap[packName] = depPacks
 		}
 	}
 
-	for _, pack := range packArray {
+	for packName, pack := range packMap {
 
-		for actionName, action := range pack.Actions {
+		serviceDeployPack := reader.serviceDeployer.Deployment.Packages[packName]
+
+		if serviceDeployPack == nil {
+			break
+		}
 
-			serviceDeployPack := reader.serviceDeployer.Deployment.Packages[pack.Packagename]
+		for actionName, action := range pack.Actions {
 
 			keyValArr := make(whisk.KeyValueArr, 0)
 
@@ -147,7 +163,7 @@ func (reader *DeploymentReader) bindActionInputsAndAnnotations() {
 
 					keyVal.Key = name
 
-					keyVal.Value = utils.GetEnvVar(input)
+					keyVal.Value = utils.GetEnvVar(input.Value)
 
 					keyValArr = append(keyValArr, keyVal)
 				}
@@ -190,17 +206,18 @@ func (reader *DeploymentReader) bindActionInputsAndAnnotations() {
 
 func (reader *DeploymentReader) bindTriggerInputsAndAnnotations() {
 
-	packArray := make([]parsers.Package, 1)
+	packMap := make(map[string]parsers.Package)
 
 	if reader.DeploymentDescriptor.Application.Packages == nil {
-		packArray = append(packArray, reader.DeploymentDescriptor.Application.Package)
+		packMap[reader.DeploymentDescriptor.Application.Package.Packagename] = reader.DeploymentDescriptor.Application.Package
 	} else {
-		for _, depPacks := range reader.DeploymentDescriptor.Application.Packages {
-			packArray = append(packArray, depPacks)
+		for packName, depPacks := range reader.DeploymentDescriptor.Application.Packages {
+			depPacks.Packagename = packName
+			packMap[packName] = depPacks
 		}
 	}
 
-	for _, pack := range packArray {
+	for _, pack := range packMap {
 
 		serviceDeployment := reader.serviceDeployer.Deployment
 
@@ -213,7 +230,7 @@ func (reader *DeploymentReader) bindTriggerInputsAndAnnotations() {
 					var keyVal whisk.KeyValue
 
 					keyVal.Key = name
-					keyVal.Value = utils.GetEnvVar(input)
+					keyVal.Value = utils.GetEnvVar(input.Value)
 
 					keyValArr = append(keyValArr, keyVal)
 				}
diff --git a/deployers/deploymentreader_test.go b/deployers/deploymentreader_test.go
index ad0b85c..5b2fe03 100644
--- a/deployers/deploymentreader_test.go
+++ b/deployers/deploymentreader_test.go
@@ -40,7 +40,7 @@ func init() {
 // Check DeploymentReader could handle deployment yaml successfully.
 func TestDeploymentReader_HandleYaml(t *testing.T) {
 	dr.HandleYaml()
-	assert.Equal(t, "JiraBackupSolution", dr.DeploymentDescriptor.Application.Package.Packagename, "DeploymentReader handle deployment yaml failed.")
+	assert.NotNil(t, dr.DeploymentDescriptor.Application.Packages["JiraBackupSolution"], "DeploymentReader handle deployment yaml failed.")
 }
 
 func TestDeployerCheck(t *testing.T) {
diff --git a/parsers/yamlparser.go b/parsers/yamlparser.go
index 88f64d1..3a6a686 100644
--- a/parsers/yamlparser.go
+++ b/parsers/yamlparser.go
@@ -162,7 +162,7 @@ type Application struct {
 	ApiHost    string             `yaml:"apiHost"`
 	Version    string             `yaml:"version"`
 	Packages   map[string]Package `yaml:"packages"` //used in deployment.yaml
-	Package    Package            `yaml:"package"`
+	Package    Package            `yaml:"package"`	// being deprecated, used in deployment.yaml
 }
 
 type DeploymentYAML struct {
diff --git a/tests/dat/deployment.yaml b/tests/dat/deployment.yaml
index 60908b1..aad8c0b 100644
--- a/tests/dat/deployment.yaml
+++ b/tests/dat/deployment.yaml
@@ -1,5 +1,5 @@
 ---
-package:
+packages:
   actions:
     -
       function: src/hello/hello.js
diff --git a/tests/src/integration/flagstests/deployment.yml b/tests/src/integration/flagstests/deployment.yml
index c37e706..73ad7b3 100644
--- a/tests/src/integration/flagstests/deployment.yml
+++ b/tests/src/integration/flagstests/deployment.yml
@@ -1,10 +1,8 @@
 application:
   name: wskdeploy-samples
 
-  package:
-    triggerrule:
-      name: helloWorldFlags
-      namespace: guest
+  packages:
+    helloWorldFlags:
       actions:
         greeting:
           inputs:
diff --git a/tests/src/integration/flagstests/manifest.yml b/tests/src/integration/flagstests/manifest.yml
index 5970bba..d119fca 100644
--- a/tests/src/integration/flagstests/manifest.yml
+++ b/tests/src/integration/flagstests/manifest.yml
@@ -1,5 +1,5 @@
 package:
-  name: helloworldFlags
+  name: helloWorldFlags
   version: 1.0
   license: Apache-2.0
   actions:
diff --git a/tests/src/integration/triggerrule/deployment.yml b/tests/src/integration/triggerrule/deployment.yml
index 27b32e4..6bfbafe 100644
--- a/tests/src/integration/triggerrule/deployment.yml
+++ b/tests/src/integration/triggerrule/deployment.yml
@@ -1,10 +1,8 @@
 application:
   name: wskdeploy-samples
 
-  package:
-    triggerrule:
-      name: helloWorldTriggerRule
-      namespace: guest
+  packages:
+    helloWorldTriggerRule:
       actions:
         greeting:
           inputs:
diff --git a/tests/src/integration/validatePackageInDeployment/actions/helloworld.js b/tests/src/integration/validatePackageInDeployment/actions/helloworld.js
new file mode 100644
index 0000000..eaa6834
--- /dev/null
+++ b/tests/src/integration/validatePackageInDeployment/actions/helloworld.js
@@ -0,0 +1,11 @@
+/**
+ * Return a simple greeting message for someone.
+ *
+ * @param name A person's name.
+ * @param place Where the person is from.
+ */
+function main(params) {
+    var name = params.name || params.payload || 'stranger';
+    var place = params.place || 'somewhere';
+    return {payload:  'Hello, ' + name + ' from ' + place + '!'};
+}
diff --git a/tests/src/integration/validatePackageInDeployment/deployment.yaml b/tests/src/integration/validatePackageInDeployment/deployment.yaml
new file mode 100644
index 0000000..7242d68
--- /dev/null
+++ b/tests/src/integration/validatePackageInDeployment/deployment.yaml
@@ -0,0 +1,9 @@
+application:
+  name: IntegrationTestPackageInDeployment
+  package:
+    name: TestPackageInDeploymentFile
+    actions:
+      helloworld:
+        inputs:
+          name: Amy Validating Package
+          place: California
diff --git a/tests/src/integration/validatePackageInDeployment/manifest.yaml b/tests/src/integration/validatePackageInDeployment/manifest.yaml
new file mode 100644
index 0000000..ff59483
--- /dev/null
+++ b/tests/src/integration/validatePackageInDeployment/manifest.yaml
@@ -0,0 +1,12 @@
+package:
+  name: TestPackageInDeploymentFile
+  actions:
+    helloworld:
+      function: actions/helloworld.js
+      runtime: nodejs:6
+      inputs:
+        name: string
+        place: string
+      outputs:
+        payload: string
+
diff --git a/tests/src/integration/validatePackageInDeployment/validatePackageInDeployment_test.go b/tests/src/integration/validatePackageInDeployment/validatePackageInDeployment_test.go
new file mode 100644
index 0000000..f98ec9d
--- /dev/null
+++ b/tests/src/integration/validatePackageInDeployment/validatePackageInDeployment_test.go
@@ -0,0 +1,42 @@
+// +build integration
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests
+
+import (
+	"github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/common"
+	"github.com/stretchr/testify/assert"
+	"os"
+	"testing"
+)
+
+var wskprops = common.GetWskprops()
+
+func TestPackageInDeploymentFile(t *testing.T) {
+	wskdeploy := common.NewWskdeploy()
+	_, err := wskdeploy.Deploy(manifestPath, deploymentPath)
+	assert.Equal(t, nil, err, "Failed to deploy based on the manifest and deployment files.")
+	_, err = wskdeploy.Undeploy(manifestPath, deploymentPath)
+	assert.Equal(t, nil, err, "Failed to undeploy based on the manifest and deployment files.")
+}
+
+var (
+	manifestPath   = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/validatePackageInDeployment/manifest.yaml"
+	deploymentPath = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/validatePackageInDeployment/deployment.yaml"
+)
diff --git a/tests/src/integration/validatePackagesInDeployment/actions/helloworld.js b/tests/src/integration/validatePackagesInDeployment/actions/helloworld.js
new file mode 100644
index 0000000..eaa6834
--- /dev/null
+++ b/tests/src/integration/validatePackagesInDeployment/actions/helloworld.js
@@ -0,0 +1,11 @@
+/**
+ * Return a simple greeting message for someone.
+ *
+ * @param name A person's name.
+ * @param place Where the person is from.
+ */
+function main(params) {
+    var name = params.name || params.payload || 'stranger';
+    var place = params.place || 'somewhere';
+    return {payload:  'Hello, ' + name + ' from ' + place + '!'};
+}
diff --git a/tests/src/integration/validatePackagesInDeployment/deployment.yaml b/tests/src/integration/validatePackagesInDeployment/deployment.yaml
new file mode 100644
index 0000000..541e0cb
--- /dev/null
+++ b/tests/src/integration/validatePackagesInDeployment/deployment.yaml
@@ -0,0 +1,9 @@
+application:
+  name: IntegrationTestPackagesInDeployment
+  packages:
+    TestPackagesInDeploymentFile:
+      actions:
+        helloworld:
+          inputs:
+            name: Amy Validating Packages
+            place: California
diff --git a/tests/src/integration/validatePackagesInDeployment/manifest.yaml b/tests/src/integration/validatePackagesInDeployment/manifest.yaml
new file mode 100644
index 0000000..30918df
--- /dev/null
+++ b/tests/src/integration/validatePackagesInDeployment/manifest.yaml
@@ -0,0 +1,12 @@
+package:
+  name: TestPackagesInDeploymentFile
+  actions:
+    helloworld:
+      function: actions/helloworld.js
+      runtime: nodejs:6
+      inputs:
+        name: string
+        place: string
+      outputs:
+        payload: string
+
diff --git a/tests/src/integration/validatePackagesInDeployment/validatePackagesInDeployment_test.go b/tests/src/integration/validatePackagesInDeployment/validatePackagesInDeployment_test.go
new file mode 100644
index 0000000..b4c5297
--- /dev/null
+++ b/tests/src/integration/validatePackagesInDeployment/validatePackagesInDeployment_test.go
@@ -0,0 +1,42 @@
+// +build integration
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests
+
+import (
+	"github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/common"
+	"github.com/stretchr/testify/assert"
+	"os"
+	"testing"
+)
+
+var wskprops = common.GetWskprops()
+
+func TestPackagesInDeploymentFile(t *testing.T) {
+	wskdeploy := common.NewWskdeploy()
+	_, err := wskdeploy.Deploy(manifestPath, deploymentPath)
+	assert.Equal(t, nil, err, "Failed to deploy based on the manifest and deployment files.")
+	_, err = wskdeploy.Undeploy(manifestPath, deploymentPath)
+	assert.Equal(t, nil, err, "Failed to undeploy based on the manifest and deployment files.")
+}
+
+var (
+	manifestPath   = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/validatePackagesInDeployment/manifest.yaml"
+	deploymentPath = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/validatePackagesInDeployment/deployment.yaml"
+)
diff --git a/tests/src/integration/zipaction/deployment.yml b/tests/src/integration/zipaction/deployment.yml
index 6574246..2577d8c 100644
--- a/tests/src/integration/zipaction/deployment.yml
+++ b/tests/src/integration/zipaction/deployment.yml
@@ -1,7 +1,7 @@
 application:
   name: wskdeploy-samples
-  package:
-    triggerrule:
+  packages:
+    zipaction:
       name: cat
       namespace: guest
       actions:
diff --git a/tests/usecases/alarmtrigger/deployment.yaml b/tests/usecases/alarmtrigger/deployment.yaml
index 6c27e8b..b8393ab 100644
--- a/tests/usecases/alarmtrigger/deployment.yaml
+++ b/tests/usecases/alarmtrigger/deployment.yaml
@@ -1,8 +1,8 @@
 application:
     name: HelloWorldEvery12Hours
     namespace: _
-    package:
-        name: helloworld
+    packages:
+      helloworld:
         actions:
             helloworld:
                 inputs:
diff --git a/tests/usecases/badyaml/deployment.yaml b/tests/usecases/badyaml/deployment.yaml
index eb011ad..0a5be72 100644
--- a/tests/usecases/badyaml/deployment.yaml
+++ b/tests/usecases/badyaml/deployment.yaml
@@ -2,9 +2,9 @@ Application:
   name: testapp
   namespace: _
   version: 1.0
-  package:
-    name: kafka
-  iputs:
+  packages:
+    kafka:
+    iputs:
       kafka_rest_url: https://kafka-rest-prod01.messagehub.services.us-south.bluemix.net:443
       topic: out-topic
     triggers:
diff --git a/tests/usecases/data-processing-app/deployment.yaml b/tests/usecases/data-processing-app/deployment.yaml
index e1c83a0..073af2c 100644
--- a/tests/usecases/data-processing-app/deployment.yaml
+++ b/tests/usecases/data-processing-app/deployment.yaml
@@ -2,7 +2,7 @@ application:
   name: testapp
   namespace: _
   version: 1.0
-  package:
+  packages:
     name: kafka
     inputs:
       kafka_rest_url: https://kafka-rest-prod01.messagehub.services.us-south.bluemix.net:443
diff --git a/tests/usecases/defaulttest-bindings/deployment.yaml b/tests/usecases/defaulttest-bindings/deployment.yaml
index c12c9dc..fd243a2 100644
--- a/tests/usecases/defaulttest-bindings/deployment.yaml
+++ b/tests/usecases/defaulttest-bindings/deployment.yaml
@@ -2,7 +2,7 @@ application:
   name: myHello
   namespace: _
   version: 0.0.1
-  package:
+  packages:
     name: defaulttest
     actions:
       greeting:
diff --git a/tests/usecases/openstack/deployment.yaml b/tests/usecases/openstack/deployment.yaml
index 78fb10c..52d3400 100644
--- a/tests/usecases/openstack/deployment.yaml
+++ b/tests/usecases/openstack/deployment.yaml
@@ -2,8 +2,8 @@ application:
   name: GBSBackups
   version: 0.0.1
   namespace: _
-  package:
-      name: JiraBackupSolution
+  packages:
+    JiraBackupSolution:
       actions:
         getApiToken:
           inputs:
diff --git a/tests/usecases/triggerrule/deployment.yml b/tests/usecases/triggerrule/deployment.yml
index 2c47834..1541b3f 100644
--- a/tests/usecases/triggerrule/deployment.yml
+++ b/tests/usecases/triggerrule/deployment.yml
@@ -1,7 +1,7 @@
 application:
   name: wskdeploy-samples
 
-  package:
+  packages:
     triggerrule:
       name: helloworld
       namespace: guest
diff --git a/tests/usecases/whiskbot/deployment.yaml b/tests/usecases/whiskbot/deployment.yaml
index 88ac386..94aa0fe 100644
--- a/tests/usecases/whiskbot/deployment.yaml
+++ b/tests/usecases/whiskbot/deployment.yaml
@@ -2,7 +2,7 @@ Application:
   name: whiskbot
   namespace: mynamespace
   version: 1.0
-  package:
+  packages:
     name: whiskbot
     inputs:
       fieldToEncrypt: XXXX

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