Giter VIP home page Giter VIP logo

mist-ce's Introduction

Mist Cloud Management Platform - Community Edition

Mist simplifies multicloud management. It offers a unified interface from where you can manage public clouds, private clouds, hypervisors, containers and bare metal servers.

With Mist you can perform common management tasks like provisioning, orchestration, monitoring, automation and cost analysis.

It comes with a RESTful API and a CLI, so you can easily integrate it into your existing workflows.

Mist users include organizations like Juniper Networks, SevOne, Windstream, National Bank of Greece, Shoprite and more. They all report faster roll-outs while reducing their bills and management overheads by 40%-60%.

Mist Community Edition (CE) is licensed under the Apache License v2. It is ideal for teams with a DIY approach.

Mist Enterprise Edition (EE) and Hosted Service (HS) are commercial editions which offer additional plugins for governance, role-based access control & cost insights. You can check them out on our website.

The easiest way to try Mist is to sign up for a 14-day free trial at https://mist.io/sign-up.

Table of Contents

Features

Mist's features include:

  • Support for more than 20 infrastructure technologies.
  • Instant visibility of all the available resources across clouds, grouped by tags.
  • Instant reporting/estimation of the current infrastructure costs.
  • Compare current & past costs, correlate with usage, provide right-sizing recommendations (EE & HS only).
  • Provision new resources on any cloud including machines, clusters, volumes, networks, zones and DNS records.
  • Deploy and scale Kubernetes clusters on any supported cloud.
  • Perform lifecycle actions on existing resources, e.g. stop, start, reboot, resize, destroy, etc.
  • Upload scripts and run them on any machine while enforcing audit logging and centralized control of SSH keys.
  • SSH command shell on any machine within the browser or through the CLI, enforcing audit logging and centralized control of SSH keys.
  • Instant audit logging for all actions performed through Mist or detected through continuous polling.
  • Monitor machines, display real time system & custom metrics and store them for long term access.
  • Set rules on metrics or logs that trigger notifications, webhooks, scripts or lifecycle actions.
  • Set schedules that trigger scripts or machine lifecycle actions.
  • Set fine-grained access control policies per team, tag, resource and/or action (EE & HS only).
  • Set governance constraints: e.g. quotas on cost per user/team, required expiration dates (EE & HS only).
  • Upload infrastructure templates that may describe complex deployments and workflows (EE & HS only).

Terminology

Some terms are used very often in Mist. Below is a list of the most basic ones to help you avoid any confusion:

  • Cloud. Any service that provides on-demand access to resources, e.g. public clouds, private clouds, hypervisors, container hosts, Kubernetes clusters, bare metal servers, etc.
  • Machine. Any computing resource. There are many types of machines and some machines may contain other machines.
  • Volume. Any physical or virtual data storage device, e.g. physical HDD/SSD, cloud disks, EBS volumes etc. Volumes may be attached on machines. Volumes may be provisioned along with machines or independently.
  • Network. Private network spaces that machines can join, e.g. AWS VPCs.
  • Script. An executable (e.g. bash script) or an Ansible playbook that can run on machines over SSH. Scripts may be added inline or by a reference to a tarball or a Git repository.
  • Template. A blueprint that describes the full lifecycle of an application that may require multiple computing resources, network, storage and additional configurations. For example, the provided Kubernetes template enables the deployment of a Kubernetes cluster on any cloud and provides workflows to easily scale the cluster up or down. Currently, Mist supports Cloudify blueprints. Helm and Terraform support is coming soon.
  • Stack. The deployment of a template is a stack. A stack may include resources (e.g. machines, networks, volumes etc) and provides a set of workflow actions that can be performed. A stack created by the Kubernetes template refers to a Kubernetes cluster. It includes references to all control and data plane nodes. It provides scale up & down workflows that can be applied to the cluster.
  • Tunnel. A secure, point-to-point VPN tunnel enabling Mist to access infrastructure that is not on a publicly addressable network space.

Architecture

Mist is a cloud native application split into microservices which are packaged as Docker containers. It can be deployed on a Kubernetes cluster using Helm or a single host with Docker Compose.

The most notable components are the following:

  • Mist UI, a web application built with Web Components and Polymer.
  • REST API that serves requests from clients.
  • WebSocket API, sends real-time updates to connected clients and proxies shell connections.
  • Hubshell service, opens SSH connections to machines or shell connections using the Docker API.
  • Dramatiq workers, running asynchronous jobs.
  • APScheduler based scheduler that schedules polling tasks, rule checks, as well as user defined scheduled actions.
  • RabbitMQ message queue service.
  • MongoDB as the main database.
  • Elasticsearch for storing and searching logs.
  • Logstash for routing logs to Elasticsearch.
  • Telegraf as a data collection agent, installed on monitored machines.
  • Gocky as the relay to receive and pre-process monitoring metrics.
  • InfluxDB or VictoriaMetrics as a time series database.

Architecture.png

The user interacts with the RESTful Mist API through client apps like the Mist UI in the browser or command line tools (e.g. cURL, Mist CLI, etc.).

The Mist UI, apart from invoking the RESTful API, also establishes a WebSocket connection. This is used to receive real time updates and to proxy shell connections to machines.

The Mist API server interacts with the respective API's of the target clouds, either directly, or by adding tasks that get executed asynchronously by Dramatiq workers. The messaging is following the AMQP protocol and gets coordinated by RabbitMQ.

The main data store is MongoDB. Logs are being stored in Elasticsearch. Time series data go to either VictoriaMetrics or InfluxDB, depending on the installation.

Rule checks, polling tasks & user tasks are triggered by the scheduler service. Whenever a shell connection is required (e.g. SSH, Docker shell, etc.), Sheller establishes the connection and makes it available through the WebSocket API.

Installation

You can install Mist in several ways, depending on your needs:

Kubernetes

To get started, you will need:

  1. A working and up-to-date Kubernetes cluster, able to allocate 8 CPUs and 16GB of RAM to Mist.
  2. Access rights to run Helm on your cluster.

Run the following commands to install Mist:

helm repo add mist https://dl.mist.io/charts
helm repo update
helm install mist-ce mist/mist-ce

Finally, follow the on-screen instructions after the installation is completed to configure an ingress IP and create the required Mist admin user.

Linode and Vultr users can find detailed installation videos in the respective, official YouTube channels.

Important configuration options

Domain and TLS

The quick installation method described above does not set up TLS. This is done in order to keep things simple and get you to test Mist quickly. However, we strongly recommend using TLS. This requires a domain for your Mist installation.

First, configure your DNS to point to your cluster's IP.

If you want to issue a new certificate, configure the cluster issuer that will be used, e.g.:

helm install mist-ce mist/mist-ce --set http.host=foo.bar.com  \
  --set http.tlsClusterIssuer=letsencrypt-prod \
  --set http.tlsSecret=secretName

For instructions on how to install and configure cert-manager read the docs here.

If you have configured a TLS certificate for this hostname as a Kubernetes secret, you should use the http.tlsSecret option, e.g.:

helm install mist-ce mist/mist-ce --set http.host=foo.bar.com \
  --set http.tlsSecret=secretName
Email

In some cases, such as user registration, forgotten passwords, user invitations etc., Mist needs to send emails. By default, Mist uses a mock mailer.

To see emails sent by Mist, get the relevant pod name:

kubectl get pods -l app=mailmock

Now, view the logs of this pod, e.g.:

kubectl logs -f mailmock-pod-name

If you wish to use an SMTP server, do something like this:

helm install mist-ce mist/mist-ce --set smtp.host=smtp.foo.bar.com \
  --set smtp.username=foo
  --set smtp.password=bar
  --set smtp.port=25
  --set smtp.tls=false
  --set smtp.starttls=true
External Docker host

Mist's orchestration plugin needs to deploy Docker containers. By default, Mist deploys an in-cluster dockerhost pod in privileged mode.

To use an external Docker host, set the following:

helm install mist-ce mist/mist-ce --set docker.host=dockerIP \
  --set docker.port=dockerPort \
  --set docker.key=TLSKey \
  --set docker.cert=TLSCert \
  --set docker.ca=TLSCACert

All configuration options

To review and customize all available configuration options:

  1. Export the default chart values.
helm show values mist/mist-ce > values.yaml
  1. Edit the exported values.yaml.
  2. Run helm install with values.yaml as input.
helm install mist-ce mist/mist-ce -f values.yaml

The following table lists all the configurable parameters in Mist's Helm chart and their default values.

