add deploy binary into hyracks connection api
git-svn-id: https://hyracks.googlecode.com/svn/branches/fullstack_dynamic_deployment@3276 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/client/HyracksConnection.java b/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/client/HyracksConnection.java
index 8274416..93bb88f 100644
--- a/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/client/HyracksConnection.java
+++ b/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/client/HyracksConnection.java
@@ -14,12 +14,23 @@
*/
package edu.uci.ics.hyracks.api.client;
+import java.io.File;
import java.net.InetSocketAddress;
+import java.net.URL;
+import java.util.ArrayList;
import java.util.EnumSet;
+import java.util.List;
import java.util.Map;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.entity.FileEntity;
+import org.apache.http.impl.client.DefaultHttpClient;
+
import edu.uci.ics.hyracks.api.client.impl.JobSpecificationActivityClusterGraphGeneratorFactory;
import edu.uci.ics.hyracks.api.comm.NetworkAddress;
+import edu.uci.ics.hyracks.api.exceptions.HyracksException;
import edu.uci.ics.hyracks.api.job.IActivityClusterGraphGeneratorFactory;
import edu.uci.ics.hyracks.api.job.JobFlag;
import edu.uci.ics.hyracks.api.job.JobId;
@@ -107,4 +118,23 @@
public ClusterTopology getClusterTopology() throws Exception {
return hci.getClusterTopology();
}
+
+ @Override
+ public void deployBinary(List<String> jars) throws Exception {
+ List<URL> binaryURLs = new ArrayList<URL>();
+ if (jars != null && jars.size() > 0) {
+ HttpClient hc = new DefaultHttpClient();
+ for (String jar : jars) {
+ String url = "http://" + ccHost + ":" + ccInfo.getWebPort() + "/applications/" + jar;
+ HttpPut put = new HttpPut(url);
+ put.setEntity(new FileEntity(new File(jar), "application/octet-stream"));
+ HttpResponse response = hc.execute(put);
+ if (response.getStatusLine().getStatusCode() != 200) {
+ throw new HyracksException(response.getStatusLine().toString());
+ }
+ binaryURLs.add(new URL(url));
+ }
+ }
+ hci.deployBinary(binaryURLs);
+ }
}
\ No newline at end of file
diff --git a/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/client/IHyracksClientConnection.java b/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/client/IHyracksClientConnection.java
index fe4094f..6e4dc73 100644
--- a/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/client/IHyracksClientConnection.java
+++ b/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/client/IHyracksClientConnection.java
@@ -15,6 +15,7 @@
package edu.uci.ics.hyracks.api.client;
import java.util.EnumSet;
+import java.util.List;
import java.util.Map;
import edu.uci.ics.hyracks.api.comm.NetworkAddress;
@@ -110,4 +111,12 @@
* @throws Exception
*/
public ClusterTopology getClusterTopology() throws Exception;
+
+ /**
+ * Deploy the user-defined jars to the cluster
+ *
+ * @param jars
+ * a list of user-defined jars
+ */
+ public void deployBinary(List<String> jars) throws Exception;
}