nifi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (MINIFI-339) Begin building controlling API to facilitate control of agents
Date Fri, 08 Sep 2017 20:39:03 GMT

    [ https://issues.apache.org/jira/browse/MINIFI-339?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16159292#comment-16159292
] 

ASF GitHub Bot commented on MINIFI-339:
---------------------------------------

Github user achristianson commented on a diff in the pull request:

    https://github.com/apache/nifi-minifi-cpp/pull/134#discussion_r137881667
  
    --- Diff: libminifi/src/RemoteProcessorGroupPort.cpp ---
    @@ -221,51 +223,28 @@ void RemoteProcessorGroupPort::refreshRemoteSite2SiteInfo() {
     
       if (!rest_user_name_.empty()) {
         std::string loginUrl = this->protocol_ + this->host_ + ":" + std::to_string(this->port_)
+ "/nifi-api/access/token";
    -    token = utils::get_token(loginUrl, this->rest_user_name_, this->rest_password_,
this->securityConfig_);
    -    logger_->log_debug("Token from NiFi REST Api endpoint %s", token);
    +    utils::HTTPClient client(loginUrl, ssl_service);
    +    client.setVerbose();
    +    token = utils::get_token(client, this->rest_user_name_, this->rest_password_);
    +    logger_->log_debug("Token from NiFi REST Api endpoint %s,  %s", loginUrl, token);
         if (token.empty())
    -        return;
    +      return;
       }
     
    -  CURL *http_session = curl_easy_init();
    +  utils::HTTPClient client(fullUrl.c_str(), ssl_service);
     
    -  if (fullUrl.find("https") != std::string::npos) {
    -    this->securityConfig_.configureSecureConnection(http_session);
    -  }
    +  client.initialize("GET");
     
       struct curl_slist *list = NULL;
       if (!token.empty()) {
         std::string header = "Authorization: " + token;
         list = curl_slist_append(list, header.c_str());
    -    curl_easy_setopt(http_session, CURLOPT_HTTPHEADER, list);
    +    client.setHeaders(list);
       }
     
    -  curl_easy_setopt(http_session, CURLOPT_URL, fullUrl.c_str());
    -
    -  utils::HTTPRequestResponse content;
    -  curl_easy_setopt(http_session, CURLOPT_WRITEFUNCTION,
    -      &utils::HTTPRequestResponse::recieve_write);
    -
    -  curl_easy_setopt(http_session, CURLOPT_WRITEDATA,
    -      static_cast<void*>(&content));
    -
    -  CURLcode res = curl_easy_perform(http_session);
    -  if (list)
    -    curl_slist_free_all(list);
    -
    -  if (res == CURLE_OK) {
    -    std::string response_body(content.data.begin(), content.data.end());
    -    int64_t http_code = 0;
    -    curl_easy_getinfo(http_session, CURLINFO_RESPONSE_CODE, &http_code);
    -    char *content_type;
    -    /* ask for the content-type */
    -    curl_easy_getinfo(http_session, CURLINFO_CONTENT_TYPE, &content_type);
    -
    -    bool isSuccess = ((int32_t) (http_code / 100)) == 2
    -        && res != CURLE_ABORTED_BY_CALLBACK;
    -    bool body_empty = IsNullOrEmpty(content.data);
    -
    -    if (isSuccess && !body_empty) {
    +  if (client.submit() == CURLE_OK && client.getResponseCode() == 200) {
    --- End diff --
    
    Our curl abstraction is leaking here (referencing curl constants).


> Begin building controlling API to facilitate control of agents
> --------------------------------------------------------------
>
>                 Key: MINIFI-339
>                 URL: https://issues.apache.org/jira/browse/MINIFI-339
>             Project: Apache NiFi MiNiFi
>          Issue Type: New Feature
>          Components: C++
>            Reporter: marco polo
>            Assignee: marco polo
>            Priority: Critical
>              Labels: Durability, Reliability, Statistics
>
> Begin building the controlling API in MiNiFi C++. This API will evolve and likely have
public and private elements. As development progresses we may want more capabilities. 
> What I want to create as a straw man will be basic control and metrics gathering
> -- Start
> -- Stop
> -- Pause
> -- Gather metrics
>    ** Throughput of of flow components
>    ** Execution time ( run time minus sleep time )
>    ** Memory consumption
> -- Drain repositories
> -- Switch repository types. 
> Better employ update listener within this controlling API



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message