https://github.com/stephenmoloney/openstex
Openstex is a client in the elixir language for Openstack compliant APIS.
https://github.com/stephenmoloney/openstex
elixir elixir-lang hubic openstack openstack-swift ovh ovh-openstack rackspace rackspace-cloud-files rackspace-cloud-services
Last synced: about 2 months ago
JSON representation
Openstex is a client in the elixir language for Openstack compliant APIS.
- Host: GitHub
- URL: https://github.com/stephenmoloney/openstex
- Owner: stephenmoloney
- License: mit
- Created: 2016-06-29T15:38:37.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2018-03-04T22:42:20.000Z (about 7 years ago)
- Last Synced: 2025-03-24T00:38:20.125Z (2 months ago)
- Topics: elixir, elixir-lang, hubic, openstack, openstack-swift, ovh, ovh-openstack, rackspace, rackspace-cloud-files, rackspace-cloud-services
- Language: Elixir
- Homepage: https://hexdocs.pm/openstex
- Size: 103 KB
- Stars: 10
- Watchers: 4
- Forks: 2
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Openstex [](https://hex.pm/packages/openstex) [](https://hexdocs.pm/openstex) [](https://github.com/stephenmoloney/openstex/blob/master/LICENSE.md) [](https://travis-ci.org/stephenmoloney/openstex)
An elixir client for making requests to [Openstack compliant apis](http://developer.openstack.org/api-ref.html).
### Supported services
| Openstack Service | Supported |
|---|---|
| Identity 2.0 (Keystone) | :heavy_check_mark: |
| Object Storage 1.0 (Swift) | :heavy_check_mark: |### Features
### 1. Request modules for generating `HTTPipe.Conn.t` structs which can subsequently be sent
to the API using a `request` function.- Example - creating a new container
```elixir
account = Client.Swift.get_account()
conn = Openstex.Swift.V1.create_container("new_container", account)
client.request(conn)
```### 2. Helper modules for
a. One liners for sending queries to the client API.
- Example - Uploading a file
```elixir
file_path = Path.join(Path.expand(__DIR__, "priv/test.json")
Client.Swift.upload_file(file_path, server_object, container,
```b. Sending more complex queries such as multi-step queries to the client API.
- Example - Getting all objects in a pseudofolder recursively, `[nested: :true]` will
check for objects recursively in deeper folders.```elixir
file_path = Path.join(Path.expand(__DIR__, "priv/test.json")
Client.Swift.list_objects("nested_folder", "new_container", [nested: :true])
```### 3. Adapter modules for
- [OVH Cloudstorage](https://www.ovh.ie/cloud/storage/)
- [Rackspace Cloudfiles CDN](https://www.rackspace.com/cloud/cdn-content-delivery-network).
- [Rackspace Cloudfiles](https://www.rackspace.com/cloud/files)All of the above Adapters provide access to Swift Object Storage services which are (mostly) openstack compliant.
## Installation and Getting Started
| Adapter | Getting started |
|---|---|
| Ovh Adapter | [openstex_adapters_ovh](https://github.com/stephenmoloney/openstex_adapters_ovh) |
| Rackspace Adapter | [openstex_adapters_rackspace](https://github.com/stephenmoloney/openstex_adapters_rackspace) |## Tests
- `mix test`
## Available Services
| Tables | Version | Status |
| ------------- |:-------------:| -----:|
| Identity (Keystone) , [overview](https://wiki.openstack.org/wiki/keystone), [api](http://developer.openstack.org/api-ref-identity-v2.html) | v2 | :heavy_check_mark: |
| Identity (Keystone) , [overview](https://wiki.openstack.org/wiki/keystone), [api](http://developer.openstack.org/api-ref-identity-v3.html) | v3 | :x: |
| Object Storage (Swift) , [overview](https://wiki.openstack.org/wiki/swift), [api](http://developer.openstack.org/api-ref-objectstorage-v1.html) | v1 | :heavy_check_mark: |[Openstack api reference](http://developer.openstack.org/api-ref.html)
## TODO
- [ ] improve the docs for some of the functions
- [ ] add tests for genserver workings in `Openstex.Adapters.Bypass.Keystone`
- [ ] add tests for `Openstex.Keystone.V2.HelpersTest`
- [ ] add tests for `Openstex.Swift.V1` with the execution of the `HTTPipe.Conn` structs with bypass.
`## Licence
[MIT Licence](LICENCE.md)