Skip to content

Commit 9c8ad28

Browse files
authored
Merge branch 'main' into main
2 parents 3045262 + 2f6b2a1 commit 9c8ad28

File tree

9 files changed

+4427
-512
lines changed

9 files changed

+4427
-512
lines changed

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 0.30.3
2+
current_version = 0.31.0
33
commit = True
44
message = Update version {current_version} -> {new_version}
55

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# [0.31.0](https://github.com/IBM/platform-services-python-sdk/compare/v0.30.3...v0.31.0) (2023-01-25)
2+
3+
4+
### Features
5+
6+
* **IAM Policy Management:** add support for v2/policies ([#184](https://github.com/IBM/platform-services-python-sdk/issues/184)) ([d0af471](https://github.com/IBM/platform-services-python-sdk/commit/d0af4716ee52b6bd53ee37a9c727672672070341))
7+
18
## [0.30.3](https://github.com/IBM/platform-services-python-sdk/compare/v0.30.2...v0.30.3) (2023-01-17)
29

310

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
[![CLA assistant](https://cla-assistant.io/readme/badge/IBM/platform-services-python-sdk)](https://cla-assistant.io/IBM/platform-services-python-sdk)
99

1010

11-
# IBM Cloud Platform Services Python SDK Version 0.30.3
11+
# IBM Cloud Platform Services Python SDK Version 0.31.0
1212

1313
Python client library to interact with various
1414
[IBM Cloud Platform Service APIs](https://cloud.ibm.com/docs?tab=api-docs&category=platform_services).

examples/test_iam_policy_management_v1_examples.py

Lines changed: 217 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -144,15 +144,15 @@ def test_get_policy_example(self):
144144
pytest.fail(str(e))
145145

146146
@needscredentials
147-
def test_update_policy_example(self):
147+
def test_replace_policy_example(self):
148148
"""
149-
update_policy request example
149+
replace_policy request example
150150
"""
151151
try:
152152
global example_updated_policy_etag
153153

154-
print('\nupdate_policy() result:')
155-
# begin-update_policy
154+
print('\nreplace_policy() result:')
155+
# begin-replace_policy
156156

157157
policy_subjects = PolicySubject(attributes=[SubjectAttribute(name='iam_id', value=example_user_id)])
158158
account_id_resource_attribute = ResourceAttribute(name='accountId', value=example_account_id)
@@ -163,7 +163,7 @@ def test_update_policy_example(self):
163163
)
164164
updated_policy_roles = PolicyRole(role_id='crn:v1:bluemix:public:iam::::role:Editor')
165165

166-
response = iam_policy_management_service.update_policy(
166+
response = iam_policy_management_service.replace_policy(
167167
type='access',
168168
policy_id=example_policy_id,
169169
if_match=example_policy_etag,
@@ -175,30 +175,30 @@ def test_update_policy_example(self):
175175

176176
print(json.dumps(policy, indent=2))
177177

178-
# end-update_policy
178+
# end-replace_policy
179179

180180
example_updated_policy_etag = response.get_headers().get("Etag")
181181

182182
except ApiException as e:
183183
pytest.fail(str(e))
184184

185185
@needscredentials
186-
def test_patch_policy_example(self):
186+
def test_update_policy_state_example(self):
187187
"""
188-
patch_policy request example
188+
update_policy_state request example
189189
"""
190190
try:
191191

192-
print('\npatch_policy() result:')
193-
# begin-patch_policy
192+
print('\nupdate_policy_state() result:')
193+
# begin-update_policy_state
194194

195-
policy = iam_policy_management_service.patch_policy(
195+
policy = iam_policy_management_service.update_policy_state(
196196
policy_id=example_policy_id, if_match=example_updated_policy_etag, state='active'
197197
).get_result()
198198

199199
print(json.dumps(policy, indent=2))
200200

201-
# end-patch_policy
201+
# end-update_policy_state
202202

203203
except ApiException as e:
204204
pytest.fail(str(e))
@@ -243,6 +243,201 @@ def test_delete_policy_example(self):
243243
except ApiException as e:
244244
pytest.fail(str(e))
245245

246+
@needscredentials
247+
def test_create_v2_policy_example(self):
248+
"""
249+
create_v2_policy request example
250+
"""
251+
try:
252+
global example_policy_id
253+
254+
print('\ncreate_v2_policy() result:')
255+
# begin-create_v2_policy
256+
257+
policy_subject = V2PolicySubject(
258+
attributes=[V2PolicySubjectAttribute(key='iam_id', value=example_user_id, operator='stringEquals')]
259+
)
260+
policy_role = PolicyRole(role_id='crn:v1:bluemix:public:iam::::role:Viewer')
261+
account_id_resource_attribute = V2PolicyResourceAttribute(
262+
key='accountId', value=example_account_id, operator='stringEquals'
263+
)
264+
service_name_resource_attribute = V2PolicyResourceAttribute(
265+
key='serviceType', value='service', operator='stringEquals'
266+
)
267+
policy_resource_tag = V2PolicyResourceTag(key='project', value='prototype', operator='stringEquals')
268+
policy_resource = V2PolicyResource(
269+
attributes=[account_id_resource_attribute, service_name_resource_attribute], tags=[policy_resource_tag]
270+
)
271+
policy_control = Control(grant=V2PolicyGrant(roles=[policy_role]))
272+
policy_rule = V2PolicyRuleRuleWithConditions(
273+
operator='and',
274+
conditions=[
275+
RuleAttribute(
276+
key='{{environment.attributes.day_of_week}}',
277+
operator='dayOfWeekAnyOf',
278+
value=['1+00:00', '2+00:00', '3+00:00', '4+00:00', '5+00:00'],
279+
),
280+
RuleAttribute(
281+
key='{{environment.attributes.current_time}}',
282+
operator='timeGreaterThanOrEquals',
283+
value='09:00:00+00:00',
284+
),
285+
RuleAttribute(
286+
key='{{environment.attributes.current_time}}',
287+
operator='timeLessThanOrEquals',
288+
value='17:00:00+00:00',
289+
),
290+
],
291+
)
292+
policy_pattern = 'time-based-conditions:weekly:custom-hours'
293+
294+
policy = iam_policy_management_service.create_v2_policy(
295+
type='access',
296+
subject=policy_subject,
297+
control=policy_control,
298+
resource=policy_resource,
299+
rule=policy_rule,
300+
pattern=policy_pattern,
301+
).get_result()
302+
303+
print(json.dumps(policy, indent=2))
304+
305+
# end-create_v2_policy
306+
307+
example_policy_id = policy['id']
308+
309+
except ApiException as e:
310+
pytest.fail(str(e))
311+
312+
@needscredentials
313+
def test_get_v2_policy_example(self):
314+
"""
315+
get_v2_policy request example
316+
"""
317+
try:
318+
global example_policy_etag
319+
320+
print('\nget_v2_policy() result:')
321+
# begin-get_v2_policy
322+
323+
response = iam_policy_management_service.get_v2_policy(id=example_policy_id)
324+
policy = response.get_result()
325+
326+
print(json.dumps(policy, indent=2))
327+
328+
# end-get_v2_policy
329+
330+
example_policy_etag = response.get_headers().get("Etag")
331+
332+
except ApiException as e:
333+
pytest.fail(str(e))
334+
335+
@needscredentials
336+
def test_replace_v2_policy_example(self):
337+
"""
338+
replace_v2_policy request example
339+
"""
340+
try:
341+
342+
print('\nreplace_v2_policy() result:')
343+
# begin-replace_v2_policy
344+
345+
policy_subject = V2PolicySubject(
346+
attributes=[V2PolicySubjectAttribute(key='iam_id', value=example_user_id, operator='stringEquals')]
347+
)
348+
updated_policy_role = PolicyRole(role_id='crn:v1:bluemix:public:iam::::role:Editor')
349+
account_id_resource_attribute = V2PolicyResourceAttribute(
350+
key='accountId', value=example_account_id, operator='stringEquals'
351+
)
352+
service_name_resource_attribute = V2PolicyResourceAttribute(
353+
key='serviceType', value='service', operator='stringEquals'
354+
)
355+
policy_resource_tag = V2PolicyResourceTag(key='project', value='prototype', operator='stringEquals')
356+
policy_resource = PolicyResource(
357+
attributes=[account_id_resource_attribute, service_name_resource_attribute], tags=[policy_resource_tag]
358+
)
359+
policy_control = Control(grant=V2PolicyGrant(roles=[updated_policy_role]))
360+
policy_rule = V2PolicyRuleRuleWithConditions(
361+
operator='and',
362+
conditions=[
363+
RuleAttribute(
364+
key='{{environment.attributes.day_of_week}}',
365+
operator='dayOfWeekAnyOf',
366+
value=['1+00:00', '2+00:00', '3+00:00', '4+00:00', '5+00:00'],
367+
),
368+
RuleAttribute(
369+
key='{{environment.attributes.current_time}}',
370+
operator='timeGreaterThanOrEquals',
371+
value='09:00:00+00:00',
372+
),
373+
RuleAttribute(
374+
key='{{environment.attributes.current_time}}',
375+
operator='timeLessThanOrEquals',
376+
value='17:00:00+00:00',
377+
),
378+
],
379+
)
380+
policy_pattern = 'time-based-conditions:weekly:custom-hours'
381+
382+
response = iam_policy_management_service.replace_v2_policy(
383+
type='access',
384+
id=example_policy_id,
385+
if_match=example_policy_etag,
386+
subject=policy_subject,
387+
control=policy_control,
388+
resource=policy_resource,
389+
rule=policy_rule,
390+
pattern=policy_pattern,
391+
)
392+
policy = response.get_result()
393+
394+
print(json.dumps(policy, indent=2))
395+
396+
# end-replace_v2_policy
397+
398+
except ApiException as e:
399+
pytest.fail(str(e))
400+
401+
@needscredentials
402+
def test_list_v2_policies_example(self):
403+
"""
404+
list_v2_policies request example
405+
"""
406+
try:
407+
408+
print('\nlist_v2_policies() result:')
409+
# begin-list_v2_policies
410+
411+
policy_list = iam_policy_management_service.list_v2_policies(
412+
account_id=example_account_id, iam_id=example_user_id, format='include_last_permit'
413+
).get_result()
414+
415+
print(json.dumps(policy_list, indent=2))
416+
417+
# end-list_v2_policies
418+
419+
except ApiException as e:
420+
pytest.fail(str(e))
421+
422+
@needscredentials
423+
def test_delete_v2_policy_example(self):
424+
"""
425+
delete_v2_policy request example
426+
"""
427+
try:
428+
429+
print('\ndelete_v2_policy() result:')
430+
# begin-delete_v2_policy
431+
432+
response = iam_policy_management_service.delete_v2_policy(id=example_policy_id).get_result()
433+
434+
print(json.dumps(response, indent=2))
435+
436+
# end-delete_v2_policy
437+
438+
except ApiException as e:
439+
pytest.fail(str(e))
440+
246441
@needscredentials
247442
def test_create_role_example(self):
248443
"""
@@ -295,23 +490,26 @@ def test_get_role_example(self):
295490
pytest.fail(str(e))
296491

297492
@needscredentials
298-
def test_update_role_example(self):
493+
def test_replace_role_example(self):
299494
"""
300-
update_role request example
495+
replace_role request example
301496
"""
302497
try:
303498

304-
print('\nupdate_role() result:')
305-
# begin-update_role
499+
print('\nreplace_role() result:')
500+
# begin-replace_role
306501

307502
updated_role_actions = ['iam-groups.groups.read', 'iam-groups.groups.list']
308-
custom_role = iam_policy_management_service.update_role(
309-
role_id=example_custom_role_id, if_match=example_custom_role_etag, actions=updated_role_actions
503+
custom_role = iam_policy_management_service.replace_role(
504+
role_id=example_custom_role_id,
505+
if_match=example_custom_role_etag,
506+
actions=updated_role_actions,
507+
display_name='IAM Groups read access',
310508
).get_result()
311509

312510
print(json.dumps(custom_role, indent=2))
313511

314-
# end-update_role
512+
# end-replace_role
315513

316514
except ApiException as e:
317515
pytest.fail(str(e))

0 commit comments

Comments
 (0)