Maas::Client

This is a simple client library for MAAS, Metal as a Service, written in Ruby.

Installation

```ruby

$ bundle

Or install it yourself as:

$ gem install maas-client –no-ri –no-rdoc

```

Usage

```ruby

require “maas/client”

when ~/.rbmaas/rbmaas.yml is configured

con = Maas::Client::MaasClient.new()

when manually configuring

con = Maas::Client::MaasClient.new(“#CONSUMER_KEY:#KEY:#SECRET”, “http://#IP_OR_DOMAIN_NAME/MAAS/api/2.0”)

con.request(:get, [‘users’])

con.request(:get, [‘users’], => ‘whoami’)

con.request(:post, [‘users’], => ‘someone1’, ‘email’ => ‘[email protected]’, ‘password’ => ‘maasuser1’, ‘is_superuser’ => 1)

con.request(:get, [‘account’], => ‘list_authorisation_tokens’)

con.request(:post, [‘account’], => ‘create_authorisation_token’, ‘name’ => ‘mynewkey1’)

con.request(:post, [‘account’], => ‘delete_authorisation_token’, ‘token_key’ => KEY)

con.request(:get, [‘dnsresources’])

con.request(:get, [‘ipaddresses’])

myarr = [] dns_records = con.request(:get, [‘dnsresources’]) dns_records.each_with_index { |item, index| myarr « item[‘fqdn’] } myarr

bash # to generate hosts file rbmaas generate hosts

to disused resources

rbmaas clear

to initialize MAAS as defined in a yaml file

rbmaas init -f maas.yml ``` ## Development and Contribution

Questions and pull requests are always welcome!

Source Repository https://github.com/itisnotdone/maas-client

Gem Location https://rubygems.org/gems/maas-client

Issues and questions https://github.com/itisnotdone/maas-client/issues

To begin contribution

```bash

Install RVM.

# https://rvm.io/rvm/install $ echo progress-bar » ~/.curlrc && curl -sSL https://get.rvm.io | bash

It depends on your development environment. See following thread if it does not work.

# https://askubuntu.com/questions/121073/why-bash-profile-is-not-getting-sourced-when-opening-a-terminal $ source ~/.bash_profile

Download source.

$ git clone https://github.com/itisnotdone/maas-client.git

This should install and create the ruby version and gemset specified at .ruby-version and .ruby-gemset.

$ cd maas-client

$ bundle

```

To run simple tests with mocks

```bash

$ rspec

Maas::Client::MaasClient basic has a version number has an access token can report for wrong requests user list returns an array has user information user management can create a new user can delete a user

Finished in 0.01254 seconds (files took 0.17329 seconds to load) 7 examples, 0 failures

Coverage report generated for RSpec to /home/deploy/maas-client/coverage. 17 / 25 LOC (68.0%) covered.

```

To run simple tests with real world

```bash $ API_KEY=’API_KEY’ MAAS_SERVER=’IP_OR_DOMAIN’ rspec

if you want to see the report with Fivemat format

$ FIVEMAT_PROFILE=1; API_KEY=’API_KEY’ MAAS_SERVER=’IP_OR_DOMAIN’ bundle exec rspec

Maas::Client::MaasClient basic has a version number has an access token can report for wrong requests user list is an array has user information user management can create a new user can delete a user

Finished in 0.30954 seconds (files took 0.17286 seconds to load) 7 examples, 0 failures

Coverage report generated for RSpec to /home/deploy/maas-client/coverage. 25 / 25 LOC (100.0%) covered. ```

To release

```bash vi lib/maas/client/version.rb # and increase release number.

$ git add $things

$ git commit -m ‘blahblah’

$ rake release

rake release –trace ** Invoke release (first_time) ** Invoke build (first_time) ** Execute build maas-client x.x.xx built to pkg/maas-client-x.x.xx.gem. ** Invoke release:guard_clean (first_time) ** Execute release:guard_clean ** Invoke release:source_control_push (first_time) ** Execute release:source_control_push Tagged vx.x.xx. Username for ‘https://github.com’: $id Password for ‘https://[email protected]’: Pushed git commits and tags. ** Invoke release:rubygem_push (first_time) ** Execute release:rubygem_push Pushed maas-client x.x.xx to rubygems.org. ** Execute release

```

License

The gem is available as open source under the terms of the MIT License.