Added missing file

This commit is contained in:
Alex Huang 2012-08-07 15:52:34 -07:00
parent a6a864a1a8
commit a617ccc898
1 changed files with 64 additions and 0 deletions

View File

@ -0,0 +1,64 @@
// 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
// 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 com.cloud.utils.component;
import java.util.List;
import com.cloud.utils.Pair;
/**
* CloudStack uses Adapters to implement different capabilities.
* There are different Adapters such as NetworkGuru, NetworkElement,
* HypervisorGuru, DeploymentPlanner, etc. However, Adapters only
* defines what CloudStack needs from the implementation. What about
* what the Adapter itself needs, such as configurations and administrative
* operations, and what if one implementation can
* implement two different Adapters?
*
* Plugin is a CloudStack container for Adapters. It rolls the following
* capabilities into the one package for CloudStack to load at runtime.
* - REST API commands supported by the Plugin.
* - Components needed by the Plugin.
* - Adapters implemented by the Plugin.
* - Database operations
*
*/
public interface Plugin extends PluggableService {
/**
* Retrieves the component libraries needed by this Plugin.
* ComponentLocator put these components and add them to the startup
* and shutdown processes of CloudStack. This is only needed if the
* Plugin uses ComponentLocator to inject what it needs. If the
* Plugin uses other mechanisms, then it can return null here.
*
* @return a component library that contains the components this Plugin
* contains and needs.
*/
ComponentLibrary getComponentLibrary();
/**
* Retrieves the list of Adapters and the interface they implement. It
* can be an empty list if the Plugin does not implement any.
*
* @return list of pairs where the first is the interface and the second
* is the adapter.
*/
List<Pair<Class<?>, Class<? extends Adapter>>> getAdapterImplementations();
}