/*-
* ============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;
import java.util.List;
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
* Updatable configuration parameters are: pollingInterval, pollingTimeout,
* consumerGroup and relevantArtifactTypes
*
* @param newConf
* - contains updated configuration
*
* @return IDistributionClientResult
*/
IDistributionClientResult updateConfiguration(IConfiguration newConf);
/**
* Retrieve the configuration of the distribution client
*
* @return IConfiguration
*/
IConfiguration getConfiguration();
/**
* Start distribution client
* - start polling notification topic
*
* @return IDistributionClientResult
*/
IDistributionClientResult start();
/**
* Stop distribution client
* - stop polling notification topic
* - unregister topics (via ASDC)
* - delete keys from UEB
*
* @return IDistributionClientResult
*/
IDistributionClientResult stop();
/**
* Downloads an artifact from ASDC Catalog
*
* @param artifactInfo
* @return IDistributionClientDownloadResult
*/
IDistributionClientDownloadResult download(IArtifactInfo artifactInfo);
/**
* Initialize the distribution client
* - fetch the UEB server list from ASDC
* - create keys in UEB
* - register for topics (via ASDC)
* - set the notification callback
*
* Note: all configuration fields are mandatory.
* Password must be in clear text and not encrypted
* ONAP-Component MUST store password as SHA-2 (256) hashed with
* dynamically generated salt value
*
* @param conf
* @param callback
* @return IDistributionClientResult
*/
IDistributionClientResult init(IConfiguration conf, INotificationCallback callback);
/**
* Initialize the distribution client
* - fetch the UEB server list from ASDC
* - create keys in UEB
* - register for topics (via ASDC)
* - set the notification callback
*
* Note: all configuration fields are mandatory.
* Password must be in clear text and not encrypted
* ONAP-Component MUST store password as SHA-2 (256) hashed with
* dynamically generated salt value
*
* @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.
*
* @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 Final Status event to Distribution
* Status Topic
*
* @param statusMessage
* @return IDistributionClientResult
*/
IDistributionClientResult sendFinalDistrStatus(IFinalDistrStatusMessage statusMessage);
/**
* Build and publish Distribution Final Status event to Distribution
* Status Topic With Error Reason.
*
* @param statusMessage
* @param errorReason
* @return IDistributionClientResult
*/
IDistributionClientResult sendFinalDistrStatus(IFinalDistrStatusMessage statusMessage, String errorReason);
/**
* This method parses artifact of type VF_MODULES_METADATA payload data
* .
* Method is deprecated due to VF Module changes. Only backward
* compatibility is supported.
*
* @param artifactPayload
* @return IVfModuleMetadata list
*/
@Deprecated
List decodeVfModuleArtifact(byte[] artifactPayload);
}