/** * 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.ambari.server.state; import java.util.Map; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.controller.ServiceResponse; public interface Service { String getName(); long getClusterId(); Cluster getCluster(); ServiceComponent getServiceComponent(String componentName) throws AmbariException; Map<String, ServiceComponent> getServiceComponents(); void addServiceComponents(Map<String, ServiceComponent> components) throws AmbariException; void addServiceComponent(ServiceComponent component) throws AmbariException; State getDesiredState(); void setDesiredState(State state); /** * Gets this Service's security state. * * @return this services desired SecurityState */ SecurityState getSecurityState(); /** * Sets this Service's desired security state * <p/> * It is expected that the new SecurityState is a valid endpoint state such that * SecurityState.isEndpoint() == true. * * @param securityState the desired SecurityState for this Service * @throws AmbariException if the new state is not an endpoint state */ void setSecurityState(SecurityState securityState) throws AmbariException; StackId getDesiredStackVersion(); void setDesiredStackVersion(StackId stackVersion); ServiceResponse convertToResponse(); void debugDump(StringBuilder sb); ServiceComponent addServiceComponent(String serviceComponentName) throws AmbariException; /** * Find out whether the service and its components * are in a state that it can be removed from a cluster * @return */ boolean canBeRemoved(); void deleteAllComponents() throws AmbariException; void deleteServiceComponent(String componentName) throws AmbariException; boolean isClientOnlyService(); void delete() throws AmbariException; /** * Sets the maintenance state for the service * @param state the state */ void setMaintenanceState(MaintenanceState state); /** * @return the maintenance state */ MaintenanceState getMaintenanceState(); /** * Refresh Service info due to current stack * @throws AmbariException */ void updateServiceInfo() throws AmbariException; /** * Get a true or false value specifying * whether credential store is supported by this service. * @return true or false */ boolean isCredentialStoreSupported(); /** * Get a true or false value specifying * whether credential store is required by this service. * @return true or false */ boolean isCredentialStoreRequired(); /** * Get a true or false value specifying whether * credential store use is enabled for this service. * * @return true or false */ boolean isCredentialStoreEnabled(); /** * Set a true or false value specifying whether this * service is to be enabled for credential store use. * * @param credentialStoreEnabled - true or false */ void setCredentialStoreEnabled(boolean credentialStoreEnabled); enum Type { HDFS, GLUSTERFS, MAPREDUCE, HBASE, HIVE, OOZIE, WEBHCAT, SQOOP, GANGLIA, ZOOKEEPER, PIG, FLUME, YARN, MAPREDUCE2, AMBARI_METRICS, KERBEROS } }