Skip to content

Commit

Permalink
testing updates
Browse files Browse the repository at this point in the history
  • Loading branch information
AO-StreetArt committed Jul 18, 2018
1 parent bbb0f8b commit 7f3a192
Show file tree
Hide file tree
Showing 10 changed files with 399 additions and 442 deletions.
247 changes: 30 additions & 217 deletions aossl/consul/consul_admin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,6 @@ THE SOFTWARE.

// Consul Administrator

void AOSSL::ConsulAdmin::init(std::string& caddr, int tout) {
consul_addr.assign(caddr);
timeout = tout;
}

void AOSSL::ConsulAdmin::init(std::string& caddr, int tout, std::string& cert) {
consul_addr.assign(caddr);
timeout = tout;
secured = true;
cert_location.assign(cert);
}

void AOSSL::ConsulAdmin::base64_decode_by_reference(\
std::string const& encoded_string, AOSSL::StringBuffer& ret_buffer) {
std::string decode_return_string = "";
Expand Down Expand Up @@ -96,146 +84,6 @@ AOSSL::StringBuffer* \
return buf;
}

void AOSSL::ConsulAdmin::secure_put(std::string query_url, std::string body,\
AOSSL::StringBuffer& ret_buffer) {
// Get the URL
std::string url_string = consul_addr;
try {
const Poco::URI uri( url_string );
const Poco::Net::Context::Ptr context( new Poco::Net::Context( Poco::Net::Context::CLIENT_USE, "", "", cert_location ) );
Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort(), context );
Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_PUT, query_url );
req.setContentLength(body.length());
if (acl_active) {
req.add("X-Consul-Token", acl_token);
}
session.sendRequest(req) << body;
Poco::Net::HTTPResponse res;
std::istream& rs = session.receiveResponse(res);
std::istreambuf_iterator<char> eos;
std::string resp(std::istreambuf_iterator<char>(rs), eos);
ret_buffer.success = true;
ret_buffer.val.assign(resp);
} catch( const Poco::Net::SSLException& e ) {
ret_buffer.success = false;
ret_buffer.err_msg.assign(e.message());
} catch( const std::exception& e ) {
ret_buffer.success = false;
ret_buffer.err_msg.assign(e.what());
}
}

void AOSSL::ConsulAdmin::put_by_reference(std::string query_url, std::string body,\
AOSSL::StringBuffer& ret_buffer) {
// Get the URL
std::string url_string = consul_addr;
try {
const Poco::URI uri( url_string );
Poco::Net::HTTPClientSession session(uri.getHost(), uri.getPort());
Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_PUT, query_url );
req.setContentLength(body.length());
if (acl_active) {
req.add("X-Consul-Token", acl_token);
}
session.sendRequest(req) << body;
Poco::Net::HTTPResponse res;
std::istream& rs = session.receiveResponse(res);
std::istreambuf_iterator<char> eos;
std::string resp(std::istreambuf_iterator<char>(rs), eos);
ret_buffer.success = true;
ret_buffer.val.assign(resp);
} catch( const Poco::Net::SSLException& e ) {
ret_buffer.success = false;
ret_buffer.err_msg.assign(e.message());
} catch( const std::exception& e ) {
ret_buffer.success = false;
ret_buffer.err_msg.assign(e.what());
}
}

void AOSSL::ConsulAdmin::query_by_reference(std::string query_url, \
AOSSL::StringBuffer& ret_buffer, bool is_get) {
// Get the URL
std::string url_string = consul_addr;
try {
const Poco::URI uri( url_string );
Poco::Net::HTTPClientSession session(uri.getHost(), uri.getPort());
std::string req_type;
if (is_get) {
req_type = Poco::Net::HTTPRequest::HTTP_GET;
} else {
req_type = Poco::Net::HTTPRequest::HTTP_DELETE;
}
Poco::Net::HTTPRequest req(req_type, query_url );
if (acl_active) {
req.add("X-Consul-Token", acl_token);
}
session.sendRequest(req);
Poco::Net::HTTPResponse res;
std::istream& rs = session.receiveResponse(res);
std::string response_body;
Poco::StreamCopier::copyToString(rs, response_body);
ret_buffer.success = true;
ret_buffer.val.assign(response_body);
} catch( const Poco::Net::SSLException& e ) {
ret_buffer.success = false;
ret_buffer.err_msg.assign(e.message());
} catch( const std::exception& e ) {
ret_buffer.success = false;
ret_buffer.err_msg.assign(e.what());
}
}

