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()
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()
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()
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()
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")
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")