summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValentin David <valentin.david@codethink.co.uk>2018-12-20 13:02:09 +0100
committerValentin David <valentin.david@codethink.co.uk>2019-01-02 11:12:02 +0100
commita02fc6963b977da825a69dac388bc8652fdf5634 (patch)
treeb0a92165c0aff7eb1f6b0d730d2e167d5f271aff
parent51c9bb1ea0b921dd7461635ad2a4da8102d0384f (diff)
downloadbuildstream-valentindavid/remote_execution_configuration_command_line.tar.gz
Allow selecting user or project configuration for remote executionvalentindavid/remote_execution_configuration_command_line
-rw-r--r--buildstream/_context.py3
-rw-r--r--buildstream/_frontend/app.py3
-rw-r--r--buildstream/_frontend/cli.py3
-rw-r--r--buildstream/_project.py19
-rw-r--r--tests/completions/completions.py1
5 files changed, 24 insertions, 5 deletions
diff --git a/buildstream/_context.py b/buildstream/_context.py
index c62755cf2..b3c01f7fd 100644
--- a/buildstream/_context.py
+++ b/buildstream/_context.py
@@ -121,6 +121,9 @@ class Context():
# Whether or not to attempt to pull build trees globally
self.pull_buildtrees = None
+ # Which configured remote execution server to use
+ self.remote_execution = 'any'
+
# Boolean, whether we double-check with the user that they meant to
# remove a workspace directory.
self.prompt_workspace_close_remove_dir = None
diff --git a/buildstream/_frontend/app.py b/buildstream/_frontend/app.py
index 96e3c60ae..66bb975ed 100644
--- a/buildstream/_frontend/app.py
+++ b/buildstream/_frontend/app.py
@@ -183,7 +183,8 @@ class App():
'builders': 'sched_builders',
'pushers': 'sched_pushers',
'network_retries': 'sched_network_retries',
- 'pull_buildtrees': 'pull_buildtrees'
+ 'pull_buildtrees': 'pull_buildtrees',
+ 'remote_execution': 'remote_execution'
}
for cli_option, context_attr in override_map.items():
option_value = self._main_options.get(cli_option)
diff --git a/buildstream/_frontend/cli.py b/buildstream/_frontend/cli.py
index 29fc4cf54..1d19408dc 100644
--- a/buildstream/_frontend/cli.py
+++ b/buildstream/_frontend/cli.py
@@ -239,6 +239,9 @@ def print_version(ctx, param, value):
help="The mirror to fetch from first, before attempting other mirrors")
@click.option('--pull-buildtrees', is_flag=True, default=None,
help="Include an element's build tree when pulling remote element artifacts")
+@click.option('--remote-execution', default='any',
+ type=click.Choice(['any', 'user', 'project', 'none']),
+ help='Select which remote execution server to use')
@click.pass_context
def cli(context, **kwargs):
"""Build and manipulate BuildStream projects
diff --git a/buildstream/_project.py b/buildstream/_project.py
index 1492fde77..fc3fb50dc 100644
--- a/buildstream/_project.py
+++ b/buildstream/_project.py
@@ -511,12 +511,23 @@ class Project():
override_specs = SandboxRemote.specs_from_config_node(
self._context.get_overrides(self.name), self.directory)
- if override_specs is not None:
- self.remote_execution_specs = override_specs
- elif project_specs is not None:
+ if self._context.remote_execution == 'any':
+ if override_specs is not None:
+ self.remote_execution_specs = override_specs
+ elif project_specs is not None:
+ self.remote_execution_specs = project_specs
+ else:
+ self.remote_execution_specs = self._context.remote_execution_specs
+ elif self._context.remote_execution == 'user':
+ if override_specs is not None:
+ self.remote_execution_specs = override_specs
+ else:
+ self.remote_execution_specs = self._context.remote_execution_specs
+ elif self._context.remote_execution == 'project':
self.remote_execution_specs = project_specs
else:
- self.remote_execution_specs = self._context.remote_execution_specs
+ assert self._context.remote_execution == 'none'
+ self.remote_execution_specs = None
# Load sandbox environment variables
self.base_environment = _yaml.node_get(config, Mapping, 'environment')
diff --git a/tests/completions/completions.py b/tests/completions/completions.py
index 372ed7840..3f6a4d46a 100644
--- a/tests/completions/completions.py
+++ b/tests/completions/completions.py
@@ -42,6 +42,7 @@ MAIN_OPTIONS = [
"--option ",
"--on-error ",
"--pull-buildtrees ",
+ "--remote-execution ",
"--pushers ",
"--strict ",
"--verbose ",