Kenneth Lareau, Karandeep Nagra
TDS is a deployment system developed at if(we) with a database backend and a command line frontend. The primary application is written in Python and integrates with several other applications. MySQL was used as the database engine, and SQLAlchemy as the object-relational mapper, with Alembic used for SQLAlchemy schema migrations.
WARNING: Consider this code EXPERIMENTAL. It has not been fully prepared for use outside If(we) though we will be working on this. If you have any questions or suggestions, please email [email protected]
To install all necessary dependencies and TDS:
$ ./setup.py install
TDS requires python 2.7. Operation under python 3.x would be nice, but that is not attempted yet.
See requirements.txt
. To install (NOTE: setup.py
will do this for you):
$ pip install -r requirements.txt
- MySQL development library
- Debian:
sudo apt-get install libmysqlclient-dev
- RHEL:
sudo yum install mysql-devel
- Debian:
- LDAP libraries:
- Debian:
sudo apt-get install libldap2-dev libsasl2-dev
- RHEL:
sudo yum install openldap-devel
- Debian:
First, install development requirements
(again, setup.py
automatically does this for you):
$ pip install -r requirements-dev.txt
Note: many unit tests currently fail; unit testing does not seem to have kept up with development.
The following command will run all unit tests:
$ ./run_tests.py
Note: feature tests depend on infrastructure that no longer exists. To run feature tests, the test environment needs to be modified to (at least) run a local mysql server on demand.
The following command will run all Behave tests:
$ behave
You may specify a set of tags to restrict which feature tests to run:
Tag | Specification |
---|---|
no_db | No database queries |
email_server | Set up and use an email server mimic |
jenkins_server | Set up and use a Jenkins server mimic |
hipchat_server | Set up and use a HipChat server mimic |
wip | Works in progress |
delay | Commands with timed delays |
- ./.jenkins/
- ./doc/ - Documentation
- ./etc/
- ./features/ - Feature tests
- ./pkg/
- ./share/
- ./tds/ - Models, views, and controllers for TDS application.
- ./tests/ - Unit tests
- ./requirements-dev.txt - Development and testing PyPI dependencies
- ./requirementx.txt - Deployment PyPI dependencies
- ./setup.py - Complete setup script
Definitions of terms used in this documentation and in source are listed below. Controller entries may be incomplete, as some functions related to object types are spread across the application.
Term | Definition | Examples | Model - `tds.model.` | Controller - `tds.commands.` | |
---|---|---|---|---|---|
actor | `actor.Actor` | ||||
application | `application.Application` | ||||
app type | |||||
deploy target | Anything on which software can be deployed | The server SiteOps with IP 10.0.1.10; the servers SiteOps1, SiteOps2, and SiteOps3 | `deploy_target.DeployTarget` | ||
deployment | A deployed instance of software | TDS v1.5 installed on the server SiteOps | `deployment.Deployment` | `deploy.DeploymentController` | |
package | A collection of software, commands for installation, dependencies, documentation, etc. | Source and installation commands for Apache, mod_ssl, node.js, and MySQL client | `package.Package` | `package.PackageController` | |
project | An ongoing or completed endeavor to create (or implement) new software | A new project to efficiently manage software deployment, named TDS | `project.Project` | `project.ProjectController` | |
repository | N/A | `repository.RepositoryController` |
See roadmap.md for details on the release history and planned development of TDS.
README.md: Copyright 2016 Ifwe Inc.
README.md is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
You should have received a copy of the license along with this work. If not, see http://creativecommons.org/licenses/by-sa/4.0/.