huaweicloudsdkram 3.1.84__py2.py3-none-any.whl → 3.1.86__py2.py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -31,6 +31,8 @@ from huaweicloudsdkram.v1.model.disassociate_resource_share_request import Disas
31
31
  from huaweicloudsdkram.v1.model.disassociate_resource_share_response import DisassociateResourceShareResponse
32
32
  from huaweicloudsdkram.v1.model.enable_organization_share_request import EnableOrganizationShareRequest
33
33
  from huaweicloudsdkram.v1.model.enable_organization_share_response import EnableOrganizationShareResponse
34
+ from huaweicloudsdkram.v1.model.list_permission_versions_request import ListPermissionVersionsRequest
35
+ from huaweicloudsdkram.v1.model.list_permission_versions_response import ListPermissionVersionsResponse
34
36
  from huaweicloudsdkram.v1.model.list_permissions_request import ListPermissionsRequest
35
37
  from huaweicloudsdkram.v1.model.list_permissions_response import ListPermissionsResponse
36
38
  from huaweicloudsdkram.v1.model.list_quota_request import ListQuotaRequest
@@ -29,6 +29,8 @@ from huaweicloudsdkram.v1.model.disassociate_resource_share_request import Disas
29
29
  from huaweicloudsdkram.v1.model.disassociate_resource_share_response import DisassociateResourceShareResponse
30
30
  from huaweicloudsdkram.v1.model.enable_organization_share_request import EnableOrganizationShareRequest
31
31
  from huaweicloudsdkram.v1.model.enable_organization_share_response import EnableOrganizationShareResponse
32
+ from huaweicloudsdkram.v1.model.list_permission_versions_request import ListPermissionVersionsRequest
33
+ from huaweicloudsdkram.v1.model.list_permission_versions_response import ListPermissionVersionsResponse
32
34
  from huaweicloudsdkram.v1.model.list_permissions_request import ListPermissionsRequest
33
35
  from huaweicloudsdkram.v1.model.list_permissions_response import ListPermissionsResponse
34
36
  from huaweicloudsdkram.v1.model.list_quota_request import ListQuotaRequest
@@ -17,57 +17,35 @@ class AssociatePermissionReqBody:
17
17
  sensitive_list = []
18
18
 
19
19
  openapi_types = {
20
- 'permission_id': 'str',
21
- 'replace': 'bool'
20
+ 'replace': 'bool',
21
+ 'permission_id': 'str'
22
22
  }
23
23
 
24
24
  attribute_map = {
25
- 'permission_id': 'permission_id',
26
- 'replace': 'replace'
25
+ 'replace': 'replace',
26
+ 'permission_id': 'permission_id'
27
27
  }
28
28
 
29
- def __init__(self, permission_id=None, replace=None):
29
+ def __init__(self, replace=None, permission_id=None):
30
30
  """AssociatePermissionReqBody
31
31
 
32
32
  The model defined in huaweicloud sdk
33
33
 
34
- :param permission_id: 共享资源权限的ID。
35
- :type permission_id: str
36
34
  :param replace: 指定特定的权限替换或绑定到与资源共享实例关联的现有资源类型。设置为\"true\"可将相同的资源类型的权限替换为当前权限。设置为\"false\"将权限绑定到当前资源类型。默认值为\"false\"。资源共享实例中的每个资源类型只能绑定一个权限。如果资源共享实例中已具有指定资源类型的权限,并且将\"replace\"设置为\"false\",则操作返回错误。这有助于防止意外覆盖权限。
37
35
  :type replace: bool
36
+ :param permission_id: 共享资源权限的ID。
37
+ :type permission_id: str
38
38
  """
39
39
 
40
40
 
41
41
 
42
- self._permission_id = None
43
42
  self._replace = None
43
+ self._permission_id = None
44
44
  self.discriminator = None
45
45
 
46
- self.permission_id = permission_id
47
46
  if replace is not None:
48
47
  self.replace = replace
