Skip to content

Commit 8f921b7

Browse files
zhuxiaolong37huiguangjun
authored andcommitted
Add bucket access monitor
1 parent 07937fa commit 8f921b7

File tree

10 files changed

+603
-2
lines changed

10 files changed

+603
-2
lines changed

alibabacloud_oss_v2/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from .models.bucket_basic import *
1818
from .models.object_basic import *
1919
from .models.access_point import *
20+
from .models.bucket_access_monitor import *
2021

2122
from .config import Config
2223
from .client import Client

alibabacloud_oss_v2/client.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1001,4 +1001,32 @@ def create_access_point(self, request: models.CreateAccessPointRequest, **kwargs
10011001
Returns:
10021002
CreateAccessPointResult: Response result for CreateAccessPoint operation.
10031003
"""
1004-
return operations.create_access_point(self._client, request, **kwargs)
1004+
return operations.create_access_point(self._client, request, **kwargs)
1005+
1006+
# bucket access monitor
1007+
def put_bucket_access_monitor(self, request: models.PutBucketAccessMonitorRequest, **kwargs
1008+
) -> models.PutBucketAccessMonitorResult:
1009+
"""
1010+
Modifies the access tracking status of a bucket.
1011+
1012+
Args:
1013+
request (PutBucketAccessMonitorRequest): Request parameters for PutBucketAccessMonitor operation.
1014+
1015+
Returns:
1016+
PutBucketAccessMonitorResult: Response result for PutBucketAccessMonitor operation.
1017+
"""
1018+
return operations.put_bucket_access_monitor(self._client, request, **kwargs)
1019+
1020+
1021+
def get_bucket_access_monitor(self, request: models.GetBucketAccessMonitorRequest, **kwargs
1022+
) -> models.GetBucketAccessMonitorResult:
1023+
"""
1024+
Queries the access tracking status of a bucket.
1025+
1026+
Args:
1027+
request (GetBucketAccessMonitorRequest): Request parameters for GetBucketAccessMonitor operation.
1028+
1029+
Returns:
1030+
GetBucketAccessMonitorResult: Response result for GetBucketAccessMonitor operation.
1031+
"""
1032+
return operations.get_bucket_access_monitor(self._client, request, **kwargs)

alibabacloud_oss_v2/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
from .bucket_basic import *
66
from .object_basic import *
77
from .access_point import *
8+
from .bucket_access_monitor import *
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
import datetime
2+
from typing import Optional, List, Any, Union
3+
from enum import Enum
4+
from .. import serde
5+
6+
7+
class AccessMonitorStatusType(str, Enum):
8+
"""
9+
A short description of struct
10+
"""
11+
12+
ENABLED = 'Enabled'
13+
DISABLED = 'Disabled'
14+
15+
16+
class AccessMonitorConfiguration(serde.Model):
17+
"""
18+
The container that stores access monitor configuration.
19+
"""
20+
21+
_attribute_map = {
22+
'status': {'tag': 'xml', 'rename': 'Status', 'type': 'str'},
23+
}
24+
25+
_xml_map = {
26+
'name': 'AccessMonitorConfiguration'
27+
}
28+
29+
def __init__(
30+
self,
31+
status: Optional[Union[str, AccessMonitorStatusType]] = None,
32+
**kwargs: Any
33+
) -> None:
34+
"""
35+
status (str | AccessMonitorStatusType, optional): The access tracking status of the bucket. Valid values:- Enabled: Access tracking is enabled.- Disabled: Access tracking is disabled.
36+
"""
37+
super().__init__(**kwargs)
38+
self.status = status
39+
40+
41+
class PutBucketAccessMonitorRequest(serde.RequestModel):
42+
"""
43+
The request for the PutBucketAccessMonitor operation.
44+
"""
45+
46+
_attribute_map = {
47+
'bucket': {'tag': 'input', 'position': 'host', 'rename': 'bucket', 'type': 'str', 'required': True},
48+
'access_monitor_configuration': {'tag': 'input', 'position': 'body', 'rename': 'AccessMonitorConfiguration', 'type': 'xml'},
49+
}
50+
51+
def __init__(
52+
self,
53+
bucket: str = None,
54+
access_monitor_configuration: Optional[AccessMonitorConfiguration] = None,
55+
**kwargs: Any
56+
) -> None:
57+
"""
58+
bucket (str, required): The name of the bucket.
59+
access_monitor_configuration (AccessMonitorConfiguration, optional): The request body schema.
60+
"""
61+
super().__init__(**kwargs)
62+
self.bucket = bucket
63+
self.access_monitor_configuration = access_monitor_configuration
64+
65+
66+
class PutBucketAccessMonitorResult(serde.ResultModel):
67+
"""
68+
The request for the PutBucketAccessMonitor operation.
69+
"""
70+
71+
class GetBucketAccessMonitorRequest(serde.RequestModel):
72+
"""
73+
The request for the GetBucketAccessMonitor operation.
74+
"""
75+
76+
_attribute_map = {
77+
'bucket': {'tag': 'input', 'position': 'host', 'rename': 'bucket', 'type': 'str', 'required': True},
78+
}
79+
80+
def __init__(
81+
self,
82+
bucket: str = None,
83+
**kwargs: Any
84+
) -> None:
85+
"""
86+
bucket (str, required): The name of the bucket.
87+
"""
88+
super().__init__(**kwargs)
89+
self.bucket = bucket
90+
91+
92+
class GetBucketAccessMonitorResult(serde.ResultModel):
93+
"""
94+
The request for the GetBucketAccessMonitor operation.
95+
"""
96+
97+
_attribute_map = {
98+
'access_monitor_configuration': {'tag': 'output', 'position': 'body', 'rename': 'AccessMonitorConfiguration', 'type': 'AccessMonitorConfiguration,xml'},
99+
}
100+
101+
_dependency_map = {
102+
'AccessMonitorConfiguration': {'new': lambda: AccessMonitorConfiguration()},
103+
}
104+
105+
_xml_map = {
106+
'name': 'AccessMonitorConfiguration'
107+
}
108+
109+
def __init__(
110+
self,
111+
access_monitor_configuration: Optional[AccessMonitorConfiguration] = None,
112+
**kwargs: Any
113+
) -> None:
114+
"""
115+
access_monitor_configuration (AccessMonitorConfiguration, optional): The container that stores access monitor configuration.
116+
"""
117+
super().__init__(**kwargs)
118+
self.access_monitor_configuration = access_monitor_configuration

alibabacloud_oss_v2/operations/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
from .region import *
44
from .bucket_basic import *
55
from .object_basic import *
6-
from .access_point import *
6+
from .access_point import *
7+
from .bucket_access_monitor import *
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# pylint: disable=line-too-long
2+
3+
from ..types import OperationInput, CaseInsensitiveDict
4+
from .. import serde
5+
from .. import serde_utils
6+
from .. import models
7+
from .._client import _SyncClientImpl
8+
9+
10+
def put_bucket_access_monitor(client: _SyncClientImpl, request: models.PutBucketAccessMonitorRequest, **kwargs) -> models.PutBucketAccessMonitorResult:
11+
"""
12+
put_bucket_access_monitor synchronously
13+
14+
Args:
15+
client (_SyncClientImpl): A agent that sends the request.
16+
request (PutBucketAccessMonitorRequest): The request for the PutBucketAccessMonitor operation.
17+
18+
Returns:
19+
PutBucketAccessMonitorResult: The result for the PutBucketAccessMonitor operation.
20+
"""
21+
22+
op_input = serde.serialize_input(
23+
request=request,
24+
op_input=OperationInput(
25+
op_name='PutBucketAccessMonitor',
26+
method='PUT',
27+
headers=CaseInsensitiveDict({
28+
'Content-Type': 'application/xml',
29+
}),
30+
parameters={
31+
'accessmonitor': '',
32+
},
33+
bucket=request.bucket,
34+
),
35+
custom_serializer=[
36+
serde_utils.add_content_md5
37+
]
38+
)
39+
40+
op_output = client.invoke_operation(op_input, **kwargs)
41+
42+
return serde.deserialize_output(
43+
result=models.PutBucketAccessMonitorResult(),
44+
op_output=op_output,
45+
custom_deserializer=[
46+
serde.deserialize_output_xmlbody
47+
],
48+
)
49+
50+
def get_bucket_access_monitor(client: _SyncClientImpl, request: models.GetBucketAccessMonitorRequest, **kwargs) -> models.GetBucketAccessMonitorResult:
51+
"""
52+
get_bucket_access_monitor synchronously
53+
54+
Args:
55+
client (_SyncClientImpl): A agent that sends the request.
56+
request (GetBucketAccessMonitorRequest): The request for the GetBucketAccessMonitor operation.
57+
58+
Returns:
59+
GetBucketAccessMonitorResult: The result for the GetBucketAccessMonitor operation.
60+
"""
61+
62+
op_input = serde.serialize_input(
63+
request=request,
64+
op_input=OperationInput(
65+
op_name='GetBucketAccessMonitor',
66+
method='GET',
67+
headers=CaseInsensitiveDict({
68+
'Content-Type': 'application/xml',
69+
}),
70+
parameters={
71+
'accessmonitor': '',
72+
},
73+
bucket=request.bucket,
74+
),
75+
custom_serializer=[
76+
serde_utils.add_content_md5
77+
]
78+
)
79+
80+
op_output = client.invoke_operation(op_input, **kwargs)
81+
82+
return serde.deserialize_output(
83+
result=models.GetBucketAccessMonitorResult(),
84+
op_output=op_output,
85+
custom_deserializer=[
86+
serde.deserialize_output_xmlbody
87+
],
88+
)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import argparse
2+
import alibabacloud_oss_v2 as oss
3+
4+
parser = argparse.ArgumentParser(description="get bucket access monitor sample")
5+
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
6+
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
7+
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
8+
9+
10+
def main():
11+
12+
args = parser.parse_args()
13+
14+
# Loading credentials values from the environment variables
15+
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
16+
17+
# Using the SDK's default configuration
18+
cfg = oss.config.load_default()
19+
cfg.credentials_provider = credentials_provider
20+
cfg.region = args.region
21+
if args.endpoint is not None:
22+
cfg.endpoint = args.endpoint
23+
24+
client = oss.Client(cfg)
25+
26+
result = client.get_bucket_access_monitor(oss.GetBucketAccessMonitorRequest(
27+
bucket=args.bucket,
28+
))
29+
30+
31+
print(f'status code: {result.status_code},'
32+
f' request id: {result.request_id},'
33+
f' status: {result.access_monitor_configuration.status},'
34+
)
35+
36+
if __name__ == "__main__":
37+
main()
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import argparse
2+
import alibabacloud_oss_v2 as oss
3+
4+
parser = argparse.ArgumentParser(description="put bucket access monitor sample")
5+
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
6+
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
7+
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
8+
parser.add_argument('--status', help='The access tracking status of the bucket. Valid values:- Enabled: Access tracking is enabled.- Disabled: Access tracking is disabled.', required=True)
9+
10+
def main():
11+
12+
args = parser.parse_args()
13+
14+
# Loading credentials values from the environment variables
15+
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
16+
17+
# Using the SDK's default configuration
18+
cfg = oss.config.load_default()
19+
cfg.credentials_provider = credentials_provider
20+
cfg.region = args.region
21+
cfg.signature_version = 'v1'
22+
if args.endpoint is not None:
23+
cfg.endpoint = args.endpoint
24+
25+
client = oss.Client(cfg)
26+
27+
# result = client.put_bucket_access_monitor(oss.PutBucketAccessMonitorRequest(
28+
# bucket=args.bucket,
29+
# access_monitor_configuration=oss.AccessMonitorConfiguration(
30+
# status=oss.AccessMonitorStatusType.ENABLED
31+
# ),
32+
# ))
33+
34+
result = client.put_bucket_access_monitor(oss.PutBucketAccessMonitorRequest(
35+
bucket=args.bucket,
36+
access_monitor_configuration=oss.AccessMonitorConfiguration(
37+
status=args.status,
38+
),
39+
))
40+
41+
print(f'status code: {result.status_code},'
42+
f' request id: {result.request_id},'
43+
)
44+
45+
if __name__ == "__main__":
46+
main()

0 commit comments

Comments
 (0)