456 lines
14 KiB
Handlebars
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> |