2023-03-01 09:39:41 -06:00
|
|
|
/**
|
|
|
|
|
* Copyright (c) HashiCorp, Inc.
|
|
|
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
|
|
|
*/
|
|
|
|
|
|
2021-03-04 15:47:38 -05:00
|
|
|
export default function (server) {
|
2020-06-18 14:22:31 -04:00
|
|
|
// Scope resources
|
2020-06-04 16:53:37 -04:00
|
|
|
|
2020-08-17 14:43:12 -04:00
|
|
|
// creates a global scope
|
|
|
|
|
const globalScope = server.create('scope', {
|
|
|
|
|
id: 'global',
|
|
|
|
|
type: 'global',
|
2021-03-04 15:47:38 -05:00
|
|
|
name: 'Global',
|
2020-08-17 14:43:12 -04:00
|
|
|
});
|
2021-03-04 15:47:38 -05:00
|
|
|
const orgScope = server.createList(
|
|
|
|
|
'scope',
|
|
|
|
|
3,
|
|
|
|
|
{
|
|
|
|
|
type: 'org',
|
|
|
|
|
scope: { id: globalScope.id, type: globalScope.type },
|
|
|
|
|
},
|
|
|
|
|
'withChildren'
|
|
|
|
|
)[0];
|
2020-06-18 15:51:40 -04:00
|
|
|
|
|
|
|
|
// Auth
|
2021-03-24 18:36:34 -04:00
|
|
|
const globalAuthMethods = server.createList(
|
2021-03-04 15:47:38 -05:00
|
|
|
'auth-method',
|
2022-12-22 10:23:49 -08:00
|
|
|
5,
|
2021-03-04 15:47:38 -05:00
|
|
|
{ scope: globalScope },
|
2021-11-03 09:53:03 -07:00
|
|
|
'withAccountsAndUsersAndManagedGroups'
|
2021-03-04 15:47:38 -05:00
|
|
|
);
|
2021-03-24 18:36:34 -04:00
|
|
|
const orgAuthMethods = server.createList(
|
2021-03-04 15:47:38 -05:00
|
|
|
'auth-method',
|
|
|
|
|
3,
|
|
|
|
|
{ scope: orgScope },
|
2021-11-03 09:53:03 -07:00
|
|
|
'withAccountsAndUsersAndManagedGroups'
|
2021-03-04 15:47:38 -05:00
|
|
|
);
|
2022-07-29 15:18:57 -07:00
|
|
|
// Authenticated user/account
|
|
|
|
|
const user = server.create('user', {
|
|
|
|
|
id: 'authenticateduser',
|
|
|
|
|
scope: globalScope,
|
|
|
|
|
});
|
|
|
|
|
const { id: accountID } = server.create('account', {
|
|
|
|
|
id: 'authenticatedaccount',
|
|
|
|
|
scope: globalScope,
|
|
|
|
|
authMethod: globalAuthMethods[0],
|
|
|
|
|
type: 'password',
|
|
|
|
|
});
|
|
|
|
|
user.update({ accountIds: [accountID] });
|
2021-03-24 18:36:34 -04:00
|
|
|
// Assign primary auth methods per scope
|
|
|
|
|
// TODO make this generic
|
2021-03-26 12:47:49 -04:00
|
|
|
globalScope.update({ primaryAuthMethodId: globalAuthMethods[0].id });
|
|
|
|
|
orgScope.update({ primaryAuthMethodId: orgAuthMethods[1].id });
|
2020-05-19 18:10:39 -04:00
|
|
|
|
2020-09-01 12:03:36 -04:00
|
|
|
// Groups and Users
|
2020-10-26 11:17:03 -04:00
|
|
|
server.createList('group', 1, { scope: globalScope }, 'withMembers');
|
2020-09-09 16:24:48 -04:00
|
|
|
server.createList('group', 5, { scope: orgScope }, 'withMembers');
|
2020-08-12 13:41:23 -04:00
|
|
|
// Role
|
2022-12-22 10:23:49 -08:00
|
|
|
const globalScopeRoles = server.createList(
|
|
|
|
|
'role',
|
|
|
|
|
1,
|
|
|
|
|
{ scope: globalScope },
|
|
|
|
|
'withPrincipals'
|
|
|
|
|
);
|
|
|
|
|
//create managed groups for role/principals in globalScope
|
|
|
|
|
globalScopeRoles.forEach((role) => {
|
|
|
|
|
const { scope } = role;
|
|
|
|
|
const oidcAuthMethod = globalAuthMethods.filter(
|
|
|
|
|
(auth) => auth.type === 'oidc'
|
|
|
|
|
)[0];
|
|
|
|
|
const managedGroups = server.createList('managed-group', 2, {
|
|
|
|
|
scope,
|
|
|
|
|
authMethodId: oidcAuthMethod.id,
|
|
|
|
|
});
|
|
|
|
|
role.update({ managedGroups });
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const orgScopeRoles = server.createList(
|
|
|
|
|
'role',
|
|
|
|
|
5,
|
|
|
|
|
{ scope: orgScope },
|
|
|
|
|
'withPrincipals'
|
|
|
|
|
);
|
|
|
|
|
//create managed groups for role/principals in orgScope
|
|
|
|
|
orgScopeRoles.forEach((role) => {
|
|
|
|
|
const { scope } = role;
|
|
|
|
|
const oidcAuthMethod = orgAuthMethods.filter(
|
|
|
|
|
(auth) => auth.type === 'oidc'
|
|
|
|
|
)[0];
|
|
|
|
|
const managedGroups = server.createList('managed-group', 2, {
|
|
|
|
|
scope,
|
|
|
|
|
authMethodId: oidcAuthMethod.id,
|
|
|
|
|
});
|
|
|
|
|
role.update({ managedGroups });
|
|
|
|
|
});
|
2020-06-22 21:39:38 -04:00
|
|
|
|
2023-03-23 12:09:39 -04:00
|
|
|
// Storage Buckets
|
|
|
|
|
server.createList('storage-bucket', 3, { scope: globalScope });
|
|
|
|
|
server.createList('storage-bucket', 2, { scope: orgScope });
|
|
|
|
|
|
2020-06-18 14:22:31 -04:00
|
|
|
// Other resources
|
2021-03-04 15:47:38 -05:00
|
|
|
server.schema.scopes.where({ type: 'project' }).models.forEach((scope) => {
|
2022-01-26 13:03:21 -05:00
|
|
|
server.createList('host-catalog', 8, { scope }, 'withChildren');
|
2021-07-12 16:03:06 -04:00
|
|
|
server.createList('credential-store', 3, { scope }, 'withAssociations');
|
2021-07-20 16:09:59 -04:00
|
|
|
server.createList('target', 2, { scope }, 'withAssociations');
|
2023-01-09 12:35:42 -05:00
|
|
|
server.create('target', { scope, address: '0.0.0.0' });
|
2021-08-09 09:09:18 -04:00
|
|
|
// Sessions have target data. Create it after targets.
|
|
|
|
|
server.createList('session', 4, { scope }, 'withAssociations');
|
2022-07-18 16:15:51 -07:00
|
|
|
// Create IAM resources for project
|
|
|
|
|
server.createList('group', 3, { scope });
|
|
|
|
|
server.createList('role', 3, { scope });
|
2020-07-28 11:06:06 -04:00
|
|
|
});
|
2022-08-01 16:04:41 -04:00
|
|
|
|
|
|
|
|
// Workers
|
|
|
|
|
server.createList('worker', 3, { scope: globalScope });
|
2023-03-03 13:27:14 -05:00
|
|
|
|
2023-03-23 12:09:39 -04:00
|
|
|
// Session Recordings
|
2023-03-10 14:20:58 -05:00
|
|
|
server.createList(
|
2023-03-16 13:49:04 -04:00
|
|
|
'session-recording',
|
2023-03-10 14:20:58 -05:00
|
|
|
3,
|
|
|
|
|
{ scope: globalScope },
|
|
|
|
|
'withConnectionAndChannels',
|
|
|
|
|
'withExistingUserAndTarget'
|
|
|
|
|
);
|
|
|
|
|
server.create(
|
2023-03-16 13:49:04 -04:00
|
|
|
'session-recording',
|
2023-03-10 14:20:58 -05:00
|
|
|
{ scope: globalScope },
|
|
|
|
|
'withConnectionAndChannels',
|
|
|
|
|
'withNonExistingUserAndTarget'
|
|
|
|
|
);
|
|
|
|
|
server.createList(
|
2023-03-16 13:49:04 -04:00
|
|
|
'session-recording',
|
2023-03-10 14:20:58 -05:00
|
|
|
2,
|
|
|
|
|
{ scope: orgScope },
|
|
|
|
|
'withConnectionAndChannels',
|
|
|
|
|
'withExistingUserAndTarget'
|
|
|
|
|
);
|
2020-05-19 18:10:39 -04:00
|
|
|
}
|