Giter Club home page Giter Club logo

ruby-openstack's Introduction

Ruby OpenStack

Ruby OpenStack Compute, Object-Store, Block Storage and Network bindings for the OpenStack API. It supports Keystone Authentication (v1.0, v2.0 and v3.0), Nova and Swift. See the getting started for documentation.

Build Status

Installation

Add the Ruby OpenStack as dependency to your project Gemfile:

source 'https://rubygems.org'
gem 'openstack'

Maintainer

This library is no longer maintained. If you like to continue working on this library please contact [email protected] or [email protected].

Authors

Initial code checkin on May 23rd 2012 - code refactored from and based on the Rackspace Cloud Servers gem and Rackspace Cloud Files gem.

License

See COPYING for license information.

ruby-openstack's People

Contributors

alecava avatar allomov avatar baahmi avatar birkneralex avatar bjorand avatar f0086 avatar felal avatar hpyy avatar idyll avatar kzcat avatar lumachan avatar macteo avatar madbox avatar marios avatar mfojtik avatar mikaelhm avatar qwertyn avatar rkutin avatar splaspood avatar tacyan avatar wbates avatar ygreg avatar zhouguangming avatar zipfer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ruby-openstack's Issues

Timeout

Recently I was having issues with the Openstack api not being available due to network issues at our hosting provider. The default timeout is 60 seconds with 3 retries which would hang my Sidekiq process for 3 minutes.

Would you be open to a PR which lets you set the http timeout as an option?

No SSL control

There is no method of specifying an SSL protocol to use, or of passing a CA file.
(pull request in the pipeline)

compatibility issues - openstack essex, diablo and cactus

As reported by Christian Karnath in Apache JIRA:

These issues were revealed by testing the Openstack 1.0.3 gem with Deltacloud - quoting Christian here:

I'm very very sorry, but I still found some new issues after excessive testing deltacloud with openstack-rubygem 1.0.3 against openstack essex, diablo and cactus. :-( I dont't know if this is the correct thread or if we should open new cases for the following issues:

  • When requesting a single instance against essex the id-field is empty right now (when requesting all instances the id-fields are filled).
  • When requesting a single instance against diablo the id-field is a guid-string instead of an integer (requesting all instances will return integer ids). When requesting a single image against diablo the name-field is null (requesting all images will fill the name field correctly).
  • When requsting all instances (or images) against cactus the following stack trace occurs:
    [NO HANDLED] IndexError: key not found
    /home/karnath/deltacloud/server/lib/deltacloud/drivers/openstack/openstack_driver.rb:374:in fetch' /home/karnath/deltacloud/server/lib/deltacloud/drivers/openstack/openstack_driver.rb:374:insend'
    /home/karnath/deltacloud/server/lib/deltacloud/drivers/openstack/openstack_driver.rb:374:in convert_from_server' /home/karnath/deltacloud/server/lib/deltacloud/drivers/openstack/openstack_driver.rb:126:ininstances'
    /home/karnath/deltacloud/server/lib/deltacloud/drivers/openstack/openstack_driver.rb:125:in collect' /home/karnath/deltacloud/server/lib/deltacloud/drivers/openstack/openstack_driver.rb:125:ininstances'
    /home/karnath/deltacloud/server/lib/deltacloud/drivers/exceptions.rb:181:in call' /home/karnath/deltacloud/server/lib/deltacloud/drivers/exceptions.rb:181:insafely'
    /home/karnath/deltacloud/server/lib/deltacloud/drivers/openstack/openstack_driver.rb:120:in instances' /home/karnath/deltacloud/server/lib/deltacloud/helpers/deltacloud_helper.rb:60:insend'
    /home/karnath/deltacloud/server/lib/deltacloud/helpers/deltacloud_helper.rb:60:in filter_all' /usr/lib/ruby/1.8/benchmark.rb:293:inmeasure'
    /home/karnath/deltacloud/server/lib/deltacloud/helpers/deltacloud_helper.rb:59:in filter_all' /home/karnath/deltacloud/server/lib/deltacloud/helpers/rabbit_helper.rb:22:instandard_index_operation'
    [...]

Release tags

Hi, would you mind to tag each release? Thank you.

Wiki contribution

Hi, I'm pretty new to OpenStack but I would like to add a piece of information into the Wiki Authentication page regarding the Other parameters for the create method: section.
Something like that:

  • :region - (Optional for v2.0 auth only). The specific service region to use. Defaults to first returned region.

Or maybe something like this:

  • Please see the full list of available options in the ruby doc

How should I proceed to contribute and what do you think about these changes?
Great gem BTW!

François

list servers from all tenants

Hi all,

