Commit 8d7bd56b authored by Spiros Koulouzis's avatar Spiros Koulouzis

Merge commit 'cff8a3c0' into ansible

Conflicts:
	drip-api/src/main/java/nl/uva/sne/drip/api/service/DeployService.java
	drip-api/src/main/java/nl/uva/sne/drip/data/v1/external/ansible/AnsibleOutput.java
	drip-api/src/main/java/nl/uva/sne/drip/data/v1/external/ansible/AnsibleResult.java
	drip-api/src/main/java/nl/uva/sne/drip/data/v1/external/ansible/Invocation.java
parents ece0b4bf cff8a3c0
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
<include pattern="nl.uva.sne.drip.api.v1.rest.*" /> <include pattern="nl.uva.sne.drip.api.v1.rest.*" />
<include pattern="nl.uva.sne.drip.api.v0.rest.*" /> <include pattern="nl.uva.sne.drip.api.v0.rest.*" />
<include pattern="nl.uva.sne.drip.data.v1.external.*" /> <include pattern="nl.uva.sne.drip.data.v1.external.*" />
<include pattern="nl.uva.sne.drip.data.v1.external.ansible.*" />
<include pattern="nl.uva.sne.drip.data.v0.external.*" /> <include pattern="nl.uva.sne.drip.data.v0.external.*" />
<exclude pattern="nl.uva.sne.drip.data.internal.*"/> <exclude pattern="nl.uva.sne.drip.data.internal.*"/>
</api-classes> </api-classes>
......
...@@ -9,8 +9,6 @@ import com.rabbitmq.client.ConnectionFactory; ...@@ -9,8 +9,6 @@ import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DefaultConsumer; import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope; import com.rabbitmq.client.Envelope;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
...@@ -18,11 +16,8 @@ import java.util.concurrent.TimeoutException; ...@@ -18,11 +16,8 @@ import java.util.concurrent.TimeoutException;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import nl.uva.sne.drip.data.v1.external.Message; import nl.uva.sne.drip.data.v1.external.Message;
import nl.uva.sne.drip.data.v1.external.MessageParameter;
import nl.uva.sne.drip.commons.utils.Converter; import nl.uva.sne.drip.commons.utils.Converter;
import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject;
/* /*
* Copyright 2017 S. Koulouzis, Wang Junchao, Huan Zhou, Yang Hu * Copyright 2017 S. Koulouzis, Wang Junchao, Huan Zhou, Yang Hu
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
*/ */
package nl.uva.sne.drip.api.service; package nl.uva.sne.drip.api.service;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
...@@ -48,6 +50,7 @@ import nl.uva.sne.drip.api.dao.DeployDao; ...@@ -48,6 +50,7 @@ import nl.uva.sne.drip.api.dao.DeployDao;
import nl.uva.sne.drip.api.dao.KeyPairDao; import nl.uva.sne.drip.api.dao.KeyPairDao;
import nl.uva.sne.drip.api.exception.KeyException; import nl.uva.sne.drip.api.exception.KeyException;
import nl.uva.sne.drip.data.v1.external.KeyPair; import nl.uva.sne.drip.data.v1.external.KeyPair;
import nl.uva.sne.drip.data.v1.external.ansible.AnsibleOutput;
/** /**
* *
...@@ -210,12 +213,12 @@ public class DeployService { ...@@ -210,12 +213,12 @@ public class DeployService {
return ansibleParameter; return ansibleParameter;
} }
private DeployResponse handleResponse(List<MessageParameter> params) throws KeyException { private DeployResponse handleResponse(List<MessageParameter> params) throws KeyException, IOException {
DeployResponse deployResponse = new DeployResponse(); DeployResponse deployResponse = new DeployResponse();
for (MessageParameter p : params) { for (MessageParameter p : params) {
String name = p.getName(); String name = p.getName();
System.err.println(name + " : " + p.getValue());
if (name.equals("credential")) { if (name.equals("credential")) {
String value = p.getValue(); String value = p.getValue();
Key k = new Key(); Key k = new Key();
...@@ -224,10 +227,16 @@ public class DeployService { ...@@ -224,10 +227,16 @@ public class DeployService {
KeyPair pair = new KeyPair(); KeyPair pair = new KeyPair();
pair.setPrivateKey(k); pair.setPrivateKey(k);
deployResponse.setKey(pair); deployResponse.setKey(pair);
save(deployResponse);
return deployResponse;
} }
if (name.equals("ansible_output")) { if (name.equals("ansible_output")) {
String value = p.getValue(); String value = p.getValue();
ObjectMapper mapper = new ObjectMapper();
System.err.println(value); System.err.println(value);
List<AnsibleOutput> outputList = mapper.readValue(value, new TypeReference<List<AnsibleOutput>>() {
});
deployResponse.setAnsibleOutputList(outputList);
} }
} }
save(deployResponse); save(deployResponse);
......
...@@ -15,31 +15,44 @@ ...@@ -15,31 +15,44 @@
*/ */
package nl.uva.sne.drip.data.v1.external; package nl.uva.sne.drip.data.v1.external;
import com.webcohesion.enunciate.metadata.DocumentationExample; import java.util.List;
import org.springframework.data.annotation.Id; import nl.uva.sne.drip.data.v1.external.ansible.AnsibleOutput;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
/** /**
* This class represents the response of a deploy request. It may hold a key * This class represents the response of a deploy request. It may hold a key
* pair used for logging in and managing a docker cluster. Currently they key * pair used for logging in and managing a docker cluster. Currently they key
* pair is only used by kubernetes * pair is only used by kubernetes
* *
* @author S. Koulouzis * @author S. Koulouzis
*/ */
@Document @Document
public class DeployResponse extends DeployRequest { public class DeployResponse extends DeployRequest {
private KeyPair key; private KeyPair key;
private List<AnsibleOutput> ansibleOutputList;
public void setAnsibleOutputList(List<AnsibleOutput> outputList) {
this.ansibleOutputList = outputList;
}
/**
* @return the ansibleOutputList
*/
public List<AnsibleOutput> getAnsibleOutputList() {
return ansibleOutputList;
}
public void setKey(KeyPair key) { public void setKey(KeyPair key) {
this.key = key; this.key = key;
} }
/** /**
* The key pair to log in and manage a docker cluster * The key pair to log in and manage a docker cluster
* @return *
* @return
*/ */
public KeyPair getKeyPair() { public KeyPair getKeyPair() {
return key; return key;
} }
......
...@@ -15,16 +15,18 @@ ...@@ -15,16 +15,18 @@
*/ */
package nl.uva.sne.drip.data.v1.external; package nl.uva.sne.drip.data.v1.external;
import com.fasterxml.jackson.annotation.JsonInclude;
import nl.uva.sne.drip.api.exception.KeyException; import nl.uva.sne.drip.api.exception.KeyException;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
/** /**
* This class hold the pair of public private keys. The kyes may be used for * This class hold the pair of public private keys. The keys may be used for
* logging in VMs. * logging in VMs.
* *
* @author S. Koulouzis * @author S. Koulouzis
*/ */
@Document @Document
@JsonInclude(JsonInclude.Include.NON_NULL)
public class KeyPair extends OwnedObject { public class KeyPair extends OwnedObject {
private Key privateKey; private Key privateKey;
......
/*
* Copyright 2017 S. Koulouzis, Wang Junchao, Huan Zhou, Yang Hu
*
* Licensed 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 nl.uva.sne.drip.data.v1.external.ansible;
/**
*
* @author S. Koulouzis
*/
import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"_ansible_parsed",
"changed",
"_ansible_no_log",
"cache_updated",
"_ansible_item_result",
"item",
"invocation",
"cache_update_time"
})
public class Result_ {
@JsonProperty("_ansible_parsed")
private Boolean ansibleParsed;
@JsonProperty("changed")
private Boolean changed;
@JsonProperty("_ansible_no_log")
private Boolean ansibleNoLog;
@JsonProperty("cache_updated")
private Boolean cacheUpdated;
@JsonProperty("_ansible_item_result")
private Boolean ansibleItemResult;
@JsonProperty("item")
private List<String> item = null;
@JsonProperty("invocation")
private Invocation invocation;
@JsonProperty("cache_update_time")
private Integer cacheUpdateTime;
@JsonProperty("_ansible_parsed")
public Boolean getAnsibleParsed() {
return ansibleParsed;
}
@JsonProperty("_ansible_parsed")
public void setAnsibleParsed(Boolean ansibleParsed) {
this.ansibleParsed = ansibleParsed;
}
@JsonProperty("changed")
public Boolean getChanged() {
return changed;
}
@JsonProperty("changed")
public void setChanged(Boolean changed) {
this.changed = changed;
}
@JsonProperty("_ansible_no_log")
public Boolean getAnsibleNoLog() {
return ansibleNoLog;
}
@JsonProperty("_ansible_no_log")
public void setAnsibleNoLog(Boolean ansibleNoLog) {
this.ansibleNoLog = ansibleNoLog;
}
@JsonProperty("cache_updated")
public Boolean getCacheUpdated() {
return cacheUpdated;
}
@JsonProperty("cache_updated")
public void setCacheUpdated(Boolean cacheUpdated) {
this.cacheUpdated = cacheUpdated;
}
@JsonProperty("_ansible_item_result")
public Boolean getAnsibleItemResult() {
return ansibleItemResult;
}
@JsonProperty("_ansible_item_result")
public void setAnsibleItemResult(Boolean ansibleItemResult) {
this.ansibleItemResult = ansibleItemResult;
}
@JsonProperty("item")
public List<String> getItem() {
return item;
}
@JsonProperty("item")
public void setItem(List<String> item) {
this.item = item;
}
@JsonProperty("invocation")
public Invocation getInvocation() {
return invocation;
}
@JsonProperty("invocation")
public void setInvocation(Invocation invocation) {
this.invocation = invocation;
}
@JsonProperty("cache_update_time")
public Integer getCacheUpdateTime() {
return cacheUpdateTime;
}
@JsonProperty("cache_update_time")
public void setCacheUpdateTime(Integer cacheUpdateTime) {
this.cacheUpdateTime = cacheUpdateTime;
}
}
...@@ -81,9 +81,9 @@ def execute_playbook(hosts, playbook_path,user,ssh_key_file,extra_vars,passwords ...@@ -81,9 +81,9 @@ def execute_playbook(hosts, playbook_path,user,ssh_key_file,extra_vars,passwords
inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list=hosts) inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list=hosts)
Options = namedtuple('Options', ['listtags', 'listtasks', 'listhosts', 'syntax', 'connection','module_path', 'forks', 'remote_user', 'private_key_file', 'ssh_common_args', 'ssh_extra_args', 'sftp_extra_args', 'scp_extra_args', 'become', 'become_method', 'become_user', 'verbosity', 'check', 'aaaaaaaaaaa']) Options = namedtuple('Options', ['listtags', 'listtasks', 'listhosts', 'syntax', 'connection','module_path', 'forks', 'remote_user', 'private_key_file', 'ssh_common_args', 'ssh_extra_args', 'sftp_extra_args', 'scp_extra_args', 'become', 'become_method', 'become_user', 'verbosity', 'check'])
options = Options(listtags=False, listtasks=False, listhosts=False, syntax=False, connection='smart', module_path=None, forks=None, remote_user=user, private_key_file=ssh_key_file, ssh_common_args=None, ssh_extra_args=None, sftp_extra_args=None, scp_extra_args=None, become=True, become_method='sudo', become_user='root', verbosity=None, check=False , aaaaaaaaaaa=False) options = Options(listtags=False, listtasks=False, listhosts=False, syntax=False, connection='smart', module_path=None, forks=None, remote_user=user, private_key_file=ssh_key_file, ssh_common_args=None, ssh_extra_args=None, sftp_extra_args=None, scp_extra_args=None, become=True, become_method='sudo', become_user='root', verbosity=None, check=False )
variable_manager.extra_vars = extra_vars variable_manager.extra_vars = extra_vars
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment