Ejemplo n.º 1
0
    def test_modify(self):
        '''
        Test if it modify an existing job in the schedule.
        '''
        comm1 = ('Error: Unable to use "seconds", "minutes", "hours",'
                 ' or "days" with "when" option.')
        comm2 = 'Unable to use "when" and "cron" options together.  Ignoring.'
        comm3 = 'Job job2 does not exist in schedule.'
        chan = {
            'diff': ('--- \n+++ \n@@ -0,0 +1,4 @@\n+function:test.ping\n+'
                     'jid_include:True\n+maxrunning:1\n+name:job3\n')
        }
        comm4 = 'Job: job3 would be modified in schedule.'
        with patch.dict(schedule.__opts__,
                        {'schedule': {
                            'job1': JOB1,
                            'job3': {}
                        }}):
            self.assertDictEqual(
                schedule.modify('job1',
                                function='test.ping',
                                seconds=3600,
                                when='2400'), {
                                    'changes': {},
                                    'comment': comm1,
                                    'result': False
                                })

            self.assertDictEqual(
                schedule.modify('job1',
                                function='test.ping',
                                when='2400',
                                cron='2'), {
                                    'changes': {},
                                    'comment': comm2,
                                    'result': False
                                })

            self.assertDictEqual(schedule.modify('job2'), {
                'changes': {},
                'comment': comm3,
                'result': False
            })

            self.assertDictEqual(
                schedule.modify('job1', function='test.ping'), {
                    'changes': {},
                    'comment': 'Job job1 in correct state',
                    'result': True
                })

            self.assertDictEqual(
                schedule.modify('job3', function='test.ping', test=True), {
                    'changes': chan,
                    'comment': comm4,
                    'result': True
                })
Ejemplo n.º 2
0
    def test_modify(self):
        '''
        Test if it modify an existing job in the schedule.
        '''
        comm1 = ('Error: Unable to use "seconds", "minutes", "hours",'
                 ' or "days" with "when" option.')
        comm2 = 'Unable to use "when" and "cron" options together.  Ignoring.'
        comm3 = 'Job job2 does not exist in schedule.'
        comm4 = 'Job: job3 would be modified in schedule.'
        with patch.dict(schedule.__opts__,
                        {'schedule': {
                            'job1': JOB1,
                            'job3': {}
                        }}):
            self.assertDictEqual(
                schedule.modify('job1',
                                function='test.ping',
                                seconds=3600,
                                when='2400'), {
                                    'changes': {},
                                    'comment': comm1,
                                    'result': False
                                })

            self.assertDictEqual(
                schedule.modify('job1',
                                function='test.ping',
                                when='2400',
                                cron='2'), {
                                    'changes': {},
                                    'comment': comm2,
                                    'result': False
                                })

            self.assertDictEqual(schedule.modify('job2'), {
                'changes': {},
                'comment': comm3,
                'result': False
            })

            self.assertDictEqual(
                schedule.modify('job1', function='test.ping'), {
                    'changes': {},
                    'comment': 'Job job1 in correct state',
                    'result': True
                })

            ret = schedule.modify('job3', function='test.ping', test=True)
            del ret['changes'][
                'diff']  # difflib formatting changes between 2.6 and 2.7
            self.assertDictEqual(ret, {
                'changes': {},
                'comment': comm4,
                'result': True
            })
