Search in sources :

Example 1 with MinionFingersOnMasterResponse

use of com.sequenceiq.cloudbreak.orchestrator.salt.domain.MinionFingersOnMasterResponse in project cloudbreak by hortonworks.

the class MinionAcceptor method fetchFingerprintsFromMaster.

private Map<String, String> fetchFingerprintsFromMaster(SaltConnector sc, List<String> minions) throws CloudbreakOrchestratorFailedException {
    Map<String, String> unacceptedMinions;
    try {
        MinionFingersOnMasterResponse response = sc.wheel("key.finger", minions, MinionFingersOnMasterResponse.class);
        LOGGER.debug("MinionFingersOnMasterResponse: {}", response);
        unacceptedMinions = response.getUnacceptedMinions();
    } catch (Exception e) {
        LOGGER.error("Error during fetching fingerprints from master for minions: {}", minions, e);
        throw new CloudbreakOrchestratorFailedException("Error during fetching fingerprints from master for minions", e);
    }
    validateMasterFingerprintResponse(minions, unacceptedMinions);
    return unacceptedMinions;
}
Also used : CloudbreakOrchestratorFailedException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorFailedException) MinionFingersOnMasterResponse(com.sequenceiq.cloudbreak.orchestrator.salt.domain.MinionFingersOnMasterResponse) CloudbreakOrchestratorFailedException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorFailedException)

Example 2 with MinionFingersOnMasterResponse

use of com.sequenceiq.cloudbreak.orchestrator.salt.domain.MinionFingersOnMasterResponse in project cloudbreak by hortonworks.

the class MinionAcceptorTest method testAllMinionsAcceptedWithMatchingFingerprint.

@Test
public void testAllMinionsAcceptedWithMatchingFingerprint() throws CloudbreakOrchestratorFailedException {
    MinionKeysOnMasterResponse keysOnMasterResponse = mock(MinionKeysOnMasterResponse.class);
    MinionFingersOnMasterResponse fingersOnMasterResponse = mock(MinionFingersOnMasterResponse.class);
    FingerprintFromSbCollector fingerprintCollector = mock(FingerprintFromSbCollector.class);
    FingerprintsResponse fingerprintsResponse = mock(FingerprintsResponse.class);
    Minion m1 = new Minion();
    m1.setHostName("m1");
    m1.setDomain("d");
    m1.setAddress("1.1.1.1");
    Minion m2 = new Minion();
    m2.setHostName("m2");
    m2.setDomain("d");
    m2.setAddress("1.1.1.2");
    Minion m3 = new Minion();
    m3.setHostName("m3");
    m3.setDomain("d");
    m3.setAddress("1.1.1.3");
    Minion m4 = new Minion();
    m4.setHostName("m4");
    m4.setDomain("d");
    m4.setAddress("1.1.1.4");
    Fingerprint fp1 = new Fingerprint();
    fp1.setFingerprint("finger1");
    fp1.setAddress("1.1.1.1");
    Fingerprint fp2 = new Fingerprint();
    fp2.setFingerprint("finger2");
    fp2.setAddress("1.1.1.2");
    Fingerprint fp3 = new Fingerprint();
    fp3.setFingerprint("badFinger");
    fp3.setAddress("1.1.1.3");
    when(keysOnMasterResponse.getAllMinions()).thenReturn(List.of("m2.d", "m1.d", "m3.d", "m4.d"));
    when(keysOnMasterResponse.getUnacceptedMinions()).thenReturn(List.of("m2.d", "m1.d", "m3.d"));
    when(fingersOnMasterResponse.getUnacceptedMinions()).thenReturn(Map.of("m1.d", "finger1", "m2.d", "finger2", "m3.d", "finger3"));
    when(sc.wheel(eq("key.list_all"), isNull(), eq(MinionKeysOnMasterResponse.class))).thenReturn(keysOnMasterResponse);
    when(sc.wheel(eq("key.finger"), anyCollection(), eq(MinionFingersOnMasterResponse.class))).thenReturn(fingersOnMasterResponse);
    when(fingerprintCollector.collectFingerprintFromMinions(eq(sc), argThat(arg -> arg.containsAll(List.of(m1, m2, m3))))).thenReturn(fingerprintsResponse);
    when(fingerprintsResponse.getFingerprints()).thenReturn(List.of(fp2, fp1, fp3));
    MinionAcceptor underTest = spy(new MinionAcceptor(List.of(sc), List.of(m1, m2, m3, m4), new EqualMinionFpMatcher(), fingerprintCollector));
    underTest.acceptMinions();
    verify(sc).wheel(eq("key.accept"), argThat(arg -> arg.containsAll(List.of("m2.d", "m1.d"))), eq(Object.class));
}
Also used : Assertions.assertThrows(org.junit.jupiter.api.Assertions.assertThrows) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) ArgumentMatchers.isNull(org.mockito.ArgumentMatchers.isNull) Fingerprint(com.sequenceiq.cloudbreak.orchestrator.salt.domain.Fingerprint) ArgumentMatchers.argThat(org.mockito.ArgumentMatchers.argThat) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) PowerMockito.when(org.powermock.api.mockito.PowerMockito.when) Mockito.spy(org.mockito.Mockito.spy) Mockito.verify(org.mockito.Mockito.verify) Test(org.junit.jupiter.api.Test) ArgumentMatchers.anyCollection(org.mockito.ArgumentMatchers.anyCollection) Mockito.never(org.mockito.Mockito.never) List(java.util.List) MinionKeysOnMasterResponse(com.sequenceiq.cloudbreak.orchestrator.salt.domain.MinionKeysOnMasterResponse) Minion(com.sequenceiq.cloudbreak.orchestrator.salt.domain.Minion) CloudbreakOrchestratorFailedException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorFailedException) FingerprintsResponse(com.sequenceiq.cloudbreak.orchestrator.salt.domain.FingerprintsResponse) Map(java.util.Map) MinionFingersOnMasterResponse(com.sequenceiq.cloudbreak.orchestrator.salt.domain.MinionFingersOnMasterResponse) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) SaltConnector(com.sequenceiq.cloudbreak.orchestrator.salt.client.SaltConnector) Mockito.mock(org.mockito.Mockito.mock) Fingerprint(com.sequenceiq.cloudbreak.orchestrator.salt.domain.Fingerprint) FingerprintsResponse(com.sequenceiq.cloudbreak.orchestrator.salt.domain.FingerprintsResponse) MinionFingersOnMasterResponse(com.sequenceiq.cloudbreak.orchestrator.salt.domain.MinionFingersOnMasterResponse) Minion(com.sequenceiq.cloudbreak.orchestrator.salt.domain.Minion) MinionKeysOnMasterResponse(com.sequenceiq.cloudbreak.orchestrator.salt.domain.MinionKeysOnMasterResponse) Test(org.junit.jupiter.api.Test)