is there any way, with your api implementation to get a list of servers from all tenants, like passing the "--all-tenants" flag to # nova list ? or maybe to have a tenant list in order to iterate through it to have all servers ?
Thanx a lot !

Cheers

ChunkedConnectionWrapper bug (and possible fix)

When I use vcr/webmock with ruby-openstack, I get an exception where webmock ends up calling ChunkedConnectionWrapper.read with 0 arguments (and ChunkedConnectionWrapper.read requires at least 1 argument).

As I trace the code, I see ChunkedConnectionWrapper.read defers to StringIO.read which accepts 0 arguments!

It seems, then, ChunkedConnectionWrapper.read should have method signature:
def read(length=nil, buffer=nil) instead of def read(length, buffer=nil)

Does this make sense?

ArgumentError: wrong number of arguments (2 for 1) in create_object

I'm not sure where to report this: when using the create_object container method, I get the above error

container.create_object(content.name, {:metadata=>content.meta, :content_type=>content.mime_type}, File.open(cf, 'rb') {|file| file.read })

If I leave out the reading of the file, the object is created with 0 bytes

    container.create_object(content.name, {:metadata=>content.meta, :content_type=>content.mime_type})

stack trace:

ArgumentError - wrong number of arguments (2 for 1):
/Users/sirbertly/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http/generic_request.rb:197:in `send_request_with_body_stream'
/Users/sirbertly/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http/generic_request.rb:132:in `exec'
/Users/sirbertly/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1406:in `block in transport_request'
/Users/sirbertly/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1405:in `transport_request'
/Users/sirbertly/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1378:in `request'
openstack (1.1.2) lib/openstack/connection.rb:132:in `put_object'
openstack (1.1.2) lib/openstack/swift/storage_object.rb:252:in `write'
openstack (1.1.2) lib/openstack/swift/storage_object.rb:58:in `create'
openstack (1.1.2) lib/openstack/swift/container.rb:183:in `create_object'
lib/kili_data_store.rb:34:in `block (2 levels) in write'

Bad URI when trying to connect to Openstack

Hi, I'm trying to connect to a Openstack (Devstack) server with the line:
os = OpenStack::Connection.create({
:username => "admin",
:auth_method => 'password',
:api_key => "supersecret",
:auth_url => "http://192.168.52.162/" })

And I got

URI::InvalidURIError: bad URI(is not URI?):
from /usr/lib/ruby/1.9.1/uri/common.rb:176:in 'split'
from /usr/lib/ruby/1.9.1/uri/common.rb:211:in 'parse'
from /usr/lib/ruby/1.9.1/uri/common.rb:747:in 'parse'
from /var/lib/gems/1.9.1/gems/openstack-1.1.2/lib/openstack/connection.rb:399:in 'initialize'
from /var/lib/gems/1.9.1/gems/openstack-1.1.2/lib/openstack/connection.rb:263:in 'new'
from /var/lib/gems/1.9.1/gems/openstack-1.1.2/lib/openstack/connection.rb:263:in 'init'
from /var/lib/gems/1.9.1/gems/openstack-1.1.2/lib/openstack/compute/connection.rb:12:in 'initialize'
from /var/lib/gems/1.9.1/gems/openstack-1.1.2/lib/openstack/connection.rb:66:in 'new'
from /var/lib/gems/1.9.1/gems/openstack-1.1.2/lib/openstack/connection.rb:66:in 'create'
from (irb):58
from /usr/bin/irb:12:in '

'

I think that is coming from the fact that there's no 'x-server-management-url' in the server http response and so the line:

uri = URI.parse(response["x-server-management-url"])
send an uri error but I don't know how to fix it.

Invalid API Version Detection (regex issue)

During debugging my issue I notice that when create a connection OpenStack::Connection.create(connection4) it always send a GET request, I did more debugging and I found that it detects my auth_url as version 1. There is an issue in the regex in init method Line329

My auth_url is https://api.example.com/identity/v3/auth/tokens

Suggested regex

def self.init(conn)
  if conn.auth_path.match? /(v3)+\d{0,2}/
    AuthV30.new(conn)
  elsif conn.auth_path.match? /(v2)+\d{0,2}/
    AuthV20.new(conn)
  else
    AuthV10.new(conn)
  end
end

If you consider this a valid issue, I can PR this as a fix

Net::HTTP::Put#body_stream in OpenStack::Connection#put_object does not work correctly with Swift

I want to upload objects to Swift container. Currently object.write("penguins have knees") will return true without update of the object in Swift. The response from Swift API is following: <Net::HTTPCreated 201 Created readbody=true>.

My first guess is that this happens because of Content-Length is left to be 0 inside this code.