Ejemplo n.º 3
0
    def test_modify(self):
        '''
        Test if it modify an existing job in the schedule.
        '''
        comm1 = ('Error: Unable to use "seconds", "minutes", "hours",'
                 ' or "days" with "when" option.')
        comm2 = 'Unable to use "when" and "cron" options together.  Ignoring.'
        comm3 = 'Job job2 does not exist in schedule.'
        comm4 = 'Job: job3 would be modified in schedule.'
        with patch.dict(schedule.__opts__, {'schedule': {'job1': JOB1,
                                                         'job3': {}},
                                            'sock_dir': SOCK_DIR}):

            mock = MagicMock(return_value=True)
            with patch.dict(schedule.__salt__, {'event.fire': mock}):
                _ret_value = {'complete': True, 'schedule': {'job1': JOB1,
                                                             'job3': {}}}
                with patch.object(SaltEvent, 'get_event', return_value=_ret_value):
                    self.assertDictEqual(schedule.modify('job1', function='test.ping',
                                                         seconds=3600, when='2400'),
                                         {'changes': {}, 'comment': comm1,
                                          'result': False})

                    self.assertDictEqual(schedule.modify('job1', function='test.ping',
                                                         when='2400', cron='2'),
                                         {'changes': {}, 'comment': comm2,
                                          'result': False})

                    self.assertDictEqual(schedule.modify('job2'), {'changes': {},
                                                                   'comment': comm3,
                                                                   'result': False})

                    self.assertDictEqual(schedule.modify('job1', function='test.ping'),
                                         {'changes': {},
                                          'comment': 'Job job1 in correct state',
                                          'result': True})

                    ret = schedule.modify('job3', function='test.ping', test=True)
                    if 'diff' in ret['changes']:
                        del ret['changes']['diff']  # difflib formatting changes between 2.6 and 2.7
                    self.assertDictEqual(ret, {'changes': {}, 'comment': comm4, 'result': True})
Ejemplo n.º 4
0
    def test_modify(self):
        '''
        Test if it modify an existing job in the schedule.
        '''
        comm1 = ('Error: Unable to use "seconds", "minutes", "hours",'
                 ' or "days" with "when" option.')
        comm2 = 'Unable to use "when" and "cron" options together.  Ignoring.'
        comm3 = 'Job job2 does not exist in schedule.'
        comm4 = 'Job: job3 would be modified in schedule.'
        with patch.dict(schedule.__opts__, {'schedule': {'job1': JOB1,
                                                         'job3': {}},
                                            'sock_dir': SOCK_DIR}):

            mock = MagicMock(return_value=True)
            with patch.dict(schedule.__salt__, {'event.fire': mock}):
                _ret_value = {'complete': True, 'schedule': {'job1': JOB1,
                                                             'job3': {}}}
                with patch.object(SaltEvent, 'get_event', return_value=_ret_value):
                    self.assertDictEqual(schedule.modify('job1', function='test.ping',
                                                         seconds=3600, when='2400'),
                                         {'changes': {}, 'comment': comm1,
                                          'result': False})

                    self.assertDictEqual(schedule.modify('job1', function='test.ping',
                                                         when='2400', cron='2'),
                                         {'changes': {}, 'comment': comm2,
                                          'result': False})

                    self.assertDictEqual(schedule.modify('job2'), {'changes': {},
                                                                   'comment': comm3,
                                                                   'result': False})

                    self.assertDictEqual(schedule.modify('job1', function='test.ping'),
                                         {'changes': {},
                                          'comment': 'Job job1 in correct state',
                                          'result': True})

                    ret = schedule.modify('job3', function='test.ping', test=True)
                    if 'diff' in ret['changes']:
                        del ret['changes']['diff']  # difflib formatting changes between 2.6 and 2.7
                    self.assertDictEqual(ret, {'changes': {}, 'comment': comm4, 'result': True})
Ejemplo n.º 5
0
    def test_modify(self):
        """
        Test if modifying job to the schedule.
        """
        job1 = {"function": "salt", "seconds": 3600}

        comm1 = "Modified job: job1 in schedule."
        diff1 = (
            "--- \n+++ \n@@ -1,3 +1,6 @@\n "
            "enabled:True\n function:salt\n"
            "-seconds:3600\n+jid_include:True\n"
            "+maxrunning:1\n+name:job1\n"
            "+seconds:60\n"
        )

        diff4 = (
            "--- \n+++ \n@@ -1,3 +1,5 @@\n "
            "enabled:True\n-function:salt\n"
            "-seconds:3600\n+function:test.version\n"
            "+jid_include:True\n+maxrunning:1\n"
            "+name:job1\n"
        )

        expected1 = {"comment": comm1, "changes": {"diff": diff1}, "result": True}

        comm2 = (
            'Error: Unable to use "seconds", "minutes", "hours", '
            'or "days" with "when" option.'
        )
        expected2 = {"comment": comm2, "changes": {}, "result": False}

        comm3 = 'Unable to use "when" and "cron" options together.  Ignoring.'
        expected3 = {"comment": comm3, "changes": {}, "result": False}

        comm4 = "Job: job1 would be modified in schedule."
        expected4 = {"comment": comm4, "changes": {"diff": diff4}, "result": True}

        comm5 = "Job job2 does not exist in schedule."
        expected5 = {"comment": comm5, "changes": {}, "result": False}

        with patch.dict(
            schedule.__opts__, {"schedule": {"job1": job1}, "sock_dir": self.sock_dir}
        ):
            mock = MagicMock(return_value=True)
            with patch.dict(schedule.__salt__, {"event.fire": mock}):
                _ret_value = {"complete": True, "schedule": {"job1": job1}}
                with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                    ret = schedule.modify("job1", seconds="60")
                    self.assertDictEqual(ret, expected1)

                _ret_value = {"complete": True, "schedule": {"job1": job1}}
                with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                    ret = schedule.modify(
                        "job1", function="test.ping", seconds=3600, when="2400"
                    )
                    self.assertDictEqual(ret, expected2)

                _ret_value = {"complete": True, "schedule": {"job1": job1}}
                with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                    ret = schedule.modify(
                        "job1", function="test.ping", when="2400", cron="2"
                    )
                    self.assertDictEqual(ret, expected3)

                _ret_value = {"complete": True, "schedule": {"job1": job1}}
                with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                    ret = schedule.modify("job1", function="test.version", test=True)
                    self.assertDictEqual(ret, expected4)

                _ret_value = {"complete": True, "schedule": {}}
                with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                    ret = schedule.modify("job2", function="test.version", test=True)
                    self.assertDictEqual(ret, expected5)
Ejemplo n.º 6
0
    def test_modify(self):
        '''
        Test if modifying job to the schedule.
        '''
        job1 = {'function': 'salt', 'seconds': 3600}

        comm1 = 'Modified job: job1 in schedule.'
        diff1 = ('--- \n+++ \n@@ -1,3 +1,6 @@\n '
                 'enabled:True\n function:salt\n'
                 '-seconds:3600\n+jid_include:True\n'
                 '+maxrunning:1\n+name:job1\n'
                 '+seconds:60\n')

        diff4 = ('--- \n+++ \n@@ -1,3 +1,5 @@\n '
                 'enabled:True\n-function:salt\n'
                 '-seconds:3600\n+function:test.version\n'
                 '+jid_include:True\n+maxrunning:1\n'
                 '+name:job1\n')

        expected1 = {'comment': comm1,
                     'changes': {'diff': diff1},
                     'result': True}

        comm2 = 'Error: Unable to use "seconds", "minutes", "hours", ' \
                'or "days" with "when" option.'
        expected2 = {'comment': comm2,
                     'changes': {},
                     'result': False}

        comm3 = 'Unable to use "when" and "cron" options together.  Ignoring.'
        expected3 = {'comment': comm3,
                     'changes': {},
                     'result': False}

        comm4 = 'Job: job1 would be modified in schedule.'
        expected4 = {'comment': comm4,
                     'changes': {'diff': diff4},
                     'result': True}

        comm5 = 'Job job2 does not exist in schedule.'
        expected5 = {'comment': comm5,
                     'changes': {},
                     'result': False}

        with patch.dict(schedule.__opts__, {'schedule': {'job1': job1}, 'sock_dir': self.sock_dir}):
            mock = MagicMock(return_value=True)
            with patch.dict(schedule.__salt__, {'event.fire': mock}):
                _ret_value = {'complete': True, 'schedule': {'job1': job1}}
                with patch.object(SaltEvent, 'get_event', return_value=_ret_value):
                    ret = schedule.modify('job1', seconds='60')
                    self.assertDictEqual(ret, expected1)

                _ret_value = {'complete': True, 'schedule': {'job1': job1}}
                with patch.object(SaltEvent, 'get_event', return_value=_ret_value):
                    ret = schedule.modify('job1', function='test.ping',
                                          seconds=3600, when='2400')
                    self.assertDictEqual(ret, expected2)

                _ret_value = {'complete': True, 'schedule': {'job1': job1}}
                with patch.object(SaltEvent, 'get_event', return_value=_ret_value):
                    ret = schedule.modify('job1', function='test.ping',
                                          when='2400', cron='2')
                    self.assertDictEqual(ret, expected3)

                _ret_value = {'complete': True, 'schedule': {'job1': job1}}
                with patch.object(SaltEvent, 'get_event', return_value=_ret_value):
                    ret = schedule.modify('job1', function='test.version', test=True)
                    self.assertDictEqual(ret, expected4)

                _ret_value = {'complete': True, 'schedule': {}}
                with patch.object(SaltEvent, 'get_event', return_value=_ret_value):
                    ret = schedule.modify('job2', function='test.version', test=True)
                    self.assertDictEqual(ret, expected5)
