Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .doc_gen/metadata/iam_metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1487,6 +1487,14 @@ iam_GetPolicyVersion:
- description:
snippet_tags:
- python.example_code.iam.GetPolicyVersion
SAP ABAP:
versions:
- sdk_version: 1
github: sap-abap/services/iam
excerpts:
- description:
snippet_tags:
- iam.abapv1.get_policy_version
services:
iam: {GetPolicyVersion}
iam_Scenario_RollbackPolicyVersion:
Expand Down
16 changes: 16 additions & 0 deletions .doc_gen/metadata/iot-data_metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@ iot-data-plane_GetThingShadow:
- description:
snippet_tags:
- cpp.example_code.iot.GetThingShadow
SAP ABAP:
versions:
- sdk_version: 1
github: sap-abap/services/iop
excerpts:
- description:
snippet_tags:
- iop.abapv1.get_thing_shadow
services:
iot-data-plane: {GetThingShadow}
iot-data-plane_UpdateThingShadow:
Expand Down Expand Up @@ -89,5 +97,13 @@ iot-data-plane_UpdateThingShadow:
- description:
snippet_tags:
- cpp.example_code.iot.UpdateThingShadow
SAP ABAP:
versions:
- sdk_version: 1
github: sap-abap/services/iop
excerpts:
- description:
snippet_tags:
- iop.abapv1.update_thing_shadow
services:
iot-data-plane: {UpdateThingShadow}
1 change: 1 addition & 0 deletions .tools/readmes/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@
"firehose": "sap-abap/services/frh",
"glue": "sap-abap/services/glu",
"healthlake": "sap-abap/services/hll",
"iot-data-plane": "sap-abap/services/iop",
"iotsitewise": "sap-abap/services/ios",
"keyspaces": "sap-abap/services/kys",
"kinesis": "sap-abap/services/kns",
Expand Down
30 changes: 30 additions & 0 deletions sap-abap/services/iam/#awsex#cl_iam_actions.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,15 @@ CLASS /awsex/cl_iam_actions DEFINITION
RAISING
/aws1/cx_rt_generic.

METHODS get_policy_version
IMPORTING
!iv_policy_arn TYPE /aws1/iamarntype
!iv_version_id TYPE /aws1/iampolicyversionidtype
EXPORTING
!oo_result TYPE REF TO /aws1/cl_iamgetpolicyvrsrsp
RAISING
/aws1/cx_rt_generic.

PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
Expand Down Expand Up @@ -1027,4 +1036,25 @@ CLASS /AWSEX/CL_IAM_ACTIONS IMPLEMENTATION.
ENDTRY.
" snippet-end:[iam.abapv1.delete_policy_version]
ENDMETHOD.


METHOD get_policy_version.
CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'.

DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ).
DATA(lo_iam) = /aws1/cl_iam_factory=>create( lo_session ).

" snippet-start:[iam.abapv1.get_policy_version]
TRY.
oo_result = lo_iam->getpolicyversion(
iv_policyarn = iv_policy_arn
iv_versionid = iv_version_id ).
MESSAGE 'Retrieved policy version information.' TYPE 'I'.
CATCH /aws1/cx_iamnosuchentityex.
MESSAGE 'Policy or version does not exist.' TYPE 'E'.
CATCH /aws1/cx_iaminvalidinputex.
MESSAGE 'Invalid input provided.' TYPE 'E'.
ENDTRY.
" snippet-end:[iam.abapv1.get_policy_version]
ENDMETHOD.
ENDCLASS.
51 changes: 51 additions & 0 deletions sap-abap/services/iam/#awsex#cl_iam_actions.clas.testclasses.abap
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ CLASS ltc_awsex_cl_iam_actions DEFINITION FOR TESTING DURATION LONG RISK LEVEL D
list_saml_providers FOR TESTING RAISING /aws1/cx_rt_generic,
create_service_linked_role FOR TESTING RAISING /aws1/cx_rt_generic,
list_policy_versions FOR TESTING RAISING /aws1/cx_rt_generic,
get_policy_version FOR TESTING RAISING /aws1/cx_rt_generic,
set_default_policy_version FOR TESTING RAISING /aws1/cx_rt_generic,
delete_policy_version FOR TESTING RAISING /aws1/cx_rt_generic.