void AOSSL::ConsulAdmin::secure_query(std::string query_url, \
AOSSL::StringBuffer& ret_buffer, bool is_get) {
// Get the URL
std::string url_string = consul_addr;
try {
const Poco::URI uri( url_string );
const Poco::Net::Context::Ptr context( new Poco::Net::Context( Poco::Net::Context::CLIENT_USE, "", "", cert_location ) );
Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort(), context );
std::string req_type;
if (is_get) {
req_type = Poco::Net::HTTPRequest::HTTP_GET;
} else {
req_type = Poco::Net::HTTPRequest::HTTP_DELETE;
}
Poco::Net::HTTPRequest req(req_type, query_url );
if (acl_active) {
req.add("X-Consul-Token", acl_token);
}
session.sendRequest(req);
Poco::Net::HTTPResponse res;
std::istream& rs = session.receiveResponse(res);
std::istreambuf_iterator<char> eos;
std::string resp(std::istreambuf_iterator<char>(rs), eos);
ret_buffer.success = true;
ret_buffer.val.assign(resp);
} catch( const Poco::Net::SSLException& e ) {
ret_buffer.success = false;
ret_buffer.err_msg.assign(e.message());
} catch( const std::exception& e ) {
ret_buffer.success = false;
ret_buffer.err_msg.assign(e.what());
}
}

// Post a query to consul
AOSSL::StringBuffer* AOSSL::ConsulAdmin::query_safe(std::string query_url) {
// Build the request buffer
AOSSL::StringBuffer *buf = new AOSSL::StringBuffer;
query_by_reference(query_url, *buf);
return buf;
}

// Post a query to consul
AOSSL::StringBuffer* AOSSL::ConsulAdmin::secure_query_safe(std::string query_url) {
// Build the request buffer
AOSSL::StringBuffer *buf = new AOSSL::StringBuffer;
secure_query(query_url, *buf);
return buf;
}

// Service Registry Functions