Ejemplo n.º 7
0
def test_modify(sock_dir):
    """
    Test if modifying job to the schedule.
    """
    current_job1 = {
        "function": "salt",
        "seconds": "3600",
        "maxrunning": 1,
        "name": "job1",
        "enabled": True,
        "jid_include": True,
    }

    new_job1 = {
        "function": "salt",
        "seconds": "60",
        "maxrunning": 1,
        "name": "job1",
        "enabled": True,
        "jid_include": True,
    }

    comm1 = "Modified job: job1 in schedule."
    changes1 = {
        "job1": {
            "new": salt.utils.odict.OrderedDict(new_job1),
            "old": salt.utils.odict.OrderedDict(current_job1),
        }
    }

    new_job4 = {
        "function": "test.version",
        "seconds": "3600",
        "maxrunning": 1,
        "name": "job1",
        "enabled": True,
        "jid_include": True,
    }

    changes4 = {
        "job1": {
            "new": salt.utils.odict.OrderedDict(new_job4),
            "old": salt.utils.odict.OrderedDict(current_job1),
        }
    }

    expected1 = {"comment": comm1, "changes": changes1, "result": True}

    comm2 = ('Error: Unable to use "seconds", "minutes", "hours", '
             'or "days" with "when" option.')
    expected2 = {"comment": comm2, "changes": {}, "result": False}

    comm3 = 'Unable to use "when" and "cron" options together.  Ignoring.'
    expected3 = {"comment": comm3, "changes": {}, "result": False}

    comm4 = "Job: job1 would be modified in schedule."
    expected4 = {"comment": comm4, "changes": changes4, "result": True}

    comm5 = "Job job2 does not exist in schedule."
    expected5 = {"comment": comm5, "changes": {}, "result": False}

    with patch.dict(schedule.__opts__, {
            "schedule": {
                "job1": current_job1
            },
            "sock_dir": sock_dir
    }):
        mock = MagicMock(return_value=True)
        with patch.dict(schedule.__salt__, {"event.fire": mock}):
            _ret_value = {"complete": True, "schedule": {"job1": current_job1}}
            with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                ret = schedule.modify("job1", seconds="60")
                assert "job1" in ret["changes"]
                assert "new" in ret["changes"]["job1"]
                assert "old" in ret["changes"]["job1"]

                for key in [
                        "maxrunning",
                        "function",
                        "seconds",
                        "jid_include",
                        "name",
                        "enabled",
                ]:
                    assert (ret["changes"]["job1"]["new"][key] ==
                            expected1["changes"]["job1"]["new"][key])
                    assert (ret["changes"]["job1"]["old"][key] ==
                            expected1["changes"]["job1"]["old"][key])

                assert ret["comment"] == expected1["comment"]
                assert ret["result"] == expected1["result"]

            _ret_value = {"complete": True, "schedule": {"job1": current_job1}}
            with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                ret = schedule.modify("job1",
                                      function="test.ping",
                                      seconds=3600,
                                      when="2400")
                assert ret == expected2

            _ret_value = {"complete": True, "schedule": {"job1": current_job1}}
            with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                ret = schedule.modify("job1",
                                      function="test.ping",
                                      when="2400",
                                      cron="2")
                assert ret == expected3

            _ret_value = {"complete": True, "schedule": {"job1": current_job1}}
            with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                ret = schedule.modify("job1",
                                      function="test.version",
                                      test=True)

                assert "job1" in ret["changes"]
                assert "new" in ret["changes"]["job1"]
                assert "old" in ret["changes"]["job1"]

                for key in [
                        "maxrunning",
                        "function",
                        "seconds",
                        "jid_include",
                        "name",
                        "enabled",
                ]:
                    assert (ret["changes"]["job1"]["new"][key] ==
                            expected4["changes"]["job1"]["new"][key])
                    assert (ret["changes"]["job1"]["old"][key] ==
                            expected4["changes"]["job1"]["old"][key])

                assert ret["comment"] == expected4["comment"]
                assert ret["result"] == expected4["result"]

            _ret_value = {"complete": True, "schedule": {}}
            with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                ret = schedule.modify("job2",
                                      function="test.version",
                                      test=True)
                assert ret == expected5
