| /** |
| * Copyright (c) HashiCorp, Inc. |
| * SPDX-License-Identifier: MPL-2.0 |
| */ |
| |
| import ApplicationAdapter from './application'; |
| |
| export default ApplicationAdapter.extend({ |
| createRecord(store, type, snapshot) { |
| const ttl = snapshot.attr('ttl'); |
| const roleArn = snapshot.attr('roleArn'); |
| const roleType = snapshot.attr('credentialType'); |
| let method = 'POST'; |
| let options; |
| const data = {}; |
| if (roleType === 'iam_user') { |
| method = 'GET'; |
| } else { |
| if (ttl !== undefined) { |
| data.ttl = ttl; |
| } |
| if (roleType === 'assumed_role' && roleArn) { |
| data.role_arn = roleArn; |
| } |
| options = data.ttl || data.role_arn ? { data } : {}; |
| } |
| const role = snapshot.attr('role'); |
| const url = `/v1/${role.backend}/creds/${role.name}`; |
| |
| return this.ajax(url, method, options).then((response) => { |
| response.id = snapshot.id; |
| response.modelName = type.modelName; |
| store.pushPayload(type.modelName, response); |
| }); |
| }, |
| }); |