diff options
Diffstat (limited to 'sdc-distribution-client/src/main/java/org/openecomp/sdc/api')
9 files changed, 355 insertions, 105 deletions
diff --git a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/IDistributionClient.java b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/IDistributionClient.java index 620babf..8caf109 100644 --- a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/IDistributionClient.java +++ b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/IDistributionClient.java @@ -22,33 +22,34 @@ package org.openecomp.sdc.api; import java.util.List; -import org.openecomp.sdc.api.consumer.IConfiguration; -import org.openecomp.sdc.api.consumer.IDistributionStatusMessage; -import org.openecomp.sdc.api.consumer.INotificationCallback; +import org.openecomp.sdc.api.consumer.*; +import org.openecomp.sdc.api.consumer.IStatusCallback; import org.openecomp.sdc.api.notification.IArtifactInfo; import org.openecomp.sdc.api.notification.IVfModuleMetadata; import org.openecomp.sdc.api.results.IDistributionClientDownloadResult; import org.openecomp.sdc.api.results.IDistributionClientResult; public interface IDistributionClient { - + /** * Update the configuration of the distribution client <br> - * Updatable configuration parameters are: pollingInterval, pollingTimeout, consumerGroup and relevantArtifactTypes + * Updatable configuration parameters are: pollingInterval, pollingTimeout, + * consumerGroup and relevantArtifactTypes * - * @param newConf - contains updated configuration + * @param newConf + * - contains updated configuration * * @return IDistributionClientResult */ IDistributionClientResult updateConfiguration(IConfiguration newConf); - + /** * Retrieve the configuration of the distribution client <br> * * @return IConfiguration */ IConfiguration getConfiguration(); - + /** * Start distribution client <br> * - start polling notification topic <br> @@ -56,17 +57,17 @@ public interface IDistributionClient { * @return IDistributionClientResult */ IDistributionClientResult start(); - + /** * Stop distribution client <br> * - stop polling notification topic <br> * - unregister topics (via ASDC) <br> - * - delete keys from UEB + * - delete keys from UEB * * @return IDistributionClientResult */ IDistributionClientResult stop(); - + /** * Downloads an artifact from ASDC Catalog <br> * @@ -74,66 +75,136 @@ public interface IDistributionClient { * @return IDistributionClientDownloadResult */ IDistributionClientDownloadResult download(IArtifactInfo artifactInfo); - + /** - * Initialize the distribution client <br> - * - fetch the UEB server list from ASDC <br> - * - create keys in UEB <br> - * - register for topics (via ASDC) <br> - * - set the notification callback <br> - * - * Note: all configuration fields are mandatory. <br> - * Password must be in clear text and not encrypted <br> - * ECOMP-Component MUST store password as SHA-2 (256) hashed with dynamically generated salt value <br> + * Initialize the distribution client <br> + * - fetch the UEB server list from ASDC <br> + * - create keys in UEB <br> + * - register for topics (via ASDC) <br> + * - set the notification callback <br> + * + * Note: all configuration fields are mandatory. <br> + * Password must be in clear text and not encrypted <br> + * ONAP-Component MUST store password as SHA-2 (256) hashed with + * dynamically generated salt value <br> * * @param conf * @param callback * @return IDistributionClientResult */ IDistributionClientResult init(IConfiguration conf, INotificationCallback callback); - - + /** - * Build and publish Distribution Download Status event to Distribution Status Topic + * Initialize the distribution client <br> + * - fetch the UEB server list from ASDC <br> + * - create keys in UEB <br> + * - register for topics (via ASDC) <br> + * - set the notification callback <br> + * + * Note: all configuration fields are mandatory. <br> + * Password must be in clear text and not encrypted <br> + * ONAP-Component MUST store password as SHA-2 (256) hashed with + * dynamically generated salt value <br> + * + * @param conf + * @param notificationCallback + * @param statusCallback + * @return IDistributionClientResult + */ + IDistributionClientResult init(IConfiguration conf, INotificationCallback notificationCallback, + IStatusCallback statusCallback); + + /** + * Build and publish Distribution Download Status event to Distribution + * Status Topic * * @param statusMessage * @return IDistributionClientResult */ IDistributionClientResult sendDownloadStatus(IDistributionStatusMessage statusMessage); - + /** - * Build and publish Distribution Download Status event to Distribution Status Topic With Error Reason. + * Build and publish Distribution Download Status event to Distribution + * Status Topic With Error Reason. * * @param statusMessage * @param errorReason * @return IDistributionClientResult */ IDistributionClientResult sendDownloadStatus(IDistributionStatusMessage statusMessage, String errorReason); + + /** + * Build and publish Distribution Deployment Status event to Distribution + * Status Topic + * + * @param statusMessage + * @return IDistributionClientResult + */ + IDistributionClientResult sendDeploymentStatus(IDistributionStatusMessage statusMessage); + + /** + * Build and publish Distribution Deployment Status event to Distribution + * Status Topic With Error Reason. + * + * @param statusMessage + * @param errorReason + * @return IDistributionClientResult + */ + IDistributionClientResult sendDeploymentStatus(IDistributionStatusMessage statusMessage, String errorReason); + + /** + * Build and publish Distribution Component Status event to Distribution + * Status Topic + * + * @param statusMessage + * @return IDistributionClientResult + */ + IDistributionClientResult sendComponentDoneStatus(IComponentDoneStatusMessage statusMessage); + + /** + * Build and publish Distribution Component Status event to Distribution + * Status Topic With Error Reason. + * + * @param statusMessage + * @param errorReason + * @return IDistributionClientResult + */ + IDistributionClientResult sendComponentDoneStatus(IComponentDoneStatusMessage statusMessage, String errorReason); /** - * Build and publish Distribution Deployment Status event to Distribution Status Topic + * Build and publish Distribution Final Status event to Distribution + * Status Topic * * @param statusMessage * @return IDistributionClientResult */ - IDistributionClientResult sendDeploymentStatus(IDistributionStatusMessage statusMessage); + IDistributionClientResult sendFinalDistrStatus(IFinalDistrStatusMessage statusMessage); + /** - * Build and publish Distribution Deployment Status event to Distribution Status Topic With Error Reason. + * Build and publish Distribution Final Status event to Distribution + * Status Topic With Error Reason. * * @param statusMessage * @param errorReason * @return IDistributionClientResult */ - IDistributionClientResult sendDeploymentStatus(IDistributionStatusMessage statusMessage, String errorReason); + IDistributionClientResult sendFinalDistrStatus(IFinalDistrStatusMessage statusMessage, String errorReason); + - /**This method parses artifact of type VF_MODULES_METADATA payload data .<br> - * Method is deprecated due to VF Module changes. Only backward compatibility is supported.<br> + /** + * This method parses artifact of type VF_MODULES_METADATA payload data + * .<br> + * Method is deprecated due to VF Module changes. Only backward + * compatibility is supported.<br> + * * @param artifactPayload * @return IVfModuleMetadata list */ - @Deprecated + @Deprecated List<IVfModuleMetadata> decodeVfModuleArtifact(byte[] artifactPayload); + + } diff --git a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/asdc/RegistrationRequest.java b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/asdc/RegistrationRequest.java index f6ce949..1e398be 100644 --- a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/asdc/RegistrationRequest.java +++ b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/asdc/RegistrationRequest.java @@ -20,14 +20,37 @@ package org.openecomp.sdc.api.asdc; +import java.util.List; + public class RegistrationRequest { String apiPublicKey; String distrEnvName; - - public RegistrationRequest(String apiPublicKey, String distrEnvName) { + Boolean isConsumerToSdcDistrStatusTopic; + List<String> distEnvEndPoints; + + public RegistrationRequest(String apiPublicKey, String distrEnvName, boolean isConsumerToSdcDistrStatusTopic, List<String> distEnvEndPoints) { this.apiPublicKey = apiPublicKey; this.distrEnvName = distrEnvName; + this.isConsumerToSdcDistrStatusTopic = isConsumerToSdcDistrStatusTopic; + this.distEnvEndPoints = distEnvEndPoints; + } + + public String getApiPublicKey() { + return apiPublicKey; + } + + public String getDistrEnvName() { + return distrEnvName; } - + + public Boolean getIsConsumerToSdcDistrStatusTopic() { + return isConsumerToSdcDistrStatusTopic; + } + + public List<String> getDistEnvEndPoints() { + return distEnvEndPoints; + } + + } diff --git a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IComponentDoneStatusMessage.java b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IComponentDoneStatusMessage.java new file mode 100644 index 0000000..25661bf --- /dev/null +++ b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IComponentDoneStatusMessage.java @@ -0,0 +1,7 @@ +package org.openecomp.sdc.api.consumer; + +public interface IComponentDoneStatusMessage extends IDistributionStatusMessageBasic { + String getComponentName(); + default String getArtifactURL(){return "";} + +} diff --git a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IConfiguration.java b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IConfiguration.java index 19f94df..51d219f 100644 --- a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IConfiguration.java +++ b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IConfiguration.java @@ -24,98 +24,134 @@ import java.util.List; import org.openecomp.sdc.api.notification.INotificationData; public interface IConfiguration { - /**SDC Distribution Engine address. - * Value can be either hostname (with or without port), IP:port or FQDN (Fully Qualified Domain Name). - * * @return SDC Distribution Engine address. - */ - String getAsdcAddress(); - + /** + * SDC Distribution Engine address. Value can be either hostname (with or + * without port), IP:port or FQDN (Fully Qualified Domain Name). * @return + * SDC Distribution Engine address. + */ + String getAsdcAddress(); + + /**SDC Distribution Addresses from ONAP Component + * Values need to be set from impl + */ + List<String> getMsgBusAddress(); + /** * User Name for SDC distribution consumer authentication. + * * @return User Name. */ - String getUser(); - + String getUser(); + /** * User Password for SDC distribution consumer authentication. + * * @return User Password. */ - String getPassword(); - + String getPassword(); + /** - * Distribution Client Polling Interval towards UEB in seconds. - * Can Be reconfigured in runtime. + * Distribution Client Polling Interval towards UEB in seconds. Can Be + * reconfigured in runtime. + * * @return Distribution Client Polling Interval. */ - int getPollingInterval(); - + int getPollingInterval(); + /** - * Distribution Client Timeout in seconds waiting to UEB server response in each fetch interval. - * Can Be reconfigured in runtime. + * Distribution Client Timeout in seconds waiting to UEB server response in + * each fetch interval. Can Be reconfigured in runtime. + * * @return Distribution Client Timeout in seconds. */ - int getPollingTimeout(); - - /** List of artifact types.<br> - * If the service contains any of the artifacts in the list, the callback will be activated. - * Can Be reconfigured in runtime. + int getPollingTimeout(); + + /** + * List of artifact types.<br> + * If the service contains any of the artifacts in the list, the callback + * will be activated. Can Be reconfigured in runtime. + * * @return List of artifact types. */ List<String> getRelevantArtifactTypes(); - + /** - * Returns the consumer group defined for this ECOMP component, if no consumer group is defined return null. + * Returns the consumer group defined for this ECOMP component, if no + * consumer group is defined return null. + * * @return Consumer group. */ String getConsumerGroup(); - + /** - * Returns the environment name (testing, production etc...). - * Can Be reconfigured in runtime. - * @return + * Returns the environment name (testing, production etc...). Can Be + * reconfigured in runtime. + * + * @return */ String getEnvironmentName(); - + /** * Unique ID of ECOMP component instance (e.x INSTAR name). + * * @return */ String getConsumerID(); - + /** - * Return full path to Client's Key Store that contains either CA certificate or the ASDC's public key (e.g /etc/keystore/asdc-client.jks) + * Return full path to Client's Key Store that contains either CA + * certificate or the ASDC's public key (e.g /etc/keystore/asdc-client.jks) * file will be deployed with sdc-distribution jar. + * * @return */ String getKeyStorePath(); - + /** * @return Returns client's Key Store password */ String getKeyStorePassword(); - + /** - * Sets whether SDC server TLS authentication is activated. - * If set to false, Key Store path and password are not needed to be set. + * Sets whether SDC server TLS authentication is activated. If set to false, + * Key Store path and password are not needed to be set. + * * @return */ boolean activateServerTLSAuth(); - + /** - * If set to true the method {@link INotificationData#getResources()} will return all found resources.<br> - * That means that metadata of resources that do not contain relevant artifacts types (artifacts that are defined in {@link #getRelevantArtifactTypes()} will be returned.<br> - * Setting the method to false will activate the legacy behavior, in which empty resources are not part of the notification.<br> + * If set to true the method {@link INotificationData#getResources()} will + * return all found resources.<br> + * That means that metadata of resources that do not contain relevant + * artifacts types (artifacts that are defined in + * {@link #getRelevantArtifactTypes()} will be returned.<br> + * Setting the method to false will activate the legacy behavior, in which + * empty resources are not part of the notification.<br> + * * @return */ boolean isFilterInEmptyResources(); /** - * By default, Distribution Client will use HTTPS (TLS 1.2) when connecting to DMAAP. - * This param can be null, then default (HTTPS) behavior will be applied. - * If set to false, distribution client will use HTTP when connecting to DMAAP. + * By default, Distribution Client will use HTTPS (TLS 1.2) when connecting + * to DMAAP. This param can be null, then default (HTTPS) behavior will be + * applied. If set to false, distribution client will use HTTP when + * connecting to DMAAP. + * * @return */ Boolean isUseHttpsWithDmaap(); -} - + /** + * By default, (false value) Distribution Client will trigger the regular registration + * towards SDC (register component as consumer to the SDC-DISTR-NOTIF-TOPIC-[ENV] topic and register component as producer to the SDC-DISTR-STATUS-TOPIC-[ENV]).<br> + * If set to true, distribution client trigger Register to SDC indicating + * that this component request to be consumer and producer of the + * SDC-DISTR-STATUS-TOPIC-[ENV] topic.<br> + * @return + */ + default boolean isConsumeProduceStatusTopic() { + return false; + } +} diff --git a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IDistributionStatusMessage.java b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IDistributionStatusMessage.java index 86251d1..ab3d6a7 100644 --- a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IDistributionStatusMessage.java +++ b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IDistributionStatusMessage.java @@ -20,33 +20,9 @@ package org.openecomp.sdc.api.consumer; -import org.openecomp.sdc.utils.DistributionStatusEnum; +public interface IDistributionStatusMessage extends IDistributionStatusMessageBasic{ -public interface IDistributionStatusMessage { - /** - * Distribution ID published in the distribution notification.<br> - * Should be used to link the distribution status reports to the appropriate - * distribution activation.<br> - * Global Distribution Identifier: UUID generated by ASDC per each - * distribution activation.<br> - * Generated UUID is compliant with RFC 4122. It is a 128-bit value - * formatted into blocks of hexadecimal digits separated by a hyphen ("-"). - * Ex.: AA97B177-9383-4934-8543-0F91A7A02836 - */ - String getDistributionID(); - - /**Unique ID of ECOMP component instance (e.x INSTAR name)*/ - String getConsumerID(); - - /** - * Timestamp of the distribution status report creation.<br> - * The number of seconds that have elapsed since January 1, 1970. - */ - long getTimestamp(); - /**Resource URL of the downloaded/deployed artifact - URL specified in the distribution notification message*/ String getArtifactURL(); - - /**Download/Deployment status*/ - DistributionStatusEnum getStatus(); + } diff --git a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IDistributionStatusMessageBasic.java b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IDistributionStatusMessageBasic.java new file mode 100644 index 0000000..fb1194d --- /dev/null +++ b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IDistributionStatusMessageBasic.java @@ -0,0 +1,28 @@ +package org.openecomp.sdc.api.consumer; + +import org.openecomp.sdc.utils.DistributionStatusEnum; + +public interface IDistributionStatusMessageBasic { + /** + * Distribution ID published in the distribution notification.<br> + * Should be used to link the distribution status reports to the appropriate + * distribution activation.<br> + * Global Distribution Identifier: UUID generated by SDC per each + * distribution activation.<br> + * Generated UUID is compliant with RFC 4122. It is a 128-bit value + * formatted into blocks of hexadecimal digits separated by a hyphen ("-"). + * Ex.: AA97B177-9383-4934-8543-0F91A7A02836 + */ + String getDistributionID(); + + /**Unique ID of ONAP component instance (e.x INSTAR name)*/ + String getConsumerID(); + + /** + * Timestamp of the distribution status report creation.<br> + * The number of seconds that have elapsed since January 1, 1970. + */ + long getTimestamp(); + /**Download/Deployment status*/ + DistributionStatusEnum getStatus(); +} diff --git a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IFinalDistrStatusMessage.java b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IFinalDistrStatusMessage.java new file mode 100644 index 0000000..42affd7 --- /dev/null +++ b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IFinalDistrStatusMessage.java @@ -0,0 +1,9 @@ +package org.openecomp.sdc.api.consumer; + + + +public interface IFinalDistrStatusMessage extends IDistributionStatusMessageBasic{ + + default String getConsumerID(){return "";} + default String getComponentName(){return "";} +} diff --git a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IStatusCallback.java b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IStatusCallback.java new file mode 100644 index 0000000..a889f52 --- /dev/null +++ b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/consumer/IStatusCallback.java @@ -0,0 +1,35 @@ +/*- + * ============LICENSE_START======================================================= + * sdc-distribution-client + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.api.consumer; + +import org.openecomp.sdc.api.notification.IStatusData; + +/** + * When a relevant status will be found activateCallback method will be + * activated with the status data.<br> + * Please implement it according to your desired callback logic. + */ +@FunctionalInterface +public interface IStatusCallback { + void activateCallback(IStatusData data); + + +} diff --git a/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/notification/IStatusData.java b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/notification/IStatusData.java new file mode 100644 index 0000000..7a46686 --- /dev/null +++ b/sdc-distribution-client/src/main/java/org/openecomp/sdc/api/notification/IStatusData.java @@ -0,0 +1,65 @@ +/*- + * ============LICENSE_START======================================================= + * sdc-distribution-client + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.api.notification; + +import org.openecomp.sdc.utils.DistributionStatusEnum; + +public interface IStatusData { + /** + * Global Distribution Identifier: UUID generated by SDC per each + * distribution activation.<br> + * Generated UUID is compliant with RFC 4122.<br> + * It is a 128-bit value formatted into blocks of hexadecimal digits + * separated by a hyphen ("-").<br> + * Ex.: AA97B177-9383-4934-8543-0F91A7A02836 + */ + String getDistributionID(); + + /** Unique ID of ONAP component instance (e.x INSTAR name). */ + String getConsumerID(); + + /** The predefined ONAP component name configured on the component. */ + String getComponentName(); + + /** + * Timestamp of the distribution status report creation. The number of + * seconds that have elapsed since January 1, 1970 + */ + Long getTimestamp(); + /** + * Resource URL of the downloaded/deployed artifact - URL specified in the + * distribution notification message. + */ + String getArtifactURL(); + /** + * Status Event type + */ + DistributionStatusEnum getStatus(); + /** + * Error Reason describing the Status Event. + */ + String getErrorReason(); + + + + + +} |