示例#1
0
    def removeServiceAccountKey(self, session_key):
        stanza = get_secure_password_stanza(SERVICE_KEY_USERNAME, SERVICE_KEY_REALM)
        self.logger.warn("About to delete service key, stanza=%s", stanza)

        response, _ = simpleRequest('/servicesNS/nobody/search/storage/passwords/' + quote_plus(stanza), sessionKey=session_key, method='DELETE')

        # Check response
        if response.status == 200 or response.status == 201:
            return True
        else:
            return False
示例#2
0
    def uploadServiceAccountKeyJSON(self, file_contents, session_key):
        # Parse the output
        service_account_email = None
        private_key_id = None

        try:
            service_account_email, private_key_id = self.parseServiceAccountKey(file_contents, is_base64=True)
        except ValueError as e:
            return self.render_error_json(str(e))

        # Determine if the key already exists
        existing_key = self.retrieve_raw_key_info_from_secure_storage(session_key)
        
        # Get secure password stanza
        stanza = get_secure_password_stanza(SERVICE_KEY_USERNAME, SERVICE_KEY_REALM)

        # Make up the argument array
        if existing_key is None:
            postargs = {
                'name': SERVICE_KEY_USERNAME,
                'password': file_contents,
                'realm': SERVICE_KEY_REALM,
                'output_mode': 'json',
            }
        else:
            self.logger.info("Service key already exists; it wil be replaced with a new one")

            postargs = {
                'password': file_contents,
                'output_mode': 'json',
            }

        try:
            response, content = simpleRequest('/services/storage/passwords/' + quote_plus(stanza), postargs=postargs, sessionKey=session_key, method='POST')

            # Check response
            if response.status == 200 or response.status == 201:

                # Return a response
                return self.render_json({
                                        'filename' : '',
                                        'private_key_id' : private_key_id,
                                        'service_account_email' : service_account_email
                                        })
            else:
                self.logger.warn("Unable to save the key file, status=%i, response=%r", response.status, content)
                return self.render_error_json("Unable to save the key file")
        except:
            return self.render_error_json("Unable to save the key file")
示例#3
0
 def refreshServiceAccountKey(self, session_key):
     stanza = get_secure_password_stanza(SERVICE_KEY_USERNAME, SERVICE_KEY_REALM)
     _, _ = simpleRequest('/services/storage/passwords/_reload' + quote_plus(stanza), sessionKey=session_key)