49
-
50
- @property
51
- def permission_id(self):
52
- """Gets the permission_id of this AssociatePermissionReqBody.
53
-
54
- 共享资源权限的ID。
55
-
56
- :return: The permission_id of this AssociatePermissionReqBody.
57
- :rtype: str
58
- """
59
- return self._permission_id
60
-
61
- @permission_id.setter
62
- def permission_id(self, permission_id):
63
- """Sets the permission_id of this AssociatePermissionReqBody.
64
-
65
- 共享资源权限的ID。
66
-
67
- :param permission_id: The permission_id of this AssociatePermissionReqBody.
68
- :type permission_id: str
69
- """
70
- self._permission_id = permission_id
48
+ self.permission_id = permission_id
71
49
 
72
50
  @property
73
51
  def replace(self):
@@ -91,6 +69,28 @@ class AssociatePermissionReqBody:
91
69
  """
92
70
  self._replace = replace
93
71
 
72
+ @property
73
+ def permission_id(self):
74
+ """Gets the permission_id of this AssociatePermissionReqBody.
75
+
76
+ 共享资源权限的ID。
77
+
78
+ :return: The permission_id of this AssociatePermissionReqBody.
79
+ :rtype: str
80
+ """
81
+ return self._permission_id
82
+
83
+ @permission_id.setter
84
+ def permission_id(self, permission_id):
85
+ """Sets the permission_id of this AssociatePermissionReqBody.
86
+
87
+ 共享资源权限的ID。
88
+
89
+ :param permission_id: The permission_id of this AssociatePermissionReqBody.
90
+ :type permission_id: str
91
+ """
92
+ self._permission_id = permission_id
93
+
94
94
  def to_dict(self):
95
95
  """Returns the model properties as a dict"""
96
96
  result = {}
@@ -0,0 +1,172 @@
1
+ # coding: utf-8
2
+
3
+ import six
4
+
5
+ from huaweicloudsdkcore.utils.http_utils import sanitize_for_serialization
6
+
7
+
8
+ class ListPermissionVersionsRequest:
9
+
10
+ """
11
+ Attributes:
12
+ openapi_types (dict): The key is attribute name
13
+ and the value is attribute type.
14
+ attribute_map (dict): The key is attribute name
15
+ and the value is json key in definition.
16
+ """
17
+ sensitive_list = []
18
+
19
+ openapi_types = {
20
+ 'limit': 'int',
21
+ 'marker': 'str',
22
+ 'permission_id': 'str'
23
+ }
24
+
25
+ attribute_map = {
26
+ 'limit': 'limit',
27
+ 'marker': 'marker',
28
+ 'permission_id': 'permission_id'
29
+ }
30
+
31
+ def __init__(self, limit=None, marker=None, permission_id=None):
32
+ """ListPermissionVersionsRequest
33
+
34
+ The model defined in huaweicloud sdk
35
+
36
+ :param limit: 分页页面的最大值。
37
+ :type limit: int
38
+ :param marker: 页面标记。
39
+ :type marker: str
40
+ :param permission_id: 共享资源权限的ID。
41
+ :type permission_id: str
42
+ """
43
+
44
+
45
+
46
+ self._limit = None
47
+ self._marker = None
48
+ self._permission_id = None
49
+ self.discriminator = None
50
+
51
+ if limit is not None:
52
+ self.limit = limit
53
+ if marker is not None:
54
+ self.marker = marker
55
+ self.permission_id = permission_id
56
+
57
+ @property
58
+ def limit(self):
59
+ """Gets the limit of this ListPermissionVersionsRequest.
60
+
61
+ 分页页面的最大值。
62
+
63
+ :return: The limit of this ListPermissionVersionsRequest.
64
+ :rtype: int
65
+ """
66
+ return self._limit
67
+
68
+ @limit.setter
69
+ def limit(self, limit):
70
+ """Sets the limit of this ListPermissionVersionsRequest.
71
+
72
+ 分页页面的最大值。
73
+
74
+ :param limit: The limit of this ListPermissionVersionsRequest.
75
+ :type limit: int
76
+ """
77
+ self._limit = limit
78
+
79
+ @property
80
+ def marker(self):
81
+ """Gets the marker of this ListPermissionVersionsRequest.
82
+
83
+ 页面标记。
84
+
85
+ :return: The marker of this ListPermissionVersionsRequest.
86
+ :rtype: str
87
+ """
88
+ return self._marker
89
+
90
+ @marker.setter
91
+ def marker(self, marker):
92
+ """Sets the marker of this ListPermissionVersionsRequest.
93
+
94
+ 页面标记。
95
+
96
+ :param marker: The marker of this ListPermissionVersionsRequest.
97
+ :type marker: str
98
+ """
99
+ self._marker = marker
100
+
101
+ @property
102
+ def permission_id(self):
103
+ """Gets the permission_id of this ListPermissionVersionsRequest.
104
+
105
+ 共享资源权限的ID。
106
+
107
+ :return: The permission_id of this ListPermissionVersionsRequest.
108
+ :rtype: str
109
+ """
110
+ return self._permission_id
111
+
112
+ @permission_id.setter
113
+ def permission_id(self, permission_id):
114
+ """Sets the permission_id of this ListPermissionVersionsRequest.
115
+
116
+ 共享资源权限的ID。
117
+
118
+ :param permission_id: The permission_id of this ListPermissionVersionsRequest.
119
+ :type permission_id: str
120
+ """
121
+ self._permission_id = permission_id
122
+
123
+ def to_dict(self):
124
+ """Returns the model properties as a dict"""
125
+ result = {}
126
+
127
+ for attr, _ in six.iteritems(self.openapi_types):
128
+ value = getattr(self, attr)
129
+ if isinstance(value, list):
130
+ result[attr] = list(map(
131
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
132
+ value
133
+ ))
134
+ elif hasattr(value, "to_dict"):
135
+ result[attr] = value.to_dict()
136
+ elif isinstance(value, dict):
137
+ result[attr] = dict(map(
138
+ lambda item: (item[0], item[1].to_dict())
139
+ if hasattr(item[1], "to_dict") else item,
140
+ value.items()
141
+ ))
142
+ else:
143
+ if attr in self.sensitive_list:
144
+ result[attr] = "****"
145
+ else:
146
+ result[attr] = value
147
+
148
+ return result
149
+
150
+ def to_str(self):
151
+ """Returns the string representation of the model"""
152
+ import simplejson as json
153
+ if six.PY2:
154
+ import sys
155
+ reload(sys)
156
+ sys.setdefaultencoding("utf-8")
157
+ return json.dumps(sanitize_for_serialization(self), ensure_ascii=False)
158
+
159
+ def __repr__(self):
160
+ """For `print`"""
161
+ return self.to_str()
162
+
163
+ def __eq__(self, other):
164
+ """Returns true if both objects are equal"""
165
+ if not isinstance(other, ListPermissionVersionsRequest):
166
+ return False
167
+
168
+ return self.__dict__ == other.__dict__
169
+
170
+ def __ne__(self, other):
171
+ """Returns true if both objects are not equal"""
172
+ return not self == other
@@ -0,0 +1,141 @@
1
+ # coding: utf-8
2
+
3
+ import six
4
+
5
+ from huaweicloudsdkcore.sdk_response import SdkResponse
6
+ from huaweicloudsdkcore.utils.http_utils import sanitize_for_serialization
7
+
8
+
9
+ class ListPermissionVersionsResponse(SdkResponse):
10
+
11
+ """
12
+ Attributes:
13
+ openapi_types (dict): The key is attribute name
14
+ and the value is attribute type.
15
+ attribute_map (dict): The key is attribute name
16
+ and the value is json key in definition.
17
+ """
18
+ sensitive_list = []
19
+
20
+ openapi_types = {
21
+ 'permissions': 'list[PermissionSummary]',
22
+ 'page_info': 'PageInfo'
23
+ }
24
+
25
+ attribute_map = {
26
+ 'permissions': 'permissions',
27
+ 'page_info': 'page_info'
28
+ }
29
+
30
+ def __init__(self, permissions=None, page_info=None):
31
+ """ListPermissionVersionsResponse
32
+
33
+ The model defined in huaweicloud sdk
34
+
35
+ :param permissions: 共享资源权限的详细信息列表。
36
+ :type permissions: list[:class:`huaweicloudsdkram.v1.PermissionSummary`]
37
+ :param page_info:
38
+ :type page_info: :class:`huaweicloudsdkram.v1.PageInfo`
39
+ """
40
+
41
+ super(ListPermissionVersionsResponse, self).__init__()
42
+
43
+ self._permissions = None
44
+ self._page_info = None
45
+ self.discriminator = None
46
+
47
+ if permissions is not None:
48
+ self.permissions = permissions
49
+ if page_info is not None:
50
+ self.page_info = page_info
51
+
52
+ @property
53
+ def permissions(self):
54
+ """Gets the permissions of this ListPermissionVersionsResponse.
55
+
56
+ 共享资源权限的详细信息列表。
57
+
58
+ :return: The permissions of this ListPermissionVersionsResponse.
59
+ :rtype: list[:class:`huaweicloudsdkram.v1.PermissionSummary`]
60
+ """
61
+ return self._permissions
62
+
63
+ @permissions.setter
64
+ def permissions(self, permissions):
65
+ """Sets the permissions of this ListPermissionVersionsResponse.
66
+
67
+ 共享资源权限的详细信息列表。
68
+
69
+ :param permissions: The permissions of this ListPermissionVersionsResponse.
70
+ :type permissions: list[:class:`huaweicloudsdkram.v1.PermissionSummary`]
71
+ """
72
+ self._permissions = permissions
73
+
74
+ @property
75
+ def page_info(self):
76
+ """Gets the page_info of this ListPermissionVersionsResponse.
77
+
78
+ :return: The page_info of this ListPermissionVersionsResponse.
79
+ :rtype: :class:`huaweicloudsdkram.v1.PageInfo`
80
+ """
81
+ return self._page_info
82
+
83
+ @page_info.setter
84
+ def page_info(self, page_info):
85
+ """Sets the page_info of this ListPermissionVersionsResponse.
86
+
87
+ :param page_info: The page_info of this ListPermissionVersionsResponse.
88
+ :type page_info: :class:`huaweicloudsdkram.v1.PageInfo`
89
+ """
90
+ self._page_info = page_info
91
+
92
+ def to_dict(self):
93
+ """Returns the model properties as a dict"""
94
+ result = {}
95
+
96
+ for attr, _ in six.iteritems(self.openapi_types):
97
+ value = getattr(self, attr)
98
+ if isinstance(value, list):
99
+ result[attr] = list(map(
100
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
101
+ value
102
+ ))
103
+ elif hasattr(value, "to_dict"):
104
+ result[attr] = value.to_dict()
105
+ elif isinstance(value, dict):
106
+ result[attr] = dict(map(
107
+ lambda item: (item[0], item[1].to_dict())
108
+ if hasattr(item[1], "to_dict") else item,
109
+ value.items()
110
+ ))
111
+ else:
112
+ if attr in self.sensitive_list:
113
+ result[attr] = "****"
114
+ else:
115
+ result[attr] = value
116
+
117
+ return result
118
+
119
+ def to_str(self):
120
+ """Returns the string representation of the model"""
121
+ import simplejson as json
122
+ if six.PY2:
123
+ import sys
124
+ reload(sys)
125
+ sys.setdefaultencoding("utf-8")
126
+ return json.dumps(sanitize_for_serialization(self), ensure_ascii=False)
127
+
128
+ def __repr__(self):
129
+ """For `print`"""
130
+ return self.to_str()
131
+
132
+ def __eq__(self, other):
133
+ """Returns true if both objects are equal"""
134
+ if not isinstance(other, ListPermissionVersionsResponse):
135
+ return False
136
+
137
+ return self.__dict__ == other.__dict__
138
+
139
+ def __ne__(self, other):
140
+ """Returns true if both objects are not equal"""
141
+ return not self == other
@@ -19,16 +19,18 @@ class ListPermissionsRequest:
19
19
  openapi_types = {
20
20
  'limit': 'int',
21
21
  'marker': 'str',
22
- 'resource_type': 'str'
22
+ 'resource_type': 'str',
23
+ 'permission_type': 'str'
23
24
  }
24
25
 
25
26
  attribute_map = {
26
27
  'limit': 'limit',
27
28
  'marker': 'marker',
28
- 'resource_type': 'resource_type'
29
+ 'resource_type': 'resource_type',
30
+ 'permission_type': 'permission_type'
29
31
  }
30
32
 
31
- def __init__(self, limit=None, marker=None, resource_type=None):
33
+ def __init__(self, limit=None, marker=None, resource_type=None, permission_type=None):
32
34
  """ListPermissionsRequest