After I passed String object to OpenStack::Connection#put_object as a data everything worked.

Cant associate securitygroups

I can't associate securitygroups :

newserver = os.create_server(:name => "toto" :security_groups => "default", :imageRef => image.id, :flavorRef => flavor.id)

The same with something different than default.

Error on prompt :
/home/noriak/.gem/ruby/1.9.1/gems/openstack-1.0.1/lib/openstack/connection.rb:436:in raise_exception': The server has either erred or is incapable of performing the requested o peration. (OpenStack::Exception::ComputeFault) from /home/noriak/.gem/ruby/1.9.1/gems/openstack-1.0.1/lib/openstack/compute/connection.rb:110:increate_server'
from capfile/selenium:188:in block (3 levels) in load' from /usr/lib/ruby/gems/1.9.1/gems/capistrano-2.12.0/lib/capistrano/configuration/execution.rb:139:ininstance_eval'
from /usr/lib/ruby/gems/1.9.1/gems/capistrano-2.12.0/lib/capistrano/configuration/execution.rb:139:in invoke_task_directly' from /usr/lib/ruby/gems/1.9.1/gems/capistrano-2.12.0/lib/capistrano/configuration/callbacks.rb:25:ininvoke_task_directly_with_callbacks'
from /usr/lib/ruby/gems/1.9.1/gems/capistrano-2.12.0/lib/capistrano/configuration/execution.rb:89:in execute_task' from /usr/lib/ruby/gems/1.9.1/gems/capistrano-2.12.0/lib/capistrano/configuration/execution.rb:101:infind_and_execute_task'
from /usr/lib/ruby/gems/1.9.1/gems/capistrano-2.12.0/lib/capistrano/cli/execute.rb:46:in block in execute_requested_actions' from /usr/lib/ruby/gems/1.9.1/gems/capistrano-2.12.0/lib/capistrano/cli/execute.rb:45:ineach'
from /usr/lib/ruby/gems/1.9.1/gems/capistrano-2.12.0/lib/capistrano/cli/execute.rb:45:in execute_requested_actions' from /usr/lib/ruby/gems/1.9.1/gems/capistrano-2.12.0/lib/capistrano/cli/help.rb:19:inexecute_requested_actions_with_help'
from /usr/lib/ruby/gems/1.9.1/gems/capistrano-2.12.0/lib/capistrano/cli/execute.rb:34:in execute!' from /usr/lib/ruby/gems/1.9.1/gems/capistrano-2.12.0/lib/capistrano/cli/execute.rb:14:inexecute'
from /usr/lib/ruby/gems/1.9.1/gems/capistrano-2.12.0/bin/cap:4:in <top (required)>' from /usr/bin/cap:23:inload'
from /usr/bin/cap:23:in `

'

Go this error on nova-api.log :
2012-07-20 14:01:33 ERROR nova.api.openstack [req-cf627db6-ad76-4aaa-9ff0-ea828c60efb7 b5ceffb9070443c78f9153f9d07e7791 8fddc3a384e148d6bdb8f8c70a587924] Caught error: 'int' object has no attribute 'get'
2012-07-20 14:01:33 TRACE nova.api.openstack Traceback (most recent call last):
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/init.py", line 41, in call
2012-07-20 14:01:33 TRACE nova.api.openstack return req.get_response(self.application)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1086, in get_response
2012-07-20 14:01:33 TRACE nova.api.openstack application, catch_exc_info=False)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1055, in call_application
2012-07-20 14:01:33 TRACE nova.api.openstack app_iter = application(self.environ, start_response)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/keystone/middleware/auth_token.py", line 176, in call
2012-07-20 14:01:33 TRACE nova.api.openstack return self.app(env, start_response)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in call
2012-07-20 14:01:33 TRACE nova.api.openstack return resp(environ, start_response)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in call
2012-07-20 14:01:33 TRACE nova.api.openstack return resp(environ, start_response)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in call
2012-07-20 14:01:33 TRACE nova.api.openstack return resp(environ, start_response)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/routes/middleware.py", line 131, in call
2012-07-20 14:01:33 TRACE nova.api.openstack response = self.app(environ, start_response)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in call
2012-07-20 14:01:33 TRACE nova.api.openstack return resp(environ, start_response)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 147, in call
2012-07-20 14:01:33 TRACE nova.api.openstack resp = self.call_func(req, _args, *_self.kwargs)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 210, in call_func
2012-07-20 14:01:33 TRACE nova.api.openstack return self.func(req, _args, *_kwargs)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py", line 803, in call
2012-07-20 14:01:33 TRACE nova.api.openstack content_type, body, accept)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py", line 851, in _process_stack
2012-07-20 14:01:33 TRACE nova.api.openstack action_result = self.dispatch(meth, request, action_args)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py", line 926, in dispatch
2012-07-20 14:01:33 TRACE nova.api.openstack return method(req=request, **action_args)
2012-07-20 14:01:33 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/servers.py", line 653, in create
2012-07-20 14:01:33 TRACE nova.api.openstack sg_names = [sg['name'] for sg in security_groups if sg.get('name')]
2012-07-20 14:01:33 TRACE nova.api.openstack AttributeError: 'int' object has no attribute 'get'
2012-07-20 14:01:33 TRACE nova.api.openstack
2012-07-20 14:01:33 INFO nova.api.openstack [req-cf627db6-ad76-4aaa-9ff0-ea828c60efb7 b5ceffb9070443c78f9153f9d07e7791 8fddc3a384e148d6bdb8f8c70a587924] http://10.87.5.230:8774/v2/8fddc3a384e148d6bdb8f8c70a587924/servers returned with HTTP 500

Support for heat

Supporting OpenStack heat would allow creation of whole stacks using ruby-openstack.

Test suite fails

Running test suite, I got following error:

failed to load: </builddir/build/BUILD/rubygem-openstack-1.0.1/usr/share/gems/gems/openstack-1.0.1/test/authentication_test.rb>: <cannot load such file -- openstack/compute> [test_require_builddir_build_BUILD_rubygem_openstack_1_0_1_usr_share_gems_gems_openstack_1_0_1_test_authentication_test_rb(RequireFailedOmissions)]
/usr/share/rubygems/rubygems/custom_require.rb:36:in `require'