Parameter Description Default
http.host FQDN or IP of Mist installation. localhost
http.http2 Use HTTP/2. false
http.tlsSecret Kubernetes secret containing the tls.crt and tls.key data. ''
http.tlsHosts Array of TLS hosts for ingress record. []
http.tlsAnnotations {}
http.tlsClusterIssuer TLS cluster issuer. ''
smtp.host SMTP mail server address. ''
smtp.port SMTP port. 8025
smtp.username SMTP username. ''
smtp.password SMTP password. ''
smtp.tls Use TLS with SMTP. false
smtp.starttls Send the starttls command. Typically, it is not used with smtp.tls=true. false
portalAdmin.enabled Create a Mist admin user upon chart installation. true
portalAdmin.organization Mist organization name. example.com
portalAdmin.mail Mist admin's email address. [email protected]
portalAdmin.password Mist admin's password. example.com
portalAdmin.createApiToken Create an API token upon chart installation. true
docker.deploy Deploy a dockerhost pod in-cluster. The pod will run in privileged mode. true
docker.host External Docker host address. ''
docker.port External Docker host port. 2375
docker.key External Docker host SSL private key. ''
docker.cert External Docker host SSL certificate. ''
docker.ca External Docker host CA certificate. ''
vault.address HashiCorp Vault address to use. http://vault:8200
vault.token Authentication token for HashiCorp Vault. ''
vault.roleId HashiCorp Vault RoleID. ''
vault.secretId HashiCorp Vault SecretID. ''
vault.secret_engine_path {}
vault.clouds_path Default HashiCorp Vault path for Mist cloud credentials. mist/clouds/
vault.keys_path Default HashiCorp Vault path for Mist key credentials. mist/keys
elasticsearch.host ElasticSearch host. ''
elasticsearch.port ElasticSearch port. 9200
elasticsearch.username Username for ElasticSearch with basic auth. ''
elasticsearch.password Password for ElasticSearch with basic auth. ''
elasticsearch.tls Connect to ElasticSearch using TLS. false
elasticsearch.verifyCerts Verify ElasticSearch TLS. false
influxdb.host InfluxDB host. ''
influxdb.port Verify InfluxDB TLS. 8086
influxdb.db InfluxDB database to use. telegraf
influxdb.monitoring true
influxdb.storageSize Size of the InfluxDB pvc. 1024Mi
victoriametrics.enabled true
victoriametrics.deploy Deploy a VictoriaMetrics cluster. true
victoriametrics.readEndpoint External VictoriaMetrics cluster read endpoint. ''
victoriametrics.writeEndpoint External VictoriaMetrics cluster write endpoint. ''
victoriametrics.vmstorage.persistentVolume.storageClass StorageClass of the VictoriaMetrics pvc. standard
victoriametrics.vmstorage.persistentVolume.size Size of the VictoriaMetrics pvc. 1024Mi
rabbitmq.deploy Deploy RabbitMQ cluster. true
rabbitmq.replicaCount RabbitMQ replicas to deploy. 1
rabbitmq.replicationFactor Default replication factor for queues. 1
rabbitmq.auth.username RabbitMQ username. guest
rabbitmq.auth.password RabbitMQ password. guest
rabbitmq.auth.erlangCookie Erlang cookie to determine whether nodes are allowed to communicate with each other. guest
rabbitmqExternal.host External RabbitMQ address. Only used when rabbitmq.deploy is false. ''
rabbitmqExternal.port External RabbitMQ port. 5672
rabbitmqExternal.username External RabbitMQ username. guest
rabbitmqExternal.password External RabbitMQ password. guest
mongodb.deploy Deploy MongoDB cluster. true
mongodb.host External MongoDB address. Only used when mongodb.deploy is false. ''
mongodb.port External MongoDB port. 27017
memcached.host Memcached host in the format {host}:{port}. ''
monitoring.defaultMethod Available options: telegraf-victoriametrics and telegraf-influxdb telegraf-influxdb
auth.email.signup Allow signups with email & password. false
auth.email.signin Allow signins with email & password. true
auth.google.signup Allow signups with Google oAuth. false
auth.google.signin Allow signins with Google oAuth. false
auth.google.key Google oAuth client ID. ''
auth.google.secret Google oAuth client Secret. ''
auth.github.signup Allow signups with Github oAuth. false
auth.github.signin Allow signins with Github oAuth. false
auth.github.key Github oAuth client ID. ''
auth.github.secret Github oAuth client secret. ''
backup.key AWS API key. ''
backup.secret AWS API secret. ''
backup.bucket AWS S3 bucket name used to store backups. ''
backup.region AWS S3 bucket region. ''
backup.gpg.recipient Email recipient of the encrypted backup. ''
backup.gpg.public GPG public key. ''
githubBotToken ''
deployment.gocky.replicas Replicas in Gocky deployment. 1
deployment.api.replicas Replicas in API server deployment. 2
deployment.sockjs.replicas Replicas in sockjs deployment 1
deployment.ui.replicas Replicas in Mist UI deployment. 1
deployment.nginx.replicas Replicas in NGINX deployment. 1
deployment.landing.replicas Replicas in Mist's landing webpage deployment. 1
deployment.dramatiq.dramatiq.enabled Enable Dramatiq consumers for all queues. true
deployment.dramatiq.dramatiq.replicas 2
deployment.dramatiq.default.enabled Enable Dramatiq consumers for default queue. false
deployment.dramatiq.default.replicas 1
deployment.dramatiq.provisioning.enabled Enable Dramatiq consumers for dramatiq_provisioning queue. false
deployment.dramatiq.provisioning.replicas 1
deployment.dramatiq.polling.enabled Enable Dramatiq consumers for dramatiq_polling queue. false
deployment.dramatiq.polling.replicas 1
deployment.dramatiq.machines.enabled Enable Dramatiq consumers for dramatiq_machines queue. false
deployment.dramatiq.machines.replicas 1
deployment.dramatiq.clusters.enabled Enable Dramatiq consumers for dramatiq_clusters queue. false
deployment.dramatiq.clusters.replicas 1
deployment.dramatiq.networks.enabled Enable Dramatiq consumers for dramatiq_networks queue. false
deployment.dramatiq.networks.replicas 1
deployment.dramatiq.zones.enabled Enable Dramatiq consumers for dramatiq_zones queue. false
deployment.dramatiq.zones.replicas 1
deployment.dramatiq.volumes.enabled Enable Dramatiq consumers for dramatiq_volumes queue. false
deployment.dramatiq.volumes.replicas 1
deployment.dramatiq.buckets.enabled Enable Dramatiq consumers for dramatiq_buckets queue. false
deployment.dramatiq.buckets.replicas 1
deployment.dramatiq.mappings.enabled Enable Dramatiq consumers for dramatiq_mappings and dramatiq_sessions queues. false
deployment.dramatiq.mappings.replicas 1
deployment.dramatiq.scripts.enabled Enable Dramatiq consumers for dramatiq_scripts queue. false
deployment.dramatiq.scripts.replicas 1
deployment.dramatiq.probe.enabled Enable Dramatiq consumers for dramatiq_ssh_probe queue. false
deployment.dramatiq.probe.replicas 1
deployment.dramatiq.ping.enabled Enable Dramatiq consumers for dramatiq_ping_probe queue. false
deployment.dramatiq.ping.replicas 1
deployment.dramatiq.rules.enabled Enable Dramatiq consumers for dramatiq_rules queue. false
deployment.dramatiq.rules.replicas 1
deployment.dramatiq.schedules.enabled Enable Dramatiq consumers for dramatiq_schedules queue. false
deployment.dramatiq.schedules.replicas 1
deployment.scheduler.scheduler.enabled Enable scheduler for all polling schedules. true
deployment.scheduler.scheduler.replicas 1
deployment.scheduler.builtin.enabled Enable scheduler for builtin schedules. false
deployment.scheduler.builtin.replicas 1
deployment.scheduler.user.enabled Enable scheduler for user schedules. false
deployment.scheduler.user.replicas 1
deployment.scheduler.polling.enabled Enable scheduler for polling schedules. false
deployment.scheduler.polling.replicas 1
deployment.scheduler.rules.enabled Enable scheduler for rules schedules. false
deployment.scheduler.rules.replicas 1

Single host

To get started, you will need:

  1. A machine with at least 4 CPU cores, 8GB RAM and 10GB disk (accessible to /var/lib/docker/).
  2. The OS should be the latest stable Debian or Ubuntu.
  3. The OS should include openssh-server, docker and docker-compose packages.

First, download docker-compose.yml from the latest stable release as shown here.

Make sure you're inside the directory containing the docker-compose.yml file and run:

docker-compose up -d

Then, run docker-compose ps and verify that all containers are in the UP state, except the short-lived container elasticsearch-manage.

Now, you need to create an admin user. Drop in shell with:

docker-compose exec api sh

and add a new user with:

./bin/adduser --admin [email protected]

Try running ./bin/adduser -h for more options. For example, the --docker-cloud flag will add the docker daemon hosting the Mist installation as a docker cloud in the created account.

You can now visit http://localhost and login with the email and password you specified above.

Alternatively, you can also deploy Mist directly from your cloud provider's marketplace:

  • Linode users can find Mist here and a video about how it works here.
  • Vultr users can find Mist here.
  • DigitalOcean users can find Mist here.
  • Microsoft Azure users can find Mist here.

Important configuration options

After the initial docker-compose up -d, you will see that a configuration file is created in ./settings/settings.py. Edit this file to modify Mist's configuration.

Any changes to ./settings/settings.py will take effect after a restart with:

docker-compose restart
URL

If running on anything other than localhost, you will need to set the PORTAL_URI setting in ./settings/settings.py.

For example:

PORTAL_URI = "http://198.51.100.12"
Email

In some cases, such as user registration, forgotten passwords, user invitations etc., Mist needs to send emails. By default, Mist uses a mock mailer. To see emails sent by Mist, run:

docker-compose logs -f mailmock

If you wish to use an SMTP server, edit ./settings/settings.py and modify MAILER_SETTINGS.

TLS

