File tree Expand file tree Collapse file tree 2 files changed +9
-1
lines changed
core/controller/src/main/scala/org/apache/openwhisk/core/controller
tests/src/test/scala/org/apache/openwhisk/core/controller/test Expand file tree Collapse file tree 2 files changed +9
-1
lines changed Original file line number Diff line number Diff line change @@ -220,7 +220,7 @@ trait WhiskActionsApi extends WhiskCollectionAPI with PostActionActivation with
220220 * - 500 Internal Server Error
221221 */
222222 override def create (user : Identity , entityName : FullyQualifiedEntityName )(implicit transid : TransactionId ) = {
223- parameter(' overwrite ? false ) { overwrite =>
223+ parameter(' overwrite ? false , ' deleteOld ? false ) { ( overwrite, deleteOld) =>
224224 entity(as[WhiskActionPut ]) { content =>
225225 val request = content.resolve(user.namespace)
226226 val checkAdditionalPrivileges = entitleReferencedEntities(user, Privilege .READ , request.exec).flatMap {
@@ -230,6 +230,10 @@ trait WhiskActionsApi extends WhiskCollectionAPI with PostActionActivation with
230230 onComplete(checkAdditionalPrivileges) {
231231 case Success (_) =>
232232 onComplete(WhiskActionVersionList .get(entityName, entityStore)) {
233+ case Success (result) if (result.versions.size >= actionMaxVersionLimit && ! deleteOld) =>
234+ terminate(
235+ Forbidden ,
236+ s " [PUT] entity has ${result.versions.size} versions exist which exceed $actionMaxVersionLimit, delete one of them before create new one or pass deleteOld=true to delete oldest version automatically " )
233237 case Success (result) =>
234238 val id = result.matchedDocId(content.version).getOrElse(entityName.toDocId)
235239 putEntity(
Original file line number Diff line number Diff line change @@ -1627,6 +1627,10 @@ class ActionsApiTests extends ControllerTestCommon with WhiskActionsApi {
16271627
16281628 val content = WhiskActionPut (parameters = Some (Parameters (" x" , " X" )))
16291629 Put (s " $collectionPath/ ${action.name}" , content) ~> Route .seal(routes(creds)) ~> check {
1630+ status should be(Forbidden )
1631+ }
1632+
1633+ Put (s " $collectionPath/ ${action.name}?deleteOld=true " , content) ~> Route .seal(routes(creds)) ~> check {
16301634 status should be(OK )
16311635 }
16321636 // the first version should be deleted automatically
You can’t perform that action at this time.
0 commit comments