use of io.fabric8.kubernetes.api.model.events.v1beta1.Event in project che-server by eclipse-che.
the class KubernetesDeploymentsTest method setUp.
@BeforeMethod
public void setUp() throws Exception {
lenient().when(clientFactory.create(anyString())).thenReturn(kubernetesClient);
lenient().when(pod.getStatus()).thenReturn(status);
lenient().when(pod.getMetadata()).thenReturn(metadata);
lenient().when(metadata.getName()).thenReturn(POD_NAME);
// Model DSL: client.pods().inNamespace(...).withName(...).get().getMetadata().getName();
lenient().doReturn(podsMixedOperation).when(kubernetesClient).pods();
lenient().doReturn(podsNamespaceOperation).when(podsMixedOperation).inNamespace(anyString());
lenient().doReturn(podResource).when(podsNamespaceOperation).withName(anyString());
lenient().doReturn(pod).when(podResource).get();
// Model DSL:
// client.apps().deployments(...).inNamespace(...).withName(...).get().getMetadata().getName();
lenient().doReturn(apps).when(kubernetesClient).apps();
lenient().doReturn(deploymentsMixedOperation).when(apps).deployments();
lenient().doReturn(deploymentsNamespaceOperation).when(deploymentsMixedOperation).inNamespace(anyString());
lenient().doReturn(deploymentResource).when(deploymentsNamespaceOperation).withName(anyString());
lenient().doReturn(deployment).when(deploymentResource).get();
lenient().doReturn(deploymentMetadata).when(deployment).getMetadata();
lenient().doReturn(deploymentSpec).when(deployment).getSpec();
// Model DSL: client.events().inNamespace(...).watch(...)
// event.getInvolvedObject().getKind()
lenient().when(kubernetesClient.v1()).thenReturn(v1APIGroupDSL);
lenient().when(v1APIGroupDSL.events()).thenReturn(eventMixedOperation);
lenient().when(eventMixedOperation.inNamespace(any())).thenReturn(eventNamespaceMixedOperation);
lenient().when(event.getInvolvedObject()).thenReturn(objectReference);
lenient().when(event.getMetadata()).thenReturn(new ObjectMeta());
// Workaround to ensure mocked event happens 'after' watcher initialisation.
Date futureDate = new Date();
futureDate.setYear(3000);
lenient().when(event.getLastTimestamp()).thenReturn(PodEvents.convertDateToEventTimestamp(futureDate));
kubernetesDeployments = new KubernetesDeployments("namespace", "workspace123", clientFactory, executor);
serverMock = new KubernetesServer(true, true);
serverMock.before();
}
use of io.fabric8.kubernetes.api.model.events.v1beta1.Event in project che-server by eclipse-che.
the class KubernetesDeploymentsTest method shouldFallbackToFirstTimeStampIfLastTimeStampIsNull.
@Test
public void shouldFallbackToFirstTimeStampIfLastTimeStampIsNull() throws InfrastructureException {
// Given
when(objectReference.getKind()).thenReturn(POD_OBJECT_KIND);
kubernetesDeployments.watchEvents(podEventHandler);
verify(eventNamespaceMixedOperation).watch(eventWatcherCaptor.capture());
Watcher<Event> watcher = eventWatcherCaptor.getValue();
Event event = mock(Event.class);
when(event.getInvolvedObject()).thenReturn(objectReference);
when(event.getMetadata()).thenReturn(new ObjectMeta());
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, 1);
Date nextYear = cal.getTime();
when(event.getFirstTimestamp()).thenReturn(PodEvents.convertDateToEventTimestamp(nextYear));
when(event.getLastTimestamp()).thenReturn(null);
// When
watcher.eventReceived(Watcher.Action.ADDED, event);
// Then
verify(event, times(1)).getLastTimestamp();
verify(event, times(1)).getFirstTimestamp();
ArgumentCaptor<PodEvent> captor = ArgumentCaptor.forClass(PodEvent.class);
verify(podEventHandler).handle(captor.capture());
PodEvent podEvent = captor.getValue();
assertEquals(podEvent.getLastTimestamp(), PodEvents.convertDateToEventTimestamp(nextYear));
}
use of io.fabric8.kubernetes.api.model.events.v1beta1.Event in project che-server by eclipse-che.
the class PVCSubPathHelperTest method newEvent.
private static Event newEvent(String reason) {
Event event = new Event();
event.setReason(reason);
return event;
}
use of io.fabric8.kubernetes.api.model.events.v1beta1.Event in project che-server by eclipse-che.
the class KubernetesInternalRuntime method storeStartingMachine.
/**
* Puts createdPod in the {@code machines} map and sends the starting event for this machine
*/
private void storeStartingMachine(Pod createdPod, ObjectMeta toCreateMeta, Map<String, InternalMachineConfig> machineConfigs, ServerResolver serverResolver) throws InfrastructureException {
final String workspaceId = getContext().getIdentity().getWorkspaceId();
for (Container container : createdPod.getSpec().getContainers()) {
String machineName = Names.machineName(toCreateMeta, container);
LOG.debug("Creating machine '{}' in workspace '{}'", machineName, workspaceId);
// Sometimes we facing NPE trying to retrieve machine config. Possible names mismatch. Need to
// get more info on that cases.
InternalMachineConfig machineConfig = Optional.ofNullable(machineConfigs.get(machineName)).orElseThrow(() -> {
LOG.error("Workspace '{}' start failed. Machine with name '{}' requested but not found in configs map. Present machines are: {}.", workspaceId, machineName, String.join(",", machineConfigs.keySet()));
return new InfrastructureException(format("Unable to start the workspace '%s' due to an internal inconsistency while composing the workspace runtime." + "Please report a bug. If possible, include the details from Che devfile and server log in bug report (your admin can help with that)", workspaceId));
});
machines.put(getContext().getIdentity(), new KubernetesMachineImpl(workspaceId, machineName, createdPod.getMetadata().getName(), container.getName(), MachineStatus.STARTING, machineConfig.getAttributes(), serverResolver.resolve(machineName)));
eventPublisher.sendStartingEvent(machineName, getContext().getIdentity());
}
}
use of io.fabric8.kubernetes.api.model.events.v1beta1.Event in project java-operator-sdk by java-operator-sdk.
the class EventProcessorTest method eventAlreadyUnderProcessing.
private ResourceID eventAlreadyUnderProcessing() {
when(reconciliationDispatcherMock.handleExecution(any())).then((Answer<PostExecutionControl>) invocationOnMock -> {
Thread.sleep(FAKE_CONTROLLER_EXECUTION_DURATION);
return PostExecutionControl.defaultDispatch();
});
Event event = prepareCREvent();
eventProcessor.handleEvent(event);
return event.getRelatedCustomResourceID();
}
Aggregations