diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/DistributionSetUpdate.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/DistributionSetUpdate.java
index 978483464..aeaa2c00b 100644
--- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/DistributionSetUpdate.java
+++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/DistributionSetUpdate.java
@@ -10,12 +10,15 @@
package org.eclipse.hawkbit.repository.builder;
import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Null;
import jakarta.validation.constraints.Size;
import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.NamedEntity;
import org.eclipse.hawkbit.repository.model.NamedVersionedEntity;
+import java.util.Optional;
+
/**
* Builder to update an existing {@link DistributionSet} entry. Defines all
* fields that can be updated.
@@ -23,30 +26,32 @@ import org.eclipse.hawkbit.repository.model.NamedVersionedEntity;
*/
public interface DistributionSetUpdate {
/**
- * @param name
- * for {@link DistributionSet#getName()}
+ * @param name for {@link DistributionSet#getName()}
* @return updated builder instance
*/
DistributionSetUpdate name(@Size(min = 1, max = NamedEntity.NAME_MAX_SIZE) @NotNull String name);
/**
- * @param version
- * for {@link DistributionSet#getVersion()}
+ * @param version for {@link DistributionSet#getVersion()}
* @return updated builder instance
*/
DistributionSetUpdate version(@Size(min = 1, max = NamedVersionedEntity.VERSION_MAX_SIZE) @NotNull String version);
/**
- * @param description
- * for {@link DistributionSet#getDescription()}
+ * @param description for {@link DistributionSet#getDescription()}
* @return updated builder instance
*/
DistributionSetUpdate description(@Size(max = NamedEntity.DESCRIPTION_MAX_SIZE) String description);
/**
- * @param requiredMigrationStep
- * for {@link DistributionSet#isRequiredMigrationStep()}
+ * @param locked update request if any. If not empty shall be true
+ * @return updated builder instance
+ */
+ DistributionSetUpdate locked(@Null Boolean locked);
+
+ /**
+ * @param requiredMigrationStep for {@link DistributionSet#isRequiredMigrationStep()}
* @return updated builder instance
*/
DistributionSetUpdate requiredMigrationStep(Boolean requiredMigrationStep);
-}
+}
\ No newline at end of file
diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/SoftwareModuleBuilder.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/SoftwareModuleBuilder.java
index d6ada16c0..375828c46 100644
--- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/SoftwareModuleBuilder.java
+++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/SoftwareModuleBuilder.java
@@ -28,4 +28,4 @@ public interface SoftwareModuleBuilder {
* @return builder instance
*/
SoftwareModuleCreate create();
-}
+}
\ No newline at end of file
diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/SoftwareModuleUpdate.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/SoftwareModuleUpdate.java
index 12f075848..297238133 100644
--- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/SoftwareModuleUpdate.java
+++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/builder/SoftwareModuleUpdate.java
@@ -9,6 +9,8 @@
*/
package org.eclipse.hawkbit.repository.builder;
+import jakarta.annotation.Nullable;
+import jakarta.validation.constraints.Null;
import jakarta.validation.constraints.Size;
import org.eclipse.hawkbit.repository.model.NamedEntity;
@@ -34,4 +36,10 @@ public interface SoftwareModuleUpdate {
* @return updated builder instance
*/
SoftwareModuleUpdate vendor(@Size(max = SoftwareModule.VENDOR_MAX_SIZE) String vendor);
-}
+
+ /**
+ * @param locked update request if any. If not empty shall be true
+ * @return updated builder instance
+ */
+ SoftwareModuleUpdate locked(@Null Boolean locked);
+}
\ No newline at end of file
diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/AbstractDistributionSetUpdateCreate.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/AbstractDistributionSetUpdateCreate.java
index 6cf242efc..97e1f135c 100644
--- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/AbstractDistributionSetUpdateCreate.java
+++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/AbstractDistributionSetUpdateCreate.java
@@ -18,15 +18,13 @@ import org.springframework.util.StringUtils;
/**
* Create and update builder DTO.
*
- * @param
- * update or create builder interface
+ * @param update or create builder interface
*/
public abstract class AbstractDistributionSetUpdateCreate extends AbstractNamedEntityBuilder {
+
@ValidString
protected String version;
protected Boolean requiredMigrationStep;
-
-
protected Collection modules;
public T modules(final Collection modules) {
@@ -55,5 +53,4 @@ public abstract class AbstractDistributionSetUpdateCreate extends AbstractNam
public Optional getVersion() {
return Optional.ofNullable(version);
}
-
-}
+}
\ No newline at end of file
diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/AbstractNamedEntityBuilder.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/AbstractNamedEntityBuilder.java
index 6ca9da487..4b5d8f33e 100644
--- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/AbstractNamedEntityBuilder.java
+++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/AbstractNamedEntityBuilder.java
@@ -11,6 +11,8 @@ package org.eclipse.hawkbit.repository.builder;
import java.util.Optional;
+import jakarta.annotation.Nullable;
+import jakarta.validation.constraints.Null;
import org.eclipse.hawkbit.repository.ValidString;
import org.springframework.util.StringUtils;
@@ -39,5 +41,4 @@ public abstract class AbstractNamedEntityBuilder extends AbstractBaseEntityBu
public Optional getDescription() {
return Optional.ofNullable(description);
}
-
-}
+}
\ No newline at end of file
diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericDistributionSetUpdate.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericDistributionSetUpdate.java
index 68c2f9415..38c74d6e1 100644
--- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericDistributionSetUpdate.java
+++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericDistributionSetUpdate.java
@@ -9,14 +9,33 @@
*/
package org.eclipse.hawkbit.repository.builder;
+import jakarta.annotation.Nullable;
+
+import java.util.Optional;
+
/**
* Update implementation.
*/
public class GenericDistributionSetUpdate extends AbstractDistributionSetUpdateCreate
implements DistributionSetUpdate {
+ @Nullable
+ protected Boolean locked;
+
public GenericDistributionSetUpdate(final Long id) {
super.id = id;
}
-}
+ public DistributionSetUpdate locked(@Nullable final Boolean locked) {
+ if (Boolean.FALSE.equals(locked)) {
+ this.locked = null;
+ } else {
+ this.locked = locked;
+ }
+ return this;
+ }
+
+ public Boolean getLocked() {
+ return locked;
+ }
+}
\ No newline at end of file
diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericSoftwareModuleUpdate.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericSoftwareModuleUpdate.java
index c5c2a627d..26fc60a40 100644
--- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericSoftwareModuleUpdate.java
+++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/builder/GenericSoftwareModuleUpdate.java
@@ -9,14 +9,33 @@
*/
package org.eclipse.hawkbit.repository.builder;
+import jakarta.annotation.Nullable;
+
+import java.util.Optional;
+
/**
* Update implementation.
*/
public class GenericSoftwareModuleUpdate extends AbstractSoftwareModuleUpdateCreate
implements SoftwareModuleUpdate {
+ @Nullable
+ protected Boolean locked;
+
public GenericSoftwareModuleUpdate(final Long id) {
super.id = id;
}
-}
+ public SoftwareModuleUpdate locked(@Nullable final Boolean locked) {
+ if (Boolean.FALSE.equals(locked)) {
+ this.locked = null;
+ } else {
+ this.locked = locked;
+ }
+ return this;
+ }
+
+ public Boolean getLocked() {
+ return locked;
+ }
+}
\ No newline at end of file
diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java
index cd5f4d2f4..0fd26b1e0 100644
--- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java
+++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java
@@ -285,6 +285,10 @@ public class JpaDistributionSetManagement implements DistributionSetManagement {
update.getDescription().ifPresent(set::setDescription);
update.getVersion().ifPresent(set::setVersion);
+ if (Boolean.TRUE.equals(update.getLocked()) && !set.isLocked()) {
+ set.lock();
+ }
+
if (update.isRequiredMigrationStep() != null
&& !update.isRequiredMigrationStep().equals(set.isRequiredMigrationStep())) {
assertDistributionSetIsNotAssignedToTargets(update.getId());
diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaSoftwareModuleManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaSoftwareModuleManagement.java
index 6fa715c2b..2815fb867 100644
--- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaSoftwareModuleManagement.java
+++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaSoftwareModuleManagement.java
@@ -142,6 +142,9 @@ public class JpaSoftwareModuleManagement implements SoftwareModuleManagement {
update.getDescription().ifPresent(module::setDescription);
update.getVendor().ifPresent(module::setVendor);
+ if (Boolean.TRUE.equals(update.getLocked()) && !module.isLocked()) {
+ module.lock();
+ }
return softwareModuleRepository.save(module);
}
diff --git a/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtDistributionSet.java b/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtDistributionSet.java
index 8b5245afa..4a0168784 100644
--- a/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtDistributionSet.java
+++ b/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtDistributionSet.java
@@ -58,6 +58,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
"type" : "os",
"typeName" : "OS",
"vendor" : "vendor Limited Inc, California",
+ "locked" : true,
"deleted" : false,
"encrypted" : false,
"_links" : {
@@ -77,6 +78,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
"type" : "runtime",
"typeName" : "runtime",
"vendor" : "vendor GmbH, Stuttgart, Germany",
+ "locked" : true,
"deleted" : false,
"encrypted" : false,
"_links" : {
@@ -96,6 +98,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
"type" : "application",
"typeName" : "Application",
"vendor" : "vendor Limited, California",
+ "locked" : true,
"deleted" : false,
"encrypted" : false,
"_links" : {
@@ -137,12 +140,6 @@ public class MgmtDistributionSet extends MgmtNamedEntity {
@Schema(description = "Package version", example = "1.4.2")
private String version;
- @JsonProperty
- @Schema(description = """
- True if DS is a required migration step for another DS. As a result the DS’s assignment will not be cancelled
- when another DS is assigned (note: updatable only if DS is not yet assigned to a target)""", example = "false")
- private boolean requiredMigrationStep;
-
@JsonProperty
@Schema(description = "The type of the distribution set", example = "test_default_ds_type")
private String type;
@@ -158,6 +155,10 @@ public class MgmtDistributionSet extends MgmtNamedEntity {
distribution set type""", example = "true")
private Boolean complete;
+ @JsonProperty
+ @Schema(description = "If the distribution set is locked", example = "true")
+ private boolean locked;
+
@JsonProperty
@Schema(description = "Deleted flag, used for soft deleted entities", example = "false")
private boolean deleted;
@@ -167,6 +168,12 @@ public class MgmtDistributionSet extends MgmtNamedEntity {
example = "true")
private boolean valid;
+ @JsonProperty
+ @Schema(description = """
+ True if DS is a required migration step for another DS. As a result the DS’s assignment will not be cancelled
+ when another DS is assigned (note: updatable only if DS is not yet assigned to a target)""", example = "false")
+ private boolean requiredMigrationStep;
+
@JsonProperty
private List modules = new ArrayList<>();
}
\ No newline at end of file
diff --git a/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtDistributionSetRequestBodyPut.java b/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtDistributionSetRequestBodyPut.java
index 6a007d456..2d2b4817c 100644
--- a/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtDistributionSetRequestBodyPut.java
+++ b/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtDistributionSetRequestBodyPut.java
@@ -29,12 +29,21 @@ public class MgmtDistributionSetRequestBodyPut {
@JsonProperty
@Schema(description = "The name of the entity", example = "dsOne")
private String name;
+
@JsonProperty
@Schema(description = "The description of the entity", example = "Description of the distribution set.")
private String description;
+
@JsonProperty
@Schema(description = "Package version", example = "1.0.0")
private String version;
+
+ @JsonProperty
+ @Schema(description = "Put it to true only if want to lock the distribution set. Otherwise skip it. " +
+ "Shall not be false!",
+ example = "true")
+ private Boolean locked;
+
@JsonProperty
@Schema(description = """
True if DS is a required migration step for another DS. As a result the DS’s assignment will not be cancelled
diff --git a/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/softwaremodule/MgmtSoftwareModule.java b/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/softwaremodule/MgmtSoftwareModule.java
index fa83c6a45..1cde8b12e 100644
--- a/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/softwaremodule/MgmtSoftwareModule.java
+++ b/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/softwaremodule/MgmtSoftwareModule.java
@@ -45,8 +45,9 @@ import com.fasterxml.jackson.annotation.JsonProperty;
"type" : "os",
"typeName" : "OS",
"vendor" : "Vendor Limited, California",
- "deleted" : false,
"encrypted" : false,
+ "locked" : true,
+ "deleted" : false,
"_links" : {
"self" : {
"href" : "https://management-api.host.com/rest/v1/softwaremodules/6"
@@ -84,11 +85,15 @@ public class MgmtSoftwareModule extends MgmtNamedEntity {
@Schema(description = "The software vendor", example = "Vendor Limited, California")
private String vendor;
- @JsonProperty
- @Schema(description = "If the software module is deleted", example = "false")
- private boolean deleted;
-
@JsonProperty
@Schema(description = "If the software module is encrypted", example = "false")
private boolean encrypted;
+
+ @JsonProperty
+ @Schema(description = "If the software module is locked", example = "true")
+ private boolean locked;
+
+ @JsonProperty
+ @Schema(description = "If the software module is deleted", example = "false")
+ private boolean deleted;
}
\ No newline at end of file
diff --git a/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/softwaremodule/MgmtSoftwareModuleRequestBodyPut.java b/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/softwaremodule/MgmtSoftwareModuleRequestBodyPut.java
index bf2d125cc..fabd6c898 100644
--- a/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/softwaremodule/MgmtSoftwareModuleRequestBodyPut.java
+++ b/hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/softwaremodule/MgmtSoftwareModuleRequestBodyPut.java
@@ -24,7 +24,14 @@ public class MgmtSoftwareModuleRequestBodyPut {
@JsonProperty
@Schema(example = "SM Description")
private String description;
+
@JsonProperty
@Schema(example = "SM Vendor Name")
private String vendor;
+
+ @JsonProperty
+ @Schema(description = "Put it to true only if want to lock the software module. Otherwise skip it. " +
+ "Shall not be false!",
+ example = "true")
+ private Boolean locked;
}
\ No newline at end of file
diff --git a/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetMapper.java b/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetMapper.java
index f261abd81..d0f670619 100644
--- a/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetMapper.java
+++ b/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetMapper.java
@@ -111,6 +111,7 @@ public final class MgmtDistributionSetMapper {
response.setComplete(distributionSet.isComplete());
response.setType(distributionSet.getType().getKey());
response.setTypeName(distributionSet.getType().getName());
+ response.setLocked(distributionSet.isLocked());
response.setDeleted(distributionSet.isDeleted());
response.setValid(distributionSet.isValid());
diff --git a/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResource.java b/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResource.java
index 6ff509e48..1a08be338 100644
--- a/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResource.java
+++ b/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResource.java
@@ -198,10 +198,10 @@ public class MgmtDistributionSetResource implements MgmtDistributionSetRestApi {
public ResponseEntity updateDistributionSet(
@PathVariable("distributionSetId") final Long distributionSetId,
@RequestBody final MgmtDistributionSetRequestBodyPut toUpdate) {
-
final DistributionSet updated = distributionSetManagement.update(entityFactory.distributionSet()
.update(distributionSetId).name(toUpdate.getName()).description(toUpdate.getDescription())
- .version(toUpdate.getVersion()).requiredMigrationStep(toUpdate.getRequiredMigrationStep()));
+ .version(toUpdate.getVersion()).locked(toUpdate.getLocked())
+ .requiredMigrationStep(toUpdate.getRequiredMigrationStep()));
final MgmtDistributionSet response = MgmtDistributionSetMapper.toResponse(updated);
MgmtDistributionSetMapper.addLinks(updated, response);
diff --git a/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleMapper.java b/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleMapper.java
index c02fba4d3..7c67a3157 100644
--- a/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleMapper.java
+++ b/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleMapper.java
@@ -115,6 +115,7 @@ public final class MgmtSoftwareModuleMapper {
response.setType(softwareModule.getType().getKey());
response.setTypeName(softwareModule.getType().getName());
response.setVendor(softwareModule.getVendor());
+ response.setLocked(softwareModule.isLocked());
response.setDeleted(softwareModule.isDeleted());
response.setEncrypted(softwareModule.isEncrypted());
diff --git a/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleResource.java b/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleResource.java
index 1b7bd1ae6..3d202e193 100644
--- a/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleResource.java
+++ b/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleResource.java
@@ -248,7 +248,9 @@ public class MgmtSoftwareModuleResource implements MgmtSoftwareModuleRestApi {
@RequestBody final MgmtSoftwareModuleRequestBodyPut restSoftwareModule) {
final SoftwareModule module = softwareModuleManagement
.update(entityFactory.softwareModule().update(softwareModuleId)
- .description(restSoftwareModule.getDescription()).vendor(restSoftwareModule.getVendor()));
+ .description(restSoftwareModule.getDescription())
+ .vendor(restSoftwareModule.getVendor())
+ .locked(restSoftwareModule.getLocked()));
final MgmtSoftwareModule response = MgmtSoftwareModuleMapper.toResponse(module);
MgmtSoftwareModuleMapper.addLinks(module, response);