There is quite a bit going on in this commit. Here is a high level description of all of the changes: * Improved the README to include information for running the integrations tests now that we have subcommand management support. * Change the clean script to also delete the build directory. * Removed requirement on the DCOS_PATH environment variable. We now assume the DCOS CLI installation directory based on the location of the dcos cli binary * Adds support for installing subcommand from python wheels. The packages are install under the 'subcommands' directory. * Extended the `dcos help` to look into the 'subcommands' directory for the excutables that extend the cli. * Fix the root `dcos` executable to not use the DCOS_PATH environment variable to discover subcommand. It now discovers subcommand based on the location of the root (`dcos`) executable. * Adds `dcos subcommand` for managing the installation, listing and the removal of subcommands. * Adds dependencies on pkginfo and virtualenv. We need pkginfo to query information about the package. We need virtualenv to create virtual environment for each subcommand installed.
3.3 KiB
DCOS Command Line Interface
The DCOS Command Line Interface (CLI) is a command line utility supporting several commands to provide an user friendly yet powerful way to manage DCOS installations.
Dependencies
- git must be installed and on the
system path in order to fetch packages from
gitsources. - virtualenv must be installed and on the system path in order to install subcommands.
Setup
Make sure you meet requirements for installing packages
Clone git repo for the dcos cli:
git clone git@github.com:mesosphere/dcos-cli.gitChange directory to the repo directory:
cd dcos-cliMake sure that you have virtualenv installed. If not type:
sudo pip install virtualenvCreate a virtualenv for the dcos cli project:
make env
Configure Environment and Run
sourcethe setup file to add thedcoscommand line interface to yourPATHand create an empty configuration file:source env/bin/env-setupConfigure Marathon, changing the values below as appropriate for your local installation:
dcos config set marathon.host localhost dcos config set marathon.port 8080Get started by calling the DCOS CLI help:
dcos help
Running Tests:
Setup
Tox, our test runner, tests against both Python 2.7 and Python 3.4 environments.
If you're using OS X, be sure to use the officially distributed Python 3.4 installer since the Homebrew version is missing a necessary library.
Setup Dcos-Helloworld
To run the integration tests for managing subcommands you need to package the dcos-helloworld example project. After following the setup instructions make the wheel package by running the following command in that project:
make packages
Set the DCOS_TEST_WHEEL environment variable to the path
of the created wheel package:
export DCOS_TEST_WHEEL=$(pwd)/dist/dcos_helloworld-0.1.0-py2.py3-none-any.whl
Running
Tox will run unit and integration tests in both Python environments using a temporarily created virtualenv.
You should ensure DCOS_CONFIG is set and that the config
file points to the Marathon instance you want to use for integration
tests. If you're happy to use the default test configuration which
assumes there is a Marathon instance running on localhost, set
DCOS_CONFIG as follows:
export DCOS_CONFIG=$(pwd)/tests/data/Dcos.toml
There are two ways to run tests, you can either use the virtualenv
created by make env above:
make test
Or, assuming you have tox installed (via
sudo pip install tox):
tox
Other Useful Commands
List all of the supported test environments:
tox --listenvsRun a specific set of tests:
tox -e <testenv>Run a specific integration test module:
tox -e py27-integration /cli/test_config.py