Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix 790 #799

Merged
merged 3 commits into from
Nov 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Squest/version.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
__version__ = "2.6.1"
__version__ = "2.7.0b"
VERSION = __version__
2 changes: 1 addition & 1 deletion docker/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ echo "Inserting default data"
python manage.py insert_default_data

echo "Starting web server"
gunicorn --bind 0.0.0.0:8000 --pythonpath /app/squest Squest.wsgi
gunicorn --bind 0.0.0.0:8000 --workers ${GUNICORN_WORKERS:-4} --pythonpath /app/squest Squest.wsgi
2 changes: 2 additions & 0 deletions docker/environment_variables/squest.env
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,5 @@ REDIS_CACHE_HOST=redis-cache

WAIT_HOSTS=db:3306,rabbitmq:5672
WAIT_TIMEOUT=60

GUNICORN_WORKERS=4
6 changes: 6 additions & 0 deletions docs/configuration/squest_settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,12 @@ Set to `True` to enable email notifications.

Set to `True` to change the navbar and footer color to visually identify a testing instance of Squest.

### GUNICORN_WORKERS

**Default:** `4`

Number of workers used by Gunicorn process in charge of serving client connection. Increase the number of worker threads to serve more clients concurrently

## SMTP

### EMAIL_HOST
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "squest"
version = "2.6.1"
version = "2.7.0b"
description = "Service catalog on top of Red Hat Ansible Automation Platform(RHAAP)/AWX (formerly known as Ansible Tower)"
authors = ["Nicolas Marcq <[email protected]>", "Elias Boulharts <[email protected]", "Anthony Belhadj <[email protected]>"]
license = "MIT"
Expand Down
20 changes: 20 additions & 0 deletions service_catalog/models/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,26 @@ def perform_processing(self, inventory_override=None, credentials_override=None,
"squest_host": settings.SQUEST_HOST,
"request": AdminRequestSerializer(self).data
}

# load default override from the operation
if inventory_override is None:
inventory_override = self.operation.default_inventory_id
if credentials_override is None:
if self.operation.default_credentials_ids is not None:
credentials_override = self.operation.default_credentials_ids.split(",")
if tags_override is None and self.operation.default_tags is not None:
tags_override = self.operation.default_tags.split(",")
if skip_tags_override is None and self.operation.default_skip_tags is not None:
skip_tags_override = self.operation.default_skip_tags.split(",")
if limit_override is None and self.operation.default_limits is not None:
limit_override = self.operation.default_limits.split(",")
if verbosity_override is None:
verbosity_override = self.operation.default_verbosity
if job_type_override is None:
job_type_override = self.operation.default_job_type
if diff_mode_override is None:
diff_mode_override = self.operation.default_diff_mode

tower_job_id = None
try:
tower_job_id, error_message = self.operation.job_template.execute(extra_vars=tower_extra_vars,
Expand Down
39 changes: 39 additions & 0 deletions tests/test_service_catalog/test_models/test_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -537,3 +537,42 @@ def test_date_submitted_not_update_on_save(self):
old_submitted_date = new_request.date_submitted
new_request.save()
self.assertEqual(old_submitted_date, new_request.date_submitted)

def setup_default_on_operation(self):
self.create_operation_test.default_inventory_id = 1
self.create_operation_test.default_limits = "machine_one,machine_two"
self.create_operation_test.default_tags = "tag1,tag2"
self.create_operation_test.default_skip_tags = "skipped_tag1,skipped_tag2"
self.create_operation_test.default_credentials_ids = "4,5"
self.create_operation_test.default_verbosity = "3"
self.create_operation_test.default_diff_mode = "new_diff"
self.create_operation_test.default_job_type = "new_job"
self.create_operation_test.save()

def test_perform_processing_uses_default_from_operation(self):
self.create_operation_test.auto_process = True
self.setup_default_on_operation()

with mock.patch("service_catalog.models.job_templates.JobTemplate.execute") as mock_job_execute:
mock_job_execute.return_value = 10, ""
self.test_request.accept(user=self.superuser)
args, called_args = mock_job_execute.call_args
self.assertEqual(called_args["inventory_override"],1)
self.assertEqual(called_args["credentials_override"],['4','5'])
self.assertEqual(called_args["tags_override"],["tag1", "tag2"])
self.assertEqual(called_args["skip_tags_override"],["skipped_tag1","skipped_tag2"])
self.assertEqual(called_args["limit_override"],["machine_one", "machine_two"])
self.assertEqual(called_args["verbosity_override"],"3")
self.assertEqual(called_args["job_type_override"],"new_job")
self.assertEqual(called_args["diff_mode_override"],"new_diff")

def test_perform_processing_uses_default_from_operation_override_on_accept(self):
# in this test we've set default credentials on the operation, but we override them on the process request page
self.setup_default_on_operation()
self.test_request.state = RequestState.PROCESSING
self.test_request.save()
with mock.patch("service_catalog.models.job_templates.JobTemplate.execute") as mock_job_execute:
mock_job_execute.return_value = 10, ""
self.test_request.perform_processing(inventory_override=3)
args, called_args = mock_job_execute.call_args
self.assertEqual(called_args["inventory_override"], 3)
Loading