def add_project_ssh_key(self):
        """
        Update project SSH private key. Add new key to project's
        common instance metadata.

        :return: REST response with operation responsible for the sshKeys
        addition to project metadata process and its status
        """
        common_instance_metadata = self.get_common_instance_metadata()
        if common_instance_metadata.get('items') is None:
            item = [{self.KEY_NAME: self.KEY_VALUE,
                    'value': utils.get_key_user_string(self.user,
                                                       self.public_key)}]
            common_instance_metadata['items'] = item
        else:
            item = utils.get_item_from_gcp_response(
                self.KEY_NAME,
                self.KEY_VALUE,
                common_instance_metadata)
            key = utils.get_key_user_string(self.user, self.public_key)
            if key not in item['value']:
                item['value'] = '{0}\n{1}'.format(item['value'], key)
        self.logger.info(
            'Add sshKey {0} to project {1} metadata'.format(
                self.public_key,
                self.project))
        return self.discovery.projects().setCommonInstanceMetadata(
            project=self.project,
            body=common_instance_metadata).execute()
Example #2
0
    def add_project_ssh_key(self):
        """
        Update project SSH private key. Add new key to project's
        common instance metadata.

        :return: REST response with operation responsible for the sshKeys
        addition to project metadata process and its status
        """
        common_instance_metadata = self.get_common_instance_metadata()
        if common_instance_metadata.get('items') is None:
            item = [{
                self.KEY_NAME:
                self.KEY_VALUE,
                'value':
                utils.get_key_user_string(self.user, self.public_key)
            }]
            common_instance_metadata['items'] = item
        else:
            item = utils.get_item_from_gcp_response(self.KEY_NAME,
                                                    self.KEY_VALUE,
                                                    common_instance_metadata)
            key = utils.get_key_user_string(self.user, self.public_key)
            if key not in item['value']:
                item['value'] = '{0}\n{1}'.format(item['value'], key)
        self.logger.info('Add sshKey {0} to project {1} metadata'.format(
            self.public_key, self.project))
        return self.discovery.projects().setCommonInstanceMetadata(
            project=self.project, body=common_instance_metadata).execute()
Example #3
0
def add_ssh_key(**kwargs):
    key = ctx.target.instance.runtime_properties[constants.PUBLIC_KEY]
    user = ctx.target.instance.runtime_properties[constants.USER]
    key_user_string = utils.get_key_user_string(user, key + ' ' + user)
    previous_keys = ctx.source.instance.runtime_properties.get(constants.SSHKEY)
    ctx.source.instance.runtime_properties[constants.SSHKEY] = \
        previous_keys + '\n' + key_user_string if previous_keys else key_user_string
    ctx.logger.info('sshKeys are: {0}'
                    .format(ctx.source.instance.runtime_properties[constants.SSHKEY]))