This is an automated email from the ASF dual-hosted git repository. oleewere pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ambari-logsearch.git
The following commit(s) were added to refs/heads/master by this push: new eeb9da1 AMBARI-23456. Make rest api doc generation configureable & doc fixes (#69) eeb9da1 is described below commit eeb9da1d5ae1df5cb17bb3294d4c698dd3d86d17 Author: Olivér Sz <oleew...@gmail.com> AuthorDate: Mon Jan 7 14:46:35 2019 +0100 AMBARI-23456. Make rest api doc generation configureable & doc fixes (#69) --- Makefile | 6 + ambari-logsearch-docs/pom.xml | 5 + .../doc/LogSearchDocumentationGenerator.java | 19 +- .../ambari/logsearch/rest/ServiceLogsResource.java | 12 +- docs/api-docs/logsearch-swagger.yaml | 308 ++++++++++----------- 5 files changed, 186 insertions(+), 164 deletions(-) diff --git a/Makefile b/Makefile index 67f25fe..469651c 100644 --- a/Makefile +++ b/Makefile @@ -77,6 +77,12 @@ prop-docs: install prop-docs-only: $(MAVEN_BINARY) -pl ambari-logsearch-docs clean package exec:java -DskipTests -Djdk.version=$(LOGSEARCH_JAVA_VERSION) +update-rest-api-docs: install + $(MAVEN_BINARY) -pl ambari-logsearch-docs clean package exec:java -DskipTests -Djdk.version=$(LOGSEARCH_JAVA_VERSION) -Dgenerate.swagger.yaml=true + +update-rest-api-docs-only: + $(MAVEN_BINARY) -pl ambari-logsearch-docs clean package exec:java -DskipTests -Djdk.version=$(LOGSEARCH_JAVA_VERSION) -Dgenerate.swagger.yaml=true + update-version: $(MAVEN_BINARY) versions:set-property -Dproperty=revision -DnewVersion=$(new-version) -DgenerateBackupPoms=false diff --git a/ambari-logsearch-docs/pom.xml b/ambari-logsearch-docs/pom.xml index 90a19a9..4aded53 100644 --- a/ambari-logsearch-docs/pom.xml +++ b/ambari-logsearch-docs/pom.xml @@ -29,6 +29,9 @@ <url>http://maven.apache.org</url> <name>Ambari Logsearch Docs</name> <description>Ambari Logsearch Docs</description> + <properties> + <generate.swagger.yaml>false</generate.swagger.yaml> + </properties> <build> <resources> <resource> @@ -86,6 +89,8 @@ <arguments> <argument>--output-dir</argument> <argument>${project.basedir}/../docs</argument> + <argument>--generate-rest-api-doc</argument> + <argument>${generate.swagger.yaml}</argument> </arguments> </configuration> </plugin> diff --git a/ambari-logsearch-docs/src/main/java/org/apache/ambari/logsearch/doc/LogSearchDocumentationGenerator.java b/ambari-logsearch-docs/src/main/java/org/apache/ambari/logsearch/doc/LogSearchDocumentationGenerator.java index 41f706a..3841b9f 100644 --- a/ambari-logsearch-docs/src/main/java/org/apache/ambari/logsearch/doc/LogSearchDocumentationGenerator.java +++ b/ambari-logsearch-docs/src/main/java/org/apache/ambari/logsearch/doc/LogSearchDocumentationGenerator.java @@ -65,6 +65,7 @@ public class LogSearchDocumentationGenerator { private static final String LOGFEEDER_PROPERTIES_TEMPLATE_KEY = "logfeederProperties"; private static final String OUTPUT_DIR_OPTION = "output-dir"; + private static final String GENERATE_REST_API_DOC = "generate-rest-api-doc"; private static final String LOGSEARCH_PACKAGE = "org.apache.ambari.logsearch"; private static final String LOGFEEDER_PACKAGE = "org.apache.ambari.logfeeder"; @@ -96,6 +97,12 @@ public class LogSearchDocumentationGenerator { .required() .type(String.class) .build()); + options.addOption(Option.builder() + .desc("Boolean flag to generate REST API doc") + .longOpt(GENERATE_REST_API_DOC) + .hasArg() + .type(String.class) + .build()); CommandLineParser parser = new DefaultParser(); CommandLine cmdLine = parser.parse(options, args); @@ -139,10 +146,14 @@ public class LogSearchDocumentationGenerator { File shipperConfigsOutputFile = Paths.get(outputDir, SHIPPER_CONFIGURATIONS_MARKDOWN_OUTPUT).toFile(); writeMarkdown(freemarkerConfiguration, SHIPPER_CONFIGURATIONS_MARKDOWN_TEMPLATE_FILE, shipperConfigModels, shipperConfigsOutputFile); - - String swaggerYaml = generateSwaggerYaml(); - File swaggerYamlFile = Paths.get(outputDir, SWAGGER_API_DOC_FOLDER, SWAGGER_YAML_FILE_NAME).toFile(); - FileUtils.writeStringToFile(swaggerYamlFile, swaggerYaml, Charset.defaultCharset()); + if (options.hasLongOption(GENERATE_REST_API_DOC) && "true".equals(cmdLine.getOptionValue(GENERATE_REST_API_DOC))) { + System.out.println("REST API DOC re-generation is enabled"); + String swaggerYaml = generateSwaggerYaml(); + File swaggerYamlFile = Paths.get(outputDir, SWAGGER_API_DOC_FOLDER, SWAGGER_YAML_FILE_NAME).toFile(); + FileUtils.writeStringToFile(swaggerYamlFile, swaggerYaml, Charset.defaultCharset()); + } else { + System.out.println("REST API DOC re-generation is disabled"); + } } catch (Exception e) { e.printStackTrace(); System.exit(1); diff --git a/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/rest/ServiceLogsResource.java b/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/rest/ServiceLogsResource.java index 9daf0b3..73ee640 100644 --- a/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/rest/ServiceLogsResource.java +++ b/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/rest/ServiceLogsResource.java @@ -151,7 +151,7 @@ public class ServiceLogsResource { @Path("/components") @Produces({MediaType.APPLICATION_JSON}) @ApiOperation(GET_COMPONENTS_OD) - public ServiceComponentMetadataWrapper getComponents(@QueryParam(LogSearchConstants.REQUEST_PARAM_CLUSTER_NAMES) @Nullable String clusters) { + public ServiceComponentMetadataWrapper getComponentsByGet(@QueryParam(LogSearchConstants.REQUEST_PARAM_CLUSTER_NAMES) @Nullable String clusters) { return serviceLogsManager.getComponentMetadata(clusters); } @@ -160,7 +160,7 @@ public class ServiceLogsResource { @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) @ApiOperation(GET_COMPONENTS_OD) - public ServiceComponentMetadataWrapper getComponents(@Nullable ClusterBodyRequest clusterBodyRequest) { + public ServiceComponentMetadataWrapper getComponentsByPost(@Nullable ClusterBodyRequest clusterBodyRequest) { return serviceLogsManager.getComponentMetadata(clusterBodyRequest != null ? clusterBodyRequest.getClusters() : null); } @@ -356,7 +356,7 @@ public class ServiceLogsResource { @Path("/truncated") @Produces({MediaType.APPLICATION_JSON}) @ApiOperation(GET_AFTER_BEFORE_LOGS_OD) - public ServiceLogResponse getAfterBeforeLogs(@BeanParam ServiceLogTruncatedQueryRequest request) { + public ServiceLogResponse getAfterBeforeLogsByGet(@BeanParam ServiceLogTruncatedQueryRequest request) { return serviceLogsManager.getAfterBeforeLogs(request); } @@ -365,7 +365,7 @@ public class ServiceLogsResource { @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) @ApiOperation(GET_AFTER_BEFORE_LOGS_OD) - public ServiceLogResponse getAfterBeforeLogs(ServiceLogTruncatedBodyRequest request) { + public ServiceLogResponse getAfterBeforeLogsByPost(ServiceLogTruncatedBodyRequest request) { return serviceLogsManager.getAfterBeforeLogs(request); } @@ -393,7 +393,7 @@ public class ServiceLogsResource { @Produces({MediaType.APPLICATION_JSON}) @ApiOperation(GET_HOST_LOGFILES_OD) @ValidateOnExecution - public HostLogFilesResponse getHostLogFiles(@Valid @BeanParam HostLogFilesQueryRequest request) { + public HostLogFilesResponse getHostLogFilesByGet(@Valid @BeanParam HostLogFilesQueryRequest request) { return serviceLogsManager.getHostLogFileData(request); } @@ -403,7 +403,7 @@ public class ServiceLogsResource { @Produces({MediaType.APPLICATION_JSON}) @ApiOperation(GET_HOST_LOGFILES_OD) @ValidateOnExecution - public HostLogFilesResponse getHostLogFiles(@Valid @BeanParam HostLogFilesBodyRequest request) { + public HostLogFilesResponse getHostLogFilesByPost(@Valid @BeanParam HostLogFilesBodyRequest request) { return serviceLogsManager.getHostLogFileData(request); } diff --git a/docs/api-docs/logsearch-swagger.yaml b/docs/api-docs/logsearch-swagger.yaml index d80182b..2b6cf11 100644 --- a/docs/api-docs/logsearch-swagger.yaml +++ b/docs/api-docs/logsearch-swagger.yaml @@ -1033,52 +1033,6 @@ paths: description: "successful operation" security: - basicAuth: [] - /service/logs/components: - get: - tags: - - "servicelogs" - summary: "Get the list of service components currently active or having data\ - \ in Solr" - description: "" - operationId: "getComponents" - produces: - - "application/json" - parameters: - - name: "clusters" - in: "query" - required: false - type: "string" - responses: - 200: - description: "successful operation" - schema: - $ref: "#/definitions/ServiceComponentMetadataWrapper" - security: - - basicAuth: [] - post: - tags: - - "servicelogs" - summary: "Get the list of service components currently active or having data\ - \ in Solr" - description: "" - operationId: "getComponents" - consumes: - - "application/json" - produces: - - "application/json" - parameters: - - in: "body" - name: "body" - required: false - schema: - $ref: "#/definitions/ClusterBodyRequest" - responses: - 200: - description: "successful operation" - schema: - $ref: "#/definitions/ServiceComponentMetadataWrapper" - security: - - basicAuth: [] /service/logs: get: tags: @@ -1321,6 +1275,52 @@ paths: $ref: "#/definitions/GroupListResponse" security: - basicAuth: [] + /service/logs/components: + get: + tags: + - "servicelogs" + summary: "Get the list of service components currently active or having data\ + \ in Solr" + description: "" + operationId: "getComponentsByGet" + produces: + - "application/json" + parameters: + - name: "clusters" + in: "query" + required: false + type: "string" + responses: + 200: + description: "successful operation" + schema: + $ref: "#/definitions/ServiceComponentMetadataWrapper" + security: + - basicAuth: [] + post: + tags: + - "servicelogs" + summary: "Get the list of service components currently active or having data\ + \ in Solr" + description: "" + operationId: "getComponentsByPost" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - in: "body" + name: "body" + required: false + schema: + $ref: "#/definitions/ClusterBodyRequest" + responses: + 200: + description: "successful operation" + schema: + $ref: "#/definitions/ServiceComponentMetadataWrapper" + security: + - basicAuth: [] /service/logs/aggregated: get: tags: @@ -2841,7 +2841,7 @@ paths: - "servicelogs" summary: "Preview feature data" description: "" - operationId: "getAfterBeforeLogs" + operationId: "getAfterBeforeLogsByGet" produces: - "application/json" parameters: @@ -3010,7 +3010,7 @@ paths: - "servicelogs" summary: "Preview feature data" description: "" - operationId: "getAfterBeforeLogs" + operationId: "getAfterBeforeLogsByPost" consumes: - "application/json" produces: @@ -3069,7 +3069,7 @@ paths: - "servicelogs" summary: "Get the log files of the components of a host" description: "" - operationId: "getHostLogFiles" + operationId: "getHostLogFilesByGet" produces: - "application/json" parameters: @@ -3100,7 +3100,7 @@ paths: - "servicelogs" summary: "Get the log files of the components of a host" description: "" - operationId: "getHostLogFiles" + operationId: "getHostLogFilesByPost" consumes: - "application/json" produces: @@ -3180,13 +3180,13 @@ paths: type: "string" security: - basicAuth: [] - /shipper/filters/{clusterName}/level: + /shipper/input/{clusterName}/services/{serviceName}: get: tags: - "shipper" - summary: "Get log level filter" + summary: "Get shipper config" description: "" - operationId: "getLogLevelFilters" + operationId: "getShipperConfig" produces: - "application/json" parameters: @@ -3194,19 +3194,23 @@ paths: in: "path" required: true type: "string" + - name: "serviceName" + in: "path" + required: true + type: "string" responses: 200: description: "successful operation" schema: - $ref: "#/definitions/LSServerLogLevelFilterMap" + $ref: "#/definitions/LSServerInputConfig" security: - basicAuth: [] - put: + post: tags: - "shipper" - summary: "Update log level filter" + summary: "Set shipper config" description: "" - operationId: "setLogLevelFilter" + operationId: "createShipperConfig" produces: - "application/json" parameters: @@ -3214,26 +3218,34 @@ paths: name: "body" required: false schema: - $ref: "#/definitions/LSServerLogLevelFilterMap" + $ref: "#/definitions/LSServerInputConfig" - name: "clusterName" in: "path" required: true type: "string" + - name: "serviceName" + in: "path" + required: true + type: "string" responses: default: description: "successful operation" security: - basicAuth: [] - /shipper/input/{clusterName}/services/{serviceName}: - get: + put: tags: - "shipper" - summary: "Get shipper config" + summary: "Set shipper config" description: "" - operationId: "getShipperConfig" + operationId: "setShipperConfig" produces: - "application/json" parameters: + - in: "body" + name: "body" + required: false + schema: + $ref: "#/definitions/LSServerInputConfig" - name: "clusterName" in: "path" required: true @@ -3243,45 +3255,37 @@ paths: required: true type: "string" responses: - 200: + default: description: "successful operation" - schema: - $ref: "#/definitions/LSServerInputConfig" security: - basicAuth: [] - post: + /shipper/filters/{clusterName}/level: + get: tags: - "shipper" - summary: "Set shipper config" + summary: "Get log level filter" description: "" - operationId: "createShipperConfig" + operationId: "getLogLevelFilters" produces: - "application/json" parameters: - - in: "body" - name: "body" - required: false - schema: - $ref: "#/definitions/LSServerInputConfig" - name: "clusterName" in: "path" required: true type: "string" - - name: "serviceName" - in: "path" - required: true - type: "string" responses: - default: + 200: description: "successful operation" + schema: + $ref: "#/definitions/LSServerLogLevelFilterMap" security: - basicAuth: [] put: tags: - "shipper" - summary: "Set shipper config" + summary: "Update log level filter" description: "" - operationId: "setShipperConfig" + operationId: "setLogLevelFilter" produces: - "application/json" parameters: @@ -3289,15 +3293,11 @@ paths: name: "body" required: false schema: - $ref: "#/definitions/LSServerInputConfig" + $ref: "#/definitions/LSServerLogLevelFilterMap" - name: "clusterName" in: "path" required: true type: "string" - - name: "serviceName" - in: "path" - required: true - type: "string" responses: default: description: "successful operation" @@ -3447,24 +3447,28 @@ definitions: result: type: "integer" format: "int32" - policy: - type: "string" - reason: - type: "string" text: type: "string" - sess: + policy: + type: "string" + reqContext: type: "string" access: type: "string" - reqContext: + sess: type: "string" tags: type: "array" items: type: "string" + reason: + type: "string" logType: type: "string" + proxyUsers: + type: "array" + items: + type: "string" action: type: "string" agent: @@ -3493,10 +3497,6 @@ definitions: type: "string" tags_str: type: "string" - proxyUsers: - type: "array" - items: - type: "string" id: type: "string" type: @@ -3506,12 +3506,12 @@ definitions: _version_: type: "integer" format: "int64" + log_message: + type: "string" bundle_id: type: "string" case_id: type: "string" - log_message: - type: "string" logfile_line_number: type: "integer" format: "int32" @@ -3814,26 +3814,6 @@ definitions: type: "string" type: type: "string" - ComponentMetadata: - type: "object" - properties: - name: - type: "string" - label: - type: "string" - group: - type: "string" - ServiceComponentMetadataWrapper: - type: "object" - properties: - groups: - type: "object" - additionalProperties: - type: "string" - metadata: - type: "array" - items: - $ref: "#/definitions/ComponentMetadata" ServiceLogData: type: "object" properties: @@ -3854,11 +3834,11 @@ definitions: type: "string" group: type: "string" - ip: - type: "string" logtime: type: "string" format: "date-time" + ip: + type: "string" id: type: "string" file: @@ -3866,12 +3846,12 @@ definitions: _version_: type: "integer" format: "int64" + log_message: + type: "string" bundle_id: type: "string" case_id: type: "string" - log_message: - type: "string" logfile_line_number: type: "integer" format: "int32" @@ -4015,6 +3995,26 @@ definitions: format: "int32" LogData: type: "object" + ComponentMetadata: + type: "object" + properties: + name: + type: "string" + label: + type: "string" + group: + type: "string" + ServiceComponentMetadataWrapper: + type: "object" + properties: + groups: + type: "object" + additionalProperties: + type: "string" + metadata: + type: "array" + items: + $ref: "#/definitions/ComponentMetadata" GraphData: type: "object" properties: @@ -4684,39 +4684,6 @@ definitions: type: "string" clusters: type: "string" - LSServerLogLevelFilter: - type: "object" - required: - - "defaultLevels" - - "hosts" - - "label" - properties: - label: - type: "string" - hosts: - type: "array" - items: - type: "string" - defaultLevels: - type: "array" - items: - type: "string" - overrideLevels: - type: "array" - items: - type: "string" - expiryTime: - type: "string" - format: "date-time" - LSServerLogLevelFilterMap: - type: "object" - required: - - "filter" - properties: - filter: - type: "object" - additionalProperties: - $ref: "#/definitions/LSServerLogLevelFilter" LSServerConditions: type: "object" required: @@ -4828,6 +4795,39 @@ definitions: $ref: "#/definitions/LSServerFilter" LSServerPostMapValuesList: type: "object" + LSServerLogLevelFilter: + type: "object" + required: + - "defaultLevels" + - "hosts" + - "label" + properties: + label: + type: "string" + hosts: + type: "array" + items: + type: "string" + defaultLevels: + type: "array" + items: + type: "string" + overrideLevels: + type: "array" + items: + type: "string" + expiryTime: + type: "string" + format: "date-time" + LSServerLogLevelFilterMap: + type: "object" + required: + - "filter" + properties: + filter: + type: "object" + additionalProperties: + $ref: "#/definitions/LSServerLogLevelFilter" SolrCollectionState: type: "object" properties: