image:https://travis-ci.org/vmj/groovy-upcloud.svg?branch=master["Build Status", link="https://travis-ci.org/vmj/groovy-upcloud"] image:https://maven-badges.herokuapp.com/maven-central/fi.linuxbox.upcloud/groovy-upcloud-core/badge.svg["Release", link="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22fi.linuxbox.upcloud%22"] image:https://www.javadoc.io/badge/fi.linuxbox.upcloud/groovy-upcloud-resource.svg["Javadoc", link="https://www.javadoc.io/doc/fi.linuxbox.upcloud/groovy-upcloud-resource"]
Groovy UpCloud is an unofficial library that provides an asynchronous Groovy interface to the UpCloud API.
Groovy UpCloud library is fully asynchronous. When invoking the API, the HTTP transaction is performed in a pool of background threads, and the results are passed to the application. The communication (currently) happens via callbacks. By default, the IO thread pool has four workers, i.e. four HTTP transactions concurrently.
When used as a base for Groovy scripting, Groovy UpCloud provides a script base class that makes it easier to deal with the concurrent nature: the top-level code and all the callbacks are executed in a dedicated thread, separate from the IO thread pool.
Groovy UpCloud library has full support for UpCloud API version 1.2.8 (current as of Feb 2020).
Groovy UpCloud is built on Groovy 3.0. This library is available at http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22fi.linuxbox.upcloud%22[The Central Repository] and https://bintray.com/search?sort=last_updated&query=fi.linuxbox.upcloud%3Agroovy-upcloud-*[jcenter]
The main resources managed in UpCloud are https://www.javadoc.io/page/fi.linuxbox.upcloud/groovy-upcloud-resource/latest/fi/linuxbox/upcloud/resource/Server.html[servers], https://www.javadoc.io/page/fi.linuxbox.upcloud/groovy-upcloud-resource/latest/fi/linuxbox/upcloud/resource/IpAddress.html[IP addresses], https://www.javadoc.io/page/fi.linuxbox.upcloud/groovy-upcloud-resource/latest/fi/linuxbox/upcloud/resource/Storage.html[storages], https://www.javadoc.io/page/fi.linuxbox.upcloud/groovy-upcloud-resource/latest/fi/linuxbox/upcloud/resource/FirewallRule.html[firewall rules], and https://www.javadoc.io/page/fi.linuxbox.upcloud/groovy-upcloud-resource/latest/fi/linuxbox/upcloud/resource/Tag.html[tags]. You might want to start with those.
Also, in order to understand how the library works, you might want to dive into https://www.javadoc.io/page/fi.linuxbox.upcloud/groovy-upcloud-core/latest/fi/linuxbox/upcloud/core/Session.html[Session], and https://www.javadoc.io/page/fi.linuxbox.upcloud/groovy-upcloud-core/latest/fi/linuxbox/upcloud/core/Resource.html[Resource].