예제 #1
0
def test_cli_invocation():
    """
    Should call the callback and then execute a status command action on
    the created (and empty) resource bundle.
    """
    callback = MagicMock()
    kuber.cli(callback, arguments=["status"])
    callback.assert_called_once()
예제 #2
0
def test_settings_error():
    """Should load settings from this test files."""
    cb = MagicMock()

    with pytest.raises(ValueError):
        kuber.cli(cb, arguments=["render", "--settings=foo"])

    cb.assert_not_called()
예제 #3
0
def test_settings_directory():
    """Should load settings from this test directory."""
    def _callback(action: kuber.CommandAction):
        s = action.bundle.settings
        assert s.foo and s.foo == s.spam
        assert s.bar and s.bar == s.ham
        assert s.baz and s.baz == s.eggs

    cb = MagicMock()
    cb.side_effect = _callback
    kuber.cli(cb, arguments=["render", f"--settings={MY_DIRECTORY}"])
    cb.assert_called_once()
예제 #4
0
def test_settings_files():
    """Should load settings from this test files."""
    def _callback(action: kuber.CommandAction):
        s = action.bundle.settings
        assert s.foo and s.foo == s.spam
        assert s.bar and s.bar == s.ham
        assert s.baz and s.baz == s.eggs

    cb = MagicMock()
    cb.side_effect = _callback

    kuber.cli(
        cb,
        arguments=[
            "render",
            f'--settings={os.path.join(MY_DIRECTORY, "settings.yaml")}',
            f'--settings={os.path.join(MY_DIRECTORY, "settings.json")}',
        ],
    )
    cb.assert_called_once()
예제 #5
0
import pathlib

import kuber

directory = pathlib.Path(__file__).parent.absolute()


def populate(action: kuber.CommandAction):
    """Populate the bundle"""
    bundle = action.bundle
    bundle.namespace = bundle.namespace or bundle.name

    # Add a namespace in which the bundle will reside.
    with bundle.new("v1", "Namespace", bundle.namespace).metadata as md:
        md.labels["name"] = bundle.namespace

    bundle.add_from_helm(
        chart_name="deliveryhero/locust",
        values_path=directory.joinpath("values.yaml"),
        repos={"deliveryhero": "https://charts.deliveryhero.io/"},
        update=True,
    )


if __name__ == "__main__":
    kuber.load_access_config()
    version = kuber.get_version_from_cluster("latest")
    kuber.cli(callback=populate,
              kubernetes_version=version,
              bundle_name="locust-load-test")
예제 #6
0
from kuber.latest import core_v1


def populate(action: kuber.CommandAction):
    """
    Populate the empty bundle that was created by the
    cli function call prior to calling this function.
    The action argument contains the bundle along with
    information about the command line execution.
    """
    bundle = action.bundle
    bundle.namespace = "prometheus"
    bundle.add_file("./resources.yaml")

    # Get the server container from the server
    # deployment for modification.
    deployment: apps_v1.Deployment = bundle.get(name="prometheus-server",
                                                kind="Deployment")
    server: core_v1.Container = deployment.get_container("prometheus-server")

    # Override default retention time to be 7 days.
    server.args.append("--storage.tsdb.retention.time=7d")


if __name__ == "__main__":
    kuber.load_access_config()
    version = kuber.get_version_from_cluster("latest")
    kuber.cli(callback=populate,
              kubernetes_version=version,
              bundle_name="prometheus")