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/24 03:12:23 UTC
git commit: modules
Updated Branches:
refs/heads/javelin d06d6dae7 -> 07d00ebbf
modules
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/07d00ebb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/07d00ebb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/07d00ebb
Branch: refs/heads/javelin
Commit: 07d00ebbfa3fa72a735ec0be36b9a99a8b366429
Parents: d06d6da
Author: Alex Huang <al...@citrix.com>
Authored: Thu Aug 23 17:47:36 2012 -0700
Committer: Alex Huang <al...@citrix.com>
Committed: Thu Aug 23 18:11:47 2012 -0700
----------------------------------------------------------------------
framework/events/.classpath | 6 +
framework/events/.project | 17 ++
framework/ipc/.classpath | 6 +
framework/ipc/.project | 17 ++
framework/ipc/.settings/org.eclipse.jdt.core.prefs | 11 +
.../framework/container/ServerContainer.java | 27 +++
.../org/apache/cloudstack/framework/ipc/Ipc.java | 33 +++
.../cloudstack/framework/ipc/IpcIntercepter.java | 23 ++
.../apache/cloudstack/framework/ipc/IpcParam.java | 22 ++
.../apache/cloudstack/framework/ipc/Message.java | 26 +++
.../cloudstack/framework/ipc/MessageSystem.java | 43 ++++
.../apache/cloudstack/framework/ipc/Publisher.java | 42 ++++
.../cloudstack/framework/ipc/Subscriber.java | 37 ++++
framework/jobs/.classpath | 6 +
framework/jobs/.project | 17 ++
.../jobs/.settings/org.eclipse.jdt.core.prefs | 11 +
.../org/apache/cloudstack/framework/job/Job.java | 24 ++
.../cloudstack/framework/job/JobInterceptor.java | 27 +++
platform/api/.classpath | 8 +
platform/api/.project | 17 ++
.../platform/service/api/DirectoryService.java | 29 +++
.../platform/service/api/EntityService.java | 45 ++++
.../service/api/JobsManagementService.java | 35 +++
.../platform/service/api/ManagementService.java | 64 ++++++
.../platform/service/api/OrchestrationService.java | 127 +++++++++++
.../subsystem/api/hypervisor/ComputeSubsystem.java | 30 +++
.../api/network/NetworkServiceProvider.java | 47 ++++
.../subsystem/api/network/NetworkSubsystem.java | 35 +++
.../api/storage/DataMigrationSubSystem.java | 23 ++
.../subsystem/api/storage/StorageSubSystem.java | 13 ++
platform/compute/.classpath | 7 +
platform/compute/.project | 17 ++
.../cloudstack/compute/ComputeOrchestrator.java | 38 ++++
.../compute/ComputeOrchestratorImpl.java | 41 ++++
platform/network/.classpath | 6 +
platform/network/.project | 17 ++
.../cloudstack/network/NetworkOrchestrator.java | 40 ++++
platform/orchestration/.classpath | 10 +
platform/orchestration/.project | 17 ++
.../.settings/org.eclipse.jdt.core.prefs | 11 +
.../platform/orchestration/CloudOrchestrator.java | 164 +++++++++++++++
platform/planning/.classpath | 8 +
platform/planning/.project | 17 ++
.../cloudstack/platform/planning/Concierge.java | 36 ++++
platform/storage/.classpath | 6 +
platform/storage/.project | 17 ++
.../cloudstack/storage/StorageOrchestrator.java | 52 +++++
47 files changed, 1372 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/events/.classpath
----------------------------------------------------------------------
diff --git a/framework/events/.classpath b/framework/events/.classpath
new file mode 100755
index 0000000..fb50116
--- /dev/null
+++ b/framework/events/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/events/.project
----------------------------------------------------------------------
diff --git a/framework/events/.project b/framework/events/.project
new file mode 100755
index 0000000..677cea5
--- /dev/null
+++ b/framework/events/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>framework-events</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/ipc/.classpath
----------------------------------------------------------------------
diff --git a/framework/ipc/.classpath b/framework/ipc/.classpath
new file mode 100755
index 0000000..fb565a5
--- /dev/null
+++ b/framework/ipc/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/ipc/.project
----------------------------------------------------------------------
diff --git a/framework/ipc/.project b/framework/ipc/.project
new file mode 100755
index 0000000..11b8968
--- /dev/null
+++ b/framework/ipc/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>framework-ipc</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/ipc/.settings/org.eclipse.jdt.core.prefs
----------------------------------------------------------------------
diff --git a/framework/ipc/.settings/org.eclipse.jdt.core.prefs b/framework/ipc/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..7341ab1
--- /dev/null
+++ b/framework/ipc/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/ipc/src/org/apache/cloudstack/framework/container/ServerContainer.java
----------------------------------------------------------------------
diff --git a/framework/ipc/src/org/apache/cloudstack/framework/container/ServerContainer.java b/framework/ipc/src/org/apache/cloudstack/framework/container/ServerContainer.java
new file mode 100755
index 0000000..04ec031
--- /dev/null
+++ b/framework/ipc/src/org/apache/cloudstack/framework/container/ServerContainer.java
@@ -0,0 +1,27 @@
+/*
+ * 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.cloudstack.framework.container;
+
+/**
+ * Container of different processes so it doesn't have to deal with message
+ * to Java call.
+ */
+public interface ServerContainer {
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/ipc/src/org/apache/cloudstack/framework/ipc/Ipc.java
----------------------------------------------------------------------
diff --git a/framework/ipc/src/org/apache/cloudstack/framework/ipc/Ipc.java b/framework/ipc/src/org/apache/cloudstack/framework/ipc/Ipc.java
new file mode 100755
index 0000000..31903c5
--- /dev/null
+++ b/framework/ipc/src/org/apache/cloudstack/framework/ipc/Ipc.java
@@ -0,0 +1,33 @@
+/*
+ * 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.cloudstack.framework.ipc;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Marks a method as an ipc mechanism
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Ipc {
+ String topic();
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/ipc/src/org/apache/cloudstack/framework/ipc/IpcIntercepter.java
----------------------------------------------------------------------
diff --git a/framework/ipc/src/org/apache/cloudstack/framework/ipc/IpcIntercepter.java b/framework/ipc/src/org/apache/cloudstack/framework/ipc/IpcIntercepter.java
new file mode 100755
index 0000000..82c2a47
--- /dev/null
+++ b/framework/ipc/src/org/apache/cloudstack/framework/ipc/IpcIntercepter.java
@@ -0,0 +1,23 @@
+/*
+ * 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.cloudstack.framework.ipc;
+
+public class IpcIntercepter {
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/ipc/src/org/apache/cloudstack/framework/ipc/IpcParam.java
----------------------------------------------------------------------
diff --git a/framework/ipc/src/org/apache/cloudstack/framework/ipc/IpcParam.java b/framework/ipc/src/org/apache/cloudstack/framework/ipc/IpcParam.java
new file mode 100755
index 0000000..9bb811d
--- /dev/null
+++ b/framework/ipc/src/org/apache/cloudstack/framework/ipc/IpcParam.java
@@ -0,0 +1,22 @@
+/*
+ * 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.cloudstack.framework.ipc;
+
+public @interface IpcParam {
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/ipc/src/org/apache/cloudstack/framework/ipc/Message.java
----------------------------------------------------------------------
diff --git a/framework/ipc/src/org/apache/cloudstack/framework/ipc/Message.java b/framework/ipc/src/org/apache/cloudstack/framework/ipc/Message.java
new file mode 100755
index 0000000..cb5a043
--- /dev/null
+++ b/framework/ipc/src/org/apache/cloudstack/framework/ipc/Message.java
@@ -0,0 +1,26 @@
+/*
+ * 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.cloudstack.framework.ipc;
+
+import java.util.Map;
+
+public interface Message {
+ String getTopic();
+ Map<String, Object> getContent();
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/ipc/src/org/apache/cloudstack/framework/ipc/MessageSystem.java
----------------------------------------------------------------------
diff --git a/framework/ipc/src/org/apache/cloudstack/framework/ipc/MessageSystem.java b/framework/ipc/src/org/apache/cloudstack/framework/ipc/MessageSystem.java
new file mode 100755
index 0000000..e5685f5
--- /dev/null
+++ b/framework/ipc/src/org/apache/cloudstack/framework/ipc/MessageSystem.java
@@ -0,0 +1,43 @@
+/*
+ * 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.cloudstack.framework.ipc;
+
+public interface MessageSystem {
+ /**
+ * Creates the publisher
+ * @param name of the publisher
+ * @return publisher
+ */
+ Publisher createPublisher(String name);
+
+ /**
+ * Creates the subscriber
+ * @param name of the subscriber
+ * @return subscriber
+ */
+ Subscriber createSubscriber(String name);
+
+ /**
+ * registers the subscriber
+ * @param subscriber subscriber
+ * @param topic topic to listen to
+ * @return subscriber
+ */
+ boolean registerSubscriber(Subscriber subscriber, String topic);
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/ipc/src/org/apache/cloudstack/framework/ipc/Publisher.java
----------------------------------------------------------------------
diff --git a/framework/ipc/src/org/apache/cloudstack/framework/ipc/Publisher.java b/framework/ipc/src/org/apache/cloudstack/framework/ipc/Publisher.java
new file mode 100755
index 0000000..4afabd4
--- /dev/null
+++ b/framework/ipc/src/org/apache/cloudstack/framework/ipc/Publisher.java
@@ -0,0 +1,42 @@
+/*
+ * 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.cloudstack.framework.ipc;
+
+import java.util.Map;
+
+/**
+ * Publish the Event
+ *
+ */
+public interface Publisher {
+ /**
+ * Publish a topic
+ *
+ * @param topic topic being published
+ * @param content content published
+ * @return true if the topic has been picked up; false if not.
+ */
+ boolean publish(String topic, Map<String, Object> content);
+
+ /**
+ * @return the name of this publisher
+ */
+ String getName();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/ipc/src/org/apache/cloudstack/framework/ipc/Subscriber.java
----------------------------------------------------------------------
diff --git a/framework/ipc/src/org/apache/cloudstack/framework/ipc/Subscriber.java b/framework/ipc/src/org/apache/cloudstack/framework/ipc/Subscriber.java
new file mode 100755
index 0000000..56e5826
--- /dev/null
+++ b/framework/ipc/src/org/apache/cloudstack/framework/ipc/Subscriber.java
@@ -0,0 +1,37 @@
+/*
+ * 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.cloudstack.framework.ipc;
+
+/**
+ * Event subscriber interface
+ *
+ */
+public interface Subscriber {
+
+ /**
+ * Message received
+ */
+ Message receive();
+
+ /**
+ * @return the name of the subscriber
+ */
+ String getName();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/jobs/.classpath
----------------------------------------------------------------------
diff --git a/framework/jobs/.classpath b/framework/jobs/.classpath
new file mode 100755
index 0000000..fb565a5
--- /dev/null
+++ b/framework/jobs/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/jobs/.project
----------------------------------------------------------------------
diff --git a/framework/jobs/.project b/framework/jobs/.project
new file mode 100755
index 0000000..edada9c
--- /dev/null
+++ b/framework/jobs/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>framework-jobs</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/jobs/.settings/org.eclipse.jdt.core.prefs
----------------------------------------------------------------------
diff --git a/framework/jobs/.settings/org.eclipse.jdt.core.prefs b/framework/jobs/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..7341ab1
--- /dev/null
+++ b/framework/jobs/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/jobs/src/org/apache/cloudstack/framework/job/Job.java
----------------------------------------------------------------------
diff --git a/framework/jobs/src/org/apache/cloudstack/framework/job/Job.java b/framework/jobs/src/org/apache/cloudstack/framework/job/Job.java
new file mode 100755
index 0000000..6d28445
--- /dev/null
+++ b/framework/jobs/src/org/apache/cloudstack/framework/job/Job.java
@@ -0,0 +1,24 @@
+/*
+ * 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.cloudstack.framework.job;
+
+public @interface Job {
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/framework/jobs/src/org/apache/cloudstack/framework/job/JobInterceptor.java
----------------------------------------------------------------------
diff --git a/framework/jobs/src/org/apache/cloudstack/framework/job/JobInterceptor.java b/framework/jobs/src/org/apache/cloudstack/framework/job/JobInterceptor.java
new file mode 100755
index 0000000..6265f8d
--- /dev/null
+++ b/framework/jobs/src/org/apache/cloudstack/framework/job/JobInterceptor.java
@@ -0,0 +1,27 @@
+/*
+ * 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.cloudstack.framework.job;
+
+/**
+ * @author ahuang
+ *
+ */
+public class JobInterceptor {
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/api/.classpath
----------------------------------------------------------------------
diff --git a/platform/api/.classpath b/platform/api/.classpath
new file mode 100755
index 0000000..1275c98
--- /dev/null
+++ b/platform/api/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/api"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/server"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/api/.project
----------------------------------------------------------------------
diff --git a/platform/api/.project b/platform/api/.project
new file mode 100755
index 0000000..6515efe
--- /dev/null
+++ b/platform/api/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>platform-api</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/api/src/org/apache/cloudstack/platform/service/api/DirectoryService.java
----------------------------------------------------------------------
diff --git a/platform/api/src/org/apache/cloudstack/platform/service/api/DirectoryService.java b/platform/api/src/org/apache/cloudstack/platform/service/api/DirectoryService.java
new file mode 100755
index 0000000..b724a86
--- /dev/null
+++ b/platform/api/src/org/apache/cloudstack/platform/service/api/DirectoryService.java
@@ -0,0 +1,29 @@
+/*
+ * 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.cloudstack.platform.service.api;
+
+import java.net.URI;
+import java.util.List;
+
+public interface DirectoryService {
+ void registerService(String serviceName, URI endpoint);
+ void unregisterService(String serviceName, URI endpoint);
+ List<URI> getEndPoints(String serviceName);
+ URI getLoadBalancedEndPoint(String serviceName);
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/api/src/org/apache/cloudstack/platform/service/api/EntityService.java
----------------------------------------------------------------------
diff --git a/platform/api/src/org/apache/cloudstack/platform/service/api/EntityService.java b/platform/api/src/org/apache/cloudstack/platform/service/api/EntityService.java
new file mode 100755
index 0000000..6983d28
--- /dev/null
+++ b/platform/api/src/org/apache/cloudstack/platform/service/api/EntityService.java
@@ -0,0 +1,45 @@
+/*
+ * 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.cloudstack.platform.service.api;
+
+import java.util.List;
+
+import com.cloud.network.Network;
+import com.cloud.storage.Volume;
+import com.cloud.vm.VirtualMachine;
+
+/**
+ * Service to retrieve CloudStack entities
+ * very likely to change
+ */
+public interface EntityService {
+ List<String> listVirtualMachines();
+ List<String> listVolumes();
+ List<String> listNetworks();
+ List<String> listNics();
+ List<String> listSnapshots();
+ List<String> listTemplates();
+ List<String> listStoragePools();
+ List<String> listHosts();
+
+ VirtualMachine getVirtualMachine(String vm);
+ Volume getVolume(String volume);
+ Network getNetwork(String network);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/api/src/org/apache/cloudstack/platform/service/api/JobsManagementService.java
----------------------------------------------------------------------
diff --git a/platform/api/src/org/apache/cloudstack/platform/service/api/JobsManagementService.java b/platform/api/src/org/apache/cloudstack/platform/service/api/JobsManagementService.java
new file mode 100755
index 0000000..ed1c4c0
--- /dev/null
+++ b/platform/api/src/org/apache/cloudstack/platform/service/api/JobsManagementService.java
@@ -0,0 +1,35 @@
+/*
+ * 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.cloudstack.platform.service.api;
+
+import java.util.List;
+
+import com.cloud.async.AsyncJob;
+
+public interface JobsManagementService {
+ List<AsyncJob> listJobs();
+
+ List<AsyncJob> listJobsInProgress();
+
+ List<AsyncJob> listJobsCompleted(Long from);
+
+ List<AsyncJob> listJobsInWaiting();
+
+ void cancelJob(String job);
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/api/src/org/apache/cloudstack/platform/service/api/ManagementService.java
----------------------------------------------------------------------
diff --git a/platform/api/src/org/apache/cloudstack/platform/service/api/ManagementService.java b/platform/api/src/org/apache/cloudstack/platform/service/api/ManagementService.java
new file mode 100755
index 0000000..128aed0
--- /dev/null
+++ b/platform/api/src/org/apache/cloudstack/platform/service/api/ManagementService.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
+ * 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.cloudstack.platform.service.api;
+
+import java.util.List;
+import java.util.Map;
+
+import com.cloud.dc.DataCenter;
+import com.cloud.dc.Pod;
+import com.cloud.host.Host;
+import com.cloud.host.Status;
+import com.cloud.storage.StoragePool;
+
+
+/**
+ * ManagementService specifies the management aspects of the
+ * Orchestration Platform.
+ */
+public interface ManagementService {
+
+ /**
+ * Registers a storage to use
+ * @param uuid
+ * @return
+ */
+ String registerStorage(String name, List<String> tags, Map<String, String> details);
+ String registerZone(String name, List<String> tags, Map<String, String> details);
+ String registerPod(String name, List<String> tags, Map<String, String> details);
+ String registerCluster(String name, List<String> tags, Map<String, String> details);
+ String registerHost(String name, List<String> tags, Map<String, String> details);
+
+ void deregisterStorage(String uuid);
+ void deregisterZone();
+ void deregisterPod();
+ void deregisterCluster();
+ void deregisterHost();
+
+ void changeState(String type, String entity, Status state);
+
+ List<Host> listHosts();
+
+ List<Pod> listPods();
+
+ List<DataCenter> listZones();
+
+ List<StoragePool> listStorage();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/api/src/org/apache/cloudstack/platform/service/api/OrchestrationService.java
----------------------------------------------------------------------
diff --git a/platform/api/src/org/apache/cloudstack/platform/service/api/OrchestrationService.java b/platform/api/src/org/apache/cloudstack/platform/service/api/OrchestrationService.java
new file mode 100755
index 0000000..1eb0474
--- /dev/null
+++ b/platform/api/src/org/apache/cloudstack/platform/service/api/OrchestrationService.java
@@ -0,0 +1,127 @@
+/*
+ * 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.cloudstack.platform.service.api;
+
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.hypervisor.Hypervisor;
+import com.cloud.vm.VirtualMachine;
+
+public interface OrchestrationService {
+ /**
+ * Reserves a new virtual machine
+ *
+ * @param uuid externally unique name to reference the virtual machine
+ * @param template reference to the template
+ * @param hostName name of the host
+ * @param cpu # of cpu cores
+ * @param speed speed of the cpu core
+ * @param memory memory to allocate in bytes
+ * @param networks networks that this VM belongs in
+ * @param rootDiskTags tags for the root disk
+ * @param computeTags tags for the compute
+ * @param details extra details to store for the VM
+ * @return VirtualMachine
+ */
+ VirtualMachine create(String uuid,
+ String template,
+ String hostName,
+ int cpu,
+ int speed,
+ long memory,
+ List<String> networks,
+ List<String> rootDiskTags,
+ List<String> computeTags,
+ Map<String, String> details,
+ String owner);
+
+ VirtualMachine createFromScratch(String uuid,
+ String iso,
+ String os,
+ String hypervisor,
+ String hostName,
+ int cpu,
+ int speed,
+ long memory,
+ List<String> networks,
+ List<String> computeTags,
+ Map<String, String> details,
+ String owner);
+
+ /**
+ * Make reservations for a VM
+ * @param vm uuid of the VM
+ * @param planner DeploymentPlanner to use
+ * @param until time specified in seconds before reservation expires. null means to reserve forever.
+ * @return reservation id
+ */
+ String reserve(String vm, String planner, Long until) throws InsufficientCapacityException;
+
+ String cancel(String reservationId);
+
+ /**
+ * Deploy the reservation
+ * @param reservationId reservation id during the deployment
+ * @return job Id
+ * @throws CloudRuntimeException if error
+ */
+ @Job(callback=)
+ String deploy(String reservationId);
+
+ /**
+ * Stops the vm
+ * @param vm vm
+ * @throws CloudRuntimeException if error
+ */
+ String stop(String vm);
+
+ /**
+ * destroys the vm
+ * @param vm vm
+ * @throws CloudRuntimeException if error
+ */
+ void destroy(String vm);
+
+ void joinNetwork(String network1, String network2);
+
+ void attachNetwork(String network, String vm);
+
+ void detachNetwork(String network, String vm);
+
+ void attachVolume(String vm, String vol);
+
+ void createNetwork();
+
+ void destroyNetwork();
+
+ void createVolume();
+
+ void destroyVolume();
+
+ void snapshotVirtualMachine(String vm);
+
+ void snapshotVolume(String volume);
+
+ void backup(String snapshot);
+
+ void registerTemplate(String name, URL path, String os, Hypervisor hypervisor);
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/api/src/org/apache/cloudstack/platform/subsystem/api/hypervisor/ComputeSubsystem.java
----------------------------------------------------------------------
diff --git a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/hypervisor/ComputeSubsystem.java b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/hypervisor/ComputeSubsystem.java
new file mode 100644
index 0000000..03d19c0
--- /dev/null
+++ b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/hypervisor/ComputeSubsystem.java
@@ -0,0 +1,30 @@
+/*
+ * 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.cloudstack.platform.subsystem.api.hypervisor;
+
+public interface ComputeSubsystem {
+
+ void start(String vm, String reservationId);
+
+ void cancel(String reservationId);
+
+ void stop(String vm, String reservationId);
+
+ void migrate(String vm, String reservationId);
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/api/src/org/apache/cloudstack/platform/subsystem/api/network/NetworkServiceProvider.java
----------------------------------------------------------------------
diff --git a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/network/NetworkServiceProvider.java b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/network/NetworkServiceProvider.java
new file mode 100755
index 0000000..a66a4f5
--- /dev/null
+++ b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/network/NetworkServiceProvider.java
@@ -0,0 +1,47 @@
+/*
+ * 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.cloudstack.platform.subsystem.api.network;
+
+public interface NetworkServiceProvider {
+ /**
+ * Plug your network elements into this network
+ * @param network
+ * @param reservationId
+ */
+ void plugInto(String network, String reservationId);
+
+ /**
+ * Unplug your network elements from this network
+ * @param network
+ * @param reservationId
+ */
+ void unplugFrom(String network, String reservationId);
+
+ /**
+ * Cancel a previous work
+ * @param reservationId
+ */
+ void cancel(String reservationId);
+
+ void provideServiceTo(String vm, String network, String reservationId);
+
+ void removeServiceFrom(String vm, String network, String reservationId);
+
+ void cleanUp(String network, String reservationId);
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/api/src/org/apache/cloudstack/platform/subsystem/api/network/NetworkSubsystem.java
----------------------------------------------------------------------
diff --git a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/network/NetworkSubsystem.java b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/network/NetworkSubsystem.java
new file mode 100755
index 0000000..7e28ed3
--- /dev/null
+++ b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/network/NetworkSubsystem.java
@@ -0,0 +1,35 @@
+/*
+ * 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.cloudstack.platform.subsystem.api.network;
+
+public interface NetworkSubsystem {
+ String createNetwork();
+
+ String start(String network, String reservationId);
+
+ void shutdown(String nework, String reservationId);
+
+ void prepare(String vm, String network, String reservationId);
+
+ void release(String vm, String network, String reservationId);
+
+ void cancel(String reservationId);
+
+ void destroy(String network, String reservationId);
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataMigrationSubSystem.java
----------------------------------------------------------------------
diff --git a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataMigrationSubSystem.java b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataMigrationSubSystem.java
new file mode 100755
index 0000000..30185b7
--- /dev/null
+++ b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/DataMigrationSubSystem.java
@@ -0,0 +1,23 @@
+/*
+ * 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.cloudstack.platform.subsystem.api.storage;
+
+public interface DataMigrationSubSystem {
+ void migrate(String volume, String storagePool, String reservationId);
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/StorageSubSystem.java
----------------------------------------------------------------------
diff --git a/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/StorageSubSystem.java b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/StorageSubSystem.java
new file mode 100755
index 0000000..e12ff79
--- /dev/null
+++ b/platform/api/src/org/apache/cloudstack/platform/subsystem/api/storage/StorageSubSystem.java
@@ -0,0 +1,13 @@
+package org.apache.cloudstack.platform.subsystem.api.storage;
+
+import java.net.URI;
+
+import com.cloud.org.Grouping;
+
+public interface StorageSubSystem {
+ String getType();
+ Class<? extends Grouping> getScope();
+
+ URI grantAccess(String vol, String reservationId);
+ URI RemoveAccess(String vol, String reservationId);
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/compute/.classpath
----------------------------------------------------------------------
diff --git a/platform/compute/.classpath b/platform/compute/.classpath
new file mode 100755
index 0000000..9cfdd7f
--- /dev/null
+++ b/platform/compute/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/framework-ipc"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/compute/.project
----------------------------------------------------------------------
diff --git a/platform/compute/.project b/platform/compute/.project
new file mode 100755
index 0000000..763fcb6
--- /dev/null
+++ b/platform/compute/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>platform-compute</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/compute/src/org/apache/cloudstack/compute/ComputeOrchestrator.java
----------------------------------------------------------------------
diff --git a/platform/compute/src/org/apache/cloudstack/compute/ComputeOrchestrator.java b/platform/compute/src/org/apache/cloudstack/compute/ComputeOrchestrator.java
new file mode 100755
index 0000000..21813ab
--- /dev/null
+++ b/platform/compute/src/org/apache/cloudstack/compute/ComputeOrchestrator.java
@@ -0,0 +1,38 @@
+/*
+ * 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.cloudstack.compute;
+
+import org.apache.cloudstack.framework.ipc.Ipc;
+import org.apache.cloudstack.framework.ipc.IpcParam;
+
+public interface ComputeOrchestrator {
+ /**
+ * start the vm
+ * @param vm vm
+ * @param reservationId
+ */
+ @Ipc(topic="cs.compute.start")
+ void start(@IpcParam String vm, @IpcParam String reservationId);
+
+ @Ipc(topic="cs.compute.cancel")
+ void cancel(@IpcParam String reservationId);
+
+ @Ipc(topic="cs.compute.stop")
+ void stop(@IpcParam String vm, @IpcParam String reservationId);
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/compute/src/org/apache/cloudstack/compute/ComputeOrchestratorImpl.java
----------------------------------------------------------------------
diff --git a/platform/compute/src/org/apache/cloudstack/compute/ComputeOrchestratorImpl.java b/platform/compute/src/org/apache/cloudstack/compute/ComputeOrchestratorImpl.java
new file mode 100755
index 0000000..5030feb
--- /dev/null
+++ b/platform/compute/src/org/apache/cloudstack/compute/ComputeOrchestratorImpl.java
@@ -0,0 +1,41 @@
+/*
+ * 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.cloudstack.compute;
+
+
+public class ComputeOrchestratorImpl implements ComputeOrchestrator {
+
+ @Override
+ public void start(String vm, String reservationId) {
+ // Retrieve the VM
+ // Locate the HypervisorGuru based on the VM type
+ // Call HypervisorGuru to start the VM
+ }
+
+ @Override
+ public void cancel(String reservationId) {
+ }
+
+ @Override
+ public void stop(String vm, String reservationId) {
+ // Retrieve the VM
+ // Locate the HypervisorGuru based on the VM type
+ // Call HypervisorGuru to stop the VM
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/network/.classpath
----------------------------------------------------------------------
diff --git a/platform/network/.classpath b/platform/network/.classpath
new file mode 100755
index 0000000..fb50116
--- /dev/null
+++ b/platform/network/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/network/.project
----------------------------------------------------------------------
diff --git a/platform/network/.project b/platform/network/.project
new file mode 100755
index 0000000..875ec88
--- /dev/null
+++ b/platform/network/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>platform-network</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/network/src/org/apache/cloudstack/network/NetworkOrchestrator.java
----------------------------------------------------------------------
diff --git a/platform/network/src/org/apache/cloudstack/network/NetworkOrchestrator.java b/platform/network/src/org/apache/cloudstack/network/NetworkOrchestrator.java
new file mode 100755
index 0000000..82756ac
--- /dev/null
+++ b/platform/network/src/org/apache/cloudstack/network/NetworkOrchestrator.java
@@ -0,0 +1,40 @@
+/*
+ * 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.cloudstack.network;
+
+public interface NetworkOrchestrator {
+
+ /**
+ * Prepares for a VM to join a network
+ * @param vm vm
+ * @param reservationId reservation id
+ */
+ void prepare(String vm, String reservationId);
+
+ /**
+ * Release all reservation
+ */
+ void release(String vm, String reservationId);
+
+ /**
+ * Cancel a previous reservation
+ * @param reservationId
+ */
+ void cancel(String reservationId);
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/orchestration/.classpath
----------------------------------------------------------------------
diff --git a/platform/orchestration/.classpath b/platform/orchestration/.classpath
new file mode 100755
index 0000000..3028798
--- /dev/null
+++ b/platform/orchestration/.classpath
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/api"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/platform-api"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/platform-planning"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/framework-ipc"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/orchestration/.project
----------------------------------------------------------------------
diff --git a/platform/orchestration/.project b/platform/orchestration/.project
new file mode 100755
index 0000000..fe968bc
--- /dev/null
+++ b/platform/orchestration/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>platform-orchestration</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/orchestration/.settings/org.eclipse.jdt.core.prefs
----------------------------------------------------------------------
diff --git a/platform/orchestration/.settings/org.eclipse.jdt.core.prefs b/platform/orchestration/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..7341ab1
--- /dev/null
+++ b/platform/orchestration/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/orchestration/src/org/apache/cloudstack/platform/orchestration/CloudOrchestrator.java
----------------------------------------------------------------------
diff --git a/platform/orchestration/src/org/apache/cloudstack/platform/orchestration/CloudOrchestrator.java b/platform/orchestration/src/org/apache/cloudstack/platform/orchestration/CloudOrchestrator.java
new file mode 100755
index 0000000..405289d
--- /dev/null
+++ b/platform/orchestration/src/org/apache/cloudstack/platform/orchestration/CloudOrchestrator.java
@@ -0,0 +1,164 @@
+/*
+ * 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.cloudstack.platform.orchestration;
+
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.cloudstack.framework.ipc.Publisher;
+import org.apache.cloudstack.platform.planning.Concierge;
+import org.apache.cloudstack.platform.service.api.OrchestrationService;
+
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.hypervisor.Hypervisor;
+import com.cloud.vm.VirtualMachine;
+
+public class CloudOrchestrator implements OrchestrationService {
+ int _retryCount = 5;
+ Concierge _concierge = null; // These are injected
+ Publisher _publisher = null;
+
+ @Override
+ public VirtualMachine create(String uuid, String template, String hostName, int cpu, int speed, long memory, List<String> networks, List<String> rootDiskTags, List<String> computeTags, Map<String, String> details,
+ String owner) {
+ // creates a virtual machine and relevant work in database
+ return null;
+ }
+
+ @Override
+ public VirtualMachine createFromScratch(String uuid, String iso, String os, String hypervisor, String hostName, int cpu, int speed, long memory, List<String> networks, List<String> computeTags,
+ Map<String, String> details, String owner) {
+ // creates a virtual machine and relevant work in database
+ return null;
+ }
+
+ @Override
+ public String reserve(String vm, String planner, Long until) throws InsufficientCapacityException {
+ return _concierge.reserve(vm, planner);
+ }
+
+ @Override
+ public String cancel(String reservationId) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String deploy(String reservationId, String callback) {
+ for (int i = 0; i < _retryCount; i++) {
+ try {
+ // Retrieves the reservation
+ // Signals Network and Storage to prepare
+ // Signals Compute
+ _concierge.claim(reservationId);
+ } catch (Exception e) {
+ // Cancel reservations.
+ }
+ _concierge.reserveAnother(reservationId);
+ }
+ return null;
+ }
+
+ @Override
+ public String stop(String vm) {
+
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void destroy(String vm) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void joinNetwork(String network1, String network2) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void attachNetwork(String network, String vm) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void detachNetwork(String network, String vm) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void attachVolume(String vm, String vol) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void createNetwork() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void destroyNetwork() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void createVolume() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void destroyVolume() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void snapshotVirtualMachine(String vm) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void snapshotVolume(String volume) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void backup(String snapshot) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void registerTemplate(String name, URL path, String os, Hypervisor hypervisor) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/planning/.classpath
----------------------------------------------------------------------
diff --git a/platform/planning/.classpath b/platform/planning/.classpath
new file mode 100755
index 0000000..0fc1f1e
--- /dev/null
+++ b/platform/planning/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/api"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/framework-ipc"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/planning/.project
----------------------------------------------------------------------
diff --git a/platform/planning/.project b/platform/planning/.project
new file mode 100755
index 0000000..c228af2
--- /dev/null
+++ b/platform/planning/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>platform-planning</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/planning/src/org/apache/cloudstack/platform/planning/Concierge.java
----------------------------------------------------------------------
diff --git a/platform/planning/src/org/apache/cloudstack/platform/planning/Concierge.java b/platform/planning/src/org/apache/cloudstack/platform/planning/Concierge.java
new file mode 100755
index 0000000..97dfb2b
--- /dev/null
+++ b/platform/planning/src/org/apache/cloudstack/platform/planning/Concierge.java
@@ -0,0 +1,36 @@
+/*
+ * 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.cloudstack.platform.planning;
+
+import org.apache.cloudstack.framework.ipc.Ipc;
+
+public interface Concierge {
+ @Ipc(topic="cs.concierge.reserve")
+ String reserve(String vm, String planner, Long until);
+
+ @Ipc(topic="cs.concierge.cancel")
+ String cancel(String reservationId);
+
+ @Ipc(topic="cs.concierge.claim")
+ String claim(String reservationId);
+
+ @Ipc(topic="cs.concierge.reserveAnother")
+ String reserveAnother(String reservationId);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/storage/.classpath
----------------------------------------------------------------------
diff --git a/platform/storage/.classpath b/platform/storage/.classpath
new file mode 100755
index 0000000..fb50116
--- /dev/null
+++ b/platform/storage/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/storage/.project
----------------------------------------------------------------------
diff --git a/platform/storage/.project b/platform/storage/.project
new file mode 100755
index 0000000..ba98bbb
--- /dev/null
+++ b/platform/storage/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>platform-storage</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/07d00ebb/platform/storage/src/org/apache/cloudstack/storage/StorageOrchestrator.java
----------------------------------------------------------------------
diff --git a/platform/storage/src/org/apache/cloudstack/storage/StorageOrchestrator.java b/platform/storage/src/org/apache/cloudstack/storage/StorageOrchestrator.java
new file mode 100755
index 0000000..dc5d701
--- /dev/null
+++ b/platform/storage/src/org/apache/cloudstack/storage/StorageOrchestrator.java
@@ -0,0 +1,52 @@
+/*
+ * 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.cloudstack.storage;
+
+import java.util.List;
+
+public interface StorageOrchestrator {
+
+ /**
+ * Prepares all storage ready for a VM to start
+ * @param vm
+ * @param reservationId
+ */
+ void prepare(String vm, String reservationId);
+
+ /**
+ * Releases all storage that were used for a VM shutdown
+ * @param vm
+ * @param disks
+ * @param reservationId
+ */
+ void release(String vm, String reservationId);
+
+ /**
+ * Destroy all disks
+ * @param disks
+ * @param reservationId
+ */
+ void destroy(List<String> disks, String reservationId);
+
+ /**
+ * Cancel a reservation
+ * @param reservationId reservation to
+ */
+ void cancel(String reservationId);
+}