Merge "Add support of setting snapshot state"
This commit is contained in:
		| @@ -2,7 +2,7 @@ | ||||
| snapshot | ||||
| ======== | ||||
|  | ||||
| Block Storage v1 | ||||
| Block Storage v1, v2 | ||||
|  | ||||
| snapshot create | ||||
| --------------- | ||||
| @@ -82,6 +82,7 @@ Set snapshot properties | ||||
|         [--name <name>] | ||||
|         [--description <description>] | ||||
|         [--property <key=value> [...] ] | ||||
|         [--state <state>] | ||||
|         <snapshot> | ||||
|  | ||||
| .. _snapshot_restore-snapshot: | ||||
| @@ -97,6 +98,14 @@ Set snapshot properties | ||||
|  | ||||
|     Property to add or modify for this snapshot (repeat option to set multiple properties) | ||||
|  | ||||
| .. option:: --state <state> | ||||
|  | ||||
|     New snapshot state. | ||||
|     Valid values are "available", "error", "creating", | ||||
|     "deleting", and "error_deleting". | ||||
|  | ||||
|     *Volume version 2 only* | ||||
|  | ||||
| .. describe:: <snapshot> | ||||
|  | ||||
|     Snapshot to modify (name or ID) | ||||
|   | ||||
| @@ -229,7 +229,6 @@ class TestSnapshotList(TestSnapshot): | ||||
|  | ||||
|  | ||||
| class TestSnapshotSet(TestSnapshot): | ||||
|  | ||||
|     def setUp(self): | ||||
|         super(TestSnapshotSet, self).setUp() | ||||
|  | ||||
| @@ -270,6 +269,23 @@ class TestSnapshotSet(TestSnapshot): | ||||
|         ) | ||||
|         self.assertIsNone(result) | ||||
|  | ||||
|     def test_snapshot_set_state_to_error(self): | ||||
|         arglist = [ | ||||
|             "--state", "error", | ||||
|             volume_fakes.snapshot_id | ||||
|         ] | ||||
|         verifylist = [ | ||||
|             ("state", "error"), | ||||
|             ("snapshot", volume_fakes.snapshot_id) | ||||
|         ] | ||||
|         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||
|  | ||||
|         result = self.cmd.take_action(parsed_args) | ||||
|  | ||||
|         self.snapshots_mock.reset_state.assert_called_with( | ||||
|             volume_fakes.snapshot_id, "error") | ||||
|         self.assertIsNone(result) | ||||
|  | ||||
|  | ||||
| class TestSnapshotShow(TestSnapshot): | ||||
|  | ||||
| @@ -300,7 +316,6 @@ class TestSnapshotShow(TestSnapshot): | ||||
|  | ||||
|  | ||||
| class TestSnapshotUnset(TestSnapshot): | ||||
|  | ||||
|     def setUp(self): | ||||
|         super(TestSnapshotUnset, self).setUp() | ||||
|  | ||||
| @@ -322,6 +337,7 @@ class TestSnapshotUnset(TestSnapshot): | ||||
|             ("snapshot", volume_fakes.snapshot_id), | ||||
|             ("property", ["foo"]) | ||||
|         ] | ||||
|  | ||||
|         parsed_args = self.check_parser(self.cmd, arglist, verifylist) | ||||
|  | ||||
|         result = self.cmd.take_action(parsed_args) | ||||
|   | ||||
| @@ -179,6 +179,14 @@ class SetSnapshot(command.Command): | ||||
|             help='Property to add/change for this snapshot ' | ||||
|                  '(repeat option to set multiple properties)', | ||||
|         ) | ||||
|         parser.add_argument( | ||||
|             '--state', | ||||
|             metavar='<state>', | ||||
|             choices=['available', 'error', 'creating', 'deleting', | ||||
|                      'error-deleting'], | ||||
|             help='New snapshot state. Valid values are available, ' | ||||
|                  'error, creating, deleting, and error-deleting.', | ||||
|         ) | ||||
|         return parser | ||||
|  | ||||
|     def take_action(self, parsed_args): | ||||
| @@ -192,13 +200,17 @@ class SetSnapshot(command.Command): | ||||
|         if parsed_args.description: | ||||
|             kwargs['description'] = parsed_args.description | ||||
|  | ||||
|         if not kwargs and not parsed_args.property: | ||||
|         if (not kwargs and not parsed_args.property and not | ||||
|                 parsed_args.state): | ||||
|             self.app.log.error("No changes requested\n") | ||||
|             return | ||||
|  | ||||
|         if parsed_args.property: | ||||
|             volume_client.volume_snapshots.set_metadata(snapshot.id, | ||||
|                                                         parsed_args.property) | ||||
|         if parsed_args.state: | ||||
|             volume_client.volume_snapshots.reset_state(snapshot.id, | ||||
|                                                        parsed_args.state) | ||||
|         volume_client.volume_snapshots.update(snapshot.id, **kwargs) | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										6
									
								
								releasenotes/notes/bug-1535239-767e6cf1990eda01.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								releasenotes/notes/bug-1535239-767e6cf1990eda01.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| --- | ||||
| fixes: | ||||
|   - | | ||||
|     Support a new ``--state`` option for ``snapshot set`` command that | ||||
|     changes the state of a snapshot. | ||||
|     [Bug `1535239 <https://bugs.launchpad.net/bugs/1535239>`_] | ||||
		Reference in New Issue
	
	Block a user
	 Jenkins
					Jenkins