use of io.fabric8.openshift.api.model.monitoring.v1.ServiceMonitor in project kubernetes-client by fabric8io.
the class ServiceMonitorTest method create.
@Test
void create() {
// Given
ServiceMonitor serviceMonitor = getServiceMonitor();
server.expect().post().withPath("/apis/monitoring.coreos.com/v1/namespaces/ns1/servicemonitors").andReturn(HttpURLConnection.HTTP_OK, serviceMonitor).once();
// When
serviceMonitor = client.monitoring().serviceMonitors().inNamespace("ns1").create(serviceMonitor);
// Then
assertNotNull(serviceMonitor);
assertEquals("foo", serviceMonitor.getMetadata().getName());
}
use of io.fabric8.openshift.api.model.monitoring.v1.ServiceMonitor in project stackgres by ongres.
the class PrometheusIntegration method getServiceMonitors.
@NotNull
private Stream<HasMetadata> getServiceMonitors(StackGresClusterContext context, Map<String, String> labels, Prometheus prometheusConfig) {
return prometheusConfig.getPrometheusInstallations().stream().map(pi -> {
ServiceMonitor serviceMonitor = new ServiceMonitor();
serviceMonitor.setMetadata(new ObjectMetaBuilder().withNamespace(pi.getNamespace()).withName(AbstractEnvoy.serviceMonitorName(context)).withLabels(ImmutableMap.<String, String>builder().putAll(pi.getMatchLabels()).putAll(labels).build()).build());
ServiceMonitorSpec spec = new ServiceMonitorSpec();
serviceMonitor.setSpec(spec);
LabelSelector selector = new LabelSelector();
spec.setSelector(selector);
NamespaceSelector namespaceSelector = new NamespaceSelector();
namespaceSelector.setAny(true);
spec.setNamespaceSelector(namespaceSelector);
selector.setMatchLabels(labels);
Endpoint endpoint = new Endpoint();
endpoint.setPort(AbstractEnvoy.NAME);
endpoint.setPath("/stats/prometheus");
spec.setEndpoints(Collections.singletonList(endpoint));
return serviceMonitor;
});
}
use of io.fabric8.openshift.api.model.monitoring.v1.ServiceMonitor in project stackgres by ongres.
the class PrometheusIntegration method generateResource.
@Override
public Stream<HasMetadata> generateResource(StackGresClusterContext context) {
final StackGresCluster cluster = context.getSource();
final Map<String, String> defaultLabels = labelFactory.clusterLabels(cluster);
Map<String, String> labels = new ImmutableMap.Builder<String, String>().putAll(labelFactory.clusterCrossNamespaceLabels(cluster)).build();
final String clusterNamespace = cluster.getMetadata().getNamespace();
final Stream<HasMetadata> resources = Stream.of(new ServiceBuilder().withNewMetadata().withNamespace(clusterNamespace).withName(serviceName(context)).withLabels(ImmutableMap.<String, String>builder().putAll(labels).put("container", POSTGRES_EXPORTER_CONTAINER_NAME).build()).endMetadata().withSpec(new ServiceSpecBuilder().withSelector(defaultLabels).withPorts(new ServicePortBuilder().withName(POSTGRES_EXPORTER_CONTAINER_NAME).withProtocol("TCP").withPort(9187).build()).build()).build());
Optional<Stream<HasMetadata>> serviceMonitors = context.getPrometheus().filter(c -> Optional.ofNullable(c.getCreateServiceMonitor()).orElse(false)).map(c -> c.getPrometheusInstallations().stream().map(pi -> {
ServiceMonitor serviceMonitor = new ServiceMonitor();
serviceMonitor.setMetadata(new ObjectMetaBuilder().withNamespace(pi.getNamespace()).withName(serviceMonitorName(context)).withLabels(ImmutableMap.<String, String>builder().putAll(pi.getMatchLabels()).putAll(labels).build()).build());
ServiceMonitorSpec spec = new ServiceMonitorSpec();
serviceMonitor.setSpec(spec);
LabelSelector selector = new LabelSelector();
spec.setSelector(selector);
NamespaceSelector namespaceSelector = new NamespaceSelector();
namespaceSelector.setMatchNames(ImmutableList.of(clusterNamespace));
spec.setNamespaceSelector(namespaceSelector);
selector.setMatchLabels(labels);
Endpoint endpoint = new Endpoint();
endpoint.setPort(POSTGRES_EXPORTER_CONTAINER_NAME);
spec.setEndpoints(Collections.singletonList(endpoint));
return serviceMonitor;
}));
return serviceMonitors.map(hasMetadataStream -> Stream.concat(resources, hasMetadataStream)).orElse(resources);
}
use of io.fabric8.openshift.api.model.monitoring.v1.ServiceMonitor in project sandbox by 5733d9e2be6485d52ffa08870cabdee0.
the class BridgeExecutorController method reconcile.
@Override
public UpdateControl<BridgeExecutor> reconcile(BridgeExecutor bridgeExecutor, Context context) {
LOGGER.debug("Create or update BridgeProcessor: '{}' in namespace '{}'", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
Secret secret = bridgeExecutorService.fetchBridgeExecutorSecret(bridgeExecutor);
if (secret == null) {
LOGGER.debug("Secrets for the BridgeProcessor '{}' have been not created yet.", bridgeExecutor.getMetadata().getName());
return UpdateControl.noUpdate();
}
Deployment deployment = bridgeExecutorService.fetchOrCreateBridgeExecutorDeployment(bridgeExecutor, secret);
if (!Readiness.isDeploymentReady(deployment)) {
LOGGER.debug("Executor deployment BridgeProcessor: '{}' in namespace '{}' is NOT ready", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
bridgeExecutor.getStatus().setConditionsFromDeployment(deployment);
if (DeploymentStatusUtils.isTimeoutFailure(deployment)) {
notifyDeploymentFailure(bridgeExecutor, DeploymentStatusUtils.getReasonAndMessageForTimeoutFailure(deployment));
} else if (DeploymentStatusUtils.isStatusReplicaFailure(deployment)) {
notifyDeploymentFailure(bridgeExecutor, DeploymentStatusUtils.getReasonAndMessageForReplicaFailure(deployment));
}
return UpdateControl.updateStatus(bridgeExecutor);
}
LOGGER.debug("Executor deployment BridgeProcessor: '{}' in namespace '{}' is ready", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
// Create Service
Service service = bridgeExecutorService.fetchOrCreateBridgeExecutorService(bridgeExecutor, deployment);
if (service.getStatus() == null) {
LOGGER.debug("Executor service BridgeProcessor: '{}' in namespace '{}' is NOT ready", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
bridgeExecutor.getStatus().markConditionFalse(ConditionType.Ready);
bridgeExecutor.getStatus().markConditionTrue(ConditionType.Augmentation, ConditionReason.ServiceNotReady);
return UpdateControl.updateStatus(bridgeExecutor);
}
Optional<ServiceMonitor> serviceMonitor = monitorService.fetchOrCreateServiceMonitor(bridgeExecutor, service, BridgeExecutor.COMPONENT_NAME);
if (serviceMonitor.isPresent()) {
// this is an optional resource
LOGGER.debug("Executor service monitor resource BridgeExecutor: '{}' in namespace '{}' is ready", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
} else {
LOGGER.warn("Executor service monitor resource BridgeExecutor: '{}' in namespace '{}' is failed to deploy, Prometheus not installed.", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
BridgeError prometheusNotAvailableError = bridgeErrorService.getError(PrometheusNotInstalledException.class).orElseThrow(() -> new RuntimeException("PrometheusNotInstalledException not found in error catalog"));
bridgeExecutor.getStatus().markConditionFalse(ConditionType.Ready, ConditionReason.PrometheusUnavailable, prometheusNotAvailableError.getReason(), prometheusNotAvailableError.getCode());
notifyManager(bridgeExecutor, ManagedResourceStatus.FAILED);
return UpdateControl.updateStatus(bridgeExecutor);
}
LOGGER.debug("Executor service BridgeProcessor: '{}' in namespace '{}' is ready", bridgeExecutor.getMetadata().getName(), bridgeExecutor.getMetadata().getNamespace());
if (!bridgeExecutor.getStatus().isReady()) {
bridgeExecutor.getStatus().markConditionTrue(ConditionType.Ready);
bridgeExecutor.getStatus().markConditionFalse(ConditionType.Augmentation);
notifyManager(bridgeExecutor, ManagedResourceStatus.READY);
return UpdateControl.updateStatus(bridgeExecutor);
}
return UpdateControl.noUpdate();
}
use of io.fabric8.openshift.api.model.monitoring.v1.ServiceMonitor in project sandbox by 5733d9e2be6485d52ffa08870cabdee0.
the class BridgeIngressController method reconcile.
@Override
public UpdateControl<BridgeIngress> reconcile(BridgeIngress bridgeIngress, Context context) {
LOGGER.debug("Create or update BridgeIngress: '{}' in namespace '{}'", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
Secret secret = bridgeIngressService.fetchBridgeIngressSecret(bridgeIngress);
if (secret == null) {
LOGGER.debug("Secrets for the BridgeIngress '{}' have been not created yet.", bridgeIngress.getMetadata().getName());
return UpdateControl.noUpdate();
}
Deployment deployment = bridgeIngressService.fetchOrCreateBridgeIngressDeployment(bridgeIngress, secret);
if (!Readiness.isDeploymentReady(deployment)) {
LOGGER.debug("Ingress deployment BridgeIngress: '{}' in namespace '{}' is NOT ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
bridgeIngress.getStatus().setConditionsFromDeployment(deployment);
if (DeploymentStatusUtils.isTimeoutFailure(deployment)) {
notifyDeploymentFailure(bridgeIngress, DeploymentStatusUtils.getReasonAndMessageForTimeoutFailure(deployment));
} else if (DeploymentStatusUtils.isStatusReplicaFailure(deployment)) {
notifyDeploymentFailure(bridgeIngress, DeploymentStatusUtils.getReasonAndMessageForReplicaFailure(deployment));
}
return UpdateControl.updateStatus(bridgeIngress);
}
LOGGER.debug("Ingress deployment BridgeIngress: '{}' in namespace '{}' is ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
// Create Service
Service service = bridgeIngressService.fetchOrCreateBridgeIngressService(bridgeIngress, deployment);
if (service.getStatus() == null) {
LOGGER.debug("Ingress service BridgeIngress: '{}' in namespace '{}' is NOT ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
bridgeIngress.getStatus().markConditionFalse(ConditionType.Ready);
bridgeIngress.getStatus().markConditionTrue(ConditionType.Augmentation, ConditionReason.ServiceNotReady);
return UpdateControl.updateStatus(bridgeIngress);
}
LOGGER.debug("Ingress service BridgeIngress: '{}' in namespace '{}' is ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
// Create Route
NetworkResource networkResource = networkingService.fetchOrCreateNetworkIngress(bridgeIngress, service);
if (!networkResource.isReady()) {
LOGGER.debug("Ingress networking resource BridgeIngress: '{}' in namespace '{}' is NOT ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
bridgeIngress.getStatus().markConditionFalse(ConditionType.Ready);
bridgeIngress.getStatus().markConditionTrue(ConditionType.Augmentation, ConditionReason.NetworkResourceNotReady);
return UpdateControl.updateStatus(bridgeIngress);
}
LOGGER.debug("Ingress networking resource BridgeIngress: '{}' in namespace '{}' is ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
Optional<ServiceMonitor> serviceMonitor = monitorService.fetchOrCreateServiceMonitor(bridgeIngress, service, BridgeIngress.COMPONENT_NAME);
if (serviceMonitor.isPresent()) {
// this is an optional resource
LOGGER.debug("Ingress monitor resource BridgeIngress: '{}' in namespace '{}' is ready", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
} else {
LOGGER.warn("Ingress monitor resource BridgeIngress: '{}' in namespace '{}' is failed to deploy, Prometheus not installed.", bridgeIngress.getMetadata().getName(), bridgeIngress.getMetadata().getNamespace());
BridgeError prometheusNotAvailableError = bridgeErrorService.getError(PrometheusNotInstalledException.class).orElseThrow(() -> new RuntimeException("PrometheusNotInstalledException not found in error catalog"));
bridgeIngress.getStatus().markConditionFalse(ConditionType.Ready, ConditionReason.PrometheusUnavailable, prometheusNotAvailableError.getReason(), prometheusNotAvailableError.getCode());
notifyManager(bridgeIngress, ManagedResourceStatus.FAILED);
return UpdateControl.updateStatus(bridgeIngress);
}
if (!bridgeIngress.getStatus().isReady() || !networkResource.getEndpoint().equals(bridgeIngress.getStatus().getEndpoint())) {
bridgeIngress.getStatus().setEndpoint(networkResource.getEndpoint());
bridgeIngress.getStatus().markConditionTrue(ConditionType.Ready);
bridgeIngress.getStatus().markConditionFalse(ConditionType.Augmentation);
notifyManager(bridgeIngress, ManagedResourceStatus.READY);
return UpdateControl.updateStatus(bridgeIngress);
}
return UpdateControl.noUpdate();
}
Aggregations