- Supported cloud platforms include AWS, GCP, Digital Ocean, and - Hetzner Cloud. -
-All components are installed within your cloud account.
-Your data remains secure and never leaves your infrastructure.
- > - ), - icon: icons.createDLEIcon, - actions: [ - { - id: 'createDblabInstanceButton', - content: ( -- Install on your existing resources, regardless of the machine or - location. Compatible with both cloud and bare metal infrastructures. - Your data remains secure and never leaves your infrastructure. -
-Requirements:
-- Supported cloud platforms include AWS, GCP, Digital Ocean, and - Hetzner Cloud. -
-All components are installed within your cloud account.
-Your data remains secure and never leaves your infrastructure.
- > - ), - icon: icons.createDLEIcon, - actions: [ - { - id: 'createDblabInstanceButton', - content: ( -- Install on your existing resources, regardless of the machine or - location. Compatible with both cloud and bare metal infrastructures. - Your data remains secure and never leaves your infrastructure. -
-Requirements:
-- An organization represents a workspace for you and your colleagues. - Organizations allow you to manage users and collaborate across - multiple projects. -
-- You can create a new organization, join the demo organization or ask - existing members of your organization to invite you. -
-1. {firstStep}
- {firsStepDescription &&{firsStepDescription}
} -- Documentation:{' '} - - {documentation} - -
-2. Export {secondStep}
-- 3. Install Ansible on your working machine (which could easily be a - laptop) -
-example of installing the latest version:
-- 4. Clone the {cluster ? 'postgresql_cluster' : 'dle-se-ansible'}{' '} - repository -
-5. Install requirements
-DO_API_TOKEN
- >
- }
- snippetContent="export DO_API_TOKEN=XXXXXX"
- classes={classes}
- />
- ) : state.provider === 'hetzner' ? (
- AWS_ACCESS_KEY_ID
and
- AWS_SECRET_ACCESS_KEY
- >
- }
- snippetContent={`export AWS_ACCESS_KEY_ID=XXXXXX\nexport AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXX`}
- classes={classes}
- />
- ) : state.provider === 'gcp' ? (
- - {cluster - ? '5. Run ansible playbook to deploy Postgres Cluster' - : '6. Run ansible playbook to create server and install DBLab SE'} -
-- {cluster - ? '6. After the code snippet runs successfully, follow the directions displayed in the resulting output to start using the database.' - : '7. After the code snippet runs successfully, follow the directions displayed in the resulting output to start using DBLab AUI/API/CLI.'} -
-AWS_ACCESS_KEY_ID
and
- AWS_SECRET_ACCESS_KEY
- >
- }
- snippetContent={`export AWS_ACCESS_KEY_ID=XXXXXX\nexport AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXX`}
- classes={classes}
- />
- ) : state.provider === 'gcp' ? (
- <>
-
- GCP_SERVICE_ACCOUNT_CONTENTS
-
{' '}
- variable.
- >
- }
- documentation="https://developers.google.com/identity/protocols/oauth2/service-account#creatinganaccount"
- secondStep={
-
- GCP_SERVICE_ACCOUNT_CONTENTS
-
- }
- snippetContent={getGcpAccountContents()}
- classes={classes}
- />
- >
- ) : null}
- - 3. Run ansible playbook to{' '} - {cluster - ? 'deploy Postgres Cluster' - : 'create server and install DBLab SE'} -
-- 4. After the code snippet runs successfully, follow the directions - displayed in the resulting output to start using{' '} - {cluster ? 'the database.' : 'DBLab UI/API/CLI.'} -
-- 1. Select your cloud provider -
-- 2. Select your cloud region -
-{region.api_name}
-🏴 {region.label}
-- 3. Choose instance type -
-- A larger instance can accommodate more dev/test activities. - For example, a team of 5 engineers requiring 5-10 clones - during peak times should consider a minimum instance size of - 8 vCPUs and 32 GiB. -
-- {instance.api_name} ( - {state.instanceType.cloud_provider}:{' '} - {instance.native_name}) -
-4. Database volume
-5. Provide DBLab name
-- 6. Define DBLab verification token (keep it secret!) -
-- 7. Choose DBLab version -
-{state.name}
-{state.tag}
-- {cloudProviderName(state.provider)} -
-- {state.location?.native_code}: {state.location?.label} -
-- {state.instanceType ? ( - <> - {cluster && ( - - Instances count: {state.numberOfInstances} - - )} - {state.instanceType.native_name}: - 🔳 {state.instanceType.native_vcpus} CPU - 🧠 {state.instanceType.native_ram_gib} GiB RAM - - Price: {state.instanceType.native_reference_price_currency} - {cluster - ? ( - state.numberOfInstances * - state.instanceType.native_reference_price_hourly - )?.toFixed(4) - : state.instanceType.native_reference_price_hourly?.toFixed( - 4, - )}{' '} - hourly (~{state.instanceType.native_reference_price_currency} - {cluster - ? ( - state.numberOfInstances * - state.instanceType.native_reference_price_hourly * - MONTHLY_HOURS - ).toFixed(2) - : ( - state.instanceType.native_reference_price_hourly * - MONTHLY_HOURS - ).toFixed(2)}{' '} - per month)* - - > - ) : ( - No instance type available for this region. - )} -
-- Type: {state.volumeType} - Size: {Number(state.storage)?.toFixed(2)} GiB -
-- Price: {state.volumeCurrency} - {cluster - ? (state.volumePrice * state.numberOfInstances).toFixed(4) - : state.volumePrice.toFixed(4)}{' '} - hourly (~{state.volumeCurrency} - {cluster - ? ( - state.volumePrice * - state.numberOfInstances * - MONTHLY_HOURS - ).toFixed(2) - : (state.volumePrice * MONTHLY_HOURS).toFixed(2)}{' '} - per month) - * -
- - *Payment is made directly to the cloud provider. The - estimated cost is calculated for the " - {state.instanceType?.native_reference_price_region}" region and is not - guaranteed. Please refer to{' '} - - the official pricing page - - to confirm the actual costs. . - -- {state.instanceType && ( - <> - Size: {state.instanceType.api_name} - - Price: $ - {cluster - ? ( - state.instanceType.dle_se_price_hourly * - state.numberOfInstances - ).toFixed(4) - : state.instanceType.dle_se_price_hourly?.toFixed(4)}{' '} - hourly (~$ - {cluster - ? ( - state.numberOfInstances * - state.instanceType.dle_se_price_hourly * - MONTHLY_HOURS - ).toFixed(2) - : ( - state.instanceType.dle_se_price_hourly * MONTHLY_HOURS - ).toFixed(2)}{' '} - per month) - - > - )} -
-Additional parameters:
-{code}
{optionalText} {note}.
- 1. Set up your machine
-~/.ssh/authorized_keys
),
- allowing for secure SSH access.
- - 2. Install Ansible on your local machine (such as a laptop) -
-- 3. Clone the "dle-se-ansible" repository to your local machine -
-4. Install necessary dependencies
-- 5. Execute the Ansible playbook to install DBLab SE on the remote - server -
-
- Replace{' '}
- 'user@server-ip-address'
- with the specific username and IP address of the server where
- you will be installing DBLab.
-
Please be aware:
-
- The script will attempt to automatically detect an empty volume
- by default. If needed, you can manually specify the path to your
- desired empty disk using the{' '}
- zpool_disk
variable
- (e.g.,{' '}
- zpool_disk=/dev/nvme1n1
).
-
- 7. After the code snippet runs successfully, follow the - directions displayed in the resulting output to start using DBLab - UI/API/CLI. -
{' '} -1. Set up your machine
-~/.ssh/authorized_keys
),
- allowing for secure SSH access.
- - 2. Execute the Ansible playbook to install DBLab SE on the remote - server -
-
- Replace{' '}
- 'user@server-ip-address'
- with the specific username and IP address of the server where
- you will be installing DBLab.
-
Please be aware:
-
- The script will attempt to automatically detect an empty volume
- by default. If needed, you can manually specify the path to your
- desired empty disk using the{' '}
- zpool_disk
variable
- (e.g.,{' '}
- zpool_disk=/dev/nvme1n1
).
-
- 3. After the code snippet runs successfully, follow the - directions displayed in the resulting output to start using DBLab - AUI/API/CLI. -
{' '} -1. Provide DBLab name
-- 2. Define DBLab verification token (keep it secret!) -
-- 3. Choose DBLab server version -
-{state.name}
-{state.tag}
-- Visualize explain plans gathered manually. Plans gathered with Joe - will be automatically saved in Joe history and can be visualized - in command page without copy-pasting of a plan. -
-Currently only JSON format is supported.
-- For better results, use: explain (analyze, costs, verbose, - buffers, format json). -
- - } - /> - ) - - if (!this.state || !this.state.data) { - return ( -
- Please, read and agree to our updated
-
-
- Please confirm registration by clicking on a link we have just - sent to {env.data.info['email']}. -
- -
- If you haven't received the email,
-
- Joe Bot is a virtual DBA helping engineers analyze and
- optimize PostgreSQL queries. It provides a convenient,
- chat-like interface to full-size Postgres clones that are
- provisioned and seconds, behaves as production (same execution
- plans, same data volumes), writable and isolated for safe
- "what if" experiments to check various optimization ideas (
-
- We couldn't find any commands matching your filters, try - another. -
- )} -
- Joe Bot is a virtual DBA for SQL Optimization. Joe helps engineers
- quickly troubleshoot and optimize SQL. Joe runs on top of the DBLab
- Engine. (
-
- 1. Select your cloud provider -
-- 2. Select your cloud region -
-{region.api_name}
-🏴 {region.label}
-- 3. Choose instance type -
-- {instance.api_name} ( - {state.instanceType.cloud_provider}:{' '} - {instance.native_name}) -
-4. Number of instances
-- Number of servers in the Postgres cluster -
-5. Database volume
-- 6. Provide cluster name -
-- 7. Choose Postgres version -
-1. Provide cluster name
-2. Choose Postgres version
-{state.patroni_cluster_name}
-{state.version}
-{state.postgresql_data_dir}
-1. Set up your machine
-~/.ssh/authorized_keys
),
- allowing for secure SSH access.
- - 2. Install Ansible on your local machine (such as a laptop) -
-- 3. Clone the postgresql_cluster repository -
-4. Prepare the inventory file
-ansible_user
,
- ansible_ssh_private_key_file
{' '}
- or ansible_ssh_pass
for your
- environment.
- ansible_host=public_ip_address
- ' variable for each node.
- - 5. Execute the Ansible playbook to Postgres Cluster -
-- 6. After the code snippet runs successfully, follow the directions - displayed in the resulting output to start using the database. -
-1. Set up your machine
-~/.ssh/authorized_keys
),
- allowing for secure SSH access.
- 2. Prepare the inventory file
-ansible_user
,
- ansible_ssh_private_key_file
{' '}
- or ansible_ssh_pass
for your
- environment.
- ansible_host=public_ip_address
- ' variable for each node.
- - 3. Run ansible playbook to deploy Postgres Cluster -
-- 4. After the code snippet runs successfully, follow the directions - displayed in the resulting output to start using the database. -
-
- Automated routine checkup for your PostgreSQL databases. Configure
- Checkup agent to start collecting reports (
-
{label}
- {isDateValue && value ? ( - -- - {instanceId} - - - {`(self-assigned: ${value})` || '---'} -
- ) : ( -- {value || '---'} -
- )} -Subscriptions
- {state.billingInfo.length > 0 ? ( - state.billingInfo.map( - (billing: BillingSubscription, index: number) => ( -Payments
-No payment methods available
- ) : ( - <> - {state.cards.map( - ( - card: { - id: string - card: { - exp_year: string - exp_month: string - brand: string - last4: string - } - }, - index: number, - ) => ( -- **** {card.card.last4} -
-- Expires {card.card.exp_month}/{card.card.exp_year} -
-- { username } -
-{message}
++ {typeof message === 'object' ? message.details : message} +
) } diff --git a/ui/packages/shared/components/Link2/index.tsx b/ui/packages/shared/components/Link2/index.tsx index 4b9069fc..37df1201 100644 --- a/ui/packages/shared/components/Link2/index.tsx +++ b/ui/packages/shared/components/Link2/index.tsx @@ -10,10 +10,22 @@ import cn from 'classnames' import styles from './styles.module.scss' -type Props = LinkProps +type Props = LinkProps & { external?: boolean } export const Link = (props: Props) => { - const { className, ...otherProps } = props + const { className, external, to, ...otherProps } = props - return+ {formik.errors.dbPassword} +