diff options
author | 2022-10-18 12:08:45 -0500 | |
---|---|---|
committer | 2022-10-19 08:31:02 -0500 | |
commit | 6652164b384221018bf605b1d5fb809425b26a8e (patch) | |
tree | 6e440f5379010f5bbb20841384c55b86da37b533 /policy-management/src/main/java/org | |
parent | e58a8c52dadfe14b8b77c8eb7c236697c710ddd5 (diff) |
Support optional cluster name in policy engine
This allows also for correlation with running pod hostnames
in the case of multiple drools pdp flavors coexist.
Issue-ID: POLICY-4403
Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
Change-Id: I81affeeec622e6c0e9627651bf34c0775a796827
Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
Diffstat (limited to 'policy-management/src/main/java/org')
3 files changed, 43 insertions, 8 deletions
diff --git a/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngine.java b/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngine.java index 10623c50..75e7c74a 100644 --- a/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngine.java +++ b/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngine.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP * ================================================================================ - * Copyright (C) 2017-2021 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2022 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -122,6 +122,25 @@ public interface PolicyEngine extends Startable, Lockable, TopicListener { String setEnvironmentProperty(String key, String value); /** + * Gets the hostname used by this PDP-D. + */ + String getHostName(); + + /** + * Gets the cluster name as configured in $CLUSTER_NAME, + * otherwise it will assume an UUID as the cluster name. + */ + String getClusterName(); + + /** + * Gets the PDP Name from hostname and $CLUSTER_NAME, + * otherwise if CLUSTER_NAME is not set, the PdpName + * will be the concatenation of the hostname and a + * UUID. + */ + String getPdpName(); + + /** * registers a new Policy Controller with the Policy Engine initialized per properties. * * @param properties properties to initialize the Policy Controller diff --git a/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngineConstants.java b/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngineConstants.java index 23fc247e..ffd0c858 100644 --- a/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngineConstants.java +++ b/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngineConstants.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * policy-management * ================================================================================ - * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2019, 2021-2022 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,11 +44,6 @@ public final class PolicyEngineConstants { public static final String TELEMETRY_SERVER_DEFAULT_NAME = "TELEMETRY"; /** - * Unique name of this drools-pdp JVM. - */ - public static final String PDP_NAME = NetworkUtil.genUniqueName("drools"); - - /** * Policy Engine Manager. */ @Getter diff --git a/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngineManager.java b/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngineManager.java index ea4094fc..19aec79a 100644 --- a/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngineManager.java +++ b/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngineManager.java @@ -31,6 +31,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Properties; +import java.util.UUID; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.atomic.AtomicReference; @@ -41,6 +42,8 @@ import java.util.stream.Stream; import lombok.AccessLevel; import lombok.Getter; import lombok.NonNull; +import lombok.Setter; +import lombok.Synchronized; import lombok.ToString; import org.apache.commons.lang3.StringUtils; import org.onap.policy.common.endpoints.event.comm.Topic; @@ -59,6 +62,7 @@ import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties; import org.onap.policy.common.gson.annotation.GsonJsonIgnore; import org.onap.policy.common.gson.annotation.GsonJsonProperty; import org.onap.policy.common.utils.logging.LoggerUtils; +import org.onap.policy.common.utils.network.NetworkUtil; import org.onap.policy.common.utils.resources.PrometheusUtils; import org.onap.policy.common.utils.services.FeatureApiUtils; import org.onap.policy.drools.controller.DroolsControllerConstants; @@ -107,6 +111,8 @@ class PolicyEngineManager implements PolicyEngine { public static final String EXECUTOR_THREAD_PROP = "executor.threads"; protected static final int DEFAULT_EXECUTOR_THREADS = 5; + public static final String CLUSTER_NAME_PROP = "engine.cluster"; + /** * logger. */ @@ -170,6 +176,18 @@ class PolicyEngineManager implements PolicyEngine { @Getter private final PolicyStatsManager stats = new PolicyStatsManager(); + @Getter(onMethod_ = {@Synchronized}, value = AccessLevel.PUBLIC) + @Setter(onMethod_ = {@Synchronized}, value = AccessLevel.PUBLIC) + private String clusterName = UUID.randomUUID().toString(); + + @Getter(onMethod_ = {@Synchronized}, value = AccessLevel.PUBLIC) + @Setter(onMethod_ = {@Synchronized}, value = AccessLevel.PUBLIC) + private String hostName = NetworkUtil.getHostname(); + + @Getter(onMethod_ = {@Synchronized}, value = AccessLevel.PUBLIC) + @Setter(onMethod_ = {@Synchronized}, value = AccessLevel.PUBLIC) + private String pdpName; + /** * gson parser to decode configuration requests. */ @@ -368,6 +386,10 @@ class PolicyEngineManager implements PolicyEngine { } this.properties = properties; + if (!StringUtils.isBlank(this.properties.getProperty(CLUSTER_NAME_PROP))) { + this.clusterName = this.properties.getProperty(CLUSTER_NAME_PROP, this.clusterName); + } + this.pdpName = hostName + "." + this.clusterName; try { this.sources = getTopicEndpointManager().addTopicSources(properties); @@ -438,7 +460,6 @@ class PolicyEngineManager implements PolicyEngine { @Override public synchronized PolicyController createPolicyController(String name, Properties properties) { - String tempName = name; // check if a PROPERTY_CONTROLLER_NAME property is present // if so, override the given name |