getting an error after connecting

i'm attempting to perform actions after connecting. Authorization returns true, but after that, I get the following error:

C:/Ruby193/lib/ruby/gems/1.9.1/gems/openstack-2.0.2/lib/openstack/connection.rb:228:inheaderprep': uninitialized constant OpenStack::VERSION (NameError)
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/openstack-2.0.2/lib/openstack/connection.rb:172:in csreq' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/openstack-2.0.2/lib/openstack/connection.rb:216:inreq'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/openstack-2.0.2/lib/openstack/compute/connection.rb:278:in api_extensions' from openstackPoC.rb:13:in

'`

Any idea what the problem is here? in auth_url, I've specified "https://my.url:5000/v2.0/

Implement Keystone interaction?

I'd love to be able to create users and projects -- and associations between the two -- via this gem. It could help with some of the scripting, etc., I'm trying to make happen.

Inconsistencies in swift container headers structure in write vs create_object

We are using ruby-openstack gem to store binary files in swift openstack object storage. We have discovered that there is an inconsistency in headers structure that is used in write vs create_object methods.
In StorageObject class create_object method expects headers to be in the following form:
{ etag: 'some_value',
content_type: 'application/x-tar',
metadata: { 'X-Object-Meta-project'=>'MyContainer',
'X-Object-Meta-project_id'=>'testABC',
...}
}
this method is used when depositing new object into object storage.
However, when we updating existing object, we use write method and headers hash structure key/value pairs are expected to be all strings, so we are passing something like this:

{'etag'=>'22affe973e2175a72a11c9ecb1acc664',
'content-type'=>'application/x-tar',
'X-Object-Meta-project'=>'MyContainer',
'X-Object-Meta-project_id'=>'testABC',
....}
this is works great but it is confusing and we think it should be consistent.

There are two inconsistencies here:

  1. in one case symbols are used as keys in hash, in other case strings
  2. for write method hash has flat structure, for create_object method one element of the hash has to be another metadata: hash (as in example above)

Get swift's containers list with >10000 objects

If i have a container in swift, wich contain more than 10000 objects, than i can't get full list with cont.objects_detail or cont.objects.

So, please, implement support of getting long lists of objects in Swift.

Support Identity v3

Hi!

Since the release of Openstack Havana the preferred version of Identity to use is v3. Some cloud providers have now migrated to only supporting v3 for token generation to get support for domains.

Currently Ruby OpenStack does not work with providers that require support for Identity v3.

Would it be possible to add support for Identity v3 in this project as well?