We strongly recommend using TLS. Assuming a certificate cert.pem and private key file key.pem in the same directory as the docker-compose.yml file, create a docker-compose.override.yml file with the following contents:

version: '2.0'
services:
  nginx:
    volumes:
      - ./nginx-listen.conf:/etc/nginx/nginx-listen.conf:ro
      - ./cert.pem:/etc/nginx/cert.pem:ro
      - ./key.pem:/etc/nginx/key.pem:ro
    ports:
      - 443:443

Then, create a nginx-listen.conf in the directory of docker-compose.yml, with the following contents:

    listen 80;
    listen 443 ssl;
    server_name www.example.com;
    ssl_certificate     /etc/nginx/cert.pem;
    ssl_certificate_key /etc/nginx/key.pem;
    if ($scheme != "https") {
        rewrite ^ https://$host$uri permanent;
    }

Finally, update PORTAL_URI in Mist's settings and restart it.

Monitoring methods

Mist stores monitoring metrics in InfluxDB by default. Since Mist v4.6, it is possible to use VictoriaMetrics instead. You can configure that in settings/settings.py:

DEFAULT_MONITORING_METHOD = 'telegraf-victoriametrics'

Restart docker-compose for the changes to take effect and then run the respective migration script:

docker-compose exec api python migrations/0016-migrate-monitoring.py

The above script will update all monitored machines to use the configured monitoring method. It will also update all rules on metrics to use the appropriate query format. However, this will not migrate old monitoring data to the new time series database.

Upgrade

To upgrade to a new Mist version:

  1. Stop your current Mist by running docker-compose down.
  2. Download the docker-compose.yml file of the latest release and place it in the same directory as before. This way the new installation will use the same Docker volumes.
  3. Run docker-compose up -d to bring up the new version.
  4. Check that everything is in order by running docker-compose ps.

Backup

Mist can automatically take and store backups in an S3-compatible bucket. To set this up, first create a bucket on your S3 provider, e.g. AWS, MinIO, etc.

Then, go to settings/setting.py and edit the following part accordingly:

BACKUP_INTERVAL = 24  # hours between each backup
BACKUP = {
    'host': '',  # eg s3.amazonaws.com
    'key': '',
    'secret': '',
    'bucket': '',
    'gpg': {
        'recipient': '',
        'public': '',
        'private': '',
    }
}

Providing a GPG key is optional but strongly recommended. If you provide it, your backups will be encrypted before getting uploaded to your bucket.

Mist also offers a set of manual commands for backing up, listing backups and restoring backups:

docker-compose exec api ./bin/backup
docker-compose exec api ./bin/list-backups
docker-compose exec api ./bin/restore {{myBackupName}}

Backups on time series data stored on VictoriaMetrics will be incremental by default. To perform a full backup, use the --no-incremental flag:

docker-compose exec api ./bin/backup --db victoria --no-incremental

Finally, please keep in mind that backups include MongoDB, InfluxDB & VictoriaMetrics data. Mist logs are stored in Elasticsearch. If you would like to back up these as well, please check out this doc.

Staging version

If you want to install the latest bleeding edge build of Mist, run the following:

mkdir mist-ce && cd mist-ce && echo 'MIST_TAG=staging' > .env
wget https://raw.githubusercontent.com/mistio/mist-ce/staging/docker-compose.yml
docker-compose up -d

Development environment

If you plan to modify Mist's source code, clone this git repo and all its submodules. Then, bring it online. For example:

git clone --recursive https://github.com/mistio/mist-ce.git
cd mist-ce
docker-compose up -d

This will mount the checked out code into the containers and may take some time.

By cloning the directory, there is also a docker-compose.override.yml file in the current directory in addition to docker-compose.yml. This is used to modify the configuration for development mode.

If you are not interested in front-end development, you can comment out the UI & landing sections within the docker-compose.override.yml file and re-run docker-compose up -d.

Otherwise, you will also need to install the UI & landing page dependencies before you can access the Mist UI.

Install all front-end dependencies with the following commands:

docker-compose exec landing npm install
docker-compose exec ui npm install

And then build the landing & UI bundles with:

docker-compose exec landing npm run build
docker-compose exec ui npm run build

When doing front-end development, it is usually more convenient to serve the source code instead of the bundles. To do that, edit settings/settings.py and set JS_BUILD = False. Restart the api container for the changes to take effect with:

./restart.sh api

mist-ce's People

Contributors

alatsal avatar ckarageorgkaneen avatar clopy avatar commixon avatar d-mo avatar dimgal1 avatar dimrozakis avatar eis-d-z avatar giorgosalexakis avatar johnnywalnut avatar kostistsaprailis avatar luserx0 avatar mpempekos avatar pchristos avatar steve-louis avatar v-pap avatar yconst avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mist-ce's Issues

Feature request: Larger terminal

Currently mist.io uses the standard ssh resolution which is 80 by 24 characters. Especially for desktop users it would make sense to use a full screen terminal which would fit as many chars as possible.

The largest part of this feature was already implemented in a branch called "shell_fixes", so it just needs some finishing touches.

Requested by @paimpozhil

RHEL 7.1 - error during buildout

Not sure what to make of all this...

[mistio@edg-splunk3-az-education2020-com mist.io]$ ./bin/buildout -v
Installing 'mr.developer'.
We have no distributions for mr.developer that satisfies 'mr.developer'.
Getting distribution for 'mr.developer'.
Running easy_install:
"/home/mistio/src/mist.io/bin/python" "-c" "import sys; sys.path[0:0] = ['/home/mistio/src/mist.io/eggs/setuptools-18.4-py2.7.egg']; from setuptools.command.easy_install import main; main()" "-mZUNxd" "/home/mistio/src/mist.io/eggs/tmpGeTuH_" "-q" "/tmp/tmpkSqnbRget_dist/mr.developer-1.34.zip"
path=/home/mistio/src/mist.io/eggs/setuptools-18.4-py2.7.egg

Got mr.developer 1.34.
Picked: mr.developer = 1.34
mr.developer: Queued 'deploy_collectd' for checkout.
mr.developer: Queued 'libcloud' for checkout.
mr.developer: Queued 'paramiko' for checkout.
mr.developer: Cloned 'deploy_collectd' with git.
mr.developer: Cloned 'paramiko' with git.
* master
  remotes/origin/1.10
  remotes/origin/1.11
  remotes/origin/1.12
  remotes/origin/1.13
  remotes/origin/1.14
  remotes/origin/1.15
  remotes/origin/1.8
  remotes/origin/1.9
  remotes/origin/216-int
  remotes/origin/HEAD -> origin/master
  remotes/origin/ecdsa-known-hosts-keys-243
  remotes/origin/fix-proxycommand-infinite-loop-252
  remotes/origin/gateway-support
  remotes/origin/master
  remotes/origin/merge-ssh-fork-back-in
  remotes/origin/python3
  remotes/origin/sphinx-256
  remotes/origin/try-multiple-address-families-22
  remotes/origin/website-178

mr.developer: Cloned 'libcloud' with git.
Installing 'zc.buildout', 'setuptools'.
We have the best distribution that satisfies 'zc.buildout>=2.4.4'.
Picked: zc.buildout = 2.4.4
We have the best distribution that satisfies 'setuptools'.
Adding find link 'https://pypi.python.org/packages/source/c/certifi/certifi-2015.04.28.tar.gz#md5=12c7c3a063b2ff97a0f8291d8de41e8c' from setuptools 18.4
Adding find link 'https://pypi.python.org/packages/source/w/wincertstore/wincertstore-0.2.zip#md5=ae728f2f007185648d0c7a8679b361e2' from setuptools 18.4
Picked: setuptools = 18.4
Develop: '/home/mistio/src/mist.io/.'
Traceback (most recent call last):
  File "/tmp/tmpSaqroO", line 14, in <module>
    exec(compile(f.read(), '/home/mistio/src/mist.io/./setup.py', 'exec'))
  File "/home/mistio/src/mist.io/./setup.py", line 26, in <module>
    with open('test-requirements.txt') as f:
IOError: [Errno 2] No such file or directory: 'test-requirements.txt'
While:
  Installing.
  Processing develop directory '/home/mistio/src/mist.io/.'.

An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
  File "/home/mistio/src/mist.io/eggs/zc.buildout-2.4.4-py2.7.egg/zc/buildout/buildout.py", line 1992, in main
    getattr(buildout, command)(args)
  File "/home/mistio/src/mist.io/eggs/zc.buildout-2.4.4-py2.7.egg/zc/buildout/buildout.py", line 528, in install
    installed_develop_eggs = self._develop()
  File "/home/mistio/src/mist.io/eggs/zc.buildout-2.4.4-py2.7.egg/zc/buildout/buildout.py", line 770, in _develop
    zc.buildout.easy_install.develop(setup, dest)
  File "/home/mistio/src/mist.io/eggs/zc.buildout-2.4.4-py2.7.egg/zc/buildout/easy_install.py", line 938, in develop
    call_subprocess(args)
  File "/home/mistio/src/mist.io/eggs/zc.buildout-2.4.4-py2.7.egg/zc/buildout/easy_install.py", line 159, in call_subprocess
    % repr(args)[1:-1])
