Skip to content

Commit ac42100

Browse files
author
René Moser
authored
Implement volume detach (#33)
1 parent c51485c commit ac42100

5 files changed

Lines changed: 58 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
# Changelog
22
All notable changes to this project will be documented in this file.
33

4+
## v1.1.0 (unreleased)
5+
6+
### Minor changes
7+
8+
- cloudscale-sdk updated to 0.5.0.
9+
- Add option `--detach` for volumes to detach.
10+
411
## v1.0.1 (2020-10-09)
512

613
Maintenance release.

cloudscale_cli/commands/volume.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import sys
12
import click
23

34
@click.group()
@@ -57,13 +58,22 @@ def cmd_create(cloudscale, name, server_uuids, size_gb, volume_type, zone, tags)
5758
@click.argument('uuid', required=True)
5859
@click.option('--name')
5960
@click.option('--server-uuids', multiple=True)
61+
@click.option('--detach', is_flag=True)
6062
@click.option('--size-gb', type=int)
6163
@click.option('--tag', 'tags', multiple=True)
6264
@click.option('--clear-tag', 'clear_tags', multiple=True)
6365
@click.option('--clear-all-tags', is_flag=True)
6466
@volume.command("update")
6567
@click.pass_obj
66-
def cmd_update(cloudscale, uuid, name, server_uuids, size_gb, tags, clear_tags, clear_all_tags):
68+
def cmd_update(cloudscale, uuid, name, server_uuids, size_gb, detach, tags, clear_tags, clear_all_tags):
69+
# Unhandle server_uuids if not set
70+
if not detach and not server_uuids:
71+
server_uuids = None
72+
73+
elif server_uuids and detach:
74+
click.echo("Error: --server-uuids and --detach are mutually exclusive", err=True)
75+
sys.exit(1)
76+
6777
cloudscale.cmd_update(
6878
uuid=uuid,
6979
tags=tags,

cloudscale_cli/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '1.0.1'
1+
__version__ = '1.1.0'

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cloudscale-sdk>=0.4.0
1+
cloudscale-sdk>=0.5.0
22
click>=7.0.0
33
tabulate
44
pygments

tests/test_volume.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,3 +228,41 @@ def test_volume_missing_api_key():
228228
'list',
229229
])
230230
assert result.exit_code == 1
231+
232+
def test_volume_error_detach_server_uuids_mutually_exclusive():
233+
uuid = "2db69ba3-1864-4608-853a-0771b6885a3a"
234+
server_uuids = "2db69ba3-1864-4608-853a-0771b6885a3a"
235+
runner = CliRunner()
236+
result = runner.invoke(cli, [
237+
'-a', 'token',
238+
'volume',
239+
'update',
240+
uuid,
241+
'--detach',
242+
'--server-uuids',
243+
server_uuids,
244+
])
245+
assert result.exit_code == 1
246+
247+
@responses.activate
248+
def test_volume_detach():
249+
uuid = "2db69ba3-1864-4608-853a-0771b6885a3a"
250+
responses.add(
251+
responses.PATCH,
252+
CLOUDSCALE_API_URL + '/volumes/' + uuid,
253+
json=VOLUME_RESP,
254+
status=204)
255+
responses.add(
256+
responses.GET,
257+
CLOUDSCALE_API_URL + '/volumes/' + uuid,
258+
json=VOLUME_RESP,
259+
status=200)
260+
runner = CliRunner()
261+
result = runner.invoke(cli, [
262+
'-a', 'token',
263+
'volume',
264+
'update',
265+
uuid,
266+
'--detach',
267+
])
268+
assert result.exit_code == 0

0 commit comments

Comments
 (0)