kapilt / juju-digitalocean

JuDo - A juju provider for digital ocean using a client side plugin and manual provisioning.
111 stars 17 forks source link

Bootstrap fails with Digital Ocean API v2. #41

Open jsermeno opened 7 years ago

jsermeno commented 7 years ago

Bootstrapping fails with this error:

Traceback (most recent call last):
  File "/usr/local/bin/juju-docean", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/site-packages/juju_docean/cli.py", line 116, in main
    cmd.run()
  File "/usr/local/lib/python2.7/site-packages/juju_docean/commands.py", line 87, in run
    instance = op.run()
  File "/usr/local/lib/python2.7/site-packages/juju_docean/ops.py", line 53, in run
    self.provider.wait_on(instance)
  File "/usr/local/lib/python2.7/site-packages/juju_docean/provider.py", line 88, in wait_on
    return self._wait_on(instance.event_id, instance.name)
  File "/usr/local/lib/python2.7/site-packages/juju_docean/provider.py", line 94, in _wait_on
    done, result = self.client.create_done(event, name)
  File "/usr/local/lib/python2.7/site-packages/juju_docean/client.py", line 272, in create_done
    data = self.request(event_id)
  File "/usr/local/lib/python2.7/site-packages/juju_docean/client.py", line 289, in request
    url = self.get_url(target)
  File "/usr/local/lib/python2.7/site-packages/juju_docean/client.py", line 61, in get_url
    assert target.startswith('https://')
AssertionError

The problem seems to be the /droplets endpoint contains urls that use the http:// protocol. I was able to finish bootstrapping by replacing http:// with https:// with the following code:

if target.startswith('http://'):
    return string.replace(target, 'http://', 'https://')

Everything seems to work afterwards.