Go to file
Kevin Klues 2241600e6d task: fix some bugs in 'dcos task exec' command. (#886)
* Only set tty into raw mode for `dcos task exec` when interactive.

Previously, the terminal for 'dcos task exec' was set into raw mode
anytime the '--tty' flags was set (even if '--interactive' was not set).
This would cause the CLI to hang when '--interactive' was not set since
control characters are not interpreted by the local tty once it is set
into raw mode (they are sent to STDIN instead). Since we don't actually
stream STDIN to the remote container without '--interactive' , its safe
to leave the tty in default mode and allow the user to '^C' out of it.

This commit addresses this issue.

* Updated attach input path of 'dcos task exec'.

Previously, we would error out no matter what type of exception was
thrown while trying to establish an ATTACH_CONTAINER_INPUT session with
an agent. This would cause us to sometimes drop the output of command we
launched because it happened to complete before we made the
ATTACH_CONTAINER_INPUT call (because the command actually didn't need to
accept input and just ran to completion). We should only error
out if we we are certain that the error occurred while the container was
still running.

This commit adds logic to update this error handling properly.
2017-02-06 13:39:03 -08:00
2016-06-07 11:16:04 -07:00
2016-06-07 11:16:04 -07:00
2016-06-07 11:16:04 -07:00
2016-06-07 11:16:04 -07:00
2015-08-20 17:54:38 -07:00
2015-03-30 23:41:28 -07:00
2015-08-20 17:54:38 -07:00

DC/OS Command Line Interface

The DC/OS Command Line Interface (CLI) is a cross-platform command line utility that provides a user-friendly yet powerful way to manage DC/OS clusters.

Installation and Usage

If you're a user of DC/OS, please follow the installation instructions. Otherwise, follow the instructions below to set up your development environment.

Detailed help and usage information is available through the dcos help command and for specific subcommands through dcos <subcommand> --help.

Additional documentation for the CLI and for the DC/OS in general is available in the DCOS docs.

Parsing CLI Output

The CLI outputs either whitespace delimited tables which can be processed by all of your favourite Unix/Linux tools like sed, awk and grep, or text formatted as JSON when using the --json flag.

If using JSON, you can combine it with the powerful jq utility. The example below installs every package available in the DC/OS repository:

dcos package search --json | jq '.[0].packages[].name' | xargs -L 1 dcos package install --yes

Development Dependencies

  1. git must be installed to download the source code for the DC/OS CLI.
  2. python version 3.4.x must be installed.
  3. virtualenv must be installed and on the system path in order to install legacy subcommands. New subcommands are packaged as platform specific executable or platform specific Zip archives.
  4. win_bash must be installed if you are running this in Windows in order to run setup scripts from the Makefiles.

Setup

  1. Make sure you meet requirements for installing packages

  2. Clone git repo for the dcos cli:

    git clone git@github.com:dcos/dcos-cli.git
  3. Change directory to the repo directory:

    cd dcos-cli
  4. Create a python virtual env for the dcos project:

    make env
  5. Create a virtualenv for the dcoscli project:

    cd cli
    make env

Configure Environment and Run

  1. source the setup file to add the dcos command line interface to your PATH and create an empty configuration file:

    source bin/env-setup-dev
  2. Configure the CLI, changing the values below as appropriate for your local installation of DC/OS:

    dcos config set core.dcos_url http://dcos-ea-1234.us-west-2.elb.amazonaws.com
  3. Get started by calling the DC/OS CLI help:

    dcos help

Running Tests

Setup

Tox, our test runner, tests against Python 3.4. We have a set of tests in the dcos package (root directory) and in the dcoscli package (cli directory). When running the tests described below, change directory to one of those two and follow the instructions.

Initialization

The config integration tests use static config files. To run these tests make sure you set owner only permissions on these files:

chmod 600 cli/tests/data/dcos.toml

chmod 600 cli/tests/data/config/parse_error.toml

The node integration tests use CLI_TEST_SSH_KEY_PATH for ssh credentials to your cluster.

The ssl integration tests resolve dcos.snakeoil.mesosphere.com to test SSL certs. To run this test suite be sure to add this resolution to your /etc/hosts file:

echo "dcos/cluster/url dcos.snakeoil.mesosphere.com" >> /etc/hosts

Running

Tox will run unit and integration tests in Python 3.4 using a temporarily created virtualenv.

You can set DCOS_CONFIG to a config file that points to a DC/OS cluster you want to use for integration tests. This defaults to ~/.dcos/dcos.toml

Note that in order for all the integration tests to pass, your DC/OS cluster must have the experimental packaging features enabled. In order to enable these features the staged_package_storage_uri and package_storage_uri confiuguration paramenters must be set at cluster setup. See dcos configuration parameters for more information.

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

  1. List all of the supported test environments:

    tox --listenvs
  2. Run a specific set of tests:

    tox -e <testenv>
  3. Run a specific integration test module:

    tox -e py35-integration /test_config.py

Releasing

Releasing a new version of the DC/OS 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.

The automated build starts up three jobs to build the platform dependent executables (in Windows, OS X, and Linux).

The executables are pushed to s3 and available at https://downloads.dcos.io/binaries/cli/<platform>/x86-64/<tag>/dcos. The links to each of the platform executables and the release notes are published at: https://github.com/dcos/dcos-cli/releases/tag/<tag>

The automated build also publishes two packages to PyPI using the publish_to_pypi.sh script:

  1. dcos
  2. dcoscli

These packages are available to be installed by the DC/OS CLI installation script in the mesosphere/install-scripts repository.

Description
RETIRED, further work has moved to Debian project infrastructure
Readme 9.5 MiB
Languages
Python 89.4%
Mustache 4%
HTML 4%
Shell 2.1%
reStructuredText 0.4%
Other 0.1%