remove bookinfo | docker files
diff --git a/demo/apps/bookinfo/BUILD b/demo/apps/bookinfo/BUILD
deleted file mode 100644
index 5ce7a3b..0000000
--- a/demo/apps/bookinfo/BUILD
+++ /dev/null
@@ -1,16 +0,0 @@
-filegroup(
-    name = "bookinfo",
-    srcs = [
-        "bookinfo.yaml",
-        "mixer-rule-additional-telemetry.yaml",
-        "mixer-rule-empty-rule.yaml",
-        "mixer-rule-ratings-denial.yaml",
-        "mixer-rule-ratings-ratelimit.yaml",
-        "route-rule-all-v1.yaml",
-        "route-rule-delay.yaml",
-        "route-rule-reviews-50-v3.yaml",
-        "route-rule-reviews-test-v2.yaml",
-        "route-rule-reviews-v2-v3.yaml",
-    ],
-    visibility = ["//visibility:public"],
-)
diff --git a/demo/apps/bookinfo/README.md b/demo/apps/bookinfo/README.md
deleted file mode 100644
index 3c72e26..0000000
--- a/demo/apps/bookinfo/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-See the [Bookinfo demo](https://istio.io/docs/samples/bookinfo.html) in Istio
-docs for instructions on how to run this demo application.
diff --git a/demo/apps/bookinfo/bookinfo.yaml b/demo/apps/bookinfo/bookinfo.yaml
deleted file mode 100644
index dec1645..0000000
--- a/demo/apps/bookinfo/bookinfo.yaml
+++ /dev/null
@@ -1,222 +0,0 @@
-# Copyright 2017 Istio Authors
-#
-#   Licensed 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.
-
-##################################################################################################
-# Details service
-##################################################################################################
-apiVersion: v1
-kind: Service
-metadata:
-  name: details
-  labels:
-    app: details
-spec:
-  ports:
-  - port: 9080
-    name: http
-  selector:
-    app: details
----
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  name: details-v1
-spec:
-  replicas: 1
-  template:
-    metadata:
-      labels:
-        app: details
-        version: v1
-    spec:
-      containers:
-      - name: details
-        image: istio/examples-bookinfo-details-v1
-        imagePullPolicy: IfNotPresent
-        ports:
-        - containerPort: 9080
----
-##################################################################################################
-# Ratings service
-##################################################################################################
-apiVersion: v1
-kind: Service
-metadata:
-  name: ratings
-  labels:
-    app: ratings
-spec:
-  ports:
-  - port: 9080
-    name: http
-  selector:
-    app: ratings
----
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  name: ratings-v1
-spec:
-  replicas: 1
-  template:
-    metadata:
-      labels:
-        app: ratings
-        version: v1
-    spec:
-      containers:
-      - name: ratings
-        image: istio/examples-bookinfo-ratings-v1
-        imagePullPolicy: IfNotPresent
-        ports:
-        - containerPort: 9080
----
-##################################################################################################
-# Reviews service
-##################################################################################################
-apiVersion: v1
-kind: Service
-metadata:
-  name: reviews
-  labels:
-    app: reviews
-spec:
-  ports:
-  - port: 9080
-    name: http
-  selector:
-    app: reviews
----
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  name: reviews-v1
-spec:
-  replicas: 1
-  template:
-    metadata:
-      labels:
-        app: reviews
-        version: v1
-    spec:
-      containers:
-      - name: reviews
-        image: istio/examples-bookinfo-reviews-v1
-        imagePullPolicy: IfNotPresent
-        ports:
-        - containerPort: 9080
----
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  name: reviews-v2
-spec:
-  replicas: 1
-  template:
-    metadata:
-      labels:
-        app: reviews
-        version: v2
-    spec:
-      containers:
-      - name: reviews
-        image: istio/examples-bookinfo-reviews-v2
-        imagePullPolicy: IfNotPresent
-        ports:
-        - containerPort: 9080
----
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  name: reviews-v3
-spec:
-  replicas: 1
-  template:
-    metadata:
-      labels:
-        app: reviews
-        version: v3
-    spec:
-      containers:
-      - name: reviews
-        image: istio/examples-bookinfo-reviews-v3
-        imagePullPolicy: IfNotPresent
-        ports:
-        - containerPort: 9080
----
-##################################################################################################
-# Productpage service
-##################################################################################################
-apiVersion: v1
-kind: Service
-metadata:
-  name: productpage
-  labels:
-    app: productpage
-spec:
-  ports:
-  - port: 9080
-    name: http
-  selector:
-    app: productpage
----
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  name: productpage-v1
-spec:
-  replicas: 1
-  template:
-    metadata:
-      labels:
-        app: productpage
-        version: v1
-    spec:
-      containers:
-      - name: productpage
-        image: istio/examples-bookinfo-productpage-v1
-        imagePullPolicy: IfNotPresent
-        ports:
-        - containerPort: 9080
----
-###########################################################################
-# Ingress resource (gateway)
-##########################################################################
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
-  name: gateway
-  annotations:
-    kubernetes.io/ingress.class: "istio"
-spec:
-  rules:
-  - http:
-      paths:
-      - path: /productpage
-        backend:
-          serviceName: productpage
-          servicePort: 9080
-      - path: /login
-        backend:
-          serviceName: productpage
-          servicePort: 9080
-      - path: /logout
-        backend:
-          serviceName: productpage
-          servicePort: 9080
-      - path: /ratings
-        backend:
-          serviceName: ratings
-          servicePort: 9080
----
diff --git a/demo/apps/bookinfo/cleanup.sh b/demo/apps/bookinfo/cleanup.sh
deleted file mode 100755
index 533db2d..0000000
--- a/demo/apps/bookinfo/cleanup.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2017 Istio Authors
-#
-#   Licensed 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.
-
-SCRIPTDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
-
-istioctl delete route-rule productpage-default
-istioctl delete route-rule reviews-default
-istioctl delete route-rule ratings-default
-istioctl delete route-rule details-default
-istioctl delete route-rule reviews-test-v2
-istioctl delete route-rule ratings-test-delay
-#istioctl delete mixer-rule ratings-ratelimit
-
-kubectl delete -f $SCRIPTDIR/bookinfo.yaml
diff --git a/demo/apps/bookinfo/destination-ratings-test-delay.yaml b/demo/apps/bookinfo/destination-ratings-test-delay.yaml
deleted file mode 100644
index 2d39120..0000000
--- a/demo/apps/bookinfo/destination-ratings-test-delay.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-type: route-rule
-name: ratings-test-delay
-spec:
-  destination: ratings.default.svc.cluster.local
-  precedence: 2
-  match:
-    httpHeaders:
-      cookie:
-        regex: "^(.*?;)?(user=jason)(;.*)?$"
-  route:
-  - tags:
-      version: v1
-  httpFault:
-    delay:
-      percent: 100
-      fixedDelay: 7s
diff --git a/demo/apps/bookinfo/mixer-rule-additional-telemetry.yaml b/demo/apps/bookinfo/mixer-rule-additional-telemetry.yaml
deleted file mode 100644
index 17be581..0000000
--- a/demo/apps/bookinfo/mixer-rule-additional-telemetry.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-revision: "1"
-rules:
-- aspects:
-  - adapter: prometheus
-    kind: metrics
-    params:
-      metrics:
-      - descriptor_name: response_size
-        value: response.size | 0
-        labels:
-          source: source.service | "unknown"
-          target: target.service | "unknown"
-          service: target.labels["app"] | "unknown"
-          method: request.path | "unknown"
-          response_code: response.code | 200
-  - kind: access-logs
-    params:
-      logName: combined_log
-      log:
-        descriptor_name: accesslog.combined
-        template_expressions:
-          originIp: origin.ip
-          sourceUser: origin.user
-          timestamp: request.time
-          method: request.method
-          url: request.path
-          protocol: request.scheme
-          responseCode: response.code
-          responseSize: response.size
-          referer: request.referer
-          userAgent: request.headers["user-agent"]
-        labels:
-          originIp: origin.ip
-          sourceUser: origin.user
-          timestamp: request.time
-          method: request.method
-          url: request.path
-          protocol: request.scheme
-          responseCode: response.code
-          responseSize: response.size
-          referer: request.referer
-          userAgent: request.headers["user-agent"]
diff --git a/demo/apps/bookinfo/mixer-rule-empty-rule.yaml b/demo/apps/bookinfo/mixer-rule-empty-rule.yaml
deleted file mode 100644
index 59b07e9..0000000
--- a/demo/apps/bookinfo/mixer-rule-empty-rule.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-revision: "2"
-rules:
diff --git a/demo/apps/bookinfo/mixer-rule-ratings-denial.yaml b/demo/apps/bookinfo/mixer-rule-ratings-denial.yaml
deleted file mode 100644
index d6e5ba7..0000000
--- a/demo/apps/bookinfo/mixer-rule-ratings-denial.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-rules:
-  - selector: source.labels["app"]=="reviews" && source.labels["version"] == "v3"
-    aspects:
-    - kind: denials
diff --git a/demo/apps/bookinfo/mixer-rule-ratings-ratelimit.yaml b/demo/apps/bookinfo/mixer-rule-ratings-ratelimit.yaml
deleted file mode 100644
index 4284de0..0000000
--- a/demo/apps/bookinfo/mixer-rule-ratings-ratelimit.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-rules:
-- aspects:
-  - kind: quotas
-    params:
-      quotas:
-      - descriptorName: RequestCount
-        maxAmount: 5
-        expiration: 1s
diff --git a/demo/apps/bookinfo/route-rule-all-v1.yaml b/demo/apps/bookinfo/route-rule-all-v1.yaml
deleted file mode 100644
index b136ee9..0000000
--- a/demo/apps/bookinfo/route-rule-all-v1.yaml
+++ /dev/null
@@ -1,35 +0,0 @@
-type: route-rule
-name: productpage-default
-spec:
-  destination: productpage.default.svc.cluster.local
-  precedence: 1
-  route:
-  - tags:
-      version: v1
----
-type: route-rule
-name: reviews-default
-spec:
-  destination: reviews.default.svc.cluster.local
-  precedence: 1
-  route:
-  - tags:
-      version: v1
----
-type: route-rule
-name: ratings-default
-spec:
-  destination: ratings.default.svc.cluster.local
-  precedence: 1
-  route:
-  - tags:
-      version: v1
----
-type: route-rule
-name: details-default
-spec:
-  destination: details.default.svc.cluster.local
-  precedence: 1
-  route:
-  - tags:
-      version: v1
diff --git a/demo/apps/bookinfo/route-rule-delay.yaml b/demo/apps/bookinfo/route-rule-delay.yaml
deleted file mode 100644
index 2bfecb2..0000000
--- a/demo/apps/bookinfo/route-rule-delay.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-type: route-rule
-name: ratings-test-delay
-spec:
-  destination: ratings.default.svc.cluster.local
-  precedence: 2
-  match:
-    httpHeaders:
-      cookie:
-        regex: "^(.*?;)?(user=test-user)(;.*)?$"
-  route:
-  - tags:
-      version: v1
-  httpFault:
-    delay:
-      percent: 100
-      fixedDelay: 7s
diff --git a/demo/apps/bookinfo/route-rule-reviews-50-v3.yaml b/demo/apps/bookinfo/route-rule-reviews-50-v3.yaml
deleted file mode 100644
index a517ec2..0000000
--- a/demo/apps/bookinfo/route-rule-reviews-50-v3.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-type: route-rule
-name: reviews-default
-spec:
-  destination: reviews.default.svc.cluster.local
-  precedence: 1
-  route:
-  - tags:
-      version: v1
-    weight: 50
-  - tags:
-      version: v3
-    weight: 50
diff --git a/demo/apps/bookinfo/route-rule-reviews-test-v2.yaml b/demo/apps/bookinfo/route-rule-reviews-test-v2.yaml
deleted file mode 100644
index 775cc83..0000000
--- a/demo/apps/bookinfo/route-rule-reviews-test-v2.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-type: route-rule
-name: reviews-test-v2
-spec:
-  destination: reviews.default.svc.cluster.local
-  precedence: 2
-  match:
-    httpHeaders:
-      cookie:
-        regex: "^(.*?;)?(user=jason)(;.*)?$"
-  route:
-  - tags:
-      version: v2
diff --git a/demo/apps/bookinfo/route-rule-reviews-v2-v3.yaml b/demo/apps/bookinfo/route-rule-reviews-v2-v3.yaml
deleted file mode 100644
index 4be24e0..0000000
--- a/demo/apps/bookinfo/route-rule-reviews-v2-v3.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-type: route-rule
-name: reviews-default
-spec:
-  destination: reviews.default.svc.cluster.local
-  precedence: 1
-  route:
-  - tags:
-      version: v2
-    weight: 50
-  - tags:
-      version: v3
-    weight: 50
diff --git a/demo/apps/bookinfo/route-rule-reviews-v3.yaml b/demo/apps/bookinfo/route-rule-reviews-v3.yaml
deleted file mode 100644
index d238270..0000000
--- a/demo/apps/bookinfo/route-rule-reviews-v3.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-type: route-rule
-name: reviews-default
-spec:
-  destination: reviews.default.svc.cluster.local
-  precedence: 1
-  route:
-  - tags:
-      version: v3
-    weight: 100
diff --git a/demo/apps/bookinfo/src/build-services.sh b/demo/apps/bookinfo/src/build-services.sh
deleted file mode 100755
index 9dcb95f..0000000
--- a/demo/apps/bookinfo/src/build-services.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2017 Istio Authors
-#
-#   Licensed 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 -o errexit
-
-SCRIPTDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
-
-pushd $SCRIPTDIR/productpage
-  docker build -t istio/examples-bookinfo-productpage-v1 .
-popd
-
-pushd $SCRIPTDIR/details
-  docker build -t istio/examples-bookinfo-details-v1 .
-popd
-
-pushd $SCRIPTDIR/reviews
-  #java build the app.
-  docker run --rm -v `pwd`:/usr/bin/app:rw niaquinto/gradle clean build
-  pushd reviews-wlpcfg
-    #plain build -- no ratings
-    docker build -t istio/examples-bookinfo-reviews-v1 --build-arg service_version=v1 .
-    #with ratings black stars
-    docker build -t istio/examples-bookinfo-reviews-v2 --build-arg service_version=v2 --build-arg enable_ratings=true .
-    #with ratings red stars
-    docker build -t istio/examples-bookinfo-reviews-v3 --build-arg service_version=v3 --build-arg enable_ratings=true --build-arg star_color=red .
-  popd
-popd
-
-pushd $SCRIPTDIR/ratings
-  docker build -t istio/examples-bookinfo-ratings-v1 .
-popd
diff --git a/demo/apps/bookinfo/src/details/Dockerfile b/demo/apps/bookinfo/src/details/Dockerfile
deleted file mode 100644
index b721e3e..0000000
--- a/demo/apps/bookinfo/src/details/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2017 Istio Authors
-#
-#   Licensed 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 ruby:2.3
-
-RUN mkdir -p /opt/microservices
-COPY . /opt/microservices/
-EXPOSE 9080
-WORKDIR /opt/microservices
-
-CMD ruby details.rb 9080
diff --git a/demo/apps/bookinfo/src/details/details.rb b/demo/apps/bookinfo/src/details/details.rb
deleted file mode 100755
index a7ba941..0000000
--- a/demo/apps/bookinfo/src/details/details.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/usr/bin/ruby
-#
-# Copyright 2017 Istio Authors
-#
-#   Licensed 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.
-
-require 'webrick'
-
-if ARGV.length < 1 then
-    puts "usage: #{$PROGRAM_NAME} port"
-    exit(-1)
-end
-
-port = Integer(ARGV[0])
-
-server = WEBrick::HTTPServer.new :BindAddress => '0.0.0.0', :Port => port
-
-trap 'INT' do server.shutdown end
-
-details_resp = '
-<h4 class="text-center text-primary">Book Details</h4>
-<dl>
-<dt>Paperback:</dt>200 pages
-<dt>Publisher:</dt> PublisherA
-<dt>Language:</dt>English
-<dt>ISBN-10:</dt>1234567890
-<dt>ISBN-13:</dt>123-1234567980
-</dl>
-'
-
-server.mount_proc '/health' do |req, res|
-    res.status = 200
-    res.body = 'Details is healthy'
-    res['Content-Type'] = 'text/html'
-end
-
-server.mount_proc '/details' do |req, res|
-    res.body = details_resp
-    res['Content-Type'] = 'text/html'
-end
-
-server.mount_proc '/' do |req, res|
-  res.body = '
-    <html>
-    <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-
-    <!-- Latest compiled and minified CSS -->
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
-
-    <!-- Optional theme -->
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
-
-    <!-- Latest compiled and minified JavaScript -->
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
-
-    <!-- Latest compiled and minified JavaScript -->
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
-
-    </head>
-    <title>Book details service</title>
-    <body>
-    <p><h2>Hello! This is the book details service. My content is</h2></p>
-    <div>%s</div>
-    </body>
-    </html>
-  ' % [details_resp]
-  res['Content-Type'] = 'text/html'
-end
-
-server.start
diff --git a/demo/apps/bookinfo/src/productpage/Dockerfile b/demo/apps/bookinfo/src/productpage/Dockerfile
deleted file mode 100644
index bf52623..0000000
--- a/demo/apps/bookinfo/src/productpage/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2017 Istio Authors
-#
-#   Licensed 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 python:2-onbuild
-
-RUN mkdir -p /opt/microservices
-COPY . /opt/microservices/
-EXPOSE 9080
-WORKDIR /opt/microservices
-CMD python productpage.py 9080
diff --git a/demo/apps/bookinfo/src/productpage/productpage.py b/demo/apps/bookinfo/src/productpage/productpage.py
deleted file mode 100644
index 52cde6b..0000000
--- a/demo/apps/bookinfo/src/productpage/productpage.py
+++ /dev/null
@@ -1,181 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright 2017 Istio Authors
-#
-#   Licensed 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 flask import Flask, request, render_template, redirect, url_for
-import simplejson as json
-import requests
-import sys
-from json2html import *
-import logging
-import requests
-
-# These two lines enable debugging at httplib level (requests->urllib3->http.client)
-# You will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA.
-# The only thing missing will be the response.body which is not logged.
-try:
-    import http.client as http_client
-except ImportError:
-    # Python 2
-    import httplib as http_client
-http_client.HTTPConnection.debuglevel = 1
-
-app = Flask(__name__)
-logging.basicConfig(filename='microservice.log',filemode='w',level=logging.DEBUG)
-requests_log = logging.getLogger("requests.packages.urllib3")
-requests_log.setLevel(logging.DEBUG)
-requests_log.propagate = True
-app.logger.addHandler(logging.StreamHandler(sys.stdout))
-app.logger.setLevel(logging.DEBUG)
-
-from flask_bootstrap import Bootstrap
-Bootstrap(app)
-
-details = {
-    "name" : "http://details:9080",
-    "endpoint" : "details",
-    "children" : []
-}
-
-ratings = {
-    "name" : "http://ratings:9080",
-    "endpoint" : "ratings",
-    "children" : []
-}
-
-reviews = {
-    "name" : "http://reviews:9080",
-    "endpoint" : "reviews",
-    "children" : [ratings]
-}
-
-productpage = {
-    "name" : "http://productpage:9080",
-    "endpoint" : "details",
-    "children" : [details, reviews]
-}
-
-service_dict = {
-    "productpage" : productpage,
-    "details" : details,
-    "reviews" : reviews,
-}
-
-def getForwardHeaders(request):
-    headers = {}
-
-    user_cookie = request.cookies.get("user")
-    if user_cookie:
-        headers['Cookie'] = 'user=' + user_cookie
-
-    incoming_headers = [ 'x-request-id',
-                         'x-b3-traceid',
-                         'x-b3-spanid',
-                         'x-b3-parentspanid',
-                         'x-b3-sampled',
-                         'x-b3-flags',
-                         'x-ot-span-context'
-    ]
-
-    for ihdr in incoming_headers:
-        val = request.headers.get(ihdr)
-        if val is not None:
-            headers[ihdr] = val
-            #print "incoming: "+ihdr+":"+val
-
-    return headers
-
-@app.route('/')
-@app.route('/index.html')
-def index():
-    """ Display productpage with normal user and test user buttons"""
-    global productpage
-
-    table = json2html.convert(json = json.dumps(productpage),
-                              table_attributes="class=\"table table-condensed table-bordered table-hover\"")
-
-    return render_template('index.html', serviceTable=table)
-
-@app.route('/health')
-def health():
-    return 'Product page is healthy'
-
-@app.route('/login', methods=['POST'])
-def login():
-    user = request.values.get('username')
-    response = app.make_response(redirect(request.referrer))
-    response.set_cookie('user', user)
-    return response
-
-@app.route('/logout', methods=['GET'])
-def logout():
-    response = app.make_response(redirect(request.referrer))
-    response.set_cookie('user', '', expires=0)
-    return response
-
-@app.route('/productpage')
-def front():
-    headers = getForwardHeaders(request)
-    user = request.cookies.get("user", "")
-    bookdetails = getDetails(headers)
-    bookreviews = getReviews(headers)
-    return render_template('productpage.html', details=bookdetails, reviews=bookreviews, user=user)
-
-def getReviews(headers):
-    for i in range(2):
-        try:
-            res = requests.get(reviews['name']+"/"+reviews['endpoint'], headers=headers, timeout=3.0)
-        except:
-            res = None
-
-        if res and res.status_code == 200:
-            return res.text
-
-    return """<h3>Sorry, product reviews are currently unavailable for this book.</h3>"""
-
-
-def getDetails(headers):
-    try:
-        res = requests.get(details['name']+"/"+details['endpoint'], headers=headers, timeout=1.0)
-    except:
-        res = None
-
-    if res and res.status_code == 200:
-        return res.text
-    else:
-        return """<h3>Sorry, product details are currently unavailable for this book.</h3>"""
-
-
-class Writer(object):
-
-    def __init__(self, filename):
-        self.file = open(filename,'w')
-
-    def write(self, data):
-        self.file.write(data)
-        self.file.flush()
-
-
-if __name__ == '__main__':
-    if len(sys.argv) < 2:
-        print "usage: %s port" % (sys.argv[0])
-        sys.exit(-1)
-
-    p = int(sys.argv[1])
-    sys.stderr = Writer('stderr.log')
-    sys.stdout = Writer('stdout.log')
-    app.run(host='0.0.0.0', port=p, debug = True, threaded=True)
-
diff --git a/demo/apps/bookinfo/src/productpage/requirements.txt b/demo/apps/bookinfo/src/productpage/requirements.txt
deleted file mode 100644
index 619c343..0000000
--- a/demo/apps/bookinfo/src/productpage/requirements.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-requests
-flask
-flask_json
-flask_bootstrap
-json2html
-simplejson
-gevent
-
diff --git a/demo/apps/bookinfo/src/productpage/templates/index.html b/demo/apps/bookinfo/src/productpage/templates/index.html
deleted file mode 100644
index 6f7d6d2..0000000
--- a/demo/apps/bookinfo/src/productpage/templates/index.html
+++ /dev/null
@@ -1,32 +0,0 @@
-{% extends "bootstrap/base.html" %}
-{% block metas %}
-<meta charset="utf-8">
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-{% endblock %}
-
-{% block styles %}
-<!-- Latest compiled and minified CSS -->
-<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
-
-<!-- Optional theme -->
-<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
-{% endblock %}
-{% block scripts %}
-<!-- Latest compiled and minified JavaScript -->
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
-
-<!-- Latest compiled and minified JavaScript -->
-<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
-{% endblock %}
-{% block title %}Simple Bookstore App{% endblock %}
-{% block content %}
-    <p><h3>Hello! This is a simple bookstore application consisting of three services as shown below</h3></p>
-    {% autoescape false %}
-    {{ serviceTable }}
-    {% endautoescape %}
-    <p><h4>Click on one of the links below to auto generate a request to the backend as a real user or a tester
-    </h4></p>
-    <p><a href="/productpage?u=normal">Normal user</a></p>
-    <p><a href="/productpage?u=test">Test user</a></p>
-{% endblock %}
diff --git a/demo/apps/bookinfo/src/productpage/templates/productpage.html b/demo/apps/bookinfo/src/productpage/templates/productpage.html
deleted file mode 100644
index 382726a..0000000
--- a/demo/apps/bookinfo/src/productpage/templates/productpage.html
+++ /dev/null
@@ -1,120 +0,0 @@
-{% extends "bootstrap/base.html" %}
-{% block metas %}
-<meta charset="utf-8">
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1.0">
-{% endblock %}
-
-{% block styles %}
-<!-- Latest compiled and minified CSS -->
-<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
-
-<!-- Optional theme -->
-<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
-{% endblock %}
-{% block scripts %}
-<!-- Latest compiled and minified JavaScript -->
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
-
-<!-- Latest compiled and minified JavaScript -->
-<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
-
-<script type="text/javascript">
-$('#login-modal').on('shown.bs.modal', function () {
-     $('#username').focus();
-});
-</script>
-{% endblock %}
-{% block title %}Simple Bookstore App{% endblock %}
-{% block content %}
-
-<nav class="navbar navbar-inverse navbar-static-top">
-    <div class="container">
-        <div class="navbar-header">
-            <a class="navbar-brand" href="#">BookInfo Sample</a>
-        </div>
-        {% if user: %}
-        <p class="navbar-text navbar-right">
-            <i class="glyphicon glyphicon-user" aria-hidden="true"></i>
-            <span style="padding-left: 5px;">{{ user }}  ( <a href="logout">sign out</a> )</span>
-        </p>
-        {% else %}
-        <button type="button" class="btn btn-default navbar-btn navbar-right" data-toggle="modal" href="#login-modal">Sign in</button>
-        {% endif %}
-    </div>
-</nav>
-
-<!---
-<div class="navbar navbar-inverse navbar-fixed-top">
-  <div class="container">
-    <div class="navbar-header pull-left">
-      <a class="navbar-brand" href="#">Microservices Fabric BookInfo Demo</a>
-    </div>
-    <div class="navbar-header pull-right">
-      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-        <span class="icon-bar"></span>
-        <span class="icon-bar"></span>
-        <span class="icon-bar"></span>
-      </button>
-    </div>
-    <div class="navbar-collapse collapse">
-{% if user %}
-      <a href="logout"><button type="button" class="btn btn-default navbar-btn pull-right">Sign out</button></a>
-      <p class="navbar-text pull-right">Signed in as {{ user }}</p>
-{% else %}
-      <button type="button" class="btn btn-default navbar-btn pull-right" data-toggle="modal" data-target="#login-modal">Sign in</button>
-{% endif %}
-    </div>
-  </div>
-</div>
--->
-    
-<div id="login-modal" class="modal fade" role="dialog">
-  <div class="modal-dialog">
-    <div class="modal-content">
-      <div class="modal-header">
-        <button type="button" class="close" data-dismiss="modal">&times;</button>
-        <h4 class="modal-title">Please sign in</h4>
-      </div>
-      <div class="modal-body">
-        <form method="post" action='login' name="login_form">
-          <p><input type="text" class="form-control" name="username" id="username" placeholder="User Name"></p>
-          <p><input type="password" class="form-control" name="passwd" placeholder="Password"></p>
-          <p>
-             <button type="submit" class="btn btn-primary">Sign in</button>
-             <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
-          </p>
-        </form>
-      </div>
-    </div>
-
-  </div>
-</div>
-
-<div class="container-fluid">
-<div class="row">
-<div class="col-md-12">
-    <h3 class="text-center text-primary">The Comedy of Errors</h3>
-    <p> <a href="https://en.wikipedia.org/wiki/The_Comedy_of_Errors">Wikipedia
-    Summary</a>: The Comedy of Errors is one of <b>William
-    Shakespeare's</b> early plays. It is his shortest and one of his
-    most farcical comedies, with a major part of the humour coming
-    from slapstick and mistaken identity, in addition to puns and word
-    play.</p>
-</div>
-</div>
-
-<div class="row">
-<div class="col-md-6">
-{% autoescape false %}
-{{ details }}
-{% endautoescape %}
-</div>
-<div class="col-md-6">
-{% autoescape false %}
-{{ reviews }}
-{% endautoescape %}
-</div>
-</div>
-</div>
-{% endblock %}
diff --git a/demo/apps/bookinfo/src/ratings/Dockerfile b/demo/apps/bookinfo/src/ratings/Dockerfile
deleted file mode 100644
index 45030d7..0000000
--- a/demo/apps/bookinfo/src/ratings/Dockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2017 Istio Authors
-#
-#   Licensed 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 node:4-onbuild
-
-EXPOSE 9080
-CMD node ratings.js 9080
diff --git a/demo/apps/bookinfo/src/ratings/package.json b/demo/apps/bookinfo/src/ratings/package.json
deleted file mode 100644
index 40c0984..0000000
--- a/demo/apps/bookinfo/src/ratings/package.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "scripts": {
-    "start": "node ratings.js"
-  },
-  "dependencies": {
-    "httpdispatcher": "1.0.0"
-  }
-}
\ No newline at end of file
diff --git a/demo/apps/bookinfo/src/ratings/ratings.js b/demo/apps/bookinfo/src/ratings/ratings.js
deleted file mode 100644
index 2d0cb98..0000000
--- a/demo/apps/bookinfo/src/ratings/ratings.js
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2017 Istio Authors
-//
-//   Licensed 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.
-
-var http = require('http');
-var dispatcher = require('httpdispatcher');
-
-port = parseInt(process.argv[2]);
-
-var ratingsResponse = {"Reviewer1": 5, "Reviewer2": 4}
-
-dispatcher.onGet("/", function(req, res) {
-    res.writeHead(200)
-    res.end(
-        '<html>' +
-        '<head>' +
-        '<meta charset="utf-8">' +
-        '<meta http-equiv="X-UA-Compatible" content="IE=edge">' +
-        '<meta name="viewport" content="width=device-width, initial-scale=1">' +
-        '<!-- Latest compiled and minified CSS -->' +
-        '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">' +
-        '<!-- Optional theme -->' +
-        '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">' +
-        '<!-- Latest compiled and minified JavaScript -->' +
-        '<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>' +
-        '<!-- Latest compiled and minified JavaScript -->' +
-        '<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>' +
-        '</head>' +
-        '<title>Book ratings service</title>' +
-        '<body>' +
-        '<p><h2>Hello! This is the book ratings service. My content is</h2></p>' +
-        '<div>' + JSON.stringify(ratingsResponse) + '</div>' +
-        '</body>' +
-        '</html>',
-        {"Content-type": "text/html"})
-})
-
-dispatcher.onGet("/ratings", function(req, res) {
-    var json = JSON.stringify(ratingsResponse)
-    res.writeHead(200, {"Content-type": "application/json"})
-    res.end(json)
-})
-
-dispatcher.onGet("/health", function(req, res) {
-    res.writeHead(200, {"Content-type": "text/plain"})
-    res.end("Ratings is healthy")
-})
-
-function handleRequest(request, response){
-    try {
-        console.log(request.method + " " + request.url);
-        dispatcher.dispatch(request, response);
-    } catch(err) {
-        console.log(err);
-    }
-}
-
-var server = http.createServer(handleRequest);
-
-server.listen(port, function(){
-    console.log("Server listening on: http://0.0.0.0:%s", port);
-});
diff --git a/demo/apps/bookinfo/src/reviews/build.gradle b/demo/apps/bookinfo/src/reviews/build.gradle
deleted file mode 100644
index 75bf360..0000000
--- a/demo/apps/bookinfo/src/reviews/build.gradle
+++ /dev/null
@@ -1,7 +0,0 @@
-allprojects {
-   group = 'org.istio'
-   version = '1.0'
-   repositories {
-     mavenCentral()
-   }
-}
diff --git a/demo/apps/bookinfo/src/reviews/reviews-application/build.gradle b/demo/apps/bookinfo/src/reviews/reviews-application/build.gradle
deleted file mode 100644
index bf0f375..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-application/build.gradle
+++ /dev/null
@@ -1,19 +0,0 @@
-apply plugin: 'war'
-
-sourceCompatibility = 1.8
-
-repositories {
-  mavenCentral()
-}
-
-dependencies {
-    providedCompile group:'javax.websocket', name:'javax.websocket-api', version:'1.1'
-    providedCompile group:'javax.ws.rs', name:'javax.ws.rs-api', version:'2.0'
-    providedCompile group:'javax.json', name:'javax.json-api', version:'1.0'
-    providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
-    providedCompile 'javax.annotation:javax.annotation-api:1.2'
-    providedCompile 'javax.inject:javax.inject:1'
-    providedCompile 'javax.enterprise.concurrent:javax.enterprise.concurrent-api:1.0'
-    providedCompile 'javax.enterprise:cdi-api:1.2'
-    providedCompile 'io.swagger:swagger-annotations:1.5.0'
-}
diff --git a/demo/apps/bookinfo/src/reviews/reviews-application/src/main/java/application/ReviewsApplication.java b/demo/apps/bookinfo/src/reviews/reviews-application/src/main/java/application/ReviewsApplication.java
deleted file mode 100644
index 9f62285..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-application/src/main/java/application/ReviewsApplication.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package application;
-import javax.ws.rs.ApplicationPath;
-import javax.ws.rs.core.Application;
-
-@ApplicationPath("/")
-public class ReviewsApplication extends Application {
-}
diff --git a/demo/apps/bookinfo/src/reviews/reviews-application/src/main/java/application/rest/LibertyRestEndpoint.java b/demo/apps/bookinfo/src/reviews/reviews-application/src/main/java/application/rest/LibertyRestEndpoint.java
deleted file mode 100644
index 7379c4b..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-application/src/main/java/application/rest/LibertyRestEndpoint.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Istio Authors
- *
- * Licensed 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 application.rest;
-
-import java.io.StringReader;
-import javax.json.Json;
-import javax.json.JsonObject;
-import javax.json.JsonObjectBuilder;
-import javax.json.JsonReader;
-import javax.ws.rs.ApplicationPath;
-import javax.ws.rs.CookieParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.Path;
-import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
-import javax.ws.rs.client.Invocation;
-import javax.ws.rs.client.Invocation.Builder;
-import javax.ws.rs.client.ResponseProcessingException;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.Cookie;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-@Path("/")
-public class LibertyRestEndpoint extends Application {
-
-    private final static Boolean ratings_enabled = Boolean.valueOf(System.getenv("ENABLE_RATINGS"));
-    private final static String star_color = System.getenv("STAR_COLOR") == null ? "black" : System.getenv("STAR_COLOR");
-    private final static String ratings_service = "http://ratings:9080/ratings";
-
-    private final static String review_resp = ""+
-      "<blockquote>"+
-      "<p>"+
-      "An extremely entertaining play by Shakespeare. The slapstick humour is refreshing!"+
-      "</p> <small>Reviewer1 <cite>Affiliation1</cite></small>"+
-      "%s"+
-      "</blockquote>"+
-      "<blockquote>"+
-      "<p>"+
-      "Absolutely fun and entertaining. The play lacks thematic depth when compared "+
-      "to other plays by Shakespeare."+
-      "</p> <small>Reviewer2 <cite>Affiliation2</cite></small>"+
-      "%s"+
-      "</blockquote>";
-
-    private JsonObject getRatings(Cookie user, String xreq, String xtraceid, String xspanid,
-                                  String xparentspanid, String xsampled, String xflags, String xotspan){
-      ClientBuilder cb = ClientBuilder.newBuilder();
-      String timeout = star_color.equals("black") ? "10000" : "2500";
-      cb.property("com.ibm.ws.jaxrs.client.connection.timeout", timeout);
-      cb.property("com.ibm.ws.jaxrs.client.receive.timeout", timeout);
-      Client client = cb.build();
-      WebTarget ratingsTarget = client.target(ratings_service);
-      Invocation.Builder builder = ratingsTarget.request(MediaType.APPLICATION_JSON);
-      if(xreq!=null) {
-        builder.header("x-request-id",xreq);
-      }
-      if(xtraceid!=null) {
-        builder.header("x-b3-traceid",xtraceid);
-      }
-      if(xspanid!=null) {
-        builder.header("x-b3-spanid",xspanid);
-      }
-      if(xparentspanid!=null) {
-        builder.header("x-b3-parentspanid",xparentspanid);
-      }
-      if(xsampled!=null) {
-        builder.header("x-b3-sampled",xsampled);
-      }
-      if(xflags!=null) {
-        builder.header("x-b3-flags",xflags);
-      }
-      if(xotspan!=null) {
-        builder.header("x-ot-span-context",xotspan);
-      }
-      if(user!=null) {
-        builder.cookie(user);
-      }
-      Response r = builder.get();
-      int statusCode = r.getStatusInfo().getStatusCode();
-      if (statusCode == Response.Status.OK.getStatusCode() ) {
-        StringReader stringReader = new StringReader(r.readEntity(String.class));
-        try (JsonReader jsonReader = Json.createReader(stringReader)) {
-           JsonObject j = jsonReader.readObject();
-           JsonObjectBuilder jb = Json.createObjectBuilder();
-           for(String key : j.keySet()){
-             int count = j.getInt(key);
-             String stars = "<font color=\""+ star_color +"\">";
-             for(int i=0; i<count; i++){
-               stars += "<span class=\"glyphicon glyphicon-star\"></span>";
-             }
-             stars += "</font>";
-             if(count<5){
-               for(int i=0; i<(5-count); i++){
-                 stars += "<span class=\"glyphicon glyphicon-star-empty\"></span>";
-               }
-             }
-             jb.add(key,stars);
-           }
-           JsonObject result = jb.build();
-           return result;
-        }
-      }else{
-        System.out.println("Error: unable to contact "+ratings_service+" got status of "+statusCode);
-        return null;
-      }
-    }
-
-    @GET
-    @Path("/health")
-    public Response health() {
-        return Response.ok().type(MediaType.TEXT_HTML_TYPE).entity("Reviews is healthy").build();
-    }
-
-    @GET
-    @Path("/reviews")
-    public Response bookReviews(@CookieParam("user") Cookie user,
-                                @HeaderParam("x-request-id") String xreq,
-                                @HeaderParam("x-b3-traceid") String xtraceid,
-                                @HeaderParam("x-b3-spanid") String xspanid,
-                                @HeaderParam("x-b3-parentspanid") String xparentspanid,
-                                @HeaderParam("x-b3-sampled") String xsampled,
-                                @HeaderParam("x-b3-flags") String xflags,
-                                @HeaderParam("x-ot-span-context") String xotspan) {
-      String r1 = "";
-      String r2 = "";
-
-      if(ratings_enabled){
-        JsonObject ratings = getRatings(user, xreq, xtraceid, xspanid, xparentspanid, xsampled, xflags, xotspan);
-
-        if(ratings!=null){
-          if(ratings.containsKey("Reviewer1")){
-            r1 = ratings.getString("Reviewer1");
-          }
-          if(ratings.containsKey("Reviewer2")){
-            r2 = ratings.getString("Reviewer2");
-          }
-        }else{
-            // return Response.serverError().build();
-            r1 = r2 = "<span class=\"bg-warning\">product ratings not available</span>";
-        }
-      }
-      String replyBody = String.format(review_resp,r1,r2);
-      return Response.ok().type(MediaType.TEXT_HTML_TYPE).entity(replyBody).build();
-    }
-
-    private final static String index = ""+
-    "<html>"+
-    "<head>"+
-    "<meta charset=\"utf-8\">"+
-    "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">"+
-    "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"+
-    "<!-- Latest compiled and minified CSS -->"+
-    "<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css\">"+
-    "<!-- Optional theme -->"+
-    "<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css\">"+
-    "<!-- Latest compiled and minified JavaScript -->"+
-    "<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js\"></script>"+
-    "<!-- Latest compiled and minified JavaScript -->"+
-    "<script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js\"></script>"+
-    "</head>"+
-    "<title>Book reviews service</title>"+
-    "<body>"+
-    "<p><h2>Hello! This is the book reviews service. My content is</h2></p>"+
-    "<div>%s</div>"+
-    "<p>Ratings service enabled? %s</p>"+
-    "<p>Star color: %s </p>"+
-    "</body>"+
-    "</html>";
-
-    @GET
-    @Path("/")
-    public String getDefault(){
-      return String.format(index,review_resp,ratings_enabled,star_color);
-    }
-
-}
diff --git a/demo/apps/bookinfo/src/reviews/reviews-application/src/main/webapp/WEB-INF/ibm-web-ext.xml b/demo/apps/bookinfo/src/reviews/reviews-application/src/main/webapp/WEB-INF/ibm-web-ext.xml
deleted file mode 100644
index 68c5217..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-application/src/main/webapp/WEB-INF/ibm-web-ext.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-  Copyright (c) 2017 Istio Authors
-
-  Licensed 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.
--->
-<!DOCTYPE xml>
-<web-ext
-    xmlns="http://websphere.ibm.com/xml/ns/javaee"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
-    version="1.0">
-  <context-root uri="/"/>
-</web-ext>
diff --git a/demo/apps/bookinfo/src/reviews/reviews-application/src/main/webapp/WEB-INF/web.xml b/demo/apps/bookinfo/src/reviews/reviews-application/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index a3823f1..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-application/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
-    version="3.1">
-    <display-name>Liberty Project</display-name>
-
-    <welcome-file-list>
-        <welcome-file>index.html</welcome-file>
-    </welcome-file-list>
-</web-app>
\ No newline at end of file
diff --git a/demo/apps/bookinfo/src/reviews/reviews-application/src/main/webapp/index.html b/demo/apps/bookinfo/src/reviews/reviews-application/src/main/webapp/index.html
deleted file mode 100644
index d77e51b..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-application/src/main/webapp/index.html
+++ /dev/null
Binary files differ
diff --git a/demo/apps/bookinfo/src/reviews/reviews-application/src/test/java/test/TestApplication.java b/demo/apps/bookinfo/src/reviews/reviews-application/src/test/java/test/TestApplication.java
deleted file mode 100644
index 16469c7..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-application/src/test/java/test/TestApplication.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Istio Authors
- *
- * Licensed 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 test;
-
-public class TestApplication {
-
-}
diff --git a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/Dockerfile b/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/Dockerfile
deleted file mode 100644
index 39abc01..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/Dockerfile
+++ /dev/null
@@ -1,16 +0,0 @@
-FROM websphere-liberty:latest
-
-ENV SERVERDIRNAME reviews
-
-ADD ./servers/LibertyProjectServer /opt/ibm/wlp/usr/servers/defaultServer/
-
-RUN /opt/ibm/wlp/bin/installUtility install  --acceptLicense /opt/ibm/wlp/usr/servers/defaultServer/server.xml
-
-ARG service_version
-ARG enable_ratings
-ARG star_color
-ENV SERVICE_VERSION ${service_version:-v1}
-ENV ENABLE_RATINGS ${enable_ratings:-false}
-ENV STAR_COLOR ${star_color:-black}
-
-CMD /opt/ibm/wlp/bin/server run defaultServer
diff --git a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/build.gradle b/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/build.gradle
deleted file mode 100644
index 5cc57f2..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/build.gradle
+++ /dev/null
@@ -1,23 +0,0 @@
-apply plugin: 'eclipse'
-
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-}
-
-task copyApplication(type: Copy) {
-    from '../reviews-application/build/libs/reviews-application-1.0.war'
-    into 'servers/LibertyProjectServer/apps/'
-}
-
-task build(dependsOn: ['copyApplication']){
-}
-
-task clean {
-    delete "servers/LibertyProjectServer/apps"
-    delete "servers/LibertyProjectServer/lib"
-    delete "servers/LibertyProjectServer/logs"
-    delete "servers/LibertyProjectServer/workarea"
-    delete "servers/LibertyProjectServer/resources"
-}
diff --git a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/servers/LibertyProjectServer/server.xml b/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/servers/LibertyProjectServer/server.xml
deleted file mode 100644
index aac20bd..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/servers/LibertyProjectServer/server.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<!-- Copyright (c) 2017 Istio Authors
-
-  Licensed 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.-->
-<server description="Sample Liberty server">
-
-    <featureManager>
-        <feature>jaxrs-2.0</feature>
-        <feature>jsonp-1.0</feature>
-    </featureManager>
-
-    <httpEndpoint host="*" httpPort="9080" httpsPort="-1"
-                  id="defaultHttpEndpoint"/>
-
-    <webContainer deferServletLoad="false"/>
-    <applicationMonitor dropinsEnabled="false" updateTrigger="mbean"/>
-    <config updateTrigger="mbean"/>
-
-
-    <executor coreThreads="5"/>
-
-    <webApplication contextRoot="/" id="reviews-app" location="reviews-application-1.0.war" name="reviews-app"/>
-
-</server>
diff --git a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/shared/.gitkeep b/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/shared/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/shared/.gitkeep
+++ /dev/null
diff --git a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/src/test/java/it/EndpointTest.java b/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/src/test/java/it/EndpointTest.java
deleted file mode 100644
index d594d53..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/src/test/java/it/EndpointTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Istio Authors
- *
- * Licensed 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 it;
-
-import static org.junit.Assert.assertTrue;
-
-import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
-import javax.ws.rs.client.Invocation;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.Response;
-
-public class EndpointTest {
-
-    public void testEndpoint(String endpoint, String expectedOutput) {
-        String port = System.getProperty("liberty.test.port");
-        String war = System.getProperty("war.name");
-        String url = "http://localhost:" + port + "/" + war + endpoint;
-        System.out.println("Testing " + url);
-        Response response = sendRequest(url, "GET");
-        int responseCode = response.getStatus();
-        assertTrue("Incorrect response code: " + responseCode,
-                   responseCode == 200);
-        
-        String responseString = response.readEntity(String.class);
-        response.close();
-        assertTrue("Incorrect response, response is " + responseString, responseString.contains(expectedOutput));
-    }
-
-    public Response sendRequest(String url, String requestType) {
-        Client client = ClientBuilder.newClient();
-        System.out.println("Testing " + url);
-        WebTarget target = client.target(url);
-        Invocation.Builder invoBuild = target.request();
-        Response response = invoBuild.build(requestType).invoke();
-        return response;
-    }
-}
diff --git a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/src/test/java/it/TestApplication.java b/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/src/test/java/it/TestApplication.java
deleted file mode 100644
index de7fa29..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/src/test/java/it/TestApplication.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Istio Authors
- *
- * Licensed 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 it;
-
-import org.junit.Test;
-
-public class TestApplication extends EndpointTest {
-
-    @Test
-    public void testDeployment() {
-        testEndpoint("/index.html", "<h1>Welcome to your Liberty Application</h1>");
-    }
-
-}
diff --git a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/src/test/java/it/rest/LibertyRestEndpointTest.java b/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/src/test/java/it/rest/LibertyRestEndpointTest.java
deleted file mode 100644
index 916841f..0000000
--- a/demo/apps/bookinfo/src/reviews/reviews-wlpcfg/src/test/java/it/rest/LibertyRestEndpointTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Istio Authors
- *
- * Licensed 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 it.rest;
-
-import it.EndpointTest;
-
-import org.junit.Test;
-
-public class LibertyRestEndpointTest extends EndpointTest {
-
-    @Test
-    public void testDeployment() {
-        testEndpoint("/rest", "Hello from the REST endpoint!");
-    }
-}
diff --git a/demo/apps/bookinfo/src/reviews/settings.gradle b/demo/apps/bookinfo/src/reviews/settings.gradle
deleted file mode 100644
index 019d1e8..0000000
--- a/demo/apps/bookinfo/src/reviews/settings.gradle
+++ /dev/null
@@ -1,4 +0,0 @@
-rootProject.name = 'reviews'
-
-include 'reviews-application'
-include 'reviews-wlpcfg'
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 0000000..5cd3fe7
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,16 @@
+FROM istio/mixer:0.1.2-6bfa390
+
+RUN apt-get update
+
+# Install tools we might need
+RUN apt-get install -y curl build-essential ca-certificates
+
+RUN mkdir -p /etc/opt/mixer
+
+ADD mixs /usr/local/bin/mixs
+ADD mixc /usr/local/bin/mixc
+
+ADD testdata/apigee /etc/opt/mixer/apigee
+ADD testdata/configroot /etc/opt/mixer/configroot
+
+RUN ln -s /etc/opt/mixer/apigee/adapters.yml /etc/opt/mixer/configroot/scopes/global/adapters.yml
diff --git a/docker/README.md b/docker/README.md
new file mode 100644
index 0000000..105a530
--- /dev/null
+++ b/docker/README.md
@@ -0,0 +1,3 @@
+copy this Dockerfile file to the mixer repo root
+cp the mixs and mixc binary to mixer repo root (since bazel builds binary in tmp directory outside the mixer root, this step is needed)
+docker build