emodpy.bamboo_api_utils module¶
-
emodpy.bamboo_api_utils.
bamboo_connection
()¶
-
class
emodpy.bamboo_api_utils.
BambooConnection
¶ Bases:
object
Bamboo API config and basic functionality/connectivity wrapper.
Automatically probes the most likely endpoint locations (with and without https, with and without port numbers).
Important functions:
login: logs into the bamboo api, caches the login token so you don’t have to pass creds for every req. in a session
get_bamboo_api_url: translate a relative API URL into a fully qualified URL
normalize_url: detect whether a URL is relative or not, translate relative URLs to fully qualified ones
make_get_request: makes a request to the specified API url, adds some convenient error and login handling
download_file: downloads a file from the specified artifacts url to a location on disk
-
property
server
¶ str: Keeps track of a single instance of the server base url. (e.g. http://idm-bamboo:8085)
str: Automatically load and instance the login session cookie jar.
-
get_server_url
(ssl: bool = False, useport: bool = False) → str¶ Get a particular variant of the server url w/ or w/o ssl and port (e.g. False/False -> http://idm-bamboo)
- Parameters
ssl (bool) – whether to use ssl
useport (bool) – whether to use the port
- Returns
endpoint url
- Return type
str
-
find_server
() → str¶ Explore all possible server urls, return the first one found to exist.
- Returns
server url
- Return type
str
-
url_exists
(url: str) → bool¶ Try a simple get request given an endpoint url, return whether it was successful (code 200).
- Parameters
url (str) – url to issue a test request to
- Returns
whether or not a request to the url succeeds (w/ status 200)
- Return type
bool
File where bamboo session cookie is stored.
- Returns
fully qualified file path of session cookie file
- Return type
str
Load api login session cookies from disk.
- Returns
session cookie jar
- Return type
requests.cookies
Write post-login cookies for session to disk.
-
get_bamboo_url
(relative_url: str) → str¶ Add bamboo server, port, and protocol to bamboo url.
- Parameters
relative_url (str) – relative url (artifact link or api url)
- Returns
fully qualified url
- Return type
str
-
get_bamboo_api_url
(relative_url: str, json: bool = False, params: dict = {}) → str¶ Get fully qualified bamboo api url from a relative url w/ given json mode and appending all parameters.
- Parameters
relative_url (str) – api url (e.g. project/<project-key>)
json (bool) – whether to get results in json format (otherwise, default is xml)
params (dict) – name/value dictionary of query parameters
- Returns
fully qualified url that a request can be issued against
- Return type
str
-
save_credentials
(username: str, password: str)¶ Save bamboo api login credentials using keyring.
- Parameters
username (str) – bamboo api login username (e.g. somebody@idmod.org)
password (str) – bamboo api login password
-
ensure_logged_in
()¶ Check if a login session exists using saved cookies, if not login using keyring stored creds.
-
login_session_exists
() → bool¶ Test whether an existing session cookie exists and an active login session exists.
- Returns
whether an active login session exists
- Return type
bool
-
login
(username: str = None, password=None) → bool¶ Login to the bamboo api. If username or password are not provided, use stored credentials from keyring.
- Parameters
username (str) – bamboo api login username (e.g. somebody@idmod.org)
password (str) – bamboo api login password
- Returns
success/failure
- Return type
bool
-
normalize_url
(url: str) → str¶ Determine whether a url is relative or fully qualified, translate relative urls to fully qualified versions.
- Parameters
url (str) – relative or fully qualified url
- Returns
fully qualified url
- Return type
str
-
make_get_request
(url: str, retries: int = 3) → requests.models.Response¶ Make a get request against the bamboo server.
- Parameters
url (str) – relative or fully qualified url
- Returns
request object returned from requests.get()
- Return type
requests.Response
-
make_api_get_request
(relative_url: str, json: bool = False, params: dict = {}) → requests.models.Response¶ Translate relative api url to the fully qualified bamboo api url, make a get request against it.
- Parameters
relative_url (str) – url relative to the bamboo api endpoint (e.g. ‘result/MYPROJ-MYPLAN/123’) to make the request against
json (bool) – whether to return results in json
params (dict) – name/value dictionary of additional parameters to pass
- Returns
request object returned from requests.get()
- Return type
requests.Response
-
download_file
(url: str, destination: str) → list¶ Download a specific artifact file (from the full artifact url provided) to disk.
Streams the download to avoid common ‘gotchas’ with downloading via http.
- Parameters
url (str) – url to download
destination (str) – destination path or filename where the artifact is to be downloaded to
- Returns
local filename of file that has been downloaded
- Return type
(str)
-
class
emodpy.bamboo_api_utils.
BuildInfo
¶ Bases:
object
A collection of methods for getting data on build results.
-
classmethod
build_passed
(plan_key: str, build_num: int) → bool¶ Determine whether a given build succeeded or not.
- Parameters
plan_key (str) – bamboo plan key (including project key)
build_num (int) – build number to retrieve results for
- Returns
whether the build succeeded
- Return type
bool
-
static
successful_build_result
(result) → bool¶ Analyze a build result json object and determine if it corresponds to a successful build
- Parameters
result – json build result
- Returns
whether the build was successful
- Return type
bool
-
static
get_build_info
(plan_key: str, index: int)¶ Retrieve the build info in json format for a given build plan with a relative index (0=latest)
- Parameters
plan_key (str) – bamboo plan key (including project key)
index (int) – index of build to retrieve info for (0=latest, 1=2nd most recent, etc.)
- Returns
build info results json
-
classmethod
get_latest_successful_build
(plan_key: str, scheduled_only: bool = True, max_iterations: int = 100)¶ Find the latest successful build within the last max_iterations builds for a given plan.
- Parameters
plan_key (str) – bamboo plan key (including project key)
scheduled_only (bool) – only count automatically run scheduled or triggered builds as successful
max_iterations (int) – maximum number of older builds to look through
- Returns
- tuple containing:
build_num (str): build number of last successful build build_info: json data structure of build info for that build
- Return type
(tuple)
-
classmethod
get_latest_build
(plan_key: str)¶ Get the build info for the most recently run build for a given plan.
- Parameters
plan_key (str) – bamboo plan key (including project key)
- Returns
- tuple containing:
build_num (str): build number of last successful build build_info: json data structure of build info for that build
- Return type
(tuple)
-
classmethod
-
class
emodpy.bamboo_api_utils.
BuildArtifacts
¶ Bases:
object
A collection of methods for finding and interacting with build artifacts.
-
ERADICATION_EXE
= 'Eradication.exe'¶
-
SCHEMA_JSON
= 'schema.json'¶
-
REPORTER_PLUGINS
= 'Reporter-Plugins'¶
-
classmethod
find_artifacts_by_name
(plan_key: str, build_num: int, artifact: str) → list¶ Find all urls for files of an artifact of a given name for a specific build.
- Parameters
plan_key (str) – bamboo plan key (including project key)
build_num (int) – build number to retrieve artifact urls for
artifact (str) – artifact name/id
- Returns
list of artifact urls that can be downloaded
- Return type
(
list
ofstr
)
-
classmethod
find_artifacts
(plan_key: str, build_num: int, artifact_list: list) → list¶ Find all urls for files of a list of artifacts for a specific build.
- Parameters
plan_key (str) – bamboo plan key (including project key)
build_num (int) – build number to retrieve artifact urls for
artifact_list (list) – list of artifact names/ids
- Returns
list of artifact urls that can be downloaded
- Return type
(
list
ofstr
)
-
classmethod
find_build_essential_artifacts
(plan_key: str, build_num: int) → list¶ Find all ‘build essential’ artifact urls (Eradication, schema, reporters) for a specific build
- Parameters
plan_key (str) – bamboo plan key (including project key)
build_num (int) – build number to retrieve artifact urls for
- Returns
list of artifact urls that can be downloaded
- Return type
(
list
ofstr
)
-
classmethod
find_all_artifacts
(plan_key: str, build_num: int) → list¶ Find all artifact urls (Eradication, schema, reporters) for a specific build
- Parameters
plan_key (str) – bamboo plan key (including project key)
build_num (int) – build number to retrieve artifact urls for
- Returns
list of artifact urls that can be downloaded
- Return type
(
list
ofstr
)
-
classmethod
find_all_artifact_names
(plan_key: str, build_num: int) → list¶ Find all artifact names (e.g. ‘Eradication.exe’) for a specific build (can be plugged into find_artifacts() to get actual urls that can be downloaded)
- Parameters
plan_key (str) – bamboo plan key (including project key)
build_num (int) – build number to retrieve artifact urls for
- Returns
list of artifact names that can be downloaded
- Return type
(
list
ofstr
)
-
classmethod
download_artifact_to_file
(plan_key: str, build_num: int, artifact, destination: str) → list¶ Download files found for a named artifact to the filepath provided.
Additional files found will be downloaded as _2, _3, _4, etc. For example, if there are 3 files for ‘Eradication.exe’ the first will be Eradication.exe, the second will be Eradication_2.exe, the third Eradication_3.exe.
- Parameters
plan_key (str) – bamboo plan key (including project key)
build_num (int) – build number to retrieve artifact urls for
artifact (list or str) – list (or string) of artifact names
destination (str) – destination path or filename where the artifact is to be downloaded to
- Returns
list of local filenames of files that have been downloaded
- Return type
(
list
ofstr
)
-
classmethod
download_artifacts_to_path
(plan_key: str, build_num: int, artifact, destination_path: str) → list¶ Download all the files for a given artifact and build to a specific folder, using their original filenames.
- Parameters
plan_key (str) – bamboo plan key (including project key)
build_num (int) – build number to retrieve artifact urls for
artifact (list or str) – list (or string) of artifact names
destination_path (str) – path to destination folder where files are to be downloaded
- Returns
list of local filenames of files that have been downloaded
- Return type
(
list
ofstr
)
-
classmethod
download_latest_good_Eradication_exe
(plan_key: str, destination: str) → str¶ Find the latest successful build for a specified plan, download the Eradication.exe artifact to a specified path.
- Parameters
plan_key (str) – bamboo plan key (including project key)
destination (str) – destination path or filename where the artifact is to be downloaded to
- Returns
build number of build that was found and had its artifact downloaded
- Return type
str
-
classmethod
download_latest_good_schema_json
(plan_key: str, destination: str) → str¶ Find the latest successful build for a specified plan, download the schema.json artifact to a specified path.
- Parameters
plan_key (str) – bamboo plan key (including project key)
destination (str) – destination path or filename where the artifact is to be downloaded to
- Returns
build number of build that was found and had its artifact downloaded
- Return type
str
-
classmethod
download_eradication_exe
(plan_key: str, build_num: str, destination: str) → str¶ Download Eradication.exe artifact from a specific build.
- Parameters
plan_key (str) – bamboo plan key (including project key)
build_num (str) – build number to download from
destination (str) – destination path or filename where the artifact is to be downloaded to
-
classmethod
make_exe_executable
(file_path: str)¶ On linux change the file permissions on a binary to make it executable
- Parameters
file_path (str) – binary file to mark as executable
-
classmethod
download_schema_json
(plan_key: str, build_num: str, destination: str) → str¶ Download schema.json artifact from a specific build.
- Parameters
plan_key (str) – bamboo plan key (including project key)
build_num (str) – build number to download from
destination (str) – destination path or filename where the artifact is to be downloaded to
-
classmethod
download_from_bamboo_url
(url: str, destination: str)¶ Download Eradication.exe/Eradication directly from bamboo url Assume you already done login
- Parameters
url –
destination (str) – destination path or filename where the artifact is to be downloaded to
- Returns
local file path that have been downloaded
- Return type
str
-
-
class
emodpy.bamboo_api_utils.
BuildPlans
¶ Bases:
object
Collection of methods for getting information on build plans.
-
static
export_spec
(plan_key: str) → str¶ Export a specific build plan to java specs.
- Parameters
plan_key (str) – bamboo plan key (including project key)
- Returns
full text of the .java file for the plan spec, if the plan was found (empty string if not)
- Return type
str
-
static
get_plans_for_project
(project_key: str) → list¶ Return a list of all the build plans for every plan in the project.
- Parameters
project_key (str) – bamboo project key
- Returns
list of plan keys for each plan that was found in the project
- Return type
(
list
ofstr
)
-
static
-
emodpy.bamboo_api_utils.
login
(username=None, password=None)¶ Pass through to BambooConnection.login()
-
emodpy.bamboo_api_utils.
save_credentials
(username, password)¶ Pass through to BambooConnection.save_credentials()