From e2a9d8b9a77d97ae8b37f580866e0ca0e4f0f3d8 Mon Sep 17 00:00:00 2001 From: Trixie Zhang Date: Tue, 5 Dec 2017 14:08:11 -0600 Subject: [PATCH 1/2] Added option of Interval Scheduling --- SoftLayer/CLI/block/replication/order.py | 4 ++-- SoftLayer/CLI/block/snapshot/disable.py | 7 +++---- SoftLayer/CLI/block/snapshot/enable.py | 8 ++++---- SoftLayer/CLI/file/replication/order.py | 4 ++-- SoftLayer/CLI/file/snapshot/disable.py | 7 +++---- SoftLayer/CLI/file/snapshot/enable.py | 8 ++++---- SoftLayer/managers/block.py | 4 +++- SoftLayer/managers/file.py | 4 +++- 8 files changed, 24 insertions(+), 22 deletions(-) diff --git a/SoftLayer/CLI/block/replication/order.py b/SoftLayer/CLI/block/replication/order.py index 5aebea17e..743c91c0e 100644 --- a/SoftLayer/CLI/block/replication/order.py +++ b/SoftLayer/CLI/block/replication/order.py @@ -14,9 +14,9 @@ @click.argument('volume_id') @click.option('--snapshot-schedule', '-s', help='Snapshot schedule to use for replication, ' - '(HOURLY | DAILY | WEEKLY)', + '(INTERVAL | HOURLY | DAILY | WEEKLY)', required=True, - type=click.Choice(['HOURLY', 'DAILY', 'WEEKLY'])) + type=click.Choice(['INTERVAL', 'HOURLY', 'DAILY', 'WEEKLY'])) @click.option('--location', '-l', help='Short name of the data center for the replicant ' '(e.g.: dal09)', diff --git a/SoftLayer/CLI/block/snapshot/disable.py b/SoftLayer/CLI/block/snapshot/disable.py index f34d3483d..0d776bc7e 100644 --- a/SoftLayer/CLI/block/snapshot/disable.py +++ b/SoftLayer/CLI/block/snapshot/disable.py @@ -10,16 +10,15 @@ @click.command() @click.argument('volume_id') @click.option('--schedule-type', - help='Snapshot schedule [HOURLY|DAILY|WEEKLY]', + help='Snapshot schedule [INTERVAL|HOURLY|DAILY|WEEKLY]', required=True) @environment.pass_env def cli(env, volume_id, schedule_type): """Disables snapshots on the specified schedule for a given volume""" - if (schedule_type != 'HOURLY' and schedule_type != 'DAILY' - and schedule_type != 'WEEKLY'): + if (schedule_type not in ['INTERVAL', 'HOURLY', 'DAILY', 'WEEKLY']): raise exceptions.CLIAbort( - '--schedule-type must be HOURLY, DAILY, or WEEKLY') + '--schedule-type must be INTERVAL, HOURLY, DAILY, or WEEKLY') block_manager = SoftLayer.BlockStorageManager(env.client) disabled = block_manager.disable_snapshots(volume_id, schedule_type) diff --git a/SoftLayer/CLI/block/snapshot/enable.py b/SoftLayer/CLI/block/snapshot/enable.py index 6ade94647..0ab2512e7 100644 --- a/SoftLayer/CLI/block/snapshot/enable.py +++ b/SoftLayer/CLI/block/snapshot/enable.py @@ -10,7 +10,7 @@ @click.command() @click.argument('volume_id') @click.option('--schedule-type', - help='Snapshot schedule [HOURLY|DAILY|WEEKLY]', + help='Snapshot schedule [INTERVAL|HOURLY|DAILY|WEEKLY]', required=True) @click.option('--retention-count', help='Number of snapshots to retain', @@ -30,14 +30,14 @@ def cli(env, volume_id, schedule_type, retention_count, """Enables snapshots for a given volume on the specified schedule""" block_manager = SoftLayer.BlockStorageManager(env.client) - valid_schedule_types = {'HOURLY', 'DAILY', 'WEEKLY'} + valid_schedule_types = {'INTERVAL', 'HOURLY', 'DAILY', 'WEEKLY'} valid_days = {'SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY'} if schedule_type not in valid_schedule_types: raise exceptions.CLIAbort( - '--schedule-type must be HOURLY, DAILY, or WEEKLY, not ' - + schedule_type) + '--schedule-type must be INTERVAL, HOURLY, DAILY,' + + 'or WEEKLY, not ' + schedule_type) if minute < 0 or minute > 59: raise exceptions.CLIAbort( diff --git a/SoftLayer/CLI/file/replication/order.py b/SoftLayer/CLI/file/replication/order.py index 4b3231e66..9ba2c84f8 100644 --- a/SoftLayer/CLI/file/replication/order.py +++ b/SoftLayer/CLI/file/replication/order.py @@ -14,9 +14,9 @@ @click.argument('volume_id') @click.option('--snapshot-schedule', '-s', help='Snapshot schedule to use for replication, ' - '(HOURLY | DAILY | WEEKLY)', + '(INTERVAL | HOURLY | DAILY | WEEKLY)', required=True, - type=click.Choice(['HOURLY', 'DAILY', 'WEEKLY'])) + type=click.Choice(['INTERVAL', 'HOURLY', 'DAILY', 'WEEKLY'])) @click.option('--location', '-l', help='Short name of the data center for the replicant ' '(e.g.: dal09)', diff --git a/SoftLayer/CLI/file/snapshot/disable.py b/SoftLayer/CLI/file/snapshot/disable.py index 9ec4fde82..07d68c467 100644 --- a/SoftLayer/CLI/file/snapshot/disable.py +++ b/SoftLayer/CLI/file/snapshot/disable.py @@ -10,16 +10,15 @@ @click.command() @click.argument('volume_id') @click.option('--schedule-type', - help='Snapshot schedule [HOURLY|DAILY|WEEKLY]', + help='Snapshot schedule [INTERVAL|HOURLY|DAILY|WEEKLY]', required=True) @environment.pass_env def cli(env, volume_id, schedule_type): """Disables snapshots on the specified schedule for a given volume""" - if (schedule_type != 'HOURLY' and schedule_type != 'DAILY' - and schedule_type != 'WEEKLY'): + if (schedule_type not in ['INTERVAL', 'HOURLY', 'DAILY', 'WEEKLY']): raise exceptions.CLIAbort( - '--schedule_type must be HOURLY, DAILY, or WEEKLY') + '--schedule_type must be INTERVAL, HOURLY, DAILY, or WEEKLY') file_manager = SoftLayer.FileStorageManager(env.client) disabled = file_manager.disable_snapshots(volume_id, schedule_type) diff --git a/SoftLayer/CLI/file/snapshot/enable.py b/SoftLayer/CLI/file/snapshot/enable.py index 7e73feefd..2fb56bf35 100644 --- a/SoftLayer/CLI/file/snapshot/enable.py +++ b/SoftLayer/CLI/file/snapshot/enable.py @@ -10,7 +10,7 @@ @click.command() @click.argument('volume_id') @click.option('--schedule-type', - help='Snapshot schedule [HOURLY|DAILY|WEEKLY]', + help='Snapshot schedule [INTERVAL|HOURLY|DAILY|WEEKLY]', required=True) @click.option('--retention-count', help='Number of snapshots to retain', @@ -30,14 +30,14 @@ def cli(env, volume_id, schedule_type, retention_count, """Enables snapshots for a given volume on the specified schedule""" file_manager = SoftLayer.FileStorageManager(env.client) - valid_schedule_types = {'HOURLY', 'DAILY', 'WEEKLY'} + valid_schedule_types = {'INTERVAL', 'HOURLY', 'DAILY', 'WEEKLY'} valid_days = {'SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY'} if schedule_type not in valid_schedule_types: raise exceptions.CLIAbort( - '--schedule-type must be HOURLY, DAILY, or WEEKLY, not ' - + schedule_type) + '--schedule-type must be INTERVAL, HOURLY, ' + + 'DAILY, or WEEKLY, not ' + schedule_type) if minute < 0 or minute > 59: raise exceptions.CLIAbort( diff --git a/SoftLayer/managers/block.py b/SoftLayer/managers/block.py index eb6d49264..20e9c6a5b 100644 --- a/SoftLayer/managers/block.py +++ b/SoftLayer/managers/block.py @@ -141,6 +141,7 @@ def get_block_volume_snapshot_list(self, volume_id, **kwargs): 'snapshotSizeBytes', 'storageType[keyName]', 'snapshotCreationTimestamp', + 'intervalSchedule', 'hourlySchedule', 'dailySchedule', 'weeklySchedule' @@ -236,7 +237,8 @@ def order_replicant_volume(self, volume_id, snapshot_schedule, block_mask = 'billingItem[activeChildren],storageTierLevel,osType,'\ 'staasVersion,hasEncryptionAtRest,snapshotCapacityGb,'\ - 'schedules,hourlySchedule,dailySchedule,weeklySchedule,'\ + 'schedules,intervalSchedule'\ + ',hourlySchedule,dailySchedule,weeklySchedule,'\ 'storageType[keyName],provisionedIops' block_volume = self.get_block_volume_details(volume_id, mask=block_mask) diff --git a/SoftLayer/managers/file.py b/SoftLayer/managers/file.py index 7f12a7bf4..d76646176 100644 --- a/SoftLayer/managers/file.py +++ b/SoftLayer/managers/file.py @@ -138,6 +138,7 @@ def get_file_volume_snapshot_list(self, volume_id, **kwargs): 'snapshotSizeBytes', 'storageType[keyName]', 'snapshotCreationTimestamp', + 'intervalSchedule', 'hourlySchedule', 'dailySchedule', 'weeklySchedule' @@ -215,7 +216,8 @@ def order_replicant_volume(self, volume_id, snapshot_schedule, file_mask = 'billingItem[activeChildren],storageTierLevel,'\ 'staasVersion,hasEncryptionAtRest,snapshotCapacityGb,'\ - 'schedules,hourlySchedule,dailySchedule,weeklySchedule,'\ + 'schedules,intervalSchedule'\ + 'hourlySchedule,dailySchedule,weeklySchedule,'\ 'storageType[keyName],provisionedIops' file_volume = self.get_file_volume_details(volume_id, mask=file_mask) From 329dbeb3a09e591db93aa313c916f861b406a9c3 Mon Sep 17 00:00:00 2001 From: Trixie Zhang Date: Mon, 11 Dec 2017 16:52:15 -0600 Subject: [PATCH 2/2] Added correct error message if 'INTERVAL' schedule_type and not allowed time chosen --- SoftLayer/CLI/block/snapshot/enable.py | 3 +++ SoftLayer/CLI/file/snapshot/enable.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/SoftLayer/CLI/block/snapshot/enable.py b/SoftLayer/CLI/block/snapshot/enable.py index 0ab2512e7..e81443e57 100644 --- a/SoftLayer/CLI/block/snapshot/enable.py +++ b/SoftLayer/CLI/block/snapshot/enable.py @@ -39,6 +39,9 @@ def cli(env, volume_id, schedule_type, retention_count, '--schedule-type must be INTERVAL, HOURLY, DAILY,' + 'or WEEKLY, not ' + schedule_type) + if schedule_type == 'INTERVAL' and (minute < 30 or minute > 59): + raise exceptions.CLIAbort( + '--minute value must be between 30 and 59') if minute < 0 or minute > 59: raise exceptions.CLIAbort( '--minute value must be between 0 and 59') diff --git a/SoftLayer/CLI/file/snapshot/enable.py b/SoftLayer/CLI/file/snapshot/enable.py index 2fb56bf35..d4b3c104d 100644 --- a/SoftLayer/CLI/file/snapshot/enable.py +++ b/SoftLayer/CLI/file/snapshot/enable.py @@ -39,6 +39,9 @@ def cli(env, volume_id, schedule_type, retention_count, '--schedule-type must be INTERVAL, HOURLY, ' + 'DAILY, or WEEKLY, not ' + schedule_type) + if schedule_type == 'INTERVAL' and (minute < 30 or minute > 59): + raise exceptions.CLIAbort( + '--minute value must be between 30 and 59') if minute < 0 or minute > 59: raise exceptions.CLIAbort( '--minute value must be between 0 and 59')