aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvidhyasree <sn141y@att.com>2018-03-14 14:31:16 -0400
committerRanda Maher <rx196w@att.com>2018-03-14 23:30:27 +0000
commitf95ebd42ebd32fe70f0c6ae2de807df416c55725 (patch)
tree86aa29c7333c02eb41742221da4da2d36e0c0f43
parente2798efc3714d949ea826742c71250563fcc7931 (diff)
ClientLib Support For Multiple Controllers
-APPC client library should support multiple controllers -To support MSO added string controllerType Issue-ID: APPC-683 Change-Id: Ief8416cb0912acc26015cb8271432de92a0af7dd Signed-off-by: vidhyasree <sn141y@att.com>
-rw-r--r--appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/api/AppcLifeCycleManagerServiceFactory.java23
-rw-r--r--appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/impl/business/AppcLifeCycleManagerServiceFactoryImpl.java94
-rw-r--r--appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBMessagingService.java14
-rw-r--r--appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBPropertiesKeys.java7
4 files changed, 115 insertions, 23 deletions
diff --git a/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/api/AppcLifeCycleManagerServiceFactory.java b/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/api/AppcLifeCycleManagerServiceFactory.java
index c0d2daa01..8613f29fa 100644
--- a/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/api/AppcLifeCycleManagerServiceFactory.java
+++ b/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/api/AppcLifeCycleManagerServiceFactory.java
@@ -9,15 +9,15 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- *
+ *
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
* ============LICENSE_END=========================================================
*/
@@ -40,10 +40,27 @@ public interface AppcLifeCycleManagerServiceFactory {
LifeCycleManagerStateful createLifeCycleManagerStateful(ApplicationContext context, Properties properties) throws AppcClientException;
/**
+ * Creates a new stateful LCM API given a controller type
+ * @param context application context parameters
+ * @param properties configures the behaviour of the LCM
+ * @return a new stateful LCM API
+ * @throws AppcClientException in case of problem in instantiation
+ */
+ LifeCycleManagerStateful createLifeCycleManagerStateful(ApplicationContext context, Properties properties, String controllerType) throws AppcClientException;
+
+ /**
* performs a shutdown of LCM API.
* in case of graceful, will try and execute the remaining requests, otherwise, will force the shutdown right away
* @param isForceShutdown - boolean. If true to perform force shutdown, other to perform graceful shutdown.
*/
void shutdownLifeCycleManager(boolean isForceShutdown);
+
+ /**
+ * performs a shutdown of LCM API, given a controller type
+ * in case of graceful, will try and execute the remaining requests, otherwise, will force the shutdown right away
+ * @param isForceShutdown - boolean. If true to perform force shutdown, other to perform graceful shutdown.
+ */
+ void shutdownLifeCycleManager(boolean isForceShutdown, String controllerType);
+
}
diff --git a/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/impl/business/AppcLifeCycleManagerServiceFactoryImpl.java b/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/impl/business/AppcLifeCycleManagerServiceFactoryImpl.java
index b8ab36bbe..400d6c6bd 100644
--- a/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/impl/business/AppcLifeCycleManagerServiceFactoryImpl.java
+++ b/appc-client/client-kit/src/main/java/org/onap/appc/client/lcm/impl/business/AppcLifeCycleManagerServiceFactoryImpl.java
@@ -9,21 +9,23 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- *
+ *
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
* ============LICENSE_END=========================================================
*/
package org.onap.appc.client.lcm.impl.business;
+import java.util.HashMap;
+
import org.onap.appc.client.lcm.api.AppcLifeCycleManagerServiceFactory;
import org.onap.appc.client.lcm.api.ApplicationContext;
import org.onap.appc.client.lcm.api.LifeCycleManagerStateful;
@@ -34,28 +36,94 @@ import java.util.Properties;
public class AppcLifeCycleManagerServiceFactoryImpl implements AppcLifeCycleManagerServiceFactory {
- private LifeCycleManagerStateful lifeCycleManagerStateful;
- private LCMRequestProcessor lcmRequestProcessor;
+ class AppcLifeCycleManagerServiceFactoryImplData {
+
+ private LifeCycleManagerStateful _lifeCycleManagerStateful;
+ private LCMRequestProcessor _lcmRequestProcessor;
+
+ AppcLifeCycleManagerServiceFactoryImplData(LifeCycleManagerStateful lifeCycleManagerStateful,
+ LCMRequestProcessor lcmRequestProcessor) {
+
+ _lifeCycleManagerStateful = lifeCycleManagerStateful;
+ _lcmRequestProcessor = lcmRequestProcessor;
+ }
+
+ LifeCycleManagerStateful getLifeCycleManagerStateful() {
+ return _lifeCycleManagerStateful;
+ }
+
+ LCMRequestProcessor getLCMRequestProcessor() {
+ return _lcmRequestProcessor;
+ }
+ }
+
+ private HashMap<String, AppcLifeCycleManagerServiceFactoryImplData> lcmMap = new HashMap<String, AppcLifeCycleManagerServiceFactoryImplData>();
@Override
- public synchronized LifeCycleManagerStateful createLifeCycleManagerStateful(ApplicationContext context, Properties properties) throws AppcClientException{
+ public synchronized LifeCycleManagerStateful createLifeCycleManagerStateful(ApplicationContext context,
+ Properties properties) throws AppcClientException {
+ String cType = properties.getProperty("controllerType");
+ if (cType == null || cType.length() == 0)
+ {
+ cType = "APPC";
+ properties.put("controllerType", cType);
+ }
+
+ AppcLifeCycleManagerServiceFactoryImplData lcmData = lcmMap.get(cType);
+ LifeCycleManagerStateful lifeCycleManagerStateful = null;
+ LCMRequestProcessor lcmRequestProcessor = null;
+
+ if (lcmData != null) {
+ lifeCycleManagerStateful = lcmData.getLifeCycleManagerStateful();
+ lcmRequestProcessor = lcmData.getLCMRequestProcessor();
+ }
+
if (lifeCycleManagerStateful == null) {
lcmRequestProcessor = new LCMRequestProcessor(context, properties);
- lifeCycleManagerStateful = (LifeCycleManagerStateful) Proxy.newProxyInstance(LifeCycleManagerStateful.class.getClassLoader(), new Class<?>[]{LifeCycleManagerStateful.class}, new RPCInvocator(lcmRequestProcessor));
- }
- else {
+ lifeCycleManagerStateful = (LifeCycleManagerStateful) Proxy.newProxyInstance(
+ LifeCycleManagerStateful.class.getClassLoader(), new Class<?>[] { LifeCycleManagerStateful.class },
+ new RPCInvocator(lcmRequestProcessor));
+ lcmMap.put(cType,
+ new AppcLifeCycleManagerServiceFactoryImplData(lifeCycleManagerStateful, lcmRequestProcessor));
+ } else {
throw new IllegalStateException("already instansiated LifeCycleManagerStateful instance");
}
return lifeCycleManagerStateful;
}
+ public LifeCycleManagerStateful createLifeCycleManagerStateful(ApplicationContext context,
+ Properties properties, String controllerType) throws AppcClientException {
+ if (controllerType != null && controllerType.length() != 0)
+ properties.put("controllerType", controllerType.toUpperCase());
+ return createLifeCycleManagerStateful(context, properties);
+ }
+
@Override
public void shutdownLifeCycleManager(boolean isForceShutdown) {
- if(lcmRequestProcessor != null){
- lcmRequestProcessor.shutdown(isForceShutdown);
+
+ shutdownLifeCycleManager(isForceShutdown, "APPC");
+ }
+
+ @Override
+ public void shutdownLifeCycleManager(boolean isForceShutdown, String controllerType) {
+ if (controllerType == null || controllerType.length() == 0)
+ controllerType = "APPC";
+ else
+ controllerType = controllerType.toUpperCase();
+
+ AppcLifeCycleManagerServiceFactoryImplData lcmData = lcmMap.get(controllerType);
+ LCMRequestProcessor lcmRequestProcessor = null;
+
+ if (lcmData != null) {
+ lcmRequestProcessor = lcmData.getLCMRequestProcessor();
}
- else{
- throw new IllegalStateException("The life cycle manager library wasn't instantiated properly, therefore the shutdown event will not be handled");
+
+ if (lcmRequestProcessor != null) {
+ lcmRequestProcessor.shutdown(isForceShutdown);
+ } else {
+ throw new IllegalStateException(
+ "The life cycle manager library wasn't instantiated properly, therefore the shutdown event will not be handled");
}
}
+
}
diff --git a/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBMessagingService.java b/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBMessagingService.java
index 5c92a008f..0a9e1a630 100644
--- a/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBMessagingService.java
+++ b/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBMessagingService.java
@@ -9,15 +9,15 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- *
+ *
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
* ============LICENSE_END=========================================================
*/
@@ -49,11 +49,17 @@ class UEBMessagingService implements MessagingService {
@Override
@SuppressWarnings("Since15")
public void init(Properties props)
- throws IOException, GeneralSecurityException, NoSuchFieldException, IllegalAccessException {
+ throws IOException, GeneralSecurityException, NoSuchFieldException, IllegalAccessException {
if (props != null) {
String readTopic = props.getProperty(UEBPropertiesKeys.TOPIC_READ);
String writeTopic = props.getProperty(UEBPropertiesKeys.TOPIC_WRITE);
+ String cType = props.getProperty(UEBPropertiesKeys.CONTROLLER_TYPE);
+ if (cType != null && cType.length()!= 0 && (!cType.equals("APPC")))
+ {
+ readTopic = cType + "-" + readTopic;
+ writeTopic = cType + "-" + writeTopic;
+ }
String apiKey = props.getProperty(UEBPropertiesKeys.AUTH_USER);
String apiSecret = props.getProperty(UEBPropertiesKeys.AUTH_SECRET);
String readTimeoutString = props.getProperty(UEBPropertiesKeys.TOPIC_READ_TIMEOUT, DEFAULT_READ_TIMEOUT_MS);
diff --git a/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBPropertiesKeys.java b/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBPropertiesKeys.java
index 5c1916f2b..81f109a44 100644
--- a/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBPropertiesKeys.java
+++ b/appc-client/client-lib/src/main/java/org/onap/appc/client/impl/protocol/UEBPropertiesKeys.java
@@ -9,15 +9,15 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- *
+ *
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
* ============LICENSE_END=========================================================
*/
@@ -33,4 +33,5 @@ class UEBPropertiesKeys {
static final String AUTH_USER = "client.key";
static final String AUTH_SECRET = "client.secret";
static final String HOSTS = "poolMembers";
+ static final String CONTROLLER_TYPE = "controllerType";
}