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

add auto_update_docker_image #4133

Merged
merged 11 commits into from
Mar 14, 2024
4 changes: 4 additions & 0 deletions .changelog/4133.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
changes:
- description: Added `auto_update_docker_image` to IntegrationScript graph object.
JudahSchwartz marked this conversation as resolved.
Show resolved Hide resolved
type: feature
pr_number: 4133
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ class IntegrationScript(ContentItem):
subtype: Optional[str]
docker_image: DockerImage = DockerImage("")
alt_docker_images: List[str] = []
auto_update_docker_image: bool = True
description: Optional[str] = Field("")
is_unified: bool = Field(False, exclude=True)
code: Optional[str] = Field(None, exclude=True)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,3 +86,11 @@ def subtype(self):
if not subtype and self.type == "python":
subtype = "python2"
return subtype

@property
def auto_update_docker_image(self):
return (
get_value(
self.yml_data, self.field_mapping.get("autoUpdateDockerImage", "")
)
).lower() != "false"
Original file line number Diff line number Diff line change
Expand Up @@ -1263,11 +1263,35 @@
)
assert model.type == "python"
assert model.subtype == "python3"
assert model.auto_update_docker_image
GuyAfik marked this conversation as resolved.
Show resolved Hide resolved
assert model.docker_image == "demisto/python3:3.8.3.8715"
assert model.tags == ["transformer"]
assert not model.is_test
assert not model.skip_prepare

@pytest.mark.parametrize(
"raw_value, expected_value", [("false", False), ("true", True)]
)
def test_script_parser_set_autoupdate(self, raw_value, expected_value, pack: Pack):
"""
Given:
- A pack with a script.
When:
- setting autoUpdateDockerImage
Then:
- Verify the field is parsed correctly
"""
from demisto_sdk.commands.content_graph.objects.script import Script
from demisto_sdk.commands.content_graph.parsers.script import ScriptParser

script = pack.create_script()
script.create_default_script()
script.yml.update({"autoUpdateDockerImage": raw_value})
script_path = Path(script.path)
parser = ScriptParser(script_path, list(MarketplaceVersions))
model = Script.from_orm(parser)
assert model.auto_update_docker_image is expected_value

Check failure on line 1293 in demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py

View workflow job for this annotation

GitHub Actions / Graph Tests / Python 3.8

TestParsersAndModels.test_script_parser_set_autoupdate[false-False] assert True is False + where True = Script(database_id=None, object_id='sample_script', source_repo='', node_id='Script:sample_script', marketplaces=[<MarketplaceVersions.MarketplaceV2: 'marketplacev2'>, <MarketplaceVersions.XPANSE: 'xpanse'>, <MarketplaceVersions.XSOAR: 'xsoar'>, <MarketplaceVersions.XSOAR_ON_PREM: 'xsoar_on_prem'>, <MarketplaceVersions.XSOAR_SAAS: 'xsoar_saas'>], field_mapping={'name': 'name', 'deprecated': 'deprecated', 'description': 'comment', 'fromversion': 'fromversion', 'toversion': 'toversion', 'version': 'commonfields.version', 'object_id': 'commonfields.id', 'docker_image': 'dockerimage', 'type': 'type', 'subtype': 'subtype', 'alt_docker_images': 'alt_dockerimages'}, path=PosixPath('/tmp/pytest-of-runner/pytest-0/test_script_parser_set_autoupd0/Packs/pack_0/Scripts/script0/script0.yml'), git_status=None, git_sha=None, old_base_content_object=None, related_content_dict={}, name='sample_script', fromversion='5.0.0', toversion='99.99.99', display_name='sample_script', deprecated=False, description='Sample Script', is_test=False, type='python', subtype='python3', docker_image='demisto/python3:3.8.3.8715', alt_docker_images=[], auto_update_docker_image=True, is_unified=False, code='print("This is a test") # noqa: T201\n', unified_data=None, version=-1, tags=['transformer'], skip_prepare=[], runas='', args=[Argument(name='value', description='sample arg', required=True, default=True, predefined=None, isArray=None, defaultvalue=None, secret=None, deprecated=False, type=None, hidden=False, auto=None)]).auto_update_docker_image

