Merge "Add CLI framework for Bottlenecks"
authorYu Yang (Gabriel) <Gabriel.yuyang@huawei.com>
Tue, 29 Nov 2016 02:04:11 +0000 (02:04 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Tue, 29 Nov 2016 02:04:11 +0000 (02:04 +0000)
docker/bottleneck-compose/bottlenecks/Dockerfile [new file with mode: 0644]
docker/bottleneck-compose/docker-compose.yml [new file with mode: 0644]
docker/bottleneck-compose/kibana/Dockerfile [new file with mode: 0644]
docker/bottleneck-compose/kibana/config/kibana.yml [new file with mode: 0644]
docker/bottleneck-compose/kibana/entrypoint.sh [new file with mode: 0644]
docker/bottleneck-compose/yardstick/Dockerfile [new file with mode: 0644]
testsuites/rubbos/run_rubbos.py

diff --git a/docker/bottleneck-compose/bottlenecks/Dockerfile b/docker/bottleneck-compose/bottlenecks/Dockerfile
new file mode 100644 (file)
index 0000000..5c79331
--- /dev/null
@@ -0,0 +1,10 @@
+FROM opnfv/bottlenecks:stable
+
+USER root
+
+RUN apt-get update && apt-get install -y \
+    openssh-server
+
+RUN mkdir /var/run/sshd
+EXPOSE 22
+CMD ["/usr/sbin/sshd", "-D"]
diff --git a/docker/bottleneck-compose/docker-compose.yml b/docker/bottleneck-compose/docker-compose.yml
new file mode 100644 (file)
index 0000000..0b256b5
--- /dev/null
@@ -0,0 +1,27 @@
+elasticsearch:
+  image: elasticsearch:2.4.0
+  command: elasticsearch -Des.network.host=0.0.0.0
+  ports:
+    - "9200:9200"
+    - "9300:9300"
+
+kibana:
+  build: kibana/
+  volumes:
+    - ./kibana/config/:/opt/kibana/config/
+  ports:
+    - "5601:5601"
+  links:
+    - elasticsearch
+
+yardstick:
+  restart: always
+  build: yardstick/
+  volumes:
+    - /var/run/docker/sock:/var/run/docker/sock
+  ports:
+    - "8888:5000"
+
+bottlenecks:
+  restart: always
+  build: bottlenecks/
\ No newline at end of file
diff --git a/docker/bottleneck-compose/kibana/Dockerfile b/docker/bottleneck-compose/kibana/Dockerfile
new file mode 100644 (file)
index 0000000..50c72bb
--- /dev/null
@@ -0,0 +1,10 @@
+FROM kibana:4.6.1
+
+RUN apt-get update && apt-get install -y netcat
+
+COPY entrypoint.sh /tmp/entrypoint.sh
+RUN chmod +x /tmp/entrypoint.sh
+
+RUN kibana plugin --install elastic/sense
+
+CMD ["/tmp/entrypoint.sh"]
diff --git a/docker/bottleneck-compose/kibana/config/kibana.yml b/docker/bottleneck-compose/kibana/config/kibana.yml
new file mode 100644 (file)
index 0000000..820c776
--- /dev/null
@@ -0,0 +1,76 @@
+# Kibana is served by a back end server. This controls which port to use.
+port: 5601
+
+# The host to bind the server to.
+host: "0.0.0.0"
+
+# The Elasticsearch instance to use for all your queries.
+elasticsearch_url: "http://elasticsearch:9200"
+
+# preserve_elasticsearch_host true will send the hostname specified in `elasticsearch`. If you set it to false,
+# then the host you use to connect to *this* Kibana instance will be sent.
+elasticsearch_preserve_host: true
+
+# Kibana uses an index in Elasticsearch to store saved searches, visualizations
+# and dashboards. It will create a new index if it doesn't already exist.
+kibana_index: ".kibana"
+
+# If your Elasticsearch is protected with basic auth, this is the user credentials
+# used by the Kibana server to perform maintence on the kibana_index at statup. Your Kibana
+# users will still need to authenticate with Elasticsearch (which is proxied thorugh
+# the Kibana server)
+# kibana_elasticsearch_username: user
+# kibana_elasticsearch_password: pass
+
+# If your Elasticsearch requires client certificate and key
+# kibana_elasticsearch_client_crt: /path/to/your/client.crt
+# kibana_elasticsearch_client_key: /path/to/your/client.key
+
+# If you need to provide a CA certificate for your Elasticsarech instance, put
+# the path of the pem file here.
+# ca: /path/to/your/CA.pem
+
+# The default application to load.
+default_app_id: "discover"
+
+# Time in milliseconds to wait for elasticsearch to respond to pings, defaults to
+# request_timeout setting
+# ping_timeout: 1500
+
+# Time in milliseconds to wait for responses from the back end or elasticsearch.
+# This must be > 0
+request_timeout: 300000
+
+# Time in milliseconds for Elasticsearch to wait for responses from shards.
+# Set to 0 to disable.
+shard_timeout: 0
+
+# Time in milliseconds to wait for Elasticsearch at Kibana startup before retrying
+# startup_timeout: 5000
+
+# Set to false to have a complete disregard for the validity of the SSL
+# certificate.
+verify_ssl: true
+
+# SSL for outgoing requests from the Kibana Server (PEM formatted)
+# ssl_key_file: /path/to/your/server.key
+# ssl_cert_file: /path/to/your/server.crt
+
+# Set the path to where you would like the process id file to be created.
+# pid_file: /var/run/kibana.pid
+
+# If you would like to send the log output to a file you can set the path below.
+# This will also turn off the STDOUT log output.
+# log_file: ./kibana.log
+# Plugins that are included in the build, and no longer found in the plugins/ folder
+bundled_plugin_ids:
+ - plugins/dashboard/index
+ - plugins/discover/index
+ - plugins/doc/index
+ - plugins/kibana/index
+ - plugins/markdown_vis/index
+ - plugins/metric_vis/index
+ - plugins/settings/index
+ - plugins/table_vis/index
+ - plugins/vis_types/index
+ - plugins/visualize/index
diff --git a/docker/bottleneck-compose/kibana/entrypoint.sh b/docker/bottleneck-compose/kibana/entrypoint.sh
new file mode 100644 (file)
index 0000000..c08d70a
--- /dev/null
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+# Wait for the Elasticsearch container to be ready before starting Kibana.
+echo "Stalling for Elasticsearch"
+while true; do
+    nc -q 1 elasticsearch 9200 2>/dev/null && break
+done
+
+echo "Starting Kibana"
+exec kibana
diff --git a/docker/bottleneck-compose/yardstick/Dockerfile b/docker/bottleneck-compose/yardstick/Dockerfile
new file mode 100644 (file)
index 0000000..ae9181b
--- /dev/null
@@ -0,0 +1,12 @@
+FROM opnfv/yardstick:stable
+
+USER root
+
+RUN apt-get update && apt-get install -y \
+    openssh-server
+
+# Create dir to put yardstick configure file
+RUN mkdir /var/run/sshd
+
+EXPOSE 22
+CMD ["/usr/sbin/sshd", "-D"]
index 18103f7..f0fb089 100755 (executable)
@@ -214,7 +214,7 @@ def rubbos_create_instances(
     print "Created stack, id=" + str(stack_id) + ", status=" + str(stack_status)
 
     timeInProgress = 0
-    while stack_status == "CREATE_IN_PROGRESS" and timeInProgress < 150:
+    while stack_status == "CREATE_IN_PROGRESS" and timeInProgress < 3600:
         print "  stack's status: %s, after %d seconds" % (stack_status, timeInProgress)
         time.sleep(5)
         timeInProgress = timeInProgress + 5
@@ -458,9 +458,13 @@ def main():
     else:
         print "Cannot create instances, as Failed to create image(s)."
         exit(-1)
-
-    print "Wait 600 seconds after stack creation..."
-    time.sleep(600)
+    
+    if stack_created:
+        print "The rubbos_stack is created successfully. \
+        Now to run rubbos instances!"
+    else:
+        print "The rubbos_stack failed to be created. Exit the test!"
+        exit(-1)
 
     # reboot_instances()
     # time.sleep(180)