156 lines
5.2 KiB
Python
156 lines
5.2 KiB
Python
|
import boto3
|
||
|
import sure # noqa # pylint: disable=unused-import
|
||
|
|
||
|
from moto import mock_ssm
|
||
|
|
||
|
|
||
|
@mock_ssm
|
||
|
def test_describe_maintenance_window():
|
||
|
ssm = boto3.client("ssm", region_name="us-east-1")
|
||
|
|
||
|
resp = ssm.describe_maintenance_windows()
|
||
|
resp.should.have.key("WindowIdentities").equals([])
|
||
|
|
||
|
resp = ssm.describe_maintenance_windows(
|
||
|
Filters=[{"Key": "Name", "Values": ["fake-maintenance-window-name"]}]
|
||
|
)
|
||
|
resp.should.have.key("WindowIdentities").equals([])
|
||
|
|
||
|
|
||
|
@mock_ssm
|
||
|
def test_create_maintenance_windows_simple():
|
||
|
ssm = boto3.client("ssm", region_name="us-east-1")
|
||
|
|
||
|
resp = ssm.create_maintenance_window(
|
||
|
Name="simple-window",
|
||
|
Schedule="cron(15 12 * * ? *)",
|
||
|
Duration=2,
|
||
|
Cutoff=1,
|
||
|
AllowUnassociatedTargets=False,
|
||
|
)
|
||
|
resp.should.have.key("WindowId")
|
||
|
_id = resp["WindowId"] # mw-01d6bbfdf6af2c39a
|
||
|
|
||
|
resp = ssm.describe_maintenance_windows()
|
||
|
resp.should.have.key("WindowIdentities").have.length_of(1)
|
||
|
|
||
|
my_window = resp["WindowIdentities"][0]
|
||
|
my_window.should.have.key("WindowId").equal(_id)
|
||
|
my_window.should.have.key("Name").equal("simple-window")
|
||
|
my_window.should.have.key("Enabled").equal(True)
|
||
|
my_window.should.have.key("Duration").equal(2)
|
||
|
my_window.should.have.key("Cutoff").equal(1)
|
||
|
my_window.should.have.key("Schedule").equal("cron(15 12 * * ? *)")
|
||
|
# my_window.should.have.key("NextExecutionTime")
|
||
|
my_window.shouldnt.have.key("Description")
|
||
|
my_window.shouldnt.have.key("ScheduleTimezone")
|
||
|
my_window.shouldnt.have.key("ScheduleOffset")
|
||
|
my_window.shouldnt.have.key("EndDate")
|
||
|
my_window.shouldnt.have.key("StartDate")
|
||
|
|
||
|
|
||
|
@mock_ssm
|
||
|
def test_create_maintenance_windows_advanced():
|
||
|
ssm = boto3.client("ssm", region_name="us-east-1")
|
||
|
|
||
|
resp = ssm.create_maintenance_window(
|
||
|
Name="simple-window",
|
||
|
Description="French windows are just too fancy",
|
||
|
Schedule="cron(15 12 * * ? *)",
|
||
|
ScheduleTimezone="Europe/London",
|
||
|
ScheduleOffset=1,
|
||
|
Duration=5,
|
||
|
Cutoff=4,
|
||
|
AllowUnassociatedTargets=False,
|
||
|
StartDate="2021-11-01",
|
||
|
EndDate="2021-12-31",
|
||
|
)
|
||
|
resp.should.have.key("WindowId")
|
||
|
_id = resp["WindowId"] # mw-01d6bbfdf6af2c39a
|
||
|
|
||
|
resp = ssm.describe_maintenance_windows()
|
||
|
resp.should.have.key("WindowIdentities").have.length_of(1)
|
||
|
|
||
|
my_window = resp["WindowIdentities"][0]
|
||
|
my_window.should.have.key("WindowId").equal(_id)
|
||
|
my_window.should.have.key("Name").equal("simple-window")
|
||
|
my_window.should.have.key("Enabled").equal(True)
|
||
|
my_window.should.have.key("Duration").equal(5)
|
||
|
my_window.should.have.key("Cutoff").equal(4)
|
||
|
my_window.should.have.key("Schedule").equal("cron(15 12 * * ? *)")
|
||
|
# my_window.should.have.key("NextExecutionTime")
|
||
|
my_window.should.have.key("Description").equals("French windows are just too fancy")
|
||
|
my_window.should.have.key("ScheduleTimezone").equals("Europe/London")
|
||
|
my_window.should.have.key("ScheduleOffset").equals(1)
|
||
|
my_window.should.have.key("StartDate").equals("2021-11-01")
|
||
|
my_window.should.have.key("EndDate").equals("2021-12-31")
|
||
|
|
||
|
|
||
|
@mock_ssm
|
||
|
def test_get_maintenance_windows():
|
||
|
ssm = boto3.client("ssm", region_name="us-east-1")
|
||
|
|
||
|
resp = ssm.create_maintenance_window(
|
||
|
Name="my-window",
|
||
|
Schedule="cron(15 12 * * ? *)",
|
||
|
Duration=2,
|
||
|
Cutoff=1,
|
||
|
AllowUnassociatedTargets=False,
|
||
|
)
|
||
|
resp.should.have.key("WindowId")
|
||
|
_id = resp["WindowId"] # mw-01d6bbfdf6af2c39a
|
||
|
|
||
|
my_window = ssm.get_maintenance_window(WindowId=_id)
|
||
|
my_window.should.have.key("WindowId").equal(_id)
|
||
|
my_window.should.have.key("Name").equal("my-window")
|
||
|
my_window.should.have.key("Enabled").equal(True)
|
||
|
my_window.should.have.key("Duration").equal(2)
|
||
|
my_window.should.have.key("Cutoff").equal(1)
|
||
|
my_window.should.have.key("Schedule").equal("cron(15 12 * * ? *)")
|
||
|
# my_window.should.have.key("NextExecutionTime")
|
||
|
my_window.shouldnt.have.key("Description")
|
||
|
my_window.shouldnt.have.key("ScheduleTimezone")
|
||
|
my_window.shouldnt.have.key("ScheduleOffset")
|
||
|
my_window.shouldnt.have.key("EndDate")
|
||
|
my_window.shouldnt.have.key("StartDate")
|
||
|
|
||
|
|
||
|
@mock_ssm
|
||
|
def test_describe_maintenance_windows():
|
||
|
ssm = boto3.client("ssm", region_name="us-east-1")
|
||
|
|
||
|
for idx in range(0, 4):
|
||
|
ssm.create_maintenance_window(
|
||
|
Name=f"window_{idx}",
|
||
|
Schedule="cron(15 12 * * ? *)",
|
||
|
Duration=2,
|
||
|
Cutoff=1,
|
||
|
AllowUnassociatedTargets=False,
|
||
|
)
|
||
|
|
||
|
resp = ssm.describe_maintenance_windows()
|
||
|
resp.should.have.key("WindowIdentities").have.length_of(4)
|
||
|
|
||
|
resp = ssm.describe_maintenance_windows(
|
||
|
Filters=[{"Key": "Name", "Values": ["window_0", "window_2"]}]
|
||
|
)
|
||
|
resp.should.have.key("WindowIdentities").have.length_of(2)
|
||
|
|
||
|
|
||
|
@mock_ssm
|
||
|
def test_delete_maintenance_windows():
|
||
|
ssm = boto3.client("ssm", region_name="us-east-1")
|
||
|
|
||
|
resp = ssm.create_maintenance_window(
|
||
|
Name="simple-window",
|
||
|
Schedule="cron(15 12 * * ? *)",
|
||
|
Duration=2,
|
||
|
Cutoff=1,
|
||
|
AllowUnassociatedTargets=False,
|
||
|
)
|
||
|
|
||
|
ssm.delete_maintenance_window(WindowId=(resp["WindowId"]))
|
||
|
|
||
|
resp = ssm.describe_maintenance_windows()
|
||
|
resp.should.have.key("WindowIdentities").equals([])
|