| 235 | } |
| 236 | |
| 237 | std::shared_ptr<core::controller::ControllerService> getControllerService(const std::shared_ptr<minifi::Configure> &configuration, const std::string &service_name) { |
| 238 | |
| 239 | std::string prov_repo_class = "provenancerepository"; |
| 240 | std::string flow_repo_class = "flowfilerepository"; |
| 241 | std::string nifi_configuration_class_name = "yamlconfiguration"; |
| 242 | std::string content_repo_class = "filesystemrepository"; |
| 243 | |
| 244 | configuration->get(minifi::Configure::nifi_provenance_repository_class_name, prov_repo_class); |
| 245 | // Create repos for flow record and provenance |
| 246 | std::shared_ptr<core::Repository> prov_repo = core::createRepository(prov_repo_class, true, "provenance"); |
| 247 | prov_repo->initialize(configuration); |
| 248 | |
| 249 | configuration->get(minifi::Configure::nifi_flow_repository_class_name, flow_repo_class); |
| 250 | |
| 251 | std::shared_ptr<core::Repository> flow_repo = core::createRepository(flow_repo_class, true, "flowfile"); |
| 252 | |
| 253 | flow_repo->initialize(configuration); |
| 254 | |
| 255 | configuration->get(minifi::Configure::nifi_content_repository_class_name, content_repo_class); |
| 256 | |
| 257 | std::shared_ptr<core::ContentRepository> content_repo = core::createContentRepository(content_repo_class, true, "content"); |
| 258 | |
| 259 | content_repo->initialize(configuration); |
| 260 | |
| 261 | std::string content_repo_path; |
| 262 | if (configuration->get(minifi::Configure::nifi_dbcontent_repository_directory_default, content_repo_path)) { |
| 263 | std::cout << "setting default dir to " << content_repo_path << std::endl; |
| 264 | minifi::setDefaultDirectory(content_repo_path); |
| 265 | } |
| 266 | |
| 267 | configuration->get(minifi::Configure::nifi_configuration_class_name, nifi_configuration_class_name); |
| 268 | |
| 269 | std::shared_ptr<minifi::io::StreamFactory> stream_factory = minifi::io::StreamFactory::getInstance(configuration); |
| 270 | |
| 271 | std::unique_ptr<core::FlowConfiguration> flow_configuration = core::createFlowConfiguration( |
| 272 | prov_repo, flow_repo, content_repo, configuration, stream_factory, nifi_configuration_class_name); |
| 273 | |
| 274 | std::shared_ptr<minifi::FlowController> controller = std::unique_ptr<minifi::FlowController>( |
| 275 | new minifi::FlowController(prov_repo, flow_repo, configuration, std::move(flow_configuration), content_repo)); |
| 276 | controller->load(); |
| 277 | auto service = controller->getControllerService(service_name); |
| 278 | if (service) |
| 279 | service->onEnable(); |
| 280 | return service; |
| 281 | } |
| 282 | |
| 283 | void printManifest(const std::shared_ptr<minifi::Configure> &configuration) { |
| 284 |
no test coverage detected