Tool to facilitate and accelerate Flex operations.
Project description
FTBX - FLEX TOOLBOX
Just trying to make flex operations faster for all teams.
Table of Contents
Bug/Feature Bounty Hunters
Bounty Hunter | Bugs found | Features suggested | PR merged | Bounties |
---|---|---|---|---|
Elouan GOUINGUENET | 1 | 5 | 1 | 7 |
Guillaume GAY | 1 | 2 | 0 | 3 |
Gustavo BONASSO | 1 | 0 | 1 | 2 |
Hugo TALBOT | 0 | 1 | 1 | 2 |
Julius SANTUA | 0 | 1 | 0 | 1 |
Rémi MARCHAND | 1 | 0 | 0 | 1 |
TOTAL | 4 | 8 | 3 | 15 |
See HUNT.md for full history
REQUIREMENTS
Git (click here to download)
Python 3.11 (click here to download)
INSTALLATION
1. Windows
-
install Python (link above)
-
clone the repo, install requirements and run ftbx init
git clone git@bitbucket.org:ooyalaflex/flex-toolbox.git
cd flex_toolbox
pip install -r requirements.txt
python ftbx.py init
- add
path\to\toolbox
to yourPath
environment variable, example:C:\Users\dvdna\PycharmProjects\flex_toolbox
[OPTIONAL]
- If you want to be able to render workflow graphs as PNG, please download GraphViz and update
variables.yml
as follows:
render_workflow_graph: True
2. Linux
- install Python
sudo apt-get install python3-pip
- clone the repo, install requirements and run ftbx init
git clone git@bitbucket.org:ooyalaflex/flex-toolbox.git
cd flex_toolbox
pip install -r requirements.txt
python3 ftbx.py init
[OPTIONAL]
- If you want to be able to render workflow graphs as PNG, please download GraphViz and update
variables.yml
as follows:
render_workflow_graph: True
3. macOS
- install Python
brew install python
- clone the repo, install requirements and run ftbx init
git clone git@bitbucket.org:ooyalaflex/flex-toolbox.git
cd flex-toolbox
python3 -m pip install -r requirements.txt
python3 ftbx.py init
[OPTIONAL]
- If you want to be able to render workflow graphs as PNG, please download GraphViz and update
variables.yml
as follows:
render_workflow_graph: True
USAGE
You can use the flag --help
with any command to show the command arguments (see below).
ftbx --help
# output
arguments:
Tools
init Initialize Flex ToolBox (multi-OS)
connect Connect to a Flex env (url, username)
env Show available environments and default environment
setup Download the documentation and SDK for a given Flex version
query Query (GET, POST, PUT) an environment with or without payload (file or command line arguments)
list List (to CSV & JSON) config items from an environment, with filters and post-filters
pull Pull (files & folders) config items from an environment, with filters and post-filters
create Create a config item within an environment if no item with same name already exist
push Push (create or update) config items to an environment
restore Restore config items to a previous point in time
compare Compare config items against several environments
retry Retry or bulk retry config item instances within an environment
launch Launch a config item instance within an environment
ftbx retry --help
# output
usage: ftbx.py retry [-h] [--from FROM_] [--filters [FILTERS ...]] [--file FILE] {jobs,workflows}
positional arguments:
{jobs,workflows} Config item
optional arguments:
-h, --help show this help message and exit
--from FROM_ Environment to retry from
--filters [FILTERS ...]
Filters to apply
--file FILE File containing items to retry
Update
ftbx update
This command fetches the latest version of the toolbox.
Connect
ftbx connect <env_url_or_alias> <username> --alias <env_alias>
options:
--alias [String]: alias to set for the environment (ex: wb-stg for warner brother STG)
This command does 4 things:
- input you to enter password in hidden characters
- check connection against the env with url, username and password
- add environment credentials to your environments.json if successful (encrypted)
- set the environment as your default environment if successful
If you're looking for how to connect to self-signed environments, see here.
1. Connect to a new environment
# connect without showing password (will prompt you to input password and hide characters)
ftbx connect "https://devstaging.flex.daletdemos.com" "username" --alias "devstaging"
# connect with plain password
ftbx connect "https://devstaging.flex.daletdemos.com" "username" "my_password" --alias "devstaging"
# OUTPUT
STATUS: Connection successful (0.267 seconds)
DEFAULT ENVIRONMENT: https://master.cs-sandbox.flex.cs.dalet.cloud [cs-sandbox-ovh-flex-config] as masteruser
2. Connect to a known environment (must be in environments.json
)
# Full URL
ftbx connect "https://devstaging.flex.daletdemos.com"
# Alias
ftbx connect "devstaging"
# OUTPUT
STATUS: Connection successful (0.267 seconds)
DEFAULT ENVIRONMENT: https://master.cs-sandbox.flex.cs.dalet.cloud [cs-sandbox-ovh-flex-config] as masteruser
3. Display available default environments
ftbx env
# OUTPUT
DEFAULT ALIAS URL USERNAME
X cs-sandbox-ovh-flex-config https://master.cs-sandbox.flex.cs.dalet.cloud masteruser
devstaging.flex.daletdemos.com https://devstaging.flex.daletdemos.com dnaisse
wb-dev https://portal.dev.archive.warnerbros.com dnaisse
wb-stg https://vault.stg.archive.warnerbros.com dnaisse
wb-prod https://vault.archive.warnerbros.com dnaisse
master.firstmedia.ooflex.net https://master.firstmedia.ooflex.net masteruser
4. Connect to self-signed environments
Environments deployed with a self-signed certificate are not trusted by default. In order to trust this certification authority, set the environment variable REQUESTS_CA_BUNDLE
to the path to the certificate of the root certification authority. Like:
# POSIX
export REQUESTS_CA_BUNDLE=/path/to/cert
# Windows - PowerShell
Set-Item Env:REQUESTS_CA_BUNDLE "path\to\cert"
Download Flex root certificate authority certificate
This can be done with most web browser. But here is a command for POSIX system.
echo quit | openssl s_client -showcerts -servername "devstaging.flex.daletdemos.com" -connect devstaging.flex.daletdemos.com:443 > cacert.pem
Setup (optional)
ftbx setup <flex_version>
This command will download the API documentation and the SDK for the specific Flex version.
- API documentation will go in
docs/
- SDK (.jar) will go in
sdks/
Once the SDK is downloaded, you simply have to add it to your modules in your favorite IDE.
Note: you have to be connected to the
dlt-fw-uk-UDP4-1120-full-config
VPN to be able to retrieve the SDK.
1. Setup
ftbx setup "2022.5.7"
# OUTPUT
Version: 2022.5.7 (2022.5.x)
DOCUMENTATION: 2022.5.7.yml has been downloaded to docs/2022.5.7.yml
# if you are not connected to the VPN
/!\ Failed to download the sdk. Please connect to the dlt-fw-uk-UDP4-1120-full-config VPN /!\
# if you are connected to the VPN
SDK: flex-sdk-external-5.2.10.9.jar has been downloaded to sdks/flex-sdk-external-5.2.10.9.jar.
Raw Queries
ftbx query <method> <long_or_short_query>
options:
--from [String] environment to query if not default environment
--payload [String] path to payload (JSON) file or payload arguments --stdout [Boolean - default:False] print the query response in the terminal (does not disable writing to query.json)
This command queries any env (without the need of setting up headers etc...) and stores the result in a query.json file.
1. Query absolutely everything
# GET (commands below are the same)
# Default env
ftbx query GET "actions/410"
# Full url
ftbx query GET "https://master.cs-sandbox.flex.cs.dalet.cloud/api/actions/410"
# Env alias
ftbx query GET "actions/410" --from "cs-sbx"
# Print query response to terminal
ftbx query GET "actions/410" --stdout
# POST/PUT (same args as above, plus --payload)
ftbx query PUT "actions/410/configuration" --payload "payload.json"
# Cancel a failed job with command line arguments
ftbx query POST "jobs/1213/actions" --payload "action=cancel"
# OUTPUT
Performing [GET] https://master.cs-sandbox.flex.cs.dalet.cloud/api/actions;limit=10...
Result of the query has been saved in query.json for your best convenience.
List items
ftbx list <config_item>
options:
--from [String]: environment to query if not default environment
--filters [String(s)]: filters to apply, that are used directly within the query (see available filters here)
--post-filters [String(s)]: post retrieval filters, that are applied after query (operators: '!=', '!', '>=', '<=', '', '=', '<', '>')
--name [String]: filename of the output file
This command queries any env and displays the main info of the requested items, as well as the requested post_filters values. A folder and two files will then be created:
lists/
<timestamp>_<env_alias>_<config_item>_<filters>_<post-filters>.json
<timestamp>_<env_alias>_<config_item>_<filters>_<post-filters>.csv
1. List anything
# List all actions
ftbx list actions
# List all assets with fql
ftbx list assets --filters "fql=(mimetype~mp4)" --name "mp4Assets"
# List 5 jobs in a failed status
ftbx list jobs --filters "status=Failed" "limit=5" --name "failedJobs"
# List scripts that contains "createJob"
ftbx list actions --filters "type=script" --post-filters "configuration.instance[text]~createJob"
# List jobs for which the last (-1) history message is an error message containing "getName()" in its stackTrace
ftbx list jobs --filters "name=basic-long-running-action" --post-filters "history.events[-1].stackTrace~getName()"
# List all actions with concurrency > 0 from default env
ftbx list actions --post-filters "concurrencyJobsLimit>0" --name "jobsWithConcurrencyLimit"
# List workflows that completed, and get some metadata fields from the asset the workflow was on
ftbx list workflows --filters "name=my_workflow" "status=Completed" --post-filters "asset.metadata.instance.general-info.sha1!=None" "asset.fileInformation.currentLocation!=None"
# List all workflows in a corrupted state
ftbx list workflows --filters "status=Running" --post-filters "jobs.jobs[-1].status!=Running"
# List events of type 'Login Failed' from April 1, 2024 to May 14, 2024
ftbx list events --filters "eventType=Login Failed" "from=01 Apr 2024" "to=14 May 2024"
Note: FQL search has a max number of results of 10 000, so if you need any more than that, you will have to split your FQL search in multiples other ones.
# OUTPUT
Performing [GET] https://portal.dev.archive.warnerbros.com/api/actions;type=script;limit=10...
Retrieving actions: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.46it/s]
Retrieving actions []: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10/10 [00:00<?, ?it/s]
name id type.name pluginClass
1 action-modified-test-script 1874308 script tv.nativ.mio.plugins.actions.script.GroovyScriptCommand
2 create-placeholder-sequence-group 1856453 script tv.nativ.mio.plugins.actions.script.GroovyScriptCommand
3 delete-asset-from-bm-event-handler 1856600 script tv.nativ.mio.plugins.actions.script.GroovyScriptCommand
4 prepare-delete-udo 2026696 script tv.nativ.mio.plugins.actions.jef.JEFActionProxyCommand
5 sc-create-collection 1863345 script tv.nativ.mio.plugins.actions.jef.JEFActionProxyCommand
6 sc-sharing-collection 1863346 script tv.nativ.mio.plugins.actions.jef.JEFActionProxyCommand
7 test 2338482 script tv.nativ.mio.plugins.actions.script.GroovyScriptCommand
8 update-gatorsky-to-in 1856601 script tv.nativ.mio.plugins.actions.script.GroovyScriptCommand
9 wamo-purge-trigger 1917236 script tv.nativ.mio.plugins.actions.script.GroovyScriptCommand
10 wamo-query-aws-sign 1837898 script tv.nativ.mio.plugins.actions.script.GroovyScriptCommand
Results of the query have been saved as list.json for your best convenience.
Pull items
ftbx pull <config_item>
options:
--from [String(s)]: environments to pull from if not default environment
--filters [String(s)]: filters to apply, that are used directly within the query (see available filters here)
--with-dependencies [Boolean - default:False]: whether to retrieve all the items dependencies (ex: workflows of launch actions etc..)
--post-filters [String(s)]: post retrieval filters, that are applied after query (operators: '!=', '>=', '<=', '~', '=', '<', '>')
This command queries any env and locally creates folders/files for the requested items. Structure will be in the following format:
<config_item>/
<item_name>/
_object.json
: main config of the item<item_property>.json
: item properties (ex: configuration, variables, status..)script.groovy
: groovy file with code if any (actions etc...)body.html
: html file with html code if any (message templates etc...)
1. Pull anything
# Pull **ALL** actions
ftbx pull actions # default env
ftbx pull actions --from "wb-stg"
# Pull actions matching filters
ftbx pull actions --filters "name=set-asset-metadata" --from "wb-stg"
ftbx pull actions --filters "id=309" # default env
ftbx pull actions --filters "enabled=true" # default env
ftbx pull actions --filters "type=script" --from "wb-stg"
ftbx pull actions --filters "type=script" "enabled=true" # default env
# Pull **ALL**
ftbx pull all
ftbx pull all --from "wb-stg"
# Pull env actions with dependencies
ftbx pull actions --with-dependencies # default env
# Pull all actions where script contains "context.asset.id"
ftbx pull actions --post-filters "configuration.instance[text]~context.asset.id"
# Pull workflow definitions with dependencies
ftbx pull workflowDefinitions --filters "name=ingest-workflow" --with-dependencies
# Pull actions from several envs at the same time
ftbx pull actions --from "wb-dev" "wb-stg" "wb-prod" --filters "name=set-asset-metadata"
Create items
ftbx create <config_item> <plugin> <item_name>
options:
--in [String] environment to create the item in
This command creates templated items in the destination environments.
1. Create items
# Create a script action in default environment
ftbx create actions script "set-asset-metadata"
# Create a script action in a specific environment
ftbx create actions script "set-asset-metadata" --in "wb-stg"
# Create a decision action
ftbx create actions decision "check-asset-status" --in "wb-stg"
# Create a launchWorkflow wizard
ftbx create wizards launchWorkflow "launch-my-workflow"
Push items
ftbx push <config_item> <item_name>
options:
--from [String] environment to push from if not default environment
--to [String(s)] environments (yes, several at the same time is possible) to push to if not default environment
--push-to-failed-jobs [Boolean or String - default:False] whether to update and restart failed jobs if item is an action. If a string is provided, it must be the path to either a .CSV or .JSON (see examples in 1.)
--with-dependencies [Boolean or String - default: False] whether to also push the item dependencies
--include-resources [Boolean or String - default: False] /!\ whether to also push resource configurations, this will overwrite the corresponding destination environment resource configurations /!\
--retry [Boolean or String - default: False] whether to retry the item you are pushing (jobs, workflows...)
--listen [Boolean or String - default: False] whether to listen to the item you are pushing (jobs)
This command pushes local items to the destination environments. Process is as shown below:
- check if item exists locally
- yes: continue
- no: stop
- check if item exists in the destination environment
- yes: pull to
<item_name>/backup/
in case you break something - no: create it in destination environment
- yes: pull to
- push updated item properties (ex: configuration.json, script.groovy etc..)
- [OPTIONAL] push item dependencies if --with-dependencies was given
- pull updated items from the destination environment for verification purposes
- [OPTIONAL] retry given failed jobs with new configuration if --retry
- [OPTIONAL] listen to a retried job and have the logs in your terminal
- CSV (same as .csv file resulting from
ftbx list
)
CSV file must contain at least the "id" column, the number/name/order of the other columns doesn't matter.
id | other column name | other column status |
---|---|---|
238 | job1 | Failed |
239 | job2 | Failed |
240 | job3 | Failed |
- JSON (same as .json file resulting from
ftbx list
)
JSON file must contain a dict with an "id" key for each instance, the number/name/order of the other keys doesn't matter.
{
"failed_job_1": {"id": 238, "other_key_1": "..."},
"failed_job_2": {"id": 239, "other_key_1": "..."},
"failed_job_3": {"id": 240, "other_key_1": "..."},
...
}
1. Push anything
# Push action to an env
ftbx push actions check-end-node-wf # from default env to default env
# Push job and retry it (yes, you can pull jobs directly and tweak their code in your IDE)
ftbx push jobs 294036 --retry
# Push job, retry it but also LISTEN to it (logs will appear in your terminal)
ftbx push jobs 294036 --retry --listen
# Push updated action to **ALL** corresponding failed jobs and retry them
ftbx push actions "check-end-node-wf" --push-to-failed-jobs
# Push updated action to failed jobs contained in .CSV or .JSON and retry them
ftbx push actions "check-end-node-wf" --push-to-failed-jobs "failed_jobs.csv"
ftbx push actions "check-end-node-wf" --push-to-failed-jobs "failed_jobs.json"
# LIST + PUSH with RETRY flow: push & retry failed jobs created after given date
ftbx list jobs --filters "name=check-end-node-wf" "createdFrom=20 Dec 2023"
ftbx push actions "check-end-node-wf" --push-to-failed-jobs "list.json"
ftbx push actions "check-end-node-wf" --push-to-failed-jobs "list.csv"
# Push (create, or update) action from wb-dev to wb-stg AND wb-prod (yes)
ftbx push actions "set-asset-metadata" --from "wb-dev" --to "wb-stg" "wb-prod"
# Push/update workflow definition WITHOUT updating the resources configuration
ftbx push workflowDefinitions "Get Or Compute Asset Checksum" --from "templates" --to "cs-sandbox-ovh-flex-config" --with-dependencies
# Push workflow definition with ALL its dependencies (actions, resources...)
ftbx push workflowDefinitions "Get Or Compute Asset Checksum" --from "templates" --to "cs-sandbox-ovh-flex-config" --with-dependencies --include-resources
Restore items
ftbx restore <config_item> <item_name> <timestamp_or_backup_name>
This command restores an item from a backup (every push generates a backup) in case you break something.
1. Restore backup (in config_item/item_name/backup)
ftbx restore actions set-tech-metadata-dpx "2023-10-10 15h53m43s"
Compare items
ftbx compare <config_item> <list_of_envs>
options:
--filters [String(s)]: filters to apply, that are used directly within the query (see available filters here)
This command compares items from different environments. The first environment provided in the list is always the reference environment. The list of differences will then be saved in a compare_<env1>_<env2>_.../
folder with a TSV file for each item (no file if no differences).
1. Compare items
# Compare action "check-end-node-wf" between wb-dev, wb-stg and wb-prod
ftbx compare actions "wb-dev" "wb-stg" "wb-prod" --filters "name=check-end-node-wf"
# Compare **ALL** actions between wb-dev, wb-stg and wb-prod
ftbx compare actions "wb-dev" "wb-stg" "wb-prod"
# OUTPUT
Performing [GET] https://vault.stg.archive.warnerbros.com/api/metadataDefinitions;name=Asset;limit=1...
Retrieving 1 metadataDefinitions: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 3.83it/s]
Retrieving metadataDefinitions ['definition']: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.53it/s]
Performing [GET] https://vault.archive.warnerbros.com/api/metadataDefinitions;name=Asset;limit=1...
Retrieving 5 metadataDefinitions: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 2.51it/s]
Retrieving metadataDefinitions ['definition']: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:01<00:00, 4.51it/s]
Comparing items between ['wb-stg', 'wb-prod']: 100%|████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 139.47it/s]
Result of the comparison (if there are any differences) have been saved in compare_wb-stg_wb-prod/metadataDefinitions/<item_name>.tsv for your best convenience.
Retry items
ftbx retry <config_item> <options>
options:
--filters [String(s)]: filters to apply, that are used directly within the query (see available filters here)
--from [String]: environment alias if not default
--file [String]: JSON or CSV file to take as input
This command bulk retries job/workflow instances within a Flex environment, either from a query or from JSON/CSV files (see formats below).
- CSV (same as .csv file resulting from
ftbx list
)
CSV file must contain at least the "id" column, the number/name/order of the other columns doesn't matter.
id | other_column_name | other_column_status |
---|---|---|
238 | job1 | Failed |
239 | job2 | Failed |
240 | job3 | Failed |
- JSON (same as .json file resulting from
ftbx list
)
JSON file must contain a dict with an "id" key for each instance, the number/name/order of the other keys doesn't matter.
{
"failed_job_1": {"id": 238, "other_key_1": "..."},
"failed_job_2": {"id": 239, "other_key_1": "..."},
"failed_job_3": {"id": 240, "other_key_1": "..."},
...
}
1. Retry instances
# "status=Failed" is applied by the command by default
# retry 5 failed "untar-frames" jobs with query
ftbx retry jobs --filters "name=untar-frames" "limit=5"
# retry all failed "untar-frames" jobs
ftbx retry jobs --filters "name=untar-frames"
# retry **ALL** failed jobs/workflows
ftbx retry jobs
ftbx retry workflows
# retry all failed jobs from a CSV file (CSV file must contain the "id" column)
ftbx retry jobs --file "failed_jobs.csv"
# retry all failed workflows from a JSON file (JSON file must be made of a dict for each instance, with a "id" key within each dict)
ftbx retry workflows --file "failed_workflows.json"
# LIST + RETRY flow
ftbx list jobs --filters "status=Failed" "name=untar-frames" --name "list" # this will create a JSON and CSV file with the failed items
ftbx retry jobs --file "lists/list.json" # same as below
ftbx retry jobs --file "lists/list.csv" # same as above
Launch instances & custom scripts
ftbx launch <config_item> <item_name> <options>
options:
--in [String]: environment alias if not default
--params [String(s)]: params to use for the launched instance (see available parameters here)
--from-file [String]: JSON file to take as input (contained values will replace --params)
--use-local [Boolean - default: False]: whether to push the local config before launching the instance
--listen [Boolean or String - default: False] whether to listen to the item you launched (jobs)
This command allows you to launch config instances (jobs, workflows) with custom parameters, including scripts with or without asset in context.
To be able to run any custom local script within an environment, please create a script in the destination environment with a unique name first (ex: ftbx-script-dnaisse-wb-dev
). The flow will be explained in 2.
1. Launch instances
# launch a check-end-node-wf job
ftbx launch jobs "check-end-node-wf"
# launch a check-end-node-wf job in wb-dev
ftbx launch jobs "check-end-node-wf" --in "wb-dev"
# launch and listen to a check-end-node-wf in wb-dev
ftbx launch jobs "check-end-node-wf" --in "wb-dev" --listen
# launch a check-end-node-wf on asset id 809, in workspace id 303
ftbx launch jobs "check-end-node-wf" --params "assetId=809" "workspaceId=303"
# launch a check-end-node-wf on asset id 809 from file launch_config.json
# launch_config.json:
# {
# "assetId"=809,
# "workspaceId"=303
# }
ftbx launch jobs "check-end-node-wf" --from-file "launch_config.json"
# launch a check-end-node-wf with your local configuration on asset id 809
ftbx launch jobs "check-end-node-wf" --params "assetId=809" --use-local
2. Launch custom local scripts
To be able to run any custom local script within an environment, please create a script in the destination environment with a unique name first (ex: ftbx-script-dnaisse-wb-dev
). This script will be used as an ultra-configurable, multi-purpose action.
2.1. Same action, different code, different assets
# Example: I want to set some metadata on asset id 809
# 1. I update the code of my local ftbx-script-dnaisse-wb-dev to do what I want
# wb-dev/actions/ftbx-script-dnaisse-wb-dev/script.groovy:
# import com.ooyala.flex.plugins.PluginCommand
#
# class Script extends PluginCommand {
# def execute() {
# assetId = context.asset.id
# flexSdkClient.assetService.setAssetMetadata(assetId, <someMetadata>)
# }
# }
# 2. I launch my local script on the asset, here the --use-local is the key
ftbx launch jobs "ftbx-script-dnaisse-wb-dev" --params "assetId=809" --use-local
# 3. I now want to do something else on asset 1320, I update my local action again
# wb-dev/actions/ftbx-script-dnaisse-wb-dev/script.groovy:
# import com.ooyala.flex.plugins.PluginCommand
#
# class Script extends PluginCommand {
# def execute() {
# <do something else>
# }
# }
# 4. I launch my local script again, on a different asset
ftbx launch jobs "ftbx-script-dnaisse-wb-dev" --params "assetId=1320" --use-local
2.2. Run a script on an asset and retry it until you get it right
# Example: I want to set some metadata on asset id 809
# 1. I update the code of my local ftbx-script-dnaisse-wb-dev to do what I want
# wb-dev/actions/ftbx-script-dnaisse-wb-dev/script.groovy:
# import com.ooyala.flex.plugins.PluginCommand
#
# class Script extends PluginCommand {
# def execute() {
# assetId = context.asset.id
# flexSdkClient.assetService.setAssetMetadata(assetId, <someMetadata>)
# assert <myMetadataUpdateWorkedCorrectly>
# }
# }
# 2. I launch my local script on the asset
ftbx launch jobs "ftbx-script-dnaisse-wb-dev" --params "assetId=809" --use-local
# However, let's say my script fails because my code is incorrect
# 3. Then, I update and push the code until it succeeds
ftbx push jobs 308 --retry --listen # fails too, I update and push the code again
ftbx push jobs 308 --retry --listen # fails too, I update and push the code again
ftbx push jobs 308 --retry --listen # finally works!
# 4. I can now copy the script to a new action since I know my code works
Workflow Designer
ftbx workflowDesigner <workflow_name> <options>
options:
--in [String]: environment alias if not default
This command launches the workflow designer for the corresponding workflow in a new browser window.
1. Open workflow designer
# open workflow designer in default environment
ftbx workflowDesigner "Get or compute asset checksum"
# open workflow designer in wb-stg environment
ftbx workflowDesigner "Get or compute asset checksum" --in "wb-stg"
Metadata Designer
ftbx metadataDesigner <options>
options:
--in [String]: environment alias if not default
This command launches the metadata designer in a new browser window.
1. Open metadata designer
# open metadata designer in default environment
ftbx metadataDesigner
# open metadata designer in wb-stg environment
ftbx workflowDesigner --in "wb-stg"
ERRORS & FIXES
Self-signed certificates
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)
Fix: see 4. Connect to self-signed environments
CONTACTS
David NAISSE - dnaisse@dalet.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ftbx-0.1.dev281.tar.gz
.
File metadata
- Download URL: ftbx-0.1.dev281.tar.gz
- Upload date:
- Size: 203.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7327557dbb9dbac793522b76badaecb32b41bf49bd77e3014937c33084f51127 |
|
MD5 | c8b1cff183d7ec4a846a1f15f445bdc3 |
|
BLAKE2b-256 | 680441d2f5b02c20379f95050fa43f944027f981cd4bd0e6db8361b0a4c6763d |
File details
Details for the file ftbx-0.1.dev281-py3-none-any.whl
.
File metadata
- Download URL: ftbx-0.1.dev281-py3-none-any.whl
- Upload date:
- Size: 51.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b81edc3de54d6913066f0135b96a4c6be1b570c95d9f362c0ca402f8170ee8a |
|
MD5 | c0629c0d9d33d62f1946f1faf753b5c8 |
|
BLAKE2b-256 | 34a39ed5ec4e5628d0066997faa4a03cd7c0e61d370a84916673a1b721175f3b |