/*-
* ============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.IConfiguration;
import org.openecomp.sdc.api.consumer.IDistributionStatusMessage;
import org.openecomp.sdc.api.consumer.INotificationCallback;
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
* ECOMP-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);
/**
* 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);
/**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);
}