diff --git a/doc/source/command-objects/snapshot.rst b/doc/source/command-objects/snapshot.rst index 9033011822..8ac0b6b869 100644 --- a/doc/source/command-objects/snapshot.rst +++ b/doc/source/command-objects/snapshot.rst @@ -16,6 +16,7 @@ Create new snapshot [--name ] [--description ] [--force] + [--property [...] ] .. option:: --name @@ -30,6 +31,12 @@ Create new snapshot Create a snapshot attached to an instance. Default is False +.. option:: --property + + Set a property to this snapshot (repeat option to set multiple properties) + + *Volume version 2 only* + .. _snapshot_create-snapshot: .. describe:: diff --git a/openstackclient/tests/volume/v2/test_snapshot.py b/openstackclient/tests/volume/v2/test_snapshot.py index ef199cbc7f..2e9bcc82b0 100644 --- a/openstackclient/tests/volume/v2/test_snapshot.py +++ b/openstackclient/tests/volume/v2/test_snapshot.py @@ -70,12 +70,15 @@ class TestSnapshotCreate(TestSnapshot): "--name", self.new_snapshot.name, "--description", self.new_snapshot.description, "--force", + '--property', 'Alpha=a', + '--property', 'Beta=b', self.new_snapshot.volume_id, ] verifylist = [ ("name", self.new_snapshot.name), ("description", self.new_snapshot.description), ("force", True), + ('property', {'Alpha': 'a', 'Beta': 'b'}), ("volume", self.new_snapshot.volume_id), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -86,7 +89,8 @@ class TestSnapshotCreate(TestSnapshot): self.new_snapshot.volume_id, force=True, name=self.new_snapshot.name, - description=self.new_snapshot.description + description=self.new_snapshot.description, + metadata={'Alpha': 'a', 'Beta': 'b'}, ) self.assertEqual(self.columns, columns) self.assertEqual(self.data, data) @@ -110,7 +114,8 @@ class TestSnapshotCreate(TestSnapshot): self.new_snapshot.volume_id, force=True, name=None, - description=self.new_snapshot.description + description=self.new_snapshot.description, + metadata=None, ) self.assertEqual(self.columns, columns) self.assertEqual(self.data, data) diff --git a/openstackclient/volume/v2/snapshot.py b/openstackclient/volume/v2/snapshot.py index 5aba04aee3..5e6949d44e 100644 --- a/openstackclient/volume/v2/snapshot.py +++ b/openstackclient/volume/v2/snapshot.py @@ -51,6 +51,13 @@ class CreateSnapshot(command.ShowOne): help=_("Create a snapshot attached to an instance. " "Default is False") ) + parser.add_argument( + "--property", + metavar="", + action=parseractions.KeyValueAction, + help=_("Set a property to this snapshot " + "(repeat option to set multiple properties)"), + ) return parser def take_action(self, parsed_args): @@ -61,7 +68,8 @@ class CreateSnapshot(command.ShowOne): volume_id, force=parsed_args.force, name=parsed_args.name, - description=parsed_args.description + description=parsed_args.description, + metadata=parsed_args.property, ) snapshot._info.update( {'properties': utils.format_dict(snapshot._info.pop('metadata'))} diff --git a/releasenotes/notes/bug-1597192-52801f7520287309.yaml b/releasenotes/notes/bug-1597192-52801f7520287309.yaml new file mode 100644 index 0000000000..2069ca2b06 --- /dev/null +++ b/releasenotes/notes/bug-1597192-52801f7520287309.yaml @@ -0,0 +1,4 @@ +--- +features: + - Add ``--property`` option to ``snapshot create`` command. + [Bug `1597192 `_]