Ejemplo n.º 8
0
def test_modify(sock_dir, job1):
    """
    Test if modifying job to the schedule.
    """
    current_job1 = {
        "function": "salt",
        "seconds": "3600",
        "maxrunning": 1,
        "name": "job1",
        "enabled": True,
        "jid_include": True,
    }

    new_job1 = {
        "function": "salt",
        "seconds": "60",
        "maxrunning": 1,
        "name": "job1",
        "enabled": True,
        "jid_include": True,
    }

    comm1 = "Modified job: job1 in schedule."
    changes1 = {
        "job1": {
            "new": salt.utils.odict.OrderedDict(new_job1),
            "old": salt.utils.odict.OrderedDict(current_job1),
        }
    }

    new_job4 = {
        "function": "test.version",
        "seconds": "3600",
        "maxrunning": 1,
        "name": "job1",
        "enabled": True,
        "jid_include": True,
    }

    changes4 = {
        "job1": {
            "new": salt.utils.odict.OrderedDict(new_job4),
            "old": salt.utils.odict.OrderedDict(current_job1),
        }
    }

    expected1 = {"comment": comm1, "changes": changes1, "result": True}

    comm2 = ('Error: Unable to use "seconds", "minutes", "hours", '
             'or "days" with "when" option.')
    expected2 = {"comment": comm2, "changes": {}, "result": False}

    comm3 = 'Unable to use "when" and "cron" options together.  Ignoring.'
    expected3 = {"comment": comm3, "changes": {}, "result": False}

    comm4 = "Job: job1 would be modified in schedule."
    expected4 = {"comment": comm4, "changes": changes4, "result": True}

    comm5 = "Job job2 does not exist in schedule."
    expected5 = {"comment": comm5, "changes": {}, "result": False}

    with patch.dict(schedule.__opts__, {
            "schedule": {
                "job1": current_job1
            },
            "sock_dir": sock_dir
    }):
        mock = MagicMock(return_value=True)
        with patch.dict(schedule.__salt__, {"event.fire": mock}):
            _ret_value = {"complete": True, "schedule": {"job1": current_job1}}
            with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                ret = schedule.modify("job1", seconds="60")
                assert "job1" in ret["changes"]
                assert "new" in ret["changes"]["job1"]
                assert "old" in ret["changes"]["job1"]

                for key in [
                        "maxrunning",
                        "function",
                        "seconds",
                        "jid_include",
                        "name",
                        "enabled",
                ]:
                    assert (ret["changes"]["job1"]["new"][key] ==
                            expected1["changes"]["job1"]["new"][key])
                    assert (ret["changes"]["job1"]["old"][key] ==
                            expected1["changes"]["job1"]["old"][key])

                assert ret["comment"] == expected1["comment"]
                assert ret["result"] == expected1["result"]

            _ret_value = {"complete": True, "schedule": {"job1": current_job1}}
            with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                ret = schedule.modify("job1",
                                      function="test.ping",
                                      seconds=3600,
                                      when="2400")
                assert ret == expected2

            _ret_value = {"complete": True, "schedule": {"job1": current_job1}}
            with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                ret = schedule.modify("job1",
                                      function="test.ping",
                                      when="2400",
                                      cron="2")
                assert ret == expected3

            _ret_value = {"complete": True, "schedule": {"job1": current_job1}}
            with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                ret = schedule.modify("job1",
                                      function="test.version",
                                      test=True)

                assert "job1" in ret["changes"]
                assert "new" in ret["changes"]["job1"]
                assert "old" in ret["changes"]["job1"]

                for key in [
                        "maxrunning",
                        "function",
                        "jid_include",
                        "name",
                        "enabled",
                ]:
                    assert (ret["changes"]["job1"]["new"][key] ==
                            expected4["changes"]["job1"]["new"][key])
                    assert (ret["changes"]["job1"]["old"][key] ==
                            expected4["changes"]["job1"]["old"][key])

                assert ret["comment"] == expected4["comment"]
                assert ret["result"] == expected4["result"]

            _ret_value = {"complete": True, "schedule": {}}
            with patch.object(SaltEvent, "get_event", return_value=_ret_value):
                ret = schedule.modify("job2",
                                      function="test.version",
                                      test=True)
                assert ret == expected5

    _schedule_data = {"job1": job1}
    comm = "Modified job: job1 in schedule."
    changes = {"job1": "removed"}

    changes = {
        "job1": {
            "new":
            OrderedDict([
                ("function", "test.version"),
                ("maxrunning", 1),
                ("name", "job1"),
                ("enabled", True),
                ("jid_include", True),
            ]),
            "old":
            OrderedDict([
                ("function", "test.ping"),
                ("maxrunning", 1),
                ("name", "job1"),
                ("jid_include", True),
                ("enabled", True),
            ]),
        }
    }
    schedule_config_file = schedule._get_schedule_config_file()
    with patch.dict(schedule.__opts__, {
            "schedule": {
                "job1": "salt"
            },
            "sock_dir": sock_dir
    }):
        with patch("salt.utils.files.fopen",
                   mock_open(read_data="")) as fopen_mock:
            with patch.object(schedule, "list_",
                              MagicMock(return_value=_schedule_data)):
                ret = schedule.modify("job1",
                                      function="test.version",
                                      offline="True")
                assert ret["comment"] == comm
                assert ret["result"]
                assert all([
                    True for k, v in ret["changes"]["job1"]["old"].items()
                    if v == changes["job1"]["old"][k]
                ])
                assert all([
                    True for k, v in ret["changes"]["job1"]["new"].items()
                    if v == changes["job1"]["new"][k]
                ])

                _call = call(
                    b"schedule:\n  job1: {enabled: true, function: test.version, jid_include: true, maxrunning: 1,\n    name: job1}\n"
                )
                write_calls = fopen_mock.filehandles[schedule_config_file][
                    0].write._mock_mock_calls
                assert _call in write_calls