33
35
 
34
36
  The model defined in huaweicloud sdk
@@ -39,6 +41,8 @@ class ListPermissionsRequest:
39
41
  :type marker: str
40
42
  :param resource_type: 资源类型的名称。
41
43
  :type resource_type: str
44
+ :param permission_type: 权限类型。RAM_MANAGED表示RAM托管的权限,CUSTOMER_MANAGED表示租户创建的自定义的权限,ALL表示所有的权限。
45
+ :type permission_type: str
42
46
  """
43
47
 
44
48
 
@@ -46,6 +50,7 @@ class ListPermissionsRequest:
46
50
  self._limit = None
47
51
  self._marker = None
48
52
  self._resource_type = None
53
+ self._permission_type = None
49
54
  self.discriminator = None
50
55
 
51
56
  if limit is not None:
@@ -54,6 +59,8 @@ class ListPermissionsRequest:
54
59
  self.marker = marker
55
60
  if resource_type is not None:
56
61
  self.resource_type = resource_type
62
+ if permission_type is not None:
63
+ self.permission_type = permission_type
57
64
 
58
65
  @property
59
66
  def limit(self):
@@ -121,6 +128,28 @@ class ListPermissionsRequest:
121
128
  """
122
129
  self._resource_type = resource_type
123
130
 
