All Projects → OpenTelekomCloud → Otc Tools

OpenTelekomCloud / Otc Tools

Licence: cc-by-sa-4.0
(Deprecated) Simple bash/curl/jq based command line tool using the OpenStack and OTC specific REST APIs.

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to Otc Tools

otc-tools
(Deprecated) Simple bash/curl/jq based command line tool using the OpenStack and OTC specific REST APIs.
Stars: ✭ 27 (+3.85%)
Mutual labels:  openstack, deprecated
Openstack Exporter
Prometheus openstack exporter written in Golang.
Stars: ✭ 23 (-11.54%)
Mutual labels:  openstack
Mern Starter
⛔️ DEPRECATED - Boilerplate for getting started with MERN stack
Stars: ✭ 5,175 (+19803.85%)
Mutual labels:  deprecated
F5 Openstack Lbaasv1
OpenStack Neutron LBaaSv1 plugin and agent to control F5 BIG-IP devices
Stars: ✭ 6 (-76.92%)
Mutual labels:  openstack
Progit
Pro Git Book Content, 1st Edition - This content is deprecated. See 2nd edition at [progit2](https://github.com/progit/progit2)
Stars: ✭ 5,972 (+22869.23%)
Mutual labels:  deprecated
Fluent Plugin Grep
(Deprecated) Fluentd output plugin to grep messages
Stars: ✭ 17 (-34.62%)
Mutual labels:  deprecated
Ui Fabric Ios
DEPRECATED Please use the new repo
Stars: ✭ 590 (+2169.23%)
Mutual labels:  deprecated
Esp32 Http Update
Clone of https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266httpUpdate for ESP32
Stars: ✭ 25 (-3.85%)
Mutual labels:  deprecated
Terraform Openstack Rke
Terraform Openstack RKE
Stars: ✭ 23 (-11.54%)
Mutual labels:  openstack
Localart
An HTML5 mobile app for navigating & browsing locations of public art, architecture, and culture in Norfolk, VA.
Stars: ✭ 5 (-80.77%)
Mutual labels:  deprecated
Haproxy Wi
Web interface for managing Haproxy, Nginx and Keepalived servers
Stars: ✭ 823 (+3065.38%)
Mutual labels:  openstack
Crowbar
Cloud Operations Platform
Stars: ✭ 760 (+2823.08%)
Mutual labels:  openstack
Gamejoltlua
Access to GameJolt's opportunities for all your lovely Lua projects.
Stars: ✭ 18 (-30.77%)
Mutual labels:  deprecated
Gimbal
Gimbal is an ingress load balancing platform capable of routing traffic to multiple Kubernetes and OpenStack clusters. Built by Heptio in partnership with Actapio.
Stars: ✭ 637 (+2350%)
Mutual labels:  openstack
Doctrinemigrations
[DEPRECATED] Use Phinx instead
Stars: ✭ 24 (-7.69%)
Mutual labels:  deprecated
Pilbox
An image resize application server
Stars: ✭ 597 (+2196.15%)
Mutual labels:  deprecated
Miniproxy
🚨⚠️ UNMAINTAINED! ⚠️🚨 A simple PHP web proxy.
Stars: ✭ 810 (+3015.38%)
Mutual labels:  deprecated
Watset
Watset: Automatic Induction of Synsets from a Graph of Synonyms
Stars: ✭ 16 (-38.46%)
Mutual labels:  deprecated
Fortistacks
Project gathering how to use Fortinet product as VNFs, with examples, MANO, VIM etc.. see website for details
Stars: ✭ 26 (+0%)
Mutual labels:  openstack
Django Jquery Widgets
This project is no longer maintained.
Stars: ✭ 24 (-7.69%)
Mutual labels:  deprecated

About otc-tools (deprecated)

This is the otc tool for using the Open Telekom Cloud APIs. It is a simple demonstrator using shell/curl/jq to use the OpenTelekomCloud's OpenStack and OTC specific REST interfaces. It is used for testing by the OTC engineering team and can be used as a blueprint for own tooling. Unlike the more extensive tools, this one does not pull in a load of dependencies.

Prefix any command by --debug to observe the REST calls being made.

otc-tools is NOT recommended for production use. We do fix bugs that get reported to us and do accept contributions (pull requests / patches) if they meet our standards, but we do not actively develop this tool any further except for internal needs.

For production use, we recommend using the native OpenStack python client tools (python-openstackclient) with the plugins from python-otcextensions that implement OTC specific functions. This is also what we preinstall on our latest public Linux images. It's also still possible to use the older service specific client tools (such as python-novaclient etc.) and complement this by python-otcclient or otc-tools, but that is deprecated now. All of the OTC-specific tools can be found on github/OpenTelekomCloud.

Of course higher level tools, such as heat, ansible or terraform are a good choice for automation. For a more programmatic approach, use openstacksdk (and shade).

The otc-tools repository (and package) also has two wrappers for openSSH, ssh_otc.sh and scp_otc.sh that allow you to specify source/targets by VM name or VM UUID instead of IP address. It uses otc.sh to resolve name/ID to IP address behind the scenes (and has some cleverness to know which IP to use in case of several IPs and to chose an EIP if needed).

Usage

Set your OpenStack environment (OS_ variables) just like you do for the native OpenStack clients (typically by sourcing a ~/.ostackrc or ~/novarc or ~/.openrc file). The minimum set is OS_USERNAME, OS_USER_DOMAIN_NAME (could be derived from OS_USERNAME for MyWorkplace users), OS_PASSWORD, OS_PROJECT_NAME (eu-de), and OS_AUTH_URL (https://iam.eu-de.otc.t-systems.com/v3).

Optionally, you can also set some additional defaults on otc_env.sh by editing it and copying it into your home as ~/.otc_env.sh.

When managing multipe OTC domains, you may create ~/.ostackrc.SUFFIX and ~/.s3rc.SUFFIX and set OTC_DOMAIN=SUFFIX to make otc read these files.

Syntax for otc.sh is: otc.sh [--global opts] COMMANDGROUP COMMAND [--command opts] [CMDPOSPARAM]

Please have a look the otc_env.sh file and look at the output from otc.sh help -- this provides sufficient information to get doing. otc.sh also supports otc.sh help COMMANDGROUP to provide only the help section that is specific to the command group.

otc.sh relies on a GNU date, so if you are running it on MacOS X, please install GNU date by running brew install gdate and make it first in the PATH: ln -sf /usr/local/bin/gdate /usr/local/bin/date

Limitations

This tool does not try to cover all functionality of OTC. Rather it tries to be a demo and test tool for many functions; it however does fill in some gaps where the OTC API is extended or different from the standard OpenStack API, so feel free to use it here and contribute to fill gaps you care about. There is a small, but active community on github.com/OpenTelekomCloud/.

The OpenStack REST API has paginated interfaces to allow the consumers to control how large a response may get. Since 0.7.6, otc-tools is using this feature to avoid exceeding the maximum response sizes on OTC. (The API gateway limits responses to a few hundred kB). So otc-tools ends up doing a few REST calls in case you request large amounts of data, such as otc.sh ecs list when you have hundreds of VMs.

You can control API limits using --limit= and --marker= options if you want to manually control the amount of information. You can also use --maxgetkb= to override the default API response limit (250kiB) when relying on autopagination.

The command line parser is not overly smart. The general syntax is: otc.sh [GLOBALOPTS] maincmd subcmd [LOCALOPTS] [POSPARAMS] See otc.sh help for full help and otc.sh maincmd help for help on a specific set of commands.

Note that for most commands that have positional parameters, the command specific options (LOCALOPTS) need to precede the positional parameters.

otc.sh does not do any kind of version discovery, but just assumes support for all commands that public OTC offers. This reduces complexity and increases performance, and is a deliberate choice. It does however use the service catalog from keystone to determine all the endoints.

Some of otc.sh's functions will work with other OpenStack clouds; for testing, even some keystonev2 support has been added. But this is not at all meant to have production quality for any non-FusionSphere clouds.

Output formatting

otc tools tries to output things in a human readable format. It has three basic formats:

  • The list format: It creates a table with columns that are separated by 3 spaces. Several values in a field are separated by one space (or a colon for ip:port and for vmid:device). The first three columns are standardized, first is the ID of the resource, second the name, third the status (if reported), then further information (size, AZ, relations, ...) is appended. There can be an optional header (explaining the column contents) which starts with a '#'. This format is returned by list and details subcommands and is supposed to be parsed by humans. (Exception: When new services are implemented, I may just output JSON before I decide on a good list format.)
  • The JSON format: The REST calls return JSON objects of course and jq is used to present a nicely formatted represntation of the object. The JSON can be further passed.
  • The long running requests report the TASKID. With --nowait, this is the last output. Otherwise, the resource ID will be output last. By default the task status will onlybe queried until the resource ID is known; with --wait, otc.sh will wait for the task to complete. There are some intermediate task status updates and waiting dots in between.

This has been tidied up for otc-tools-0.7 and should be more usable and less fragile now. Nevertheless, this tool is not yet mature enough that we commit to not break the output format here yet -- a future version might well provide switches to control the output. Pull requests are welcome :-)

Custom commands

New in otc-tools-0.7.0, we support custom commands using otc custom GET|PUT|POST|DELETE|HEAD URL JSON You can reference variables by using $BASEURL $CINDER_URL $OS_PROJECT_ID. These are not standardized and well-documented yet (except for the OS_ ones which are the normal OpenStack environment). You'll need to check the source code. But the most important ones you already know now ... If you start the URL with a / (instead of http[s], $BASEURL will be prepended. There is an optional --jqfilter FILTERSTRING. By default, the output from the REST call is passed through jq -r '.'. You can replace this with --jqfilter '' which results in no processing. Or you pass a string like --jqfilter '.servers[] | .id+" "+.name'. Note the quoting for ".

Note that in this mode, otc.sh really does not much more than curl except for handling the tokens and providing the variables like $CINDER_URL from the catalog. The option --paginate ARRNM however might be handy for custom GET. (Current implementation for --paginate is somewhat inflexible in that it assumes records smaller than ~4k and you need to specify the array name from the JSON response. This will improve in a future version.)

Return codes

Some work has been done in the 0.7.x series to tidy up the return of response codes; so otc.sh should really have a non-zero exit code if there were serious failures.

Token cache

otc.sh does cache tokens (and the service catalog) in ~/tmp/.otc.cache.$OS_USERNAME.$OS_USER_DOMAIN_NAME.$OS_PROJECT_NAME (for project-scoped tokens; domain-scoped tokens are without .$OS_PROJECT_NAME). otc.sh ensures these files have safe permission (0600), but if your home directory gets shared or backed up in unsafe ways, you might need to take addtitional caution. Note that tokens are normally valid for 24hrs on OTC. You can use the --nocache global option to not use the token cache. If you have trouble with existing cache entries you might also use --discardcache to force otc.sh to retrieve a new token (and store it).

Note that you can force the usage of domain-scoped tokens using --domainscope, project-scoped tokens using --projectscope and unscoped using --unscoped. otc.sh normally knows what kind of token is needed for which command, but for the custom functions the default (project scoped tokens) may not always fit.

The token cache was introduced in 0.8.0 ot otc-tools.

Packages

Packages (RPMs/DEBs) on open Build Service home:garloff:OTC https://build.opensuse.org/package/show/home:garloff:OTC/otc-tools

A docker container image tsiotc/otc-client is available on dockerhub.

You can of course also just grab this script from github; please install curl and jq to make it work; optionally also s3 (libs3/libs3-4).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].