Check failure on line 1293 in demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py

View workflow job for this annotation

GitHub Actions / Graph Tests / Python 3.9

TestParsersAndModels.test_script_parser_set_autoupdate[false-False] assert True is False + where True = Script(database_id=None, object_id='sample_script', source_repo='', node_id='Script:sample_script', marketplaces=[<MarketplaceVersions.MarketplaceV2: 'marketplacev2'>, <MarketplaceVersions.XPANSE: 'xpanse'>, <MarketplaceVersions.XSOAR: 'xsoar'>, <MarketplaceVersions.XSOAR_ON_PREM: 'xsoar_on_prem'>, <MarketplaceVersions.XSOAR_SAAS: 'xsoar_saas'>], field_mapping={'name': 'name', 'deprecated': 'deprecated', 'description': 'comment', 'fromversion': 'fromversion', 'toversion': 'toversion', 'version': 'commonfields.version', 'object_id': 'commonfields.id', 'docker_image': 'dockerimage', 'type': 'type', 'subtype': 'subtype', 'alt_docker_images': 'alt_dockerimages'}, path=PosixPath('/tmp/pytest-of-runner/pytest-0/test_script_parser_set_autoupd0/Packs/pack_0/Scripts/script0/script0.yml'), git_status=None, git_sha=None, old_base_content_object=None, related_content_dict={}, name='sample_script', fromversion='5.0.0', toversion='99.99.99', display_name='sample_script', deprecated=False, description='Sample Script', is_test=False, type='python', subtype='python3', docker_image='demisto/python3:3.8.3.8715', alt_docker_images=[], auto_update_docker_image=True, is_unified=False, code='print("This is a test") # noqa: T201\n', unified_data=None, version=-1, tags=['transformer'], skip_prepare=[], runas='', args=[Argument(name='value', description='sample arg', required=True, default=True, predefined=None, isArray=None, defaultvalue=None, secret=None, deprecated=False, type=None, hidden=False, auto=None)]).auto_update_docker_image

Check failure on line 1293 in demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py

View workflow job for this annotation

GitHub Actions / Graph Tests / Python 3.10

TestParsersAndModels.test_script_parser_set_autoupdate[false-False] assert True is False + where True = Script(database_id=None, object_id='sample_script', source_repo='', node_id='Script:sample_script', marketplaces=[<MarketplaceVersions.MarketplaceV2: 'marketplacev2'>, <MarketplaceVersions.XPANSE: 'xpanse'>, <MarketplaceVersions.XSOAR: 'xsoar'>, <MarketplaceVersions.XSOAR_ON_PREM: 'xsoar_on_prem'>, <MarketplaceVersions.XSOAR_SAAS: 'xsoar_saas'>], field_mapping={'name': 'name', 'deprecated': 'deprecated', 'description': 'comment', 'fromversion': 'fromversion', 'toversion': 'toversion', 'version': 'commonfields.version', 'object_id': 'commonfields.id', 'docker_image': 'dockerimage', 'type': 'type', 'subtype': 'subtype', 'alt_docker_images': 'alt_dockerimages'}, path=PosixPath('/tmp/pytest-of-runner/pytest-0/test_script_parser_set_autoupd0/Packs/pack_0/Scripts/script0/script0.yml'), git_status=None, git_sha=None, old_base_content_object=None, related_content_dict={}, name='sample_script', fromversion='5.0.0', toversion='99.99.99', display_name='sample_script', deprecated=False, description='Sample Script', is_test=False, type='python', subtype='python3', docker_image='demisto/python3:3.8.3.8715', alt_docker_images=[], auto_update_docker_image=True, is_unified=False, code='print("This is a test") # noqa: T201\n', unified_data=None, version=-1, tags=['transformer'], skip_prepare=[], runas='', args=[Argument(name='value', description='sample arg', required=True, default=True, predefined=None, isArray=None, defaultvalue=None, secret=None, deprecated=False, type=None, hidden=False, auto=None)]).auto_update_docker_image

def test_test_playbook_parser(self, pack: Pack):
"""
Given:
Expand Down