ManagementApi: Action does not have property containing rollout name (#1116)

* Mgmt Rest API: Enhance Action payload with rollout properties

Signed-off-by: Stefan Behl <stefan.behl@bosch.io>

* Enhance Mgmt REST API docs

Signed-off-by: Stefan Behl <stefan.behl@bosch.io>

* Minor changes

Signed-off-by: Stefan Behl <stefan.behl@bosch.io>
This commit is contained in:
Stefan Behl
2021-05-18 13:50:05 +02:00
committed by GitHub
parent efa21469cd
commit 069d717be1
7 changed files with 150 additions and 18 deletions

View File

@@ -10,6 +10,7 @@ package org.eclipse.hawkbit.mgmt.rest.resource;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.hasItem;
@@ -51,6 +52,7 @@ import org.eclipse.hawkbit.repository.model.ActionStatus;
import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.MetaData;
import org.eclipse.hawkbit.repository.model.NamedEntity;
import org.eclipse.hawkbit.repository.model.Rollout;
import org.eclipse.hawkbit.repository.model.SoftwareModule;
import org.eclipse.hawkbit.repository.model.Target;
import org.eclipse.hawkbit.repository.model.TargetMetadata;
@@ -2039,5 +2041,38 @@ public class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest
}
}
@Test
@Description("An action provides information of the rollout it was created for (if any).")
public void getActionWithRolloutInfo() throws Exception {
// setup
final int amountTargets = 10;
final List<Target> targets = testdataFactory.createTargets(amountTargets, "trg", "trg");
final DistributionSet ds = testdataFactory.createDistributionSet("");
final Rollout rollout = testdataFactory.createRolloutByVariables("My Rollout", "My Rollout Description", 1,
"name==trg*", ds, "50", "5");
rolloutManagement.start(rollout.getId());
rolloutManagement.handleRollouts();
// get all actions for the first target
final Target target = targets.get(0);
mvc.perform(get("/rest/v1/targets/{targetId}/actions", target.getControllerId())).andExpect(status().isOk())
.andDo(MockMvcResultPrinter.print())
.andExpect(jsonPath("content.[0].rollout", equalTo(rollout.getId().intValue())))
.andExpect(jsonPath("content.[0].rolloutName", equalTo(rollout.getName())));
// get the first action for the first target;
// verify that also the rollout link is present
final Slice<Action> action = deploymentManagement.findActionsByTarget(target.getControllerId(),
PageRequest.of(0, 100));
assertThat(action.getContent()).hasSize(1);
mvc.perform(get("/rest/v1/targets/{targetId}/actions/{actionId}", target.getControllerId(),
action.getContent().get(0).getId())).andExpect(status().isOk()).andDo(MockMvcResultPrinter.print())
.andExpect(jsonPath("$.rollout", equalTo(rollout.getId().intValue())))
.andExpect(jsonPath("$.rolloutName", equalTo(rollout.getName()))).andExpect(jsonPath(
"$._links.rollout.href", containsString("/rest/v1/rollouts/" + rollout.getId().intValue())));
}
}