openwhisk-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dgr...@apache.org
Subject [incubator-openwhisk] 01/01: Revert "Proposing Lean OpenWhisk (#3886)"
Date Thu, 06 Dec 2018 22:36:12 GMT
This is an automated email from the ASF dual-hosted git repository.

dgrove pushed a commit to branch revert-3886-pr-lean
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk.git

commit a2ec162c5b77aa363c4da8b034bc9103d8523037
Author: David Grove <dgrove-oss@users.noreply.github.com>
AuthorDate: Thu Dec 6 17:36:02 2018 -0500

    Revert "Proposing Lean OpenWhisk (#3886)"
    
    This reverts commit d4a190c62f0aa1cd0bbecc62ad6b9885c70e9f6b.
---
 ansible/README.md                                  |  11 -
 ansible/controller-lean.yml                        |  39 ---
 ansible/openwhisk-lean.yml                         |  12 -
 ansible/roles/controller/tasks/deploy.yml          |  43 ++--
 ansible/roles/controller/tasks/lean.yml            |  56 -----
 ansible/roles/invoker/tasks/deploy.yml             |   2 -
 ansible/setup.yml                                  |   4 -
 .../openwhisk/connector/lean/LeanConsumer.scala    |  44 ----
 .../connector/lean/LeanMessagingProvider.scala     |  67 -----
 .../openwhisk/connector/lean/LeanProducer.scala    |  59 -----
 core/controller/build.gradle                       |   1 -
 .../openwhisk/core/loadBalancer/LeanBalancer.scala | 276 ---------------------
 core/lean/Dockerfile                               |  55 ----
 core/lean/Dockerfile.cov                           |  16 --
 core/lean/build.gradle                             |  55 ----
 core/lean/init.sh                                  |  10 -
 settings.gradle                                    |   1 -
 tests/build.gradle                                 |  38 +--
 tests/performance/preparation/deploy-lean.sh       |  38 ---
 .../openwhisk/core/cli/test/BaseApiGwTests.scala   |   3 -
 tools/travis/distDocker-lean.sh                    |  32 ---
 tools/travis/setupLeanSystem.sh                    |  34 ---
 tools/vagrant/README.md                            |   9 -
 tools/vagrant/Vagrantfile                          |  11 +-
 24 files changed, 32 insertions(+), 884 deletions(-)

