You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2012/08/08 00:53:37 UTC

git commit: Added missing file

Updated Branches:
  refs/heads/master a6a864a1a -> a617ccc89


Added missing file


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/a617ccc8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/a617ccc8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/a617ccc8

Branch: refs/heads/master
Commit: a617ccc8982f208606de54ed0d260d39e10d3fa4
Parents: a6a864a
Author: Alex Huang <al...@citrix.com>
Authored: Tue Aug 7 15:52:34 2012 -0700
Committer: Alex Huang <al...@citrix.com>
Committed: Tue Aug 7 15:52:34 2012 -0700

----------------------------------------------------------------------
 utils/src/com/cloud/utils/component/Plugin.java |   64 ++++++++++++++++++
 1 files changed, 64 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a617ccc8/utils/src/com/cloud/utils/component/Plugin.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/component/Plugin.java b/utils/src/com/cloud/utils/component/Plugin.java
new file mode 100755
index 0000000..ffd704c
--- /dev/null
+++ b/utils/src/com/cloud/utils/component/Plugin.java
@@ -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();
+}