void sync(@NonNull PolicyConfiguration config) { if (!config.getChannels().isPresent()) { LOG.info("No alerts channels for policy {} - skipping...", config.getPolicyName()); return; } LOG.info("Synchronizing alerts channels for policy {}...", config.getPolicyName()); AlertsPolicy policy = api.getAlertsPoliciesApi().getByName(config.getPolicyName()).orElseThrow( () -> new NewRelicSyncException(format("Policy %s does not exist", config.getPolicyName()))); Set<Integer> policyChannelsToCleanup = createOrUpdatePolicyAlertsChannels(policy, config.getChannels().get()); cleanupPolicyAlertsChannels(policy, policyChannelsToCleanup); LOG.info("Alerts channels for policy {} synchronized", config.getPolicyName()); }
@Override protected Optional<Collection<Condition>> getConfigItems(PolicyConfiguration config) { return config.getConditions(); }
@Override protected Optional<Collection<ExternalServiceCondition>> getConfigItems(PolicyConfiguration config) { return config.getExternalServiceConditions(); }
void sync(@NonNull PolicyConfiguration config) { LOG.info("Synchronizing policy {}...", config.getPolicyName()); AlertsPolicy alertsPolicyFromConfig = AlertsPolicy.builder() .name(config.getPolicyName()) .incidentPreference(config.getIncidentPreference().name()) .build(); Optional<AlertsPolicy> policy = api.getAlertsPoliciesApi().getByName(config.getPolicyName()); if (policy.isPresent()) { AlertsPolicy oldPolicy = policy.get(); if (!StringUtils.equals(alertsPolicyFromConfig.getIncidentPreference(), oldPolicy.getIncidentPreference())) { api.getAlertsPoliciesApi().delete(oldPolicy.getId()); api.getAlertsPoliciesApi().create(alertsPolicyFromConfig); LOG.info(format("Policy %s updated", config.getPolicyName())); } } else { api.getAlertsPoliciesApi().create(alertsPolicyFromConfig); LOG.info("Policy {} created", config.getPolicyName()); } LOG.info("Policy {} synchronized", config.getPolicyName()); } }
private static PolicyConfiguration createConfiguration() { return PolicyConfiguration.builder() .policyName(POLICY_NAME) .incidentPreference(INCIDENT_PREFERENCE) .build(); } }
@Override protected Optional<Collection<SyntheticsCondition>> getConfigItems(PolicyConfiguration config) { return config.getSyntheticsConditions(); }
@Override protected Optional<Collection<NrqlCondition>> getConfigItems(PolicyConfiguration config) { return config.getNrqlConditions(); }
@Override public void sync(@NonNull PolicyConfiguration config) { if (! getConfigItems(config).isPresent()) { LOG.info("No items for policy {} - skipping...", config.getPolicyName()); return; } LOG.info("Synchronizing items for policy {}...", config.getPolicyName()); AlertsPolicy policy = api.getAlertsPoliciesApi().getByName(config.getPolicyName()).orElseThrow( () -> new NewRelicSyncException(format("Policy %s does not exist", config.getPolicyName()))); List<T> allItems = getItemsApi().list(policy.getId()); List<Integer> updatedItemsIds = createOrUpdateAlertsNrqlConditions(policy, getConfigItems(config).get(), allItems); cleanupOldItems(policy, allItems, updatedItemsIds); LOG.info("Items for policy {} synchronized", config.getPolicyName()); }
public PolicyConfiguration build() { return new PolicyConfiguration( policyName, incidentPreference, normalizeNullableList(this.channels), normalizeNullableList(this.conditions), normalizeNullableList(this.externalServiceConditions), normalizeNullableList(this.nrqlConditions), normalizeNullableList(this.syntheticsConditions)); }
private PolicyConfiguration buildPolicyConfiguration(Channel... slackChannel) { return PolicyConfiguration.builder() .policyName(POLICY_NAME) .incidentPreference(INCIDENT_PREFERENCE) .channels(Arrays.asList(slackChannel)) .build(); } }
@Test public void shouldDoNothing_whenNullChannelsInConfiguration() { // given PolicyConfiguration policyConfiguration = PolicyConfiguration.builder() .policyName(POLICY_NAME) .incidentPreference(INCIDENT_PREFERENCE) .build(); // when testee.sync(policyConfiguration); // then verifyNoMoreInteractions(alertsChannelsApiMock); }
private static PolicyConfiguration createConfiguration() { return PolicyConfiguration.builder() .policyName(POLICY_NAME) .incidentPreference(PolicyConfiguration.IncidentPreference.PER_POLICY) .condition(APP_CONDITION) .build(); }
private static PolicyConfiguration createConfiguration() { return PolicyConfiguration.builder() .policyName(POLICY_NAME) .incidentPreference(PolicyConfiguration.IncidentPreference.PER_POLICY) .condition(APP_CONDITION) .build(); }
private static PolicyConfiguration createConfiguration() { return PolicyConfiguration.builder() .policyName(POLICY_NAME) .incidentPreference(PolicyConfiguration.IncidentPreference.PER_POLICY) .nrqlCondition(NRQL_CONDITION) .build(); }
private static PolicyConfiguration createConfiguration() { return PolicyConfiguration.builder() .policyName(POLICY_NAME) .incidentPreference(INCIDENT_PREFERENCE) .externalServiceCondition(EXTERNAL_SERVICE_CONDITION) .build(); }
private static PolicyConfiguration createConfiguration() { return PolicyConfiguration.builder() .policyName(POLICY_NAME) .incidentPreference(PolicyConfiguration.IncidentPreference.PER_POLICY) .condition(APP_CONDITION) .build(); }
private static PolicyConfiguration createConfiguration() { return PolicyConfiguration.builder() .policyName(POLICY_NAME) .incidentPreference(PolicyConfiguration.IncidentPreference.PER_POLICY) .condition(APP_CONDITION) .build(); }
@Test public void shouldDoNothing_whenNullConditionsInConfiguration() { PolicyItemApi<U> itemApiMock = getPolicyItemApiMock(); // given PolicyConfiguration config = PolicyConfiguration.builder() .policyName(POLICY_NAME) .incidentPreference(PolicyConfiguration.IncidentPreference.PER_POLICY) .build(); // when testee.sync(config); // then verifyZeroInteractions(itemApiMock); }
@Test public void shouldDoNothing_whenEmptyConditionsInConfiguration() { PolicyItemApi<U> itemApiMock = getPolicyItemApiMock(); // given PolicyConfiguration config = PolicyConfiguration.builder() .policyName(POLICY_NAME) .incidentPreference(PolicyConfiguration.IncidentPreference.PER_POLICY) .conditions(Collections.emptyList()) .nrqlConditions(Collections.emptyList()) .externalServiceConditions(Collections.emptyList()) .build(); // when testee.sync(config); // then InOrder order = inOrder(itemApiMock); order.verify(itemApiMock).list(POLICY.getId()); order.verifyNoMoreInteractions(); }
@Test public void shouldThrowException_whenPolicyNameNotSet() throws Exception { // given // then - exception expectedException.expect(NullPointerException.class); expectedException.expectMessage("policyName"); // when PolicyConfiguration.builder() .incidentPreference(INCIDENT_PREFERENCE) .build(); }