This is an automated email from the ASF dual-hosted git repository. krisztiankasa pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ambari-infra.git
The following commit(s) were added to refs/heads/master by this push: new 47f9f74 AMBARI-24777 - Infra Manager: Remove dependencies due to security concerns. (#7) 47f9f74 is described below commit 47f9f7474582ee543aaa0d70bb3699634bc8a7ab Author: kasakrisz <33458261+kasakr...@users.noreply.github.com> AuthorDate: Wed Oct 17 15:39:56 2018 +0200 AMBARI-24777 - Infra Manager: Remove dependencies due to security concerns. (#7) --- .../ambari/infra/steps/AbstractInfraSteps.java | 2 +- .../test/resources/stories/infra_api_tests.story | 2 +- ambari-infra-manager/pom.xml | 72 +++++++-- .../java/org/apache/ambari/infra/InfraManager.java | 9 +- .../conf/InfraManagerJerseyResourceConfig.java | 9 +- .../infra/conf/InfraManagerServletConfig.java | 35 +---- .../conf/InfraManagerWebServerCustomizer.java | 51 +++++++ .../infra/doc/InfraManagerApiDocStorage.java | 34 +++-- .../org/apache/ambari/infra/rest/JobResource.java | 38 ++--- .../src/main/resources/infra-manager-env.sh | 8 +- .../src/main/resources/swagger/swagger.html | 161 +++++++-------------- pom.xml | 5 + 12 files changed, 222 insertions(+), 204 deletions(-) diff --git a/ambari-infra-manager-it/src/test/java/org/apache/ambari/infra/steps/AbstractInfraSteps.java b/ambari-infra-manager-it/src/test/java/org/apache/ambari/infra/steps/AbstractInfraSteps.java index da962b9..24d603b 100644 --- a/ambari-infra-manager-it/src/test/java/org/apache/ambari/infra/steps/AbstractInfraSteps.java +++ b/ambari-infra-manager-it/src/test/java/org/apache/ambari/infra/steps/AbstractInfraSteps.java @@ -137,7 +137,6 @@ public abstract class AbstractInfraSteps { solrInputDocument.addField("level", "INFO"); solrInputDocument.addField("resource", "/ats/active"); solrInputDocument.addField("ip", "172.18.0.2"); - solrInputDocument.addField("evtTime", "2017-12-08T10:23:16.452Z"); solrInputDocument.addField("req_caller_id", "HIVE_QUERY_ID:ambari-qa_20160317200111_223b3079-4a2d-431c-920f-6ba37ed63e9f"); solrInputDocument.addField("repoType", 1); solrInputDocument.addField("enforcer", "hadoop-acl"); @@ -145,6 +144,7 @@ public abstract class AbstractInfraSteps { solrInputDocument.addField("message_md5", "-6778765776916226588"); solrInputDocument.addField("event_md5", "5627261521757462732"); solrInputDocument.addField("logtime", new Date(logtime.toInstant().toEpochMilli())); + solrInputDocument.addField("evtTime", new Date(logtime.toInstant().toEpochMilli())); solrInputDocument.addField("_ttl_", "+7DAYS"); solrInputDocument.addField("_expire_at_", "2017-12-15T10:23:19.106Z"); solr.add(solrInputDocument); diff --git a/ambari-infra-manager-it/src/test/resources/stories/infra_api_tests.story b/ambari-infra-manager-it/src/test/resources/stories/infra_api_tests.story index 729d609..2330474 100644 --- a/ambari-infra-manager-it/src/test/resources/stories/infra_api_tests.story +++ b/ambari-infra-manager-it/src/test/resources/stories/infra_api_tests.story @@ -44,7 +44,7 @@ Then solr does not contain documents between 2012-10-09T05:00:00.000Z and 2012-1 Scenario: Archiving documents to hdfs Given 1000 documents in solr with logtime from 2014-01-04T05:00:00.000Z to 2014-01-06T20:00:00.000Z -When start archive_audit_logs job with parameters start=2014-01-04T05:00:00.000Z,end=2014-01-06T20:00:00.000Z,destination=HDFS after 2 seconds +When start archive_audit_logs job with parameters start=2014-01-04T05:00:00.000Z,end=2014-01-06T20:00:00.000Z,destination=HDFS,hdfsDestinationDirectory=/test_audit_logs after 2 seconds Then Check 7 files exists on hdfs with filenames containing the text audit_logs_-_2014-01-0 in the folder /test_audit_logs after 10 seconds And solr does not contain documents between 2014-01-04T05:00:00.000Z and 2014-01-06T20:00:00.000Z after 10 seconds diff --git a/ambari-infra-manager/pom.xml b/ambari-infra-manager/pom.xml index f28f59d..3cd9860 100644 --- a/ambari-infra-manager/pom.xml +++ b/ambari-infra-manager/pom.xml @@ -30,15 +30,15 @@ <artifactId>ambari-infra-manager</artifactId> <properties> - <spring.version>4.3.17.RELEASE</spring.version> - <spring.security.version>4.2.4.RELEASE</spring.security.version> - <spring.ldap.version>2.2.0.RELEASE</spring.ldap.version> - <jersey.version>2.25.1</jersey.version> + <spring.version>5.1.0.RELEASE</spring.version> + <spring.security.version>5.1.0.RELEASE</spring.security.version> + <spring.ldap.version>2.3.2.RELEASE</spring.ldap.version> + <jersey.version>2.27</jersey.version> <jetty.version>9.4.11.v20180605</jetty.version> <spring-batch.version>3.0.7.RELEASE</spring-batch.version> <sqlite.version>3.8.11.2</sqlite.version> - <spring-data-solr.version>2.0.2.RELEASE</spring-data-solr.version> - <spring-boot.version>1.5.13.RELEASE</spring-boot.version> + <spring-data-solr.version>3.0.10.RELEASE</spring-data-solr.version> + <spring-boot.version>2.0.5.RELEASE</spring-boot.version> <swagger.version>1.5.16</swagger.version> <jjwt.version>0.6.0</jjwt.version> </properties> @@ -121,6 +121,11 @@ <dependencies> <dependency> + <groupId>javax.validation</groupId> + <artifactId>validation-api</artifactId> + <version>2.0.1.Final</version> + </dependency> + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> @@ -194,26 +199,44 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring-boot.version}</version> + <exclusions> + <exclusion> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-tomcat</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-security</artifactId> + <artifactId>spring-boot-starter-jetty</artifactId> <version>${spring-boot.version}</version> + <exclusions> + <exclusion> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-tomcat</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-actuator</artifactId> + <artifactId>spring-boot-starter-security</artifactId> <version>${spring-boot.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-jetty</artifactId> + <artifactId>spring-boot-starter-actuator</artifactId> <version>${spring-boot.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jersey</artifactId> <version>${spring-boot.version}</version> + <exclusions> + <exclusion> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-tomcat</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> @@ -316,9 +339,25 @@ <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-security</artifactId> </exclusion> + <exclusion> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + </exclusion> + <exclusion> + <groupId>jdk.tools</groupId> + <artifactId>jdk.tools</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache.commons</groupId> + <artifactId>commons-compress</artifactId> + </exclusion> </exclusions> </dependency> <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + </dependency> + <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs-client</artifactId> <version>${hadoop.version}</version> @@ -400,7 +439,7 @@ <dependency> <groupId>org.webjars</groupId> <artifactId>swagger-ui</artifactId> - <version>2.2.2</version> + <version>3.19.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> @@ -436,12 +475,16 @@ <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> + <exclusion> + <groupId>org.springframework.batch</groupId> + <artifactId>spring-batch-admin-resources</artifactId> + </exclusion> </exclusions> </dependency> <dependency> <artifactId>guava</artifactId> <groupId>com.google.guava</groupId> - <version>20.0</version> + <version>26.0-jre</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> @@ -449,10 +492,9 @@ <version>1.5</version> </dependency> <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-tomcat</artifactId> - <version>${spring-boot.version}</version> - <scope>provided</scope> + <groupId>org.apache.commons</groupId> + <artifactId>commons-compress</artifactId> + <version>1.18</version> </dependency> <dependency> <groupId>io.minio</groupId> diff --git a/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java b/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java index 938cfd0..87622ad 100644 --- a/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java +++ b/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java @@ -19,15 +19,16 @@ package org.apache.ambari.infra; import org.springframework.boot.Banner; +import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration; import org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration; +import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; import org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration; -import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration; +import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.system.ApplicationPidFileWriter; +import org.springframework.boot.context.ApplicationPidFileWriter; @SpringBootApplication( scanBasePackages = {"org.apache.ambari.infra"}, @@ -47,7 +48,7 @@ public class InfraManager { new SpringApplicationBuilder(InfraManager.class) .bannerMode(Banner.Mode.OFF) .listeners(new ApplicationPidFileWriter(pidFile)) - .web(true) + .web(WebApplicationType.SERVLET) .run(args); } } diff --git a/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerJerseyResourceConfig.java b/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerJerseyResourceConfig.java index 3a4c00f..338fac4 100644 --- a/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerJerseyResourceConfig.java +++ b/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerJerseyResourceConfig.java @@ -18,20 +18,19 @@ */ package org.apache.ambari.infra.conf; +import javax.ws.rs.ApplicationPath; + import org.apache.ambari.infra.rest.JobResource; -import org.glassfish.jersey.jackson.JacksonFeature; +import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.servlet.ServletProperties; -import javax.ws.rs.ApplicationPath; - @ApplicationPath("/api/v1") public class InfraManagerJerseyResourceConfig extends ResourceConfig { public InfraManagerJerseyResourceConfig() { packages(JobResource.class.getPackage().getName()); - register(JacksonFeature.class); + register(JacksonJaxbJsonProvider.class); property(ServletProperties.FILTER_FORWARD_ON_404, true); } - } diff --git a/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerServletConfig.java b/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerServletConfig.java index 06aea79..dd101b0 100644 --- a/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerServletConfig.java +++ b/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerServletConfig.java @@ -18,31 +18,19 @@ */ package org.apache.ambari.infra.conf; -import org.eclipse.jetty.server.Server; +import javax.inject.Inject; + import org.eclipse.jetty.servlet.DefaultServlet; import org.glassfish.jersey.servlet.ServletContainer; import org.glassfish.jersey.servlet.ServletProperties; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.web.ServerProperties; -import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; -import org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer; -import org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import javax.inject.Inject; - @Configuration public class InfraManagerServletConfig { - private static final Integer SESSION_TIMEOUT = 60 * 30; - private static final String INFRA_MANAGER_SESSIONID = "INFRAMANAGER_SESSIONID"; - private static final String INFRA_MANAGER_APPLICATION_NAME = "infra-manager"; - - @Value("${infra-manager.server.port:61890}") - private int port; - @Inject private ServerProperties serverProperties; @@ -52,32 +40,17 @@ public class InfraManagerServletConfig { @Bean public ServletRegistrationBean jerseyServlet() { - ServletRegistrationBean jerseyServletBean = new ServletRegistrationBean(new ServletContainer(), "/api/v1/*"); + ServletRegistrationBean jerseyServletBean = new ServletRegistrationBean<>(new ServletContainer(), "/api/v1/*"); jerseyServletBean.addInitParameter(ServletProperties.JAXRS_APPLICATION_CLASS, InfraManagerJerseyResourceConfig.class.getName()); return jerseyServletBean; } @Bean public ServletRegistrationBean dataServlet() { - ServletRegistrationBean dataServletBean = new ServletRegistrationBean(new DefaultServlet(), "/files/*"); + ServletRegistrationBean dataServletBean = new ServletRegistrationBean<>(new DefaultServlet(), "/files/*"); dataServletBean.addInitParameter("dirAllowed","true"); dataServletBean.addInitParameter("pathInfoOnly","true"); dataServletBean.addInitParameter("resourceBase", infraManagerDataConfig.getDataFolder()); return dataServletBean; } - - @Bean - public EmbeddedServletContainerFactory containerFactory() { - final JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory = new JettyEmbeddedServletContainerFactory() { - @Override - protected JettyEmbeddedServletContainer getJettyEmbeddedServletContainer(Server server) { - return new JettyEmbeddedServletContainer(server); - } - }; - jettyEmbeddedServletContainerFactory.setSessionTimeout(SESSION_TIMEOUT); - serverProperties.getSession().getCookie().setName(INFRA_MANAGER_SESSIONID); - serverProperties.setDisplayName(INFRA_MANAGER_APPLICATION_NAME); - jettyEmbeddedServletContainerFactory.setPort(port); - return jettyEmbeddedServletContainerFactory; - } } diff --git a/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerWebServerCustomizer.java b/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerWebServerCustomizer.java new file mode 100644 index 0000000..06174a0 --- /dev/null +++ b/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerWebServerCustomizer.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.ambari.infra.conf; + +import java.time.Duration; + +import javax.inject.Inject; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.web.ServerProperties; +import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory; +import org.springframework.boot.web.server.WebServerFactoryCustomizer; +import org.springframework.stereotype.Component; + +@Component +public class InfraManagerWebServerCustomizer implements WebServerFactoryCustomizer<JettyServletWebServerFactory> { + + @Value("${infra-manager.server.port:61890}") + private int port; + + @Inject + private ServerProperties serverProperties; + + private static final Integer SESSION_TIMEOUT = 60 * 30; + private static final String INFRA_MANAGER_SESSIONID = "INFRAMANAGER_SESSIONID"; + private static final String INFRA_MANAGER_APPLICATION_NAME = "infra-manager"; + + @Override + public void customize(JettyServletWebServerFactory factory) { + factory.setPort(port); + factory.setDisplayName(INFRA_MANAGER_APPLICATION_NAME); + factory.getSession().getCookie().setName(INFRA_MANAGER_SESSIONID); + factory.getSession().setTimeout(Duration.ofSeconds(SESSION_TIMEOUT)); + } +} diff --git a/ambari-infra-manager/src/main/java/org/apache/ambari/infra/doc/InfraManagerApiDocStorage.java b/ambari-infra-manager/src/main/java/org/apache/ambari/infra/doc/InfraManagerApiDocStorage.java index e536d9a..5d525fa 100644 --- a/ambari-infra-manager/src/main/java/org/apache/ambari/infra/doc/InfraManagerApiDocStorage.java +++ b/ambari-infra-manager/src/main/java/org/apache/ambari/infra/doc/InfraManagerApiDocStorage.java @@ -18,17 +18,20 @@ */ package org.apache.ambari.infra.doc; -import io.swagger.jaxrs.config.BeanConfig; -import io.swagger.models.Swagger; -import io.swagger.util.Yaml; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.inject.Named; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.swagger.jaxrs.config.BeanConfig; +import io.swagger.models.Swagger; +import io.swagger.models.auth.BasicAuthDefinition; +import io.swagger.util.Yaml; @Named public class InfraManagerApiDocStorage { @@ -47,20 +50,19 @@ public class InfraManagerApiDocStorage { public void run() { LOG.info("Start thread to scan REST API doc from endpoints."); Swagger swagger = beanConfig.getSwagger(); + swagger.addSecurityDefinition("basicAuth", new BasicAuthDefinition()); beanConfig.configure(swagger); beanConfig.scanAndRead(); setSwagger(swagger); try { - if (swagger != null) { - String yaml = Yaml.mapper().writeValueAsString(swagger); - StringBuilder b = new StringBuilder(); - String[] parts = yaml.split("\n"); - for (String part : parts) { - b.append(part); - b.append("\n"); - } - setSwaggerYaml(b.toString()); + String yaml = Yaml.mapper().writeValueAsString(swagger); + StringBuilder b = new StringBuilder(); + String[] parts = yaml.split("\n"); + for (String part : parts) { + b.append(part); + b.append("\n"); } + setSwaggerYaml(b.toString()); } catch (Exception e) { e.printStackTrace(); } diff --git a/ambari-infra-manager/src/main/java/org/apache/ambari/infra/rest/JobResource.java b/ambari-infra-manager/src/main/java/org/apache/ambari/infra/rest/JobResource.java index 502057e..7e353fb 100644 --- a/ambari-infra-manager/src/main/java/org/apache/ambari/infra/rest/JobResource.java +++ b/ambari-infra-manager/src/main/java/org/apache/ambari/infra/rest/JobResource.java @@ -18,9 +18,21 @@ */ package org.apache.ambari.infra.rest; -import com.google.common.base.Splitter; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import java.util.List; +import java.util.Set; + +import javax.inject.Inject; +import javax.inject.Named; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import javax.ws.rs.BeanParam; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; + import org.apache.ambari.infra.manager.JobManager; import org.apache.ambari.infra.model.ExecutionContextResponse; import org.apache.ambari.infra.model.JobDetailsResponse; @@ -51,21 +63,13 @@ import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteExcep import org.springframework.batch.core.repository.JobRestartException; import org.springframework.context.annotation.Scope; -import javax.inject.Inject; -import javax.inject.Named; -import javax.validation.Valid; -import javax.validation.constraints.NotNull; -import javax.ws.rs.BeanParam; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import java.util.List; -import java.util.Set; +import com.google.common.base.Splitter; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.Authorization; -@Api(value = "jobs", description = "Job operations") +@Api(value = "jobs", description = "Job operations", authorizations = {@Authorization(value = "basicAuth")}) @Path("jobs") @Named @Scope("request") diff --git a/ambari-infra-manager/src/main/resources/infra-manager-env.sh b/ambari-infra-manager/src/main/resources/infra-manager-env.sh index 9a371fd..4aae179 100644 --- a/ambari-infra-manager/src/main/resources/infra-manager-env.sh +++ b/ambari-infra-manager/src/main/resources/infra-manager-env.sh @@ -17,12 +17,12 @@ # Extend with java options or system properties. e.g.: INFRA_MANAGER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=5007,server=y,suspend=n" export INFRA_MANAGER_OPTS="" -# Log Search debug options -# export INFRA_MANAGER_DEBUG=true -# export INFRA_MANAGER_DEBUG_SUSPEND=n +# Infra Manager debug options +#export INFRA_MANAGER_DEBUG=true +#export INFRA_MANAGER_DEBUG_SUSPEND=n export INFRA_MANAGER_DEBUG_PORT=5005 -# Log Search memory +# Infra Manager memory # export INFRA_MANAGER_JAVA_MEM="--Xmx1024m" # export LOG_PATH=/var/log/ambari-logsearch-logfeeder/ diff --git a/ambari-infra-manager/src/main/resources/swagger/swagger.html b/ambari-infra-manager/src/main/resources/swagger/swagger.html index 4d261e7..b24dd25 100644 --- a/ambari-infra-manager/src/main/resources/swagger/swagger.html +++ b/ambari-infra-manager/src/main/resources/swagger/swagger.html @@ -1,4 +1,4 @@ -<!DOCTYPE html> +<!-- HTML for static distribution bundle build --> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,122 +15,63 @@ See the License for the specific language governing permissions and limitations under the License. --> -<html> +<!DOCTYPE html> +<html lang="en"> <head> <meta charset="UTF-8"> <title>Infra Manager REST API</title> - <link rel="icon" type="image/png" href="swagger-ui/2.2.2/images/favicon-32x32.png" sizes="32x32" /> - <link rel="icon" type="image/png" href="swagger-ui/2.2.2/images/favicon-16x16.png" sizes="16x16" /> - <link href='swagger-ui/2.2.2/css/typography.css' media='screen' rel='stylesheet' type='text/css'/> - <link href='swagger-ui/2.2.2/css/reset.css' media='screen' rel='stylesheet' type='text/css'/> - <link href='swagger-ui/2.2.2/css/screen.css' media='screen' rel='stylesheet' type='text/css'/> - <link href='swagger-ui/2.2.2/css/reset.css' media='print' rel='stylesheet' type='text/css'/> - <link href='swagger-ui/2.2.2/css/print.css' media='print' rel='stylesheet' type='text/css'/> - - <script src='swagger-ui/2.2.2/lib/object-assign-pollyfill.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/lib/jquery-1.8.0.min.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/lib/jquery.slideto.min.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/lib/jquery.wiggle.min.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/lib/jquery.ba-bbq.min.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/lib/handlebars-4.0.5.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/lib/lodash.min.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/lib/backbone-min.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/swagger-ui.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/lib/highlight.9.1.0.pack.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/lib/highlight.9.1.0.pack_extended.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/lib/jsoneditor.min.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/lib/marked.js' type='text/javascript'></script> - <script src='swagger-ui/2.2.2/lib/swagger-oauth.js' type='text/javascript'></script> - - <!-- Some basic translations --> - <!-- <script src='lang/translator.js' type='text/javascript'></script> --> - <!-- <script src='lang/ru.js' type='text/javascript'></script> --> - <!-- <script src='lang/en.js' type='text/javascript'></script> --> - - <script type="text/javascript"> - $(function () { - var url = window.location.search.match(/url=([^&]+)/); - if (url && url.length > 1) { - url = decodeURIComponent(url[1]); - } else { - var urlPrefix = location.protocol +'//'+ location.hostname+(location.port ? ':'+location.port: ''); - url = urlPrefix + "/api/v1/swagger.yaml"; - } + <link rel="stylesheet" type="text/css" href="swagger-ui/3.19.0/swagger-ui.css" > + <link rel="icon" type="image/png" href="swagger-ui/3.19.0/images/favicon-32x32.png" sizes="32x32" /> + <link rel="icon" type="image/png" href="swagger-ui/3.19.0/images/favicon-16x16.png" sizes="16x16" /> + <style> + html + { + box-sizing: border-box; + overflow: -moz-scrollbars-vertical; + overflow-y: scroll; + } - hljs.configure({ - highlightSizeThreshold: 5000 - }); + *, + *:before, + *:after + { + box-sizing: inherit; + } - // Pre load translate... - if(window.SwaggerTranslator) { - window.SwaggerTranslator.translate(); - } - window.swaggerUi = new SwaggerUi({ - url: url, - dom_id: "swagger-ui-container", - supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'], - onComplete: function(swaggerApi, swaggerUi){ - if(typeof initOAuth == "function") { - initOAuth({ - clientId: "your-client-id", - clientSecret: "your-client-secret-if-required", - realm: "your-realms", - appName: "your-app-name", - scopeSeparator: " ", - additionalQueryStringParams: {} - }); - } - - if(window.SwaggerTranslator) { - window.SwaggerTranslator.translate(); - } - }, - onFailure: function(data) { - log("Unable to Load SwaggerUI"); - }, - docExpansion: "none", - jsonEditor: false, - defaultModelRendering: 'schema', - showRequestHeaders: false - }); - - function addApiKeyAuthorization(){ - var username = encodeURIComponent($('#input_username')[0].value); - var password = encodeURIComponent($('#input_password')[0].value); - if (username && username.trim() != "" && password && password != "") { - var apiKeyAuth = new SwaggerClient.PasswordAuthorization("Authorization", username, password); - window.swaggerUi.api.clientAuthorizations.add("key", apiKeyAuth); - log("added authorization header: " + 'Basic ' + btoa(username + ':' + password)); - } - } - - $('#input_username, #input_password').change(addApiKeyAuthorization); + body + { + margin:0; + background: #fafafa; + } + </style> +</head> - window.swaggerUi.load(); +<body> +<div id="swagger-ui"></div> - function log() { - if ('console' in window) { - console.log.apply(console, arguments); - } - } - }); - </script> -</head> +<script src="swagger-ui/3.19.0/swagger-ui-bundle.js"> </script> +<script src="swagger-ui/3.19.0/swagger-ui-standalone-preset.js"> </script> +<script> + window.onload = function() { -<body class="swagger-section"> -<div id='header'> - <div class="swagger-ui-wrap"> - <a id="logo" href="http://swagger.io">swagger</a> - <form id='api_selector'> - <div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div> - <div class="input"><input placeholder="username" id="input_username" name="username" type="text" size="10"></div> - <div class="input"><input placeholder="password" id="input_password" name="password" type="password" size="10"></div> - <div class='input'><a id="explore" href="#">Explore</a></div> - </form> - </div> -</div> + var urlPrefix = location.protocol +'//'+ location.hostname+(location.port ? ':'+location.port: ''); + // Build a system + const ui = SwaggerUIBundle({ + url: urlPrefix + "/api/v1/swagger.yaml", + dom_id: '#swagger-ui', + deepLinking: true, + presets: [ + SwaggerUIBundle.presets.apis, + SwaggerUIStandalonePreset + ], + plugins: [ + SwaggerUIBundle.plugins.DownloadUrl + ], + layout: "StandaloneLayout" + }) -<div id="message-bar" class="swagger-ui-wrap" data-sw-translate> </div> -<div id="swagger-ui-container" class="swagger-ui-wrap"></div> + window.ui = ui + } + </script> </body> -</html> \ No newline at end of file +</html> diff --git a/pom.xml b/pom.xml index ab82c4b..29271c1 100644 --- a/pom.xml +++ b/pom.xml @@ -368,6 +368,11 @@ <artifactId>hamcrest-all</artifactId> <version>1.3</version> </dependency> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.6.2</version> + </dependency> </dependencies> </dependencyManagement>