moniker_activeresource

Moniker Ruby and RoR bindings implemented with ActiveResource

Moniker - DNS for OpenStack — Read more at launchpad.net/moniker

Please note: Moniker is still in alpha stage so is the same for this gem!

Tested on Moniker commit 2c66df879574cb595bd8f703818f503badce3bad

Installation

Not yet released on rubygems. To install this gem clone this repository and:

gem install bundler # If not already installed
bundle install
rake install

Sample usage

This section is incomplete. Please see unit tests for more info.

Keystone authentication and Moniker setup

OpenStack::Keystone::Public::Base.site = "https://my.api.com:5000/v2.0/"

auth = OpenStack::Keystone::Public::Auth.new :username  => "me",
                                             :password  => "my pass",
                                             :tenant_id => "my_tenant"

if auth.save
  Moniker::Base.token = auth.token
  Moniker::Base.site  = auth.endpoint_for('dns').publicURL
  # *** Set the sudo tenant id (if needed!)
  Moniker::Base.sudo_tenant = "another tenant id"
else
  raise "Cannot authenticate!"
end

Create a new server (requires an administrative role)

new_server = Moniker::Server.create :name => "test.test-server.test."

List existing server (requires an administrative role)

servers = Moniker::Server.all

Get a server (requires an administrative role)

# By name
server = Moniker::Server.find_by_name "test.test-server.test."
# By id
Moniker::Server.find "ffffffff-ffff-ffff-ffff-ffffffffffff"

Update a server (requires an administrative role)

server = Moniker::Server.find_by_name "test.test-server.test."
server.update_attributes :name => "up-test.test-server.test."
server.save
# Done! Now revert
server.name = "test.test-server.test."
server.save

Destroy a server (requires an administrative role)

server = Moniker::Server.find_by_name "test.test-server.test."
server.destroy

Create a new domain (depending on your configuration, this might require an administrative role)

new_domain = Moniker::Domain.create :name => "test.test-domain.test.", :email => "[email protected]"

List existing domains

domains = Moniker::Domain.all

Get a domain

# By name
domain = Moniker::Domain.find_by_name "test.test-domain.test."
# By id
Moniker::Domain.find "ffffffff-ffff-ffff-ffff-ffffffffffff"

Update a domain (depending on your configuration, this might require an administrative role)

domain = Moniker::Domain.find_by_name n"test.test-domain.test."ame
domain.update_attributes :ttl => 225
domain.save
# Again but now without update_attributes
domain.ttl = 128
domain.save

Destroy a domain (depending on your configuration, this might require an administrative role)

domain = Moniker::Domain.find_by_name n"test.test-domain.test."ame
domain.destroy

Create a new record

domain = Moniker::Domain.find_by_name "test.test-domain.test."
new_record = Moniker::Record.create :name => record_name,
                                    :type => "A",
                                    :data => "1.1.1.1",
                                    :domain_id => domain.id

List existing records in a domain

domain = Moniker::Domain.find_by_name "test.test-domain.test."
records = Moniker::Record.all :params => {:domain_id => domain.id}

Get a record in a domain

domain = Moniker::Domain.find_by_name "test.test-domain.test."
# All by name
records = Moniker::Record.find_all_by_name record_name, :params => {:domain_id => domain.id}
# All by type
records = Moniker::Record.find_all_by_type "AAAA", :params => {:domain_id => domain.id}
# All by data
records = Moniker::Record.find_all_by_data "1.1.1.1", :params => {:domain_id => domain.id}
# By id
record = Moniker::Record.find "ffffffff-ffff-ffff-ffff-ffffffffffff", :params => {:domain_id => domain.id}

Update a record in a domain

record = Moniker::Record.find "ffffffff-ffff-ffff-ffff-ffffffffffff", :params => {:domain_id => domain.id}
record.update_attributes :ttl => 225
record.save
# Again but now without update_attributes
record.ttl = 128
record.save

Destroy a record in a domain

record = Moniker::Record.find "ffffffff-ffff-ffff-ffff-ffffffffffff", :params => {:domain_id => domain.id}
record.destroy

Known limitation

Works only with OpenStack Keystone authentication

Contributing to moniker_activeresource

  • Check out the latest master to make sure the feature hasn’t been implemented or the bug hasn’t been fixed yet.

  • Check out the issue tracker to make sure someone already hasn’t requested it and/or contributed it.

  • Fork the project.

  • Start a feature/bugfix branch.

  • Commit and push until you are happy with your contribution.

  • Make sure to add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.

Copyright © 2013 Davide Guerri (@dguerri [email protected]). See LICENSE.txt for further details.