Merge pull request #8 from pycontribs/match-api-expectations-and-fixes
Match API expectations
This commit is contained in:
commit
342abb43bd
@ -13,4 +13,4 @@ Install
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ pip install 'molecule[hetznercloud]'
|
||||
$ pip install molecule-hetznercloud
|
||||
|
@ -28,63 +28,6 @@ log = logger.get_logger(__name__)
|
||||
|
||||
|
||||
class HetznerCloud(Driver):
|
||||
"""
|
||||
The class responsible for managing `Hetzner Cloud`_ instances.
|
||||
`Hetzner Cloud`_ is **not** the default driver used in Molecule.
|
||||
|
||||
Molecule leverages Ansible's `hcloud_server module`_, by mapping variables
|
||||
from ``molecule.yml`` into ``create.yml`` and ``destroy.yml``.
|
||||
|
||||
.. important::
|
||||
|
||||
The ``hcloud_server`` module is only available in Ansible >= 2.8.
|
||||
|
||||
.. _`hcloud_server module`: https://docs.ansible.com/ansible/devel/modules/hcloud_server_module.html#hcloud-server-module
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
driver:
|
||||
name: hetznercloud
|
||||
platforms:
|
||||
- name: instance
|
||||
server_type: cx11
|
||||
image: debian-9
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ pip install 'molecule[hetznercloud]'
|
||||
|
||||
Change the options passed to the ssh client.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
driver:
|
||||
name: hetznercloud
|
||||
ssh_connection_options:
|
||||
- '-o ControlPath=~/.ansible/cp/%r@%h-%p'
|
||||
|
||||
.. important::
|
||||
|
||||
The Hetzner Cloud driver implementation uses the Parmiko transport
|
||||
provided by Ansible to avoid issues of connection hanging and
|
||||
indefinite polling as experienced with the default OpenSSh based
|
||||
transport.
|
||||
|
||||
.. important::
|
||||
|
||||
Molecule does not merge lists, when overriding the developer must
|
||||
provide all options.
|
||||
|
||||
Provide the files Molecule will preserve upon each subcommand execution.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
driver:
|
||||
name: hetznercloud
|
||||
safe_files:
|
||||
- foo
|
||||
""" # noqa
|
||||
|
||||
def __init__(self, config=None):
|
||||
super(HetznerCloud, self).__init__(config)
|
||||
self._name = "hetznercloud"
|
||||
@ -137,8 +80,6 @@ class HetznerCloud(Driver):
|
||||
except StopIteration:
|
||||
return {}
|
||||
except IOError:
|
||||
# Instance has yet to be provisioned , therefore the
|
||||
# instance_config is not on disk.
|
||||
return {}
|
||||
|
||||
def template_dir(self):
|
||||
@ -165,8 +106,8 @@ class HetznerCloud(Driver):
|
||||
except ImportError:
|
||||
msg = (
|
||||
"Missing Hetzner Cloud driver dependency. Please "
|
||||
"install via 'molecule[hetznercloud]' or refer to "
|
||||
"your INSTALL.rst driver documentation file"
|
||||
"install the 'molecule-hetznercloud' package or "
|
||||
"refer to your INSTALL.rst driver documentation file"
|
||||
)
|
||||
sysexit_with_message(msg)
|
||||
|
@ -21,6 +21,7 @@
|
||||
import os
|
||||
|
||||
import pytest
|
||||
|
||||
import sh
|
||||
from molecule.scenario import ephemeral_directory
|
||||
|
||||
@ -168,19 +169,7 @@ def test_command_idempotence(scenario_to_test, with_scenario, scenario_name):
|
||||
pytest.helpers.idempotence(scenario_name)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"driver_name",
|
||||
[
|
||||
("digitalocean"),
|
||||
("docker"),
|
||||
("ec2"),
|
||||
("gce"),
|
||||
("linode"),
|
||||
("openstack"),
|
||||
("vagrant"),
|
||||
],
|
||||
indirect=["driver_name"],
|
||||
)
|
||||
@pytest.mark.parametrize("driver_name", [("hetznercloud")], indirect=["driver_name"])
|
||||
def test_command_init_role(temp_dir, driver_name, skip_test):
|
||||
pytest.helpers.init_role(temp_dir, driver_name)
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
dependency:
|
||||
name: galaxy
|
||||
driver:
|
||||
name: docker
|
||||
name: hetznercloud
|
||||
lint:
|
||||
name: yamllint
|
||||
platforms:
|
@ -18,22 +18,21 @@
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
# DEALINGS IN THE SOFTWARE.
|
||||
|
||||
from uuid import uuid4
|
||||
import copy
|
||||
import functools
|
||||
import os
|
||||
import shutil
|
||||
from uuid import uuid4
|
||||
|
||||
import pytest
|
||||
|
||||
from molecule import config, util
|
||||
|
||||
try:
|
||||
from pathlib import Path
|
||||
except ImportError:
|
||||
from pathlib2 import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from molecule import util
|
||||
from molecule import config
|
||||
|
||||
|
||||
@pytest.helpers.register
|
||||
def write_molecule_file(filename, data):
|
||||
@ -55,7 +54,7 @@ def _molecule_dependency_galaxy_section_data():
|
||||
|
||||
@pytest.fixture
|
||||
def _molecule_driver_section_data():
|
||||
return {"driver": {"name": "docker", "options": {"managed": True}}}
|
||||
return {"driver": {"name": "hetznercloud", "options": {"managed": True}}}
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
@ -46,7 +46,7 @@ def _instance(_base_class):
|
||||
def _command_args():
|
||||
return {
|
||||
"dependency_name": "galaxy",
|
||||
"driver_name": "docker",
|
||||
"driver_name": "hetznercloud",
|
||||
"lint_name": "yamllint",
|
||||
"provisioner_name": "ansible",
|
||||
"scenario_name": "default",
|
||||
|
@ -21,13 +21,14 @@
|
||||
import os
|
||||
|
||||
import pytest
|
||||
|
||||
from molecule import config
|
||||
from molecule_hetznercloud import hetznercloud
|
||||
from molecule_hetznercloud import driver
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def hetznercloud_instance(patched_config_validate, config_instance):
|
||||
return hetznercloud.HetznerCloud(config_instance)
|
||||
return driver.HetznerCloud(config_instance)
|
||||
|
||||
|
||||
def test_hetznercloud_config_gives_config_object(hetznercloud_instance):
|
||||
|
@ -33,7 +33,7 @@ def _molecule_file():
|
||||
os.path.pardir,
|
||||
os.path.pardir,
|
||||
"resources",
|
||||
"molecule_docker.yml",
|
||||
"molecule_hetznercloud.yml",
|
||||
)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user