Exception: Failed to run command:
'/home/mistio/src/mist.io/bin/python', '/tmp/tmpSaqroO', '-q', 'develop', '-mxN', '-d', '/home/mistio/src/mist.io/develop-eggs/tmpTaDNEtbuild'

libvirt driver fails on mac homebrew client

The libvirt client assumes the libvirt socket corresponds to the client's installation. When using a homebrew based install of libvirt, this is some non-standard path. You can specify it in the connection uri, however.

The following patch would fix the issue assuming you always want to connect to a linux based host.

 libcloud/compute/drivers/libvirt_driver.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libcloud/compute/drivers/libvirt_driver.py b/libcloud/compute/drivers/libvirt_driver.py
index 23c0a3b..32ddbca 100644
--- a/libcloud/compute/drivers/libvirt_driver.py
+++ b/libcloud/compute/drivers/libvirt_driver.py
@@ -92,7 +92,7 @@ class LibvirtNodeDriver(NodeDriver):
                 except:
                     raise Exception("Make sure host is accessible and ssh port %s is open" % ssh_port)

-                uri = 'qemu+ssh://%s@%s:%s/system?keyfile=%s&no_tty=1&no_verify=1' % (user, host, ssh_port, ssh_key)
+                uri = 'qemu+ssh://%s@%s:%s/system?keyfile=%s&no_tty=1&no_verify=1&socket=/var/run/libvirt/libvirt-sock' % (user, host, ssh_port, ssh_key)
             else:
                 #tcp connection
                 uri = 'qemu+tcp://%s:5000/system' % host
-- 
2.4.6

update rules list once a graph is added

to reproduce:

on a machine with monitoring, select 'add graph', select a metric, this will be graphed in a few seconds.

But if I select 'add rule' it won't be on the list.

(Maybe this is already reported)

Error while installing 1.0

I am getting this on a fresh install:

OS: Ubuntu 14.04 Server
branch: master

Running "requirejs:mistjs" (requirejs) task
{ [Error: Error: ENOENT, no such file or directory '/root/mist.io/src/mist/io/static/dist/jquery/jquery.js'
    at Error (native)
]
  originalError: 
   { [Error: ENOENT, no such file or directory '/root/mist.io/src/mist/io/static/dist/jquery/jquery.js']
     errno: -2,
     code: 'ENOENT',
     path: '/root/mist.io/src/mist/io/static/dist/jquery/jquery.js',
     syscall: 'open',
     fileName: '/root/mist.io/src/mist/io/static/dist/jquery/jquery.js' } }
While:
  Installing grunt.

An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
  File "/root/mist.io/local/lib/python2.7/site-packages/zc/buildout/buildout.py", line 1992, in main
    getattr(buildout, command)(args)
  File "/root/mist.io/local/lib/python2.7/site-packages/zc/buildout/buildout.py", line 666, in install
    installed_files = self[part]._call(recipe.install)
  File "/root/mist.io/local/lib/python2.7/site-packages/zc/buildout/buildout.py", line 1407, in _call
    return f()
  File "/root/mist.io/eggs/collective.recipe.cmd-0.11-py2.7.egg/collective/recipe/cmd/__init__.py", line 56, in install
    self.execute()
  File "/root/mist.io/eggs/collective.recipe.cmd-0.11-py2.7.egg/collective/recipe/cmd/__init__.py", line 69, in execute
    run_commands(cmds, self.shell)
  File "/root/mist.io/eggs/collective.recipe.cmd-0.11-py2.7.egg/collective/recipe/cmd/__init__.py", line 39, in run_commands
    check_call('%s %s' % (shell, tmpfile), shell=True)
  File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '/bin/bash /tmp/tmpTglNFj/run' returned non-zero exit status 1

This happens on multiple boxes, not just one installation.

buildout fails on rabbitmq

I commented out rabbitmq in buildout.cfg, just to see if it would progress and everything else installed successfully. For rabbitmq, I get this:

Installing rabbitmq.
While:
  Installing rabbitmq.

An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
  File "/mist.io/eggs/zc.buildout-2.3.1-py2.7.egg/zc/buildout/buildout.py", line 1946, in main
    getattr(buildout, command)(args)
  File "/mist.io/eggs/zc.buildout-2.3.1-py2.7.egg/zc/buildout/buildout.py", line 626, in install
    installed_files = self[part]._call(recipe.install)
  File "/mist.io/eggs/zc.buildout-2.3.1-py2.7.egg/zc/buildout/buildout.py", line 1370, in _call
    return f()
  File "/mist.io/eggs/gocept.download-0.9.5-py2.7.egg/gocept/download/__init__.py", line 93, in install
    retcode = subprocess.call(call)
  File "/usr/lib64/python2.7/subprocess.py", line 524, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.7/subprocess.py", line 1308, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

This is the entry in buildout.cfg:

[rabbitmq]
recipe = gocept.download
url = http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.0/rabbitmq-server-generic-unix-3.3.0.tar.gz
md5sum = 12a54f6ed64e5118cee7a6d1f7b8111d

Attempting to install on CentOS 7, Python 2.7. I don't really know Python that well or I would troubleshoot further, but I am wondering if the issue is in the version of the egg (gocept.download, 0.9.5-py2.7)?

CoreOS local instance, no images found

I have several images on my local CoreOS installation.

REPOSITORY                 TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
dockerui/dockerui          latest              9c51054cd79b        3 days ago          6.132 MB
registry                   latest              bdd0d98559dd        8 days ago          422.8 MB
mist/mistio                latest              6f880270d202        3 months ago        1.113 GB
atcol/docker-registry-ui   latest              2a29b9167376        8 months ago        890.5 MB

None of them are listed in the UI though.
Is there documentation on how to get the images to list? I have added ssh key and able to see the machine "CoreOs" running with basic uptime.

I have started the local registry also in case assuming mist.io would use this for searching all images;

docker run \
    -d \
    --name private_registry \
    -e SETTINGS_FLAVOR=local \
    -e STORAGE_PATH=/registry-storage \
    -e SEARCH_BACKEND=sqlalchemy \
    -e LOGLEVEL=DEBUG \
    -v /docker/registry/storage:/registry-storage \
    -u 10000 \
    -p 5000:5000 \
    registry

Servers in a VPN - SSH access?

Hi,

I have just tried Mist.io for the first time, and I could not find any information about running it for servers closed off behind a VPN. None of my servers have public SSH endpoints, and trying to access them via the "Shell" feature is just attempting an SSH connection via the server's public IP (which fails, obviously)

  1. Is it possible to connect to SSH using a local IP (if self-hosted and the node is part of the network)?
  2. I want to be able to deploy a server that will be added to a VPN instead of a region (I am using Azure). I saw no such functionality - but I don't mind contributing - can you please point me in the right direction as to where I can start?

Get image OS by machine extra

Refactor getImageOS function of images controller to search in the id itself for the image OS if the image is not loaded.

slow performance

I have registered 20 KVM hosts (libvirt) that has over 270 guest machines. It takes over 30 seconds to display machines when 'Machines' button has been clicked. Is this normal? I have plenty of resouce (memory and CPU) available from the machine.

cannot buildout

get an error running buildout on ubuntu 14.04:

Running "requirejs:mistjs" (requirejs) task
{ [Error: Error: ENOENT, no such file or directory '/mist.io/src/mist/io/static/dist/jquery/jquery.js'
at Error (native)
]
originalError:
{ [Error: ENOENT, no such file or directory '/mist.io/src/mist/io/static/dist/jquery/jquery.js']
errno: -2,
code: 'ENOENT',
path: '/mist.io/src/mist/io/static/dist/jquery/jquery.js',
syscall: 'open',
fileName: '/mist.io/src/mist/io/static/dist/jquery/jquery.js' } }
While:
Installing grunt.

buildout fails - ubuntu 14.04.3 - amqp version conflict

Buildout proceeds normall untils MarkupSafe, which fails with the following error:

We have the best distribution that satisfies 'MarkupSafe>=0.9.2'.
Picked: MarkupSafe = 0.23
While:
  Installing mist.
Error: There is a version conflict.
We already have: amqp 1.4.6
but kombu 3.0.27 requires 'amqp<2.0,>=1.4.7'.

If I manually change the requirement in kombu's requires.txt to allow 1.4.6, the buildout continues and completes successfully, but of course the result is a non-functional installation since the rabbitmq component will not run.

PROTOCOL_SSLv3 is not defined

Hi,

I cloned from master today and followed the instructions on the README, using virtualenv on Debian Jessie (testing).

bin/buildout -v succeeded, and then I tried bin/supervisord which had failures.