131
+ @property
132
+ def permission_type(self):
133
+ """Gets the permission_type of this ListPermissionsRequest.
134
+
135
+ 权限类型。RAM_MANAGED表示RAM托管的权限,CUSTOMER_MANAGED表示租户创建的自定义的权限,ALL表示所有的权限。
136
+
137
+ :return: The permission_type of this ListPermissionsRequest.
138
+ :rtype: str
139
+ """
140
+ return self._permission_type
141
+
142
+ @permission_type.setter
143
+ def permission_type(self, permission_type):
144
+ """Sets the permission_type of this ListPermissionsRequest.
145
+
146
+ 权限类型。RAM_MANAGED表示RAM托管的权限,CUSTOMER_MANAGED表示租户创建的自定义的权限,ALL表示所有的权限。
147
+
148
+ :param permission_type: The permission_type of this ListPermissionsRequest.
149
+ :type permission_type: str
150
+ """
151
+ self._permission_type = permission_type
152
+
124
153
  def to_dict(self):
125
154
  """Returns the model properties as a dict"""
126
155
  result = {}
@@ -23,7 +23,12 @@ class Permission:
23
23
  'content': 'str',
24
24
  'is_resource_type_default': 'bool',
25
25
  'created_at': 'datetime',
26
- 'updated_at': 'datetime'
26
+ 'updated_at': 'datetime',
27
+ 'permission_urn': 'str',
28
+ 'permission_type': 'str',
29
+ 'default_version': 'bool',
30
+ 'version': 'int',
31
+ 'status': 'str'
27
32
  }
