예제 #1
0
def _setup_job_graph_config_container():
    action1 = ConfigAction(
        name='action1',
        command='do something',
    )
    action2 = ConfigAction(
        name='action2',
        command='do something',
        requires=['action1'],
    )
    job1_config = ConfigJob(
        name='job1',
        node='default',
        schedule=mock.Mock(),
        actions={'action1': action1, 'action2': action2},
        namespace='MASTER',
    )

    action3 = ConfigAction(
        name='action3',
        command='do something',
        triggered_by=['MASTER.job1.action2.shortdate.{shortdate}'],
    )
    job2_config = ConfigJob(
        name='job1',
        node='default',
        schedule=mock.Mock(),
        actions={'action3': action3},
        namespace='other',
    )

    action4 = ConfigAction(
        name='action4',
        command='do something',
    )
    action5 = ConfigAction(
        name='action5',
        command='do something',
        requires=['action4'],
        triggered_by=['other.job2.action3.shortdate.{shortdate}'],
    )
    job3_config = ConfigJob(
        name='job1',
        node='default',
        schedule=mock.Mock(),
        actions={'action4': action4, 'action5': action5},
        namespace='MASTER',
    )
    config_container = mock.Mock()
    config_container.get_jobs.return_value = {
        'MASTER.job1': job1_config,
        'other.job2': job2_config,
        'MASTER.job3': job3_config,
    }
    return config_container
예제 #2
0
    def test_from_config_full(self, disk):
        config = ConfigAction(
            name="ted",
            command="do something",
            node="first",
            executor="ssh",
            cpus=1,
            mem=100,
            disk=disk,  # default: 1024.0
            constraints=[
                ConfigConstraint(
                    attribute='pool',
                    operator='LIKE',
                    value='default',
                ),
            ],
            docker_image='fake-docker.com:400/image',
            docker_parameters=[
                ConfigParameter(
                    key='test',
                    value=123,
                ),
            ],
            env={'TESTING': 'true'},
            extra_volumes=[
                ConfigVolume(
                    host_path='/tmp',
                    container_path='/nail/tmp',
                    mode='RO',
                ),
            ],
            trigger_downstreams=True,
            triggered_by=["foo.bar"],
        )
        new_action = Action.from_config(config)
        assert new_action.name == config.name
        assert new_action.node_pool is None
        assert new_action.executor == config.executor
        assert new_action.trigger_downstreams is True
        assert new_action.triggered_by == ['foo.bar']

        command_config = new_action.command_config
        assert command_config.command == config.command
        assert command_config.cpus == config.cpus
        assert command_config.mem == config.mem
        assert command_config.disk == (600. if disk else 1024.)
        assert command_config.constraints == {('pool', 'LIKE', 'default')}
        assert command_config.docker_image == config.docker_image
        assert command_config.docker_parameters == {('test', 123)}
        assert command_config.env == config.env
        assert command_config.extra_volumes == {('/nail/tmp', '/tmp', 'RO')}
예제 #3
0
 def test_from_config_none_values(self):
     config = ConfigAction(
         name="ted",
         command="do something",
         node="first",
         executor="ssh",
     )
     new_action = Action.from_config(config)
     assert new_action.name == config.name
     assert new_action.command == config.command
     assert new_action.executor == config.executor
     assert new_action.constraints == set()
     assert new_action.docker_image is None
     assert new_action.docker_parameters == set()
     assert new_action.env == {}
     assert new_action.extra_volumes == set()
예제 #4
0
 def test_from_config_none_values(self):
     config = ConfigAction(
         name="ted",
         command="do something",
         node="first",
         executor="ssh",
     )
     new_action = action.Action.from_config(config)
     assert_equal(new_action.name, config.name)
     assert_equal(new_action.command, config.command)
     assert_equal(new_action.required_actions, [])
     assert_equal(new_action.executor, config.executor)
     assert_equal(new_action.constraints, [])
     assert_equal(new_action.docker_image, None)
     assert_equal(new_action.docker_parameters, [])
     assert_equal(new_action.env, {})
     assert_equal(new_action.extra_volumes, [])
예제 #5
0
 def test_from_config_full(self):
     config = ConfigAction(
         name="ted",
         command="do something",
         node="first",
         executor="ssh",
         cpus=1,
         mem=100,
         constraints=[
             ConfigConstraint(
                 attribute='pool',
                 operator='LIKE',
                 value='default',
             ),
         ],
         docker_image='fake-docker.com:400/image',
         docker_parameters=[
             ConfigParameter(
                 key='test',
                 value=123,
             ),
         ],
         env={'TESTING': 'true'},
         extra_volumes=[
             ConfigVolume(
                 host_path='/tmp',
                 container_path='/nail/tmp',
                 mode='RO',
             ),
         ],
         trigger_downstreams=True,
         triggered_by=["foo.bar"],
     )
     new_action = action.Action.from_config(config)
     assert_equal(new_action.name, config.name)
     assert_equal(new_action.command, config.command)
     assert_equal(new_action.node_pool, None)
     assert_equal(new_action.required_actions, [])
     assert_equal(new_action.executor, config.executor)
     assert_equal(new_action.cpus, config.cpus)
     assert_equal(new_action.mem, config.mem)
     assert_equal(new_action.constraints, [['pool', 'LIKE', 'default']])
     assert_equal(new_action.docker_image, config.docker_image)
     assert_equal(
         new_action.docker_parameters,
         [{
             'key': 'test',
             'value': 123
         }],
     )
     assert_equal(new_action.env, config.env)
     assert_equal(
         new_action.extra_volumes,
         [{
             'container_path': '/nail/tmp',
             'host_path': '/tmp',
             'mode': 'RO'
         }],
     )
     assert new_action.trigger_downstreams is True
     assert new_action.triggered_by == ['foo.bar']