kopia lustrzana https://github.com/simonw/s3-credentials
s3-credentials list-buckets command, closes #9
rodzic
e68dd22fc6
commit
6ee932ea80
|
@ -85,6 +85,14 @@ Add `--nl` to collapse these to single lines as valid newline-delimited JSON.
|
||||||
|
|
||||||
Add `--array` to output a valid JSON array of objects instead.
|
Add `--array` to output a valid JSON array of objects instead.
|
||||||
|
|
||||||
|
### list-buckets
|
||||||
|
|
||||||
|
Shows a list of all buckets in your AWS account.
|
||||||
|
|
||||||
|
s3-credentials list-buckets
|
||||||
|
|
||||||
|
Accepts the same `--nl` and `--array` options as `list-users`.
|
||||||
|
|
||||||
### list-user-policies
|
### list-user-policies
|
||||||
|
|
||||||
To see a list of inline policies belonging to users:
|
To see a list of inline policies belonging to users:
|
||||||
|
|
|
@ -214,3 +214,22 @@ def list_user_policies(usernames):
|
||||||
click.echo(
|
click.echo(
|
||||||
json.dumps(policy_response["PolicyDocument"], indent=4, default=str)
|
json.dumps(policy_response["PolicyDocument"], indent=4, default=str)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@cli.command()
|
||||||
|
@click.option("--array", help="Output a valid JSON array", is_flag=True)
|
||||||
|
@click.option("--nl", help="Output newline-delimited JSON", is_flag=True)
|
||||||
|
def list_buckets(array, nl):
|
||||||
|
"List all buckets"
|
||||||
|
s3 = boto3.client("s3")
|
||||||
|
gathered = []
|
||||||
|
for bucket in s3.list_buckets()["Buckets"]:
|
||||||
|
if array:
|
||||||
|
gathered.append(bucket)
|
||||||
|
else:
|
||||||
|
if nl:
|
||||||
|
click.echo(json.dumps(bucket, default=str))
|
||||||
|
else:
|
||||||
|
click.echo(json.dumps(bucket, indent=4, default=str))
|
||||||
|
if gathered:
|
||||||
|
click.echo(json.dumps(gathered, indent=4, default=str))
|
||||||
|
|
|
@ -39,6 +39,28 @@ def test_list_users(mocker, option, expected):
|
||||||
assert result.output == expected
|
assert result.output == expected
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"option,expected",
|
||||||
|
(
|
||||||
|
("", '{\n "name": "one"\n}\n{\n "name": "two"\n}\n'),
|
||||||
|
(
|
||||||
|
"--array",
|
||||||
|
'[\n {\n "name": "one"\n },\n'
|
||||||
|
' {\n "name": "two"\n }\n]\n',
|
||||||
|
),
|
||||||
|
("--nl", '{"name": "one"}\n{"name": "two"}\n'),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
def test_list_buckets(mocker, option, expected):
|
||||||
|
boto3 = mocker.patch("boto3.client")
|
||||||
|
boto3().list_buckets.return_value = {"Buckets": [{"name": "one"}, {"name": "two"}]}
|
||||||
|
runner = CliRunner()
|
||||||
|
with runner.isolated_filesystem():
|
||||||
|
result = runner.invoke(cli, ["list-buckets"] + ([option] if option else []))
|
||||||
|
assert result.exit_code == 0
|
||||||
|
assert result.output == expected
|
||||||
|
|
||||||
|
|
||||||
def test_create(mocker):
|
def test_create(mocker):
|
||||||
boto3 = mocker.patch("boto3.client")
|
boto3 = mocker.patch("boto3.client")
|
||||||
boto3.return_value = Mock()
|
boto3.return_value = Mock()
|
||||||
|
|
Ładowanie…
Reference in New Issue