class UpdateComponentDependenciesTraitTransformer(TraitTransformer): name = 'update_component_deps' def __init__(self, trait, *args, **kwargs): self.trait = trait super().__init__(*args, **kwargs) @classmethod def order_dependencies(cls): return {'component_descriptor'} @classmethod def dependencies(cls): return {'component_descriptor'} def inject_steps(self): if self.trait.set_dependency_version_script_container_image(): privilege_mode = PrivilegeMode.PRIVILEGED else: privilege_mode = PrivilegeMode.UNPRIVILEGED # declare no dependencies --> run asap, but do not block other steps self.update_component_deps_step = PipelineStep( name='update_component_dependencies', raw_dict={ 'privilege_mode': privilege_mode, }, is_synthetic=True, pull_request_notification_policy=PullRequestNotificationPolicy. NO_NOTIFICATION, injecting_trait_name=self.name, script_type=ScriptType.PYTHON3) self.update_component_deps_step.add_input( name=concourse.model.traits.component_descriptor.DIR_NAME, variable_name=concourse.model.traits.component_descriptor. ENV_VAR_NAME, ) self.update_component_deps_step.set_timeout(duration_string='30m') for name, value in self.trait.vars().items(): self.update_component_deps_step.variables()[name] = value yield self.update_component_deps_step def process_pipeline_args(self, pipeline_args: JobVariant): # our step depends on dependendency descriptor step component_descriptor_step = pipeline_args.step( concourse.model.traits.component_descriptor. DEFAULT_COMPONENT_DESCRIPTOR_STEP_NAME) self.update_component_deps_step._add_dependency( component_descriptor_step) upstream_component_name = self.trait.upstream_component_name() if upstream_component_name: self.update_component_deps_step.variables( )['UPSTREAM_COMPONENT_NAME'] = '"{cn}"'.format( cn=upstream_component_name, )
class UpdateComponentDependenciesTraitTransformer(TraitTransformer): name = 'update_component_deps' def __init__(self, trait, *args, **kwargs): self.trait = trait super().__init__(*args, **kwargs) @classmethod def order_dependencies(cls): return {'component_descriptor'} @classmethod def dependencies(cls): return {'component_descriptor'} def inject_steps(self): # declare no dependencies --> run asap, but do not block other steps self.update_component_deps_step = PipelineStep( name='update_component_dependencies', raw_dict={}, is_synthetic=True, notification_policy=StepNotificationPolicy.NO_NOTIFICATION, script_type=ScriptType.PYTHON3 ) self.update_component_deps_step.add_input( name=concourse.model.traits.component_descriptor.DIR_NAME, variable_name=concourse.model.traits.component_descriptor.ENV_VAR_NAME, ) self.update_component_deps_step.set_timeout(duration_string='30m') for name, value in self.trait.vars().items(): self.update_component_deps_step.variables()[name] = value yield self.update_component_deps_step def process_pipeline_args(self, pipeline_args: JobVariant): # our step depends on dependendency descriptor step component_descriptor_step = pipeline_args.step('component_descriptor') self.update_component_deps_step._add_dependency(component_descriptor_step) upstream_component_name = self.trait.upstream_component_name() if upstream_component_name: self.update_component_deps_step.variables()['UPSTREAM_COMPONENT_NAME'] = '"{cn}"'.format( cn=upstream_component_name, )