diff --git a/common/scala/src/main/scala/org/apache/openwhisk/core/entity/WhiskAction.scala b/common/scala/src/main/scala/org/apache/openwhisk/core/entity/WhiskAction.scala index 98154fe885e..6dd60a1f12a 100644 --- a/common/scala/src/main/scala/org/apache/openwhisk/core/entity/WhiskAction.scala +++ b/common/scala/src/main/scala/org/apache/openwhisk/core/entity/WhiskAction.scala @@ -56,7 +56,8 @@ case class WhiskActionPut(exec: Option[Exec] = None, limits: Option[ActionLimitsOption] = None, version: Option[SemVer] = None, publish: Option[Boolean] = None, - annotations: Option[Parameters] = None) { + annotations: Option[Parameters] = None, + delAnnotations: Option[Array[String]] = None) { protected[core] def replace(exec: Exec) = { WhiskActionPut(Some(exec), parameters, limits, version, publish, annotations) @@ -643,5 +644,5 @@ object ActionLimitsOption extends DefaultJsonProtocol { } object WhiskActionPut extends DefaultJsonProtocol { - implicit val serdes = jsonFormat6(WhiskActionPut.apply) + implicit val serdes = jsonFormat7(WhiskActionPut.apply) } diff --git a/core/controller/src/main/scala/org/apache/openwhisk/core/controller/Actions.scala b/core/controller/src/main/scala/org/apache/openwhisk/core/controller/Actions.scala index 056aadf4390..79389683a86 100644 --- a/core/controller/src/main/scala/org/apache/openwhisk/core/controller/Actions.scala +++ b/core/controller/src/main/scala/org/apache/openwhisk/core/controller/Actions.scala @@ -537,6 +537,14 @@ trait WhiskActionsApi extends WhiskCollectionAPI with PostActionActivation with val exec = content.exec getOrElse action.exec + var newAnnotations = action.annotations + content.delAnnotations.map { annotationArray => + annotationArray.foreach { annotation => + newAnnotations -= annotation + } + } + newAnnotations = newAnnotations ++ content.annotations + WhiskAction( action.namespace, action.name, @@ -545,7 +553,7 @@ trait WhiskActionsApi extends WhiskCollectionAPI with PostActionActivation with limits, content.version getOrElse action.version.upPatch, content.publish getOrElse action.publish, - WhiskActionsApi.amendAnnotations(content.annotations getOrElse action.annotations, exec, create = false)) + WhiskActionsApi.amendAnnotations(newAnnotations, exec, create = false)) .revision[WhiskAction](action.docinfo.rev) }