Expand Down Expand Up @@ -1507,6 +1508,56 @@ CLASS ltc_awsex_cl_iam_actions IMPLEMENTATION.
msg = |Policy should have a default version| ).
ENDMETHOD.


METHOD get_policy_version.
DATA lo_result TYPE REF TO /aws1/cl_iamgetpolicyvrsrsp.
DATA lv_version_id TYPE /aws1/iampolicyversionidtype.

" Use test policy created in class_setup
" First get the list of versions to find the default version ID
DATA(lo_list_result) = ao_iam->listpolicyversions( iv_policyarn = av_test_policy_arn ).
DATA(lt_versions) = lo_list_result->get_versions( ).

" Find the default version
LOOP AT lt_versions INTO DATA(lo_version).
IF lo_version->get_isdefaultversion( ) = abap_true.
lv_version_id = lo_version->get_versionid( ).
EXIT.
ENDIF.
ENDLOOP.

cl_abap_unit_assert=>assert_not_initial(
act = lv_version_id
msg = |Default policy version ID should be found| ).

" Now get the policy version details
ao_iam_actions->get_policy_version(
EXPORTING
iv_policy_arn = av_test_policy_arn
iv_version_id = lv_version_id
IMPORTING
oo_result = lo_result ).

cl_abap_unit_assert=>assert_bound(
act = lo_result
msg = |Get policy version result should not be initial| ).

DATA(lo_policy_version) = lo_result->get_policyversion( ).
cl_abap_unit_assert=>assert_bound(
act = lo_policy_version
msg = |Policy version should not be initial| ).

cl_abap_unit_assert=>assert_equals(
exp = lv_version_id
act = lo_policy_version->get_versionid( )
msg = |Version ID should match| ).

cl_abap_unit_assert=>assert_not_initial(
act = lo_policy_version->get_document( )
msg = |Policy document should not be initial| ).
ENDMETHOD.