bool AOSSL::ConsulAdmin::register_service(const ServiceInterface& s) {
Expand All @@ -247,11 +95,7 @@ bool AOSSL::ConsulAdmin::register_service(const ServiceInterface& s) {

// Send the HTTP Request
AOSSL::StringBuffer buf;
if (!secured) {
put_by_reference(query_url, body_str, buf);
} else {
secure_put(query_url, body_str, buf);
}
AOSSL::BaseHttpClient::put_by_reference(query_url, body_str, buf);
return buf.success;
}

Expand All @@ -263,41 +107,31 @@ bool AOSSL::ConsulAdmin::deregister_service(const ServiceInterface& s) {
// Send the HTTP Request
AOSSL::StringBuffer buf;
std::string body_str = "";
if (!secured) {
put_by_reference(query_url, body_str, buf);
} else {
secure_put(query_url, body_str, buf);
}
AOSSL::BaseHttpClient::put_by_reference(query_url, body_str, buf);
return buf.success;
}

// Basic Queries

AOSSL::StringBuffer* AOSSL::ConsulAdmin::services() {
std::string url = "/v1/agent/services";
if (!secured) {
return query_safe(url);
} else {
return secure_query_safe(url);
}
AOSSL::StringBuffer *buf = new AOSSL::StringBuffer;
AOSSL::BaseHttpClient::get_by_reference(url, *buf);
return buf;
}

AOSSL::StringBuffer* AOSSL::ConsulAdmin::agent_info() {
std::string url = "/v1/agent/self";
if (!secured) {
return query_safe(url);
} else {
return secure_query_safe(url);
}
AOSSL::StringBuffer *buf = new AOSSL::StringBuffer;
AOSSL::BaseHttpClient::get_by_reference(url, *buf);
return buf;
}

AOSSL::StringBuffer* AOSSL::ConsulAdmin::healthy_services() {
std::string url = "v1/health/service/web?passing";
if (!secured) {
return query_safe(url);
} else {
return secure_query_safe(url);
}
AOSSL::StringBuffer *buf = new AOSSL::StringBuffer;
AOSSL::BaseHttpClient::get_by_reference(url, *buf);
return buf;
}

// Configuration Key-Value Storage Functions
Expand All @@ -309,11 +143,7 @@ bool AOSSL::ConsulAdmin::set_config_value(std::string key, std::string val) {

// Send the HTTP Request
AOSSL::StringBuffer buf;
if (!secured) {
put_by_reference(query_url, val, buf);
} else {
secure_put(query_url, val, buf);
}
AOSSL::BaseHttpClient::put_by_reference(query_url, val, buf);
return buf.success;
}

Expand All @@ -322,25 +152,16 @@ bool AOSSL::ConsulAdmin::del_config_value(std::string key) {
std::string query_url = "/v1/kv/";
query_url = query_url.append(key);

AOSSL::StringBuffer *buf = new AOSSL::StringBuffer;
if (!secured) {
query_by_reference(query_url, *buf, false);
} else {
secure_query(query_url, *buf, false);
}
// Send the HTTP Request
bool success = buf->success;
delete buf;
return success;
AOSSL::StringBuffer buf;
AOSSL::BaseHttpClient::delete_by_reference(query_url, buf);
return buf.success;
}

AOSSL::StringBuffer* AOSSL::ConsulAdmin::datacenters() {
std::string url = "/v1/catalog/datacenters";
if (!secured) {
return query_safe(url);
} else {
return secure_query_safe(url);
}
AOSSL::StringBuffer *buf = new AOSSL::StringBuffer;
AOSSL::BaseHttpClient::get_by_reference(url, *buf);
return buf;
}

AOSSL::StringBuffer* AOSSL::ConsulAdmin::nodes_dc(std::string data_center) {
Expand All @@ -349,11 +170,9 @@ AOSSL::StringBuffer* AOSSL::ConsulAdmin::nodes_dc(std::string data_center) {
url = url.append("?dc=");
url = url.append(data_center);
}
if (!secured) {
return query_safe(url);
} else {
return secure_query_safe(url);
}
AOSSL::StringBuffer *buf = new AOSSL::StringBuffer;
AOSSL::BaseHttpClient::get_by_reference(url, *buf);
return buf;
}

AOSSL::StringBuffer* AOSSL::ConsulAdmin::services_dc(std::string data_center) {
Expand All @@ -362,21 +181,17 @@ AOSSL::StringBuffer* AOSSL::ConsulAdmin::services_dc(std::string data_center) {
url = url.append("?dc=");
url = url.append(data_center);
}
if (!secured) {
return query_safe(url);
} else {
return secure_query_safe(url);
}
AOSSL::StringBuffer *buf = new AOSSL::StringBuffer;
AOSSL::BaseHttpClient::get_by_reference(url, *buf);
return buf;
}

AOSSL::StringBuffer* AOSSL::ConsulAdmin::nodes_service(std::string service) {
std::string url = "/v1/catalog/service/";
url = url.append(service);
if (!secured) {
return query_safe(url);
} else {
return secure_query_safe(url);
}
AOSSL::StringBuffer *buf = new AOSSL::StringBuffer;
AOSSL::BaseHttpClient::get_by_reference(url, *buf);
return buf;
}

AOSSL::StringBuffer* AOSSL::ConsulAdmin::services_node(std::string node, \
Expand All @@ -387,9 +202,7 @@ AOSSL::StringBuffer* AOSSL::ConsulAdmin::services_node(std::string node, \
url = url.append("?dc=");
url = url.append(data_center);
}
if (!secured) {
return query_safe(url);
} else {
return secure_query_safe(url);
}
AOSSL::StringBuffer *buf = new AOSSL::StringBuffer;
AOSSL::BaseHttpClient::get_by_reference(url, *buf);
return buf;
}

0 comments on commit 7f3a192

Please sign in to comment.