28
33
 
29
34
  attribute_map = {
@@ -33,10 +38,15 @@ class Permission:
33
38
  'content': 'content',
34
39
  'is_resource_type_default': 'is_resource_type_default',
35
40
  'created_at': 'created_at',
36
- 'updated_at': 'updated_at'
41
+ 'updated_at': 'updated_at',
42
+ 'permission_urn': 'permission_urn',
43
+ 'permission_type': 'permission_type',
44
+ 'default_version': 'default_version',
45
+ 'version': 'version',
46
+ 'status': 'status'
37
47
  }
38
48
 
39
- def __init__(self, id=None, name=None, resource_type=None, content=None, is_resource_type_default=None, created_at=None, updated_at=None):
49
+ def __init__(self, id=None, name=None, resource_type=None, content=None, is_resource_type_default=None, created_at=None, updated_at=None, permission_urn=None, permission_type=None, default_version=None, version=None, status=None):
40
50
  """Permission
41
51
 
42
52
  The model defined in huaweicloud sdk
@@ -55,6 +65,16 @@ class Permission:
55
65
  :type created_at: datetime
56
66
  :param updated_at: 最后一次更新权限的时间。
57
67
  :type updated_at: datetime
68
+ :param permission_urn: 权限URN。
69
+ :type permission_urn: str
70
+ :param permission_type: 权限类型。
71
+ :type permission_type: str
72
+ :param default_version: 此权限是否为默认版本。
73
+ :type default_version: bool
74
+ :param version: 权限版本。
75
+ :type version: int
76
+ :param status: 权限的状态
77
+ :type status: str
58
78
  """
