Skip to content

Commit f62f640

Browse files
committed
Fix small error code issue
1 parent 60e9c03 commit f62f640

File tree

3 files changed

+36
-3
lines changed

3 files changed

+36
-3
lines changed

faker_cli/cli.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from faker import Faker
22
import click
33
import sys
4-
from faker_cli.templates import S3AccessLogs, S3AccessWriter
4+
from faker_cli.templates import S3AccessLogs, S3AccessWriter, CloudTrailLogs
55

66
from faker_cli.writer import CSVWriter, JSONWriter
77
from typing import List
@@ -23,6 +23,7 @@ def infer_column_names(col_names, col_types: str) -> List[str]:
2323

2424
fake = Faker()
2525
fake.add_provider(S3AccessLogs)
26+
fake.add_provider(CloudTrailLogs)
2627

2728
@click.command()
2829
@click.option("--num-rows", "-n", default=1, help="Number of rows")

faker_cli/templates.py

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ class AWSConstants:
8989
"us-gov-west-1",
9090
]
9191

92+
_services: List[str] = ["ec2", "cloudtrail", "s3"]
93+
9294

9395
class S3AccessWriter(Writer):
9496
def __init__(self, output, headers):
@@ -121,6 +123,7 @@ def aws_arn(
121123
account_id = self.aws_account_id()
122124

123125
# TODO: There are a WHOLE bunch more rules here to take care of
126+
# Also figure out how to handle if resource-type is specificed
124127
if resource_id is None:
125128
if service == "iam":
126129
resource_id = self.generator.random_element(elements=["root", f"user/{self.generator.user_name()}"])
@@ -306,7 +309,7 @@ def http_status(self) -> str:
306309
return str(self._http_status_code())
307310

308311
def error_code(self) -> str:
309-
return self.generator.random_element(elements=("NoSuchBucket", "NoSuchLifecycleConfiguration" "-"))
312+
return self.generator.random_element(elements=("NoSuchBucket", "NoSuchLifecycleConfiguration", "-"))
310313

311314
def bytes_sent(self, total_object_size: Optional[int] = None) -> str:
312315
return self.generator.random_element(
@@ -408,3 +411,32 @@ def _http_status_code(self, response_type: Optional[str] = None) -> int:
408411

409412
# then add new provider to faker instance
410413
# fake.add_provider(S3AccessLogs)
414+
415+
416+
class CloudTrailLogs(AWSProvider):
417+
def event_version(self) -> str:
418+
return "1.0"
419+
420+
def event_time(self) -> str:
421+
return self.generator.iso8601()
422+
423+
def event_source(self) -> str:
424+
return self.generator.random_element(AWSConstants._services) + ".amazonaws.com"
425+
426+
def user_id_with_iam_user(self) -> str:
427+
"""
428+
"userIdentity": {
429+
"type": "IAMUser",
430+
"principalId": "AIDAJ45Q7YFFAREXAMPLE",
431+
"arn": "arn:aws:iam::123456789012:user/Alice",
432+
"accountId": "123456789012",
433+
"accessKeyId": "",
434+
"userName": "Alice"
435+
}
436+
"""
437+
return {
438+
"type": "IAMUser",
439+
"principalId": "AIDAJ45Q7YFFAREXAMPLE",
440+
"arn": self.aws_arn(service="iam", resource_type="user"),
441+
"accountId": self.aws_account_id(),
442+
}

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "faker-cli"
3-
version = "v0.0.4"
3+
version = "0.0.5"
44
description = ""
55
authors = ["Damon P. Cortesi <[email protected]>"]
66
readme = "README.md"

0 commit comments

Comments
 (0)