diff --git a/iam/api-client/service_account_keys.py b/iam/api-client/service_account_keys.py index b73227dd794..d9017f669eb 100644 --- a/iam/api-client/service_account_keys.py +++ b/iam/api-client/service_account_keys.py @@ -22,23 +22,30 @@ """ import argparse +# [START iam_create_key] +# [START iam_list_keys] +# [START iam_delete_key] import os from google.oauth2 import service_account import googleapiclient.discovery -credentials = service_account.Credentials.from_service_account_file( - filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'], - scopes=['https://www.googleapis.com/auth/cloud-platform']) -service = googleapiclient.discovery.build( - 'iam', 'v1', credentials=credentials) +# [END iam_create_key] +# [END iam_list_keys] +# [END iam_delete_key] # [START iam_create_key] def create_key(service_account_email): """Creates a key for a service account.""" - # pylint: disable=no-member + credentials = service_account.Credentials.from_service_account_file( + filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'], + scopes=['https://www.googleapis.com/auth/cloud-platform']) + + service = googleapiclient.discovery.build( + 'iam', 'v1', credentials=credentials) + key = service.projects().serviceAccounts().keys().create( name='projects/-/serviceAccounts/' + service_account_email, body={} ).execute() @@ -51,7 +58,13 @@ def create_key(service_account_email): def list_keys(service_account_email): """Lists all keys for a service account.""" - # pylint: disable=no-member + credentials = service_account.Credentials.from_service_account_file( + filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'], + scopes=['https://www.googleapis.com/auth/cloud-platform']) + + service = googleapiclient.discovery.build( + 'iam', 'v1', credentials=credentials) + keys = service.projects().serviceAccounts().keys().list( name='projects/-/serviceAccounts/' + service_account_email).execute() @@ -64,7 +77,13 @@ def list_keys(service_account_email): def delete_key(full_key_name): """Deletes a service account key.""" - # pylint: disable=no-member + credentials = service_account.Credentials.from_service_account_file( + filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'], + scopes=['https://www.googleapis.com/auth/cloud-platform']) + + service = googleapiclient.discovery.build( + 'iam', 'v1', credentials=credentials) + service.projects().serviceAccounts().keys().delete( name=full_key_name).execute() diff --git a/iam/api-client/service_accounts.py b/iam/api-client/service_accounts.py index f70e6024b2d..895e02bb663 100644 --- a/iam/api-client/service_accounts.py +++ b/iam/api-client/service_accounts.py @@ -20,25 +20,33 @@ """ import argparse +# [START iam_create_service_account] +# [START iam_list_service_account] +# [START iam_rename_service_account] +# [START iam_delete_service_account] import os from google.oauth2 import service_account import googleapiclient.discovery -credentials = service_account.Credentials.from_service_account_file( - filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'], - scopes=['https://www.googleapis.com/auth/cloud-platform']) - -service = googleapiclient.discovery.build( - 'iam', 'v1', credentials=credentials) +# [END iam_create_service_account] +# [END iam_list_service_account] +# [END iam_rename_service_account] +# [END iam_delete_service_account] # [START iam_create_service_account] def create_service_account(project_id, name, display_name): """Creates a service account.""" - # pylint: disable=no-member - service_account = service.projects().serviceAccounts().create( + credentials = service_account.Credentials.from_service_account_file( + filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'], + scopes=['https://www.googleapis.com/auth/cloud-platform']) + + service = googleapiclient.discovery.build( + 'iam', 'v1', credentials=credentials) + + my_service_account = service.projects().serviceAccounts().create( name='projects/' + project_id, body={ 'accountId': name, @@ -47,8 +55,8 @@ def create_service_account(project_id, name, display_name): } }).execute() - print('Created service account: ' + service_account['email']) - return service_account + print('Created service account: ' + my_service_account['email']) + return my_service_account # [END iam_create_service_account] @@ -56,7 +64,13 @@ def create_service_account(project_id, name, display_name): def list_service_accounts(project_id): """Lists all service accounts for the current project.""" - # pylint: disable=no-member + credentials = service_account.Credentials.from_service_account_file( + filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'], + scopes=['https://www.googleapis.com/auth/cloud-platform']) + + service = googleapiclient.discovery.build( + 'iam', 'v1', credentials=credentials) + service_accounts = service.projects().serviceAccounts().list( name='projects/' + project_id).execute() @@ -73,19 +87,26 @@ def rename_service_account(email, new_display_name): """Changes a service account's display name.""" # First, get a service account using List() or Get() + credentials = service_account.Credentials.from_service_account_file( + filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'], + scopes=['https://www.googleapis.com/auth/cloud-platform']) + + service = googleapiclient.discovery.build( + 'iam', 'v1', credentials=credentials) + resource = 'projects/-/serviceAccounts/' + email - # pylint: disable=no-member - service_account = service.projects().serviceAccounts().get( + + my_service_account = service.projects().serviceAccounts().get( name=resource).execute() # Then you can update the display name - service_account['displayName'] = new_display_name - service_account = service.projects().serviceAccounts().update( - name=resource, body=service_account).execute() + my_service_account['displayName'] = new_display_name + my_service_account = service.projects().serviceAccounts().update( + name=resource, body=my_service_account).execute() print('Updated display name for {} to: {}'.format( - service_account['email'], service_account['displayName'])) - return service_account + my_service_account['email'], my_service_account['displayName'])) + return my_service_account # [END iam_rename_service_account] @@ -93,7 +114,13 @@ def rename_service_account(email, new_display_name): def delete_service_account(email): """Deletes a service account.""" - # pylint: disable=no-member + credentials = service_account.Credentials.from_service_account_file( + filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'], + scopes=['https://www.googleapis.com/auth/cloud-platform']) + + service = googleapiclient.discovery.build( + 'iam', 'v1', credentials=credentials) + service.projects().serviceAccounts().delete( name='projects/-/serviceAccounts/' + email).execute()