diff options
author | Patrick Brady <pb071s@att.com> | 2017-12-13 11:14:21 -0800 |
---|---|---|
committer | Patrick Brady <pb071s@att.com> | 2017-12-13 11:14:31 -0800 |
commit | 161df8a94bb3b0c34ed16fd4fdba078bd1eeef9a (patch) | |
tree | 21f410d053d5e390902d72bb3ebe6889451dd633 /appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp | |
parent | 0756759f39e125b02d63b4e93de83b3c6b13beea (diff) |
Second part of onap rename
This is the second commit of the rename. The folder structure
is renamed for appc-adapters and appc-config in this commit.
Change-Id: Iaa2b8c937ff1ca1b5d1178128961fb115ee65d9b
Signed-off-by: Patrick Brady <pb071s@att.com>
Issue-ID: APPC-13
Diffstat (limited to 'appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp')
55 files changed, 0 insertions, 9588 deletions
diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/AppcProviderAdapterActivator.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/AppcProviderAdapterActivator.java deleted file mode 100644 index fbd650c39..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/AppcProviderAdapterActivator.java +++ /dev/null @@ -1,147 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas; - -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.impl.ProviderAdapterImpl; -import org.onap.appc.configuration.Configuration; -import org.onap.appc.configuration.ConfigurationFactory; -import org.onap.appc.i18n.Msg; -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceRegistration; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -/** - * This activator is used to initialize and terminate the connection pool to one or more providers. - * <p> - * The CDP abstraction layer supports multiple types of providers, with each provider supporting multiple tenants. The - * "connection" to a specific tenant on a specific provider is represented by a "context" object. These context objects - * are authenticated to a specific tenant on the provider, but can be reused from one request to another. Contexts are - * slow to set up and are resource intensive, so they are cached. However, the contexts for a specific tenant on a - * specific provider must be cached separately. - * </p> - * <p> - * Activation of the bundle creates an empty cache which is organized first by provider type, then by tenant name, with - * the contents being an empty pool of contexts for that provider/tenant combination. The pool is created on first use, - * and retained for as long as the bundle is active. - * </p> - * <p> - * When the bundle is deactivated, the cache is torn down with all contexts being closed. - * </p> - */ -public class AppcProviderAdapterActivator implements BundleActivator { - - /** - * The bundle registration - */ - private ServiceRegistration registration = null; - - /** - * The reference to the actual implementation object that implements the services - */ - private ProviderAdapter adapter; - - /** - * The logger to be used - */ - private static final EELFLogger logger = EELFManager.getInstance().getLogger(AppcProviderAdapterActivator.class); - - /** - * The configuration object used to configure this bundle - */ - private Configuration configuration; - - /** - * Called when this bundle is started so the Framework can perform the bundle-specific activities necessary to start - * this bundle. This method can be used to register services or to allocate any resources that this bundle needs. - * <p> - * This method must complete and return to its caller in a timely manner. - * </p> - * - * @param context The execution context of the bundle being started. - * @throws java.lang.Exception If this method throws an exception, this bundle is marked as stopped and the - * Framework will remove this bundle's listeners, unregister all services registered by this bundle, and - * release all services used by this bundle. - * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) - */ - @Override - public void start(BundleContext context) throws Exception { - logger.info("Starting bundle " + getName()); - - configuration = ConfigurationFactory.getConfiguration(); - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - logger.info(Msg.COMPONENT_INITIALIZING, appName, "IAAS adapter"); - try { - adapter = new ProviderAdapterImpl(configuration.getProperties()); - } catch (Exception e) { - logger.error("Error initializing APPC IAAS ProviderAdapterImpl", e); - throw e; - } - - if (registration == null) { - logger.info(Msg.REGISTERING_SERVICE, appName, adapter.getAdapterName(), - ProviderAdapter.class.getSimpleName()); - registration = context.registerService(ProviderAdapter.class, adapter, null); - } - - logger.info(Msg.COMPONENT_INITIALIZED, appName, "IAAS adapter"); - } - - /** - * Called when this bundle is stopped so the Framework can perform the bundle-specific activities necessary to stop - * the bundle. In general, this method should undo the work that the BundleActivator.start method started. There - * should be no active threads that were started by this bundle when this bundle returns. A stopped bundle must not - * call any Framework objects. - * <p> - * This method must complete and return to its caller in a timely manner. - * </p> - * - * @param context The execution context of the bundle being stopped. - * @throws java.lang.Exception If this method throws an exception, the bundle is still marked as stopped, and the - * Framework will remove the bundle's listeners, unregister all services registered by the bundle, and - * release all services used by the bundle. * - * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) - */ - @Override - public void stop(BundleContext context) throws Exception { - logger.info("Stopping bundle " + getName()); - - if (registration != null) { - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - logger.info(Msg.COMPONENT_TERMINATING, appName, "IAAS adapter"); - logger.info(Msg.UNREGISTERING_SERVICE, appName, adapter.getAdapterName()); - registration.unregister(); - registration = null; - logger.info(Msg.COMPONENT_TERMINATED, appName, "IAAS adapter"); - } - } - - public String getName() { - return "APPC IaaS adapter"; - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/ProviderAdapter.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/ProviderAdapter.java deleted file mode 100644 index c14c936e0..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/ProviderAdapter.java +++ /dev/null @@ -1,288 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas; - -import java.util.Map; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.exceptions.UnknownProviderException; -import com.att.cdp.zones.model.Image; -import com.att.cdp.zones.model.Server; -import com.att.cdp.zones.model.Stack; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; - -/** - * This interface defines the operations that the provider adapter exposes. - * <p> - * This interface defines static constant property values that can be used to configure the adapter. These constants are - * prefixed with the name PROPERTY_ to indicate that they are configuration properties. These properties are read from - * the configuration file for the adapter and are used to define the providers, identity service URLs, and other - * information needed by the adapter to interface with an IaaS provider. - * </p> - */ -public interface ProviderAdapter extends SvcLogicJavaPlugin { - - /** - * The type of provider to be accessed to locate and operate on a virtual machine instance. This is used to load the - * correct provider support through the CDP IaaS abstraction layer and can be OpenStackProvider, BareMetalProvider, - * or any other supported provider type. - */ - static final String PROPERTY_PROVIDER_TYPE = "org.onap.appc.provider.type"; - - /** - * The adapter maintains a cache of providers organized by the name of the provider, not its type. This is - * equivalent to the system or installation name. All regions within the same installation are assumed to be the - * same type. - */ - static final String PROPERTY_PROVIDER_NAME = "org.onap.appc.provider.name"; - - /** - * The fully-qualified URL of the instance to be manipulated as it is known to the provider. - */ - static final String PROPERTY_INSTANCE_URL = "org.onap.appc.instance.url"; - - /** - * The fully-qualified URL of the instance to be manipulated as it is known to the provider. - */ - static final String PROPERTY_IDENTITY_URL = "org.onap.appc.identity.url"; - - /** - * The Rebuild VM flag is an optional payload parameter for the Evacuate API. - */ - static final String PROPERTY_REBUILD_VM = "org.onap.appc.rebuildvm"; - - /** - * The target host id is an optional payload parameter for the Evacuate API. - */ - static final String PROPERTY_TARGETHOST_ID = "org.onap.appc.targethost.id"; - - /** - * heat stack id to perform operation on stack - */ - static final String PROPERTY_STACK_ID = "org.onap.appc.stack.id"; - - static final String PROPERTY_SNAPSHOT_ID = "snapshot.id"; - - static final String PROPERTY_INPUT_SNAPSHOT_ID = "org.onap.appc.snapshot.id"; - - static final String DG_OUTPUT_PARAM_NAMESPACE = "output."; - - static final String SKIP_HYPERVISOR_CHECK = "org.onap.appc.skiphypervisorcheck"; - - /** - * This method is used to restart an existing virtual machine given the fully qualified URL of the machine. - * <p> - * This method is invoked from a directed graph as an <code>Executor</code> node. This means that the parameters - * passed to the method are passed as properties in a map. This method expects the following properties to be - * defined: - * <dl> - * <dt>org.onap.appc.provider.type</dt> - * <dd>The appropriate provider type, such as <code>OpenStackProvider</code>. This is used by the CDP IaaS - * abstraction layer to dynamically load and open a connection to the appropriate provider type. All CDP supported - * provider types are legal.</dd> - * <dt>org.onap.appc.instance.url</dt> - * <dd>The fully qualified URL of the instance to be restarted, as it is known to the provider (i.e., the self-link - * URL of the server)</dd> - * </dl> - * </p> - * - * @param properties A map of name-value pairs that supply the parameters needed by this method. The properties - * needed are defined above. - * @param context The service logic context of the graph being executed. - * @return The <code>Server</code> object that represents the VM being restarted. The returned server object can be - * inspected for the final state of the server once the restart has been completed. The method does not - * return until the restart has either completed or has failed. - * @throws APPCException If the server cannot be restarted for some reason - */ - Server restartServer(Map<String, String> properties, SvcLogicContext context) throws APPCException; - - /** - * This method is used to stop the indicated server - * <p> - * This method is invoked from a directed graph as an <code>Executor</code> node. This means that the parameters - * passed to the method are passed as properties in a map. This method expects the following properties to be - * defined: - * <dl> - * <dt>org.onap.appc.provider.type</dt> - * <dd>The appropriate provider type, such as <code>OpenStackProvider</code>. This is used by the CDP IaaS - * abstraction layer to dynamically load and open a connection to the appropriate provider type. All CDP supported - * provider types are legal.</dd> - * <dt>org.onap.appc.instance.url</dt> - * <dd>The fully qualified URL of the instance to be stopped, as it is known to the provider (i.e., the self-link - * URL of the server)</dd> - * </dl> - * </p> - * - * @param properties A map of name-value pairs that supply the parameters needed by this method. The properties - * needed are defined above. - * @param context The service logic context of the graph being executed. - * @return The <code>Server</code> object that represents the VM being stopped. The returned server object can be - * inspected for the final state of the server once the stop has been completed. The method does not return - * until the stop has either completed or has failed. - * @throws APPCException If the server cannot be stopped for some reason - */ - Server stopServer(Map<String, String> properties, SvcLogicContext context) throws APPCException; - - /** - * This method is used to start the indicated server - * <p> - * This method is invoked from a directed graph as an <code>Executor</code> node. This means that the parameters - * passed to the method are passed as properties in a map. This method expects the following properties to be - * defined: - * <dl> - * <dt>org.onap.appc.provider.type</dt> - * <dd>The appropriate provider type, such as <code>OpenStackProvider</code>. This is used by the CDP IaaS - * abstraction layer to dynamically load and open a connection to the appropriate provider type. All CDP supported - * provider types are legal.</dd> - * <dt>org.onap.appc.instance.url</dt> - * <dd>The fully qualified URL of the instance to be started, as it is known to the provider (i.e., the self-link - * URL of the server)</dd> - * </dl> - * </p> - * - * @param properties A map of name-value pairs that supply the parameters needed by this method. The properties - * needed are defined above. - * @param context The service logic context of the graph being executed. - * @return The <code>Server</code> object that represents the VM being started. The returned server object can be - * inspected for the final state of the server once the start has been completed. The method does not return - * until the start has either completed or has failed. - * @throws APPCException If the server cannot be started for some reason - */ - Server startServer(Map<String, String> properties, SvcLogicContext context) throws APPCException; - - /** - * This method is used to rebuild the indicated server - * <p> - * This method is invoked from a directed graph as an <code>Executor</code> node. This means that the parameters - * passed to the method are passed as properties in a map. This method expects the following properties to be - * defined: - * <dl> - * <dt>org.onap.appc.provider.type</dt> - * <dd>The appropriate provider type, such as <code>OpenStackProvider</code>. This is used by the CDP IaaS - * abstraction layer to dynamically load and open a connection to the appropriate provider type. All CDP supported - * provider types are legal.</dd> - * <dt>org.onap.appc.instance.url</dt> - * <dd>The fully qualified URL of the instance to be rebuilt, as it is known to the provider (i.e., the self-link - * URL of the server)</dd> - * </dl> - * </p> - * - * @param properties A map of name-value pairs that supply the parameters needed by this method. The properties - * needed are defined above. - * @param context The service logic context of the graph being executed. - * @return The <code>Server</code> object that represents the VM being rebuilt. The returned server object can be - * inspected for the final state of the server once the rebuild has been completed. The method does not - * return until the rebuild has either completed or has failed. - * @throws APPCException If the server cannot be rebuilt for some reason - */ - Server rebuildServer(Map<String, String> properties, SvcLogicContext context) throws APPCException; - - /** - * This method is used to terminate the indicated server - * <p> - * This method is invoked from a directed graph as an <code>Executor</code> node. This means that the parameters - * passed to the method are passed as properties in a map. This method expects the following properties to be - * defined: - * <dl> - * <dt>org.onap.appc.provider.type</dt> - * <dd>The appropriate provider type, such as <code>OpenStackProvider</code>. This is used by the CDP IaaS - * abstraction layer to dynamically load and open a connection to the appropriate provider type. All CDP supported - * provider types are legal.</dd> - * <dt>org.onap.appc.instance.url</dt> - * <dd>The fully qualified URL of the instance to be terminate, as it is known to the provider (i.e., the self-link - * URL of the server)</dd> - * </dl> - * </p> - * - * @param properties A map of name-value pairs that supply the parameters needed by this method. The properties - * needed are defined above. - * @param context The service logic context of the graph being executed. - * @return The <code>Server</code> object that represents the VM being rebuilt. The returned server object can be - * inspected for the final state of the server once the rebuild has been completed. The method does not - * return until the rebuild has either completed or has failed. - * @throws APPCException If the server cannot be terminate for some reason - */ - Server terminateServer(Map<String, String> properties, SvcLogicContext context) throws APPCException; - - /** - * Returns the symbolic name of the adapter - * - * @return The adapter name - */ - String getAdapterName(); - - Server evacuateServer(Map<String, String> params, SvcLogicContext ctx) throws APPCException; - - Server migrateServer(Map<String, String> params, SvcLogicContext ctx) throws APPCException; - - Server vmStatuschecker(Map<String, String> params, SvcLogicContext ctx) throws APPCException; - - Stack terminateStack(Map<String, String> params, SvcLogicContext ctx) throws APPCException; - - Stack snapshotStack(Map<String, String> params, SvcLogicContext ctx) throws APPCException; - - Stack restoreStack(Map<String, String> params, SvcLogicContext ctx) throws APPCException; - - /** - * This method is used to do the lookup of the indicated server - * <p> - * This method is invoked from a directed graph as an <code>Executor</code> node. This means that the parameters - * passed to the method are passed as properties in a map. This method expects the following properties to be - * defined: - * <dl> - * <dt>org.onap.appc.provider.type</dt> - * <dd>The appropriate provider type, such as <code>OpenStackProvider</code>. This is used by the CDP IaaS - * abstraction layer to dynamically load and open a connection to the appropriate provider type. All CDP supported - * provider types are legal.</dd> - * <dt>org.onap.appc.instance.url</dt> - * <dd>The fully qualified URL of the instance to be lookup, as it is known to the provider (i.e., the self-link URL - * of the server)</dd> - * </dl> - * </p> - * - * @param properties A map of name-value pairs that supply the parameters needed by this method. The properties - * needed are defined above. - * @param context The service logic context of the graph being executed. - * @return The <code>Server</code> object that represents the VM being rebuilt. The returned server object can be - * inspected for the final state of the server once the rebuild has been completed. The method does not - * return until the rebuild has either completed or has failed. - * @throws APPCException If the server cannot be found for some reason - */ - Server lookupServer(Map<String, String> properties, SvcLogicContext context) throws APPCException; - - /** - * The - * - * @param params A map of name-value pairs that supply the parameters needed by this method. The properties needed - * are defined above. - * @param ctx The service logic context of the graph being executed. - * @return The <code>Image</code> object that represents the VM being restarted. The returned server object can be - * inspected for the final state of the server once the restart has been completed. The method does not - * return until the restart has either completed or has failed. - * @throws APPCException If the server cannot be restarted for some reason - */ - Image createSnapshot(Map<String, String> params, SvcLogicContext ctx) throws APPCException; - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/IdentityURL.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/IdentityURL.java deleted file mode 100644 index c98edc410..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/IdentityURL.java +++ /dev/null @@ -1,146 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.impl; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * This class is used to parse the VM URL returned from OpenStack and extract all of the constituent parts. - */ -public class IdentityURL { - /** - * The regular expression pattern used to parse the URL. Capturing groups are used to identify and extract the - * various component parts of the URL. - */ - private static Pattern pattern = Pattern.compile("(\\p{Alnum}+)://([^/:]+)(?::([0-9]+))?(/.*)?/(v[0-9\\.]+)/?"); - - /** - * The URL scheme or protocol, such as HTTP or HTTPS - */ - private String scheme; - - /** - * The host name or ip address - */ - private String host; - - /** - * The path of the service, or null if no path is defined - */ - private String path; - - /** - * The port number, or null if no port is defined - */ - private String port; - - /** - * The version of the service - */ - private String version; - - /** - * A private default constructor prevents instantiation by any method other than the factory method - * - * @see #parseURL(String) - */ - private IdentityURL() { - - } - - /** - * This static method is used to parse the provided server URL string and return a parse results object (VMURL) - * which represents the state of the parse. - * - * @param serverUrl The server URL to be parsed - * @return The VMURL parse results object, or null if the URL was not valid or null. - */ - public static IdentityURL parseURL(String identUrl) { - IdentityURL obj = null; - if (identUrl != null) { - Matcher matcher = pattern.matcher(identUrl.trim()); // http://msb.onap.org:80/api/multicloud/v0/cloudowner_region/identity/v3 - if (matcher.matches()) { // (\\p{Alnum}+)://([^/:]+)(?::([0-9]+))?(/.*)?/(v[0-9\\.]+)/?" - obj = new IdentityURL(); - obj.scheme = matcher.group(1); - obj.host = matcher.group(2); - obj.port = matcher.group(3); - obj.path = matcher.group(4); - obj.version = matcher.group(5); - } - } - - return obj; - } - - /** - * @return The URL scheme - */ - public String getScheme() { - return scheme; - } - - /** - * @return The URL host - */ - public String getHost() { - return host; - } - - /** - * @return The URL path, or null if no path was defined - */ - public String getPath() { - return path; - } - - /** - * @return The URL port, or null if no port was defined - */ - public String getPort() { - return port; - } - - public String getVersion() { - return version; - } - - @Override - public String toString() { - StringBuilder str = new StringBuilder(); - - str.append(scheme + "://" + host); - if (port != null) { - str.append(":" + port); - } - if (path != null) { - str.append(path); - } - str.append("/" + version); - - return str.toString(); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ProviderAdapterImpl.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ProviderAdapterImpl.java deleted file mode 100644 index ba6c8c678..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ProviderAdapterImpl.java +++ /dev/null @@ -1,359 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.impl; - -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.provider.operation.api.IProviderOperation; -import org.onap.appc.adapter.iaas.provider.operation.api.ProviderOperationFactory; -import org.onap.appc.adapter.iaas.provider.operation.common.constants.Property; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation; -import org.onap.appc.adapter.iaas.provider.operation.impl.EvacuateServer; -import org.onap.appc.configuration.Configuration; -import org.onap.appc.configuration.ConfigurationFactory; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.util.StructuredPropertyHelper; -import org.onap.appc.util.StructuredPropertyHelper.Node; -import com.att.cdp.zones.model.Image; -import com.att.cdp.zones.model.Server; -import com.att.cdp.zones.model.Stack; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; - -/** - * This class implements the {@link ProviderAdapter} interface. This interface defines the behaviors that our service - * provides. - * - * @since Aug 12, 2015 - * @version $Id$ - */ -@SuppressWarnings("javadoc") -public class ProviderAdapterImpl implements ProviderAdapter { - /** - * The default domain name for authentication - */ - public static final String DEFAULT_DOMAIN_NAME = "Default"; - - /** - * The logger to be used - */ - private static final EELFLogger logger = EELFManager.getInstance().getLogger(ProviderAdapterImpl.class); - /** - * A reference to the adapter configuration object. - */ - private Configuration configuration; - - /** - * reference to operation factory - */ - ProviderOperationFactory factory = ProviderOperationFactory.getInstance(); - - /** - * A cache of providers that are predefined. - */ - private Map<String /* provider name */, ProviderCache> providerCache; - - /** - * The username, password, and domain to use for dynamically created connections - */ - private static String DEFAULT_USER; - private static String DEFAULT_PASS; - private static String DEFAULT_DOMAIN; - - - /** - * This default constructor is used as a work around because the activator wasnt getting called - */ - @SuppressWarnings("all") - public ProviderAdapterImpl() { - initialize(); - - } - - /** - * This constructor is used primarily in the test cases to bypass initialization of the adapter for isolated, - * disconnected testing - * - * @param initialize True if the adapter is to be initialized, can false if not - */ - @SuppressWarnings("all") - public ProviderAdapterImpl(boolean initialize) { - configuration = ConfigurationFactory.getConfiguration(); - if (initialize) { - initialize(); - } - } - - /** - * @param props not used - */ - public ProviderAdapterImpl(@SuppressWarnings("unused") Properties props) { - initialize(); - - } - - @Override - public Server restartServer(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.RESTART_SERVICE); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - return (Server) op.doOperation(params, context); - } - - @Override - public Server stopServer(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.STOP_SERVICE); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - return (Server) op.doOperation(params, context); - } - - @Override - public Server startServer(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.START_SERVICE); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - return (Server) op.doOperation(params, context); - } - - @Override - public Server rebuildServer(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.REBUILD_SERVICE); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - return (Server) op.doOperation(params, context); - } - - @Override - public Server terminateServer(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.TERMINATE_SERVICE); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - return (Server) op.doOperation(params, context); - } - - @Override - public Server evacuateServer(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.EVACUATE_SERVICE); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - // pass this object's reference to EvacuateServer to allow rebuild after evacuate - ((EvacuateServer) op).setProvideAdapterRef(this); - return (Server) op.doOperation(params, context); - } - - @Override - public Server migrateServer(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.MIGRATE_SERVICE); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - return (Server) op.doOperation(params, context); - } - - @Override - public Server vmStatuschecker(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.VMSTATUSCHECK_SERVICE); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - return (Server) op.doOperation(params, context); - } - - @Override - public Stack terminateStack(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.TERMINATE_STACK); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - return (Stack) op.doOperation(params, context); - } - - @Override - public Stack snapshotStack(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.SNAPSHOT_STACK); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - return (Stack) op.doOperation(params, context); - } - - @Override - public Stack restoreStack(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.RESTORE_STACK); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - return (Stack) op.doOperation(params, context); - } - - @Override - public Server lookupServer(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.LOOKUP_SERVICE); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - return (Server) op.doOperation(params, context); - } - - @Override - public Image createSnapshot(Map<String, String> params, SvcLogicContext context) throws APPCException { - - IProviderOperation op = factory.getOperationObject(Operation.SNAPSHOT_SERVICE); - op.setProviderCache(this.providerCache); - op.setDefaultPass(DEFAULT_PASS); - op.setDefaultUser(DEFAULT_USER); - op.setDefaultDomain(DEFAULT_DOMAIN); - return (Image) op.doOperation(params, context); - } - - /** - * Returns the symbolic name of the adapter - * - * @return The adapter name - * @see org.onap.appc.adapter.iaas.ProviderAdapter#getAdapterName() - */ - @Override - public String getAdapterName() { - return configuration.getProperty(Constants.PROPERTY_ADAPTER_NAME); - } - - - /** - * initialize the provider adapter by building the context cache - */ - private void initialize() { - configuration = ConfigurationFactory.getConfiguration(); - - /* - * Initialize the provider cache for all defined providers. The definition of the providers uses a structured - * property set, where the names form a hierarchical name space (dotted notation, such as one.two.three). Each - * name in the name space can also be serialized by appending a sequence number. All nodes at the same level - * with the same serial number are grouped together in the namespace hierarchy. This allows a hierarchical - * multi-valued property to be defined, which can then be used to setup the provider and tenant caches. <p> For - * example, the following definitions show how the namespace hierarchy is defined for two providers, with two - * tenants on the first provider and a single tenant for the second provider. <pre> - * provider1.type=OpenStackProvider provider1.name=ILAB provider1.identity=http://provider1:5000/v2.0 - * provider1.tenant1.name=CDP-ONAP-APPC provider1.tenant1.userid=testUser - * provider1.tenant1.password=testPassword provider1.tenant2.name=TEST-TENANT provider1.tenant2.userid=testUser - * provider1.tenant2.password=testPassword provider2.type=OpenStackProvider provider2.name=PDK1 - * provider2.identity=http://provider2:5000/v2.0 provider2.tenant1.name=someName - * provider2.tenant1.userid=someUser provider2.tenant1.password=somePassword </pre> </p> - */ - providerCache = new HashMap<>(); - Properties properties = configuration.getProperties(); - List<Node> providers = StructuredPropertyHelper.getStructuredProperties(properties, Property.PROVIDER); - - for (Node provider : providers) { - ProviderCache cache = new ProviderCache(); - List<Node> providerNodes = provider.getChildren(); - for (Node node : providerNodes) { - if (node.getName().equals(Property.PROVIDER_TYPE)) { - cache.setProviderType(node.getValue()); - } else if (node.getName().equals(Property.PROVIDER_IDENTITY)) { - cache.setIdentityURL(node.getValue()); - cache.setProviderName(node.getValue()); - } else if (node.getName().startsWith(Property.PROVIDER_TENANT)) { - String tenantName = null; - String userId = null; - String password = null; - // domain is not required so set a default - String domain = DEFAULT_DOMAIN_NAME; - for (Node node2 : node.getChildren()) { - switch (node2.getName()) { - case Property.PROVIDER_TENANT_NAME: - tenantName = node2.getValue(); - break; - case Property.PROVIDER_TENANT_USERID: - userId = node2.getValue(); - DEFAULT_USER = node2.getValue(); - break; - case Property.PROVIDER_TENANT_PASSWORD: - password = node2.getValue(); - DEFAULT_PASS = node2.getValue(); - break; - case Property.PROVIDER_TENANT_DOMAIN: - domain = node2.getValue(); - DEFAULT_DOMAIN = node2.getValue(); - break; - } - } - - cache.addTenant(null, tenantName, userId, password, domain); - } - } - - /* - * Add the provider to the set of providers cached - */ - if (cache.getIdentityURL() != null && cache.getProviderType() != null) { - providerCache.put(null, cache); - providerCache.put(cache.getIdentityURL(), cache); - } - - /* - * Now, initialize the cache for the loaded provider - */ - cache.initialize(); - } - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ProviderCache.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ProviderCache.java deleted file mode 100644 index 5453a9ec1..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ProviderCache.java +++ /dev/null @@ -1,165 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.impl; - -import java.util.HashMap; -import java.util.Map; - -/** - * This class maintains a cache of information by provider, where a provider is identified by both a type and an - * identity URL used to connect to that provider. - * <p> - * Providers may be multi-tenant, such as OpenStack, where the available services and resources vary from one tenant to - * another. Therefore, the provider cache maintains a cache of tenants and the service catalogs for each, as well as the - * credentials used to access the tenants, and a pool of Context objects for each tenant. The context pool allows use of - * the CDP abstraction layer to access the services of the provider within the specific tenant. - * </p> - */ -public class ProviderCache { - - /** - * The type of provider (e.g., OpenStackProvider) used to setup the CDP abstraction layer and load the appropriate - * support - */ - private String providerType; - - /** - * The URL of the provider's identity service or whatever service is used to login and authenticate to the provider - */ - private String identityURL; - - /** - * A string used to identify the provider instance - */ - private String providerName; - - /** - * The map of tenant cache objects by tenant id - */ - private Map<String /* tenant id */, TenantCache> tenants = new HashMap<String, TenantCache>(); - - /** - * @return the value of providerType - */ - public String getProviderType() { - return providerType; - } - - /** - * This method is called to initialize the provider cache, set up the context pools for each of the tenants, - * discover all of the regions supported on the provider, and load all of the service catalogs for each provider. - */ - public void initialize() { - for (Map.Entry<String, TenantCache> entry : tenants.entrySet()) { - entry.getValue().initialize(); - } - } - - /** - * @param providerType the value for providerType - */ - public void setProviderType(String providerType) { - this.providerType = providerType; - } - - /** - * @return the value of identityURL - */ - public String getIdentityURL() { - return identityURL; - } - - /** - * @param identityURL the value for identityURL - */ - public void setIdentityURL(String identityURL) { - this.identityURL = identityURL; - } - - /** - * @return the value of providerName - */ - public String getProviderName() { - return providerName; - } - - /** - * @param providerName the value for providerName - */ - public void setProviderName(String providerName) { - this.providerName = providerName; - } - - /** - * @return the value of tenants - */ - public Map<String, TenantCache> getTenants() { - return tenants; - } - - /** - * This method is a helper to return a specific TenantCache - * - * @param tenantId - * @return - */ - public TenantCache getTenant(String tenantId) { - return tenants.get(tenantId); - } - - // Previously there was no way to add additional tenants to the tenant cache - /** - * This method is used to add a tenant to the provider cache - * - * @param tenantId - * @param UserId - * @param password - * @return the new initialized TenantCache or null if unsuccessful - */ - public TenantCache addTenant(String tenantId, String tenantName, String userId, String password, String domain) { - if (tenantId != null || tenantName != null && userId != null && password != null) { - TenantCache tenant = new TenantCache(this); - if (tenantId != null) { - tenant.setTenantId(tenantId); - } - if (tenantName != null) { - tenant.setTenantName(tenantName); - } - tenant.setUserid(userId); - tenant.setPassword(password); - tenant.setDomain(domain); - - if (identityURL != null) { - tenant.initialize(); - } - - if (tenant.isInitialized()) { - tenants.put(tenant.getTenantId(), tenant); - return tenant; - } - } - return null; - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/RequestContext.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/RequestContext.java deleted file mode 100644 index ef237f96d..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/RequestContext.java +++ /dev/null @@ -1,249 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.impl; - -import org.onap.appc.Constants; -import org.onap.appc.configuration.Configuration; -import org.onap.appc.configuration.ConfigurationFactory; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; - -/** - * This class is used to track and maintain recovery and time-to-live information for a request as it is being - * processed. - */ -public class RequestContext { - /** - * The number of seconds of wait time between successive attempts to connect to the provider. This is used to - * recover from provider outages or failures. It is not used to recover from logical errors, such as an invalid - * request, server not found, etc. - */ - private Integer retryDelay; - - /** - * The number of times we will attempt to connect to the provider. This is used to recover from provider outages or - * failures. It is not used to recover from logical errors, such as an invalid request, server not found, etc. - */ - private Integer retryLimit; - - /** - * The total time, in milliseconds, that the provider can have to process this request. If the accumulated time - * exceeds the time to live, then the request is failed with a timeout exception, regardless of the state of the - * provider. Note that the caller may supply this as a value in seconds, in which case it must be converted to - * milliseconds for the request context. - */ - private Long timeToLive; - - /** - * The accumulated time, in milliseconds, that has been used so far to process the request. This is compared to the - * time to live each time it is updated. If the accumulated time exceeds the time to live, then the request is - * failed with a timeout exception, regardless of the state of the provider. - */ - private long accumulatedTime; - - /** - * The total number of retries attempted so far - */ - private int attempt; - - /** - * The time when the stopwatch was started - */ - private long startTime = -1; - - /** - * The service logic (DG) context from the SLI - */ - private SvcLogicContext svcLogicContext; - - /** - * The configuration - */ - private Configuration configuration = ConfigurationFactory.getConfiguration(); - - /** - * Set to true whenever the retry limit has been exceeded, reset to false when reset() is called. - */ - private boolean retryFailed; - - /** - * Creates the request context - * - * @param context The service logic (SLI) context associated with the current DG - */ - public RequestContext(SvcLogicContext context) { - setSvcLogicContext(context); - } - - /** - * @return The retry delay, in seconds. If zero, then no retry is to be performed - */ - public int getRetryDelay() { - if (retryDelay == null) { - int value = configuration.getIntegerProperty(Constants.PROPERTY_RETRY_DELAY); - retryDelay = Integer.valueOf(value); - } - - return retryDelay.intValue(); - } - - /** - * This method is a helper that allows the caller to delay for the retry interval time and not have to handle the - * thread interruption, timer handling, etc. - */ - public void delay() { - long time = getRetryDelay() * 1000L; - long future = System.currentTimeMillis() + time; - if (time != 0) { - while (System.currentTimeMillis() < future && time > 0) { - try { - Thread.sleep(time); - } catch (InterruptedException e) { - /* - * This is rare, but it can happen if another thread interrupts us while we are sleeping. In that - * case, the thread is resumed before the delay time has actually expired, so re-calculate the - * amount of delay time needed and reenter the sleep until we get to the future time. - */ - time = future - System.currentTimeMillis(); - } - } - } - } - - /** - * @return The number of retries that are allowed per connection - */ - public int getRetryLimit() { - if (retryLimit == null) { - int value = configuration.getIntegerProperty(Constants.PROPERTY_RETRY_LIMIT); - retryLimit = Integer.valueOf(value); - } - - return retryLimit.intValue(); - } - - /** - * Check and count the connection attempt. - * - * @return True if the connection should be attempted. False indicates that the number of retries has been exhausted - * and it should NOT be attempted. - */ - public boolean attempt() { - if (retryFailed || attempt >= getRetryLimit()) { - retryFailed = true; - return false; - } - attempt++; - - return true; - } - - /** - * @return The number of retry attempts so far - */ - public int getAttempts() { - return attempt; - } - - /** - * @return True if the retry limit has been exceeded, false otherwise - */ - public boolean isFailed() { - return retryFailed; - } - - /** - * This method both checks the time to live to see if it has been exceeded and accumulates the total time used so - * far. - * <p> - * Each time this method is called it accumulates the total duration since the last time it was called to the total - * time accumulator. It then checks the total time to the time to live and if greater, it returns false. As long as - * the total time used is less than or equal to the time to live limit, the method returns true. It is important to - * call this method at the very beginning of the process so that all parts of the process are tracked. - * </p> - * - * @return True if the total time to live has not been exceeded. False indicates that the total time to live has - * been exceeded and no further processing should be performed. - */ - public boolean isAlive() { - long now = System.currentTimeMillis(); - if (startTime == -1) { - startTime = now; - return true; - } - accumulatedTime += (now - startTime); - startTime = now; - if (accumulatedTime > timeToLive) { - return false; - } - return true; - } - - /** - * @return The total amount of time used, in milliseconds. - */ - public long getTotalDuration() { - return accumulatedTime; - } - - /** - * This method is called to reset the retry counters. It has no effect on the time to live accumulator. - */ - public void reset() { - attempt = 0; - } - - /** - * Sets the time to live to the value, expressed in seconds - * - * @param time The time to live, in seconds - */ - public void setTimeToLiveSeconds(int time) { - setTimeToLiveMS(time * 1000L); - } - - /** - * Sets the time to live to the value, expressed in milliseconds - * - * @param time The time to live, in milliseconds - */ - public void setTimeToLiveMS(long time) { - this.timeToLive = time; - } - - /** - * @return The service logic context associated with this request - */ - public SvcLogicContext getSvcLogicContext() { - return svcLogicContext; - } - - /** - * @param svcLogicContext The service logic context to be associated with this request - */ - public void setSvcLogicContext(SvcLogicContext svcLogicContext) { - this.svcLogicContext = svcLogicContext; - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/RequestFailedException.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/RequestFailedException.java deleted file mode 100644 index 13df3900c..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/RequestFailedException.java +++ /dev/null @@ -1,255 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.impl; - -import org.glassfish.grizzly.http.util.HttpStatus; -import com.att.cdp.zones.model.Server; -import com.att.cdp.zones.model.Stack; - -/** - * This class is used to capture the exact cause and point of failure for the processing of a request. It is then used - * to encode the reason for the failure, status code, and anything else that needs to be captured and reported for - * diagnostic purposes. - */ -public class RequestFailedException extends Exception { - - /** - * - */ - private static final long serialVersionUID = 1L; - - /** - * The operation that was being requested or performed at the time of the failure. - */ - private String operation; - - /** - * A message that details the reason for the failure - */ - private String reason; - - /** - * The server that was being operated upon - */ - private Server server; - - /** - * The stack that was being operated upon - */ - private Stack stack; - /** - * The id of the server being operated upon if the server object is not available (such as the server was not found) - */ - private String serverId; - - /** - * The id of the stack being operated upon if the stack object is not available (such as the stack was not found) - */ - private String stackId; - /** - * The most appropriate Http Status code that reflects the error - */ - private HttpStatus status; - - /** - * - */ - public RequestFailedException() { - // intentionally empty - } - - /** - * @param message The error message - */ - public RequestFailedException(String message) { - super(message); - } - - /** - * Construct the request failed exception with the operation being performed, reason for the failure, http status - * code that is most appropriate, and the server we were processing. - * - * @param operation The operation being performed - * @param reason The reason that the operation was failed - * @param status The http status code that is most appropriate - * @param server The server that we were processing - */ - @SuppressWarnings("nls") - public RequestFailedException(String operation, String reason, HttpStatus status, Server server) { - super(operation + ":" + reason); - this.operation = operation; - this.reason = reason; - this.status = status; - this.server = server; - if (server != null) { - this.serverId = server.getId(); - } - } - - - /** - * Construct the request failed exception with the operation being performed, reason for the failure, http status - * code that is most appropriate, and the stack we were processing. - * - * @param operation The operation being performed - * @param reason The reason that the operation was failed - * @param status The http status code that is most appropriate - * @param stack The stack that we were processing - */ - @SuppressWarnings("nls") - public RequestFailedException(String operation, String reason, HttpStatus status, Stack stack) { - super(operation + ":" + reason); - this.operation = operation; - this.reason = reason; - this.status = status; - this.stack = stack; - if (stack != null) { - this.stackId = stack.getId(); - } - } - - /** - * Construct the request failed exception with the operation being performed, reason for the failure, http status - * code that is most appropriate, and the server we were processing. - * - * @param ex The exception that we are wrapping - * @param operation The operation being performed - * @param reason The reason that the operation was failed - * @param status The http status code that is most appropriate - * @param server The server that we were processing - */ - @SuppressWarnings("nls") - public RequestFailedException(Throwable ex, String operation, String reason, HttpStatus status, Server server) { - super(operation + ":" + reason, ex); - this.operation = operation; - this.reason = reason; - this.status = status; - this.server = server; - if (server != null) { - this.serverId = server.getId(); - } - } - - /** - * @param message The error message - * @param cause A nested exception - */ - public RequestFailedException(String message, Throwable cause) { - super(message, cause); - } - - /** - * @param message The error message - * @param cause A nested exception - * @param enableSuppression whether or not suppression is enabled or disabled - * @param writableStackTrace whether or not the stack trace should be writable - */ - public RequestFailedException(String message, Throwable cause, boolean enableSuppression, - boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } - - /** - * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} method). (A null value is - * permitted, and indicates that the cause is nonexistent or unknown.) - */ - public RequestFailedException(Throwable cause) { - super(cause); - } - - /** - * @return The operation being performed - */ - public String getOperation() { - return operation; - } - - /** - * @return The reason for the failure - */ - public String getReason() { - return reason; - } - - /** - * @return The server being operated upon - */ - public Server getServer() { - return server; - } - - /** - * @return The id of the server being operated upon - */ - public String getServerId() { - return serverId; - } - - /** - * @return The status code from the operation - */ - public HttpStatus getStatus() { - return status; - } - - /** - * @param operation The operation being performed - */ - public void setOperation(String operation) { - this.operation = operation; - } - - /** - * @param reason The reason for the failure - */ - public void setReason(String reason) { - this.reason = reason; - } - - /** - * @param server The server being operated upon - */ - public void setServer(Server server) { - this.server = server; - if (server != null) { - setServerId(server.getId()); - } - } - - /** - * @param serverId The id of the server being operated upon - */ - public void setServerId(String serverId) { - this.serverId = serverId; - } - - /** - * @param status The status of the request - */ - public void setStatus(HttpStatus status) { - this.status = status; - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ServiceCatalog.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ServiceCatalog.java deleted file mode 100644 index c078eb7b3..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ServiceCatalog.java +++ /dev/null @@ -1,310 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.impl; - -import java.util.HashSet; -import java.util.List; -import java.util.Properties; -import java.util.Set; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.zones.spi.RequestState; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.cdp.zones.spi.AbstractService.State; -import com.woorea.openstack.keystone.model.Access; -import com.woorea.openstack.keystone.model.Access.Service; -import com.woorea.openstack.keystone.model.Tenant; - -/** - * This class is used to capture and cache the service catalog for a specific OpenStack provider. - * <p> - * This is needed because the way the servers are represented in the ECOMP product is as their fully qualified URL's. - * This is very problematic, because we cant identify their region from the URL, URL's change, and we cant identify the - * versions of the service implementations. In otherwords, the URL does not provide us enough information. - * </p> - * <p> - * The zone abstraction layer is designed to detect the versions of the services dynamically, and step up or down to - * match those reported versions. In order to do that, we need to know before hand what region we are accessing (since - * the supported versions may be different by regions). We will need to authenticate to the identity service in order to - * do this, plus we have to duplicate the code supporting proxies and trusted hosts that exists in the abstraction - * layer, but that cant be helped. - * </p> - * <p> - * What we do to circumvent this is connect to the provider using the lowest supported identity api, and read the entire - * service catalog into this object. Then, we parse the vm URL to extract the host and port and match that to the - * compute services defined in the catalog. When we find a compute service that has the same host name and port, - * whatever region that service is supporting is the region for that server. - * </p> - * <p> - * While we really only need to do this for compute nodes, there is no telling what other situations may arise where the - * full service catalog may be needed. Also, there is very little additional cost (additional RAM) associated with - * caching the full service catalog since there is no way to list only a portion of it. - * </p> - */ -public abstract class ServiceCatalog { - /** - * The openstack connector version to use - */ - public static final String CLIENT_CONNECTOR_CLASS = "com.woorea.openstack.connector.JaxRs20Connector"; - - /** - * The service name for the compute service endpoint - */ - public static final String COMPUTE_SERVICE = "compute"; //$NON-NLS-1$ - - /** - * The default domain for authentication - */ - public static final String DEFAULT_DOMAIN = "Default"; - /** - * The service name for the identity service endpoint - */ - public static final String IDENTITY_SERVICE = "identity"; //$NON-NLS-1$ - - /** - * The service name for the compute service endpoint - */ - public static final String IMAGE_SERVICE = "image"; //$NON-NLS-1$ - - /** - * The service name for the metering service endpoint - */ - public static final String METERING_SERVICE = "metering"; //$NON-NLS-1$ - - /** - * The service name for the network service endpoint - */ - public static final String NETWORK_SERVICE = "network"; //$NON-NLS-1$ - - /** - * The service name for the persistent object service endpoint - */ - public static final String OBJECT_SERVICE = "object-store"; //$NON-NLS-1$ - - /** - * The service name for the orchestration service endpoint - */ - public static final String ORCHESTRATION_SERVICE = "orchestration"; //$NON-NLS-1$ - - /** - * The service name for the volume service endpoint - */ - public static final String VOLUME_SERVICE = "volume"; //$NON-NLS-1$ - - /** - * The logger to be used - */ - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(ServiceCatalog.class); - - /** - * The password for authentication - */ - protected String credential; - - /** - * The domain for authentication - */ - protected String domain; - /** - * The time (local) that the token expires and we need to re-authenticate - */ - protected long expiresLocal; - - /** - * The url of the identity service - */ - protected String identityURL; - - /** - * The user id for authentication - */ - protected String principal; - - /** - * The project or tenant identifier - */ - protected String projectIdentifier; - - /** - * Properties for proxy information - */ - protected Properties properties; - - /** - * The set of all regions that have been defined - */ - protected Set<String> regions; - - /** - * The read/write lock used to protect the cache contents - */ - protected ReadWriteLock rwLock; - - /** - * Create the ServiceCatalog cache - * - * @param identityURL The identity service URL to connect to - * @param tenantIdentifier The name or id of the tenant to authenticate with. If the ID is a UUID format - * (32-character hexadecimal string), then the authentication is done using the tenant ID, otherwise it is - * done using the name. - * @param principal The user id to authenticate to the provider - * @param credential The password to authenticate to the provider - * @param properties Additional properties used to configure the connection, such as proxy and trusted hosts lists - * @throws ZoneException - * @throws ClassNotFoundException - * @throws IllegalAccessException - * @throws InstantiationException - */ - public ServiceCatalog(String identityURL, String projectIdentifier, String principal, String credential, - String domain, Properties properties) { - this.identityURL = identityURL; - this.projectIdentifier = projectIdentifier; - this.principal = principal; - this.credential = credential; - this.domain = domain; - this.properties = properties; - rwLock = new ReentrantReadWriteLock(); - regions = new HashSet<>(); - } - - /** - * Returns the list of service endpoints for the published service type - * - * @param serviceType The service type to obtain the endpoints for - * @return The list of endpoints for the service type, or null if none exist - */ - public abstract List<?> getEndpoints(String serviceType); - - /** - * @return The project or tenant id - */ - public abstract String getProjectId(); - - /** - * @return The project or tenant name - */ - public abstract String getProjectName(); - - /** - * @return The set of all regions that are defined - */ - public Set<String> getRegions() { - Lock readLock = rwLock.readLock(); - readLock.lock(); - try { - return regions; - } finally { - readLock.unlock(); - } - } - - /** - * @return A list of service types that are published - */ - public abstract List<String> getServiceTypes(); - - /** - * This method accepts a fully qualified compute node URL and uses that to determine which region of the provider - * hosts that compute node. - * - * @param url The parsed URL of the compute node - * @return The region name, or null if no region of this tenant hosts that compute node. - */ - public abstract String getVMRegion(VMURL url); - - /** - * Returns an indication if the specified service type is published by this provider - * - * @param serviceType The service type to check for - * @return True if a service of that type is published - */ - public abstract boolean isServicePublished(String serviceType); - - /** - * Load the Service Catalog from the specified provider - * - * @throws ZoneException - */ - public abstract void init() throws ZoneException; - - /** - * This method is used to provide a diagnostic listing of the service catalog - * - * @see java.lang.Object#toString() - */ - @Override - public abstract String toString(); - - /** - * Initializes the request state for the current requested service. - * <p> - * This method is used to track requests made to the various service implementations and to provide additional - * information for diagnostic purposes. The <code>RequestState</code> class stores the state in thread-local storage - * and is available to all code on that thread. - * </p> - * <p> - * This method first obtains the stack trace and scans the stack backward for the call to this method. It then backs - * up one more call and assumes that method is the request that we are "tracking". - * </p> - * - * @param states A variable argument list of additional state values that the caller wants to add to the request - * state thread-local object to track the context. - */ - protected void trackRequest(State... states) { - RequestState.clear(); - - for (State state : states) { - RequestState.put(state.getName(), state.getValue()); - } - - Thread currentThread = Thread.currentThread(); - StackTraceElement[] stack = currentThread.getStackTrace(); - if (stack != null && stack.length > 0) { - int index = 0; - StackTraceElement element = null; - for (; index < stack.length; index++) { - element = stack[index]; - if ("trackRequest".equals(element.getMethodName())) { //$NON-NLS-1$ - break; - } - } - index++; - - if (index < stack.length) { - element = stack[index]; - RequestState.put(RequestState.METHOD, element.getMethodName()); - RequestState.put(RequestState.CLASS, element.getClassName()); - RequestState.put(RequestState.LINE_NUMBER, Integer.toString(element.getLineNumber())); - RequestState.put(RequestState.THREAD, currentThread.getName()); - // RequestState.put(RequestState.PROVIDER, context.getProvider().getName()); - // RequestState.put(RequestState.TENANT, context.getTenantName()); - // RequestState.put(RequestState.PRINCIPAL, context.getPrincipal()); - } - } - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ServiceCatalogFactory.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ServiceCatalogFactory.java deleted file mode 100644 index 4c759b2c6..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ServiceCatalogFactory.java +++ /dev/null @@ -1,70 +0,0 @@ -/*-
- * ============LICENSE_START=======================================================
- * ONAP : APPC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Copyright (C) 2017 Amdocs
- * =============================================================================
- * 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.adapter.iaas.impl;
-
-import java.util.Properties;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-
-public class ServiceCatalogFactory {
-
- private static EELFLogger logger= EELFManager.getInstance().getLogger(org.onap.appc.adapter.iaas.impl.ServiceCatalogFactory.class);
-
- /**
- * This method accepts a fully qualified identity service URL and uses that to determine which version of the
- * serviceCatalog to load.
- *
- * @param url The parsed URL of the identity service
- * @param projectIdentifier The project or tenant to be used to connect to the service
- * @param principal The principal or user to be used to connect to the service
- * @param ceredential The credential or password to be used to connect to the service
- * @param properties Properties object for proxy information
- * @return The serviceCatalog for identity service version specified in the url, null if not supported.
- */
- public static ServiceCatalog getServiceCatalog(String url, String projectIdentifier, String principal,
- String credential, String domain, Properties properties) {
- IdentityURL idUrl = IdentityURL.parseURL(url);
- if(idUrl == null){
- logger.error("Url " + url + " could not be parsed.");
- return null;
- }
- String version = idUrl.getVersion();
- if(version == null){
- logger.error("Invalid Identity URL check configuration");
- return null;
- }
- String prefix = version.split("\\.")[0];
- if (prefix != null) {
- switch (prefix) {
- case "v2":
- return new ServiceCatalogV2(url, projectIdentifier, principal, credential, properties);
- case "v3":
- return new ServiceCatalogV3(url, projectIdentifier, principal, credential, domain, properties);
- }
- }
- return null;
- }
-}
diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ServiceCatalogV2.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ServiceCatalogV2.java deleted file mode 100644 index 1e7112cd3..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ServiceCatalogV2.java +++ /dev/null @@ -1,380 +0,0 @@ -/*-
- * ============LICENSE_START=======================================================
- * ONAP : APPC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Copyright (C) 2017 Amdocs
- * =============================================================================
- * 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.adapter.iaas.impl;
-
-import com.att.cdp.exceptions.ContextConnectionException;
-import com.att.cdp.exceptions.ZoneException;
-import com.att.cdp.openstack.util.ExceptionMapper;
-import com.att.cdp.pal.util.Time;
-import com.att.cdp.zones.ContextFactory;
-import com.att.cdp.zones.spi.RequestState;
-import com.woorea.openstack.base.client.OpenStackBaseException;
-import com.woorea.openstack.base.client.OpenStackClientConnector;
-import com.woorea.openstack.base.client.OpenStackSimpleTokenProvider;
-import com.woorea.openstack.keystone.Keystone;
-import com.woorea.openstack.keystone.api.TokensResource;
-import com.woorea.openstack.keystone.model.Access;
-import com.woorea.openstack.keystone.model.Access.Service;
-import com.woorea.openstack.keystone.model.Access.Service.Endpoint;
-import com.woorea.openstack.keystone.model.Authentication;
-import com.woorea.openstack.keystone.model.Tenant;
-import com.woorea.openstack.keystone.model.authentication.UsernamePassword;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.locks.Lock;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * This class is used to capture and cache the service catalog for a specific OpenStack provider.
- * <p>
- * This is needed because the way the servers are represented in the ECOMP product is as their fully qualified URL's.
- * This is very problematic, because we cant identify their region from the URL, URL's change, and we cant identify the
- * versions of the service implementations. In otherwords, the URL does not provide us enough information.
- * </p>
- * <p>
- * The zone abstraction layer is designed to detect the versions of the services dynamically, and step up or down to
- * match those reported versions. In order to do that, we need to know before hand what region we are accessing (since
- * the supported versions may be different by regions). We will need to authenticate to the identity service in order to
- * do this, plus we have to duplicate the code supporting proxies and trusted hosts that exists in the abstraction
- * layer, but that cant be helped.
- * </p>
- * <p>
- * What we do to circumvent this is connect to the provider using the lowest supported identity api, and read the entire
- * service catalog into this object. Then, we parse the vm URL to extract the host and port and match that to the
- * compute services defined in the catalog. When we find a compute service that has the same host name and port,
- * whatever region that service is supporting is the region for that server.
- * </p>
- * <p>
- * While we really only need to do this for compute nodes, there is no telling what other situations may arise where the
- * full service catalog may be needed. Also, there is very little additional cost (additional RAM) associated with
- * caching the full service catalog since there is no way to list only a portion of it.
- * </p>
- */
-public class ServiceCatalogV2 extends ServiceCatalog {
-
- /**
- * The Openstack Access object that manages the authenticated token and access control
- */
- private Access access;
-
- /**
- * A map of endpoints for each service organized by service type
- */
- private Map<String /* Service Type */, List<Service.Endpoint>> serviceEndpoints;
-
- /**
- * A map of service types that are published
- */
- private Map<String /* Service Type */, Service> serviceTypes;
-
- /**
- * The tenant that we are accessing
- */
- private Tenant tenant;
-
- /**
- * A "token provider" that manages the authentication token that we obtain when logging in
- */
- private OpenStackSimpleTokenProvider tokenProvider;
-
- public ServiceCatalogV2(String identityURL, String tenantIdentifier, String principal, String credential,
- Properties properties) {
- super(identityURL, tenantIdentifier, principal, credential, null, properties);
- }
-
- @Override
- public void init() throws ZoneException {
- serviceTypes = new HashMap<>();
- serviceEndpoints = new HashMap<>();
- Class<?> connectorClass;
- OpenStackClientConnector connector;
- try {
- connectorClass = Class.forName(CLIENT_CONNECTOR_CLASS);
- connector = (OpenStackClientConnector) connectorClass.newInstance();
- } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
- e.printStackTrace();
- return;
- }
- Keystone keystone = new Keystone(identityURL, connector);
-
- String proxyHost = properties.getProperty(ContextFactory.PROPERTY_PROXY_HOST);
- String proxyPort = properties.getProperty(ContextFactory.PROPERTY_PROXY_PORT);
- String trustedHosts = properties.getProperty(ContextFactory.PROPERTY_TRUSTED_HOSTS, ""); //$NON-NLS-1$
- if (proxyHost != null && proxyHost.length() > 0) {
- keystone.getProperties().setProperty(com.woorea.openstack.common.client.Constants.PROXY_HOST, proxyHost);
- keystone.getProperties().setProperty(com.woorea.openstack.common.client.Constants.PROXY_PORT, proxyPort);
- }
- if (trustedHosts != null) {
- keystone.getProperties().setProperty(com.woorea.openstack.common.client.Constants.TRUST_HOST_LIST,
- trustedHosts);
- }
-
- Authentication authentication = new UsernamePassword(principal, credential);
- TokensResource tokens = keystone.tokens();
- TokensResource.Authenticate authenticate = tokens.authenticate(authentication);
- if (projectIdentifier.length() == 32 && projectIdentifier.matches("[0-9a-fA-F]+")) { //$NON-NLS-1$
- authenticate = authenticate.withTenantId(projectIdentifier);
- } else {
- authenticate = authenticate.withTenantName(projectIdentifier);
- }
-
- /*
- * We have to set up the TrackRequest TLS collection for the ExceptionMapper
- */
- trackRequest();
- RequestState.put(RequestState.PROVIDER, "OpenStackProvider");
- RequestState.put(RequestState.TENANT, projectIdentifier);
- RequestState.put(RequestState.PRINCIPAL, principal);
-
- try {
- access = authenticate.execute();
- expiresLocal = getLocalExpiration(access);
- tenant = access.getToken().getTenant();
- tokenProvider = new OpenStackSimpleTokenProvider(access.getToken().getId());
- keystone.setTokenProvider(tokenProvider);
- parseServiceCatalog(access.getServiceCatalog());
- } catch (OpenStackBaseException e) {
- ExceptionMapper.mapException(e);
- } catch (Exception ex) {
- throw new ContextConnectionException(ex.getMessage());
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List<Service.Endpoint> getEndpoints(String serviceType) {
- Lock readLock = rwLock.readLock();
- readLock.lock();
- try {
- return serviceEndpoints.get(serviceType);
- } finally {
- readLock.unlock();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getProjectId() {
- Lock readLock = rwLock.readLock();
- readLock.lock();
- try {
- return tenant.getId();
- } finally {
- readLock.unlock();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getProjectName() {
- Lock readLock = rwLock.readLock();
- readLock.lock();
- try {
- return tenant.getName();
- } finally {
- readLock.unlock();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Set<String> getRegions() {
- Lock readLock = rwLock.readLock();
- readLock.lock();
- try {
- return regions;
- } finally {
- readLock.unlock();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List<String> getServiceTypes() {
- Lock readLock = rwLock.readLock();
- readLock.lock();
- try {
- ArrayList<String> result = new ArrayList<>();
- result.addAll(serviceTypes.keySet());
- return result;
- } finally {
- readLock.unlock();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getVMRegion(VMURL url) {
- String region = null;
- Pattern urlPattern = Pattern.compile("[^:]+://([^:/]+)(?::([0-9]+)).*");
-
- if (url != null) {
- for (Endpoint endpoint : getEndpoints(ServiceCatalog.COMPUTE_SERVICE)) {
- String endpointUrl = endpoint.getPublicURL();
- Matcher matcher = urlPattern.matcher(endpointUrl);
- if (matcher.matches()) {
- if (url.getHost().equals(matcher.group(1))) {
- if (url.getPort() != null) {
- if (!url.getPort().equals(matcher.group(2))) {
- continue;
- }
- }
-
- region = endpoint.getRegion();
- break;
- }
- }
- }
- }
- return region;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isServicePublished(String serviceType) {
- Lock readLock = rwLock.readLock();
- readLock.lock();
- try {
- return serviceTypes.containsKey(serviceType);
- } finally {
- readLock.unlock();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String toString() {
-
- StringBuilder builder = new StringBuilder();
- Lock lock = rwLock.readLock();
- lock.lock();
- try {
- builder.append(String.format("Service Catalog: tenant %s, id[%s], description[%s]\n", tenant.getName(), //$NON-NLS-1$
- tenant.getId(), tenant.getDescription()));
- if (regions != null && !regions.isEmpty()) {
- builder.append(String.format("%d regions:\n", regions.size())); //$NON-NLS-1$
- for (String region : regions) {
- builder.append("\t" + region + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
- builder.append(String.format("%d services:\n", serviceEndpoints.size())); //$NON-NLS-1$
- for (String serviceType : serviceEndpoints.keySet()) {
- List<Service.Endpoint> endpoints = serviceEndpoints.get(serviceType);
- Service service = serviceTypes.get(serviceType);
-
- builder.append(String.format("\t%s [%s] - %d endpoints\n", service.getType(), service.getName(), //$NON-NLS-1$
- endpoints.size()));
- for (Service.Endpoint endpoint : endpoints) {
- builder.append(String.format("\t\tRegion [%s], public URL [%s]\n", endpoint.getRegion(), //$NON-NLS-1$
- endpoint.getPublicURL()));
- }
- }
- } finally {
- lock.unlock();
- }
-
- return builder.toString();
- }
-
- /**
- * Parses the service catalog and caches the results
- *
- * @param services The list of services published by this provider
- */
- private void parseServiceCatalog(List<Service> services) {
- Lock lock = rwLock.writeLock();
- lock.lock();
- try {
- serviceTypes.clear();
- serviceEndpoints.clear();
- regions.clear();
-
- for (Service service : services) {
- String type = service.getType();
- serviceTypes.put(type, service);
-
- List<Service.Endpoint> endpoints = service.getEndpoints();
- for (Service.Endpoint endpoint : endpoints) {
- List<Service.Endpoint> endpointList = serviceEndpoints.get(type);
- if (endpointList == null) {
- endpointList = new ArrayList<>();
- serviceEndpoints.put(type, endpointList);
- }
- endpointList.add(endpoint);
-
- String region = endpoint.getRegion();
- if (!regions.contains(region)) {
- regions.add(region);
- }
- }
- }
- } finally {
- lock.unlock();
- }
- }
-
- /**
- * Computes the local time when the access token will expire, after which we will need to re-login to access the
- * provider.
- *
- * @param accessKey The access key used to access the provider
- * @return The local time the key expires
- */
- private static long getLocalExpiration(Access accessKey) {
- Date now = Time.getCurrentUTCDate();
- if (accessKey != null && accessKey.getToken() != null) {
- Calendar issued = accessKey.getToken().getIssued_at();
- Calendar expires = accessKey.getToken().getExpires();
- if (issued != null && expires != null) {
- long tokenLife = expires.getTimeInMillis() - issued.getTimeInMillis();
- return now.getTime() + tokenLife;
- }
- }
- return now.getTime();
- }
-}
diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ServiceCatalogV3.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ServiceCatalogV3.java deleted file mode 100644 index b1c47e5d5..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/ServiceCatalogV3.java +++ /dev/null @@ -1,402 +0,0 @@ -/*-
- * ============LICENSE_START=======================================================
- * ONAP : APPC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Copyright (C) 2017 Amdocs
- * =============================================================================
- * 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.adapter.iaas.impl;
-
-import com.att.cdp.exceptions.ContextConnectionException;
-import com.att.cdp.exceptions.ZoneException;
-import com.att.cdp.openstack.util.ExceptionMapper;
-import com.att.cdp.pal.util.Time;
-import com.att.cdp.zones.ContextFactory;
-import com.att.cdp.zones.spi.RequestState;
-import com.woorea.openstack.base.client.OpenStackBaseException;
-import com.woorea.openstack.base.client.OpenStackClientConnector;
-import com.woorea.openstack.base.client.OpenStackSimpleTokenProvider;
-import com.woorea.openstack.keystone.v3.Keystone;
-import com.woorea.openstack.keystone.v3.api.TokensResource;
-import com.woorea.openstack.keystone.v3.model.Authentication;
-import com.woorea.openstack.keystone.v3.model.Authentication.Identity;
-import com.woorea.openstack.keystone.v3.model.Authentication.Scope;
-import com.woorea.openstack.keystone.v3.model.Token;
-import com.woorea.openstack.keystone.v3.model.Token.Project;
-import com.woorea.openstack.keystone.v3.model.Token.Service;
-import com.woorea.openstack.keystone.v3.model.Token.Service.Endpoint;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * This class is used to capture and cache the service catalog for a specific OpenStack provider.
- * <p>
- * This is needed because the way the servers are represented in the ECOMP product is as their fully qualified URL's.
- * This is very problematic, because we cant identify their region from the URL, URL's change, and we cant identify the
- * versions of the service implementations. In otherwords, the URL does not provide us enough information.
- * </p>
- * <p>
- * The zone abstraction layer is designed to detect the versions of the services dynamically, and step up or down to
- * match those reported versions. In order to do that, we need to know before hand what region we are accessing (since
- * the supported versions may be different by regions). We will need to authenticate to the identity service in order to
- * do this, plus we have to duplicate the code supporting proxies and trusted hosts that exists in the abstraction
- * layer, but that cant be helped.
- * </p>
- * <p>
- * What we do to circumvent this is connect to the provider using the lowest supported identity api, and read the entire
- * service catalog into this object. Then, we parse the vm URL to extract the host and port and match that to the
- * compute services defined in the catalog. When we find a compute service that has the same host name and port,
- * whatever region that service is supporting is the region for that server.
- * </p>
- * <p>
- * While we really only need to do this for compute nodes, there is no telling what other situations may arise where the
- * full service catalog may be needed. Also, there is very little additional cost (additional RAM) associated with
- * caching the full service catalog since there is no way to list only a portion of it.
- * </p>
- */
-public class ServiceCatalogV3 extends ServiceCatalog {
-
- /**
- * The project that we are accessing
- */
- private Project project;
-
- /**
- * A map of endpoints for each service organized by service type
- */
- private Map<String /* Service Type */, List<Service.Endpoint>> serviceEndpoints;
-
- /**
- * A map of service types that are published
- */
- private Map<String /* Service Type */, Service> serviceTypes;
-
- /**
- * The Openstack Access object that manages the authenticated token and access control
- */
- private Token token;
-
- /**
- * A "token provider" that manages the authentication token that we obtain when logging in
- */
- private OpenStackSimpleTokenProvider tokenProvider;
-
- /**
- * {@inheritDoc}
- */
- public ServiceCatalogV3(String identityURL, String projectIdentifier, String principal, String credential,
- String domain, Properties properties) {
- super(identityURL, projectIdentifier, principal, credential, domain, properties);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void init() throws ZoneException {
- rwLock = new ReentrantReadWriteLock();
- serviceTypes = new HashMap<>();
- serviceEndpoints = new HashMap<>();
- regions = new HashSet<>();
- Class<?> connectorClass;
- OpenStackClientConnector connector;
- try {
- connectorClass = Class.forName(CLIENT_CONNECTOR_CLASS);
- connector = (OpenStackClientConnector) connectorClass.newInstance();
- } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
- e.printStackTrace();
- return;
- }
- Keystone keystone = new Keystone(identityURL, connector);
-
- String proxyHost = properties.getProperty(ContextFactory.PROPERTY_PROXY_HOST);
- String proxyPort = properties.getProperty(ContextFactory.PROPERTY_PROXY_PORT);
- String trustedHosts = properties.getProperty(ContextFactory.PROPERTY_TRUSTED_HOSTS, ""); //$NON-NLS-1$
- if (proxyHost != null && proxyHost.length() > 0) {
- keystone.getProperties().setProperty(com.woorea.openstack.common.client.Constants.PROXY_HOST, proxyHost);
- keystone.getProperties().setProperty(com.woorea.openstack.common.client.Constants.PROXY_PORT, proxyPort);
- }
- if (trustedHosts != null) {
- keystone.getProperties().setProperty(com.woorea.openstack.common.client.Constants.TRUST_HOST_LIST,
- trustedHosts);
- }
-
- // create identity
- Identity identity = Identity.password(domain, principal, credential);
-
- // create scope
- Scope scope = null;
- if (projectIdentifier.length() == 32 && projectIdentifier.matches("[0-9a-fA-F]+")) { //$NON-NLS-1$
- // authenticate = authenticate.withTenantId(projectIdentifier);
- scope = Scope.project(projectIdentifier);
- } else {
- // authenticate = authenticate.withTenantName(projectIdentifier);
- scope = Scope.project(domain, projectIdentifier);
- }
-
- Authentication authentication = new Authentication();
- authentication.setIdentity(identity);
- authentication.setScope(scope);
-
- TokensResource tokens = keystone.tokens();
- TokensResource.Authenticate authenticate = tokens.authenticate(authentication);
-
- /*
- * We have to set up the TrackRequest TLS collection for the ExceptionMapper
- */
- trackRequest();
- RequestState.put(RequestState.PROVIDER, "OpenStackProvider");
- RequestState.put(RequestState.TENANT, projectIdentifier);
- RequestState.put(RequestState.PRINCIPAL, principal);
-
- try {
- token = authenticate.execute();
- expiresLocal = getLocalExpiration(token);
- project = token.getProject();
- tokenProvider = new OpenStackSimpleTokenProvider(token.getId());
- keystone.setTokenProvider(tokenProvider);
- parseServiceCatalog(token.getCatalog());
- } catch (OpenStackBaseException e) {
- ExceptionMapper.mapException(e);
- } catch (Exception ex) {
- throw new ContextConnectionException(ex.getMessage());
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List<Service.Endpoint> getEndpoints(String serviceType) {
- Lock readLock = rwLock.readLock();
- readLock.lock();
- try {
- return serviceEndpoints.get(serviceType);
- } finally {
- readLock.unlock();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getProjectId() {
- Lock readLock = rwLock.readLock();
- readLock.lock();
- try {
- return project.getId();
- } finally {
- readLock.unlock();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getProjectName() {
- Lock readLock = rwLock.readLock();
- readLock.lock();
- try {
- return project.getName();
- } finally {
- readLock.unlock();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Set<String> getRegions() {
- Lock readLock = rwLock.readLock();
- readLock.lock();
- try {
- return regions;
- } finally {
- readLock.unlock();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List<String> getServiceTypes() {
- Lock readLock = rwLock.readLock();
- readLock.lock();
- try {
- ArrayList<String> result = new ArrayList<>();
- result.addAll(serviceTypes.keySet());
- return result;
- } finally {
- readLock.unlock();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getVMRegion(VMURL url) {
- String region = null;
- Pattern urlPattern = Pattern.compile("[^:]+://([^:/]+)(?::([0-9]+)).*");
-
- if (url != null) {
- for (Endpoint endpoint : getEndpoints(ServiceCatalog.COMPUTE_SERVICE)) {
- String endpointUrl = endpoint.getUrl();
- Matcher matcher = urlPattern.matcher(endpointUrl);
- if (matcher.matches()) {
- if (url.getHost().equals(matcher.group(1))) {
- if (url.getPort() != null) {
- if (!url.getPort().equals(matcher.group(2))) {
- continue;
- }
- }
-
- region = endpoint.getRegion();
- break;
- }
- }
- }
- }
- return region;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isServicePublished(String serviceType) {
- Lock readLock = rwLock.readLock();
- readLock.lock();
- try {
- return serviceTypes.containsKey(serviceType);
- } finally {
- readLock.unlock();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String toString() {
-
- StringBuilder builder = new StringBuilder();
- Lock lock = rwLock.readLock();
- lock.lock();
- try {
- builder.append(String.format("Service Catalog: tenant %s, id[%s]\n", project.getName(), //$NON-NLS-1$
- project.getId()));
- if (regions != null && !regions.isEmpty()) {
- builder.append(String.format("%d regions:\n", regions.size())); //$NON-NLS-1$
- for (String region : regions) {
- builder.append("\t" + region + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
- builder.append(String.format("%d services:\n", serviceEndpoints.size())); //$NON-NLS-1$
- for (String serviceType : serviceEndpoints.keySet()) {
- List<Service.Endpoint> endpoints = serviceEndpoints.get(serviceType);
- Service service = serviceTypes.get(serviceType);
-
- builder.append(String.format("\t%s - %d endpoints\n", service.getType(), //$NON-NLS-1$
- endpoints.size()));
- for (Service.Endpoint endpoint : endpoints) {
- builder.append(String.format("\t\tRegion [%s], public URL [%s]\n", endpoint.getRegion(), //$NON-NLS-1$
- endpoint.getUrl()));
- }
- }
- } finally {
- lock.unlock();
- }
-
- return builder.toString();
- }
-
- /**
- * Parses the service catalog and caches the results
- *
- * @param services The list of services published by this provider
- */
- private void parseServiceCatalog(List<Service> services) {
- Lock lock = rwLock.writeLock();
- lock.lock();
- try {
- serviceTypes.clear();
- serviceEndpoints.clear();
- regions.clear();
-
- for (Service service : services) {
- String type = service.getType();
- serviceTypes.put(type, service);
-
- List<Service.Endpoint> endpoints = service.getEndpoints();
- for (Service.Endpoint endpoint : endpoints) {
- List<Service.Endpoint> endpointList = serviceEndpoints.get(type);
- if (endpointList == null) {
- endpointList = new ArrayList<>();
- serviceEndpoints.put(type, endpointList);
- }
- endpointList.add(endpoint);
-
- String region = endpoint.getRegion();
- if (!regions.contains(region)) {
- regions.add(region);
- }
- }
- }
- } finally {
- lock.unlock();
- }
- }
-
- /**
- * Computes the local time when the access token will expire, after which we will need to re-login to access the
- * provider.
- *
- * @param accessKey The access key used to access the provider
- * @return The local time the key expires
- */
- private static long getLocalExpiration(Token accessToken) {
- Date now = Time.getCurrentUTCDate();
- if (accessToken != null) {
- Calendar issued = accessToken.getIssuedAt();
- Calendar expires = accessToken.getExpiresAt();
- if (issued != null && expires != null) {
- long tokenLife = expires.getTimeInMillis() - issued.getTimeInMillis();
- return now.getTime() + tokenLife;
- }
- }
- return now.getTime();
- }
-}
diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/TenantCache.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/TenantCache.java deleted file mode 100644 index 659202d1c..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/TenantCache.java +++ /dev/null @@ -1,382 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.impl; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import org.onap.appc.Constants; -import org.onap.appc.configuration.Configuration; -import org.onap.appc.configuration.ConfigurationFactory; -import org.onap.appc.i18n.Msg; -import org.onap.appc.pool.Allocator; -import org.onap.appc.pool.Destructor; -import org.onap.appc.pool.Pool; -import org.onap.appc.pool.PoolSpecificationException; -import com.att.cdp.exceptions.ContextConnectionException; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.ContextFactory; -import com.att.cdp.zones.Provider; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.woorea.openstack.connector.JaxRs20Connector; -// import com.sun.jersey.api.client.ClientHandlerException; -import com.woorea.openstack.keystone.model.Access.Service.Endpoint; - -/** - * This class maintains a cache of tenants within a specific provider. - * <p> - * Providers may be multi-tenant, such as OpenStack, where the available services and resources vary from one tenant to - * another. Therefore, the provider cache maintains a cache of tenants and the service catalogs for each, as well as the - * credentials used to access the tenants, and a pool of Context objects for each tenant. The context pool allows use of - * the CDP abstraction layer to access the services of the provider within the specific tenant. - * </p> - */ -public class TenantCache implements Allocator<Context>, Destructor<Context> { - - public static final String POOL_PROVIDER_NAME = "pool.provider.name"; - public static final String POOL_TENANT_NAME = "pool.tenant.name"; - // public static final String CLIENT_CONNECTOR_CLASS = - // "com.woorea.openstack.connector.JerseyConnector"; - public static final String CLIENT_CONNECTOR_CLASS = "com.woorea.openstack.connector.JaxRs20Connector"; - /** - * The domain to use to authenticate - */ - private String domain; - - /** - * The provider we are part of - */ - private ProviderCache provider; - - /** - * The password used to authenticate - */ - private String password; - - /** - * The context pools by region used to access this tenant - */ - private Map<String /* region */, Pool<Context>> pools = new HashMap<>(); - - /** - * The tenant id - */ - private String tenantId; - - /** - * The tenant name - */ - private String tenantName; - - /** - * The user id used to authenticate - */ - private String userid; - - /** - * The configuration of this adapter - */ - private Configuration configuration; - - /** - * The service catalog for this provider - */ - private ServiceCatalog catalog; - - /** - * Set to true when the cache has been initialized - */ - private boolean initialized; - - /** - * The logger to use - */ - private EELFLogger logger; - - /** - * Construct the cache of tenants for the specified provider - * - * @param provider The provider - */ - public TenantCache(ProviderCache provider) { - configuration = ConfigurationFactory.getConfiguration(); - logger = EELFManager.getInstance().getLogger(getClass()); - this.provider = provider; - configuration = ConfigurationFactory.getConfiguration(); - } - - /** - * @return True when the cache has been initialized. A tenant cache is initialized when the service catalog for the - * tenant on the specified provider has been loaded and processed. - */ - public boolean isInitialized() { - return initialized; - } - - /** - * Initializes the tenant cache. - * <p> - * This method authenticates to the provider and obtains the service catalog. For the service catalog we can - * determine all supported regions for this provider, as well as all published services and their endpoints. We will - * cache and maintain a copy of the service catalog for later queries. - * </p> - * <p> - * Once the catalog has been obtained, we create a context pool for each region defined. The context allows access - * to services of a single region only, so we need a separate context by region. It is possible to operate on - * resources that span regions, but to do so will require acquiring a context for each region of interest. - * </p> - * <p> - * The context pool maintains the reusable context objects and allocates them as needed. This class is registered as - * the allocator and destructor for the pool, so that we can create a new context when needed, and close it when no - * longer used. - * </p> - */ - public void initialize() { - logger.debug("Initializing TenantCache"); - - int min = configuration.getIntegerProperty(Constants.PROPERTY_MIN_POOL_SIZE); - int max = configuration.getIntegerProperty(Constants.PROPERTY_MAX_POOL_SIZE); - int delay = configuration.getIntegerProperty(Constants.PROPERTY_RETRY_DELAY); - int limit = configuration.getIntegerProperty(Constants.PROPERTY_RETRY_LIMIT); - - String url = provider.getIdentityURL(); - String tenant = tenantName == null ? tenantId : tenantName; - Properties properties = configuration.getProperties(); - catalog = ServiceCatalogFactory.getServiceCatalog(url, tenant, userid, password, domain, properties); - - if (catalog == null) { - logger.error(Msg.IAAS_UNSUPPORTED_IDENTITY_SERVICE, url); - return; - } - - int attempt = 1; - while (attempt <= limit) { - try { - catalog.init(); - tenantId = catalog.getProjectId(); - tenantName = catalog.getProjectName(); - - for (String region : catalog.getRegions()) { - try { - Pool<Context> pool = new Pool<>(min, max); - pool.setProperty(ContextFactory.PROPERTY_IDENTITY_URL, url); - pool.setProperty(ContextFactory.PROPERTY_TENANT, tenantName); - pool.setProperty(ContextFactory.PROPERTY_CLIENT_CONNECTOR_CLASS, CLIENT_CONNECTOR_CLASS); - pool.setProperty(ContextFactory.PROPERTY_RETRY_DELAY, - configuration.getProperty(Constants.PROPERTY_RETRY_DELAY)); - pool.setProperty(ContextFactory.PROPERTY_RETRY_LIMIT, - configuration.getProperty(Constants.PROPERTY_RETRY_LIMIT)); - pool.setProperty(ContextFactory.PROPERTY_REGION, region); - if (properties.getProperty(ContextFactory.PROPERTY_TRUSTED_HOSTS) != null) { - pool.setProperty(ContextFactory.PROPERTY_TRUSTED_HOSTS, - properties.getProperty(ContextFactory.PROPERTY_TRUSTED_HOSTS)); - } - pool.setAllocator(this); - pool.setDestructor(this); - pools.put(region, pool); - logger.debug(String.format("Put pool for region %s", region)); - } catch (PoolSpecificationException e) { - logger.error("Error creating pool", e); - e.printStackTrace(); - } - } - initialized = true; - break; - } catch (ContextConnectionException e) { - attempt++; - if (attempt <= limit) { - logger.error(Msg.CONNECTION_FAILED_RETRY, provider.getProviderName(), url, tenantName, tenantId, - e.getMessage(), Integer.toString(delay), Integer.toString(attempt), - Integer.toString(limit)); - - try { - Thread.sleep(delay * 1000L); - } catch (InterruptedException ie) { - // ignore - } - } - } catch (ZoneException e) { - logger.error(e.getMessage()); - break; - } - } - - if (!initialized) { - logger.error(Msg.CONNECTION_FAILED, provider.getProviderName(), url); - } - } - - /** - * This method accepts a fully qualified compute node URL and uses that to determine which region of the provider - * hosts that compute node. - * - * @param url The parsed URL of the compute node - * @return The region name, or null if no region of this tenant hosts that compute node. - */ - public String determineRegion(VMURL url) { - logger.debug(String.format("Attempting to determine VM region for %s", url)); - String region = catalog.getVMRegion(url); - logger.debug(String.format("Region for %s is %s", url, region)); - return region; - } - - /** - * @return the value of the domain - */ - public String getDomain() { - return domain; - } - - /** - * @param domain the value for domain - */ - public void setDomain(String domain) { - this.domain = domain; - } - - /** - * @return the value of provider - */ - public ProviderCache getProvider() { - return provider; - } - - /** - * @param provider the value for provider - */ - public void setProvider(ProviderCache provider) { - this.provider = provider; - } - - /** - * @return the value of password - */ - public String getPassword() { - return password; - } - - /** - * @param password the value for password - */ - public void setPassword(String password) { - this.password = password; - } - - /** - * @return the value of tenantId - */ - public String getTenantId() { - return tenantId; - } - - /** - * @param tenantId the value for tenantId - */ - public void setTenantId(String tenantId) { - this.tenantId = tenantId; - } - - /** - * @return the value of tenantName - */ - public String getTenantName() { - return tenantName; - } - - /** - * @param tenantName the value for tenantName - */ - public void setTenantName(String tenantName) { - this.tenantName = tenantName; - } - - /** - * @return the value of userid - */ - public String getUserid() { - return userid; - } - - /** - * @param userid the value for userid - */ - public void setUserid(String userid) { - this.userid = userid; - } - - /** - * @return the value of pools - */ - public Map<String, Pool<Context>> getPools() { - return pools; - } - - /** - * @see org.onap.appc.pool.Allocator#allocate(org.onap.appc.pool.Pool) - */ - @SuppressWarnings("unchecked") - @Override - public Context allocate(Pool<Context> pool) { - logger.debug("Allocationg context for pool"); - Class<? extends Provider> providerClass; - try { - providerClass = (Class<? extends Provider>) Class.forName("com.att.cdp.openstack.OpenStackProvider"); - // String providerType = provider.getProviderType(); - - // Context context = ContextFactory.getContext(providerType, pool.getProperties()); - Context context = ContextFactory.getContext(providerClass, pool.getProperties()); - context.login(userid, password); - return context; - } catch (IllegalStateException | IllegalArgumentException | ZoneException | ClassNotFoundException e) { - logger.debug("Failed to allocate context for pool", e); - e.printStackTrace(); - } - return null; - } - - /** - * @see org.onap.appc.pool.Destructor#destroy(java.lang.Object, org.onap.appc.pool.Pool) - */ - @Override - public void destroy(Context context, Pool<Context> pool) { - try { - context.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * @return the service catalog for this provider - */ - public ServiceCatalog getServiceCatalog() { - return catalog; - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/VMURL.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/VMURL.java deleted file mode 100644 index 777327cad..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/VMURL.java +++ /dev/null @@ -1,175 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.impl; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * This class is used to parse the VM URL returned from OpenStack and extract all of the constituent parts. - */ -public class VMURL { - - /** - * The regular expression pattern used to parse the URL. Capturing groups are used to identify and extract the - * various component parts of the URL. - */ - private static Pattern pattern = - Pattern.compile("(\\p{Alnum}+)://([^/:]+)(?::([0-9]+))?(/.*)?/(v[0-9\\.]+)/([^/]+)/servers/([^/]+)"); - - /** - * The URL scheme or protocol, such as HTTP or HTTPS - */ - private String scheme; - - /** - * The host name or ip address - */ - private String host; - - /** - * The path, or null if no path is defined - */ - private String path; - - /** - * The port number, or null if no port is defined - */ - private String port; - - /** - * The tenant UUID - */ - private String tenantId; - - /** - * The server UUID - */ - private String serverId; - - /** - * The version of the service - */ - private String version; - - /** - * A private default constructor prevents instantiation by any method other than the factory method - * - * @see #parseURL(String) - */ - private VMURL() { - - } - - /** - * This static method is used to parse the provided server URL string and return a parse results object (VMURL) - * which represents the state of the parse. - * - * @param serverUrl The server URL to be parsed - * @return The VMURL parse results object, or null if the URL was not valid or null. - */ - public static VMURL parseURL(String serverUrl) { - VMURL obj = null; - if (serverUrl != null) { - Matcher matcher = pattern.matcher(serverUrl.trim()); - if (matcher.matches()) { - obj = new VMURL(); - obj.scheme = matcher.group(1); - obj.host = matcher.group(2); - obj.port = matcher.group(3); - obj.path = matcher.group(4); - obj.version = matcher.group(5); - obj.tenantId = matcher.group(6); - obj.serverId = matcher.group(7); - } - } - - return obj; - } - - /** - * @return The URL scheme - */ - public String getScheme() { - return scheme; - } - - /** - * @return The URL host - */ - public String getHost() { - return host; - } - - /** - * @return THe URL path, or null if no path was defined - */ - public String getPath() { - return path; - } - - /** - * @return The URL port, or null if no port was defined - */ - public String getPort() { - return port; - } - - /** - * @return The tenant id - */ - public String getTenantId() { - return tenantId; - } - - /** - * @return The server ID - */ - public String getServerId() { - return serverId; - } - - /** - * @return The version of the service - */ - public String getVersion() { - return version; - } - - @Override - public String toString() { - StringBuilder str = new StringBuilder(); - str.append(scheme + "://" + host); - if (port != null) { - str.append(":" + port); - } - if (path != null) { - str.append(path); - } - str.append("/" + version + "/" + tenantId + "/servers/" + serverId); - return str.toString(); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/api/IProviderOperation.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/api/IProviderOperation.java deleted file mode 100644 index 3417762d1..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/api/IProviderOperation.java +++ /dev/null @@ -1,74 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.api; - -import org.onap.appc.adapter.iaas.impl.ProviderCache; -import org.onap.appc.exceptions.APPCException; -import com.att.cdp.zones.model.ModelObject; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import java.util.Map; - -/** - * @since September 26, 2016 - */ -public interface IProviderOperation { - - /** - * perform specific provider operation - * - * @param params - * @param context - * @return Object represents Stack, Server Or Image - */ - ModelObject doOperation(Map<String, String> params, SvcLogicContext context) throws APPCException; - - /** - * sets a cache of providers that are predefined. - * - * @param providerCache - */ - void setProviderCache(Map<String /* provider name */, ProviderCache> providerCache); - - /** - * should be initialized by user - * - * @param defaultDomain - */ - void setDefaultDomain(String defaultDomain); - - /** - * should be initialized by user - * - * @param defaultUser - */ - void setDefaultUser(String defaultUser); - - /** - * should be initialized by user - * - * @param defaultPass - */ - void setDefaultPass(String defaultPass); -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/api/ProviderOperationFactory.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/api/ProviderOperationFactory.java deleted file mode 100644 index 1eed4ef90..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/api/ProviderOperationFactory.java +++ /dev/null @@ -1,122 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.api; - -import org.onap.appc.adapter.iaas.provider.operation.impl.*; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation; -import org.onap.appc.exceptions.APPCException; -import java.util.HashMap; -import java.util.Map; - -/** - * Singleton factory of provider operations objects with cache - * - * @since September 26, 2016 - */ -public class ProviderOperationFactory { - - /** - * holds instance of the class - */ - private static ProviderOperationFactory instance; - - /** - * holds concrete operations objects - */ - private Map<Operation, IProviderOperation> operations; - - /** - * private constructor - */ - private ProviderOperationFactory() { - this.operations = new HashMap<>(); - } - - /** - * @return instance of the factory - */ - public static ProviderOperationFactory getInstance() { - if (instance == null) { - instance = new ProviderOperationFactory(); - } - return instance; - } - - /** - * @param op - * @return concrete operation impl - */ - public IProviderOperation getOperationObject(Operation op) throws APPCException { - - IProviderOperation opObject = operations.get(op); - if (opObject == null) { - switch (op) { - case EVACUATE_SERVICE: - opObject = new EvacuateServer(); - break; - case MIGRATE_SERVICE: - opObject = new MigrateServer(); - break; - case REBUILD_SERVICE: - opObject = new RebuildServer(); - break; - case RESTART_SERVICE: - opObject = new RestartServer(); - break; - case VMSTATUSCHECK_SERVICE: - opObject = new VmStatuschecker(); - break; - case SNAPSHOT_SERVICE: - opObject = new CreateSnapshot(); - break; - case TERMINATE_STACK: - opObject = new TerminateStack(); - break; - case SNAPSHOT_STACK: - opObject = new SnapshotStack(); - break; - case RESTORE_STACK: - opObject = new RestoreStack(); - break; - case START_SERVICE: - opObject = new StartServer(); - break; - case STOP_SERVICE: - opObject = new StopServer(); - break; - case TERMINATE_SERVICE: - opObject = new TerminateServer(); - break; - case LOOKUP_SERVICE: - opObject = new LookupServer(); - break; - default: - throw new APPCException("Unsupported provider operation."); - } - operations.put(op, opObject); - } - return opObject; - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/common/constants/Constants.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/common/constants/Constants.java deleted file mode 100644 index 503cb1ae8..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/common/constants/Constants.java +++ /dev/null @@ -1,61 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.common.constants; - -/** - * @since September 26, 2016 - */ -public class Constants { - - public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; - - public static final String MDC_SERVICE = "service"; - public static final String MDC_ADAPTER = "adapter"; - - /** - * The constant for a left parenthesis - */ - public static final char LPAREN = '('; - - /** - * The constant for a new line control code - */ - public static final char NL = '\n'; - - /** - * The constant for a single quote - */ - public static final char QUOTE = '\''; - - /** - * The constant for a right parenthesis - */ - public static final char RPAREN = ')'; - - /** - * The constant for a space - */ - public static final char SPACE = ' '; -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/common/constants/Property.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/common/constants/Property.java deleted file mode 100644 index 90532b92d..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/common/constants/Property.java +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.common.constants; - -/** - * @since September 26, 2016 - */ -public class Property { - - public static final String PROVIDER = "provider"; - public static final String PROVIDER_IDENTITY = "identity"; - public static final String PROVIDER_TENANT = "tenant"; - public static final String PROVIDER_TENANT_DOMAIN = "domain"; - public static final String PROVIDER_TENANT_NAME = "name"; - public static final String PROVIDER_TENANT_PASSWORD = "password"; - public static final String PROVIDER_TENANT_USERID = "userid"; - public static final String PROVIDER_TYPE = "type"; - public static final String SKIP_HYPERVISOR_CHECK = "org.onap.appc.iaas.skiphypervisorcheck"; -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/common/enums/Operation.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/common/enums/Operation.java deleted file mode 100644 index 2f81fab9c..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/common/enums/Operation.java +++ /dev/null @@ -1,96 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.common.enums; - -/** - * @since September 26, 2016 - */ -public enum Operation { - EVACUATE_SERVICE { - public String toString() { - return "evacuateServer"; - } - }, - MIGRATE_SERVICE { - public String toString() { - return "migrateServer"; - } - }, - REBUILD_SERVICE { - public String toString() { - return "rebuildServer"; - } - }, - RESTART_SERVICE { - public String toString() { - return "restartServer"; - } - }, - VMSTATUSCHECK_SERVICE { - public String toString() { - return "vmStatuschecker"; - } - }, - SNAPSHOT_SERVICE { - public String toString() { - return "createSnapshot"; - } - }, - TERMINATE_STACK { - public String toString() { - return "terminateStack"; - } - }, - SNAPSHOT_STACK { - public String toString() { - return "snapshotStack"; - } - }, - START_SERVICE { - public String toString() { - return "startServer"; - } - }, - STOP_SERVICE { - public String toString() { - return "stopServer"; - } - }, - TERMINATE_SERVICE { - public String toString() { - return "terminateServer"; - } - }, - LOOKUP_SERVICE { - public String toString() { - return "lookupServer"; - } - }, - RESTORE_STACK { - public String toString() { - return "restoreStack"; - } - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/common/enums/Outcome.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/common/enums/Outcome.java deleted file mode 100644 index 972409174..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/common/enums/Outcome.java +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.common.enums; - -/** - * @since September 26, 2016 - */ -public enum Outcome { - FAILURE { - public String toString() { - return "failure"; - } - }, - SUCCESS { - public String toString() { - return "success"; - } - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/CreateSnapshot.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/CreateSnapshot.java deleted file mode 100644 index 5165b0ce0..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/CreateSnapshot.java +++ /dev/null @@ -1,233 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import com.att.cdp.exceptions.ContextConnectionException; -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.ImageService; -import com.att.cdp.zones.Provider; -import com.att.cdp.zones.model.Image; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Server; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.glassfish.grizzly.http.util.HttpStatus; -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.IdentityURL; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.impl.VMURL; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderServerOperation; -import org.onap.appc.configuration.Configuration; -import org.onap.appc.configuration.ConfigurationFactory; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.i18n.Msg; -import org.slf4j.MDC; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Map; -import java.util.TimeZone; -import static org.onap.appc.adapter.iaas.provider.operation.common.constants.Constants.DATE_FORMAT; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class CreateSnapshot extends ProviderServerOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(CreateSnapshot.class); - private static EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - private static final Configuration configuration = ConfigurationFactory.getConfiguration(); - - private String generateSnapshotName(String server) { - setTimeForMetricsLogger(); - - SimpleDateFormat df = new SimpleDateFormat(DATE_FORMAT); - metricsLogger.info("Snapshot Name Generated: Snapshot of %s at %s", server, df.format(new Date())); - - return String.format("Snapshot of %s at %s", server, df.format(new Date())); - } - - private Image createSnapshot(RequestContext rc, Server server) throws ZoneException, RequestFailedException { - Context context = server.getContext(); - Provider provider = context.getProvider(); - ImageService service = context.getImageService(); // Already checked access by this point - - String snapshotName = generateSnapshotName(server.getName()); - - setTimeForMetricsLogger(); - - logger.info(String.format("Creating snapshot of server %s (%s) with name %s", server.getName(), server.getId(), - snapshotName)); - metricsLogger.info(String.format("Creating snapshot of server %s (%s) with name %s", server.getName(), - server.getId(), snapshotName)); - - // Request Snapshot - String msg; - while (rc.attempt()) { - try { - server.createSnapshot(snapshotName); - break; - } catch (ContextConnectionException e) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), service.getURL(), - context.getTenant().getName(), context.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - metricsLogger.error(msg, e); - rc.delay(); - } - } - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Stop Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - rc.reset(); - - // Locate snapshot image - Image snapshot = null; - while (rc.attempt()) { - try { - snapshot = service.getImageByName(snapshotName); - if (snapshot != null) { - break; - } - } catch (ContextConnectionException e) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), service.getURL(), - context.getTenant().getName(), context.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - metricsLogger.error(msg, e); - rc.delay(); - } - } - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Stop Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - rc.reset(); - - // Wait for it to be ready - waitForStateChange(rc, snapshot, Image.Status.ACTIVE); - - return snapshot; - } - - private Image createSnapshot(Map<String, String> params, SvcLogicContext ctx) throws APPCException { - Image snapshot = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); - - setTimeForMetricsLogger(); - - String msg; - try { - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME); - - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - String vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - VMURL vm = VMURL.parseURL(vm_url); - if (validateVM(rc, appName, vm_url, vm)) - return null; - - IdentityURL ident = IdentityURL.parseURL(params.get(ProviderAdapter.PROPERTY_IDENTITY_URL)); - String identStr = (ident == null) ? null : ident.toString(); - - Context context = null; - try { - context = getContext(rc, vm_url, identStr); - if (context != null) { - Server server = lookupServer(rc, context, vm.getServerId()); - logger.debug(Msg.SERVER_FOUND, vm_url, context.getTenantName(), server.getStatus().toString()); - - if (hasImageAccess(rc, context)) { - snapshot = createSnapshot(rc, server); - doSuccess(rc); - } else { - msg = EELFResourceManager.format(Msg.REBUILD_SERVER_FAILED, server.getName(), server.getId(), - "Accessing Image Service Failed"); - logger.error(msg); - metricsLogger.error(msg); - doFailure(rc, HttpStatus.FORBIDDEN_403, msg); - } - context.close(); - } - } catch (ResourceNotFoundException e) { - msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vm_url); - logger.error(msg); - metricsLogger.error(msg, e); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - } catch (Exception e1) { - msg = EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, e1, e1.getClass().getSimpleName(), - Operation.SNAPSHOT_SERVICE.toString(), vm_url, - context == null ? "Unknown" : context.getTenantName()); - logger.error(msg, e1); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - } - } catch (RequestFailedException e) { - doFailure(rc, e.getStatus(), e.getMessage()); - } - return snapshot; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws APPCException { - - setMDC(Operation.SNAPSHOT_SERVICE.toString(), "App-C IaaS Adapter:Snapshot", ADAPTER_NAME); - logOperation(Msg.SNAPSHOTING_SERVER, params, context); - setTimeForMetricsLogger(); - - metricsLogger.info("Executing Provider Operation: Create Snapshot"); - - return createSnapshot(params, context); - } - - private void setTimeForMetricsLogger() { - long startTime = System.currentTimeMillis(); - TimeZone tz = TimeZone.getTimeZone("UTC"); - DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - df.setTimeZone(tz); - long endTime = System.currentTimeMillis(); - long duration = endTime - startTime; - String durationStr = String.valueOf(duration); - String endTimeStrUTC = df.format(new Date()); - MDC.put("EndTimestamp", endTimeStrUTC); - MDC.put("ElapsedTime", durationStr); - MDC.put("TargetEntity", "cdp"); - MDC.put("TargetServiceName", "create snapshot"); - MDC.put("ClassName", "org.onap.appc.adapter.iaas.provider.operation.impl.CreateSnapshot"); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/EvacuateServer.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/EvacuateServer.java deleted file mode 100644 index 7ddcd37e6..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/EvacuateServer.java +++ /dev/null @@ -1,355 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.IdentityURL; -import org.onap.appc.adapter.iaas.impl.ProviderAdapterImpl; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.impl.VMURL; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderServerOperation; -import org.onap.appc.configuration.Configuration; -import org.onap.appc.configuration.ConfigurationFactory; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.i18n.Msg; -import com.att.cdp.exceptions.ContextConnectionException; -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.zones.ComputeService; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.Provider; -import com.att.cdp.zones.model.Hypervisor; -import com.att.cdp.zones.model.Hypervisor.Status; -import com.att.cdp.zones.model.Hypervisor.State; -import com.att.cdp.zones.model.Image; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Server; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.glassfish.grizzly.http.util.HttpStatus; -import org.slf4j.MDC; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.TimeZone; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class EvacuateServer extends ProviderServerOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(EvacuateServer.class); - private static EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - private static final Configuration configuration = ConfigurationFactory.getConfiguration(); - private ProviderAdapterImpl paImpl = null; - - - private void evacuateServer(RequestContext rc, @SuppressWarnings("unused") Server server, String target_host) - throws ZoneException, RequestFailedException { - - Context ctx = server.getContext(); - Provider provider = ctx.getProvider(); - ComputeService service = ctx.getComputeService(); - - /* - * Pending is a bit of a special case. If we find the server is in a pending state, then the provider is in the - * process of changing state of the server. So, lets try to wait a little bit and see if the state settles down - * to one we can deal with. If not, then we have to fail the request. - */ - try { - if (server.getStatus().equals(Server.Status.PENDING)) { - waitForStateChange(rc, server, Server.Status.READY, Server.Status.RUNNING, Server.Status.ERROR, - Server.Status.SUSPENDED, Server.Status.PAUSED); - } - } catch (RequestFailedException e) { - // evacuate is a special case. If the server is still in a Pending state, we want to - // continue with evacuate - logger.info("Evacuate server - ignore RequestFailedException from waitForStateChange() ..."); - } - - SetTimeForMetricsLogger(); - - String msg; - try { - while (rc.attempt()) { - try { - logger.debug("Calling CDP moveServer - server id = " + server.getId()); - service.moveServer(server.getId(), target_host); - // Wait for completion, expecting the server to go to a non pending state - waitForStateChange(rc, server, Server.Status.READY, Server.Status.RUNNING, Server.Status.ERROR, - Server.Status.SUSPENDED, Server.Status.PAUSED); - break; - } catch (ContextConnectionException e) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), service.getURL(), - ctx.getTenant().getName(), ctx.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - metricsLogger.error(msg, e); - rc.delay(); - } - } - - } catch (ZoneException e) { - msg = EELFResourceManager.format(Msg.EVACUATE_SERVER_FAILED, server.getName(), server.getId(), - e.getMessage()); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Evacute Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Evacuate Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - rc.reset(); - } - - - /** - * @see org.onap.appc.adapter.iaas.ProviderAdapter#evacuateServer(java.util.Map, - * org.openecomp.sdnc.sli.SvcLogicContext) - */ - private Server evacuateServer(Map<String, String> params, SvcLogicContext ctx) throws APPCException { - Server server = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); - - SetTimeForMetricsLogger(); - - String msg; - ctx.setAttribute("EVACUATE_STATUS", "ERROR"); - try { - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME); - - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - String vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - VMURL vm = VMURL.parseURL(vm_url); - if (validateVM(rc, appName, vm_url, vm)) - return null; - - IdentityURL ident = IdentityURL.parseURL(params.get(ProviderAdapter.PROPERTY_IDENTITY_URL)); - String identStr = (ident == null) ? null : ident.toString(); - - // retrieve the optional parameters - String rebuild_vm = params.get(ProviderAdapter.PROPERTY_REBUILD_VM); - String targethost_id = params.get(ProviderAdapter.PROPERTY_TARGETHOST_ID); - - Context context = null; - try { - context = getContext(rc, vm_url, identStr); - if (context != null) { - - server = lookupServer(rc, context, vm.getServerId()); - logger.debug(Msg.SERVER_FOUND, vm_url, context.getTenantName(), server.getStatus().toString()); - - // check target host status - if (isComputeNodeDown(context, targethost_id)) { - msg = EELFResourceManager.format(Msg.EVACUATE_SERVER_FAILED, server.getName(), server.getId(), - "Target host " + targethost_id + " status is not UP/ENABLED"); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Evacuate Server", msg, HttpStatus.BAD_REQUEST_400, server); - } - - // save hypervisor name before evacuate - String hypervisor = server.getHypervisor().getHostName(); - - evacuateServer(rc, server, targethost_id); - - server.refreshAll(); - String hypervisor_after_evacuate = server.getHypervisor().getHostName(); - logger.debug("Hostname before evacuate: " + hypervisor + ", After evacuate: " - + hypervisor_after_evacuate); - - // check hypervisor host name after evacuate. If it is unchanged, the evacuate - // failed. - if ((hypervisor != null) && (hypervisor.equals(hypervisor_after_evacuate))) { - msg = EELFResourceManager.format(Msg.EVACUATE_SERVER_FAILED, server.getName(), server.getId(), - "Hypervisor host " + hypervisor - + " after evacuate is the same as before evacuate. Provider (ex. Openstack) recovery actions may be needed."); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Evacuate Server", msg, HttpStatus.INTERNAL_SERVER_ERROR_500, - server); - - } - - // check VM status after evacuate - if (server.getStatus() == Server.Status.ERROR) { - msg = EELFResourceManager.format(Msg.EVACUATE_SERVER_FAILED, server.getName(), server.getId(), - "VM is in ERROR state after evacuate. Provider (ex. Openstack) recovery actions may be needed."); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Evacuate Server", msg, HttpStatus.INTERNAL_SERVER_ERROR_500, - server); - } - - context.close(); - doSuccess(rc); - ctx.setAttribute("EVACUATE_STATUS", "SUCCESS"); - - // If a snapshot exists, do a rebuild to apply the latest snapshot to the - // evacuated server. - // This is the default behavior unless the optional parameter is set to FALSE. - if ((rebuild_vm == null) || !(rebuild_vm.equalsIgnoreCase("false"))) { - List<Image> snapshots = server.getSnapshots(); - if (snapshots == null || snapshots.isEmpty()) { - logger.debug("No snapshots available - skipping rebuild after evacuate"); - } else if (paImpl != null) { - logger.debug("Executing a rebuild after evacuate"); - paImpl.rebuildServer(params, ctx); - // Check error code for rebuild errors. Evacuate had set it to 200 after - // a successful evacuate. Rebuild updates the error code. - String rebuildErrorCode = - ctx.getAttribute(org.onap.appc.Constants.ATTRIBUTE_ERROR_CODE); - if (rebuildErrorCode != null) { - try { - int error_code = Integer.parseInt(rebuildErrorCode); - if (error_code != HttpStatus.OK_200.getStatusCode()) { - logger.debug("Rebuild after evacuate failed - error code=" + error_code - + ", message=" + ctx.getAttribute( - org.onap.appc.Constants.ATTRIBUTE_ERROR_MESSAGE)); - msg = EELFResourceManager.format(Msg.EVACUATE_SERVER_REBUILD_FAILED, - server.getName(), hypervisor, hypervisor_after_evacuate, - ctx.getAttribute(org.onap.appc.Constants.ATTRIBUTE_ERROR_MESSAGE)); - logger.error(msg); - metricsLogger.error(msg); - ctx.setAttribute("EVACUATE_STATUS", "ERROR"); - // update error message while keeping the error code the - // same as before - doFailure(rc, HttpStatus.getHttpStatus(error_code), msg); - } - } catch (NumberFormatException e) { - // ignore - } - } - } - } - - } - } catch (ResourceNotFoundException e) { - msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vm_url); - logger.error(msg); - metricsLogger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - } catch (RequestFailedException e) { - doFailure(rc, e.getStatus(), e.getMessage()); - } catch (Exception e1) { - msg = EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, e1, e1.getClass().getSimpleName(), - Operation.EVACUATE_SERVICE.toString(), vm_url, - context == null ? "Unknown" : context.getTenantName()); - logger.error(msg, e1); - metricsLogger.error(msg, e1); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - } - } catch (RequestFailedException e) { - msg = EELFResourceManager.format(Msg.EVACUATE_SERVER_FAILED, "n/a", "n/a", e.getMessage()); - logger.error(msg); - metricsLogger.error(msg); - doFailure(rc, e.getStatus(), e.getMessage()); - } - - return server; - } - - /* - * Check if a Compute node is down. - * - * This method attempts to find a given host in the list of hypervisors for a given context. The only case where a - * node is considered down is if a matching hypervisor is found and it's state and status are not UP/ENABLED. - * - * @param context The current context - * - * @param host The host name (short or fully qualified) of a compute node - * - * @return true if the node is determined as down, false for all other cases - */ - private boolean isComputeNodeDown(Context context, String host) throws ZoneException { - ComputeService service = context.getComputeService(); - boolean node_down = false; - - // Check host status. A node is considered down only if a matching target host is - // found and it's state/status is not UP/ENABLED. - if ((host != null) && !(host.isEmpty())) { - List<Hypervisor> hypervisors = service.getHypervisors(); - logger.debug("List of Hypervisors retrieved: " + Arrays.toString(hypervisors.toArray())); - for (Hypervisor h : hypervisors) { - if (h.getHostName().startsWith(host)) { - // host matches one of the hypervisors - State hstate = h.getState(); - Status hstatus = h.getStatus(); - logger.debug("Host matching hypervisor: " + h.getHostName() + ", State/Status: " + hstate.toString() - + "/" + hstatus.toString()); - if (hstate != State.UP || hstatus != Status.ENABLED) { - node_down = true; - } - } - } - } - return node_down; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws APPCException { - setMDC(Operation.EVACUATE_SERVICE.toString(), "App-C IaaS Adapter:Evacuate", ADAPTER_NAME); - logOperation(Msg.EVACUATING_SERVER, params, context); - - SetTimeForMetricsLogger(); - - metricsLogger.info("Executing Provider Operation: Evacuate"); - return evacuateServer(params, context); - } - - private void SetTimeForMetricsLogger() { - long startTime = System.currentTimeMillis(); - TimeZone tz = TimeZone.getTimeZone("UTC"); - DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - df.setTimeZone(tz); - long endTime = System.currentTimeMillis(); - long duration = endTime - startTime; - String durationStr = String.valueOf(duration); - String endTimeStrUTC = df.format(new Date()); - MDC.put("EndTimestamp", endTimeStrUTC); - MDC.put("ElapsedTime", durationStr); - MDC.put("TargetEntity", "cdp"); - MDC.put("TargetServiceName", "evacuate server"); - MDC.put("ClassName", "org.onap.appc.adapter.iaas.provider.operation.impl.EvacuateServer"); - } - - public void setProvideAdapterRef(ProviderAdapterImpl pai) { - paImpl = pai; - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/LookupServer.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/LookupServer.java deleted file mode 100644 index 924322d1f..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/LookupServer.java +++ /dev/null @@ -1,121 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.impl.VMURL; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderServerOperation; -import org.onap.appc.configuration.Configuration; -import org.onap.appc.configuration.ConfigurationFactory; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.i18n.Msg; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Server; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.glassfish.grizzly.http.util.HttpStatus; -import java.io.IOException; -import java.util.Map; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class LookupServer extends ProviderServerOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(EvacuateServer.class); - private static final Configuration configuration = ConfigurationFactory.getConfiguration(); - - - public Server lookupServer(Map<String, String> params, SvcLogicContext ctx) throws APPCException { - Server server = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); // should we test the return and fail if false? - - String vm_url = null; - try { - // process vm_url - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME); - - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - VMURL vm = VMURL.parseURL(vm_url); - if (validateVM(rc, appName, vm_url, vm)) { - return null; - } - - // use try with resource to ensure context is closed (returned to pool) - try (Context context = resolveContext(rc, params, appName, vm_url)) { - // resloveContext & getContext call doFailure and log errors before returning null - if (context != null) { - rc.reset(); - server = lookupServer(rc, context, vm.getServerId()); - logger.debug(Msg.SERVER_FOUND, vm_url, context.getTenantName(), server.getStatus().toString()); - ctx.setAttribute("serverFound", "success"); - String msg = EELFResourceManager.format(Msg.SUCCESS_EVENT_MESSAGE, "LookupServer", vm_url); - ctx.setAttribute(org.onap.appc.Constants.ATTRIBUTE_SUCCESS_MESSAGE, msg); - doSuccess(rc); - } - } catch (ZoneException e) { - // server not found - String msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vm_url); - logger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - ctx.setAttribute("serverFound", "failure"); - } catch (IOException e) { - // exception closing context - String msg = EELFResourceManager.format(Msg.CLOSE_CONTEXT_FAILED, e, vm_url); - logger.error(msg); - } catch (Exception e1) { - String msg = EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, e1, - e1.getClass().getSimpleName(), Operation.LOOKUP_SERVICE.toString(), vm_url, "Unknown"); - logger.error(msg, e1); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - } - - } catch (RequestFailedException e) { - // parameters not valid, unable to connect to provider - String msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vm_url); - logger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - ctx.setAttribute("serverFound", "failure"); - } - return server; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws APPCException { - setMDC(Operation.LOOKUP_SERVICE.toString(), "App-C IaaS Adapter:LookupServer", ADAPTER_NAME); - logOperation(Msg.LOOKING_SERVER_UP, params, context); - return lookupServer(params, context); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/MigrateServer.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/MigrateServer.java deleted file mode 100644 index b28918c09..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/MigrateServer.java +++ /dev/null @@ -1,240 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import com.att.cdp.exceptions.ContextConnectionException; -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.zones.ComputeService; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Server; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.glassfish.grizzly.http.util.HttpStatus; -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.IdentityURL; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.impl.VMURL; -import org.onap.appc.adapter.iaas.provider.operation.common.constants.Property; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderServerOperation; -import org.onap.appc.configuration.Configuration; -import org.onap.appc.configuration.ConfigurationFactory; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.i18n.Msg; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.slf4j.MDC; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Collection; -import java.util.Date; -import java.util.Map; -import java.util.TimeZone; -import static org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation.MIGRATE_SERVICE; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class MigrateServer extends ProviderServerOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(EvacuateServer.class); - private static EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - private static final Configuration configuration = ConfigurationFactory.getConfiguration(); - - /** - * A list of valid initial VM statuses for a migrate operations - */ - private final Collection<Server.Status> migratableStatuses = - Arrays.asList(Server.Status.READY, Server.Status.RUNNING, Server.Status.SUSPENDED); - - - private String getConnectionExceptionMessage(RequestContext rc, Context ctx, ContextConnectionException e) - throws ZoneException { - return EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, ctx.getProvider().getName(), - ctx.getComputeService().getURL(), ctx.getTenant().getName(), ctx.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - } - - private void migrateServer(RequestContext rc, Server server, SvcLogicContext svcCtx) - throws ZoneException, RequestFailedException { - String msg; - Context ctx = server.getContext(); - ComputeService service = ctx.getComputeService(); - - // Init status will equal final status - Server.Status initialStatus = server.getStatus(); - - if (initialStatus == null) { - throw new ZoneException("Failed to determine server's starting status"); - } - - // We can only migrate certain statuses - if (!migratableStatuses.contains(initialStatus)) { - throw new ZoneException(String.format("Cannot migrate server that is in %s state. Must be in one of [%s]", - initialStatus, migratableStatuses)); - } - - setTimeForMetricsLogger(); - - // Is the skip Hypervisor check attribute populated? - String skipHypervisorCheck = configuration.getProperty(Property.SKIP_HYPERVISOR_CHECK); - if (skipHypervisorCheck == null && svcCtx != null) { - skipHypervisorCheck = svcCtx.getAttribute(ProviderAdapter.SKIP_HYPERVISOR_CHECK); - } - - // Always perform Hypervisor check - // unless the skip is set to true - if (skipHypervisorCheck == null || (!skipHypervisorCheck.equalsIgnoreCase("true"))) { - // Check of the Hypervisor for the VM Server is UP and reachable - checkHypervisor(server); - } - - boolean inConfirmPhase = false; - try { - while (rc.attempt()) { - try { - if (!inConfirmPhase) { - // Initial migrate request - service.migrateServer(server.getId()); - // Wait for change to verify resize - waitForStateChange(rc, server, Server.Status.READY); - inConfirmPhase = true; - } - - // Verify resize - service.processResize(server); - // Wait for complete. will go back to init status - waitForStateChange(rc, server, initialStatus); - logger.info("Completed migrate request successfully"); - metricsLogger.info("Completed migrate request successfully"); - return; - } catch (ContextConnectionException e) { - msg = getConnectionExceptionMessage(rc, ctx, e); - logger.error(msg, e); - metricsLogger.error(msg, e); - rc.delay(); - } - } - } catch (ZoneException e) { - String phase = inConfirmPhase ? "VERIFY MIGRATE" : "REQUEST MIGRATE"; - msg = EELFResourceManager.format(Msg.MIGRATE_SERVER_FAILED, server.getName(), server.getId(), phase, - e.getMessage()); - generateEvent(rc, false, msg); - logger.error(msg, e); - metricsLogger.error(msg, e); - throw new RequestFailedException("Migrate Server", msg, HttpStatus.METHOD_NOT_ALLOWED_405, server); - } - } - - /** - * @see org.onap.appc.adapter.iaas.ProviderAdapter#migrateServer(java.util.Map, - * org.openecomp.sdnc.sli.SvcLogicContext) - */ - private Server migrateServer(Map<String, String> params, SvcLogicContext ctx) throws APPCException { - Server server = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); - - setTimeForMetricsLogger(); - - String msg; - try { - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME); - String vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - VMURL vm = VMURL.parseURL(vm_url); - if (validateVM(rc, appName, vm_url, vm)) - return null; - - IdentityURL ident = IdentityURL.parseURL(params.get(ProviderAdapter.PROPERTY_IDENTITY_URL)); - String identStr = (ident == null) ? null : ident.toString(); - - Context context = null; - try { - context = getContext(rc, vm_url, identStr); - if (context != null) { - server = lookupServer(rc, context, vm.getServerId()); - logger.debug(Msg.SERVER_FOUND, vm_url, context.getTenantName(), server.getStatus().toString()); - migrateServer(rc, server, ctx); - server.refreshStatus(); - context.close(); - doSuccess(rc); - } - } catch (RequestFailedException e) { - doFailure(rc, e.getStatus(), e.getMessage()); - } catch (ResourceNotFoundException e) { - msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vm_url); - logger.error(msg); - metricsLogger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - } catch (Exception e1) { - msg = EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, e1, e1.getClass().getSimpleName(), - MIGRATE_SERVICE.toString(), vm_url, context == null ? "Unknown" : context.getTenantName()); - logger.error(msg, e1); - metricsLogger.error(msg); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - } - } catch (RequestFailedException e) { - doFailure(rc, e.getStatus(), e.getMessage()); - } - - return server; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws APPCException { - setMDC(Operation.MIGRATE_SERVICE.toString(), "App-C IaaS Adapter:Migrate", ADAPTER_NAME); - logOperation(Msg.MIGRATING_SERVER, params, context); - - setTimeForMetricsLogger(); - - metricsLogger.info("Executing Provider Operation: Migrate"); - - return migrateServer(params, context); - } - - private void setTimeForMetricsLogger() { - long startTime = System.currentTimeMillis(); - TimeZone tz = TimeZone.getTimeZone("UTC"); - DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - df.setTimeZone(tz); - long endTime = System.currentTimeMillis(); - long duration = endTime - startTime; - String durationStr = String.valueOf(duration); - String endTimeStrUTC = df.format(new Date()); - MDC.put("EndTimestamp", endTimeStrUTC); - MDC.put("ElapsedTime", durationStr); - MDC.put("TargetEntity", "cdp"); - MDC.put("TargetServiceName", "migrate server"); - MDC.put("ClassName", "org.onap.appc.adapter.iaas.provider.operation.impl.MigrateServer"); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/RebuildServer.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/RebuildServer.java deleted file mode 100644 index a2b27f29a..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/RebuildServer.java +++ /dev/null @@ -1,434 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import com.att.cdp.exceptions.ContextConnectionException; -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.zones.ComputeService; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.ImageService; -import com.att.cdp.zones.Provider; -import com.att.cdp.zones.model.Image; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Server; -import com.att.cdp.zones.model.ServerBootSource; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.glassfish.grizzly.http.util.HttpStatus; -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.IdentityURL; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.impl.VMURL; -import org.onap.appc.adapter.iaas.provider.operation.common.constants.Property; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Outcome; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderServerOperation; -import org.onap.appc.configuration.Configuration; -import org.onap.appc.configuration.ConfigurationFactory; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.i18n.Msg; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.slf4j.MDC; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.TimeZone; -import static org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation.STOP_SERVICE; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class RebuildServer extends ProviderServerOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(RebuildServer.class); - private static EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - private static final Configuration configuration = ConfigurationFactory.getConfiguration(); - - /** - * Rebuild the indicated server with the indicated image. This method assumes the server has been determined to be - * in the correct state to do the rebuild. - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param server the server to be rebuilt - * @param image The image to be used (or snapshot) - * @throws RequestFailedException if the server does not change state in the allotted time - */ - @SuppressWarnings("nls") - private void rebuildServer(RequestContext rc, Server server, String image) throws RequestFailedException { - logger.debug(Msg.REBUILD_SERVER, server.getId()); - - String msg; - Context context = server.getContext(); - Provider provider = context.getProvider(); - ComputeService service = context.getComputeService(); - - /* - * Set Time for Metrics Logger - */ - setTimeForMetricsLogger(); - - try { - while (rc.attempt()) { - try { - server.rebuild(image); - break; - } catch (ContextConnectionException e) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), service.getURL(), - context.getTenant().getName(), context.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - metricsLogger.error(msg, e); - rc.delay(); - } - } - - /* - * We need to provide some time for OpenStack to start processing the request. - */ - try { - Thread.sleep(10L * 1000L); - } catch (InterruptedException e) { - logger.trace("Sleep threw interrupted exception, should never occur"); - metricsLogger.trace("Sleep threw interrupted exception, should never occur"); - } - } catch (ZoneException e) { - msg = EELFResourceManager.format(Msg.REBUILD_SERVER_FAILED, server.getName(), server.getId(), - e.getMessage()); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Rebuild Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - - rc.reset(); - /* - * Once we have started the process, now we wait for the final state of stopped. This should be the final state - * (since we started the rebuild with the server stopped). - */ - waitForStateChange(rc, server, Server.Status.READY); - - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Rebuild Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - rc.reset(); - } - - /** - * This method is called to rebuild the provided server. - * <p> - * If the server was booted from a volume, then the request is failed immediately and no action is taken. Rebuilding - * a VM from a bootable volume, where the bootable volume itself is not rebuilt, serves no purpose. - * </p> - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param server The server to be rebuilt - * @throws ZoneException When error occurs - * @throws RequestFailedException When server status is error - */ - @SuppressWarnings("nls") - private void rebuildServer(RequestContext rc, Server server, SvcLogicContext ctx) - throws ZoneException, RequestFailedException { - ServerBootSource builtFrom = server.getBootSource(); - - /* - * Set Time for Metrics Logger - */ - setTimeForMetricsLogger(); - - String msg; - // Throw exception for non image/snap boot source - if (ServerBootSource.VOLUME.equals(builtFrom)) { - msg = String.format("Rebuilding is currently not supported for servers built from bootable volumes [%s]", - server.getId()); - generateEvent(rc, false, msg); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Rebuild Server", msg, HttpStatus.FORBIDDEN_403, server); - } - - /* - * Pending is a bit of a special case. If we find the server is in a pending state, then the provider is in the - * process of changing state of the server. So, lets try to wait a little bit and see if the state settles down - * to one we can deal with. If not, then we have to fail the request. - */ - Context context = server.getContext(); - Provider provider = context.getProvider(); - ComputeService service = context.getComputeService(); - if (server.getStatus().equals(Server.Status.PENDING)) { - rc.reset(); - waitForStateChange(rc, server, Server.Status.READY, Server.Status.RUNNING, Server.Status.ERROR, - Server.Status.SUSPENDED, Server.Status.PAUSED); - } - - // Is the skip Hypervisor check attribute populated? - String skipHypervisorCheck = configuration.getProperty(Property.SKIP_HYPERVISOR_CHECK); - if (skipHypervisorCheck == null && ctx != null) { - skipHypervisorCheck = ctx.getAttribute(ProviderAdapter.SKIP_HYPERVISOR_CHECK); - } - - // Always perform Hypervisor Status checks - // unless the skip is set to true - if (skipHypervisorCheck == null || (!skipHypervisorCheck.equalsIgnoreCase("true"))) { - // Check of the Hypervisor for the VM Server is UP and reachable - checkHypervisor(server); - } - - /* - * Get the image to use. This is determined by the presence or absence of snapshot images. If any snapshots - * exist, then the latest snapshot is used, otherwise the image used to construct the VM is used. - */ - List<Image> snapshots = server.getSnapshots(); - String imageToUse; - if (snapshots != null && !snapshots.isEmpty()) { - imageToUse = snapshots.get(0).getId(); - } else { - imageToUse = server.getImage(); - ImageService imageService = server.getContext().getImageService(); - rc.reset(); - try { - while (rc.attempt()) { - try { - /* - * We are just trying to make sure that the image exists. We arent interested in the details at - * this point. - */ - imageService.getImage(imageToUse); - break; - } catch (ContextConnectionException e) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), - imageService.getURL(), context.getTenant().getName(), context.getTenant().getId(), - e.getMessage(), Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - metricsLogger.error(msg); - rc.delay(); - } - } - } catch (ZoneException e) { - msg = EELFResourceManager.format(Msg.IMAGE_NOT_FOUND, imageToUse, "rebuild"); - generateEvent(rc, false, msg); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Rebuild Server", msg, HttpStatus.METHOD_NOT_ALLOWED_405, server); - } - } - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Rebuild Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - rc.reset(); - - /* - * We determine what to do based on the current state of the server - */ - switch (server.getStatus()) { - case DELETED: - // Nothing to do, the server is gone - msg = EELFResourceManager.format(Msg.SERVER_DELETED, server.getName(), server.getId(), - server.getTenantId(), "rebuilt"); - generateEvent(rc, false, msg); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Rebuild Server", msg, HttpStatus.METHOD_NOT_ALLOWED_405, server); - - case RUNNING: - // Attempt to stop the server, then rebuild it - stopServer(rc, server); - rc.reset(); - rebuildServer(rc, server, imageToUse); - rc.reset(); - startServer(rc, server); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - metricsLogger.info("Server status: RUNNING"); - break; - - case ERROR: - msg = EELFResourceManager.format(Msg.SERVER_ERROR_STATE, server.getName(), server.getId(), - server.getTenantId(), "rebuild"); - generateEvent(rc, false, msg); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Rebuild Server", msg, HttpStatus.METHOD_NOT_ALLOWED_405, server); - - case READY: - // Attempt to rebuild the server - rebuildServer(rc, server, imageToUse); - rc.reset(); - startServer(rc, server); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - metricsLogger.info("Server status: READY"); - break; - - case PAUSED: - // if paused, un-pause it, stop it, and rebuild it - unpauseServer(rc, server); - rc.reset(); - stopServer(rc, server); - rc.reset(); - rebuildServer(rc, server, imageToUse); - rc.reset(); - startServer(rc, server); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - metricsLogger.info("Server status: PAUSED"); - break; - - case SUSPENDED: - // Attempt to resume the suspended server, stop it, and rebuild it - resumeServer(rc, server); - rc.reset(); - stopServer(rc, server); - rc.reset(); - rebuildServer(rc, server, imageToUse); - rc.reset(); - startServer(rc, server); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - metricsLogger.info("Server status: SUSPENDED"); - break; - - default: - // Hmmm, unknown status, should never occur - msg = EELFResourceManager.format(Msg.UNKNOWN_SERVER_STATE, server.getName(), server.getId(), - server.getTenantId(), server.getStatus().name()); - generateEvent(rc, false, msg); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Rebuild Server", msg, HttpStatus.METHOD_NOT_ALLOWED_405, server); - } - } - - /** - * @see org.onap.appc.adapter.iaas.ProviderAdapter#rebuildServer(java.util.Map, - * org.openecomp.sdnc.sli.SvcLogicContext) - */ - @SuppressWarnings("nls") - public Server rebuildServer(Map<String, String> params, SvcLogicContext ctx) throws APPCException { - Server server = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); - - setTimeForMetricsLogger(); - - String msg; - try { - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME); - - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - String vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - VMURL vm = VMURL.parseURL(vm_url); - if (validateVM(rc, appName, vm_url, vm)) - return null; - - IdentityURL ident = IdentityURL.parseURL(params.get(ProviderAdapter.PROPERTY_IDENTITY_URL)); - String identStr = (ident == null) ? null : ident.toString(); - ctx.setAttribute("REBUILD_STATUS", "ERROR"); - - Context context = null; - try { - context = getContext(rc, vm_url, identStr); - if (context != null) { - rc.reset(); - server = lookupServer(rc, context, vm.getServerId()); - logger.debug(Msg.SERVER_FOUND, vm_url, context.getTenantName(), server.getStatus().toString()); - - // Manually checking image service until new PAL release - if (hasImageAccess(rc, context)) { - rebuildServer(rc, server, ctx); - doSuccess(rc); - ctx.setAttribute("REBUILD_STATUS", "SUCCESS"); - } else { - msg = EELFResourceManager.format(Msg.REBUILD_SERVER_FAILED, server.getName(), server.getId(), - "Accessing Image Service Failed"); - logger.error(msg); - metricsLogger.error(msg); - doFailure(rc, HttpStatus.FORBIDDEN_403, msg); - } - context.close(); - } else { - ctx.setAttribute("REBUILD_STATUS", "CONTEXT_NOT_FOUND"); - } - } catch (RequestFailedException e) { - doFailure(rc, e.getStatus(), e.getMessage()); - ctx.setAttribute("REBUILD_STATUS", "ERROR"); - } catch (ResourceNotFoundException e) { - msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vm_url); - ctx.setAttribute("REBUILD_STATUS", "ERROR"); - logger.error(msg); - metricsLogger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - } catch (Exception e1) { - msg = EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, e1, e1.getClass().getSimpleName(), - STOP_SERVICE.toString(), vm_url, context == null ? "Unknown" : context.getTenantName()); - ctx.setAttribute("REBUILD_STATUS", "ERROR"); - logger.error(msg, e1); - metricsLogger.error(msg); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - } - } catch (RequestFailedException e) { - doFailure(rc, e.getStatus(), e.getMessage()); - ctx.setAttribute("REBUILD_STATUS", "ERROR"); - } - - return server; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws APPCException { - setMDC(Operation.REBUILD_SERVICE.toString(), "App-C IaaS Adapter:Rebuild", ADAPTER_NAME); - logOperation(Msg.REBUILDING_SERVER, params, context); - - setTimeForMetricsLogger(); - - metricsLogger.info("Executing Provider Operation: Rebuild"); - - return rebuildServer(params, context); - } - - private void setTimeForMetricsLogger() { - long startTime = System.currentTimeMillis(); - TimeZone tz = TimeZone.getTimeZone("UTC"); - DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - df.setTimeZone(tz); - long endTime = System.currentTimeMillis(); - long duration = endTime - startTime; - String durationStr = String.valueOf(duration); - String endTimeStrUTC = df.format(new Date()); - MDC.put("EndTimestamp", endTimeStrUTC); - MDC.put("ElapsedTime", durationStr); - MDC.put("TargetEntity", "cdp"); - MDC.put("TargetServiceName", "rebuild server"); - MDC.put("ClassName", "org.onap.appc.adapter.iaas.provider.operation.impl.RebuildServer"); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/RestartServer.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/RestartServer.java deleted file mode 100644 index cc30ca833..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/RestartServer.java +++ /dev/null @@ -1,275 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Server; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.glassfish.grizzly.http.util.HttpStatus; -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.IdentityURL; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.impl.VMURL; -import org.onap.appc.adapter.iaas.provider.operation.common.constants.Property; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Outcome; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderServerOperation; -import org.onap.appc.exceptions.UnknownProviderException; -import org.onap.appc.i18n.Msg; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.slf4j.MDC; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Map; -import java.util.TimeZone; -import static org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation.RESTART_SERVICE; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class RestartServer extends ProviderServerOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(RestartServer.class); - private static EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - - - /** - * This method handles the case of restarting a server once we have found the server and have obtained the abstract - * representation of the server via the context (i.e., the "Server" object from the CDP-Zones abstraction). - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param server The server object representing the server we want to operate on - * @throws ZoneException when error occurs. - * @throws RequestFailedException when server status is error. - */ - @SuppressWarnings("nls") - private void restartServer(RequestContext rc, Server server, SvcLogicContext ctx) - throws ZoneException, RequestFailedException { - /* - * Pending is a bit of a special case. If we find the server is in a pending state, then the provider is in the - * process of changing state of the server. So, lets try to wait a little bit and see if the state settles down - * to one we can deal with. If not, then we have to fail the request. - */ - String msg; - if (server.getStatus().equals(Server.Status.PENDING)) { - waitForStateChange(rc, server, Server.Status.READY, Server.Status.RUNNING, Server.Status.ERROR, - Server.Status.SUSPENDED, Server.Status.PAUSED); - } - - setTimeForMetricsLogger("restart server"); - - String skipHypervisorCheck = configuration.getProperty(Property.SKIP_HYPERVISOR_CHECK); - if (skipHypervisorCheck == null && ctx != null) { - skipHypervisorCheck = ctx.getAttribute(ProviderAdapter.SKIP_HYPERVISOR_CHECK); - } - - // Always perform Virtual Machine/Hypervisor Status/Network checks - // unless the skip is set to true - if (skipHypervisorCheck == null || (!skipHypervisorCheck.equalsIgnoreCase("true"))) { - // Check of the Hypervisor for the VM Server is UP and reachable - checkHypervisor(server); - } - - /* - * We determine what to do based on the current state of the server - */ - switch (server.getStatus()) { - case DELETED: - // Nothing to do, the server is gone - msg = EELFResourceManager.format(Msg.SERVER_DELETED, server.getName(), server.getId(), - server.getTenantId(), "restarted"); - generateEvent(rc, false, msg); - logger.error(msg); - metricsLogger.error(msg); - break; - - case RUNNING: - // Attempt to stop and start the server - stopServer(rc, server); - startServer(rc, server); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - metricsLogger.info("Server status: RUNNING"); - break; - - case ERROR: - msg = EELFResourceManager.format(Msg.SERVER_ERROR_STATE, server.getName(), server.getId(), - server.getTenantId(), "rebuild"); - generateEvent(rc, false, msg); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Rebuild Server", msg, HttpStatus.METHOD_NOT_ALLOWED_405, server); - - case READY: - // Attempt to start the server - startServer(rc, server); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - metricsLogger.info("Server status: READY"); - break; - - case PAUSED: - // if paused, un-pause it - unpauseServer(rc, server); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - metricsLogger.info("Server status: PAUSED"); - break; - - case SUSPENDED: - // Attempt to resume the suspended server - resumeServer(rc, server); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - metricsLogger.info("Server status: SUSPENDED"); - break; - - default: - // Hmmm, unknown status, should never occur - msg = EELFResourceManager.format(Msg.UNKNOWN_SERVER_STATE, server.getName(), server.getId(), - server.getTenantId(), server.getStatus().name()); - generateEvent(rc, false, msg); - logger.error(msg); - metricsLogger.error(msg); - break; - } - - - } - - /** - * This method is used to restart an existing virtual machine given the fully qualified URL of the machine. - * <p> - * The fully qualified URL contains enough information to locate the appropriate server. The URL is of the form - * - * <pre> - * [scheme]://[host[:port]] / [path] / [tenant_id] / servers / [vm_id] - * </pre> - * - * Where the various parts of the URL can be parsed and extracted and used to locate the appropriate service in the - * provider service catalog. This then allows us to open a context using the CDP abstraction, obtain the server by - * its UUID, and then perform the restart. - * </p> - * - * @throws UnknownProviderException If the provider cannot be found - * @throws IllegalArgumentException if the expected argument(s) are not defined or are invalid - * @see org.onap.appc.adapter.iaas.ProviderAdapter#restartServer(java.util.Map, - * org.openecomp.sdnc.sli.SvcLogicContext) - */ - @SuppressWarnings("nls") - private Server restartServer(Map<String, String> params, SvcLogicContext ctx) - throws UnknownProviderException, IllegalArgumentException { - Server server = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); - - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - - /* - * Set Time for Metrics Logger - */ - setTimeForMetricsLogger("GET server status"); - - ctx.setAttribute("RESTART_STATUS", "ERROR"); - try { - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME); - - String vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - - VMURL vm = VMURL.parseURL(vm_url); - if (validateVM(rc, appName, vm_url, vm)) - return null; - - IdentityURL ident = IdentityURL.parseURL(params.get(ProviderAdapter.PROPERTY_IDENTITY_URL)); - String identStr = (ident == null) ? null : ident.toString(); - - Context context = null; - try { - context = getContext(rc, vm_url, identStr); - if (context != null) { - rc.reset(); - server = lookupServer(rc, context, vm.getServerId()); - logger.debug(Msg.SERVER_FOUND, vm_url, context.getTenantName(), server.getStatus().toString()); - rc.reset(); - restartServer(rc, server, ctx); - context.close(); - doSuccess(rc); - ctx.setAttribute("RESTART_STATUS", "SUCCESS"); - String msg = EELFResourceManager.format(Msg.SUCCESS_EVENT_MESSAGE, "RestartServer", vm_url); - ctx.setAttribute(org.onap.appc.Constants.ATTRIBUTE_SUCCESS_MESSAGE, msg); - } - } catch (RequestFailedException e) { - doFailure(rc, e.getStatus(), e.getMessage()); - } catch (ResourceNotFoundException e) { - String msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vm_url); - logger.error(msg); - metricsLogger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - } catch (Exception e1) { - String msg = EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, e1, - e1.getClass().getSimpleName(), RESTART_SERVICE.toString(), vm_url, - context == null ? "Unknown" : context.getTenantName()); - logger.error(msg, e1); - metricsLogger.error(msg, e1); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - } - } catch (RequestFailedException e) { - doFailure(rc, e.getStatus(), e.getMessage()); - } - - return server; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws UnknownProviderException { - setMDC(RESTART_SERVICE.toString(), "App-C IaaS Adapter:Restart", ADAPTER_NAME); - logOperation(Msg.RESTARTING_SERVER, params, context); - - setTimeForMetricsLogger("execute restart"); - - metricsLogger.info("Executing Provider Operation: Restart"); - - return restartServer(params, context); - } - - private void setTimeForMetricsLogger(String targetServiceName) { - long startTime = System.currentTimeMillis(); - TimeZone tz = TimeZone.getTimeZone("UTC"); - DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - df.setTimeZone(tz); - long endTime = System.currentTimeMillis(); - long duration = endTime - startTime; - String durationStr = String.valueOf(duration); - String endTimeStrUTC = df.format(new Date()); - MDC.put("EndTimestamp", endTimeStrUTC); - MDC.put("ElapsedTime", durationStr); - MDC.put("TargetEntity", "cdp"); - MDC.put("TargetServiceName", targetServiceName); - MDC.put("ClassName", "org.onap.appc.adapter.iaas.provider.operation.impl.RestartServer"); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/RestoreStack.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/RestoreStack.java deleted file mode 100644 index 7eeb23783..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/RestoreStack.java +++ /dev/null @@ -1,151 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.openstack.OpenStackContext; -import com.att.cdp.openstack.connectors.HeatConnector; -import com.att.cdp.openstack.util.ExceptionMapper; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Stack; -import com.att.cdp.zones.spi.RequestState; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import com.woorea.openstack.base.client.OpenStackBaseException; -import com.woorea.openstack.heat.Heat; -import org.glassfish.grizzly.http.util.HttpStatus; -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderStackOperation; -import org.onap.appc.adapter.openstack.heat.SnapshotResource; -import org.onap.appc.adapter.openstack.heat.StackResource; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.i18n.Msg; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import java.util.Map; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class RestoreStack extends ProviderStackOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(RestoreStack.class); - - private void restoreStack(Stack stack, String snapshotId) throws ZoneException, RequestFailedException { - Context context = stack.getContext(); - - OpenStackContext osContext = (OpenStackContext) context; - - final HeatConnector heatConnector = osContext.getHeatConnector(); - ((OpenStackContext) context).refreshIfStale(heatConnector); - - trackRequest(context); - RequestState.put("SERVICE", "Orchestration"); - RequestState.put("SERVICE_URL", heatConnector.getEndpoint()); - - Heat heat = heatConnector.getClient(); - - SnapshotResource snapshotResource = new SnapshotResource(heat); - - try { - - snapshotResource.restore(stack.getName(), stack.getId(), snapshotId).execute(); - - // wait for the snapshot restore - StackResource stackResource = new StackResource(heat); - if (!waitForStack(stack, stackResource, "RESTORE_COMPLETE")) { - throw new RequestFailedException("Snapshot restore failed."); - } - - } catch (OpenStackBaseException e) { - ExceptionMapper.mapException(e); - } - - } - - public Stack restoreStack(Map<String, String> params, SvcLogicContext ctx) - throws IllegalArgumentException, APPCException { - Stack stack = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); - - ctx.setAttribute("SNAPSHOT_STATUS", "STACK_NOT_FOUND"); - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - - String vm_url = null; - Context context = null; - - try { - - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME, ProviderAdapter.PROPERTY_STACK_ID, - ProviderAdapter.PROPERTY_INPUT_SNAPSHOT_ID); - - String stackId = params.get(ProviderAdapter.PROPERTY_STACK_ID); - vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - String snapshotId = params.get(ProviderAdapter.PROPERTY_INPUT_SNAPSHOT_ID); - - context = resolveContext(rc, params, appName, vm_url); - - if (context != null) { - stack = lookupStack(rc, context, stackId); - logger.debug(Msg.STACK_FOUND, vm_url, context.getTenantName(), stack.getStatus().toString()); - logger.info(EELFResourceManager.format(Msg.TERMINATING_STACK, stack.getName())); - restoreStack(stack, snapshotId); - logger.info(EELFResourceManager.format(Msg.TERMINATE_STACK, stack.getName())); - context.close(); - doSuccess(rc); - } else { - ctx.setAttribute(Constants.DG_ATTRIBUTE_STATUS, "failure"); - } - - } catch (ResourceNotFoundException e) { - String msg = EELFResourceManager.format(Msg.STACK_NOT_FOUND, e, vm_url); - logger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg, e); - } catch (RequestFailedException e) { - logger.error(EELFResourceManager.format(Msg.MISSING_PARAMETER_IN_REQUEST, e.getReason(), "restoreStack")); - doFailure(rc, e.getStatus(), e.getMessage(), e); - } catch (Exception e1) { - String msg = EELFResourceManager.format(Msg.STACK_OPERATION_EXCEPTION, e1, e1.getClass().getSimpleName(), - "restoreStack", vm_url, null == context ? "n/a" : context.getTenantName()); - logger.error(msg, e1); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg, e1); - } - return stack; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws APPCException { - setMDC(Operation.RESTORE_STACK.toString(), "App-C IaaS Adapter:Restore-Stack", ADAPTER_NAME); - logOperation(Msg.RESTORING_STACK, params, context); - return restoreStack(params, context); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/SnapshotStack.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/SnapshotStack.java deleted file mode 100644 index bf7ebc755..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/SnapshotStack.java +++ /dev/null @@ -1,193 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.openstack.OpenStackContext; -import com.att.cdp.openstack.connectors.HeatConnector; -import com.att.cdp.openstack.util.ExceptionMapper; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Stack; -import com.att.cdp.zones.spi.RequestState; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import com.woorea.openstack.base.client.OpenStackBaseException; -import com.woorea.openstack.heat.Heat; -import org.glassfish.grizzly.http.util.HttpStatus; -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderStackOperation; -import org.onap.appc.adapter.openstack.heat.SnapshotResource; -import org.onap.appc.adapter.openstack.heat.StackResource; -import org.onap.appc.adapter.openstack.heat.model.CreateSnapshotParams; -import org.onap.appc.adapter.openstack.heat.model.Snapshot; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.i18n.Msg; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.slf4j.MDC; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Map; -import java.util.TimeZone; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class SnapshotStack extends ProviderStackOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(SnapshotStack.class); - private static EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - - - private Snapshot snapshotStack(@SuppressWarnings("unused") RequestContext rc, Stack stack) - throws ZoneException, RequestFailedException { - Snapshot snapshot = new Snapshot(); - Context context = stack.getContext(); - - OpenStackContext osContext = (OpenStackContext) context; - - final HeatConnector heatConnector = osContext.getHeatConnector(); - ((OpenStackContext) context).refreshIfStale(heatConnector); - - trackRequest(context); - RequestState.put("SERVICE", "Orchestration"); - RequestState.put("SERVICE_URL", heatConnector.getEndpoint()); - - Heat heat = heatConnector.getClient(); - - SnapshotResource snapshotResource = new SnapshotResource(heat); - - setTimeForMetricsLogger(); - - try { - - snapshot = snapshotResource.create(stack.getName(), stack.getId(), new CreateSnapshotParams()).execute(); - - // wait for the stack deletion - StackResource stackResource = new StackResource(heat); - if (!waitForStack(stack, stackResource, "SNAPSHOT_COMPLETE")) { - throw new RequestFailedException("Stack Snapshot failed."); - } - - } catch (OpenStackBaseException e) { - ExceptionMapper.mapException(e); - } - - return snapshot; - } - - public Stack snapshotStack(Map<String, String> params, SvcLogicContext ctx) - throws IllegalArgumentException, APPCException { - Stack stack = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); - ctx.setAttribute("SNAPSHOT_STATUS", "STACK_NOT_FOUND"); - - setTimeForMetricsLogger(); - - String vm_url = null; - Context context = null; - try { - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME, ProviderAdapter.PROPERTY_STACK_ID); - - String stackId = params.get(ProviderAdapter.PROPERTY_STACK_ID); - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - context = resolveContext(rc, params, appName, vm_url); - - if (context != null) { - stack = lookupStack(rc, context, stackId); - logger.debug(Msg.STACK_FOUND, vm_url, context.getTenantName(), stack.getStatus().toString()); - logger.info(EELFResourceManager.format(Msg.SNAPSHOTING_STACK, stack.getName())); - metricsLogger.info(EELFResourceManager.format(Msg.SNAPSHOTING_STACK, stack.getName())); - - Snapshot snapshot = snapshotStack(rc, stack); - - ctx.setAttribute(ProviderAdapter.DG_OUTPUT_PARAM_NAMESPACE + ProviderAdapter.PROPERTY_SNAPSHOT_ID, - snapshot.getId()); - - logger.info(EELFResourceManager.format(Msg.STACK_SNAPSHOTED, stack.getName(), snapshot.getId())); - metricsLogger.info(EELFResourceManager.format(Msg.STACK_SNAPSHOTED, stack.getName(), snapshot.getId())); - context.close(); - doSuccess(rc); - } else { - ctx.setAttribute(Constants.DG_ATTRIBUTE_STATUS, "failure"); - } - - } catch (ResourceNotFoundException e) { - String msg = EELFResourceManager.format(Msg.STACK_NOT_FOUND, e, vm_url); - logger.error(msg); - metricsLogger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg, e); - } catch (RequestFailedException e) { - logger.error(EELFResourceManager.format(Msg.MISSING_PARAMETER_IN_REQUEST, e.getReason(), "snapshotStack")); - metricsLogger.error( - EELFResourceManager.format(Msg.MISSING_PARAMETER_IN_REQUEST, e.getReason(), "snapshotStack")); - doFailure(rc, e.getStatus(), e.getMessage(), e); - } catch (Exception e1) { - String msg = EELFResourceManager.format(Msg.STACK_OPERATION_EXCEPTION, e1, e1.getClass().getSimpleName(), - "snapshotStack", vm_url, null == context ? "n/a" : context.getTenantName()); - logger.error(msg, e1); - metricsLogger.error(msg); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg, e1); - } - return stack; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws APPCException { - setMDC(Operation.SNAPSHOT_STACK.toString(), "App-C IaaS Adapter:Snapshot-Stack", ADAPTER_NAME); - logOperation(Msg.SNAPSHOTING_STACK, params, context); - - setTimeForMetricsLogger(); - - metricsLogger.info("Executing Provider Operation: Snapshot Stack"); - - return snapshotStack(params, context); - } - - private void setTimeForMetricsLogger() { - long startTime = System.currentTimeMillis(); - TimeZone tz = TimeZone.getTimeZone("UTC"); - DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - df.setTimeZone(tz); - long endTime = System.currentTimeMillis(); - long duration = endTime - startTime; - String durationStr = String.valueOf(duration); - String endTimeStrUTC = df.format(new Date()); - MDC.put("EndTimestamp", endTimeStrUTC); - MDC.put("ElapsedTime", durationStr); - MDC.put("TargetEntity", "cdp"); - MDC.put("TargetServiceName", "snapshot stack"); - MDC.put("ClassName", "org.onap.appc.adapter.iaas.provider.operation.impl.SnapshotStack"); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/StartServer.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/StartServer.java deleted file mode 100644 index 1dbeacbf3..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/StartServer.java +++ /dev/null @@ -1,184 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.IdentityURL; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.impl.VMURL; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderServerOperation; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.i18n.Msg; -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Server; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.glassfish.grizzly.http.util.HttpStatus; -import java.util.Map; -import static org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation.START_SERVICE; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class StartServer extends ProviderServerOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(StartServer.class); - - /** - * @see org.onap.appc.adapter.iaas.ProviderAdapter#startServer(java.util.Map, - * org.openecomp.sdnc.sli.SvcLogicContext) - */ - @SuppressWarnings("nls") - public Server startServer(Map<String, String> params, SvcLogicContext ctx) throws APPCException { - Server server = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); - - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - - try { - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME); - - String vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - - VMURL vm = VMURL.parseURL(vm_url); - if (validateVM(rc, appName, vm_url, vm)) - return null; - - IdentityURL ident = IdentityURL.parseURL(params.get(ProviderAdapter.PROPERTY_IDENTITY_URL)); - String identStr = (ident == null) ? null : ident.toString(); - - Context context = null; - ctx.setAttribute("START_STATUS", "ERROR"); - try { - context = getContext(rc, vm_url, identStr); - if (context != null) { - rc.reset(); - server = lookupServer(rc, context, vm.getServerId()); - logger.debug(Msg.SERVER_FOUND, vm_url, context.getTenantName(), server.getStatus().toString()); - String msg; - - /* - * We determine what to do based on the current state of the server - */ - - /* - * Pending is a bit of a special case. If we find the server is in a pending state, then the - * provider is in the process of changing state of the server. So, lets try to wait a little bit and - * see if the state settles down to one we can deal with. If not, then we have to fail the request. - */ - - if (server.getStatus().equals(Server.Status.PENDING)) { - waitForStateChange(rc, server, Server.Status.READY, Server.Status.RUNNING, Server.Status.ERROR, - Server.Status.SUSPENDED, Server.Status.PAUSED, Server.Status.DELETED); - } - - switch (server.getStatus()) { - case DELETED: - // Nothing to do, the server is gone - msg = EELFResourceManager.format(Msg.SERVER_DELETED, server.getName(), server.getId(), - server.getTenantId(), "started"); - logger.error(msg); - throw new RequestFailedException("Start Server", msg, HttpStatus.METHOD_NOT_ALLOWED_405, - server); - - case RUNNING: - // Nothing to do, the server is already running - logger.info("Server was already running"); - break; - - case ERROR: - // Server is in error state - msg = EELFResourceManager.format(Msg.SERVER_ERROR_STATE, server.getName(), server.getId(), - server.getTenantId(), "start"); - logger.error(msg); - throw new RequestFailedException("Start Server", msg, HttpStatus.METHOD_NOT_ALLOWED_405, - server); - - case READY: - // Server is stopped attempt to start the server - rc.reset(); - startServer(rc, server); - break; - - case PAUSED: - // if paused, un-pause it - rc.reset(); - unpauseServer(rc, server); - break; - - case SUSPENDED: - // Attempt to resume the suspended server - rc.reset(); - resumeServer(rc, server); - break; - - default: - // Hmmm, unknown status, should never occur - msg = EELFResourceManager.format(Msg.UNKNOWN_SERVER_STATE, server.getName(), server.getId(), - server.getTenantId(), server.getStatus().name()); - generateEvent(rc, false, msg); - logger.error(msg); - throw new RequestFailedException("Start Server", msg, HttpStatus.METHOD_NOT_ALLOWED_405, - server); - } - context.close(); - doSuccess(rc); - ctx.setAttribute("START_STATUS", "SUCCESS"); - } else { - ctx.setAttribute("START_STATUS", "CONTEXT_NOT_FOUND"); - } - } catch (ResourceNotFoundException e) { - String msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vm_url); - logger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - } catch (Exception e1) { - String msg = EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, e1, - e1.getClass().getSimpleName(), START_SERVICE.toString(), vm_url, - context == null ? "Unknown" : context.getTenantName()); - logger.error(msg, e1); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - } - } catch (RequestFailedException e) { - doFailure(rc, e.getStatus(), e.getMessage()); - } - - return server; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws APPCException { - setMDC(Operation.START_SERVICE.toString(), "App-C IaaS Adapter:Start", ADAPTER_NAME); - logOperation(Msg.STARTING_SERVER, params, context); - return startServer(params, context); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/StopServer.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/StopServer.java deleted file mode 100644 index df836b77c..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/StopServer.java +++ /dev/null @@ -1,202 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.IdentityURL; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.impl.VMURL; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Outcome; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderServerOperation; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.i18n.Msg; -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Server; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.glassfish.grizzly.http.util.HttpStatus; -import java.util.Map; -import static org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation.STOP_SERVICE; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class StopServer extends ProviderServerOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(StopServer.class); - private static EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - - /** - * @see org.onap.appc.adapter.iaas.ProviderAdapter#stopServer(java.util.Map, - * org.openecomp.sdnc.sli.SvcLogicContext) - */ - @SuppressWarnings("nls") - public Server stopServer(Map<String, String> params, SvcLogicContext ctx) throws APPCException { - Server server = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); - - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - - try { - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME); - - String vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - ctx.setAttribute("STOP_STATUS", "SUCCESS"); - - VMURL vm = VMURL.parseURL(vm_url); - if (validateVM(rc, appName, vm_url, vm)) - return null; - - IdentityURL ident = IdentityURL.parseURL(params.get(ProviderAdapter.PROPERTY_IDENTITY_URL)); - String identStr = (ident == null) ? null : ident.toString(); - - Context context = null; - ctx.setAttribute("STOP_STATUS", "ERROR"); - try { - context = getContext(rc, vm_url, identStr); - if (context != null) { - rc.reset(); - server = lookupServer(rc, context, vm.getServerId()); - logger.debug(Msg.SERVER_FOUND, vm_url, context.getTenantName(), server.getStatus().toString()); - - String msg; - /* - * We determine what to do based on the current state of the server - */ - - /* - * Pending is a bit of a special case. If we find the server is in a pending state, then the - * provider is in the process of changing state of the server. So, lets try to wait a little bit and - * see if the state settles down to one we can deal with. If not, then we have to fail the request. - */ - - if (server.getStatus().equals(Server.Status.PENDING)) { - waitForStateChange(rc, server, Server.Status.READY, Server.Status.RUNNING, Server.Status.ERROR, - Server.Status.SUSPENDED, Server.Status.PAUSED, Server.Status.DELETED); - } - - switch (server.getStatus()) { - case DELETED: - // Nothing to do, the server is gone - msg = EELFResourceManager.format(Msg.SERVER_DELETED, server.getName(), server.getId(), - server.getTenantId(), "stopped"); - generateEvent(rc, false, msg); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Stop Server", msg, HttpStatus.METHOD_NOT_ALLOWED_405, - server); - - case RUNNING: - // Attempt to stop the server - rc.reset(); - stopServer(rc, server); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - break; - - case ERROR: - // Server is in error state - msg = EELFResourceManager.format(Msg.SERVER_ERROR_STATE, server.getName(), server.getId(), - server.getTenantId(), "stop"); - generateEvent(rc, false, msg); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Stop Server", msg, HttpStatus.METHOD_NOT_ALLOWED_405, - server); - - case READY: - // Nothing to do, the server was already stopped - logger.info("Server was already stopped"); - break; - - case PAUSED: - // if paused, un-pause it and then stop it - rc.reset(); - unpauseServer(rc, server); - rc.reset(); - stopServer(rc, server); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - break; - - case SUSPENDED: - // Attempt to resume the suspended server and after that stop it - rc.reset(); - resumeServer(rc, server); - rc.reset(); - stopServer(rc, server); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - break; - - default: - // Hmmm, unknown status, should never occur - msg = EELFResourceManager.format(Msg.UNKNOWN_SERVER_STATE, server.getName(), server.getId(), - server.getTenantId(), server.getStatus().name()); - generateEvent(rc, false, msg); - logger.error(msg); - metricsLogger.error(msg); - throw new RequestFailedException("Stop Server", msg, HttpStatus.METHOD_NOT_ALLOWED_405, - server); - } - context.close(); - doSuccess(rc); - ctx.setAttribute("STOP_STATUS", "SUCCESS"); - msg = EELFResourceManager.format(Msg.SUCCESS_EVENT_MESSAGE, "StopServer", vm_url); - ctx.setAttribute(org.onap.appc.Constants.ATTRIBUTE_SUCCESS_MESSAGE, msg); - - } else { - ctx.setAttribute("STOP_STATUS", "CONTEXT_NOT_FOUND"); - } - } catch (ResourceNotFoundException e) { - String msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vm_url); - logger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - } catch (Exception e1) { - String msg = - EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, e1, e1.getClass().getSimpleName(), - STOP_SERVICE.toString(), vm_url, context == null ? "Unknown" : context.getTenantName()); - logger.error(msg, e1); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - } - } catch (RequestFailedException e) { - logger.error(EELFResourceManager.format(Msg.STOP_SERVER_FAILED, appName, "n/a", "n/a", e.getMessage())); - doFailure(rc, e.getStatus(), e.getMessage()); - } - - return server; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws APPCException { - setMDC(STOP_SERVICE.toString(), "App-C IaaS Adapter:Stop", ADAPTER_NAME); - logOperation(Msg.STOPPING_SERVER, params, context); - return stopServer(params, context); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/TerminateServer.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/TerminateServer.java deleted file mode 100644 index 73385ee35..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/TerminateServer.java +++ /dev/null @@ -1,245 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import com.att.cdp.exceptions.ContextConnectionException; -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.zones.ComputeService; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.Provider; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Server; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.glassfish.grizzly.http.util.HttpStatus; -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.IdentityURL; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.impl.VMURL; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Outcome; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderServerOperation; -import org.onap.appc.exceptions.UnknownProviderException; -import org.onap.appc.i18n.Msg; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import java.util.Map; -import static org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation.RESTART_SERVICE; -import static org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation.TERMINATE_SERVICE; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class TerminateServer extends ProviderServerOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(EvacuateServer.class); - - /** - * Start the server and wait for it to enter a running state - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param server The server to be started - * @throws ZoneException when error occurs - * @throws RequestFailedException when request failed - */ - @SuppressWarnings("nls") - private void deleteServer(RequestContext rc, Server server) throws ZoneException, RequestFailedException { - String msg; - Context context = server.getContext(); - Provider provider = context.getProvider(); - ComputeService service = context.getComputeService(); - while (rc.attempt()) { - try { - logger.info("deleting SERVER"); - server.delete(); - break; - } catch (ContextConnectionException e) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), service.getURL(), - context.getTenant().getName(), context.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - rc.delay(); - } - } - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - throw new RequestFailedException("Delete Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - rc.reset(); - } - - /** - * This method handles the case of restarting a server once we have found the server and have obtained the abstract - * representation of the server via the context (i.e., the "Server" object from the CDP-Zones abstraction). - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param server The server object representing the server we want to operate on - * @throws ZoneException when error occurs - */ - @SuppressWarnings("nls") - private void terminateServer(RequestContext rc, Server server) throws ZoneException, RequestFailedException { - /* - * Pending is a bit of a special case. If we find the server is in a pending state, then the provider is in the - * process of changing state of the server. So, lets try to wait a little bit and see if the state settles down - * to one we can deal with. If not, then we have to fail the request. - */ - String msg; - if (server.getStatus().equals(Server.Status.PENDING)) { - waitForStateChange(rc, server, Server.Status.READY, Server.Status.RUNNING, Server.Status.ERROR, - Server.Status.SUSPENDED, Server.Status.PAUSED); - } - - /* - * We determine what to do based on the current state of the server - */ - switch (server.getStatus()) { - case DELETED: - // Nothing to do, the server is gone - msg = EELFResourceManager.format(Msg.SERVER_DELETED, server.getName(), server.getId(), - server.getTenantId(), "restarted"); - generateEvent(rc, false, msg); - logger.error(msg); - break; - - case RUNNING: - // Attempt to stop and start the server - logger.info("stopping SERVER"); - stopServer(rc, server); - deleteServer(rc, server); - logger.info("after delete SERVER"); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - break; - - case ERROR: - - case READY: - - case PAUSED: - - case SUSPENDED: - // Attempt to delete the suspended server - deleteServer(rc, server); - generateEvent(rc, true, Outcome.SUCCESS.toString()); - break; - - default: - // Hmmm, unknown status, should never occur - msg = EELFResourceManager.format(Msg.UNKNOWN_SERVER_STATE, server.getName(), server.getId(), - server.getTenantId(), server.getStatus().name()); - generateEvent(rc, false, msg); - logger.error(msg); - break; - } - - } - - /** - * This method is used to delete an existing virtual machine given the fully qualified URL of the machine. - * <p> - * The fully qualified URL contains enough information to locate the appropriate server. The URL is of the form - * - * <pre> - * [scheme]://[host[:port]] / [path] / [tenant_id] / servers / [vm_id] - * </pre> - * - * Where the various parts of the URL can be parsed and extracted and used to locate the appropriate service in the - * provider service catalog. This then allows us to open a context using the CDP abstraction, obtain the server by - * its UUID, and then perform the restart. - * </p> - * - * @throws UnknownProviderException If the provider cannot be found - * @throws IllegalArgumentException if the expected argument(s) are not defined or are invalid - * @see org.onap.appc.adapter.iaas.ProviderAdapter#terminateServer(java.util.Map, - * org.openecomp.sdnc.sli.SvcLogicContext) - */ - @SuppressWarnings("nls") - public Server terminateServer(Map<String, String> params, SvcLogicContext ctx) - throws UnknownProviderException, IllegalArgumentException { - Server server = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); - - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - - try { - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME); - - String vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - ctx.setAttribute("TERMINATE_STATUS", "SUCCESS"); - - VMURL vm = VMURL.parseURL(vm_url); - if (validateVM(rc, appName, vm_url, vm)) - return null; - - IdentityURL ident = IdentityURL.parseURL(params.get(ProviderAdapter.PROPERTY_IDENTITY_URL)); - String identStr = (ident == null) ? null : ident.toString(); - - Context context = null; - try { - context = getContext(rc, vm_url, identStr); - if (context != null) { - server = lookupServer(rc, context, vm.getServerId()); - logger.debug(Msg.SERVER_FOUND, vm_url, context.getTenantName(), server.getStatus().toString()); - logger.info(EELFResourceManager.format(Msg.TERMINATING_SERVER, server.getName())); - terminateServer(rc, server); - logger.info(EELFResourceManager.format(Msg.TERMINATE_SERVER, server.getName())); - context.close(); - doSuccess(rc); - } else { - ctx.setAttribute("TERMINATE_STATUS", "SERVER_NOT_FOUND"); - } - } catch (ResourceNotFoundException e) { - String msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vm_url); - logger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - ctx.setAttribute("TERMINATE_STATUS", "SERVER_NOT_FOUND"); - } catch (Exception e1) { - String msg = EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, e1, - e1.getClass().getSimpleName(), RESTART_SERVICE.toString(), vm_url, - context == null ? "Unknown" : context.getTenantName()); - logger.error(msg, e1); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - } - } catch (RequestFailedException e) { - logger.error( - EELFResourceManager.format(Msg.TERMINATE_SERVER_FAILED, appName, "n/a", "n/a", e.getMessage())); - doFailure(rc, e.getStatus(), e.getMessage()); - ctx.setAttribute("TERMINATE_STATUS", "ERROR"); - } - - return server; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws UnknownProviderException { - setMDC(TERMINATE_SERVICE.toString(), "App-C IaaS Adapter:Terminate", ADAPTER_NAME); - logOperation(Msg.TERMINATING_SERVER, params, context); - return terminateServer(params, context); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/TerminateStack.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/TerminateStack.java deleted file mode 100644 index 1e3ce1e68..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/TerminateStack.java +++ /dev/null @@ -1,128 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderStackOperation; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.i18n.Msg; -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.StackService; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Stack; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.glassfish.grizzly.http.util.HttpStatus; -import java.util.Map; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class TerminateStack extends ProviderStackOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(EvacuateServer.class); - - private void deleteStack(RequestContext rc, Stack stack) throws ZoneException, RequestFailedException { - SvcLogicContext ctx = rc.getSvcLogicContext(); - Context context = stack.getContext(); - StackService stackService = context.getStackService(); - logger.debug("Deleting Stack: " + "id:{ " + stack.getId() + "}"); - stackService.deleteStack(stack); - - // wait for the stack deletion - boolean success = waitForStackStatus(rc, stack, Stack.Status.DELETED); - if (success) { - ctx.setAttribute("TERMINATE_STATUS", "SUCCESS"); - } else { - ctx.setAttribute("TERMINATE_STATUS", "ERROR"); - throw new RequestFailedException("Delete Stack failure : " + Msg.STACK_OPERATION_EXCEPTION.toString()); - } - } - - @SuppressWarnings("nls") - public Stack terminateStack(Map<String, String> params, SvcLogicContext ctx) - throws IllegalArgumentException, APPCException { - Stack stack = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); - - ctx.setAttribute("TERMINATE_STATUS", "STACK_NOT_FOUND"); - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - - try { - - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME, ProviderAdapter.PROPERTY_STACK_ID); - - String stackId = params.get(ProviderAdapter.PROPERTY_STACK_ID); - String vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - - Context context = resolveContext(rc, params, appName, vm_url); - - try { - if (context != null) { - rc.reset(); - stack = lookupStack(rc, context, stackId); - logger.debug(Msg.STACK_FOUND, vm_url, context.getTenantName(), stack.getStatus().toString()); - logger.info(EELFResourceManager.format(Msg.TERMINATING_STACK, stack.getName())); - deleteStack(rc, stack); - logger.info(EELFResourceManager.format(Msg.TERMINATE_STACK, stack.getName())); - context.close(); - doSuccess(rc); - String msg = EELFResourceManager.format(Msg.SUCCESS_EVENT_MESSAGE, "TerminateStack", vm_url); - ctx.setAttribute(org.onap.appc.Constants.ATTRIBUTE_SUCCESS_MESSAGE, msg); - } - } catch (ResourceNotFoundException e) { - String msg = EELFResourceManager.format(Msg.STACK_NOT_FOUND, e, vm_url); - logger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - } catch (Exception e1) { - String msg = - EELFResourceManager.format(Msg.STACK_OPERATION_EXCEPTION, e1, e1.getClass().getSimpleName(), - Operation.TERMINATE_STACK.toString(), vm_url, context.getTenantName()); - logger.error(msg, e1); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - } - } catch (RequestFailedException e) { - logger.error(EELFResourceManager.format(Msg.TERMINATE_STACK_FAILED, appName, "n/a", "n/a")); - doFailure(rc, e.getStatus(), e.getMessage()); - } - return stack; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws APPCException { - setMDC(Operation.TERMINATE_STACK.toString(), "App-C IaaS Adapter:Terminate-Stack", ADAPTER_NAME); - logOperation(Msg.TERMINATING_STACK, params, context); - return terminateStack(params, context); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/VmStatuschecker.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/VmStatuschecker.java deleted file mode 100644 index 9185e35fc..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/VmStatuschecker.java +++ /dev/null @@ -1,159 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl; - -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Server; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.glassfish.grizzly.http.util.HttpStatus; -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.IdentityURL; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.iaas.impl.VMURL; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Outcome; -import org.onap.appc.adapter.iaas.provider.operation.impl.base.ProviderServerOperation; -import org.onap.appc.configuration.Configuration; -import org.onap.appc.configuration.ConfigurationFactory; -import org.onap.appc.exceptions.UnknownProviderException; -import org.onap.appc.i18n.Msg; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import java.util.Map; -import static org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation.RESTART_SERVICE; -import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - -public class VmStatuschecker extends ProviderServerOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(VmStatuschecker.class); - private static final Configuration configuration = ConfigurationFactory.getConfiguration(); - - /** - * to check the status of the VM - */ - public Server vmStatuschecker(Map<String, String> params, SvcLogicContext ctx) - throws UnknownProviderException, IllegalArgumentException { - Server server = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); - - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - - try { - validateParametersExist(params, ProviderAdapter.PROPERTY_INSTANCE_URL, - ProviderAdapter.PROPERTY_PROVIDER_NAME); - - String vm_url = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); - - VMURL vm = VMURL.parseURL(vm_url); - if (validateVM(rc, appName, vm_url, vm)) - return null; - - IdentityURL ident = IdentityURL.parseURL(params.get(ProviderAdapter.PROPERTY_IDENTITY_URL)); - String identStr = (ident == null) ? null : ident.toString(); - - Context context = null; - try { - context = getContext(rc, vm_url, identStr); - if (context != null) { - server = lookupServer(rc, context, vm.getServerId()); - logger.debug(Msg.SERVER_FOUND, vm_url, context.getTenantName(), server.getStatus().toString()); - - String statusvm; - switch (server.getStatus()) { - case DELETED: - statusvm = "deleted"; - break; - - case RUNNING: - statusvm = "running"; - break; - - case ERROR: - statusvm = "error"; - break; - - case READY: - statusvm = "ready"; - break; - - case PAUSED: - statusvm = "paused"; - break; - - case SUSPENDED: - statusvm = "suspended"; - break; - - case PENDING: - statusvm = "pending"; - break; - - default: - statusvm = "default-unknown state-should never occur"; - break; - } - - - String statusofVM = statusvm; - context.close(); - SvcLogicContext svcLogic = rc.getSvcLogicContext(); - svcLogic.setStatus(Outcome.SUCCESS.toString()); - svcLogic.setAttribute("org.openecomp.statusofvm", statusofVM); - svcLogic.setAttribute(Constants.STATUS_OF_VM, statusofVM); - svcLogic.setAttribute(Constants.ATTRIBUTE_ERROR_CODE, - Integer.toString(HttpStatus.OK_200.getStatusCode())); - } - } catch (ResourceNotFoundException e) { - String msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vm_url); - logger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - } catch (Exception e1) { - String msg = EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, e1, - e1.getClass().getSimpleName(), RESTART_SERVICE.toString(), vm_url, - context == null ? "Unknown" : context.getTenantName()); - logger.error(msg, e1); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - } - } catch (RequestFailedException e) { - doFailure(rc, e.getStatus(), e.getMessage()); - } - - return server; - } - - @Override - protected ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws UnknownProviderException { - setMDC(Operation.VMSTATUSCHECK_SERVICE.toString(), "App-C IaaS Adapter:VmStatusCheck", ADAPTER_NAME); - logOperation(Msg.CHECKING_SERVER, params, context); - return vmStatuschecker(params, context); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/base/ProviderOperation.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/base/ProviderOperation.java deleted file mode 100644 index 2b50dbe8a..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/base/ProviderOperation.java +++ /dev/null @@ -1,453 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl.base; - -import org.onap.appc.adapter.iaas.ProviderAdapter; -import org.onap.appc.adapter.iaas.impl.*; -import org.onap.appc.adapter.iaas.provider.operation.api.IProviderOperation; -import org.onap.appc.adapter.iaas.provider.operation.common.constants.Constants; -import org.onap.appc.adapter.iaas.provider.operation.common.enums.Outcome; -import org.onap.appc.configuration.Configuration; -import org.onap.appc.configuration.ConfigurationFactory; -import org.onap.appc.exceptions.APPCException; -import org.onap.appc.i18n.Msg; -import org.onap.appc.pool.Pool; -import org.onap.appc.pool.PoolExtensionException; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.model.ModelObject; -import com.att.cdp.zones.model.Server; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.glassfish.grizzly.http.util.HttpStatus; -import org.slf4j.MDC; -import java.net.URI; -import java.util.Map; -import java.util.Set; -import java.util.regex.Pattern; -import static org.onap.appc.adapter.iaas.provider.operation.common.constants.Constants.MDC_ADAPTER; -import static org.onap.appc.adapter.iaas.provider.operation.common.constants.Constants.MDC_SERVICE; -import static com.att.eelf.configuration.Configuration.MDC_SERVICE_NAME; - -public abstract class ProviderOperation implements IProviderOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(ProviderOperation.class); - protected static final Configuration configuration = ConfigurationFactory.getConfiguration(); - - public void setProviderCache(Map<String, ProviderCache> providerCache) { - this.providerCache = providerCache; - } - - /** - * A cache of providers that are predefined. - */ - private Map<String /* provider name */, ProviderCache> providerCache; - - - public void setDefaultUser(String defaultUser) { - DEFAULT_USER = defaultUser; - } - - public void setDefaultPass(String defaultPass) { - DEFAULT_PASS = defaultPass; - } - - @Override - public void setDefaultDomain(String defaultDomain) { - DEFAULT_DOMAIN = defaultDomain; - } - - /** - * The username and password to use for dynamically created connections - */ - private static String DEFAULT_USER; - private static String DEFAULT_PASS; - private static String DEFAULT_DOMAIN; - - - /** - * set MDC props - * - * @param service - * @param serviceName - * @param adapterName - */ - protected void setMDC(String service, String serviceName, String adapterName) { - MDC.put(MDC_ADAPTER, adapterName); - MDC.put(MDC_SERVICE, service); - MDC.put(MDC_SERVICE_NAME, serviceName); - } - - /** - * initial log of the operation - * - * @param msg - * @param params - * @param context - */ - protected void logOperation(Msg msg, Map<String, String> params, SvcLogicContext context) { - - String appName = configuration.getProperty(org.onap.appc.Constants.PROPERTY_APPLICATION_NAME); - logger.info(msg, appName); - - debugParameters(params); - debugContext(context); - } - - /** - * This method is used to dump the value of the parameters to the log for debugging purposes. - * - * @param parameters The parameters to be printed to the log - */ - private void debugParameters(Map<String, String> parameters) { - for (String key : parameters.keySet()) { - logger.debug(Msg.PROPERTY_VALUE, key, parameters.get(key)); - } - } - - /** - * This method is used to create a diagnostic dump of the context for the log - * - * @param context The context to be dumped - */ - @SuppressWarnings({"nls", "static-method"}) - private void debugContext(SvcLogicContext context) { - Set<String> keys = context.getAttributeKeySet(); - StringBuilder builder = new StringBuilder(); - - builder.append("Service Logic Context: Status "); - builder.append(Constants.LPAREN); - builder.append(context.getStatus()); - builder.append(Constants.RPAREN); - builder.append(", Attribute count "); - builder.append(Constants.LPAREN); - builder.append(keys == null ? "none" : Integer.toString(keys.size())); - builder.append(Constants.RPAREN); - if (keys != null && !keys.isEmpty()) { - builder.append(Constants.NL); - for (String key : keys) { - String value = context.getAttribute(key); - builder.append("Attribute "); - builder.append(Constants.LPAREN); - builder.append(key); - builder.append(Constants.RPAREN); - builder.append(", value "); - builder.append(Constants.LPAREN); - builder.append(value == null ? "" : value); - builder.append(Constants.RPAREN); - builder.append(Constants.NL); - } - } - - logger.debug(builder.toString()); - } - - - /** - * This method is used to validate that the parameters contain all required property names, and that the values are - * non-null and non-empty strings. We are still not ensured that the value is valid, but at least it exists. - * - * @param parameters The parameters to be checked - * @param propertyNames The list of property names that are required to be present. - * @throws RequestFailedException If the parameters are not valid - */ - protected void validateParametersExist(Map<String, String> parameters, String... propertyNames) - throws RequestFailedException { - boolean success = true; - StringBuilder msg = - new StringBuilder(EELFResourceManager.format(Msg.MISSING_REQUIRED_PROPERTIES, MDC.get(MDC_SERVICE))); - msg.append(Constants.NL); - for (String propertyName : propertyNames) { - String value = parameters.get(propertyName); - if (value == null || value.trim().length() == 0) { - success = false; - msg.append(Constants.QUOTE); - msg.append(propertyName); - msg.append(Constants.QUOTE); - msg.append(Constants.SPACE); - } - } - - if (!success) { - logger.error(msg.toString()); - throw new RequestFailedException("Check Parameters", msg.toString(), HttpStatus.BAD_REQUEST_400, - (Server) null); - } - } - - /** - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param code - * @param message - */ - protected void doFailure(RequestContext rc, HttpStatus code, String message) { - try { - doFailure(rc, code, message, null); - } catch (APPCException ignored) { - /* never happens */} - } - - protected void doFailure(RequestContext rc, HttpStatus code, String message, Throwable cause) throws APPCException { - SvcLogicContext svcLogic = rc.getSvcLogicContext(); - String msg = (message == null) ? code.getReasonPhrase() : message; - if (msg.contains("\n")) { - msg = msg.substring(0, msg.indexOf("\n")); - } - String status; - try { - status = Integer.toString(code.getStatusCode()); - } catch (Exception e) { - status = "500"; - } - svcLogic.setStatus(Outcome.FAILURE.toString()); - svcLogic.setAttribute(org.onap.appc.Constants.ATTRIBUTE_ERROR_CODE, status); - svcLogic.setAttribute(org.onap.appc.Constants.ATTRIBUTE_ERROR_MESSAGE, msg); - - if (null != cause) - throw new APPCException(cause); - } - - /** - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - */ - @SuppressWarnings("static-method") - protected void doSuccess(RequestContext rc) { - SvcLogicContext svcLogic = rc.getSvcLogicContext(); - svcLogic.setStatus(Outcome.SUCCESS.toString()); - svcLogic.setAttribute(org.onap.appc.Constants.ATTRIBUTE_ERROR_CODE, - Integer.toString(HttpStatus.OK_200.getStatusCode())); - } - - protected boolean validateVM(RequestContext rc, String appName, String vm_url, VMURL vm) - throws RequestFailedException { - String msg; - if (vm == null) { - msg = EELFResourceManager.format(Msg.INVALID_SELF_LINK_URL, appName, vm_url); - logger.error(msg); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - return true; - } - validateVMURL(vm); - return false; - } - - protected void validateVMURL(VMURL vm) throws RequestFailedException { - String name = "vm-id"; - if (vm == null) { - throw new RequestFailedException(String.format("The value %s cannot be null.", name)); - } - - // Check that its a good uri - // This will probably never get hit bc of an earlier check while parsing - // the string to a VMURL - try { - // noinspection ResultOfMethodCallIgnored - URI.create(vm.toString()); - } catch (Exception e) { - throw new RequestFailedException( - String.format("The value %s is not well formed [%s].", name, vm.toString())); - } - - // Check the tenant and vmid segments - String patternRegex = "([0-9a-f]{8}(-)?[0-9a-f]{4}(-)?[0-9a-f]{4}(-)?[0-9a-f]{4}(-)?[0-9a-f]{12})"; - Pattern pattern = Pattern.compile(patternRegex, Pattern.CASE_INSENSITIVE); - - if (!pattern.matcher(vm.getTenantId()).matches()) { - throw new RequestFailedException( - String.format("The value %s has an invalid tenantId [%s].", name, vm.getTenantId())); - } - if (!pattern.matcher(vm.getServerId()).matches()) { - throw new RequestFailedException( - String.format("The value %s has an invalid serverId [%s].", name, vm.getServerId())); - } - } - - private ProviderCache createProviderCache(VMURL vm, IdentityURL ident) { - if (vm != null && ident != null) { - ProviderCache cache = new ProviderCache(); - - cache.setIdentityURL(ident.toString()); - cache.setProviderName(ident.toString()); - // cache.setProviderType("OpenStack"); - - TenantCache tenant = cache.addTenant(vm.getTenantId(), null, DEFAULT_USER, DEFAULT_PASS, DEFAULT_DOMAIN); - - // Make sure we could initialize the the cache otherwise return null - if (tenant != null && tenant.isInitialized()) { - return cache; - } - } - return null; - } - - /** - * This method is a general helper method used to locate a server given its fully-qualified self-link URL on a - * supported provider, regardless of region(s), and to return an opened context that can be used to access that - * server. - * - * @param rc The request context that wraps and manages the state of the request - * @param selfLinkURL The fully-qualified self-link URL of the server - * @param providerName The name of the provider to be searched - * @return The context that can be used to access the server, or null if not found. - */ - @SuppressWarnings("nls") - protected Context getContext(RequestContext rc, String selfLinkURL, String providerName) { - VMURL vm = VMURL.parseURL(selfLinkURL); - IdentityURL ident = IdentityURL.parseURL(providerName); - String appName = configuration.getProperty(org.onap.appc.Constants.PROPERTY_APPLICATION_NAME); - - if (vm == null) { - String msg = EELFResourceManager.format(Msg.INVALID_SELF_LINK_URL, appName, selfLinkURL); - logger.error(msg); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - return null; - } - - /* - * Get the cache of tenants and contexts for the named provider, if one exists - */ - ProviderCache cache = providerCache.get(providerName); - - /* - * If one doesn't exist, try and create it. If we have enough information to create it successfully, add it to - * the cache and continue, otherwise fail the request. - */ - if (cache == null) { - if (ident != null) { - cache = createProviderCache(vm, ident); - } - if (cache != null) { - providerCache.put(cache.getProviderName(), cache); - } else { - String msg = EELFResourceManager.format(Msg.UNKNOWN_PROVIDER, providerName, - providerCache.keySet().toString()); - logger.error(msg); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - return null; - } - } - - if (providerName == null) { - logger.debug( - String.format("Using the default provider cache [%s] since no valid identity url was passed in.", - cache.getIdentityURL())); - } - - // get the tenant cache for the vm - String identityURL = cache.getIdentityURL(); - TenantCache tenantCache = cache.getTenant(vm.getTenantId()); - - if (tenantCache == null) { - // no tenantCache matching tenant, add tenant to the provider cache - tenantCache = cache.addTenant(vm.getTenantId(), null, DEFAULT_USER, DEFAULT_PASS, DEFAULT_DOMAIN); - - if (tenantCache == null) { - // tenant not found - String msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, selfLinkURL); - logger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - return null; - } - } - - // reserve the context - String tenantName = tenantCache.getTenantName(); - String tenantId = tenantCache.getTenantId(); - String region = tenantCache.determineRegion(vm); - - if (region != null) { - Pool<Context> pool = tenantCache.getPools().get(region); - - while (rc.attempt()) { - try { - Context context = pool.reserve(); - - /* - * Insert logic here to test the context for connectivity because we may have gotten one from the - * pool that was previously created. - */ - if (context.isStale()) { - context.relogin(); - } - return context; - } catch (PoolExtensionException e) { - String msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, providerName, identityURL, - tenantName, tenantId, e.getMessage(), Long.toString(rc.getRetryDelay()), - Integer.toString(rc.getAttempts()), Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - rc.delay(); - } catch (Exception e) { - String msg = EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, e, - e.getClass().getSimpleName(), "find", selfLinkURL, tenantCache.getTenantName()); - - logger.error(msg, e); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - return null; - } - } - - String msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, providerName, identityURL); - logger.error(msg); - doFailure(rc, HttpStatus.BAD_GATEWAY_502, msg); - return null; - } - - - String msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, selfLinkURL); - logger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); - return null; - } - - protected Context resolveContext(RequestContext rc, Map<String, String> params, String appName, String vm_url) - throws RequestFailedException { - - VMURL vm = VMURL.parseURL(vm_url); - if (vm == null) { - String msg = EELFResourceManager.format(Msg.INVALID_SELF_LINK_URL, appName, vm_url); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); - logger.error(msg); - return null; - } - validateVMURL(vm); - IdentityURL ident = IdentityURL.parseURL(params.get(ProviderAdapter.PROPERTY_IDENTITY_URL)); - String identStr = (ident == null) ? null : ident.toString(); - - return getContext(rc, vm_url, identStr); - - } - - - - protected abstract ModelObject executeProviderOperation(Map<String, String> params, SvcLogicContext context) - throws APPCException; - - @Override - public ModelObject doOperation(Map<String, String> params, SvcLogicContext context) throws APPCException { - - return executeProviderOperation(params, context); - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/base/ProviderServerOperation.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/base/ProviderServerOperation.java deleted file mode 100644 index 9ef82aea2..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/base/ProviderServerOperation.java +++ /dev/null @@ -1,560 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl.base; - -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.impl.*; -import org.onap.appc.i18n.Msg; -import com.att.cdp.exceptions.ContextConnectionException; -import com.att.cdp.exceptions.NotLoggedInException; -import com.att.cdp.exceptions.TimeoutException; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.pal.util.StringHelper; -import com.att.cdp.zones.ComputeService; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.ImageService; -import com.att.cdp.zones.NetworkService; -import com.att.cdp.zones.Provider; -import com.att.cdp.zones.model.Hypervisor; -import com.att.cdp.zones.model.Image; -import com.att.cdp.zones.model.Network; -import com.att.cdp.zones.model.Port; -import com.att.cdp.zones.model.Server; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.glassfish.grizzly.http.util.HttpStatus; -import java.util.ArrayList; -import java.util.List; - -/** - * @since September 29, 2016 - */ -public abstract class ProviderServerOperation extends ProviderOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(ProviderServerOperation.class); - - /** - * Looks up the indicated server using the provided context and returns the server to the caller - * - * @param rc The request context - * @param context The provider context - * @param id The id of the server - * @return The server, or null if there is a problem - * @throws ZoneException If the server cannot be found - * @throws RequestFailedException If the server cannot be found because we cant connect to the provider - */ - @SuppressWarnings("nls") - protected Server lookupServer(RequestContext rc, Context context, String id) - throws ZoneException, RequestFailedException { - ComputeService service = context.getComputeService(); - Server server = null; - String msg; - Provider provider = context.getProvider(); - - while (rc.attempt()) { - try { - server = service.getServer(id); - break; - } catch (ContextConnectionException e) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), service.getURL(), - context.getTenant().getName(), context.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - rc.delay(); - } - } - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - doFailure(rc, HttpStatus.BAD_GATEWAY_502, msg); - throw new RequestFailedException("Lookup Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - return server; - } - - - - /** - * Resume a suspended server and wait for it to enter a running state - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param server The server to be resumed - * @throws ZoneException - * @throws RequestFailedException - */ - @SuppressWarnings("nls") - protected void resumeServer(RequestContext rc, Server server) throws ZoneException, RequestFailedException { - logger.debug(Msg.RESUME_SERVER, server.getId()); - - Context context = server.getContext(); - String msg; - Provider provider = context.getProvider(); - ComputeService service = context.getComputeService(); - while (rc.attempt()) { - try { - server.resume(); - break; - } catch (ContextConnectionException e) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), service.getURL(), - context.getTenant().getName(), context.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - rc.delay(); - } - } - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - throw new RequestFailedException("Resume Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - rc.reset(); - waitForStateChange(rc, server, Server.Status.RUNNING); - } - - - protected boolean hasImageAccess(@SuppressWarnings("unused") RequestContext rc, Context context) { - logger.info("Checking permissions for image service."); - try { - ImageService service = context.getImageService(); - service.getImageByName("CHECK_IMAGE_ACCESS"); - logger.info("Image service is accessible."); - return true; - } catch (ZoneException e) { - logger.warn("Image service could not be accessed. Some operations may fail.", e); - return false; - } - } - - - /** - * Enter a pool-wait loop checking the server state to see if it has entered one of the desired states or not. - * <p> - * This method checks the state of the server periodically for one of the desired states. When the server enters one - * of the desired states, the method returns a successful indication (true). If the server never enters one of the - * desired states within the allocated timeout period, then the method returns a failed response (false). No - * exceptions are thrown from this method. - * </p> - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param image The server to wait on - * @param desiredStates A variable list of desired states, any one of which is allowed. - * @throws RequestFailedException If the request times out or fails for some reason - * @throws NotLoggedInException - */ - @SuppressWarnings("nls") - protected void waitForStateChange(RequestContext rc, Image image, Image.Status... desiredStates) - throws RequestFailedException, NotLoggedInException { - int pollInterval = configuration.getIntegerProperty(Constants.PROPERTY_OPENSTACK_POLL_INTERVAL); - int timeout = configuration.getIntegerProperty(Constants.PROPERTY_SERVER_STATE_CHANGE_TIMEOUT); - Context context = image.getContext(); - Provider provider = context.getProvider(); - ImageService service = context.getImageService(); - String msg; - - long endTime = System.currentTimeMillis() + (timeout * 1000); // - - while (rc.attempt()) { - try { - try { - image.waitForStateChange(pollInterval, timeout, desiredStates); - break; - } catch (TimeoutException e) { - @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") - List<String> list = new ArrayList<>(); - for (Image.Status desiredState : desiredStates) { - list.add(desiredState.name()); - } - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), service.getURL(), - context.getTenant().getName(), context.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - rc.delay(); - } - } catch (ZoneException e) { - List<String> list = new ArrayList<>(); - for (Image.Status desiredState : desiredStates) { - list.add(desiredState.name()); - } - String reason = EELFResourceManager.format(Msg.STATE_CHANGE_EXCEPTION, e.getClass().getSimpleName(), - "server", image.getName(), image.getId(), StringHelper.asList(list), image.getStatus().name(), - e.getMessage()); - logger.error(reason); - logger.error(EELFResourceManager.format(e)); - - // Instead of failing we are going to wait and try again. - // Timeout is reduced by delay time - logger.info(String.format("Retrying in %ds", rc.getRetryDelay())); - rc.delay(); - timeout = (int) (endTime - System.currentTimeMillis()) / 1000; - // throw new RequestFailedException(e, operation, reason, - // HttpStatus.BAD_GATEWAY_502, server); - } - } - - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - throw new RequestFailedException("Waiting for State Change", msg, HttpStatus.BAD_GATEWAY_502, new Server()); - } - rc.reset(); - } - - - /** - * Enter a pool-wait loop checking the server state to see if it has entered one of the desired states or not. - * <p> - * This method checks the state of the server periodically for one of the desired states. When the server enters one - * of the desired states, the method returns a successful indication (true). If the server never enters one of the - * desired states within the allocated timeout period, then the method returns a failed response (false). No - * exceptions are thrown from this method. - * </p> - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param server The server to wait on - * @param desiredStates A variable list of desired states, any one of which is allowed. - * @throws RequestFailedException If the request times out or fails for some reason - */ - @SuppressWarnings("nls") - protected void waitForStateChange(RequestContext rc, Server server, Server.Status... desiredStates) - throws RequestFailedException { - int pollInterval = configuration.getIntegerProperty(Constants.PROPERTY_OPENSTACK_POLL_INTERVAL); - int timeout = configuration.getIntegerProperty(Constants.PROPERTY_SERVER_STATE_CHANGE_TIMEOUT); - Context context = server.getContext(); - Provider provider = context.getProvider(); - ComputeService service = context.getComputeService(); - String msg; - - long endTime = System.currentTimeMillis() + (timeout * 1000); // - - while (rc.attempt()) { - try { - try { - server.waitForStateChange(pollInterval, timeout, desiredStates); - break; - } catch (TimeoutException e) { - @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") - List<String> list = new ArrayList<>(); - for (Server.Status desiredState : desiredStates) { - list.add(desiredState.name()); - } - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), service.getURL(), - context.getTenant().getName(), context.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - rc.delay(); - } - } catch (ZoneException e) { - List<String> list = new ArrayList<>(); - for (Server.Status desiredState : desiredStates) { - list.add(desiredState.name()); - } - String reason = EELFResourceManager.format(Msg.STATE_CHANGE_EXCEPTION, e.getClass().getSimpleName(), - "server", server.getName(), server.getId(), StringHelper.asList(list), - server.getStatus().name(), e.getMessage()); - logger.error(reason); - logger.error(EELFResourceManager.format(e)); - - // Instead of failing we are going to wait and try again. - // Timeout is reduced by delay time - logger.info(String.format("Retrying in %ds", rc.getRetryDelay())); - rc.delay(); - timeout = (int) (endTime - System.currentTimeMillis()) / 1000; - // throw new RequestFailedException(e, operation, reason, - // HttpStatus.BAD_GATEWAY_502, server); - } - } - - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - throw new RequestFailedException("Waiting for State Change", msg, HttpStatus.BAD_GATEWAY_502, server); - } - rc.reset(); - } - - /** - * Stop the specified server and wait for it to stop - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param server The server to be stopped - * @throws ZoneException - * @throws RequestFailedException - */ - @SuppressWarnings("nls") - protected void stopServer(RequestContext rc, Server server) throws ZoneException, RequestFailedException { - logger.debug(Msg.STOP_SERVER, server.getId()); - - String msg; - Context context = server.getContext(); - Provider provider = context.getProvider(); - ComputeService service = context.getComputeService(); - while (rc.attempt()) { - try { - server.stop(); - break; - } catch (ContextConnectionException e) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), service.getURL(), - context.getTenant().getName(), context.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - rc.delay(); - } - } - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - throw new RequestFailedException("Stop Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - rc.reset(); - waitForStateChange(rc, server, Server.Status.READY, Server.Status.ERROR); - } - - /** - * Start the server and wait for it to enter a running state - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param server The server to be started - * @throws ZoneException - * @throws RequestFailedException - */ - @SuppressWarnings("nls") - protected void startServer(RequestContext rc, Server server) throws ZoneException, RequestFailedException { - logger.debug(Msg.START_SERVER, server.getId()); - String msg; - Context context = server.getContext(); - Provider provider = context.getProvider(); - ComputeService service = context.getComputeService(); - while (rc.attempt()) { - try { - server.start(); - break; - } catch (ContextConnectionException e) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), service.getURL(), - context.getTenant().getName(), context.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - rc.delay(); - } - } - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - throw new RequestFailedException("Start Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - rc.reset(); - waitForStateChange(rc, server, Server.Status.RUNNING); - } - - - /** - * Un-Pause a paused server and wait for it to enter a running state - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param server The server to be un-paused - * @throws ZoneException - * @throws RequestFailedException - */ - @SuppressWarnings("nls") - protected void unpauseServer(RequestContext rc, Server server) throws ZoneException, RequestFailedException { - logger.debug(Msg.UNPAUSE_SERVER, server.getId()); - - String msg; - Context context = server.getContext(); - Provider provider = context.getProvider(); - ComputeService service = context.getComputeService(); - while (rc.attempt()) { - try { - server.unpause(); - break; - } catch (ContextConnectionException e) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), service.getURL(), - context.getTenant().getName(), context.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - rc.delay(); - } - } - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), service.getURL()); - logger.error(msg); - throw new RequestFailedException("Unpause Server", msg, HttpStatus.BAD_GATEWAY_502, server); - } - rc.reset(); - waitForStateChange(rc, server, Server.Status.RUNNING, Server.Status.READY); - } - - - /** - * Generates the event indicating what happened - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param success True if the event represents a successful outcome - * @param msg The detailed message - */ - protected void generateEvent(@SuppressWarnings("unused") RequestContext rc, - @SuppressWarnings("unused") boolean success, @SuppressWarnings("unused") String msg) { - // indication to the DG to generate the event? - } - - /** - * Checks if the VM is connected to the Virtual Network and reachable - * - * @param rc The request context that manages the state and recovery of the request for the life of its processing. - * @param server The server object representing the server we want to operate on - * @param context The interface cloud service provider to access services or the object model, or both - * - */ - protected void checkVirtualMachineNetworkStatus(RequestContext rc, Server server, Context context) - throws ZoneException, RequestFailedException { - - logger.info("Performing the VM Server networking status checks..."); - List<Port> ports = server.getPorts(); - - NetworkService netSvc = context.getNetworkService(); - - String msg; - for (Port port : ports) { - - switch (port.getPortState().toString().toUpperCase()) { - /** - * The port is connected, configured, and usable for communication - */ - case "ONLINE": - Network network = netSvc.getNetworkById(port.getNetwork()); - // Subnet subnet = netSvc.getSubnetById(port.getSubnetId()); - if (!network.getStatus().equals(Network.Status.ACTIVE.toString())) { - msg = EELFResourceManager.format(Msg.SERVER_NETWORK_ERROR, server.getName(), port.getId()); - logger.error(msg); - doFailure(rc, HttpStatus.PRECONDITION_FAILED_412, msg); - throw new RequestFailedException("VM Server Network is DOWN", msg.toString(), - HttpStatus.PRECONDITION_FAILED_412, server); - } - break; - - /** - * The port is disconnected or powered-off and cannot be used for communication - */ - case "OFFLINE": - msg = EELFResourceManager.format(Msg.SERVER_NETWORK_ERROR, server.getName(), port.getId()); - logger.error(msg); - doFailure(rc, HttpStatus.PRECONDITION_FAILED_412, msg); - throw new RequestFailedException("VM Server Port status is OFFLINE", msg.toString(), - HttpStatus.PRECONDITION_FAILED_412, server); - - /** - * The port's status is changing because of some event or operation. The final state is yet to be - * determined. - */ - case "PENDING": - msg = EELFResourceManager.format(Msg.SERVER_NETWORK_ERROR, server.getName(), port.getId()); - logger.error(msg); - doFailure(rc, HttpStatus.PRECONDITION_FAILED_412, msg); - throw new RequestFailedException("VM Server Port status is PENDING", msg.toString(), - HttpStatus.PRECONDITION_FAILED_412, server); - - /** - * The port is in an unknown state and cannot be used. - */ - case "UNKNOWN": - msg = EELFResourceManager.format(Msg.SERVER_NETWORK_ERROR, server.getName(), port.getId()); - logger.error(msg); - doFailure(rc, HttpStatus.PRECONDITION_FAILED_412, msg); - throw new RequestFailedException("VM Server Port status is UNKNOWN", msg.toString(), - HttpStatus.PRECONDITION_FAILED_412, server); - } - - } - logger.info("Passed the VM Server the Hypervisor status checks.."); - - } - - /** - * Checks if the VM is connected to the Virtual Network and reachable - * - * @param server The server object representing the server we want to operate on - */ - protected void checkHypervisor(Server server) throws ZoneException, RequestFailedException { - - logger.info("Performing the Hypervisor status checks.."); - - String msg = null; - if (server.getHypervisor() != null && server.getHypervisor().getStatus() != null - && server.getHypervisor().getState() != null) { - String status = null; - String state = null; - - status = server.getHypervisor().getStatus().toString(); - state = server.getHypervisor().getState().toString(); - - if (!status.equals(Hypervisor.Status.ENABLED.toString()) || !state.equals(Hypervisor.State.UP.toString())) { - msg = EELFResourceManager.format(Msg.HYPERVISOR_DOWN_ERROR, server.getHypervisor().getHostName(), - server.getName()); - logger.error(msg.toString()); - - // doFailure(rc, HttpStatus.PRECONDITION_FAILED_412, msg); - throw new RequestFailedException("Hypervisor status DOWN or NOT ENABLED", msg.toString(), - HttpStatus.PRECONDITION_FAILED_412, server); - - } - } else { - msg = EELFResourceManager.format(Msg.HYPERVISOR_STATUS_UKNOWN, server.getName()); - logger.error(msg.toString()); - - throw new RequestFailedException("Unable to determine Hypervisor status", msg.toString(), - HttpStatus.PRECONDITION_FAILED_412, server); - } - - logger.info("Passed the Hypervisor status checks.."); - - } - - /** - * Checks if a Host machine is reachable - * - * @param ipAddress IP Address of the Host Machine. - * @param server The server object representing the Virtual Machine server - * @return boolean - * - */ - /* - * private boolean isHostReachable(String ipAddress) throws IOException { - * - * InetAddress address = InetAddress.getByName(ipAddress); - * - * return address.isReachable(15000); - * - * - * } - */ - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/base/ProviderStackOperation.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/base/ProviderStackOperation.java deleted file mode 100644 index cbf620230..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/provider/operation/impl/base/ProviderStackOperation.java +++ /dev/null @@ -1,194 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.iaas.provider.operation.impl.base; - -import org.onap.appc.Constants; -import org.onap.appc.adapter.iaas.impl.RequestContext; -import org.onap.appc.adapter.iaas.impl.RequestFailedException; -import org.onap.appc.adapter.openstack.heat.StackResource; -import org.onap.appc.i18n.Msg; -import com.att.cdp.exceptions.ContextConnectionException; -import com.att.cdp.exceptions.ResourceNotFoundException; -import com.att.cdp.exceptions.TimeoutException; -import com.att.cdp.exceptions.ZoneException; -import com.att.cdp.zones.Context; -import com.att.cdp.zones.Provider; -import com.att.cdp.zones.StackService; -import com.att.cdp.zones.model.Stack; -import com.att.cdp.zones.spi.AbstractService; -import com.att.cdp.zones.spi.RequestState; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import com.woorea.openstack.base.client.OpenStackBaseException; -import org.glassfish.grizzly.http.util.HttpStatus; -import java.util.List; - -public abstract class ProviderStackOperation extends ProviderOperation { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(ProviderStackOperation.class); - - - protected void trackRequest(Context context, AbstractService.State... states) { - RequestState.clear(); - - if (null == states) - return; - for (AbstractService.State state : states) { - RequestState.put(state.getName(), state.getValue()); - } - - Thread currentThread = Thread.currentThread(); - StackTraceElement[] stack = currentThread.getStackTrace(); - if (stack != null && stack.length > 0) { - int index = 0; - StackTraceElement element; - for (; index < stack.length; index++) { - element = stack[index]; - if ("trackRequest".equals(element.getMethodName())) { //$NON-NLS-1$ - break; - } - } - index++; - - if (index < stack.length) { - element = stack[index]; - RequestState.put(RequestState.METHOD, element.getMethodName()); - RequestState.put(RequestState.CLASS, element.getClassName()); - RequestState.put(RequestState.LINE_NUMBER, Integer.toString(element.getLineNumber())); - RequestState.put(RequestState.THREAD, currentThread.getName()); - RequestState.put(RequestState.PROVIDER, context.getProvider().getName()); - RequestState.put(RequestState.TENANT, context.getTenantName()); - RequestState.put(RequestState.PRINCIPAL, context.getPrincipal()); - } - } - } - - /* - * Changed the 'pollInterval' type as long. Thread.sleep method needs 'long millis' as an argument - */ - private boolean checkStatus(String expectedStatus, long pollInterval, String actualStatus) { - if (actualStatus.toUpperCase().equals(expectedStatus)) { - return true; - } else { - try { - Thread.sleep(pollInterval * 1000); - } catch (InterruptedException ignored) { - } - } - return false; - } - - protected boolean waitForStack(Stack stack, StackResource stackResource, String expectedStatus) - throws OpenStackBaseException, TimeoutException { - int pollInterval = configuration.getIntegerProperty(Constants.PROPERTY_OPENSTACK_POLL_INTERVAL); - int timeout = configuration.getIntegerProperty(Constants.PROPERTY_STACK_STATE_CHANGE_TIMEOUT); - long maxTimeToWait = System.currentTimeMillis() + (long) timeout * 1000; - - while (System.currentTimeMillis() < maxTimeToWait) { - String stackStatus = stackResource.show(stack.getName(), stack.getId()).execute().getStackStatus(); - logger.debug("Stack status : " + stackStatus); - if (stackStatus.toUpperCase().contains("FAILED")) - return false; - if (checkStatus(expectedStatus, pollInterval, stackStatus)) - return true; - } - throw new TimeoutException("Timeout waiting for stack status change"); - } - - protected Stack lookupStack(RequestContext rc, Context context, String id) - throws ZoneException, RequestFailedException { - StackService stackService = context.getStackService(); - Stack stack = null; - String msg; - Provider provider = context.getProvider(); - while (rc.attempt()) { - try { - List<Stack> stackList = stackService.getStacks(); - for (Stack stackObj : stackList) { - if (stackObj.getId().equals(id)) { - stack = stackObj; - break; - } - } - break; - } catch (ContextConnectionException e) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED_RETRY, provider.getName(), stackService.getURL(), - context.getTenant().getName(), context.getTenant().getId(), e.getMessage(), - Long.toString(rc.getRetryDelay()), Integer.toString(rc.getAttempts()), - Integer.toString(rc.getRetryLimit())); - logger.error(msg, e); - rc.delay(); - } - - } - if (rc.isFailed()) { - msg = EELFResourceManager.format(Msg.CONNECTION_FAILED, provider.getName(), stackService.getURL()); - logger.error(msg); - doFailure(rc, HttpStatus.BAD_GATEWAY_502, msg); - throw new RequestFailedException("Lookup Stack", msg, HttpStatus.BAD_GATEWAY_502, stack); - } - - if (stack == null) { - throw new ResourceNotFoundException("Stack not found with Id : {" + id + "}"); - } - return stack; - } - - - protected boolean waitForStackStatus(RequestContext rc, Stack stack, Stack.Status expectedStatus) - throws ZoneException, RequestFailedException { - SvcLogicContext ctx = rc.getSvcLogicContext(); - Context context = stack.getContext(); - StackService stackService = context.getStackService(); - /* - * Changed the 'pollInterval' type as long. Thread.sleep method needs 'long millis' as an argument - */ - long pollInterval = configuration.getIntegerProperty(Constants.PROPERTY_OPENSTACK_POLL_INTERVAL); - int timeout = configuration.getIntegerProperty(Constants.PROPERTY_STACK_STATE_CHANGE_TIMEOUT); - long maxTimeToWait = System.currentTimeMillis() + (long) timeout * 1000; - Stack.Status stackStatus; - while (System.currentTimeMillis() < maxTimeToWait) { - stackStatus = stackService.getStack(stack.getName(), stack.getId()).getStatus(); - logger.debug("Stack status : " + stackStatus.toString()); - if (stackStatus == expectedStatus) { - return true; - } else if (stackStatus == Stack.Status.FAILED) { - return false; - } else { - try { - Thread.sleep(pollInterval * 1000); - } catch (InterruptedException e) { - logger.trace("Sleep threw interrupted exception, should never occur"); - } - } - } - - ctx.setAttribute("TERMINATE_STATUS", "ERROR"); - throw new TimeoutException("Timeout waiting for stack status change"); - - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/SnapshotResource.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/SnapshotResource.java deleted file mode 100644 index 549c7b93b..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/SnapshotResource.java +++ /dev/null @@ -1,75 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat; - -import org.onap.appc.adapter.openstack.heat.model.CreateSnapshotParams; -import org.onap.appc.adapter.openstack.heat.model.Snapshot; -import com.woorea.openstack.base.client.Entity; -import com.woorea.openstack.base.client.HttpMethod; -import com.woorea.openstack.base.client.OpenStackClient; -import com.woorea.openstack.base.client.OpenStackRequest; - - -public class SnapshotResource { - - private final OpenStackClient client; - - public SnapshotResource(OpenStackClient client) { - this.client = client; - } - - public CreateSnapshot create(String stackName, String stackID, CreateSnapshotParams params) { - return new CreateSnapshot(stackName, stackID, params); - } - - public RestoreSnapshot restore(String stackName, String stackID, String snapshotID) { - return new RestoreSnapshot(stackName, stackID, snapshotID); - } - - public ShowSnapshot show(String stackName, String stackID, String snapshotID) { - return new ShowSnapshot(stackName, stackID, snapshotID); - } - - public class CreateSnapshot extends OpenStackRequest<Snapshot> { - public CreateSnapshot(String stackName, String stackID, CreateSnapshotParams params) { - super(client, HttpMethod.POST, "/stacks/" + stackName + "/" + stackID + "/snapshots", Entity.json(params), - Snapshot.class); - } - } - - public class RestoreSnapshot extends OpenStackRequest<Void> { - public RestoreSnapshot(String stackName, String stackID, String snapshotID) { - super(client, HttpMethod.POST, - "/stacks/" + stackName + "/" + stackID + "/snapshots/" + snapshotID + "/restore", null, Void.class); - } - } - - public class ShowSnapshot extends OpenStackRequest<Snapshot> { - public ShowSnapshot(String stackName, String stackID, String snapshotID) { - super(client, HttpMethod.GET, "/stacks/" + stackName + "/" + stackID + "/snapshots/" + snapshotID, null, - Snapshot.class); - } - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/StackResource.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/StackResource.java deleted file mode 100644 index 5add047f7..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/StackResource.java +++ /dev/null @@ -1,53 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat; - -import org.onap.appc.adapter.openstack.heat.model.CreateSnapshotParams; -import org.onap.appc.adapter.openstack.heat.model.Snapshot; -import com.woorea.openstack.base.client.Entity; -import com.woorea.openstack.base.client.HttpMethod; -import com.woorea.openstack.base.client.OpenStackClient; -import com.woorea.openstack.base.client.OpenStackRequest; -import com.woorea.openstack.heat.model.Stack; - - -public class StackResource { - - private final OpenStackClient client; - - public StackResource(OpenStackClient client) { - this.client = client; - } - - public ShowStack show(String stackName, String stackID) { - return new ShowStack(stackName, stackID); - } - - public class ShowStack extends OpenStackRequest<Stack> { - public ShowStack(String stackName, String stackID) { - super(client, HttpMethod.GET, "/stacks/" + stackName + "/" + stackID, null, Stack.class); - } - } -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/CreateSnapshotParams.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/CreateSnapshotParams.java deleted file mode 100644 index 642b85367..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/CreateSnapshotParams.java +++ /dev/null @@ -1,64 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"name"}) -public class CreateSnapshotParams { - - @JsonProperty("name") - private String name; - - /** - * - * @return The name - */ - @JsonProperty("name") - public String getName() { - return name; - } - - /** - * - * @param name The name - */ - @JsonProperty("name") - public void setName(String name) { - this.name = name; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Data.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Data.java deleted file mode 100644 index df662013a..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Data.java +++ /dev/null @@ -1,229 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import javax.validation.Valid; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"status", "name", "stack_user_project_id", "environment", "template", "action", "project_id", "id", - "resources"}) -public class Data { - - @JsonProperty("status") - private String status; - @JsonProperty("name") - private String name; - @JsonProperty("stack_user_project_id") - private String stackUserProjectId; - @JsonProperty("environment") - @Valid - private Environment environment; - @JsonProperty("template") - @Valid - private Template template; - @JsonProperty("action") - private String action; - @JsonProperty("project_id") - private String projectId; - @JsonProperty("id") - private String id; - @JsonProperty("resources") - @Valid - private Resources__ resources; - - /** - * - * @return The status - */ - @JsonProperty("status") - public String getStatus() { - return status; - } - - /** - * - * @param status The status - */ - @JsonProperty("status") - public void setStatus(String status) { - this.status = status; - } - - /** - * - * @return The name - */ - @JsonProperty("name") - public String getName() { - return name; - } - - /** - * - * @param name The name - */ - @JsonProperty("name") - public void setName(String name) { - this.name = name; - } - - /** - * - * @return The stackUserProjectId - */ - @JsonProperty("stack_user_project_id") - public String getStackUserProjectId() { - return stackUserProjectId; - } - - /** - * - * @param stackUserProjectId The stack_user_project_id - */ - @JsonProperty("stack_user_project_id") - public void setStackUserProjectId(String stackUserProjectId) { - this.stackUserProjectId = stackUserProjectId; - } - - /** - * - * @return The environment - */ - @JsonProperty("environment") - public Environment getEnvironment() { - return environment; - } - - /** - * - * @param environment The environment - */ - @JsonProperty("environment") - public void setEnvironment(Environment environment) { - this.environment = environment; - } - - /** - * - * @return The template - */ - @JsonProperty("template") - public Template getTemplate() { - return template; - } - - /** - * - * @param template The template - */ - @JsonProperty("template") - public void setTemplate(Template template) { - this.template = template; - } - - /** - * - * @return The action - */ - @JsonProperty("action") - public String getAction() { - return action; - } - - /** - * - * @param action The action - */ - @JsonProperty("action") - public void setAction(String action) { - this.action = action; - } - - /** - * - * @return The projectId - */ - @JsonProperty("project_id") - public String getProjectId() { - return projectId; - } - - /** - * - * @param projectId The project_id - */ - @JsonProperty("project_id") - public void setProjectId(String projectId) { - this.projectId = projectId; - } - - /** - * - * @return The id - */ - @JsonProperty("id") - public String getId() { - return id; - } - - /** - * - * @param id The id - */ - @JsonProperty("id") - public void setId(String id) { - this.id = id; - } - - /** - * - * @return The resources - */ - @JsonProperty("resources") - public Resources__ getResources() { - return resources; - } - - /** - * - * @param resources The resources - */ - @JsonProperty("resources") - public void setResources(Resources__ resources) { - this.resources = resources; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Environment.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Environment.java deleted file mode 100644 index b5a9ddcad..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Environment.java +++ /dev/null @@ -1,87 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import javax.validation.Valid; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"parameters", "resource_registry"}) -public class Environment { - - @JsonProperty("parameters") - @Valid - private Parameters parameters; - @JsonProperty("resource_registry") - @Valid - private ResourceRegistry resourceRegistry; - - /** - * - * @return The parameters - */ - @JsonProperty("parameters") - public Parameters getParameters() { - return parameters; - } - - /** - * - * @param parameters The parameters - */ - @JsonProperty("parameters") - public void setParameters(Parameters parameters) { - this.parameters = parameters; - } - - /** - * - * @return The resourceRegistry - */ - @JsonProperty("resource_registry") - public ResourceRegistry getResourceRegistry() { - return resourceRegistry; - } - - /** - * - * @param resourceRegistry The resource_registry - */ - @JsonProperty("resource_registry") - public void setResourceRegistry(ResourceRegistry resourceRegistry) { - this.resourceRegistry = resourceRegistry; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Metadata.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Metadata.java deleted file mode 100644 index 08e44b725..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Metadata.java +++ /dev/null @@ -1,45 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - -}) -public class Metadata { - - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Parameters.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Parameters.java deleted file mode 100644 index 8adc97a4f..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Parameters.java +++ /dev/null @@ -1,45 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - -}) -public class Parameters { - - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Properties.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Properties.java deleted file mode 100644 index 0a7605268..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Properties.java +++ /dev/null @@ -1,64 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"size"}) -public class Properties { - - @JsonProperty("size") - private int size; - - /** - * - * @return The size - */ - @JsonProperty("size") - public int getSize() { - return size; - } - - /** - * - * @param size The size - */ - @JsonProperty("size") - public void setSize(int size) { - this.size = size; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/ResourceData.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/ResourceData.java deleted file mode 100644 index fea775c71..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/ResourceData.java +++ /dev/null @@ -1,64 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"backup_id"}) -public class ResourceData { - - @JsonProperty("backup_id") - private String backupId; - - /** - * - * @return The backupId - */ - @JsonProperty("backup_id") - public String getBackupId() { - return backupId; - } - - /** - * - * @param backupId The backup_id - */ - @JsonProperty("backup_id") - public void setBackupId(String backupId) { - this.backupId = backupId; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/ResourceRegistry.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/ResourceRegistry.java deleted file mode 100644 index d15c1c339..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/ResourceRegistry.java +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import javax.validation.Valid; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"resources"}) -public class ResourceRegistry { - - @JsonProperty("resources") - @Valid - private Resources resources; - - /** - * - * @return The resources - */ - @JsonProperty("resources") - public Resources getResources() { - return resources; - } - - /** - * - * @param resources The resources - */ - @JsonProperty("resources") - public void setResources(Resources resources) { - this.resources = resources; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Resources.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Resources.java deleted file mode 100644 index ffa9f0d1a..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Resources.java +++ /dev/null @@ -1,45 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({ - -}) -public class Resources { - - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Resources_.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Resources_.java deleted file mode 100644 index e6889b0a7..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Resources_.java +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import javax.validation.Valid; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"volume"}) -public class Resources_ { - - @JsonProperty("volume") - @Valid - private Volume volume; - - /** - * - * @return The volume - */ - @JsonProperty("volume") - public Volume getVolume() { - return volume; - } - - /** - * - * @param volume The volume - */ - @JsonProperty("volume") - public void setVolume(Volume volume) { - this.volume = volume; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Resources__.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Resources__.java deleted file mode 100644 index c34310556..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Resources__.java +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import javax.validation.Valid; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"volume"}) -public class Resources__ { - - @JsonProperty("volume") - @Valid - private Volume_ volume; - - /** - * - * @return The volume - */ - @JsonProperty("volume") - public Volume_ getVolume() { - return volume; - } - - /** - * - * @param volume The volume - */ - @JsonProperty("volume") - public void setVolume(Volume_ volume) { - this.volume = volume; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Snapshot.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Snapshot.java deleted file mode 100644 index 57c7d5439..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Snapshot.java +++ /dev/null @@ -1,166 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import javax.validation.Valid; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"id", "name", "status", "status_reason", "creation_time", "data"}) -public class Snapshot { - - @JsonProperty("id") - private String id; - @JsonProperty("name") - private String name; - @JsonProperty("status") - private String status; - @JsonProperty("status_reason") - private String statusReason; - @JsonProperty("creation_time") - private String creationTime; - @JsonProperty("data") - @Valid - private Data data; - - /** - * - * @return The id - */ - @JsonProperty("id") - public String getId() { - return id; - } - - /** - * - * @param id The id - */ - @JsonProperty("id") - public void setId(String id) { - this.id = id; - } - - /** - * - * @return The name - */ - @JsonProperty("name") - public String getName() { - return name; - } - - /** - * - * @param name The name - */ - @JsonProperty("name") - public void setName(String name) { - this.name = name; - } - - /** - * - * @return The status - */ - @JsonProperty("status") - public String getStatus() { - return status; - } - - /** - * - * @param status The status - */ - @JsonProperty("status") - public void setStatus(String status) { - this.status = status; - } - - /** - * - * @return The statusReason - */ - @JsonProperty("status_reason") - public String getStatusReason() { - return statusReason; - } - - /** - * - * @param statusReason The status_reason - */ - @JsonProperty("status_reason") - public void setStatusReason(String statusReason) { - this.statusReason = statusReason; - } - - /** - * - * @return The creationTime - */ - @JsonProperty("creation_time") - public String getCreationTime() { - return creationTime; - } - - /** - * - * @param creationTime The creation_time - */ - @JsonProperty("creation_time") - public void setCreationTime(String creationTime) { - this.creationTime = creationTime; - } - - /** - * - * @return The data - */ - @JsonProperty("data") - public Data getData() { - return data; - } - - /** - * - * @param data The data - */ - @JsonProperty("data") - public void setData(Data data) { - this.data = data; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/SnapshotDetails.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/SnapshotDetails.java deleted file mode 100644 index f121ddd70..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/SnapshotDetails.java +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import javax.validation.Valid; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"snapshot"}) -public class SnapshotDetails { - - @JsonProperty("snapshot") - @Valid - private Snapshot snapshot; - - /** - * - * @return The snapshot - */ - @JsonProperty("snapshot") - public Snapshot getSnapshot() { - return snapshot; - } - - /** - * - * @param snapshot The snapshot - */ - @JsonProperty("snapshot") - public void setSnapshot(Snapshot snapshot) { - this.snapshot = snapshot; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/SnapshotRestoreResponse.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/SnapshotRestoreResponse.java deleted file mode 100644 index 482a29f3b..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/SnapshotRestoreResponse.java +++ /dev/null @@ -1,104 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"code", "message", "title"}) -public class SnapshotRestoreResponse { - - @JsonProperty("code") - private String code; - @JsonProperty("message") - private String message; - @JsonProperty("title") - private String title; - - /** - * - * @return The code - */ - @JsonProperty("code") - public String getCode() { - return code; - } - - /** - * - * @param code The code - */ - @JsonProperty("code") - public void setCode(String code) { - this.code = code; - } - - /** - * - * @return The message - */ - @JsonProperty("message") - public String getMessage() { - return message; - } - - /** - * - * @param message The message - */ - @JsonProperty("message") - public void setMessage(String message) { - this.message = message; - } - - /** - * - * @return The title - */ - @JsonProperty("title") - public String getTitle() { - return title; - } - - /** - * - * @param title The title - */ - @JsonProperty("title") - public void setTitle(String title) { - this.title = title; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Template.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Template.java deleted file mode 100644 index 310d711f5..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Template.java +++ /dev/null @@ -1,86 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import javax.validation.Valid; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"heat_template_version", "resources"}) -public class Template { - - @JsonProperty("heat_template_version") - private String heatTemplateVersion; - @JsonProperty("resources") - @Valid - private Resources_ resources; - - /** - * - * @return The heatTemplateVersion - */ - @JsonProperty("heat_template_version") - public String getHeatTemplateVersion() { - return heatTemplateVersion; - } - - /** - * - * @param heatTemplateVersion The heat_template_version - */ - @JsonProperty("heat_template_version") - public void setHeatTemplateVersion(String heatTemplateVersion) { - this.heatTemplateVersion = heatTemplateVersion; - } - - /** - * - * @return The resources - */ - @JsonProperty("resources") - public Resources_ getResources() { - return resources; - } - - /** - * - * @param resources The resources - */ - @JsonProperty("resources") - public void setResources(Resources_ resources) { - this.resources = resources; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Volume.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Volume.java deleted file mode 100644 index 5943ba71b..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Volume.java +++ /dev/null @@ -1,86 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import javax.validation.Valid; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"type", "properties"}) -public class Volume { - - @JsonProperty("type") - private String type; - @JsonProperty("properties") - @Valid - private Properties properties; - - /** - * - * @return The type - */ - @JsonProperty("type") - public String getType() { - return type; - } - - /** - * - * @param type The type - */ - @JsonProperty("type") - public void setType(String type) { - this.type = type; - } - - /** - * - * @return The properties - */ - @JsonProperty("properties") - public Properties getProperties() { - return properties; - } - - /** - * - * @param properties The properties - */ - @JsonProperty("properties") - public void setProperties(Properties properties) { - this.properties = properties; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Volume_.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Volume_.java deleted file mode 100644 index a8df4a7dc..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/openstack/heat/model/Volume_.java +++ /dev/null @@ -1,187 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.openstack.heat.model; - -import javax.annotation.Generated; -import javax.validation.Valid; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import org.apache.commons.lang.builder.ToStringBuilder; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@Generated("org.jsonschema2pojo") -@JsonPropertyOrder({"status", "name", "resource_data", "resource_id", "action", "type", "metadata"}) -public class Volume_ { - - @JsonProperty("status") - private String status; - @JsonProperty("name") - private String name; - @JsonProperty("resource_data") - @Valid - private ResourceData resourceData; - @JsonProperty("resource_id") - private String resourceId; - @JsonProperty("action") - private String action; - @JsonProperty("type") - private String type; - @JsonProperty("metadata") - @Valid - private Metadata metadata; - - /** - * - * @return The status - */ - @JsonProperty("status") - public String getStatus() { - return status; - } - - /** - * - * @param status The status - */ - @JsonProperty("status") - public void setStatus(String status) { - this.status = status; - } - - /** - * - * @return The name - */ - @JsonProperty("name") - public String getName() { - return name; - } - - /** - * - * @param name The name - */ - @JsonProperty("name") - public void setName(String name) { - this.name = name; - } - - /** - * - * @return The resourceData - */ - @JsonProperty("resource_data") - public ResourceData getResourceData() { - return resourceData; - } - - /** - * - * @param resourceData The resource_data - */ - @JsonProperty("resource_data") - public void setResourceData(ResourceData resourceData) { - this.resourceData = resourceData; - } - - /** - * - * @return The resourceId - */ - @JsonProperty("resource_id") - public String getResourceId() { - return resourceId; - } - - /** - * - * @param resourceId The resource_id - */ - @JsonProperty("resource_id") - public void setResourceId(String resourceId) { - this.resourceId = resourceId; - } - - /** - * - * @return The action - */ - @JsonProperty("action") - public String getAction() { - return action; - } - - /** - * - * @param action The action - */ - @JsonProperty("action") - public void setAction(String action) { - this.action = action; - } - - /** - * - * @return The type - */ - @JsonProperty("type") - public String getType() { - return type; - } - - /** - * - * @param type The type - */ - @JsonProperty("type") - public void setType(String type) { - this.type = type; - } - - /** - * - * @return The metadata - */ - @JsonProperty("metadata") - public Metadata getMetadata() { - return metadata; - } - - /** - * - * @param metadata The metadata - */ - @JsonProperty("metadata") - public void setMetadata(Metadata metadata) { - this.metadata = metadata; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/utils/Constants.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/utils/Constants.java deleted file mode 100644 index 6b9602a62..000000000 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/utils/Constants.java +++ /dev/null @@ -1,34 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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.adapter.utils; - - -public class Constants { - - /** - * The name of the adapter - */ - public static final String ADAPTER_NAME = "Appc IaaS Adapter"; -} |