blob: a2f5014e0c990d1128a3f5856f38a7e05ccb65b9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
package org.apache.karaf.cave.deployer.api;
import java.util.List;
import java.util.Map;
public interface Deployer {
/**
* Register a connection in the Deployer service.
*/
void registerConnection(Connection connection) throws Exception;
/**
* Delete a connection from the Deployer service.
*/
void deleteConnection(String connectionName) throws Exception;
/**
* Get the connections registered in the Deployer service.
*/
List<Connection> connections() throws Exception;
/**
* Explode a file (KAR or zip) and upload the content on a Maven repository.
*
* @param url The location of the file.
* @param repository The location of the Maven repository where to upload.
* @return the list of features XML found in the file (empty if nothing found).
* @throws Exception in case of failure.
*/
List<String> explode(String url, String repository) throws Exception;
/**
* Extract a file (KAR or zip) to a local Karaf directory.
*
* @param url The location of the file.
* @param directory The location of the directory where to extract.
* @throws Exception in case of failure.
*/
void extract(String url, String directory) throws Exception;
/**
* Download an artifact from a given URL and copy it on a local filesystem.
*
* @param artifact The artifact URL.
* @param directory The local directory.
* @throws Exception in case of failure.
*/
void download(String artifact, String directory) throws Exception;
/**
* Upload an artifact to a Maven repository using the provided Maven coordinates.
*
* @param groupId The resulting artifact groupId.
* @param artifactId The resulting artifact artifactId.
* @param version The resulting artifact version.
* @param artifactUrl The source artifact location.
* @param repositoryUrl The location of the Maven repository where to upload.
* @throws Exception in case of failure.
*/
void upload(String groupId, String artifactId, String version, String artifactUrl, String repositoryUrl)
throws Exception;
/**
* Create/assemble a feature based on existing ones. It allows you to create "meta" feature.
*
* @param groupId The resulting features repository groupId.
* @param artifactId The resulting features repository artifactId.
* @param version The resulting features repository version.
* @param repositoryUrl The location of the Maven repository where to upload the features repository.
* @param feature The name of the resulting feature.
* @param featureRepositoryUrls The source features repository URLs.
* @param features The source feature names.
* @param bundles The source bundle locations.
* @param configs The source configuration PIDs.
* @throws Exception in case of failure.
*/
void assembleFeature(String groupId, String artifactId, String version, String repositoryUrl, String feature,
List<String> featureRepositoryUrls,
List<String> features,
List<String> bundles,
List<Config> configs) throws Exception;
/**
* A simple remote deployment operation for bundle. You can install a bundle to a remote Karaf instance.
*/
void installBundle(String artifactUrl, String connection)
throws Exception;
/**
* A simple remote undeploy operation for bundle. You can undeploy a bundle from a remote Karaf instance.
*/
void uninstallBundle(String id, String connection) throws Exception;
/**
* A simple remote start operation for bundle. You can start a bundle on a remote Karaf instance.
*/
void startBundle(String id, String connection) throws Exception;
/**
* A simple remote stop operation for bundle. You can stop a bundle on a remote Karaf instance.
*/
void stopBundle(String id, String connection) throws Exception;
/**
* Simple remote operation to list bundles on a remote Karaf instance.
*/
List<Bundle> bundles(String connection) throws Exception;
/**
* Simple remote operation to install a KAR on a remote Karaf instance.
*/
void installKar(String karUrl, String connection) throws Exception;
/**
* Simple remote operation to uninstall a KAR from a remote Karaf instance.
*/
void uninstallKar(String id, String connection) throws Exception;
/**
* Simple remote operation to list the KAR on a remote Karaf instance.
*/
List<String> kars(String connection) throws Exception;
/**
* Return the list of features provided by a features repository.
*/
List<Feature> providedFeatures(String featuresRepositoryUrl) throws Exception;
/**
* Simple remote operation to add a features repository to a remote Karaf instance.
*/
void addFeaturesRepository(String featuresRepositoryUrl, String connection) throws Exception;
/**
* Simple remote operation to remove a features repository from a remote Karaf instance.
*/
void removeFeaturesRepository(String featuresRepositoryUrl, String connection) throws Exception;
/**
* Simple remote operation listing the features repository on a remote Karaf instance.
*/
List<FeaturesRepository> featuresRepositories(String connection) throws Exception;
/**
* Simple remote operation to install a feature on a remote Karaf instance.
*/
void installFeature(String feature, String connection) throws Exception;
/**
* Simple remote operation to uninstall a feature from a remote Karaf instance.
*/
void uninstallFeature(String feature, String connection) throws Exception;
/**
* Simple remote operation to list features available on a remote Karaf instance.
*/
List<Feature> features(String connection) throws Exception;
/**
* Simple remote operation to list features installed on a remote Karaf instance.
*/
List<String> installedFeatures(String connection) throws Exception;
/**
* Simple remote operation to list the configuration PIDs on a remote Karaf instance.
*/
List<String> configs(String connection) throws Exception;
/**
* Simple remote operation to create an empty configuration on a remote Karaf instance.
*/
void createConfig(String pid, String connection) throws Exception;
/**
* Create an empty configuration factory on a Karaf instance.
*/
String createConfigurationFactory(String factoryPid, String connection) throws Exception;
/**
* Create an empty configuration factory on a Karaf instance.
*/
String createConfigurationFactory(String factoryPid, String alias, String connection) throws Exception;
/**
* Create a configuration factory on a Karaf instance.
*/
String createConfigurationFactory(String factoryPid, Map<String, String> properties, String connection) throws Exception;
/**
* Create a configuration factory on a Karaf instance.
*/
String createConfigurationFactory(String factoryPid, String alias, Map<String, String> properties, String connection) throws Exception;
/**
* Simple remote operation to get the properties of a given configuration on a remote Karaf instance.
*/
Map<String, String> configProperties(String pid, String connection) throws Exception;
/**
* Simple remote operation to update a configuration in a remote Karaf instance.
*/
void updateConfig(Config config, String connection) throws Exception;
/**
* Simple remote operation to delete a configuration from a remote Karaf instance.
*/
void deleteConfig(String pid, String connection) throws Exception;
/**
* Simple remote operation to append a value of the end of the current one for a config property on a remote Karaf instance.
*/
void appendConfigProperty(String pid, String key, String value, String connection) throws Exception;
/**
* Simple remote operation to set a value of a config property on a remote Karaf instance.
*/
void setConfigProperty(String pid, String key, String value, String connection) throws Exception;
/**
* Simple remote operation to get the value of a config property on a remote Karaf instance.
*/
String configProperty(String pid, String key, String connection) throws Exception;
/**
* Simple remote operation to delete a config property from a remote Karaf instance.
*/
void deleteConfigProperty(String pid, String key, String connection) throws Exception;
/**
* Simple remote operation listing the Cellar cluster nodes if available.
*/
List<String> clusterNodes(String connection) throws Exception;
/**
* Simple remote operation getting the Cellar cluster groups if available.
*/
Map<String, List<String>> clusterGroups(String connection) throws Exception;
/**
* Simple remote operation to add a features repository to a Cellar cluster group if available.
*/
void clusterAddFeaturesRepository(String url, String clusterGroup, String connection) throws Exception;
/**
* Simple remote operation to remove a features repository from a Cellar cluster group if available.
*/
void clusterRemoveFeaturesRepository(String url, String clusterGroup, String Connection) throws Exception;
/**
* Simple remote operation to check if a features repository is present on a given Cellar cluster group.
*/
boolean isFeaturesRepositoryOnClusterGroup(String repositoryId, String clusterGroup, String connection) throws Exception;
/**
* Simple remote operation to check if a features repository is present on a remote Karaf instance.
*/
boolean isFeaturesRepositoryLocal(String repositoryId, String connection) throws Exception;
/**
* Simple remote operation to install a feature on a Cellar cluster group.
*/
void clusterFeatureInstall(String feature, String clusterGroup, String connection) throws Exception;
/**
* Simple remote operation to uninstall a feature on a Cellar cluster group.
*/
void clusterFeatureUninstall(String feature, String clusterGroup, String connection) throws Exception;
/**
* Simple remote operation to check if a feature is present on a given Cellar cluster group.
*/
boolean isFeatureOnClusterGroup(String feature, String clusterGroup, String connection) throws Exception;
/**
* Simple remote operation to check if a feature is present on a given Karaf instance.
*/
boolean isFeatureLocal(String feature, String connection) throws Exception;
}