/openstack-1.1.2/lib/openstack/swift/connection.rb:171:in `read': wrong number of arguments (2 for 1) (ArgumentError)

Hey ,
code --- swiftstorage.container("myfiles").create_object("file-from-ruby-api", {:metadata=>{"herpy"=>"derp"}, :content_type=>"text/plain"}, "this is the data from mem")

got error message --- /usr/local/rvm/gems/ruby-2.1.2/gems/openstack-1.1.2/lib/openstack/swift/connection.rb:171:in read': wrong number of arguments (2 for 1) (ArgumentError) from /usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http/generic_request.rb:197:incopy_stream'
from /usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http/generic_request.rb:197:in send_request_with_body_stream' from /usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http/generic_request.rb:132:inexec'
from /usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1406:in block in transport_request' from /usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1405:incatch'
from /usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1405:in transport_request' from /usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:1378:inrequest'
from /usr/local/rvm/gems/ruby-2.1.2/gems/openstack-1.1.2/lib/openstack/connection.rb:132:in put_object' from /usr/local/rvm/gems/ruby-2.1.2/gems/openstack-1.1.2/lib/openstack/swift/storage_object.rb:252:inwrite'
from /usr/local/rvm/gems/ruby-2.1.2/gems/openstack-1.1.2/lib/openstack/swift/storage_object.rb:58:in create' from /usr/local/rvm/gems/ruby-2.1.2/gems/openstack-1.1.2/lib/openstack/swift/container.rb:183:increate_object'
from ruby-swift.rb:56:in <class:SwiftStorage>' from ruby-swift.rb:7:in

'

So I tested ruby(1.8.7 1.9.3) is OK , But 2.0.0.2.1.2 show that error message , Is there any update for ruby-openstack about new ruby version(2.0.0+) recently ?
Thanks all .

any reason the image endpoint has not been implemented?

I started implementing it, wanted to make sure I'm not duplicating effort. Also, I am a little confused as to how you are handling the versions of APIs for things (are you assuming that an endpoint returns the version to use, are you handling all of the possibilities of each version?)

New gemspec declares openstack itself as dependency

With commit 582514930d2fde387d6cfc743d266895282327a1, when regenerating gemspec file, you introduced openstack as its own dependency, causing circular dependency errors:

$ gem install --debug --backtrace --verbose openstack --version 2.0.0
NOTE:  Debugging mode prints all exceptions even when rescued
Exception `LoadError' at /home/myuser/.rbenv/versions/2.3.1/lib/ruby/2.3.0/resolv.rb:171 - LoadError
HEAD https://api.rubygems.org/api/v1/dependencies
200 OK
GET https://api.rubygems.org/api/v1/dependencies?gems=openstack
200 OK
Exception `Resolv::DNS::Config::NXDomain' at /home/myuser/.rbenv/versions/2.3.1/lib/ruby/2.3.0/resolv.rb:549 - _rubygems._tcp.api.rubygems.org
Exception `Resolv::ResolvError' at /home/myuser/.rbenv/versions/2.3.1/lib/ruby/2.3.0/resolv.rb:494 - DNS result has no information for _rubygems._tcp.api.rubygems.org
Getting SRV record failed: DNS result has no information for _rubygems._tcp.api.rubygems.org
Exception `Gem::Resolver::Molinillo::CircularDependencyError' at /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb:156 - There is a circular dependency between openstack and openstack
ERROR:  While executing gem ... (Gem::Resolver::Molinillo::CircularDependencyError)
    There is a circular dependency between openstack and openstack
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb:156:in `add_edge'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb:103:in `block in add_child_vertex'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb:97:in `each'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb:97:in `add_child_vertex'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/resolution.rb:421:in `block in require_nested_dependencies_for'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/resolution.rb:421:in `each'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/resolution.rb:421:in `require_nested_dependencies_for'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/resolution.rb:411:in `activate_spec'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/resolution.rb:376:in `attempt_to_activate_new_spec'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/resolution.rb:320:in `attempt_to_activate'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/resolution.rb:147:in `process_topmost_state'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/resolution.rb:72:in `resolve'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver/molinillo/lib/molinillo/resolver.rb:42:in `resolve'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/resolver.rb:191:in `resolve'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/request_set.rb:368:in `resolve'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/dependency_installer.rb:484:in `resolve_dependencies'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/commands/install_command.rb:194:in `install_gem'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/commands/install_command.rb:255:in `block in install_gems'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/commands/install_command.rb:251:in `each'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/commands/install_command.rb:251:in `install_gems'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/commands/install_command.rb:158:in `execute'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/command.rb:310:in `invoke_with_build_args'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/command_manager.rb:169:in `process_args'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/command_manager.rb:139:in `run'
  /home/myuser/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/gem_runner.rb:55:in `run'
  /home/myuser/.rbenv/versions/2.3.1/bin/gem:21:in `<main>'

Also, any particular reason OpenStack::VERSION stopped being used instead of hardcoding versions at gemspec?

Version 1.1.2 still installs just fine, although 1.2.0 doesn’t even exist in RubyGems listing.

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.