Files
threshold-ui/ui/admin/app/components/form/storage-bucket/index.hbs
T
2023-11-07 11:27:48 -08:00

456 lines
14 KiB
Handlebars

{{!
Copyright (c) HashiCorp, Inc.
SPDX-License-Identifier: MPL-2.0
}}
<Rose::Form
@onSubmit={{@submit}}
@cancel={{this.cancel}}
@disabled={{@model.isSaving}}
@showEditToggle={{if @model.isNew false true}}
as |form|
>
<Hds::Form::TextInput::Field
@isOptional={{true}}
@value={{@model.name}}
@isInvalid={{@model.errors.name}}
@type='text'
name='name'
disabled={{form.disabled}}
{{on 'input' (set-from-event @model 'name')}}
as |F|
>
<F.Label>{{t 'form.name.label'}}</F.Label>
<F.HelperText>{{t 'form.name.help'}}</F.HelperText>
{{#if @model.errors.name}}
<F.Error as |E|>
{{#each @model.errors.name as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::Textarea::Field
@isOptional={{true}}
@value={{@model.description}}
@isInvalid={{@model.errors.description}}
name='description'
disabled={{form.disabled}}
as |F|
>
<F.Label>{{t 'form.description.label'}}</F.Label>
<F.HelperText>{{t 'form.description.help'}}</F.HelperText>
{{#if @model.errors.description}}
<F.Error as |E|>
{{#each @model.errors.description as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::Textarea::Field>
{{#if @model.isNew}}
<Hds::Form::Select::Field
@isRequired={{true}}
@width='100%'
disabled={{form.disabled}}
name='scope'
{{on 'change' this.updateScope}}
as |F|
>
<F.Label>{{t 'resources.storage-bucket.form.scope.label'}}</F.Label>
<F.HelperText>
{{this.scopeFieldDescription}}
</F.HelperText>
<F.Options>
<option disabled hidden selected value=''>
{{t 'titles.choose-an-option'}}
</option>
{{#each @scopes as |scope|}}
<option value={{scope.model.id}}>
{{scope.model.displayName}}
</option>
{{/each}}
</F.Options>
</Hds::Form::Select::Field>
{{else}}
<InfoField
@value={{@model.scopeModel.displayName}}
@icon={{if @model.scopeModel.isGlobal 'globe' 'org'}}
disabled={{form.disabled}}
as |F|
>
<F.Label>{{t 'resources.storage-bucket.form.scope.label'}}</F.Label>
<F.HelperText>
{{#if @model.scopeModel.isGlobal}}
{{t 'resources.storage-bucket.form.scope.help_global'}}
{{else}}
{{t 'resources.storage-bucket.form.scope.help_org'}}
{{/if}}
</F.HelperText>
</InfoField>
{{/if}}
<InfoField
@value={{t 'resources.storage-bucket.titles.amazon_s3'}}
@icon='aws-color'
disabled={{form.disabled}}
as |F|
>
<F.Label>{{t 'titles.provider'}}</F.Label>
<F.HelperText>{{t
'resources.storage-bucket.form.provider.help'
}}</F.HelperText>
</InfoField>
<Hds::Form::TextInput::Field
@isRequired={{true}}
@value={{@model.bucket_name}}
@isInvalid={{@model.errors.bucket_name}}
@type='text'
name='bucket_name'
disabled={{form.disabled}}
readOnly={{not @model.isNew}}
{{on 'input' (set-from-event @model 'bucket_name')}}
as |F|
>
<F.Label>{{t 'resources.storage-bucket.form.bucket_name.label'}}</F.Label>
<F.HelperText>{{t
'resources.storage-bucket.form.bucket_name.help'
}}</F.HelperText>
{{#if @model.errors.bucket_name}}
<F.Error as |E|>
{{#each @model.errors.bucket_name as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::TextInput::Field
@isOptional={{true}}
@value={{@model.bucket_prefix}}
@isInvalid={{@model.errors.bucket_prefix}}
@type='text'
name='bucket_prefix'
disabled={{form.disabled}}
readOnly={{not @model.isNew}}
{{on 'input' (set-from-event @model 'bucket_prefix')}}
as |F|
>
<F.Label>{{t 'resources.storage-bucket.form.bucket_prefix.label'}}</F.Label>
<F.HelperText>{{t
'resources.storage-bucket.form.bucket_prefix.help'
}}</F.HelperText>
{{#if @model.errors.bucket_prefix}}
<F.Error as |E|>
{{#each @model.errors.bucket_prefix as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::TextInput::Field
@isRequired={{true}}
@value={{@model.region}}
@isInvalid={{@model.errors.region}}
@type='text'
name='region'
disabled={{form.disabled}}
readOnly={{not @model.isNew}}
{{on 'input' (set-from-event @model 'region')}}
as |F|
>
<F.Label>{{t 'resources.storage-bucket.form.region.label'}}</F.Label>
<F.HelperText>{{t
'resources.storage-bucket.form.region.help'
}}</F.HelperText>
{{#if @model.errors.region}}
<F.Error as |E|>
{{#each @model.errors.region as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::RadioCard::Group @name='credential_type' as |G|>
<G.Legend>{{t 'resources.storage-bucket.types.credential'}}</G.Legend>
{{#each this.credentials as |credentialType|}}
<G.RadioCard
@name={{credentialType}}
@value={{credentialType}}
@checked={{eq credentialType this.selectedCredentialType}}
@disabled={{form.disabled}}
{{on 'input' (fn this.updateTypeSelection credentialType)}}
as |R|
>
<R.Label>{{t
(concat 'resources.storage-bucket.types.' credentialType '.title')
}}</R.Label>
<R.Description>{{t
(concat
'resources.storage-bucket.types.' credentialType '.description'
)
}}</R.Description>
</G.RadioCard>
{{/each}}
</Hds::Form::RadioCard::Group>
{{#unless this.showDynamicCredentials}}
{{#if @model.isNew}}
<Hds::Form::TextInput::Field
@isRequired={{true}}
@value={{@model.access_key_id}}
@isInvalid={{@model.errors.secrets}}
@type='password'
name='access_key_id'
@hasVisibilityToggle={{false}}
{{on 'input' (set-from-event @model 'access_key_id')}}
as |F|
>
<F.Label>{{t
'resources.storage-bucket.form.access_key_id.label'
}}</F.Label>
<F.HelperText>{{t
'resources.storage-bucket.form.access_key_id.help'
}}</F.HelperText>
{{#if @model.errors.secrets}}
<F.Error as |E|>
{{#each @model.errors.secrets as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::TextInput::Field
@isRequired={{true}}
@value={{@model.secret_access_key}}
@isInvalid={{@model.errors.secrets}}
@type='password'
name='secret_access_key'
disabled={{form.disabled}}
@hasVisibilityToggle={{false}}
{{on 'input' (set-from-event @model 'secret_access_key')}}
as |F|
>
<F.Label>{{t
'resources.storage-bucket.form.secret_access_key.label'
}}</F.Label>
<F.HelperText>{{t
'resources.storage-bucket.form.secret_access_key.help'
}}</F.HelperText>
{{#if @model.errors.secrets}}
<F.Error as |E|>
{{#each @model.errors.secrets as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
{{else}}
<Form::Field::SecretInput
@isRequired={{true}}
@value={{@model.access_key_id}}
@isInvalid={{@model.errors.access_key_id}}
@name='access_key_id'
@isDisabled={{form.disabled}}
@showEditButton={{true}}
@cancel={{fn this.rollbackSecretAttrs 'access_key_id'}}
{{on 'input' (set-from-event @model 'access_key_id')}}
as |F|
>
<F.Label>{{t
'resources.storage-bucket.form.access_key_id.label'
}}</F.Label>
<F.HelperText>{{t
'resources.storage-bucket.form.access_key_id.help'
}}</F.HelperText>
</Form::Field::SecretInput>
<Form::Field::SecretInput
@isRequired={{true}}
@value={{@model.secret_access_key}}
@isInvalid={{@model.errors.secret_access_key}}
@name='secret_access_key'
@isDisabled={{form.disabled}}
@showEditButton={{true}}
@cancel={{fn this.rollbackSecretAttrs 'secret_access_key'}}
{{on 'input' (set-from-event @model 'secret_access_key')}}
as |F|
>
<F.Label>{{t
'resources.storage-bucket.form.secret_access_key.label'
}}</F.Label>
<F.HelperText>{{t
'resources.storage-bucket.form.secret_access_key.help'
}}</F.HelperText>
</Form::Field::SecretInput>
{{/if}}
{{/unless}}
{{#if this.showDynamicCredentials}}
<Hds::Form::TextInput::Field
@isRequired={{true}}
@value={{@model.role_arn}}
@isInvalid={{@model.errors.role_arn}}
@type='text'
name='role_arn'
disabled={{form.disabled}}
{{on 'input' (set-from-event @model 'role_arn')}}
as |F|
>
<F.Label>{{t 'resources.storage-bucket.form.role_arn.label'}}</F.Label>
<F.HelperText>
{{t 'resources.storage-bucket.form.role_arn.help'}}
</F.HelperText>
{{#if @model.errors.role_arn}}
<F.Error as |E|>
{{#each @model.errors.role_arn as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::TextInput::Field
@isOptional={{true}}
@value={{@model.role_external_id}}
@isInvalid={{@model.errors.role_external_id}}
@type='text'
name='role_external_id'
disabled={{form.disabled}}
{{on 'input' (set-from-event @model 'role_external_id')}}
as |F|
>
<F.Label>
{{t 'resources.storage-bucket.form.role_external_id.label'}}
</F.Label>
<F.HelperText>
{{t 'resources.storage-bucket.form.role_external_id.help'}}
</F.HelperText>
{{#if @model.errors.role_external_id}}
<F.Error as |E|>
{{#each @model.errors.role_external_id as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::TextInput::Field
@isOptional={{true}}
@value={{@model.role_session_name}}
@isInvalid={{@model.errors.role_session_name}}
@type='text'
name='role_session_name'
disabled={{form.disabled}}
{{on 'input' (set-from-event @model 'role_session_name')}}
as |F|
>
<F.Label>
{{t 'resources.storage-bucket.form.role_session_name.label'}}
</F.Label>
<F.HelperText>
{{t 'resources.storage-bucket.form.role_session_name.help'}}
</F.HelperText>
{{#if @model.errors.role_session_name}}
<F.Error as |E|>
{{#each @model.errors.role_session_name as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Form::Field::ListWrapper
@layout='horizontal'
@isOptional={{true}}
@disabled={{form.disabled}}
>
<:fieldset as |F|>
<F.Legend>
{{t 'resources.storage-bucket.form.role_tags.label'}}
</F.Legend>
<F.HelperText>
{{t 'resources.storage-bucket.form.role_tags.label'}}
</F.HelperText>
{{#if @model.errors.role_tags}}
<F.Error as |E|>
{{#each @model.errors.role_tags as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</:fieldset>
<:field as |F|>
<F.TextInput
@name='role_tags'
@options={{@model.role_tags}}
@model={{@model}}
/>
</:field>
</Form::Field::ListWrapper>
{{/if}}
<Hds::Form::TextInput::Field
@isRequired={{true}}
@value={{@model.worker_filter}}
@isInvalid={{@model.errors.worker_filter}}
@type='text'
name='worker_filter'
disabled={{form.disabled}}
{{on 'input' (set-from-event @model 'worker_filter')}}
as |F|
>
<F.Label>{{t 'resources.storage-bucket.form.worker_filter.label'}}</F.Label>
<F.HelperText>
{{t 'resources.storage-bucket.form.worker_filter.help'}}
<Hds::Link::Inline @href={{doc-url 'storage-bucket.worker-filter'}}>
{{t 'actions.learn-more'}}
</Hds::Link::Inline>
</F.HelperText>
{{#if @model.errors.worker_filter}}
<F.Error as |E|>
{{#each @model.errors.worker_filter as |error|}}
<E.Message>{{error.message}}</E.Message>
{{/each}}
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
{{#unless this.showDynamicCredentials}}
<Hds::Form::Checkbox::Field
name='disable_credential_rotation'
disabled={{form.disabled}}
checked={{@model.disable_credential_rotation}}
{{on 'change' this.toggleDisableCredentialRotation}}
as |F|
>
<F.Label>{{t
'resources.storage-bucket.form.disable_credential_rotation.label'
}}</F.Label>
<F.HelperText>
{{t 'resources.storage-bucket.form.disable_credential_rotation.help'}}
<Hds::Link::Inline
@href={{doc-url 'storage-bucket.disable-credential-rotation'}}
>
{{t 'actions.learn-more'}}
</Hds::Link::Inline>
</F.HelperText>
</Hds::Form::Checkbox::Field>
{{/unless}}
{{#if (can 'save model' @model)}}
<form.actions
@enableEditText={{t 'actions.edit-form'}}
@submitText={{t 'actions.save'}}
@cancelText={{t 'actions.cancel'}}
/>
{{/if}}
</Rose::Form>