163 lines
5.0 KiB
ReStructuredText
163 lines
5.0 KiB
ReStructuredText
DCOS Command Line Interface
|
|
===========================
|
|
The DCOS Command Line Interface (CLI) is a command line utility that
|
|
provides a user-friendly yet powerful way to manage DCOS installations.
|
|
|
|
If you're a **user** of DCOS, please follow the `installation instructions`_. Otherwise, follow the instructions below to set up your development environment.
|
|
|
|
Dependencies
|
|
------------
|
|
|
|
#. git_ must be installed and on the system path in order to fetch
|
|
packages from :code:`git` sources.
|
|
|
|
#. 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.git
|
|
|
|
#. Change directory to the repo directory::
|
|
|
|
cd dcos-cli
|
|
|
|
#. Make sure that you have virtualenv installed. If not type::
|
|
|
|
sudo pip install virtualenv
|
|
|
|
#. Create a virtualenv and packages for the dcos project::
|
|
|
|
make env
|
|
make packages
|
|
|
|
#. Create a virtualenv for the dcoscli project::
|
|
|
|
cd cli
|
|
make env
|
|
|
|
Configure Environment and Run
|
|
-----------------------------
|
|
|
|
#. :code:`source` the setup file to add the :code:`dcos` command line
|
|
interface to your :code:`PATH` and create an empty configuration file::
|
|
|
|
source bin/env-setup-dev
|
|
|
|
#. Configure Marathon, changing the values below as appropriate for your local
|
|
installation::
|
|
|
|
dcos config set marathon.url http://localhost:8080
|
|
dcos config append package.sources https://github.com/mesosphere/universe/archive/master.zip
|
|
dcos config set package.cache /tmp/dcos
|
|
dcos package update
|
|
|
|
#. Get 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.
|
|
|
|
To support subcommand integration tests, you'll need to clone, package and
|
|
configure your environment to point to the packaged `dcos-helloworld` account.
|
|
|
|
#. Check out the dcos-helloworld_ project
|
|
|
|
#. :code:`cd dcos-helloworld`
|
|
|
|
#. :code:`make packages`
|
|
|
|
#. Set the :code:`DCOS_TEST_WHEEL` environment variable to the path of the created
|
|
wheel package: :code:`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 :code:`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 :code:`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
|
|
:code:`make env` above::
|
|
|
|
make test
|
|
|
|
Or, assuming you have tox installed (via :code:`sudo pip install tox`)::
|
|
|
|
tox
|
|
|
|
Other Useful Commands
|
|
#####################
|
|
|
|
#. List all of the supported test environments::
|
|
|
|
tox --listenvs
|
|
|
|
#. Run a specific set of tests::
|
|
|
|
tox -e <testenv>
|
|
|
|
#. Run a specific integration test module::
|
|
|
|
tox -e py27-integration /cli/test_config.py
|
|
|
|
|
|
Releasing
|
|
#########
|
|
|
|
Releasing a new version of the DCOS CLI is only possible through an `automated TeamCity build`_ which is triggered automatically when a new tag is added.
|
|
|
|
The tag is used as the version number and must adhere to the conventional `PEP-440 version scheme`_.
|
|
|
|
Once all tests pass successfully, the automated build publishes two packages to PyPI using the `publish_to_pypi.sh script`_:
|
|
|
|
#. dcos_
|
|
|
|
#. dcoscli_
|
|
|
|
These packages are now available to be installed by the DCOS CLI installation script in the `mesosphere/install-scripts`_ repository.
|
|
|
|
Using the CLI
|
|
-------------
|
|
|
|
Detailed help and usage information is available through the :code:`dcos help` command and
|
|
for specific subcommands through :code:`dcos <subcommand> --help`.
|
|
|
|
Full documentation is available for the DCOS CLI on the `Mesosphere docs website`_.
|
|
|
|
|
|
.. _packages: https://packaging.python.org/en/latest/installing.html#installing-requirements
|
|
.. _git: http://git-scm.com
|
|
.. _installer: https://www.python.org/downloads/
|
|
.. _virtualenv: https://virtualenv.pypa.io/en/latest/
|
|
.. _dcos-helloworld: https://github.com/mesosphere/dcos-helloworld
|
|
.. _setup: https://github.com/mesosphere/dcos-helloworld#setup
|
|
.. _installation instructions: http://beta-docs.mesosphere.com/install/cli/
|
|
.. _Mesosphere docs website: http://beta-docs.mesosphere.com/using/cli/
|
|
.. _automated TeamCity build: https://teamcity.mesosphere.io/viewType.html?buildTypeId=ClosedSource_DcosCli_PushToPyPI
|
|
.. _PEP-440 version scheme: https://www.python.org/dev/peps/pep-0440/
|
|
.. _dcos: https://pypi.python.org/pypi/dcos
|
|
.. _dcoscli: https://pypi.python.org/pypi/dcoscli
|
|
.. _publish_to_pypi.sh script: https://github.com/mesosphere/dcos-cli/blob/master/bin/publish_to_pypi.sh
|
|
.. _mesosphere/install-scripts: https://github.com/mesosphere/install-scripts
|