Utility to manage tags across a large number of CloudGenix sites, elements, interfaces, and Circuit Catagories.
Add, remove, or simulate (add/remove) of tags over a large number of objects!
- Supports regex matching of any key/value in CloudGenix config objects for tag action (add/remove)
- For interfaces, supports hierarchical matching of any key/value on site, element, and interface objects for tag action (add/remove)
- Active CloudGenix Account
- Python >= 2.7 or >=3.6
- Python modules:
- CloudGenix Python SDK >= 5.1.1b1 - https://github.com/CloudGenix/sdk-python
- ProgresBar2 >= 3.34.3 - https://github.com/WoLpH/python-progressbar
- Tabulate >= 0.8.3 - https://bitbucket.org/astanin/python-tabulate
MIT
- PIP:
pip install cloudgenix_tagger
. After install,do_tag
. Scripts should be placed in the Python Scripts directory. - Github: Download files to a local directory, manually run
do_tag.py
script.
- Add tag "Aaron_Likes_tags" to all sites with "Name" starting with "AUTO"
edwards-mbp-pro:cloudgenix_tagger aaron$ ./do_tags.py -T "Aaron_Likes_tags" -O sites -P "^AUTO.*" -A Working on 'sites'.. 100%|############################################################################################################################################################################################################################################################################################################################################################################################################|Time: 0:00:00 Tag Action Object Name Object Key Object Key Value Object Match Change Detail ---------------- -------- ---------------------- ------------ ---------------------- -------------- --------------------------- Aaron_Likes_tags add AUTOMATION-LAB name AUTOMATION-LAB True added: ['Aaron_Likes_tags'] Aaron_Likes_tags add Azure Central US name Azure Central US False Aaron_Likes_tags add Chicago Branch 2 name Chicago Branch 2 False Aaron_Likes_tags add New York Branch 1 name New York Branch 1 False Aaron_Likes_tags add Oracle DC name Oracle DC False Aaron_Likes_tags add Orange-Test name Orange-Test False Aaron_Likes_tags add San Francisco DC 1 name San Francisco DC 1 False Aaron_Likes_tags add Seattle Branch 3 name Seattle Branch 3 False Aaron_Likes_tags add Washington D.C. - DC 2 name Washington D.C. - DC 2 False Aaron_Likes_tags add test name test False edwards-mbp-pro:cloudgenix_tagger aaron$
- Remove tag "Aaron_Likes_tags" from all sites.
edwards-mbp-pro:cloudgenix_tagger aaron$ ./do_tags.py -T "Aaron_Likes_tags" -O sites -P ".*" -R Working on 'sites'.. 100%|############################################################################################################################################################################################################################################################################################################################################################################################################|Time: 0:00:00 Tag Action Object Name Object Key Object Key Value Object Match Change Detail ---------------- -------- ---------------------- ------------ ---------------------- -------------- ----------------------------- Aaron_Likes_tags remove AUTOMATION-LAB name AUTOMATION-LAB True removed: ['Aaron_Likes_tags'] Aaron_Likes_tags remove Azure Central US name Azure Central US True no changes required. Aaron_Likes_tags remove Chicago Branch 2 name Chicago Branch 2 True no changes required. Aaron_Likes_tags remove New York Branch 1 name New York Branch 1 True no changes required. Aaron_Likes_tags remove Oracle DC name Oracle DC True no changes required. Aaron_Likes_tags remove Orange-Test name Orange-Test True no changes required. Aaron_Likes_tags remove San Francisco DC 1 name San Francisco DC 1 True no changes required. Aaron_Likes_tags remove Seattle Branch 3 name Seattle Branch 3 True no changes required. Aaron_Likes_tags remove Washington D.C. - DC 2 name Washington D.C. - DC 2 True no changes required. Aaron_Likes_tags remove test name test True no changes required. edwards-mbp-pro:cloudgenix_tagger aaron$
- None
Version | Build | Changes |
---|---|---|
1.0.0 | b1 | Initial Release. |
edwards-mbp-pro:cloudgenix_tagger aaron$ ./do_tags.py -h
usage: do_tags.py [-h] (--add | --remove) [--simulate] --tag TAG --object
OBJECT [--interfaces-site-key INTERFACES_SITE_KEY]
[--interfaces-element-key INTERFACES_ELEMENT_KEY]
[--key KEY]
[--interfaces-site-pattern INTERFACES_SITE_PATTERN]
[--interfaces-element-pattern INTERFACES_ELEMENT_PATTERN]
--pattern PATTERN [--output OUTPUT]
[--controller CONTROLLER] [--email EMAIL]
[--password PASSWORD] [--insecure] [--noregion]
[--sdkdebug SDKDEBUG]
CloudGenix Tagger (v1.0.0)
optional arguments:
-h, --help show this help message and exit
Action:
Add or Remove Tags
--add, -A
--remove, -R
--simulate, -S Simulate and display prospective changes. Don't make
any actual modifications.
--tag TAG, -T TAG Tag to add or remove from objects.
--object OBJECT, -O OBJECT
Object to add/remove tags from. One of sites,
elements, interfaces, circuitcatagories.
--interfaces-site-key INTERFACES_SITE_KEY, -SK INTERFACES_SITE_KEY
Key in Site object to use for inclusion ('interfaces'
only). Default 'name'
--interfaces-element-key INTERFACES_ELEMENT_KEY, -EK INTERFACES_ELEMENT_KEY
Key in Element object to use for inclusion
('interfaces' only). Default 'name'
--key KEY, -K KEY Key in object to use for match. Default 'name'.
--interfaces-site-pattern INTERFACES_SITE_PATTERN, -SP INTERFACES_SITE_PATTERN
REGEX Pattern to match Site Object with for inclusion
('interfaces' only). Default '.*'
--interfaces-element-pattern INTERFACES_ELEMENT_PATTERN, -EP INTERFACES_ELEMENT_PATTERN
REGEX Pattern to match Element Object with for
inclusion ('interfaces' only). Default '.*'
--pattern PATTERN, -P PATTERN
REGEX Pattern to match Object Key value with.
--output OUTPUT Output to filename. If not specified, will print
output on STDOUT.
API:
These options change how this program connects to the API.
--controller CONTROLLER, -C CONTROLLER
Controller URI, ex.
https://api.elcapitan.cloudgenix.com
Login:
These options allow skipping of interactive login
--email EMAIL, -E EMAIL
Use this email as User Name instead of
cloudgenix_settings.py or prompting
--password PASSWORD, -PW PASSWORD
Use this Password instead of cloudgenix_settings.py or
prompting
--insecure, -I Do not verify SSL certificate
--noregion, -NR Ignore Region-based redirection.
Debug:
These options enable debugging output
--sdkdebug SDKDEBUG, -D SDKDEBUG
Enable SDK Debug output, levels 0-2
edwards-mbp-pro:cloudgenix_tagger aaron$