This is an automated email from the ASF dual-hosted git repository. markusthoemmes pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk.git
The following commit(s) were added to refs/heads/master by this push: new 7897a3c Move version information to pureconfig and remove `whisk_version_name`. (#3617) 7897a3c is described below commit 7897a3cfb70e76509b61543fb13d8c81490ff113 Author: Christian Bickel <git...@cbickel.de> AuthorDate: Mon Jun 25 13:44:04 2018 +0200 Move version information to pureconfig and remove `whisk_version_name`. (#3617) --- ansible/environments/distributed/group_vars/all | 4 ++- ansible/environments/docker-machine/group_vars/all | 3 +- ansible/environments/local/group_vars/all | 1 - ansible/environments/vagrant/group_vars/all | 1 - ansible/group_vars/all | 9 ++++- ansible/logs.yml | 2 +- ansible/roles/controller/tasks/deploy.yml | 5 ++- ansible/roles/invoker/tasks/deploy.yml | 16 ++++----- ansible/templates/whisk.properties.j2 | 4 +-- .../src/main/scala/whisk/core/WhiskConfig.scala | 5 +-- .../scala/whisk/core/controller/RestAPIs.scala | 41 +++++++++------------- .../scala/actionContainers/ActionContainer.scala | 2 +- 12 files changed, 44 insertions(+), 49 deletions(-) diff --git a/ansible/environments/distributed/group_vars/all b/ansible/environments/distributed/group_vars/all index 99e4441..2056dec 100755 --- a/ansible/environments/distributed/group_vars/all +++ b/ansible/environments/distributed/group_vars/all @@ -2,6 +2,9 @@ # license agreements; and to You under the Apache License, Version 2.0. --- + +environment_type: "distributed" + db_provider: CouchDB db_port: 5984 db_protocol: http @@ -10,7 +13,6 @@ db_password: couch_password db_host: "{{ groups['db'] | first }}" db_prefix: whisk_distributed_ -whisk_version_name: distributed config_root_dir: /tmp/wskconf whisk_logs_dir: /tmp/wsklogs registry_storage_dir: "/" diff --git a/ansible/environments/docker-machine/group_vars/all b/ansible/environments/docker-machine/group_vars/all index e3193ad..91471c8 100644 --- a/ansible/environments/docker-machine/group_vars/all +++ b/ansible/environments/docker-machine/group_vars/all @@ -1,13 +1,14 @@ # Licensed to the Apache Software Foundation (ASF) under one or more contributor # license agreements; and to You under the Apache License, Version 2.0. -whisk_version_name: mac config_root_dir: /Users/Shared/wskconf whisk_logs_dir: /Users/Shared/wsklogs docker_registry: "" docker_dns: "" runtimes_bypass_pull_for_local_images: true +environment_type: "docker-machine" + env_hosts_dir: "{{ playbook_dir }}/environments/docker-machine" # The whisk_api_localhost_name is used to configure nginx to permit vanity URLs for web actions. diff --git a/ansible/environments/local/group_vars/all b/ansible/environments/local/group_vars/all index d1bad6b..338e10a 100755 --- a/ansible/environments/local/group_vars/all +++ b/ansible/environments/local/group_vars/all @@ -1,7 +1,6 @@ # Licensed to the Apache Software Foundation (ASF) under one or more contributor # license agreements; and to You under the Apache License, Version 2.0. -whisk_version_name: local openwhisk_tmp_dir: "{{ lookup('env', 'OPENWHISK_TMP_DIR')|default('/tmp', true) }}" config_root_dir: "{{ openwhisk_tmp_dir }}/wskconf" whisk_logs_dir: "{{ openwhisk_tmp_dir }}/wsklogs" diff --git a/ansible/environments/vagrant/group_vars/all b/ansible/environments/vagrant/group_vars/all index a5da10d..614e0e2 100755 --- a/ansible/environments/vagrant/group_vars/all +++ b/ansible/environments/vagrant/group_vars/all @@ -1,7 +1,6 @@ # Licensed to the Apache Software Foundation (ASF) under one or more contributor # license agreements; and to You under the Apache License, Version 2.0. -whisk_version_name: local openwhisk_tmp_dir: "{{ lookup('env', 'OPENWHISK_TMP_DIR')|default('/tmp', true) }}" config_root_dir: "{{ openwhisk_tmp_dir }}/wskconf" whisk_logs_dir: "{{ openwhisk_tmp_dir }}/wsklogs" diff --git a/ansible/group_vars/all b/ansible/group_vars/all index f4ceacb..b59aa3b 100644 --- a/ansible/group_vars/all +++ b/ansible/group_vars/all @@ -22,7 +22,14 @@ exclude_logs_from: [] # whisk_api_localhost_name_default (last) whisk_api_localhost_name_default: "localhost" -hosts_dir: "{{ inventory_dir | default(env_hosts_dir) }}" +# Type of your environment. +# If you want to deploy everything on your local machine use 'local'. +# If you use a docker-machine on a mac use 'docker-machine' +# If you want to deploy Openwhisk to other machines use 'distributed' +environmentInformation: + type: "{{ environment_type | default('local') }}" + +hosts_dir: "{{ inventory_dir | default(env_hosts_dir) }}" whisk: version: diff --git a/ansible/logs.yml b/ansible/logs.yml index 3858438..73a84fa 100644 --- a/ansible/logs.yml +++ b/ansible/logs.yml @@ -44,7 +44,7 @@ - name: set host flag when using docker remote API set_fact: docker_host_flag: "--host tcp://{{ ansible_host }}:{{ docker.port }}" - when: whisk_version_name != "local" + when: environmentInformation.type != "local" - name: get all docker containers local_action: shell docker {{ docker_host_flag }} ps -a --format="{% raw %}{{.Names}}{% endraw %}" register: container_names diff --git a/ansible/roles/controller/tasks/deploy.yml b/ansible/roles/controller/tasks/deploy.yml index 29dcc1b..2d48c4f 100644 --- a/ansible/roles/controller/tasks/deploy.yml +++ b/ansible/roles/controller/tasks/deploy.yml @@ -124,9 +124,8 @@ "COMPONENT_NAME": "{{ controller_name }}" "PORT": 8080 - "WHISK_VERSION_NAME": "{{ whisk_version_name }}" - "WHISK_VERSION_DATE": "{{ whisk.version.date }}" - "WHISK_VERSION_BUILDNO": "{{ docker.image.tag }}" + "CONFIG_whisk_info_date": "{{ whisk.version.date }}" + "CONFIG_whisk_info_buildNo": "{{ docker.image.tag }}" "KAFKA_HOSTS": "{{ kafka_connect_string }}" "CONFIG_whisk_kafka_replicationFactor": diff --git a/ansible/roles/invoker/tasks/deploy.yml b/ansible/roles/invoker/tasks/deploy.yml index 98af399..2444bc5 100644 --- a/ansible/roles/invoker/tasks/deploy.yml +++ b/ansible/roles/invoker/tasks/deploy.yml @@ -41,22 +41,22 @@ - name: "determine docker root dir on docker-machine" uri: url="http://{{ ansible_host }}:{{ docker.port }}/info" return_content=yes register: dockerInfo_output - when: whisk_version_name == "mac" + when: environmentInformation.type == 'docker-machine' - set_fact: dockerInfo: "{{ dockerInfo_output['json'] }}" - when: whisk_version_name == "mac" + when: environmentInformation.type == "docker-machine" - name: "determine docker root dir" shell: echo -e "GET http:/v1.24/info HTTP/1.0\r\n" | nc -U /var/run/docker.sock | grep "{" args: executable: /bin/bash register: dockerInfo_output - when: whisk_version_name != "mac" + when: environmentInformation.type != "docker-machine" - set_fact: dockerInfo: "{{ dockerInfo_output.stdout|from_json }}" - when: whisk_version_name != "mac" + when: environmentInformation.type != "docker-machine" - name: ensure invoker log directory is created with permissions file: @@ -89,11 +89,11 @@ - name: get running invoker information uri: url="http://{{ ansible_host }}:{{ docker.port }}/containers/json?filters={{ '{"name":[ "invoker" ],"ancestor":[ "invoker" ]}' | urlencode }}" return_content=yes register: invokerInfo_output - when: whisk_version_name == "mac" + when: environmentInformation.type == "docker-machine" - set_fact: invokerInfo: "{{ invokerInfo_output['json'] }}" - when: whisk_version_name == "mac" + when: environmentInformation.type == "docker-machine" - name: "get invoker info" shell: | @@ -106,11 +106,11 @@ args: executable: /bin/bash register: invokerInfo_output - when: whisk_version_name != "mac" + when: environmentInformation.type != "docker-machine" - set_fact: invokerInfo: "{{ invokerInfo_output.stdout|from_json }}" - when: whisk_version_name != "mac" + when: environmentInformation.type != "docker-machine" - name: determine if more than one invoker is running fail: diff --git a/ansible/templates/whisk.properties.j2 b/ansible/templates/whisk.properties.j2 index bc7ff36..f367bf0 100644 --- a/ansible/templates/whisk.properties.j2 +++ b/ansible/templates/whisk.properties.j2 @@ -7,9 +7,7 @@ testing.auth={{ openwhisk_home }}/ansible/files/auth.guest vcap.services.file= whisk.logs.dir={{ whisk_logs_dir }} -whisk.version.name={{ whisk_version_name }} -whisk.version.date={{ whisk.version.date }} -whisk.version.buildno={{ docker.image.tag }} +environment.type={{ environmentInformation.type }} whisk.ssl.client.verification={{ nginx.ssl.verify_client }} whisk.ssl.cert={{ nginx.ssl.path }}/{{ nginx.ssl.cert }} whisk.ssl.key={{ nginx.ssl.path }}/{{ nginx.ssl.key }} diff --git a/common/scala/src/main/scala/whisk/core/WhiskConfig.scala b/common/scala/src/main/scala/whisk/core/WhiskConfig.scala index a239aa7..fb20fda 100644 --- a/common/scala/src/main/scala/whisk/core/WhiskConfig.scala +++ b/common/scala/src/main/scala/whisk/core/WhiskConfig.scala @@ -154,10 +154,6 @@ object WhiskConfig { // in the invoker (they are part of the environment // passed to the user container) val edgeHostName = "edge.host" - val whiskVersionDate = "whisk.version.date" - val whiskVersionBuildno = "whisk.version.buildno" - - val whiskVersion = Map(whiskVersionDate -> null, whiskVersionBuildno -> null) val invokerName = "invoker.name" @@ -201,6 +197,7 @@ object WhiskConfig { object ConfigKeys { val cluster = "whisk.cluster" val loadbalancer = "whisk.loadbalancer" + val buildInformation = "whisk.info" val couchdb = "whisk.couchdb" val kafka = "whisk.kafka" diff --git a/core/controller/src/main/scala/whisk/core/controller/RestAPIs.scala b/core/controller/src/main/scala/whisk/core/controller/RestAPIs.scala index 9791fa8..e524060 100644 --- a/core/controller/src/main/scala/whisk/core/controller/RestAPIs.scala +++ b/core/controller/src/main/scala/whisk/core/controller/RestAPIs.scala @@ -17,38 +17,30 @@ package whisk.core.controller -import scala.concurrent.ExecutionContext - -import scala.util.Failure -import scala.util.Success -import scala.util.Try - import akka.actor.ActorSystem +import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._ import akka.http.scaladsl.model.StatusCodes._ import akka.http.scaladsl.model.Uri -import akka.http.scaladsl.server.Directives -import akka.http.scaladsl.server.Route import akka.http.scaladsl.model.headers._ -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._ +import akka.http.scaladsl.server.{Directives, Route} import akka.stream.ActorMaterializer - -import spray.json._ +import pureconfig.loadConfigOrThrow import spray.json.DefaultJsonProtocol._ -import whisk.core.database.CacheChangeNotification -import whisk.core.WhiskConfig -import whisk.core.WhiskConfig.whiskVersionBuildno -import whisk.core.WhiskConfig.whiskVersionDate -import whisk.common.Logging -import whisk.common.TransactionId +import spray.json._ +import whisk.common.{Logging, TransactionId} import whisk.core.containerpool.logging.LogStore +import whisk.core.database.CacheChangeNotification import whisk.core.entitlement._ -import whisk.core.entity._ import whisk.core.entity.ActivationId.ActivationIdGenerator -import whisk.core.entity.WhiskAuthStore +import whisk.core.entity._ import whisk.core.entity.types._ import whisk.core.loadBalancer.LoadBalancer +import whisk.core.{ConfigKeys, WhiskConfig} import whisk.http.Messages +import scala.concurrent.ExecutionContext +import scala.util.{Failure, Success, Try} + /** * Abstract class which provides basic Directives which are used to construct route structures * which are common to all versions of the Rest API. @@ -86,14 +78,12 @@ protected[controller] class SwaggerDocs(apipath: Uri.Path, doc: String)(implicit protected[controller] object RestApiCommons { def requiredProperties = Map(WhiskConfig.servicePort -> 8080.toString) ++ - WhiskConfig.whiskVersion ++ EntitlementProvider.requiredProperties ++ WhiskActionsApi.requiredProperties import akka.http.scaladsl.model.HttpCharsets import akka.http.scaladsl.model.MediaTypes.`application/json` - import akka.http.scaladsl.unmarshalling.FromEntityUnmarshaller - import akka.http.scaladsl.unmarshalling.Unmarshaller + import akka.http.scaladsl.unmarshalling.{FromEntityUnmarshaller, Unmarshaller} /** * Extract an empty entity into a JSON object. This is useful for the @@ -162,6 +152,8 @@ protected[controller] trait RespondWithHeaders extends Directives { val sendCorsHeaders = respondWithHeaders(allowOrigin, allowHeaders) } +case class WhiskInformation(buildNo: String, date: String) + class RestAPIVersion(config: WhiskConfig, apiPath: String, apiVersion: String)( implicit val activeAckTopicIndex: InstanceId, implicit val actorSystem: ActorSystem, @@ -181,6 +173,7 @@ class RestAPIVersion(config: WhiskConfig, apiPath: String, apiVersion: String)( with RespondWithHeaders { implicit val executionContext = actorSystem.dispatcher implicit val authStore = WhiskAuthStore.datastore() + val whiskInfo = loadConfigOrThrow[WhiskInformation](ConfigKeys.buildInformation) def prefix = pathPrefix(apiPath / apiVersion) @@ -193,8 +186,8 @@ class RestAPIVersion(config: WhiskConfig, apiPath: String, apiVersion: String)( "description" -> "OpenWhisk API".toJson, "api_version" -> SemVer(1, 0, 0).toJson, "api_version_path" -> apiVersion.toJson, - "build" -> whiskConfig(whiskVersionDate).toJson, - "buildno" -> whiskConfig(whiskVersionBuildno).toJson, + "build" -> whiskInfo.date.toJson, + "buildno" -> whiskInfo.buildNo.toJson, "swagger_paths" -> JsObject("ui" -> s"/$swaggeruipath".toJson, "api-docs" -> s"/$swaggerdocpath".toJson))) } diff --git a/tests/src/test/scala/actionContainers/ActionContainer.scala b/tests/src/test/scala/actionContainers/ActionContainer.scala index e0a2caf..b9398cd 100644 --- a/tests/src/test/scala/actionContainers/ActionContainer.scala +++ b/tests/src/test/scala/actionContainers/ActionContainer.scala @@ -117,7 +117,7 @@ object ActionContainer { .orElse(sys.env.get("DOCKER_HOST")) .orElse { // Check if we are running on docker-machine env. - Option(WhiskProperties.getProperty("whisk.version.name")).filter(_.toLowerCase.contains("mac")).map { + Option(WhiskProperties.getProperty("environment.type")).filter(_.toLowerCase.contains("docker-machine")).map { case _ => s"tcp://${WhiskProperties.getMainDockerEndpoint}" } }