Skip to content
This repository was archived by the owner on May 5, 2020. It is now read-only.

Commit c3137f6

Browse files
authored
Merge pull request #19 from resmo/next
2 parents 51e4aaf + 1f3085d commit c3137f6

File tree

13 files changed

+67
-46
lines changed

13 files changed

+67
-46
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ Commands:
110110
#### Create a server
111111

112112
~~~shell
113-
cloudscale-cli server create --flavor flex-2 --name my-server --image centos-7 --ssh-keys "$(cat ~/.ssh/id_rsa.pub)"
113+
cloudscale-cli server create --flavor flex-2 --name my-server --image centos-7 --ssh-key "$(cat ~/.ssh/id_rsa.pub)"
114114
~~~
115115

116116
#### List all servers
@@ -134,19 +134,19 @@ cloudscale-cli server list --filter-tag project
134134
#### Update servers tags (but keep all existing)
135135

136136
~~~shell
137-
cloudscale-cli server update <uuid> --tags project=apollo --tags stage=prod
137+
cloudscale-cli server update <uuid> --tag project=apollo --tag stage=prod
138138
~~~
139139

140140
#### Update server tags, remove a specific tag key
141141

142142
~~~shell
143-
cloudscale-cli server update <uuid> --tags project=apollo --tags stage=prod --clear-tags status
143+
cloudscale-cli server update <uuid> --tag project=apollo --tag stage=prod --clear-tag status
144144
~~~
145145

146146
#### Update server tags, remove other tags
147147

148148
~~~shell
149-
cloudscale-cli server update <uuid> --tags project=apollo --tags stage=prod --clear-all-tags
149+
cloudscale-cli server update <uuid> --tag project=apollo --tag stage=prod --clear-all-tags
150150
~~~
151151

152152
#### Stop a server

cloudscale/commands/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,9 @@ def _update(resource, uuid, tags, clear_tags, clear_all_tags, **kwargs):
4747
try:
4848
_tags = dict()
4949
if not clear_all_tags:
50-
server_group = resource.get_by_uuid(uuid=uuid)
51-
_tags = server_group['tags'].copy()
50+
response = resource.get_by_uuid(uuid=uuid)
51+
_tags = response.get('tags', dict()).copy()
52+
5253
for k in clear_tags:
5354
_tags.pop(k, None)
5455

cloudscale/commands/floating_ip.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,20 @@ def cmd_show(cloudscale, network_id):
3939

