Browbeat as a Python package

Registered by Justin Kilpatrick on 2017-04-05

This is a specification for Browbeat's behavior as a python package. With the goal of deciding on supported workflows and functionality.

Blueprint information

Status:
Not started
Approver:
Joe Talerico
Priority:
Undefined
Drafter:
Justin Kilpatrick
Direction:
Needs approval
Assignee:
Justin Kilpatrick
Definition:
Drafting
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

Browbeat has a couple of major components.

1. Browbeat's python components for running and indexing a number of benchmarks
2. Browbeat's Ansible components for automating the setup of various utilities and monitoring tools.
3. Browbeat's essential Ansible components required for installing or using Browbeat in any serious way.

For a workable Browbeat pip package, I propose we define Browbeat's essential Ansible components as the install, collectd, gather, and other metric setup playbooks. The rest of the playbooks should be moved to a setup tools repo.

After that we need to resolve the problem of bootstrapping Browbeat once installed by pip. On first run or command `browbeat install` browbeat needs to detect the cloud type and run the correct setup playbook. At first I foresee this being TripleO only but we need to have infrastructure to add other bootstrapping routines.

Some of the problems for setup are, where to place the virtual environments, where to place the results folder, where to place the ansible hosts and ssh config files and where to look for a browbeat config file. Finally we need to decide how each of those functions interacts with Python virtual environments and if we want to require, support, or avoid virtualenvironments. For example $HOME/.browbeat is appropriate for a system level package to place local configuration data, but not a package in a virtual environment.

My current proposal is for browbeat to look for a file browbeat-config.yml in the current working directory or a specified path. That config then specifies where all the various files and virtual environments will need to be generated. If those files are not already there it will run the install process before running the benchmark.

For the install process configuration is a serious issue if we're going to continue to rely on Ansible, we will need to refactor the essential Ansible playbooks to accommodate being configured entirely from the browbeat-config.yml and being called only from python. That is unless we want to have a workflow where the user starts the install process, gets told to go configure a group vars file somewhere and then tell browbeat to resume the install process.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.