rwh@search-docker:~/workspace/mist.io (master)$ bin/supervisorctl status
celery                           RUNNING   pid 11950, uptime 0:08:27
haproxy                          RUNNING   pid 11947, uptime 0:08:27
memcache                         RUNNING   pid 11952, uptime 0:08:27
rabbitmq                         RUNNING   pid 11951, uptime 0:08:27
socketio                         FATAL     Exited too quickly (process log may have details)
uwsgi                            FATAL     Exited too quickly (process log may have details)
rwh@search-docker:~/workspace/mist.io (master)$ tail -n30 var/log/uwsgi-stdout---supervisor-c1M3ja.log 
added /home/rwh/workspace/mist.io/eggs/selenium-2.45.0-py2.7.egg/ to pythonpath.
added /home/rwh/workspace/mist.io/eggs/parse_type-0.3.4-py2.7.egg/ to pythonpath.
added /home/rwh/workspace/mist.io/eggs/MarkupSafe-0.23-py2.7-linux-x86_64.egg/ to pythonpath.
added /home/rwh/workspace/mist.io/eggs/enum34-1.0.4-py2.7.egg/ to pythonpath.
Loading paste environment: config:/home/rwh/workspace/mist.io/uwsgi.ini
2015-03-25 14:01:52,856 WARNING MainThread config - <module>: No settings.py file found.
Traceback (most recent call last):
  File "/home/rwh/workspace/mist.io/eggs/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 247, in loadapp
    return loadobj(APP, uri, name=name, **kw)
  File "/home/rwh/workspace/mist.io/eggs/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 272, in loadobj
    return context.create()
  File "/home/rwh/workspace/mist.io/eggs/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 710, in create
    return self.object_type.invoke(self)
  File "/home/rwh/workspace/mist.io/eggs/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 146, in invoke
    return fix_call(context.object, context.global_conf, **context.local_conf)
  File "/home/rwh/workspace/mist.io/eggs/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/util.py", line 55, in fix_call
    val = callable(*args, **kw)
  File "/home/rwh/workspace/mist.io/src/mist/io/__init__.py", line 81, in main
    configurator.scan()
  File "/home/rwh/workspace/mist.io/eggs/pyramid-1.4-py2.7.egg/pyramid/config/__init__.py", line 947, in scan
    ignore=ignore)
  File "/home/rwh/workspace/mist.io/eggs/venusian-1.0-py2.7.egg/venusian/__init__.py", line 205, in scan
    __import__(modname)
  File "/home/rwh/workspace/mist.io/src/mist/io/sockio.py", line 16, in <module>
    from gevent.socket import wait_read, wait_write
  File "/home/rwh/workspace/mist.io/eggs/gevent-1.0.1-py2.7-linux-x86_64.egg/gevent/socket.py", line 659, in <module>
    from gevent.ssl import sslwrap_simple as ssl, SSLError as sslerror, SSLSocket as SSLType
  File "/home/rwh/workspace/mist.io/eggs/gevent-1.0.1-py2.7-linux-x86_64.egg/gevent/ssl.py", line 386, in <module>
    def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv3, ca_certs=None):
NameError: name 'PROTOCOL_SSLv3' is not defined
rwh@search-docker:~/workspace/mist.io (master)$ tail -n40 var/log/socketio-stdout---supervisor-C1IM1A.log 

NameError: name 'PROTOCOL_SSLv3' is not defined
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/home/rwh/workspace/mist.io/serve.py in <module>()
----> 1 from socketio.server import SocketIOServer
      2 from pyramid.paster import get_app
      3 from gevent import monkey; monkey.patch_all()
      4 
      5 if __name__ == '__main__':

/home/rwh/workspace/mist.io/eggs/gevent_socketio-0.3.6-py2.7.egg/socketio/server.py in <module>()
      4 from socket import error
      5 
----> 6 from gevent.pywsgi import WSGIServer
      7 
      8 from socketio.handler import SocketIOHandler

/home/rwh/workspace/mist.io/eggs/gevent-1.0.1-py2.7-linux-x86_64.egg/gevent/pywsgi.py in <module>()
     10 from urllib import unquote
     11 
---> 12 from gevent import socket
     13 import gevent
     14 from gevent.server import StreamServer

/home/rwh/workspace/mist.io/eggs/gevent-1.0.1-py2.7-linux-x86_64.egg/gevent/socket.py in <module>()
    657 
    658 try:
--> 659     from gevent.ssl import sslwrap_simple as ssl, SSLError as sslerror, SSLSocket as SSLType
    660     _have_ssl = True
    661 except ImportError:

/home/rwh/workspace/mist.io/eggs/gevent-1.0.1-py2.7-linux-x86_64.egg/gevent/ssl.py in <module>()
    384 
    385 