4040
@click.option('--ip-version', type=int, default=4, show_default=True)
4141
@click.option('--server-uuid', '--server', required=True)
42-
@click.option('--prefix-length', type=int, default=32, show_default=True)
42+
@click.option('--prefix-length', type=int, show_default=True)
4343
@click.option('--reverse-ptr')
4444
@click.option('--type', 'scope', type=click.Choice(['regional', 'global']), default='regional', show_default=True)
4545
@click.option('--region')
46-
@click.option('--tags', multiple=True)
46+
@click.option('--tag', 'tags', multiple=True)
4747
@floating_ip.command("create")
4848
@click.pass_obj
4949
def cmd_create(cloudscale, ip_version, server_uuid, prefix_length, reverse_ptr, scope, region, tags):
50+
if not prefix_length:
51+
if ip_version == 6:
52+
prefix_length = 128
53+
else:
54+
prefix_length = 32
55+
5056
resource = cloudscale.floating_ip
5157
_create(
5258
resource=resource,
@@ -62,8 +68,8 @@ def cmd_create(cloudscale, ip_version, server_uuid, prefix_length, reverse_ptr,
6268
@click.argument('network-id', required=True)
6369
@click.option('--server-uuid', '--server')
6470
@click.option('--reverse-ptr')
65-
@click.option('--tags', multiple=True)
66-
@click.option('--clear-tags', multiple=True)
71+
@click.option('--tag', 'tags', multiple=True)
72+
@click.option('--clear-tag', 'clear_tags', multiple=True)
6773
@click.option('--clear-all-tags', is_flag=True)
6874
@floating_ip.command("update")
6975
@click.pass_obj

cloudscale/commands/network.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def cmd_show(cloudscale, uuid):
4141
@click.option('--zone')
4242
@click.option('--mtu', type=int, default=9000)
4343
@click.option('--auto-create-ipv4-subnet', type=bool, default=True)
44-
@click.option('--tags', multiple=True)
44+
@click.option('--tag', 'tags', multiple=True)
4545
@network.command("create")
4646
@click.pass_obj
4747
def cmd_create(cloudscale, name, zone, mtu, auto_create_ipv4_subnet, tags):
@@ -58,8 +58,8 @@ def cmd_create(cloudscale, name, zone, mtu, auto_create_ipv4_subnet, tags):
5858
@click.argument('uuid', required=True)
5959
@click.option('--name')
6060
@click.option('--mtu', type=int)
61-
@click.option('--tags', multiple=True)
62-
@click.option('--clear-tags', multiple=True)
61+
@click.option('--tag', 'tags', multiple=True)
62+
@click.option('--clear-tag', 'clear_tags', multiple=True)
6363
@click.option('--clear-all-tags', is_flag=True)
6464
@network.command("update")
6565
@click.pass_obj

cloudscale/commands/objects_user.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def cmd_show(cloudscale, uuid):
3838
)
3939

4040
@click.option('--display-name', required=True)
41-
@click.option('--tags', multiple=True)
41+
@click.option('--tag', 'tags', multiple=True)
4242
@objects_user.command("create")
4343
@click.pass_obj
4444
def cmd_create(cloudscale, display_name, tags):
@@ -51,8 +51,8 @@ def cmd_create(cloudscale, display_name, tags):
5151

5252
@click.argument('uuid', required=True)
5353
@click.option('--display-name')
54-
@click.option('--tags', multiple=True)
55-
@click.option('--clear-tags', multiple=True)
54+
@click.option('--tag', 'tags', multiple=True)
55+
@click.option('--clear-tag', 'clear_tags', multiple=True)
5656
@click.option('--clear-all-tags', is_flag=True)
5757
@objects_user.command("update")
5858
@click.pass_obj

cloudscale/commands/server.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import click
22
from . import _init, _list, _show, _create, _update, _delete, _act
33

4-
headers = ['name', 'flavor', 'zone', 'tags', 'uuid', 'status']
4+
headers = ['name', 'image', 'flavor', 'zone', 'tags', 'server_groups', 'uuid', 'status']
55

66
@click.group()
77
@click.option('--api-token', '-a', envvar='CLOUDSCALE_API_TOKEN', help="API token.")
@@ -41,17 +41,17 @@ def cmd_show(cloudscale, uuid):
4141
@click.option('--flavor', required=True)
4242
@click.option('--image', required=True)
4343
@click.option('--zone')
44-
@click.option('--volume-size', type=int)
45-
@click.option('--volumes', multiple=True)
46-
@click.option('--interfaces', multiple=True)
47-
@click.option('--ssh-keys', multiple=True)
44+
@click.option('--volume-size', type=int, default=10)
45+
@click.option('--volume', 'volumes', multiple=True)
46+
@click.option('--interface', 'interfaces', multiple=True)
47+
@click.option('--ssh-key', 'ssh_keys', multiple=True)
4848
@click.option('--password')
49-
@click.option('--use-public-network', is_flag=True, default=True)
50-
@click.option('--use-private-network', is_flag=True)
51-
@click.option('--use-ipv6', is_flag=True)
52-
@click.option('--server-groups', multiple=True)
49+
@click.option('--use-public-network/--no-use-public-network', default=True)
50+
@click.option('--use-private-network/--no-use-private-network', default=False)
51+
@click.option('--use-ipv6/--no-use-ipv6', default=True)
52+
@click.option('--server-group', 'server_groups', multiple=True)
5353
@click.option('--user-data')
54-
@click.option('--tags', multiple=True)
54+
@click.option('--tag', 'tags', multiple=True)
5555
@server.command("create")
5656
@click.pass_obj
5757
def cmd_create(
@@ -95,12 +95,13 @@ def cmd_create(
9595
@click.argument('uuid', required=True)
9696
@click.option('--name')
9797
@click.option('--flavor')
98-
@click.option('--tags', multiple=True)
99-
@click.option('--clear-tags', multiple=True)
98+
@click.option('--interface', 'interfaces', multiple=True)
99+
@click.option('--tag', 'tags', multiple=True)
100+
@click.option('--clear-tag', 'clear_tags', multiple=True)
100101
@click.option('--clear-all-tags', is_flag=True)
101102
@server.command("update")
102103
@click.pass_obj
103-
def cmd_update(cloudscale, uuid, name, flavor, tags, clear_tags, clear_all_tags):
104+
def cmd_update(cloudscale, uuid, name, flavor, interfaces, tags, clear_tags, clear_all_tags):
104105
resource = cloudscale.server
105106
_update(
106107
resource=resource,
@@ -110,6 +111,7 @@ def cmd_update(cloudscale, uuid, name, flavor, tags, clear_tags, clear_all_tags)
110111
clear_all_tags=clear_all_tags,
111112
name=name,
112113
flavor=flavor,
114+
interfaces=interfaces,
113115
)
114116

115117
@click.argument('uuid', required=True)

cloudscale/commands/server_group.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def cmd_show(cloudscale, uuid):
3939

4040
@click.option('--name', required=True)
4141
@click.option('--type', 'group_type', default='anti-affinity', show_default=True)
42-
@click.option('--tags', multiple=True)
42+
@click.option('--tag', 'tags', multiple=True)
4343
@server_group.command("create")
4444
@click.pass_obj
4545
def cmd_create(cloudscale, name, group_type, tags):
@@ -53,8 +53,8 @@ def cmd_create(cloudscale, name, group_type, tags):
5353

5454
@click.argument('uuid', required=True)
5555
@click.option('--name')
56-
@click.option('--tags', multiple=True)
57-
@click.option('--clear-tags', multiple=True)
56+
@click.option('--tag', 'tags', multiple=True)
57+
@click.option('--clear-tag', 'clear_tags', multiple=True)
5858
@click.option('--clear-all-tags', is_flag=True)
5959
@server_group.command("update")
6060
@click.pass_obj

cloudscale/commands/volume.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def cmd_show(cloudscale, uuid):
4343
@click.option('--size-gb', type=int, required=True)
4444
@click.option('--type', 'volume_type', type=click.Choice(['ssd', 'bulk']), default='ssd', show_default=True)
4545
@click.option('--zone')
46-
@click.option('--tags', multiple=True)
46+
@click.option('--tag', 'tags', multiple=True)
4747
@volume.command("create")
4848
@click.pass_obj
4949
def cmd_create(cloudscale, name, server_uuids, size_gb, volume_type, zone, tags):
@@ -62,8 +62,8 @@ def cmd_create(cloudscale, name, server_uuids, size_gb, volume_type, zone, tags)
6262
@click.option('--name')
6363
@click.option('--server-uuids', multiple=True)
6464
@click.option('--size-gb', type=int)
65-
@click.option('--tags', multiple=True)
66-
@click.option('--clear-tags', multiple=True)
65+
@click.option('--tag', 'tags', multiple=True)
66+
@click.option('--clear-tag', 'clear_tags', multiple=True)
6767
@click.option('--clear-all-tags', is_flag=True)
6868
@volume.command("update")
6969
@click.pass_obj

cloudscale/lib/server.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ def create(
4242
}
4343
return super().create(payload=payload)
4444

45-
def update(self, uuid, name=None, flavor=None, tags=None):
45+
def update(self, uuid, name=None, flavor=None, interfaces=None, tags=None):
4646
payload = {
4747
'name': name,
4848
'flavor': flavor,
49+
'interfaces': interfaces,
4950
'tags': tags,
5051
}
5152
return super().update(uuid=uuid, payload=payload)

cloudscale/tests/test_floating_ip.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,17 @@ def test_floating_ip_create():
206206
server_uuid,
207207
])
208208
assert result.exit_code > 0
209+
result = runner.invoke(cli, [
210+
'floating-ip',
211+
'-a', 'token',
212+
'create',
213+
'--ip-version',
214+
6,
215+
'--server-uuid',
216+
server_uuid,
217+
])
218+
assert result.exit_code > 0
219+
209220

210221
@responses.activate
211222
def test_floating_ip_update():

0 commit comments

Comments
 (0)