[GitHub] markusthoemmes commented on a change in pull request #3262: Handle trigger activations with inactive rules

2018-02-13 Thread GitBox
markusthoemmes commented on a change in pull request #3262: Handle trigger 
activations with inactive rules
URL: 
https://github.com/apache/incubator-openwhisk/pull/3262#discussion_r16797
 
 

 ##
 File path: core/controller/src/main/scala/whisk/core/controller/Triggers.scala
 ##
 @@ -129,7 +129,7 @@ trait WhiskTriggersApi extends WhiskCollectionAPI {
 
   if (activeRules.nonEmpty) {
 
 Review comment:
   I'll suggest to go for the following:
   
   ```scala
   val rules = trigger.rules.getOrElse(Map.empty) // use this in belows call 
for activateRules
   
   if(rules.exists(_._2 == Status.ACTIVE)) {
  that code
   } else {
 complete(NoContent)
   }
   ```
   
   You don't need to filter out only the actives anymore, might as well exit 
early using `exists`


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:
us...@infra.apache.org


With regards,
Apache Git Services


[GitHub] markusthoemmes commented on a change in pull request #3262: Handle trigger activations with inactive rules

2018-02-13 Thread GitBox
markusthoemmes commented on a change in pull request #3262: Handle trigger 
activations with inactive rules
URL: 
https://github.com/apache/incubator-openwhisk/pull/3262#discussion_r16797
 
 

 ##
 File path: core/controller/src/main/scala/whisk/core/controller/Triggers.scala
 ##
 @@ -129,7 +129,7 @@ trait WhiskTriggersApi extends WhiskCollectionAPI {
 
   if (activeRules.nonEmpty) {
 
 Review comment:
   I'll suggest to go for the following:
   
   ```scala
   val rules = trigger.rules.getOrElse(Map.empty) // use this in belows call 
for activateRules
   
   if(rules.exists(_._2 == Status.ACTIVE)) {
  that code
   } else {
 complete(NoContent)
   }
   ```


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:
us...@infra.apache.org


With regards,
Apache Git Services


[GitHub] markusthoemmes commented on a change in pull request #3262: Handle trigger activations with inactive rules

2018-02-13 Thread GitBox
markusthoemmes commented on a change in pull request #3262: Handle trigger 
activations with inactive rules
URL: 
https://github.com/apache/incubator-openwhisk/pull/3262#discussion_r167970954
 
 

 ##
 File path: core/controller/src/main/scala/whisk/core/controller/Triggers.scala
 ##
 @@ -129,7 +129,7 @@ trait WhiskTriggersApi extends WhiskCollectionAPI {
 
   if (activeRules.nonEmpty) {
 val args: JsObject = 
trigger.parameters.merge(payload).getOrElse(JsObject())
-val actionLogList: Iterable[Future[JsObject]] = 
activateRules(user, args, activeRules)
+val actionLogList: Iterable[Future[JsObject]] = 
activateRules(user, args, trigger.rules.get)
 
 Review comment:
   Just go with a `getOrElse(Map.empty)`. `activateRules` just won


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:
us...@infra.apache.org


With regards,
Apache Git Services


[GitHub] markusthoemmes commented on a change in pull request #3262: Handle trigger activations with inactive rules

2018-02-13 Thread GitBox
markusthoemmes commented on a change in pull request #3262: Handle trigger 
activations with inactive rules
URL: 
https://github.com/apache/incubator-openwhisk/pull/3262#discussion_r167970273
 
 

 ##
 File path: tests/src/test/scala/system/basic/WskBasicTests.scala
 ##
 @@ -748,6 +748,67 @@ class WskBasicTests extends TestHelpers with 
WskTestHelpers {
   }
   }
 
+  it should "create and fire a trigger having an active rule and an inactive 
rule" in withAssetCleaner(wskprops) {
+(wp, assetHelper) =>
+  val ruleName1 = withTimestamp("r1toa1")
+  val ruleName2 = withTimestamp("r2toa2")
+  val triggerName = withTimestamp("t1tor1r2")
+  val actionName1 = withTimestamp("a1")
+  val actionName2 = withTimestamp("a2")
+  val ns = wsk.namespace.whois()
+
+  assetHelper.withCleaner(wsk.trigger, triggerName) { (trigger, _) =>
+trigger.create(triggerName)
+trigger.create(triggerName, update = true)
+  }
+
+  assetHelper.withCleaner(wsk.action, actionName1) { (action, name) =>
+action.create(name, defaultAction)
+  }
+  assetHelper.withCleaner(wsk.action, actionName2) { (action, name) =>
+action.create(name, defaultAction)
+  }
+
+  assetHelper.withCleaner(wsk.rule, ruleName1) { (rule, name) =>
+rule.create(name, trigger = triggerName, action = actionName1)
+  }
+  assetHelper.withCleaner(wsk.rule, ruleName2) { (rule, name) =>
+rule.create(name, trigger = triggerName, action = actionName2)
+rule.disable(ruleName2)
+  }
+
+  val run = wsk.trigger.fire(triggerName)
+  withActivation(wsk.activation, run) { activation =>
+activation.duration shouldBe 0L // shouldn't exist but CLI generates it
+activation.end shouldBe Instant.EPOCH // shouldn't exist but CLI 
generates it
+activation.logs shouldBe defined
+activation.logs.get.size shouldBe 2
+
+val logEntry1 = activation.logs.get(0).parseJson.asJsObject
+val logEntry2 = activation.logs.get(1).parseJson.asJsObject
+val logs = JsArray(logEntry1, logEntry2)
+val ruleActivationId: String = if 
(logEntry1.getFields("activationId").size == 1) {
+  logEntry1.getFields("activationId")(0).convertTo[String]
+} else {
+  logEntry2.getFields("activationId")(0).convertTo[String]
+}
+val expectedLogs = JsArray(
+  JsObject(
+"statusCode" -> JsNumber(0),
+"activationId" -> JsString(ruleActivationId),
+"success" -> JsBoolean(true),
+"rule" -> JsString(ns + "/" + ruleName1),
+"action" -> JsString(ns + "/" + actionName1)),
+  JsObject(
+"statusCode" -> JsNumber(1),
+"success" -> JsBoolean(false),
+"error" -> JsString(s"Rule ${ns}/$ruleName2 is inactive; action 
${ns}/$actionName2 was not activated"),
+"rule" -> JsString(ns + "/" + ruleName2),
+"action" -> JsString(ns + "/" + actionName2)))
+logs shouldBe expectedLogs
+  }
+  }
 
 Review comment:
   Test for the 204 case?


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:
us...@infra.apache.org


With regards,
Apache Git Services