--> 386 def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv3, ca_certs=None):
    387     """Retrieve the certificate from the server at the specified address,
    388     and return it as a PEM-encoded string.

NameError: name 'PROTOCOL_SSLv3' is not defined

I'm guessing I need another debian package installed, possibly a -dev package?

AttributeError: 'NoneType' object has no attribute 'location'

When I run the bootstrap.py command, the following error occurs. (I'm using Python 2.7.3):

$ ./bin/python bootstrap.py 
Traceback (most recent call last):
  File "bootstrap.py", line 257, in <module>
    import zc.buildout.buildout
  File "/private/var/folders/9b/bhrj5n3n0_g5y1826knqv_jw0000gn/T/tmpV5BQc0/zc.buildout-2.0.1-py2.7.egg/zc/buildout/buildout.py", line 18, in <module>
    import zc.buildout.easy_install
  File "/private/var/folders/9b/bhrj5n3n0_g5y1826knqv_jw0000gn/T/tmpV5BQc0/zc.buildout-2.0.1-py2.7.egg/zc/buildout/easy_install.py", line 61, in <module>
    pkg_resources.Requirement.parse('distribute')
AttributeError: 'NoneType' object has no attribute 'location'

login with ssh key to KVM server

I can login with ssh keys but when the key is added to Mist, it cannot logon (KVM libvirt). Below is the error. What would be a suggested way to troubleshoot?

2015-04-29 17:56:46,340 ERROR MainThread methods - add_backend_v_2: Error while adding backendException('Make sure ssh key and username are valid',)
2015-04-29 17:56:46,341 INFO MainThread views - exception_handler_mist: MistError: BackendUnavailableError("Backend unavailable: Exception('Make sure ssh key and username are valid',)",)
[pid: 1393|app: 0|req: 201/614] 127.0.0.1 () {52 vars in 864 bytes} [Wed Apr 29 17:56:46 2015] POST /backends => generated 75 bytes in 216 msecs (HTTP/1.1 503) 2 headers in 96 bytes (1 switches on core 0)

Server monitoring in the opensource version?

The opensource version requires me to login to mist.io ( popup modal ) when clicking the "server monitor" button. Is it possible to have this feature without a mist.io account ?

It feels a bit like an advertisement for mist.io having this modal if this is the opensource version why is there mention to mist.io at all in such a way?

Very amazing project love to contribute hope this issue can be resolved.
Since the documentation of opensource version also links to the mist.io documentation its not clear to me how to enable above without an account.

Installation not working under Ubuntu 14.04.3

Fresh install of obuntu server 14

# history
sudo su -
cd /tmp/
apt-get install git python-dev build-essential git erlang erlang-nox
git clone https://github.com/mistio/mist.io.git
cd mist.io
virtualenv --no-site-packages .
./bin/pip install ansible
./bin/python bootstrap.py
./bin/buildout -v

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:        14.04
Codename:       trusty

Traceback (most recent call last):
File "", line 1, in
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 2279, in main
distclass=DistributionWithoutHelpCommands, **kw
File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
dist.run_commands()
File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 389, in run
self.easy_install(spec, not self.no_deps)
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 619, in easy_install
return self.install_item(None, spec, tmpdir, deps, True)
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 668, in install_item
dists = self.install_eggs(spec, download, tmpdir)
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 851, in install_eggs
return self.build_and_install(setup_script, setup_base)
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1079, in build_and_install
self.run_setup(setup_script, setup_base, args)
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1065, in run_setup
run_setup(setup_script, args)
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/sandbox.py", line 240, in run_setup
raise
File "/usr/lib/python2.7/contextlib.py", line 35, in exit
self.gen.throw(type, value, traceback)
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/sandbox.py", line 193, in setup_context
yield
File "/usr/lib/python2.7/contextlib.py", line 35, in exit
self.gen.throw(type, value, traceback)
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/sandbox.py", line 164, in save_modules
saved_exc.resume()
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/sandbox.py", line 139, in resume
compat.reraise(type, exc, self._tb)
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/sandbox.py", line 152, in save_modules
yield saved
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/sandbox.py", line 193, in setup_context
yield
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/sandbox.py", line 237, in run_setup
DirectorySandbox(setup_dir).run(runner)
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/sandbox.py", line 267, in run
return func()
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/sandbox.py", line 236, in runner
_execfile(setup_script, ns)
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/sandbox.py", line 46, in _execfile
exec(code, globals, locals)
File "/tmp/easy_install-rrYoot/Pillow-3.0.0/setup.py", line 767, in

File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
dist.run_commands()
File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/command/bdist_egg.py", line 160, in run
cmd = self.call_command('install_lib', warn_dir=0)
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/command/bdist_egg.py", line 146, in call_command
self.run_command(cmdname)
File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/tmp/mist.io/lib/python2.7/site-packages/setuptools/command/install_lib.py", line 10, in run
self.build()
File "/usr/lib/python2.7/distutils/command/install_lib.py", line 111, in build
self.run_command('build_ext')
File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/usr/lib/python2.7/distutils/command/build_ext.py", line 337, in run
self.build_extensions()
File "/tmp/easy_install-rrYoot/Pillow-3.0.0/setup.py", line 515, in build_extensions

ValueError: --enable-jpeg requested but jpeg not found, aborting.
An error occurred when trying to install Pillow 3.0.0. Look above this message for any errors that were output by easy_install.
While:
Installing cloudpy.
Getting distribution for 'Pillow'.
Error: Couldn't install: Pillow 3.0.0

dashboard view: some times not all monitored machines appear

you may try this on [email protected] account on production

There are two backends, one 'other server' and one kvm. The kvm takes some time to load machines, so many times it will only show the 'other server' monitoring data, and not the 3 machines monitored on the kvm. If I remember well first /monitoring arrives, then the list_machines for the late backend, so these machines are not included on the monitoring data. If this is true, then list_machines should somehow check if it has machines monitored inside, in order to asynchronously ask for the monitoring data. Isn't the result of /monitoring getting stored somewhere? Then it would be easy for late list_machines to check there if they have machines (assuming that /monitoring has every monitored machine, right?)

docker backend via TLS not working !

Hello,
i installed mist.io to use docker via tls.
My docker tls connections works as expected, but not mist.io.
At the setup screen i add the key and the cert, but the log docker log show, that mist.io uses the wrong cacert to connect to.
Then i investigated the source and found out, that libcloud depends on a valid libcloud.security.CA_CERTS_PATH and ibcloud.security.VERIFY_SSL_CERT = True;
I tried several posibilities:
1.) add my cacert.pem to /etc/ssl/certs (via update-ca-certificates)
2.) hardcoded the cacert.pem in the file methods.py and tasks.py.
No success.
Please update your doc or howto how to use private cacert.

What cacert do you use as default ?

Rgds.

Franz

Couldn't find index page for 'sphinxcontrib-httpdomain'

Hi there,

I have 2 problems. Need help.

a)
I am currently testing this on ubuntu 14.04 and when I ran this command below

./bin/buildout -v

I am getting this error

Picked: sphinx-bootstrap-theme = 0.4.0
Getting required 'sphinxcontrib-httpdomain'
required by mist.io 0.9.8.
We have no distributions for sphinxcontrib-httpdomain that satisfies 'sphinxcontrib-httpdomain'.
Download error on http://pypi.python.org/simple/sphinxcontrib-httpdomain/: timed out -- Some packages may not be found!
Couldn't find index page for 'sphinxcontrib-httpdomain' (maybe misspelled?)
Getting distribution for 'sphinxcontrib-httpdomain'.
Couldn't find index page for 'sphinxcontrib-httpdomain' (maybe misspelled?)
While:
Installing mist.
Getting distribution for 'sphinxcontrib-httpdomain'.
Error: Couldn't find a distribution for 'sphinxcontrib-httpdomain'.

Any help?

b)
I also tried to access this command

./bin/uwsgi-start production.ini

It seems there's no tool for uwsgi in bin folder.

Any help? Thanks.

Error: Bare metal Backend not found

Hello,

I would be than happy to have a 'help' for this problem, let me know more about correct form to deploy my own Mist

Thanks and I am looking forward to get a support.

  • My Deploy Env:
    sudo aptitude install python-dev build-essential git erlang libpcre3-dev
    sudo aptitude install python-virtualenv
    git clone https://github.com/mistio/mist.io.git
    cd mist.io
    virtualenv --no-site-packages .
    ./bin/pip install ansible
    ./bin/pip install setuptools --upgrade
    ./bin/python bootstrap.py
    ./bin/buildout -v

Deployment:
./bin/supervisord

Url: http://127.0.0.1:8000

  • Backend Baremetal (ssh connection)
    Error:

2015-01-08 13:37:28,722 INFO MainThread methods - add_backend_v_2: Adding new backend in provider 'bare_metal' with Api-Version: 2
2015-01-08 13:37:28,737 INFO MainThread shell - autoconfigure: autoconfiguring Shell for machine 3NixNnLQcd6bRuWy8rKRfZus856A:200238105150
2015-01-08 13:37:28,741 INFO MainThread shell - autoconfigure: ssh -i key1 [email protected]:22
2015-01-08 13:37:28,946 INFO Thread-1 log - log: Connected (version 2.0, client OpenSSH_5.9p1)
2015-01-08 13:37:29,560 INFO Thread-1 log - log: Authentication (publickey) successful!
2015-01-08 13:37:29,565 INFO MainThread shell - command: running command: 'uptime'
2015-01-08 13:37:30,253 INFO MainThread shell - command: running command: 'which sudo'
2015-01-08 13:37:30,574 INFO MainThread shell - command: running command: 'uptime'
2015-01-08 13:37:30,950 INFO MainThread shell - disconnect: Closing ssh connection to 200.x.y.z
2015-01-08 13:37:31,097 INFO MainThread shell - disconnect: Closing ssh connection to 200.x.y.z
2015-01-08 13:37:31,110 INFO MainThread methods - add_backend_v_2: Backend with id 'None' added succesfully.
2015-01-08 13:37:31,125 INFO MainThread views - exception_handler_mist: MistError: BackendNotFoundError('Backend not found',)
[pid: 43545|app: 0|req: 62/236] 127.0.0.1 () {52 vars in 793 bytes} [Thu Jan 8 13:37:28 2015] POST /backends => generated 19 bytes in 2415 msecs (HTTP/1.1 404) 2 headers in 86 bytes (1 switches on core 0)

buildout fails

hi,

command
./bin/buildout -v
fails with following

i'm using debian 8, python 2.7.9

jan

...
Installing grunt.
Running "emberTemplates:compile" (emberTemplates) task

Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/application.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/backend_add.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/backend_button.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/backend_edit.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/dialog.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/file_upload.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/graph_button.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/graph_list.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/graph_list_bar.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/graph_list_control.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/graph_list_item.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/home.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/image.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/image_list.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/image_list_item.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/images.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/index.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/ip_address_list_item.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/key.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/key_add.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/key_edit.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/key_list.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/key_list_item.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/keys.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/log_list.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/log_list_item.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/login.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine_add.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine_edit.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine_keys.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine_keys_list_item.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine_list.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine_list_item.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine_monitoring.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine_power.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine_run_script.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine_shell.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine_tags.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machine_tags_list_item.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/machines.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/messagebox.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/metric_add.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/metric_add_custom.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/metric_node.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/missing.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/network.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/network_create.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/network_list.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/network_list_item.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/networks.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/rule.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/rule_edit.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/rule_list.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/script.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/script_add.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/script_edit.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/script_list.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/script_list_item.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/script_log_list.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/script_run.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/scripts.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/subnet_list_item.hbs. Used --force, continuing.
Error: ENOENT, no such file or directory './bower_components/ember/ember-template-compiler.js'
Warning: Ember Handlebars failed to compile src/mist/io/static/js/app/templates/user_menu.hbs. Used --force, continuing.

Running "symlink:dist" (symlink) task
Creating symlink to ../../../../dist/ at src/mist/io/static/dist...OK

Running "symlink:jquery" (symlink) task
Creating directory dist...OK
Creating symlink to ../bower_components/jquery/dist/ at dist/jquery...OK

Running "symlink:jqm" (symlink) task
Creating symlink to ../bower_components/jquery-mobile-bower/ at dist/jqm...OK

Running "symlink:ember" (symlink) task
Creating symlink to ../bower_components/ember/ at dist/ember...OK

Running "symlink:requirejs" (symlink) task
Creating symlink to ../bower_components/requirejs/ at dist/requirejs...OK

Running "symlink:requirejs_text" (symlink) task
Creating symlink to ../bower_components/requirejs-text/ at dist/requirejs-text...OK

Running "symlink:sockjs" (symlink) task
Creating symlink to ../bower_components/sockjs/ at dist/sockjs...OK

Running "symlink:md5" (symlink) task
Creating symlink to ../bower_components/md5/ at dist/md5...OK

Running "symlink:d3" (symlink) task
Creating symlink to ../bower_components/d3/ at dist/d3...OK

Running "symlink:c3" (symlink) task
Creating symlink to ../bower_components/c3/ at dist/c3...OK

Running "symlink:term" (symlink) task
Creating symlink to ../bower_components/term.js/ at dist/term.js...OK

Running "symlink:images" (symlink) task
Creating symlink to ../src/mist/io/static/images at dist/images...OK

Running "symlink:fonts" (symlink) task
Creating symlink to ../src/mist/io/static/fonts at dist/fonts...OK

Running "symlink:states" (symlink) task
Creating symlink to ../src/mist/io/static/states at dist/states...OK

Running "requirejs:mistjs" (requirejs) task
{ [Error: Error: ENOENT, no such file or directory '/opt/mist.io/src/mist/io/static/dist/jquery/jquery.js'
at Error (native)
]
originalError:
{ [Error: ENOENT, no such file or directory '/opt/mist.io/src/mist/io/static/dist/jquery/jquery.js']
errno: -2,
code: 'ENOENT',
path: '/opt/mist.io/src/mist/io/static/dist/jquery/jquery.js',
syscall: 'open',
fileName: '/opt/mist.io/src/mist/io/static/dist/jquery/jquery.js' } }
While:
Installing grunt.

An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
File "/opt/mist.io/eggs/zc.buildout-2.4.7-py2.7.egg/zc/buildout/buildout.py", line 1992, in main
getattr(buildout, command)(args)
File "/opt/mist.io/eggs/zc.buildout-2.4.7-py2.7.egg/zc/buildout/buildout.py", line 666, in install
installed_files = self[part]._call(recipe.install)
File "/opt/mist.io/eggs/zc.buildout-2.4.7-py2.7.egg/zc/buildout/buildout.py", line 1407, in _call
return f()
File "/opt/mist.io/eggs/collective.recipe.cmd-0.11-py2.7.egg/collective/recipe/cmd/init.py", line 56, in install
self.execute()
File "/opt/mist.io/eggs/collective.recipe.cmd-0.11-py2.7.egg/collective/recipe/cmd/init.py", line 69, in execute
run_commands(cmds, self.shell)
File "/opt/mist.io/eggs/collective.recipe.cmd-0.11-py2.7.egg/collective/recipe/cmd/init.py", line 39, in run_commands
check_call('%s %s' % (shell, tmpfile), shell=True)
File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '/bin/bash /tmp/tmpiy1VPf/run' returned non-zero exit status 1

Docker provider?

Installed. Do not see docker as a backend provider. What am I missing?

Error: KeyError: 'socketio'

Hello,

I would be than happy to have a 'help' for this problem, let me know more about correct form to deploy my own Mist
I have already installed mist.io follow guide.

Deployment:
./bin/supervisord
Url: http://127.0.0.1:8000: It not run. I don't know, we must config nginx for port 800 or not ?

So, i use other way. I run command:
./bin/paster serve development.ini --reload
and Point browser to http://127.0.0.1:6543. But it have problem same below:

root@LuATL-63:/home/duynguyen/mist.io# ./bin/paster serve development.ini --reload
Starting subprocess with file monitor
2015-03-02 22:13:50,889 WARNI [mist.io.config][MainThread] No settings.py file found.
2015-03-02 22:13:50,972 WARNI [mist.io.celery_app][MainThread] No settings.py file found.
Starting server in PID 671.
serving on 0.0.0.0:6543 view at http://127.0.0.1:6543
2015-03-02 22:14:35,194 INFO [paste.httpserver.ThreadPool][MainThread] kill_hung_threads status: 10 threads (0 working, 10 idle, 0 starting) ave time N/A, max time 0.00sec, killed 0 workers
2015-03-02 22:14:49,259 CRITI [mist.io.views][worker 6] Uncaught non-mist exception? WTF!
Traceback (most recent call last):
File "/home/duynguyen/mist.io/eggs/pyramid-1.4-py2.7.egg/pyramid/tweens.py", line 21, in excview_tween
response = handler(request)
File "/home/duynguyen/mist.io/eggs/pyramid-1.4-py2.7.egg/pyramid/router.py", line 161, in handle_request
response = view_callable(context, request)
File "/home/duynguyen/mist.io/eggs/pyramid-1.4-py2.7.egg/pyramid/config/views.py", line 345, in rendered_view
result = view(context, request)
File "/home/duynguyen/mist.io/eggs/pyramid-1.4-py2.7.egg/pyramid/config/views.py", line 491, in _requestonly_view
response = view(request)
File "/home/duynguyen/mist.io/src/mist/io/views.py", line 939, in socketio
request=request)
File "/home/duynguyen/mist.io/eggs/gevent_socketio-0.3.6-py2.7.egg/socketio/init.py", line 68, in socketio_manage
socket = environ['socketio']
KeyError: 'socketio'

buildout fails when installing pycrypto

$ uname -a
Darwin MacBook-Pro.local 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:32:41 PDT 2011; root:xnu-1504.15.3~1/RELEASE_X86_64 x86_64

$ ./bin/buildout
...
Got PasteScript 1.7.5.
Getting distribution for 'pycrypto>=2.1,!=2.4'.
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.
/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/as: assembler (/usr/bin/../libexec/gcc/darwin/ppc/as or /usr/bin/../local/libexec/gcc/darwin/ppc/as) for architecture ppc not installed
Installed assemblers are:
/usr/bin/../libexec/gcc/darwin/x86_64/as for architecture x86_64
/usr/bin/../libexec/gcc/darwin/i386/as for architecture i386
src/MD2.c:147: fatal error: error writing to -: Broken pipe
compilation terminated.
lipo: can't open input file: /var/folders/Hh/HhLZg0qMHdq1XT2c5j+enk+++TI/-Tmp-//ccmmVnL2.out (No such file or directory)
error: Setup script exited with error: command 'gcc-4.2' failed with exit status 1
An error occurred when trying to install pycrypto 2.6. Look above this message for any errors that were output by easy_install.
While:
Installing pyramid.
Getting distribution for 'pycrypto>=2.1,!=2.4'.
Error: Couldn't install: pycrypto 2.6

KVM backend doesn't work

I've installed mist.io on my dev server, where I'd also like to host my KVM virtual machines.

After creating a KVM cloud, I don't see any of my machines or images listed. I'm not sure how that would work without the ability to tell mist.io which directories to look under. (i.e. my images are in /var/lib/libvirt/images and my ISO images are in /mnt/isos).

No ability to log-out of own instance

Hi,

So, after having finally gotten a proper working mist.io instance up and running, I notice a glaring issue:

If you visit a freshly-installed instance and try logging in, there is NO capability for logging out of a logged-in account. Or worse, having no capability to ensure that only you have access to your own running instance.

Your documentation reveals basically nothing about what to do if you decide to download the open-source version of mist.io.

This is a critical security issue that needs to be resolved ASAP. How did you guys not notice this?

Too many requests & Shell not working in mobiles

HI Mist Team.

When trying to load this opensource version on the browser it seems to spend about 177 requests and 2 MB of download to get dashboard up/running.

I think the js/css/ templates compilation is not done may be since this is developer centric version.

However please give instructions to enable them so it would be good for someone trying this like me.

Also regarding the Shell , I am able to view the shell but not type into it.

I tried this only on Galaxy Note N7000 with Chrome browser on Android 4.4.4 .

Is this a known issue?

How to put authentication to mist.io panel?

Hi,

I'm following this article, but I can't do mist.io running over http basic auth.

Where is the file I need to put the auth basic config?

proxy_pass http://127.0.0.1:4243;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;

Thank's!

Install fails on haproxy

I'm apparently unable to get to the haproxy site, either haproxy.1wt.eu or haproxy.org, and thus, the buildout script fails. Can someone suggest a workaround? I can install haproxy from another source and would need help in adjusting the installation script. Thanks.

buildout fail

Ubuntu 14.04.3

git clone https://github.com/mistio/mist.io.git
cd mist.io
virtualenv --no-site-packages .
./bin/pip install ansible
./bin/python bootstrap.py
./bin/buildout -v

Running "requirejs:mistjs" (requirejs) task
/tmp/tmpLlvG1H/run: line 1: 10261 Killed ./bin/grunt --force
While:
Installing grunt.

An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
File "/home/user/mist.io/eggs/zc.buildout-2.5.0-py2.7.egg/zc/buildout/buildout.py", line 1992, in main

getattr(buildout, command)(args)

File "/home/user/mist.io/eggs/zc.buildout-2.5.0-py2.7.egg/zc/buildout/buildout.py", line 666, in install
installed_files = self[part]._call(recipe.install)
File "/home/user/mist.io/eggs/zc.buildout-2.5.0-py2.7.egg/zc/buildout/buildout.py", line 1407, in _call
return f()
File "/home/user/mist.io/eggs/collective.recipe.cmd-0.11-py2.7.egg/collective/recipe/cmd/init.py", line 56, in install
self.execute()
File "/home/user/mist.io/eggs/collective.recipe.cmd-0.11-py2.7.egg/collective/recipe/cmd/init.py", line 69, in execute
run_commands(cmds, self.shell)
File "/home/user/mist.io/eggs/collective.recipe.cmd-0.11-py2.7.egg/collective/recipe/cmd/init.py", line 39, in run_commands
check_call('%s %s' % (shell, tmpfile), shell=True)
File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '/bin/bash /tmp/tmpLlvG1H/run' returned non-zero exit status 137

socketio-stderr Connection refused

Hello,

I did configuring BareMetal backend, but I can't see any machine, i found in error logs entries below.

==> var/log/socketio-stderr---supervisor-uvF0OC.log <==
2015-01-08 17:48:48 INFO Dummy-60 sockio - __init__: Initialized MistNamespace for user . Socket 59201288386. Session cea829fab9ad449ab42ac87188779bee
2015-01-08 17:48:48 INFO Dummy-61 sockio - disconnect: Disconnecting MistNamespace for user . Socket 134700865905. Session 587404bec4ce4cb588bf9c74e0374084
2015-01-08 17:48:49 INFO Dummy-60 sockio - on_ready: Ready to go!

Traceback (most recent call last):
  File "/home/richardson/mist.io/eggs/gevent-1.0.1-py2.7-linux-x86_64.egg/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/home/richardson/mist.io/src/mist/io/sockio.py", line 270, in update_subscriber
    amqp_subscribe_user(user, queue=queue, callback=namespace.process_update)
  File "/home/richardson/mist.io/src/mist/io/helpers.py", line 209, in amqp_subscribe_user
    amqp_subscribe(_amqp_user_exchange(user), queue, callback)
  File "/home/richardson/mist.io/src/mist/io/helpers.py", line 169, in amqp_subscribe
    connection = Connection()
  File "/home/richardson/mist.io/eggs/amqp-1.4.6-py2.7.egg/amqp/connection.py", line 165, in __init__
    self.transport = self.Transport(host, connect_timeout, ssl)
  File "/home/richardson/mist.io/eggs/amqp-1.4.6-py2.7.egg/amqp/connection.py", line 186, in Transport
    return create_transport(host, connect_timeout, ssl)
  File "/home/richardson/mist.io/eggs/amqp-1.4.6-py2.7.egg/amqp/transport.py", line 299, in create_transport
    return TCPTransport(host, connect_timeout)
  File "/home/richardson/mist.io/eggs/amqp-1.4.6-py2.7.egg/amqp/transport.py", line 95, in __init__
    raise socket.error(last_err)
error: [Errno 111] Connection refused
<Greenlet at 0x7fad532e84b0: update_subscriber(<mist.io.sockio.MistNamespace object at 0x7fad5330)> failed with error

2015-01-08 17:48:51 INFO Dummy-62 connectionpool - _new_conn: Starting new HTTPS connection (1): mist.io
Traceback (most recent call last):
  File "/home/richardson/mist.io/eggs/gevent-1.0.1-py2.7-linux-x86_64.egg/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/home/richardson/mist.io/src/mist/io/sockio.py", line 298, in list_backends_from_socket
    cached = task.smart_delay(user.email, backend_id)
  File "/home/richardson/mist.io/src/mist/io/tasks.py", line 345, in smart_delay
    self.delay(*args, **kwargs)
  File "/home/richardson/mist.io/eggs/celery-3.1.17-py2.7.egg/celery/app/task.py", line 453, in delay
    return self.apply_async(args, kwargs)
  File "/home/richardson/mist.io/eggs/celery-3.1.17-py2.7.egg/celery/app/task.py", line 555, in apply_async
    **dict(self._get_exec_options(), **options)
  File "/home/richardson/mist.io/eggs/celery-3.1.17-py2.7.egg/celery/app/base.py", line 353, in send_task
    reply_to=reply_to or self.oid, **options
  File "/home/richardson/mist.io/eggs/celery-3.1.17-py2.7.egg/celery/app/amqp.py", line 305, in publish_task
    **kwargs
  File "/home/richardson/mist.io/eggs/kombu-3.0.24-py2.7.egg/kombu/messaging.py", line 168, in publish
    routing_key, mandatory, immediate, exchange, declare)
  File "/home/richardson/mist.io/eggs/kombu-3.0.24-py2.7.egg/kombu/connection.py", line 457, in _ensured
    interval_max)
  File "/home/richardson/mist.io/eggs/kombu-3.0.24-py2.7.egg/kombu/connection.py", line 369, in ensure_connection
    interval_start, interval_step, interval_max, callback)
  File "/home/richardson/mist.io/eggs/kombu-3.0.24-py2.7.egg/kombu/utils/__init__.py", line 243, in retry_over_time
    return fun(*args, **kwargs)
  File "/home/richardson/mist.io/eggs/kombu-3.0.24-py2.7.egg/kombu/connection.py", line 237, in connect
    return self.connection
  File "/home/richardson/mist.io/eggs/kombu-3.0.24-py2.7.egg/kombu/connection.py", line 741, in connection
    self._connection = self._establish_connection()
  File "/home/richardson/mist.io/eggs/kombu-3.0.24-py2.7.egg/kombu/connection.py", line 696, in _establish_connection
    conn = self.transport.establish_connection()
  File "/home/richardson/mist.io/eggs/kombu-3.0.24-py2.7.egg/kombu/transport/pyamqp.py", line 112, in establish_connection
    conn = self.Connection(**opts)
  File "/home/richardson/mist.io/eggs/amqp-1.4.6-py2.7.egg/amqp/connection.py", line 165, in __init__
    self.transport = self.Transport(host, connect_timeout, ssl)
  File "/home/richardson/mist.io/eggs/amqp-1.4.6-py2.7.egg/amqp/connection.py", line 186, in Transport
    return create_transport(host, connect_timeout, ssl)
  File "/home/richardson/mist.io/eggs/amqp-1.4.6-py2.7.egg/amqp/transport.py", line 299, in create_transport
    return TCPTransport(host, connect_timeout)
  File "/home/richardson/mist.io/eggs/amqp-1.4.6-py2.7.egg/amqp/transport.py", line 95, in __init__
    raise socket.error(last_err)
error: [Errno 111] Connection refused
<Greenlet at 0x7fad53301190: list_backends_from_socket(<mist.io.sockio.MistNamespace object at 0x7fad5330)> failed with error

Thanks and I am looking forward to get a support.

Servers/ backends go offline after a while

Hi Team

I kept running the opensource version on a server and it was all good and nice first few days
then digitalocean backend went inactive so i just toggled Enabled/Disabled and it worked

Then after a week, Now all Backend are inactive.. they show up on the top / and shows active

Now they dont work anymore even if I toggle

This is the status of services .
root@f739f9364152:/home/mist# ./bin/supervisorctl status
celery RUNNING pid 10298, uptime 14 days, 18:43:59
haproxy RUNNING pid 10285, uptime 14 days, 18:44:01
memcache RUNNING pid 10339, uptime 14 days, 18:43:58
rabbitmq RUNNING pid 10308, uptime 14 days, 18:43:58
socketio RUNNING pid 26820, uptime 4 days, 3:03:34
uwsgi RUNNING pid 10292, uptime 14 days, 18:44:00

root@f739f9364152:/home/mist# ./bin/supervisorctl restart all

And now all my backends/machiens are up...

I am going to close this server down and move to your mist.io service anyway.
But if anyone wants to take a look or want any specific logs to find more information here Let me know.

Installation error after fresh debian installation

Hi together,

i've just installing mist.io in order of the documentation after an fresh installation of debian 7.8.
I don't get, why these error occurs

root@pro:/usr/src/mist.io# python
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2
root@pro:/usr/src/mist.io# ./bin/buildout -v
Installing 'mr.developer'.
We have no distributions for mr.developer that satisfies 'mr.developer'.
While:
  Installing.
  Loading extensions.
  Getting distribution for 'mr.developer'.

An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
  File "/usr/src/mist.io/eggs/zc.buildout-2.3.1-py2.7.egg/zc/buildout/buildout.py", line 1946, in main
    getattr(buildout, command)(args)
  File "/usr/src/mist.io/eggs/zc.buildout-2.3.1-py2.7.egg/zc/buildout/buildout.py", line 467, in install
    self._load_extensions()
  File "/usr/src/mist.io/eggs/zc.buildout-2.3.1-py2.7.egg/zc/buildout/buildout.py", line 995, in _load_extensions
    newest=self.newest, allow_hosts=self._allow_hosts)
  File "/usr/src/mist.io/eggs/zc.buildout-2.3.1-py2.7.egg/zc/buildout/easy_install.py", line 848, in install
    return installer.install(specs, working_set)
  File "/usr/src/mist.io/eggs/zc.buildout-2.3.1-py2.7.egg/zc/buildout/easy_install.py", line 635, in install
    for_buildout_run=for_buildout_run):
  File "/usr/src/mist.io/eggs/zc.buildout-2.3.1-py2.7.egg/zc/buildout/easy_install.py", line 477, in _get_dist
    dist, avail = self._satisfied(requirement)
  File "/usr/src/mist.io/eggs/zc.buildout-2.3.1-py2.7.egg/zc/buildout/easy_install.py", line 234, in _satisfied
    return None, self._obtain(req, source)
  File "/usr/src/mist.io/eggs/zc.buildout-2.3.1-py2.7.egg/zc/buildout/easy_install.py", line 420, in _obtain
    if _final_version(dist.parsed_version)
  File "/usr/src/mist.io/eggs/zc.buildout-2.3.1-py2.7.egg/zc/buildout/easy_install.py", line 1408, in _final_version
    return not parsed_version.is_prerelease
AttributeError: 'tuple' object has no attribute 'is_prerelease'

scripts

On the main dashboard page there is no place to manage scripts. Is this intentionally not a part of the open source project? From the install and documentation I expected ansible to be able to run playbooks on my instances. What gives?

Docker parameters

Successfully creating/stopping/starting a docker process -- thank you.

Currently, the docker run is "/bin/sh -c 'cd / && ./init.sh'". How might other parameters be part of the actually run command?
Basic mysql example: docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql

I see the post run script afterwards..doesn't help for the startup of a specific container.

What did I miss?

Best,
Tom

Need minimum hardware recommendations

Hi

I ran this in a 1G droplet at Digitalocean and got many out of memory issues.

Adding Swap didnt help. the SSH sessions started timing out .

So I am trying now with 2G Droplet.. however it is useful to know what kind of specs we need for xx servers/etc.

Also you dont have to update anything.. just send your recommendations here and I would happily contribute changes to your repo with pull requests :)

Prerender all buttons

Jquery mobile parses the DOM to find all the elements with the attribue data-role in order to render them. Buttons are very easy to pre-render by writting all the appropriate classes jqm appends. For instance this element:

<a data-role="button" data-theme="b" data-mini="true" data-icon="gear"></a>

can be converted into this one:

<a class="ui-btn ui-btn-b ui-mini ui-btn-icon-right ui-icon-gear"></a>

which will decrease the time spent on rendering widgets and eventually the client's CPU load

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.