use of org.apache.nifi.minifi.commons.schema.ConfigSchema in project nifi-minifi by apache.
the class ConfigTransformerTest method testConfigFileTransform.
public void testConfigFileTransform(String configFile) throws Exception {
ConfigSchema configSchema = SchemaLoader.loadConfigSchemaFromYaml(ConfigTransformerTest.class.getClassLoader().getResourceAsStream(configFile));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ConfigTransformer.writeFlowXmlFile(configSchema, outputStream);
Document document = documentBuilder.parse(new ByteArrayInputStream(outputStream.toByteArray()));
testProcessGroup((Element) xPathFactory.newXPath().evaluate("flowController/rootGroup", document, XPathConstants.NODE), configSchema.getProcessGroupSchema());
}
use of org.apache.nifi.minifi.commons.schema.ConfigSchema in project nifi-minifi by apache.
the class PullHttpChangeIngestor method run.
@Override
public void run() {
try {
logger.debug("Attempting to pull new config");
HttpUrl.Builder builder = new HttpUrl.Builder().host(hostReference.get()).port(portReference.get()).encodedPath(pathReference.get());
String query = queryReference.get();
if (!StringUtil.isNullOrEmpty(query)) {
builder = builder.encodedQuery(query);
}
final HttpUrl url = builder.scheme(connectionScheme).build();
final Request.Builder requestBuilder = new Request.Builder().get().url(url);
if (useEtag) {
requestBuilder.addHeader("If-None-Match", lastEtag);
}
final Request request = requestBuilder.build();
final OkHttpClient httpClient = httpClientReference.get();
final Call call = httpClient.newCall(request);
final Response response = call.execute();
logger.debug("Response received: {}", response.toString());
int code = response.code();
if (code == NOT_MODIFIED_STATUS_CODE) {
return;
}
if (code >= 400) {
throw new IOException("Got response code " + code + " while trying to pull configuration: " + response.body().string());
}
ResponseBody body = response.body();
if (body == null) {
logger.warn("No body returned when pulling a new configuration");
return;
}
ByteBuffer bodyByteBuffer = ByteBuffer.wrap(body.bytes());
ByteBuffer readOnlyNewConfig = null;
// checking if some parts of the configuration must be preserved
if (overrideSecurity) {
readOnlyNewConfig = bodyByteBuffer.asReadOnlyBuffer();
} else {
logger.debug("Preserving previous security properties...");
// get the current security properties from the current configuration file
final File configFile = new File(properties.get().getProperty(RunMiNiFi.MINIFI_CONFIG_FILE_KEY));
ConvertableSchema<ConfigSchema> configSchema = SchemaLoader.loadConvertableSchemaFromYaml(new FileInputStream(configFile));
ConfigSchema currentSchema = configSchema.convert();
SecurityPropertiesSchema secProps = currentSchema.getSecurityProperties();
// override the security properties in the pulled configuration with the previous properties
configSchema = SchemaLoader.loadConvertableSchemaFromYaml(new ByteBufferInputStream(bodyByteBuffer.duplicate()));
ConfigSchema newSchema = configSchema.convert();
newSchema.setSecurityProperties(secProps);
// return the updated configuration preserving the previous security configuration
readOnlyNewConfig = ByteBuffer.wrap(new Yaml().dump(newSchema.toMap()).getBytes()).asReadOnlyBuffer();
}
if (differentiator.isNew(readOnlyNewConfig)) {
logger.debug("New change received, notifying listener");
configurationChangeNotifier.notifyListeners(readOnlyNewConfig);
logger.debug("Listeners notified");
} else {
logger.debug("Pulled config same as currently running.");
}
if (useEtag) {
lastEtag = (new StringBuilder("\"")).append(response.header("ETag").trim()).append("\"").toString();
}
} catch (Exception e) {
logger.warn("Hit an exception while trying to pull", e);
}
}
use of org.apache.nifi.minifi.commons.schema.ConfigSchema in project nifi-minifi by apache.
the class AbstractTestSecure method testUser1.
@Test
public void testUser1() throws Exception {
SSLContext sslContext = loadSslContext("user1");
assertReturnCode("", sslContext, 403);
ConfigSchema configSchema = assertReturnCode("?class=raspi2", sslContext, 200);
assertEquals("raspi2.v1", configSchema.getFlowControllerProperties().getName());
assertReturnCode("?class=raspi3", sslContext, 403);
}
use of org.apache.nifi.minifi.commons.schema.ConfigSchema in project nifi-minifi by apache.
the class AbstractTestUnsecure method testCurrentVersion.
@Test
public void testCurrentVersion() throws IOException, SchemaLoaderException {
ConfigSchema configSchema = getConfigSchema(c2Url + "?class=raspi3");
assertEquals(3, configSchema.getVersion());
assertEquals("raspi3.v2", configSchema.getFlowControllerProperties().getName());
}
use of org.apache.nifi.minifi.commons.schema.ConfigSchema in project nifi-minifi by apache.
the class AbstractTestUnsecure method getConfigSchema.
public ConfigSchema getConfigSchema(String urlString) throws IOException, SchemaLoaderException {
HttpURLConnection urlConnection = openSuperUserUrlConnection(urlString);
ConfigSchema configSchema;
try (InputStream inputStream = urlConnection.getInputStream()) {
configSchema = SchemaLoader.loadConfigSchemaFromYaml(inputStream);
} finally {
urlConnection.disconnect();
}
return configSchema;
}
Aggregations