METHOD set_default_policy_version.
DATA lv_new_policy_doc TYPE string.
DATA lv_version_id TYPE /aws1/iampolicyversionidtype.
Expand Down
77 changes: 39 additions & 38 deletions sap-abap/services/iam/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,44 +33,45 @@ For prerequisites, see the [README](../../README.md#Prerequisites) in the `sap-a

Code excerpts that show you how to call individual service functions.

- [AttachRolePolicy](%23awsex%23cl_iam_actions.clas.abap#L689)
- [AttachUserPolicy](%23awsex%23cl_iam_actions.clas.abap#L573)
- [CreateAccessKey](%23awsex%23cl_iam_actions.clas.abap#L377)
- [CreateAccountAlias](%23awsex%23cl_iam_actions.clas.abap#L782)
- [CreatePolicy](%23awsex%23cl_iam_actions.clas.abap#L472)
- [CreatePolicyVersion](%23awsex%23cl_iam_actions.clas.abap#L549)
- [CreateRole](%23awsex%23cl_iam_actions.clas.abap#L613)
- [CreateServiceLinkedRole](%23awsex%23cl_iam_actions.clas.abap#L972)
- [CreateUser](%23awsex%23cl_iam_actions.clas.abap#L298)
- [DeleteAccessKey](%23awsex%23cl_iam_actions.clas.abap#L397)
- [DeleteAccountAlias](%23awsex%23cl_iam_actions.clas.abap#L802)
- [DeletePolicy](%23awsex%23cl_iam_actions.clas.abap#L496)
- [DeletePolicyVersion](%23awsex%23cl_iam_actions.clas.abap#L1015)
- [DeleteRole](%23awsex%23cl_iam_actions.clas.abap#L636)
- [DeleteUser](%23awsex%23cl_iam_actions.clas.abap#L320)
- [DetachRolePolicy](%23awsex%23cl_iam_actions.clas.abap#L710)
- [DetachUserPolicy](%23awsex%23cl_iam_actions.clas.abap#L594)
- [GenerateCredentialReport](%23awsex%23cl_iam_actions.clas.abap#L871)
- [GetAccessKeyLastUsed](%23awsex%23cl_iam_actions.clas.abap#L454)
- [GetAccountAuthorizationDetails](%23awsex%23cl_iam_actions.clas.abap#L837)
- [GetAccountPasswordPolicy](%23awsex%23cl_iam_actions.clas.abap#L913)
- [GetAccountSummary](%23awsex%23cl_iam_actions.clas.abap#L854)
- [GetCredentialReport](%23awsex%23cl_iam_actions.clas.abap#L890)
- [GetPolicy](%23awsex%23cl_iam_actions.clas.abap#L532)
- [GetRole](%23awsex%23cl_iam_actions.clas.abap#L655)
- [ListAccessKeys](%23awsex%23cl_iam_actions.clas.abap#L416)
- [ListAccountAliases](%23awsex%23cl_iam_actions.clas.abap#L820)
- [ListAttachedRolePolicies](%23awsex%23cl_iam_actions.clas.abap#L729)
- [ListGroups](%23awsex%23cl_iam_actions.clas.abap#L765)
- [ListPolicies](%23awsex%23cl_iam_actions.clas.abap#L515)
- [ListPolicyVersions](%23awsex%23cl_iam_actions.clas.abap#L972)
- [ListRolePolicies](%23awsex%23cl_iam_actions.clas.abap#L747)
- [ListRoles](%23awsex%23cl_iam_actions.clas.abap#L672)
- [ListSAMLProviders](%23awsex%23cl_iam_actions.clas.abap#L932)
- [ListUsers](%23awsex%23cl_iam_actions.clas.abap#L339)
- [SetDefaultPolicyVersion](%23awsex%23cl_iam_actions.clas.abap#L992)
- [UpdateAccessKey](%23awsex%23cl_iam_actions.clas.abap#L434)
- [UpdateUser](%23awsex%23cl_iam_actions.clas.abap#L356)
- [AttachRolePolicy](%23awsex%23cl_iam_actions.clas.abap#L698)
- [AttachUserPolicy](%23awsex%23cl_iam_actions.clas.abap#L582)
- [CreateAccessKey](%23awsex%23cl_iam_actions.clas.abap#L386)
- [CreateAccountAlias](%23awsex%23cl_iam_actions.clas.abap#L791)
- [CreatePolicy](%23awsex%23cl_iam_actions.clas.abap#L481)
- [CreatePolicyVersion](%23awsex%23cl_iam_actions.clas.abap#L558)
- [CreateRole](%23awsex%23cl_iam_actions.clas.abap#L622)
- [CreateServiceLinkedRole](%23awsex%23cl_iam_actions.clas.abap#L981)
- [CreateUser](%23awsex%23cl_iam_actions.clas.abap#L307)
- [DeleteAccessKey](%23awsex%23cl_iam_actions.clas.abap#L406)
- [DeleteAccountAlias](%23awsex%23cl_iam_actions.clas.abap#L811)
- [DeletePolicy](%23awsex%23cl_iam_actions.clas.abap#L505)
- [DeletePolicyVersion](%23awsex%23cl_iam_actions.clas.abap#L1024)
- [DeleteRole](%23awsex%23cl_iam_actions.clas.abap#L645)
- [DeleteUser](%23awsex%23cl_iam_actions.clas.abap#L329)
- [DetachRolePolicy](%23awsex%23cl_iam_actions.clas.abap#L719)
- [DetachUserPolicy](%23awsex%23cl_iam_actions.clas.abap#L603)
- [GenerateCredentialReport](%23awsex%23cl_iam_actions.clas.abap#L880)
- [GetAccessKeyLastUsed](%23awsex%23cl_iam_actions.clas.abap#L463)
- [GetAccountAuthorizationDetails](%23awsex%23cl_iam_actions.clas.abap#L846)
- [GetAccountPasswordPolicy](%23awsex%23cl_iam_actions.clas.abap#L922)
- [GetAccountSummary](%23awsex%23cl_iam_actions.clas.abap#L863)
- [GetCredentialReport](%23awsex%23cl_iam_actions.clas.abap#L899)
- [GetPolicy](%23awsex%23cl_iam_actions.clas.abap#L541)
- [GetPolicyVersion](%23awsex%23cl_iam_actions.clas.abap#L1047)
- [GetRole](%23awsex%23cl_iam_actions.clas.abap#L664)
- [ListAccessKeys](%23awsex%23cl_iam_actions.clas.abap#L425)
- [ListAccountAliases](%23awsex%23cl_iam_actions.clas.abap#L829)
- [ListAttachedRolePolicies](%23awsex%23cl_iam_actions.clas.abap#L738)
- [ListGroups](%23awsex%23cl_iam_actions.clas.abap#L774)
- [ListPolicies](%23awsex%23cl_iam_actions.clas.abap#L524)
- [ListPolicyVersions](%23awsex%23cl_iam_actions.clas.abap#L981)
- [ListRolePolicies](%23awsex%23cl_iam_actions.clas.abap#L756)
- [ListRoles](%23awsex%23cl_iam_actions.clas.abap#L681)
- [ListSAMLProviders](%23awsex%23cl_iam_actions.clas.abap#L941)
- [ListUsers](%23awsex%23cl_iam_actions.clas.abap#L348)
- [SetDefaultPolicyVersion](%23awsex%23cl_iam_actions.clas.abap#L1001)
- [UpdateAccessKey](%23awsex%23cl_iam_actions.clas.abap#L443)
- [UpdateUser](%23awsex%23cl_iam_actions.clas.abap#L365)


<!--custom.examples.start-->
Expand Down
87 changes: 87 additions & 0 deletions sap-abap/services/iop/#awsex#cl_iop_actions.clas.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
" Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
" SPDX-License-Identifier: Apache-2.0
CLASS /awsex/cl_iop_actions DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .

PUBLIC SECTION.
" Updates the shadow for an AWS IoT thing
" @parameter iv_thing_name | The name of the thing (e.g., 'MyIoTDevice')
" @parameter iv_shadow_state | The shadow state as JSON string
" @raising /aws1/cx_rt_generic | Thrown when operation fails
METHODS update_thing_shadow
IMPORTING
!iv_thing_name TYPE /aws1/iopthingname
!iv_shadow_state TYPE string
RAISING
/aws1/cx_rt_generic.

" Gets the shadow for an AWS IoT thing
" @parameter iv_thing_name | The name of the thing (e.g., 'MyIoTDevice')
" @parameter ov_shadow | The shadow state as JSON string
" @raising /aws1/cx_rt_generic | Thrown when operation fails
METHODS get_thing_shadow
IMPORTING
!iv_thing_name TYPE /aws1/iopthingname
RETURNING
VALUE(ov_shadow) TYPE string
RAISING
/aws1/cx_rt_generic.

PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.



CLASS /awsex/cl_iop_actions IMPLEMENTATION.

METHOD update_thing_shadow.
CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'.

DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ).
DATA(lo_iop) = /aws1/cl_iop_factory=>create( lo_session ).

" snippet-start:[iop.abapv1.update_thing_shadow]
TRY.
" Convert JSON string to xstring for payload
DATA(lv_payload) = /aws1/cl_rt_util=>string_to_xstring( iv_shadow_state ).

lo_iop->updatethingshadow(
iv_thingname = iv_thing_name
iv_payload = lv_payload ).
MESSAGE 'Thing shadow updated successfully.' TYPE 'I'.
CATCH /aws1/cx_iopresourcenotfoundex.
MESSAGE 'Thing not found.' TYPE 'E'.
CATCH /aws1/cx_rt_generic INTO DATA(lo_exception).
DATA(lv_error) = |{ lo_exception->get_text( ) }|.
MESSAGE lv_error TYPE 'E'.
ENDTRY.
" snippet-end:[iop.abapv1.update_thing_shadow]
ENDMETHOD.

METHOD get_thing_shadow.
CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE 'ZCODE_DEMO'.

DATA(lo_session) = /aws1/cl_rt_session_aws=>create( cv_pfl ).
DATA(lo_iop) = /aws1/cl_iop_factory=>create( lo_session ).

" snippet-start:[iop.abapv1.get_thing_shadow]
TRY.
DATA(lo_result) = lo_iop->getthingshadow( iv_thingname = iv_thing_name ).

" Convert xstring payload to JSON string
DATA(lv_payload) = lo_result->get_payload( ).
ov_shadow = /aws1/cl_rt_util=>xstring_to_string( lv_payload ).
MESSAGE 'Thing shadow retrieved successfully.' TYPE 'I'.
CATCH /aws1/cx_iopresourcenotfoundex.
MESSAGE 'Thing shadow not found.' TYPE 'E'.
CATCH /aws1/cx_rt_generic INTO DATA(lo_exception).
DATA(lv_error) = |{ lo_exception->get_text( ) }|.
MESSAGE lv_error TYPE 'E'.
ENDTRY.
" snippet-end:[iop.abapv1.get_thing_shadow]
ENDMETHOD.

ENDCLASS.
Loading
Loading