Example 3 with MinionFingersOnMasterResponse

use of com.sequenceiq.cloudbreak.orchestrator.salt.domain.MinionFingersOnMasterResponse in project cloudbreak by hortonworks.

the class MinionAcceptorTest method testFetchFingerprintsFromMasterValidation.

@Test
public void testFetchFingerprintsFromMasterValidation() {
    MinionKeysOnMasterResponse keysOnMasterResponse = mock(MinionKeysOnMasterResponse.class);
    MinionFingersOnMasterResponse fingersOnMasterResponse = mock(MinionFingersOnMasterResponse.class);
    Minion m1 = new Minion();
    m1.setHostName("m1");
    m1.setDomain("d");
    Minion m2 = new Minion();
    m2.setHostName("m2");
    m2.setDomain("d");
    when(keysOnMasterResponse.getAllMinions()).thenReturn(List.of("m2.d", "m1.d"));
    when(keysOnMasterResponse.getUnacceptedMinions()).thenReturn(List.of("m2.d", "m1.d"));
    when(fingersOnMasterResponse.getUnacceptedMinions()).thenReturn(Map.of("m1.d", "finger1"));
    when(sc.wheel(eq("key.list_all"), isNull(), eq(MinionKeysOnMasterResponse.class))).thenReturn(keysOnMasterResponse);
    when(sc.wheel(eq("key.finger"), anyCollection(), eq(MinionFingersOnMasterResponse.class))).thenReturn(fingersOnMasterResponse);
    MinionAcceptor underTest = new MinionAcceptor(List.of(sc), List.of(m1, m2), new EqualMinionFpMatcher(), new FingerprintFromSbCollector());
    assertThrows(CloudbreakOrchestratorFailedException.class, underTest::acceptMinions);
}
Also used : MinionFingersOnMasterResponse(com.sequenceiq.cloudbreak.orchestrator.salt.domain.MinionFingersOnMasterResponse) Minion(com.sequenceiq.cloudbreak.orchestrator.salt.domain.Minion) MinionKeysOnMasterResponse(com.sequenceiq.cloudbreak.orchestrator.salt.domain.MinionKeysOnMasterResponse) Test(org.junit.jupiter.api.Test)

Aggregations

MinionFingersOnMasterResponse (com.sequenceiq.cloudbreak.orchestrator.salt.domain.MinionFingersOnMasterResponse)3 CloudbreakOrchestratorFailedException (com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorFailedException)2 Minion (com.sequenceiq.cloudbreak.orchestrator.salt.domain.Minion)2 MinionKeysOnMasterResponse (com.sequenceiq.cloudbreak.orchestrator.salt.domain.MinionKeysOnMasterResponse)2 Test (org.junit.jupiter.api.Test)2 SaltConnector (com.sequenceiq.cloudbreak.orchestrator.salt.client.SaltConnector)1 Fingerprint (com.sequenceiq.cloudbreak.orchestrator.salt.domain.Fingerprint)1 FingerprintsResponse (com.sequenceiq.cloudbreak.orchestrator.salt.domain.FingerprintsResponse)1 List (java.util.List)1 Map (java.util.Map)1 Assertions.assertEquals (org.junit.jupiter.api.Assertions.assertEquals)1 Assertions.assertThrows (org.junit.jupiter.api.Assertions.assertThrows)1 ArgumentMatchers.any (org.mockito.ArgumentMatchers.any)1 ArgumentMatchers.anyCollection (org.mockito.ArgumentMatchers.anyCollection)1 ArgumentMatchers.argThat (org.mockito.ArgumentMatchers.argThat)1 ArgumentMatchers.eq (org.mockito.ArgumentMatchers.eq)1 ArgumentMatchers.isNull (org.mockito.ArgumentMatchers.isNull)1 Mockito.mock (org.mockito.Mockito.mock)1 Mockito.never (org.mockito.Mockito.never)1 Mockito.spy (org.mockito.Mockito.spy)1