parent
e22e103cdf
commit
fe86a93482
3 changed files with 64 additions and 0 deletions
2
changelogs/fragments/70449-facts-add-dst-timezone.yml
Normal file
2
changelogs/fragments/70449-facts-add-dst-timezone.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
minor_changes:
|
||||||
|
- facts - add new fact ``date_time['tz_dst']``, which returns the daylight saving timezone (https://github.com/ansible/ansible/issues/69004).
|
|
@ -53,6 +53,7 @@ class DateTimeFactCollector(BaseFactCollector):
|
||||||
date_time_facts['iso8601_basic'] = now.strftime("%Y%m%dT%H%M%S%f")
|
date_time_facts['iso8601_basic'] = now.strftime("%Y%m%dT%H%M%S%f")
|
||||||
date_time_facts['iso8601_basic_short'] = now.strftime("%Y%m%dT%H%M%S")
|
date_time_facts['iso8601_basic_short'] = now.strftime("%Y%m%dT%H%M%S")
|
||||||
date_time_facts['tz'] = time.strftime("%Z")
|
date_time_facts['tz'] = time.strftime("%Z")
|
||||||
|
date_time_facts['tz_dst'] = time.tzname[1]
|
||||||
date_time_facts['tz_offset'] = time.strftime("%z")
|
date_time_facts['tz_offset'] = time.strftime("%z")
|
||||||
|
|
||||||
facts_dict['date_time'] = date_time_facts
|
facts_dict['date_time'] = date_time_facts
|
||||||
|
|
61
test/units/module_utils/facts/tests_date_time.py
Normal file
61
test/units/module_utils/facts/tests_date_time.py
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (c) 2020 Ansible Project
|
||||||
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
|
|
||||||
|
from __future__ import absolute_import, division, print_function
|
||||||
|
__metaclass__ = type
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from ansible.module_utils.facts.system.date_time import DateTimeFactCollector
|
||||||
|
|
||||||
|
TIMESTAMP = datetime.datetime(2020, 7, 11, 12, 34, 56, 124356)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def fake_now(monkeypatch):
|
||||||
|
"""Patch `datetime.datetime.now()` to return a deterministic value."""
|
||||||
|
class FakeNow:
|
||||||
|
@classmethod
|
||||||
|
def now(cls):
|
||||||
|
return TIMESTAMP
|
||||||
|
|
||||||
|
monkeypatch.setattr(datetime, 'datetime', FakeNow)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def date_facts(monkeypatch, fake_now):
|
||||||
|
"""Return a predictable instance of collected date_time facts."""
|
||||||
|
monkeypatch.setenv('TZ', 'Australia/Melbourne')
|
||||||
|
|
||||||
|
collector = DateTimeFactCollector()
|
||||||
|
data = collector.collect()
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
('fact_name', 'fact_value'),
|
||||||
|
(
|
||||||
|
('year', '2020'),
|
||||||
|
('month', '07'),
|
||||||
|
('weekday', 'Saturday'),
|
||||||
|
('weekday_number', '6'),
|
||||||
|
('weeknumber', '27'),
|
||||||
|
('day', '11'),
|
||||||
|
('hour', '12'),
|
||||||
|
('minute', '34'),
|
||||||
|
('second', '56'),
|
||||||
|
('epoch', '1594434896'),
|
||||||
|
('date', '2020-07-11'),
|
||||||
|
('time', '12:34:56'),
|
||||||
|
('iso8601_basic', '20200711T123456124356'),
|
||||||
|
('iso8601_basic_short', '20200711T123456'),
|
||||||
|
('tz', 'AEST'),
|
||||||
|
('tz_dst', 'AEDT'),
|
||||||
|
('tz_offset', '+1000')
|
||||||
|
),
|
||||||
|
)
|
||||||
|
def test_date_time_facts(date_facts, fact_name, fact_value):
|
||||||
|
assert date_facts['date_time'][fact_name] == fact_value
|
Loading…
Reference in a new issue