59
79
 
60
80
 
@@ -66,6 +86,11 @@ class Permission:
66
86
  self._is_resource_type_default = None
67
87
  self._created_at = None
68
88
  self._updated_at = None
89
+ self._permission_urn = None
90
+ self._permission_type = None
91
+ self._default_version = None
92
+ self._version = None
93
+ self._status = None
69
94
  self.discriminator = None
70
95
 
71
96
  self.id = id
@@ -75,6 +100,16 @@ class Permission:
75
100
  self.is_resource_type_default = is_resource_type_default
76
101
  self.created_at = created_at
77
102
  self.updated_at = updated_at
103
+ if permission_urn is not None:
104
+ self.permission_urn = permission_urn
105
+ if permission_type is not None:
106
+ self.permission_type = permission_type
107
+ if default_version is not None:
108
+ self.default_version = default_version
109
+ if version is not None:
110
+ self.version = version
111
+ if status is not None:
112
+ self.status = status
78
113
 
79
114
  @property
80
115
  def id(self):
@@ -230,6 +265,116 @@ class Permission:
230
265
  """
231
266
  self._updated_at = updated_at
232
267
 
268
+ @property
269
+ def permission_urn(self):
270
+ """Gets the permission_urn of this Permission.
271
+
272
+ 权限URN。
273
+
274
+ :return: The permission_urn of this Permission.
275
+ :rtype: str
276
+ """
277
+ return self._permission_urn
278
+
279
+ @permission_urn.setter
280
+ def permission_urn(self, permission_urn):
281
+ """Sets the permission_urn of this Permission.
282
+
283
+ 权限URN。
284
+
285
+ :param permission_urn: The permission_urn of this Permission.
286
+ :type permission_urn: str
287
+ """
288
+ self._permission_urn = permission_urn
289
+
290
+ @property
291
+ def permission_type(self):
292
+ """Gets the permission_type of this Permission.
293
+
294
+ 权限类型。
295
+
296
+ :return: The permission_type of this Permission.
297
+ :rtype: str
298
+ """
299
+ return self._permission_type
300
+
301
+ @permission_type.setter
302
+ def permission_type(self, permission_type):
303
+ """Sets the permission_type of this Permission.
304
+
305
+ 权限类型。
306
+
307
+ :param permission_type: The permission_type of this Permission.
308
+ :type permission_type: str
309
+ """
310
+ self._permission_type = permission_type
311
+
312
+ @property
313
+ def default_version(self):
314
+ """Gets the default_version of this Permission.
315
+
316
+ 此权限是否为默认版本。
317
+
318
+ :return: The default_version of this Permission.
319
+ :rtype: bool
320
+ """
321
+ return self._default_version
322
+
323
+ @default_version.setter
324
+ def default_version(self, default_version):
325
+ """Sets the default_version of this Permission.
326
+
327
+ 此权限是否为默认版本。
328
+
329
+ :param default_version: The default_version of this Permission.
330
+ :type default_version: bool
331
+ """
332
+ self._default_version = default_version
333
+
334
+ @property
335
+ def version(self):
336
+ """Gets the version of this Permission.
337
+
338
+ 权限版本。
339
+
340
+ :return: The version of this Permission.
341
+ :rtype: int
342
+ """
343
+ return self._version
344
+
345
+ @version.setter
346
+ def version(self, version):
347
+ """Sets the version of this Permission.
348
+
349
+ 权限版本。
350
+
351
+ :param version: The version of this Permission.
352
+ :type version: int
353
+ """
354
+ self._version = version
355
+
356
+ @property
357
+ def status(self):
358
+ """Gets the status of this Permission.
359
+
360
+ 权限的状态
361
+
362
+ :return: The status of this Permission.
363
+ :rtype: str
364
+ """
365
+ return self._status
366
+
367
+ @status.setter
368
+ def status(self, status):
369
+ """Sets the status of this Permission.
370
+
371
+ 权限的状态
372
+
373
+ :param status: The status of this Permission.
374
+ :type status: str
375
+ """
376
+ self._status = status
377
+
233
378
  def to_dict(self):
234
379
  """Returns the model properties as a dict"""
235
380
  result = {}