diff --git a/ansible/README.md b/ansible/README.md
index fb7145c..eeca95f 100644
--- a/ansible/README.md
+++ b/ansible/README.md
@@ -280,17 +280,6 @@ This is usually not necessary, however in case you want to uninstall
all prereqs
 ansible-playbook -i environments/<environment> prereq.yml -e mode=clean
 ```
 
-### Lean Setup
-To have a lean setup (no Kafka, Zookeeper and no Invokers as separate entities):
-
-At [Deploying Using CouchDB](ansible/README.md#deploying-using-cloudant) step, replace:
-```
-ansible-playbook -i environments/<environment> openwhisk.yml
-```
-by:
-```
-ansible-playbook -i environments/<environment> openwhisk-lean.yml
-```
 
 ### Troubleshooting
 Some of the more common problems and their solution are listed here.
diff --git a/ansible/controller-lean.yml b/ansible/controller-lean.yml
deleted file mode 100644
index 0aa588d..0000000
--- a/ansible/controller-lean.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more contributor
-# license agreements; and to You under the Apache License, Version 2.0.
----
-# This playbook deploys Openwhisk Controllers.
-
-- hosts: controllers
-  vars:
-    #
-    # host_group - usually "{{ groups['...'] }}" where '...' is what was used
-    #   for 'hosts' above.  The hostname of each host will be looked up in this
-    #   group to assign a zero-based index.  That index will be used in concert
-    #   with 'name_prefix' below to assign a host/container name.
-    host_group: "{{ groups['controllers'] }}"
-    #
-    # name_prefix - a unique prefix for this set of controllers.  The prefix
-    #   will be used in combination with an index (determined using
-    #   'host_group' above) to name host/controllers.
-    name_prefix: "controller"
-    #
-    # controller_index_base - the deployment process allocates host docker
-    #   ports to individual controllers based on their indices.  This is an
-    #   additional offset to prevent collisions between different controller
-    #   groups. Usually 0 if only one group is being deployed, otherwise
-    #   something like "{{ groups['firstcontrollergroup']|length }}"
-    controller_index_base: 0
-    #
-    # select which additional capabilities (from the controller role) need
-    #   to be added to the controller.  Plugin will override default
-    #   configuration settings.  (Plugins are found in the
-    #   'roles/controller/tasks' directory for now.)
-    controller_plugins:
-      # Join an akka cluster rather than running standalone akka
-      - "lean"
-
-    image_name: "lean"
-    lean: true
-
-  roles:
-    - controller
diff --git a/ansible/openwhisk-lean.yml b/ansible/openwhisk-lean.yml
deleted file mode 100644
index 9dd87cf..0000000
--- a/ansible/openwhisk-lean.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more contributor
-# license agreements; and to You under the Apache License, Version 2.0.
----
-# This playbook deploys Lean Openwhisk stack.
-# It assumes you have already set up your database with the respective db provider playbook
(currently cloudant.yml or couchdb.yml)
-# It assumes that wipe.yml have being deployed at least once
-
-- import_playbook: controller-lean.yml
-
-- import_playbook: edge.yml
-
-- import_playbook: downloadcli.yml
diff --git a/ansible/roles/controller/tasks/deploy.yml b/ansible/roles/controller/tasks/deploy.yml
index 4ec8a11..0fb2ebb 100644
--- a/ansible/roles/controller/tasks/deploy.yml
+++ b/ansible/roles/controller/tasks/deploy.yml
@@ -6,15 +6,14 @@
 
 - import_tasks: docker_login.yml
 
-- name: get controller name, index and image name
+- name: get controller name and index
   set_fact:
     controller_name: "{{ name_prefix ~ host_group.index(inventory_hostname) }}"
     controller_index:
       "{{ (controller_index_base|int) + host_group.index(inventory_hostname) }}"
-    image_name: "{{ image_name | default('controller') }}"
 
-- name: pull the {{ image_name }}:{{ docker.image.tag }} image of controller
-  shell: "docker pull {{docker_registry}}{{ docker.image.prefix }}/{{image_name}}:{{docker.image.tag}}"
+- name: "pull the {{ docker.image.tag }} image of controller"
+  shell: "docker pull {{docker_registry}}{{ docker.image.prefix }}/controller:{{docker.image.tag}}"
   when: docker_registry != ""
   register: result
   until: (result.rc == 0)
@@ -277,32 +276,26 @@
     controller_volumes: "{{ controller_volumes|default({}) + [coverage_logs_dir+'/controller:/coverage']
 }}"
   when: coverage_enabled
 
-- name: populate controller docker container parameters
-  set_fact:
-    controller_container_params:
-      name: "{{ controller_name }}"
-      image: "{{docker_registry~docker.image.prefix}}/{{ image_name }}:{{ 'cov' if (coverage_enabled)
else docker.image.tag }}"
-      state: started
-      recreate: true
-      restart_policy: "{{ docker.restart.policy }}"
-      hostname: "{{ controller_name }}"
-      command:
-        /bin/sh -c
-        "exec /init.sh {{ controller_index }}
-        >> /logs/{{ controller_name }}_logs.log 2>&1"
-
 - name: include plugins
   include_tasks: "{{ item }}.yml"
   with_items: "{{ controller_plugins | default([]) }}"
 
 - name: (re)start controller
-  vars:
-    params:
-      env: "{{ env }}"
-      volumes: "{{ controller_volumes }}"
-      ports: "{{ ports_to_expose }}"
-
-  docker_container: "{{ controller_container_params | combine(params) }}"
+  docker_container:
+    name: "{{ controller_name }}"
+    image:
+      "{{docker_registry~docker.image.prefix}}/controller:{{ 'cov' if (coverage_enabled)
else docker.image.tag }}"
+    state: started
+    recreate: true
+    restart_policy: "{{ docker.restart.policy }}"
+    hostname: "{{ controller_name }}"
+    env: "{{ env }}"
+    volumes: "{{ controller_volumes }}"
+    ports: "{{ ports_to_expose }}"
+    command:
+      /bin/sh -c
+      "exec /init.sh {{ controller_index }}
+      >> /logs/{{ controller_name }}_logs.log 2>&1"
 
 - name: wait until the Controller in this host is up and running
   uri:
diff --git a/ansible/roles/controller/tasks/lean.yml b/ansible/roles/controller/tasks/lean.yml
deleted file mode 100644
index 6dc4799..0000000
--- a/ansible/roles/controller/tasks/lean.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more contributor
-# license agreements; and to You under the Apache License, Version 2.0.
----
-# This plugin will  provide controller with Lean Controller parameters
-
-- name: set inventory_hostname to invoker and save controllers data that can be changed by
invoker task
-  set_fact:
-    controller_env: "{{ env }}"
-    controller_ports: "{{ ports_to_expose }}"
-    inventory_hostname: "invoker0"
-    invoker_index_base: 0
-    name_prefix: "invoker"
-    host_group: "{{ groups['invokers'] }}"
-
-- name: include invoker data
-  include_tasks: "../invoker/tasks/deploy.yml"
-
-- name: filter invoker ports
-  set_fact:
-    invoker_ports_to_expose: "{{ ports_to_expose | reject('search','8080') | reject('search','jmx_remote_port')
| reject('search','jmx_remote_rmi_port') | list }}"
-
-- name: add invoker ports to ports_to_expose
-  set_fact:
-    ports_to_expose: >-
-      {{ controller_ports }} +
-      {{ invoker_ports_to_expose }}
-
-- name: save invoker volumes
-  set_fact:
-    invoker_volumes: "{{ volumes.split(',') | reject('search','/logs') | reject('search','/conf')
| reject('search','/coverage') | list }}"
-
-- name: populate volumes
-  set_fact:
-    controller_volumes: >-
-      {{ invoker_volumes }} +
-      {{ controller_volumes }}
-
-- name: populate environment variables for LEAN controller
-  vars:
-    lean_env:
-      "CONFIG_whisk_spi_MessagingProvider": "org.apache.openwhisk.connector.lean.LeanMessagingProvider"
-      "CONFIG_whisk_spi_LoadBalancerProvider": "org.apache.openwhisk.core.loadBalancer.LeanBalancer"
-  set_fact:
-    env: "{{ env | combine(controller_env) | combine(lean_env) }}"
-
-- name: update controller docker container params
-  vars:
-    lean_controller_params:
-      userns_mode: "host"
-      pid_mode: "host"
-      privileged: "yes"
-  set_fact:
-    controller_container_params: "{{ controller_container_params | combine(lean_controller_params)
}}"
-
-# VIM: let b:syntastic_yaml_yamllint_args="-c '".expand('%:p:h')."../../../yamllint.yml'"
-
diff --git a/ansible/roles/invoker/tasks/deploy.yml b/ansible/roles/invoker/tasks/deploy.yml
index f5a9acb..32acfc7 100644
--- a/ansible/roles/invoker/tasks/deploy.yml
+++ b/ansible/roles/invoker/tasks/deploy.yml
@@ -309,7 +309,6 @@
     volumes: "{{ volumes }}"
     ports: "{{ ports_to_expose }}"
     command: /bin/sh -c "exec /init.sh --id {{ invoker_index }} --uniqueName {{ invoker_index
}} >> /logs/{{ invoker_name }}_logs.log 2>&1"
-  when: lean is undefined
 
 - name: wait until Invoker is up and running
   uri:
@@ -321,4 +320,3 @@
   until: result.status == 200
   retries: 12
   delay: 5
-  when: lean is undefined
diff --git a/ansible/setup.yml b/ansible/setup.yml
index f4ea323..a550389 100644
--- a/ansible/setup.yml
+++ b/ansible/setup.yml
@@ -92,7 +92,3 @@
   - name: generate invoker certificates
     when: invoker.protocol == 'https'
     local_action: shell "{{ playbook_dir }}/files/genssl.sh" "{{ invoker.ssl.cn }}" "server"
"{{ playbook_dir }}/roles/invoker/files" {{ invoker.ssl.keystore.password }} {{ invoker.ssl.keyPrefix
}} "generateKey"
-
-  - name: generate lean controller plugin invoker certificates
-    when: invoker.protocol == 'https'
-    local_action: shell "{{ playbook_dir }}/files/genssl.sh" "{{ invoker.ssl.cn }}" "server"
"{{ playbook_dir }}/files" {{ invoker.ssl.keystore.password }} {{ invoker.ssl.keyPrefix }}
"generateKey"
diff --git a/common/scala/src/main/scala/org/apache/openwhisk/connector/lean/LeanConsumer.scala
b/common/scala/src/main/scala/org/apache/openwhisk/connector/lean/LeanConsumer.scala
deleted file mode 100644
index eec420f..0000000
--- a/common/scala/src/main/scala/org/apache/openwhisk/connector/lean/LeanConsumer.scala
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.openwhisk.connector.lean
-
-import scala.concurrent.duration._
-import org.apache.openwhisk.common.Logging
-import org.apache.openwhisk.core.connector.MessageConsumer
-import java.util.concurrent.BlockingQueue
-import java.util.concurrent.TimeUnit
-
-class LeanConsumer(queue: BlockingQueue[Array[Byte]], override val maxPeek: Int)(implicit
logging: Logging)
-    extends MessageConsumer {
-
-  /**
-   */
-  override def peek(duration: FiniteDuration, retry: Int): Iterable[(String, Int, Long, Array[Byte])]
= {
-    Option(queue.poll(duration.toMillis, TimeUnit.MILLISECONDS))
-      .map(record => Iterable(("", 0, 0L, record)))
-      .getOrElse(Iterable.empty)
-  }
-
-  /**
-   */
-  override def commit(retry: Int): Unit = { /*do nothing*/ }
-
-  override def close(): Unit = {
-    logging.info(this, s"closing lean consumer")
-  }
-}
diff --git a/common/scala/src/main/scala/org/apache/openwhisk/connector/lean/LeanMessagingProvider.scala
b/common/scala/src/main/scala/org/apache/openwhisk/connector/lean/LeanMessagingProvider.scala
deleted file mode 100644
index f13f5d7..0000000
--- a/common/scala/src/main/scala/org/apache/openwhisk/connector/lean/LeanMessagingProvider.scala
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.openwhisk.connector.lean
-
-import java.util.concurrent.BlockingQueue
-import java.util.concurrent.LinkedBlockingQueue
-
-import scala.collection.concurrent.Map
-import scala.collection.concurrent.TrieMap
-import scala.concurrent.duration.FiniteDuration
-import scala.util.Success
-import scala.util.Try
-
-import akka.actor.ActorSystem
-import org.apache.openwhisk.common.Logging
-import org.apache.openwhisk.core.WhiskConfig
-import org.apache.openwhisk.core.connector.MessageConsumer
-import org.apache.openwhisk.core.connector.MessageProducer
-import org.apache.openwhisk.core.connector.MessagingProvider
-import org.apache.openwhisk.core.entity.ByteSize
-
-/**
- * A simple implementation of MessagingProvider
- */
-object LeanMessagingProvider extends MessagingProvider {
-
-  val queues: Map[String, BlockingQueue[Array[Byte]]] =
-    new TrieMap[String, BlockingQueue[Array[Byte]]]
-
-  def getConsumer(config: WhiskConfig, groupId: String, topic: String, maxPeek: Int, maxPollInterval:
FiniteDuration)(
-    implicit logging: Logging,
-    actorSystem: ActorSystem): MessageConsumer = {
-
-    var queue = queues.getOrElseUpdate(topic, new LinkedBlockingQueue[Array[Byte]]())
-    new LeanConsumer(queue, maxPeek)
-  }
-
-  def getProducer(config: WhiskConfig, maxRequestSize: Option[ByteSize] = None)(
-    implicit logging: Logging,
-    actorSystem: ActorSystem): MessageProducer =
-    new LeanProducer(queues)
-
-  def ensureTopic(config: WhiskConfig, topic: String, topicConfigKey: String, maxMessageBytes:
Option[ByteSize] = None)(
-    implicit logging: Logging): Try[Unit] = {
-    if (queues.contains(topic)) {
-      Success(logging.info(this, s"topic $topic already existed"))
-    } else {
-      queues.put(topic, new LinkedBlockingQueue[Array[Byte]]())
-      Success(logging.info(this, s"topic $topic created"))
-    }
-  }
-}
diff --git a/common/scala/src/main/scala/org/apache/openwhisk/connector/lean/LeanProducer.scala
b/common/scala/src/main/scala/org/apache/openwhisk/connector/lean/LeanProducer.scala
deleted file mode 100644
index 1d35119..0000000
--- a/common/scala/src/main/scala/org/apache/openwhisk/connector/lean/LeanProducer.scala
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.openwhisk.connector.lean
-
-import akka.actor.ActorSystem
-import scala.concurrent.Future
-import org.apache.kafka.clients.producer.RecordMetadata
-import org.apache.openwhisk.common.Counter
-import org.apache.openwhisk.common.Logging
-import org.apache.openwhisk.core.connector.Message
-import org.apache.openwhisk.core.connector.MessageProducer
-
-import java.util.concurrent.{BlockingQueue, LinkedBlockingQueue}
-import scala.collection.concurrent.Map
-import java.nio.charset.StandardCharsets
-import scala.concurrent.ExecutionContext
-
-class LeanProducer(queues: Map[String, BlockingQueue[Array[Byte]]])(implicit logging: Logging,
actorSystem: ActorSystem)
-    extends MessageProducer {
-
-  implicit val ec: ExecutionContext = actorSystem.dispatcher
-
-  override def sentCount(): Long = sentCounter.cur
-
-  /** Sends msg to topic. This is an asynchronous operation. */
-  override def send(topic: String, msg: Message, retry: Int = 3): Future[RecordMetadata]
= {
-    implicit val transid = msg.transid
-
-    var queue = queues.getOrElseUpdate(topic, new LinkedBlockingQueue[Array[Byte]]())
-
-    Future {
-      queue.put(msg.serialize.getBytes(StandardCharsets.UTF_8))
-      sentCounter.next()
-      null
-    }
-  }
-
-  /** Closes producer. */
-  override def close(): Unit = {
-    logging.info(this, "closing lean producer")
-  }
-
-  private val sentCounter = new Counter()
-}
diff --git a/core/controller/build.gradle b/core/controller/build.gradle
index 0059157..243c776 100644
--- a/core/controller/build.gradle
+++ b/core/controller/build.gradle
@@ -43,7 +43,6 @@ dependencies {
     compile 'com.lightbend.akka.discovery:akka-discovery-kubernetes-api_2.12:0.11.0'
     compile 'com.lightbend.akka.discovery:akka-discovery-marathon-api_2.12:0.11.0'
     compile project(':common:scala')
-    compile project(':core:invoker')
     scoverage gradle.scoverage.deps
 }
 
diff --git a/core/controller/src/main/scala/org/apache/openwhisk/core/loadBalancer/LeanBalancer.scala
b/core/controller/src/main/scala/org/apache/openwhisk/core/loadBalancer/LeanBalancer.scala
deleted file mode 100644
index 403cca3..0000000
--- a/core/controller/src/main/scala/org/apache/openwhisk/core/loadBalancer/LeanBalancer.scala
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * 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.openwhisk.core.loadBalancer
-
-import java.nio.charset.StandardCharsets
-import java.util.concurrent.atomic.LongAdder
-
-import akka.actor.{ActorSystem, Props}
-import akka.event.Logging.InfoLevel
-import akka.stream.ActorMaterializer
-import org.apache.kafka.clients.producer.RecordMetadata
-import pureconfig._
-import org.apache.openwhisk.spi.SpiLoader
-import org.apache.openwhisk.core.entity._
-import org.apache.openwhisk.core.entity.size._
-import org.apache.openwhisk.common.LoggingMarkers._
-import org.apache.openwhisk.common._
-import org.apache.openwhisk.core.WhiskConfig._
-import org.apache.openwhisk.core.connector._
-import org.apache.openwhisk.core.{ConfigKeys, WhiskConfig}
-import scala.collection.concurrent.TrieMap
-import scala.concurrent.duration._
-import scala.concurrent.{ExecutionContext, Future, Promise}
-import scala.util.{Failure, Success}
-import org.apache.openwhisk.core.invoker.InvokerReactive
-import org.apache.openwhisk.utils.ExecutionContextFactory
-import org.apache.openwhisk.core.containerpool.ContainerPoolConfig
-
-/**
- * Lean loadbalancer implemetation.
- *
- * Communicates with Invoker directly without Kafka in the middle. Invoker does not exist
as a separate entity, it is built together with Controller
- * Uses LeanMessagingProvider to use in-memory queue instead of Kafka
- */
-class LeanBalancer(config: WhiskConfig, controllerInstance: ControllerInstanceId)(implicit
val actorSystem: ActorSystem,
-                                                                                  logging:
Logging,
-                                                                                  materializer:
ActorMaterializer)
-    extends LoadBalancer {
-
-  private implicit val executionContext: ExecutionContext = actorSystem.dispatcher
-
-  private val lbConfig = loadConfigOrThrow[ShardingContainerPoolBalancerConfig](ConfigKeys.loadbalancer)
-
-  /** State related to invocations and throttling */
-  private val activations = TrieMap[ActivationId, ActivationEntry]()
-  private val activationsPerNamespace = TrieMap[UUID, LongAdder]()
-  private val totalActivations = new LongAdder()
-  private val totalActivationMemory = new LongAdder()
-
-  actorSystem.scheduler.schedule(0.seconds, 10.seconds) {
-    MetricEmitter.emitHistogramMetric(LOADBALANCER_ACTIVATIONS_INFLIGHT(controllerInstance),
totalActivations.longValue)
-    MetricEmitter.emitHistogramMetric(LOADBALANCER_MEMORY_INFLIGHT(controllerInstance), totalActivationMemory.longValue)
-  }
-
-  /** Loadbalancer interface methods */
-  override def invokerHealth(): Future[IndexedSeq[InvokerHealth]] = Future.successful(IndexedSeq.empty[InvokerHealth])
-  override def activeActivationsFor(namespace: UUID): Future[Int] =
-    Future.successful(activationsPerNamespace.get(namespace).map(_.intValue()).getOrElse(0))
-  override def totalActiveActivations: Future[Int] = Future.successful(totalActivations.intValue())
-  override def clusterSize: Int = 1
-
-  val poolConfig: ContainerPoolConfig = loadConfigOrThrow[ContainerPoolConfig](ConfigKeys.containerPool)
-  val invokerName = InvokerInstanceId(0, None, None, poolConfig.userMemory)
-  val controllerName = ControllerInstanceId("controller-lean")
-
-  /** 1. Publish a message to the loadbalancer */
-  override def publish(action: ExecutableWhiskActionMetaData, msg: ActivationMessage)(
-    implicit transid: TransactionId): Future[Future[Either[ActivationId, WhiskActivation]]]
= {
-    val entry = setupActivation(msg, action, invokerName)
-    sendActivationToInvoker(messageProducer, msg, invokerName).map { _ =>
-      entry.promise.future
-    }
-  }
-
-  /** 2. Update local state with the to be executed activation */
-  private def setupActivation(msg: ActivationMessage,
-                              action: ExecutableWhiskActionMetaData,
-                              instance: InvokerInstanceId): ActivationEntry = {
-
-    totalActivations.increment()
-    totalActivationMemory.add(action.limits.memory.megabytes)
-    activationsPerNamespace.getOrElseUpdate(msg.user.namespace.uuid, new LongAdder()).increment()
-    val timeout = (action.limits.timeout.duration.max(TimeLimit.STD_DURATION) * lbConfig.timeoutFactor)
+ 1.minute
-    // Install a timeout handler for the catastrophic case where an active ack is not received
at all
-    // (because say an invoker is down completely, or the connection to the message bus is
disrupted) or when
-    // the active ack is significantly delayed (possibly dues to long queues but the subject
should not be penalized);
-    // in this case, if the activation handler is still registered, remove it and update
the books.
-    activations.getOrElseUpdate(
-      msg.activationId, {
-        val timeoutHandler = actorSystem.scheduler.scheduleOnce(timeout) {
-          processCompletion(msg.activationId, msg.transid, forced = true, isSystemError =
false, invoker = instance)
-        }
-
-        // please note: timeoutHandler.cancel must be called on all non-timeout paths, e.g.
Success
-        ActivationEntry(
-          msg.activationId,
-          msg.user.namespace.uuid,
-          instance,
-          action.limits.memory.megabytes.MB,
-          action.limits.concurrency.maxConcurrent,
-          action.fullyQualifiedName(true),
-          timeoutHandler,
-          Promise[Either[ActivationId, WhiskActivation]]())
-      })
-  }
-
-  private val messagingProvider = SpiLoader.get[MessagingProvider]
-  private val messageProducer = messagingProvider.getProducer(config)
-
-  /** 3. Send the activation to the invoker */
-  private def sendActivationToInvoker(producer: MessageProducer,
-                                      msg: ActivationMessage,
-                                      invoker: InvokerInstanceId): Future[RecordMetadata]
= {
-    implicit val transid: TransactionId = msg.transid
-
-    val topic = s"invoker${invoker.toInt}"
-
-    MetricEmitter.emitCounterMetric(LoggingMarkers.LOADBALANCER_ACTIVATION_START)
-    val start = transid.started(
-      this,
-      LoggingMarkers.CONTROLLER_KAFKA,
-      s"posting topic '$topic' with activation id '${msg.activationId}'",
-      logLevel = InfoLevel)
-
-    producer.send(topic, msg).andThen {
-      case Success(status) =>
-        transid.finished(this, start, s"posted to $topic", logLevel = InfoLevel)
-      case Failure(_) =>
-        transid.failed(this, start, s"error on posting to topic $topic")
-    }
-  }
-
-  /**
-   * Subscribes to active acks (completion messages from the invokers), and
-   * registers a handler for received active acks from invokers.
-   */
-  private val activeAckTopic = s"completed${controllerInstance.asString}"
-  private val maxActiveAcksPerPoll = 128
-  private val activeAckPollDuration = 1.second
-  private val activeAckConsumer =
-    messagingProvider.getConsumer(config, activeAckTopic, activeAckTopic, maxPeek = maxActiveAcksPerPoll)
-
-  private val activationFeed = actorSystem.actorOf(Props {
-    new MessageFeed(
-      "activeack",
-      logging,
-      activeAckConsumer,
-      maxActiveAcksPerPoll,
-      activeAckPollDuration,
-      processAcknowledgement)
-  })
-
-  /** 4. Get the acknowledgement message and parse it */
-  private def processAcknowledgement(bytes: Array[Byte]): Future[Unit] = Future {
-    val raw = new String(bytes, StandardCharsets.UTF_8)
-    AcknowledegmentMessage.parse(raw) match {
-      case Success(m: CompletionMessage) =>
-        processCompletion(
-          m.activationId,
-          m.transid,
-          forced = false,
-          isSystemError = m.isSystemError,
-          invoker = m.invoker)
-        activationFeed ! MessageFeed.Processed
-
-      case Success(m: ResultMessage) =>
-        processResult(m.response, m.transid)
-        activationFeed ! MessageFeed.Processed
-
-      case Failure(t) =>
-        activationFeed ! MessageFeed.Processed
-        logging.error(this, s"failed processing message: $raw")
-
-      case _ =>
-        activationFeed ! MessageFeed.Processed
-        logging.error(this, s"Unexpected Acknowledgment message received by loadbalancer:
$raw")
-    }
-  }
-
-  /** 5. Process the result ack and return it to the user */
-  private def processResult(response: Either[ActivationId, WhiskActivation], tid: TransactionId):
Unit = {
-    val aid = response.fold(l => l, r => r.activationId)
-
-    // Resolve the promise to send the result back to the user
-    // The activation will be removed from `activations`-map later, when we receive the completion
message, because the
-    // slot of the invoker is not yet free for new activations.
-    activations.get(aid).map { entry =>
-      entry.promise.trySuccess(response)
-    }
-    logging.info(this, s"received result ack for '$aid'")(tid)
-  }
-
-  /** Process the completion ack and update the state */
-  private def processCompletion(aid: ActivationId,
-                                tid: TransactionId,
-                                forced: Boolean,
-                                isSystemError: Boolean,
-                                invoker: InvokerInstanceId): Unit = {
-
-    val invocationResult = if (forced) {
-      InvocationFinishedResult.Timeout
-    } else {
-      // If the response contains a system error, report that, otherwise report Success
-      // Left generally is considered a Success, since that could be a message not fitting
into Kafka
-      if (isSystemError) {
-        InvocationFinishedResult.SystemError
-      } else {
-        InvocationFinishedResult.Success
-      }
-    }
-
-    activations.remove(aid) match {
-      case Some(entry) =>
-        totalActivations.decrement()
-        totalActivationMemory.add(entry.memory.toMB * (-1))
-        activationsPerNamespace.get(entry.namespaceId).foreach(_.decrement())
-
-        if (!forced) {
-          entry.timeoutHandler.cancel()
-          entry.promise.trySuccess(Left(aid))
-        } else {
-          entry.promise.tryFailure(new Throwable("no active ack received"))
-        }
-
-        logging.info(this, s"${if (!forced) "received" else "forced"} active ack for '$aid'")(tid)
-      // Active acks that are received here are strictly from user actions - health actions
are not part of
-      // the load balancer's activation map. Inform the invoker pool supervisor of the user
action completion.
-      case None if !forced =>
-        // the entry has already been removed but we receive an active ack for this activation
Id.
-        // This happens for health actions, because they don't have an entry in Loadbalancerdata
or
-        // for activations that already timed out.
-        logging.info(this, s"received active ack for '$aid' which has no entry")(tid)
-      case None =>
-        // the entry has already been removed by an active ack. This part of the code is
reached by the timeout.
-        // As the active ack is already processed we don't have to do anything here.
-        logging.info(this, s"forced active ack for '$aid' which has no entry")(tid)
-    }
-  }
-
-  private def getInvoker() {
-    implicit val ec = ExecutionContextFactory.makeCachedThreadPoolExecutionContext()
-    val actorSystema: ActorSystem =
-      ActorSystem(name = "invoker-actor-system", defaultExecutionContext = Some(ec))
-    val invoker = new InvokerReactive(config, invokerName, messageProducer)(actorSystema,
implicitly)
-  }
-
-  getInvoker()
-}
-
-object LeanBalancer extends LoadBalancerProvider {
-
-  override def instance(whiskConfig: WhiskConfig, instance: ControllerInstanceId)(
-    implicit actorSystem: ActorSystem,
-    logging: Logging,
-    materializer: ActorMaterializer): LoadBalancer = new LeanBalancer(whiskConfig, instance)
-
-  def requiredProperties =
-    Map(servicePort -> 8080.toString(), runtimesRegistry -> "") ++
-      ExecManifest.requiredProperties ++
-      wskApiHost
-}
diff --git a/core/lean/Dockerfile b/core/lean/Dockerfile
deleted file mode 100644
index e846f01..0000000
--- a/core/lean/Dockerfile
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# 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.
-#
-
-FROM scala
-
-ENV UID=1001 \
-    NOT_ROOT_USER=owuser
-ENV SWAGGER_UI_DOWNLOAD_SHA256=3d7ef5ddc59e10f132fe99771498f0f1ba7a2cbfb9585f9863d4191a574c96e7
\
-    SWAGGER_UI_VERSION=3.6.0
-    
-ENV DOCKER_VERSION=1.12.0 \
-    DOCKER_DOWNLOAD_SHA256=3dd07f65ea4a7b4c8829f311ab0213bca9ac551b5b24706f3e79a97e22097f8b
-
-RUN apk add --update openssl
-
-# Uncomment to fetch latest version of docker instead: RUN wget -qO- https://get.docker.com
| sh
-# Install docker client
-RUN curl -sSL -o docker-${DOCKER_VERSION}.tgz https://get.docker.com/builds/Linux/x86_64/docker-${DOCKER_VERSION}.tgz
&& \
-echo "${DOCKER_DOWNLOAD_SHA256}  docker-${DOCKER_VERSION}.tgz" | sha256sum -c - &&
\
-tar --strip-components 1 -xvzf docker-${DOCKER_VERSION}.tgz -C /usr/bin docker/docker &&
\
-tar --strip-components 1 -xvzf docker-${DOCKER_VERSION}.tgz -C /usr/bin docker/docker-runc
&& \
-rm -f docker-${DOCKER_VERSION}.tgz && \
-chmod +x /usr/bin/docker && \
-chmod +x /usr/bin/docker-runc
-
-# Install swagger-ui
-RUN curl -sSL -o swagger-ui-v${SWAGGER_UI_VERSION}.tar.gz --no-verbose https://github.com/swagger-api/swagger-ui/archive/v${SWAGGER_UI_VERSION}.tar.gz
&& \
-    echo "${SWAGGER_UI_DOWNLOAD_SHA256}  swagger-ui-v${SWAGGER_UI_VERSION}.tar.gz" | sha256sum
-c - && \
-    mkdir swagger-ui && \
-    tar zxf swagger-ui-v${SWAGGER_UI_VERSION}.tar.gz -C /swagger-ui --strip-components=2
swagger-ui-${SWAGGER_UI_VERSION}/dist && \
-    rm swagger-ui-v${SWAGGER_UI_VERSION}.tar.gz && \
-    sed -i s#http://petstore.swagger.io/v2/swagger.json#/api/v1/api-docs#g /swagger-ui/index.html
-
-# Copy app jars
-ADD build/distributions/lean.tar /
-
-COPY init.sh /
-RUN chmod +x init.sh
-RUN adduser -D -u ${UID} -h /home/${NOT_ROOT_USER} -s /bin/bash ${NOT_ROOT_USER}
-
-EXPOSE 8080
-CMD ["./init.sh", "0"]
diff --git a/core/lean/Dockerfile.cov b/core/lean/Dockerfile.cov
deleted file mode 100644
index e8d00af..0000000
--- a/core/lean/Dockerfile.cov
+++ /dev/null
@@ -1,16 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more contributor
-# license agreements; and to You under the Apache License, Version 2.0.
-
-FROM lean
-
-ARG OW_ROOT_DIR
-
-USER root
-RUN mkdir -p /coverage/common && \
-    mkdir -p /coverage/controller && \
-    mkdir -p "${OW_ROOT_DIR}/common/scala/build" && \
-    mkdir -p "${OW_ROOT_DIR}/core/controller/build" && \
-    ln -s /coverage/common "${OW_ROOT_DIR}/common/scala/build/scoverage" && \
-    ln -s /coverage/controller "${OW_ROOT_DIR}/core/controller/build/scoverage"
-
-COPY build/tmp/docker-coverage /controller/
diff --git a/core/lean/build.gradle b/core/lean/build.gradle
deleted file mode 100644
index 0d67778..0000000
--- a/core/lean/build.gradle
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.
- */
-
-apply plugin: 'scala'
-apply plugin: 'application'
-apply plugin: 'eclipse'
-apply plugin: 'maven'
-apply plugin: 'org.scoverage'
-
-ext.dockerImageName = 'lean'
-apply from: '../../gradle/docker.gradle'
-distDocker.dependsOn ':common:scala:distDocker', 'distTar'
-
-project.archivesBaseName = "openwhisk-lean"
-
-ext.coverageJars = [
-    "${buildDir}/libs/${project.archivesBaseName}-$version-scoverage.jar",
-    "${project(':common:scala').buildDir.absolutePath}/libs/openwhisk-common-$version-scoverage.jar"
-]
-distDockerCoverage.dependsOn ':common:scala:jarScoverage', 'jarScoverage'
-
-repositories {
-    mavenCentral()
-}
-
-dependencies {
-    compile "org.scala-lang:scala-library:${gradle.scala.version}"
-    compile 'com.lightbend.akka.management:akka-management-cluster-bootstrap_2.12:0.11.0'
-    compile 'com.lightbend.akka.discovery:akka-discovery-kubernetes-api_2.12:0.11.0'
-    compile 'com.lightbend.akka.discovery:akka-discovery-marathon-api_2.12:0.11.0'
-    compile project(':common:scala')
-    compile project(':core:controller')
-    scoverage gradle.scoverage.deps
-}
-
-tasks.withType(ScalaCompile) {
-    scalaCompileOptions.additionalParameters = gradle.scala.compileFlags
-}
-
-mainClassName = "org.apache.openwhisk.core.controller.Controller"
-applicationDefaultJvmArgs = ["-Djava.security.egd=file:/dev/./urandom"]
diff --git a/core/lean/init.sh b/core/lean/init.sh
deleted file mode 100644
index 025318d..0000000
--- a/core/lean/init.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more contributor
-# license agreements; and to You under the Apache License, Version 2.0.
-
-./copyJMXFiles.sh
-
-export LEAN_OPTS="$CONTROLLER_OPTS $(./transformEnvironment.sh)"
-
-exec lean/bin/lean "$@"
diff --git a/settings.gradle b/settings.gradle
index 3898b19..39ab270 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -19,7 +19,6 @@ include 'common:scala'
 
 include 'core:controller'
 include 'core:invoker'
-include 'core:lean'
 
 include 'tests'
 include 'tests:performance:gatling_tests'
diff --git a/tests/build.gradle b/tests/build.gradle
index 1155707..e427d72 100644
--- a/tests/build.gradle
+++ b/tests/build.gradle
@@ -51,20 +51,6 @@ def leanExcludes = [
     '**/MaxActionDurationTests*',
 ]
 
-def systemIncludes = [
-            "org/apache/openwhisk/core/limits/**",
-            "org/apache/openwhisk/core/admin/**",
-            "org/apache/openwhisk/core/cli/test/**",
-            "org/apache/openwhisk/core/apigw/actions/test/**",
-            "org/apache/openwhisk/core/database/test/*CacheConcurrencyTests*",
-            "org/apache/openwhisk/core/controller/test/*ControllerApiTests*",
-            "apigw/healthtests/**",
-            "ha/**",
-            "services/**",
-            "system/basic/**",
-            "system/rest/**",
-]
-
 ext.testSets = [
     "REQUIRE_ONLY_DB" : [
         "includes" : [
@@ -81,7 +67,19 @@ ext.testSets = [
         ]
     ],
     "REQUIRE_SYSTEM" : [
-        "includes" : systemIncludes,
+        "includes" : [
+            "org/apache/openwhisk/core/limits/**",
+            "org/apache/openwhisk/core/admin/**",
+            "org/apache/openwhisk/core/cli/test/**",
+            "org/apache/openwhisk/core/apigw/actions/test/**",
+            "org/apache/openwhisk/core/database/test/*CacheConcurrencyTests*",
+            "org/apache/openwhisk/core/controller/test/*ControllerApiTests*",
+            "apigw/healthtests/**",
+            "ha/**",
+            "services/**",
+            "system/basic/**",
+            "system/rest/**",
+        ],
         "excludes": [
             "system/basic/WskMultiRuntimeTests*"
         ]
@@ -100,16 +98,6 @@ ext.testSets = [
         "includes" : [
             "system/basic/**"
         ]
-    ],
-    "REQUIRE_LEAN_SYSTEM" : [
-        "includes" : systemIncludes,
-        
-        // Lean OpenWhisk doesn't use Kafka and has no Kafka installed as part of the setup.
-        // Tests suit below validating KafkaConnector so have to be excluded for Lean System
tests
-        "excludes" : [
-            "**/*KafkaConnectorTests*",
-            "system/basic/WskMultiRuntimeTests*"
-        ]
     ]
 ]
 
diff --git a/tests/performance/preparation/deploy-lean.sh b/tests/performance/preparation/deploy-lean.sh
deleted file mode 100755
index 0d5ce86..0000000
--- a/tests/performance/preparation/deploy-lean.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh
-#
-# 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.
-#
-set -e
-SCRIPTDIR="$(cd "$(dirname "$0")"; pwd)"
-ROOTDIR="$SCRIPTDIR/../../.."
-
-# Build Openwhisk
-cd $ROOTDIR
-TERM=dumb ./gradlew distDocker -PdockerImagePrefix=testing $GRADLE_PROJS_SKIP
-
-# Deploy Openwhisk
-cd $ROOTDIR/ansible
-ANSIBLE_CMD="$ANSIBLE_CMD -e limit_invocations_per_minute=999999 -e limit_invocations_concurrent=999999
-e controller_client_auth=false -e userLogs_spi=\"org.apache.openwhisk.core.containerpool.logging.LogDriverLogStoreProvider\""
-
-$ANSIBLE_CMD setup.yml
-
-$ANSIBLE_CMD prereq.yml
-$ANSIBLE_CMD couchdb.yml
-$ANSIBLE_CMD initdb.yml
-$ANSIBLE_CMD wipe.yml
-
-$ANSIBLE_CMD controller-lean.yml
-$ANSIBLE_CMD edge.yml
diff --git a/tests/src/test/scala/org/apache/openwhisk/core/cli/test/BaseApiGwTests.scala
b/tests/src/test/scala/org/apache/openwhisk/core/cli/test/BaseApiGwTests.scala
index 6bad4bb..1a74f01 100644
--- a/tests/src/test/scala/org/apache/openwhisk/core/cli/test/BaseApiGwTests.scala
+++ b/tests/src/test/scala/org/apache/openwhisk/core/cli/test/BaseApiGwTests.scala
@@ -93,9 +93,6 @@ abstract class BaseApiGwTests extends TestHelpers with WskTestHelpers with
Befor
     val wskprops = WskProps(token = "SOME TOKEN")
     wskprops.writeFile(cliWskPropsFile)
     println(s"wsk temporary props file created here: ${cliWskPropsFile.getCanonicalPath()}")
-    val halfThrottleTime = 60.seconds.toMillis / 2
-    println(s"Waiting ${halfThrottleTime} milliseconds to settle the throttle from previous
tests")
-    Thread.sleep(halfThrottleTime)
   }
 
   /*
diff --git a/tools/travis/distDocker-lean.sh b/tools/travis/distDocker-lean.sh
deleted file mode 100755
index f5bf4c6..0000000
--- a/tools/travis/distDocker-lean.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-#
-# 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.
-#
-
-set -e
-
-# Build script for Travis-CI.
-
-SECONDS=0
-SCRIPTDIR=$(cd $(dirname "$0") && pwd)
-ROOTDIR="$SCRIPTDIR/../.."
-
-cd $ROOTDIR
-TERM=dumb ./gradlew distDocker -PdockerImagePrefix=testing $GRADLE_PROJS_SKIP
-
-TERM=dumb ./gradlew :core:lean:distDockerCoverage -PdockerImagePrefix=testing
-
-echo "Time taken for ${0##*/} is $SECONDS secs"
diff --git a/tools/travis/setupLeanSystem.sh b/tools/travis/setupLeanSystem.sh
deleted file mode 100755
index cfb20c7..0000000
--- a/tools/travis/setupLeanSystem.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-#
-# 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.
-#
-
-set -e
-
-# Build script for Travis-CI.
-SECONDS=0
-SCRIPTDIR=$(cd $(dirname "$0") && pwd)
-ROOTDIR="$SCRIPTDIR/../.."
-RUNTIMES_MANIFEST=${1:-"/ansible/files/runtimes.json"}
-
-cd $ROOTDIR/ansible
-
-#$ANSIBLE_CMD openwhisk-lean.yml  -e manifest_file="$RUNTIMES_MANIFEST"
-$ANSIBLE_CMD openwhisk-lean.yml -e manifest_file="$RUNTIMES_MANIFEST"
-$ANSIBLE_CMD apigateway.yml
-$ANSIBLE_CMD routemgmt.yml
-
-echo "Time taken for ${0##*/} is $SECONDS secs"
diff --git a/tools/vagrant/README.md b/tools/vagrant/README.md
index ea9e524..6340132 100644
--- a/tools/vagrant/README.md
+++ b/tools/vagrant/README.md
@@ -307,12 +307,3 @@ Ignore error message `Sub-process /usr/bin/dpkg returned an error code
(1)` when
 creating Vagrant VM using `gui-true`. Remember to use `gui=true` every time you
 do `vagrant reload`. Or, you can enable the GUI directly by editing the Vagrant
 file.
-
-## Lean Setup
-To have a lean setup (no Kafka, Zookeeper and no Invokers as separate entities)
-
-Set environment variable LEAN to true before creating vagrant VM
-```
-export LEAN=true
-```
-
diff --git a/tools/vagrant/Vagrantfile b/tools/vagrant/Vagrantfile
index 39fc9b9..2466e35 100644
--- a/tools/vagrant/Vagrantfile
+++ b/tools/vagrant/Vagrantfile
@@ -149,16 +149,7 @@ Vagrant.configure('2') do |config|
     echo "`date`: deploy-start" >> /tmp/vagrant-times.txt
     cd ${ANSIBLE_HOME}
     su vagrant -c 'ansible-playbook -i environments/vagrant wipe.yml'
-
-    export LEAN=#{ENV['LEAN']} || "false"
-    if [[ $LEAN == "true" ]]; then
-      # Deploy Lean Openwhisk (consolidated controller + invoker without kafka, zookeeper
etc.)
-      su vagrant -c 'ansible-playbook -i environments/vagrant openwhisk-lean.yml -e invoker_use_runc=False
-e controller_akka_provider=local'
-    else
-      # Deploy full Openwhisk stack
-      su vagrant -c 'ansible-playbook -i environments/vagrant openwhisk.yml -e invoker_use_runc=False'
-    fi
-
+    su vagrant -c 'ansible-playbook -i environments/vagrant openwhisk.yml -e invoker_use_runc=False'
     su vagrant -c 'ansible-playbook -i environments/vagrant postdeploy.yml'
     su vagrant -c 'ansible-playbook -i environments/vagrant apigateway.yml'
     su vagrant -c 'ansible-playbook -i environments/vagrant routemgmt.yml'


Mime
View raw message