336 lines
11 KiB
Handlebars
336 lines
11 KiB
Handlebars
{{!
|
|
Copyright (c) HashiCorp, Inc.
|
|
SPDX-License-Identifier: MPL-2.0
|
|
}}
|
|
|
|
<Rose::Form
|
|
class={{unless @model.isNew 'full-width'}}
|
|
@onSubmit={{@submit}}
|
|
@cancel={{this.cancel}}
|
|
@disabled={{@model.isSaving}}
|
|
@showEditToggle={{if @model.isNew false true}}
|
|
as |form|
|
|
>
|
|
<Hds::Form::TextInput::Field
|
|
@isRequired={{true}}
|
|
@isOptional={{false}}
|
|
@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 (and @model.isNew (feature-flag 'ssh-target'))}}
|
|
<Hds::Form::RadioCard::Group @name='type' @alignment='center' as |G|>
|
|
<G.Legend>{{t 'resources.target.form.type.label'}}</G.Legend>
|
|
<G.HelperText>{{t 'resources.target.form.type.help'}}</G.HelperText>
|
|
{{#each this.typeMetas as |type|}}
|
|
<G.RadioCard
|
|
@value={{type.type}}
|
|
@maxWidth='20rem'
|
|
@checked={{eq type.type @model.type}}
|
|
{{on 'input' (fn @changeType type.type)}}
|
|
as |R|
|
|
>
|
|
<R.Label>{{t (concat 'resources.target.types.' type.type)}}</R.Label>
|
|
<R.Description>{{t
|
|
(concat 'resources.target.help.' type.type)
|
|
}}</R.Description>
|
|
<R.Icon @name={{type.icon}} />
|
|
</G.RadioCard>
|
|
{{/each}}
|
|
</Hds::Form::RadioCard::Group>
|
|
{{else}}
|
|
<InfoField
|
|
@value={{t (concat 'resources.target.types.' @model.type)}}
|
|
@icon={{this.icon}}
|
|
as |F|
|
|
>
|
|
<F.Label>{{t 'form.type.label'}}</F.Label>
|
|
<F.HelperText>
|
|
{{t (concat 'resources.target.help.' @model.type)}}
|
|
</F.HelperText>
|
|
</InfoField>
|
|
{{/if}}
|
|
|
|
{{#if (feature-flag 'target-network-address')}}
|
|
<Hds::Form::TextInput::Field
|
|
@isOptional={{true}}
|
|
@value={{@model.address}}
|
|
@isInvalid={{@model.errors.address}}
|
|
@type='text'
|
|
name='address'
|
|
disabled={{form.disabled}}
|
|
{{on 'input' (set-from-event @model 'address')}}
|
|
as |F|
|
|
>
|
|
<F.Label>{{t 'resources.target.form.target-address.label'}}</F.Label>
|
|
<F.HelperText>{{t
|
|
'resources.target.form.target-address.help'
|
|
}}</F.HelperText>
|
|
{{#if @model.errors.address}}
|
|
<F.Error as |E|>
|
|
{{#each @model.errors.address as |error|}}
|
|
<E.Message>{{error.message}}</E.Message>
|
|
{{/each}}
|
|
</F.Error>
|
|
{{/if}}
|
|
</Hds::Form::TextInput::Field>
|
|
{{/if}}
|
|
|
|
<Hds::Form::TextInput::Field
|
|
@isRequired={{@model.isTCP}}
|
|
@isOptional={{not @model.isTCP}}
|
|
@value={{@model.default_port}}
|
|
@isInvalid={{@model.errors.default_port}}
|
|
@type='text'
|
|
name='default_port'
|
|
disabled={{form.disabled}}
|
|
placeholder={{@defaultPort}}
|
|
{{on 'input' (set-from-event @model 'default_port')}}
|
|
as |F|
|
|
>
|
|
<F.Label data-test-default-port-label>{{t
|
|
'resources.target.form.default_port.label'
|
|
}}</F.Label>
|
|
<F.HelperText>{{t 'resources.target.form.default_port.help'}}</F.HelperText>
|
|
{{#if @model.errors.default_port}}
|
|
<F.Error as |E|>
|
|
{{#each @model.errors.default_port as |error|}}
|
|
<E.Message>{{error.message}}</E.Message>
|
|
{{/each}}
|
|
</F.Error>
|
|
{{/if}}
|
|
</Hds::Form::TextInput::Field>
|
|
|
|
<Hds::Form::TextInput::Field
|
|
@isOptional={{true}}
|
|
@value={{@model.default_client_port}}
|
|
@isInvalid={{@model.errors.default_client_port}}
|
|
@type='text'
|
|
name='default_client_port'
|
|
disabled={{form.disabled}}
|
|
{{on 'input' (set-from-event @model 'default_client_port')}}
|
|
as |F|
|
|
>
|
|
<F.Label>{{t 'resources.target.form.default_client_port.label'}}</F.Label>
|
|
<F.HelperText>{{t
|
|
'resources.target.form.default_client_port.help'
|
|
}}</F.HelperText>
|
|
{{#if @model.errors.default_client_port}}
|
|
<F.Error as |E|>
|
|
{{#each @model.errors.default_client_port as |error|}}
|
|
<E.Message>{{error.message}}</E.Message>
|
|
{{/each}}
|
|
</F.Error>
|
|
{{/if}}
|
|
</Hds::Form::TextInput::Field>
|
|
|
|
<Hds::Form::TextInput::Field
|
|
@isOptional={{true}}
|
|
@value={{@model.session_max_seconds}}
|
|
@isInvalid={{@model.errors.session_max_seconds}}
|
|
@type='text'
|
|
name='session_max_seconds'
|
|
disabled={{form.disabled}}
|
|
{{on 'input' (set-from-event @model 'session_max_seconds')}}
|
|
as |F|
|
|
>
|
|
<F.Label>{{t 'form.session_max_seconds.label'}}</F.Label>
|
|
<F.HelperText>{{t 'form.session_max_seconds.help'}}</F.HelperText>
|
|
{{#if @model.errors.session_max_seconds}}
|
|
<F.Error as |E|>
|
|
{{#each @model.errors.session_max_seconds as |error|}}
|
|
<E.Message>{{error.message}}</E.Message>
|
|
{{/each}}
|
|
</F.Error>
|
|
{{/if}}
|
|
</Hds::Form::TextInput::Field>
|
|
|
|
<Hds::Form::TextInput::Field
|
|
@isOptional={{true}}
|
|
@value={{@model.session_connection_limit}}
|
|
@isInvalid={{@model.errors.session_connection_limit}}
|
|
@type='text'
|
|
name='session_connection_limit'
|
|
disabled={{form.disabled}}
|
|
{{on 'input' (set-from-event @model 'session_connection_limit')}}
|
|
as |F|
|
|
>
|
|
<F.Label>{{t 'form.session_connection_limit.label'}}</F.Label>
|
|
<F.HelperText>{{t 'form.session_connection_limit.help'}}</F.HelperText>
|
|
{{#if @model.errors.session_connection_limit}}
|
|
<F.Error as |E|>
|
|
{{#each @model.errors.session_connection_limit as |error|}}
|
|
<E.Message>{{error.message}}</E.Message>
|
|
{{/each}}
|
|
</F.Error>
|
|
{{/if}}
|
|
</Hds::Form::TextInput::Field>
|
|
|
|
{{#if (feature-flag 'target-worker-filters-v2')}}
|
|
|
|
<Hds::Form::Fieldset
|
|
class='target-workers'
|
|
@layout='horizontal'
|
|
@isOptional={{true}}
|
|
as |F|
|
|
>
|
|
<F.Legend>{{t 'resources.target.workers.title'}}</F.Legend>
|
|
<F.HelperText>{{t 'resources.target.workers.description'}}</F.HelperText>
|
|
|
|
{{#if this.showDeprecationMessage}}
|
|
<F.Control>
|
|
<div class='migration-wrapper'>
|
|
<Hds::Alert @color='highlight' @type='inline' as |A|>
|
|
<A.Title>{{t
|
|
'resources.target.workers.deprecation_message.title'
|
|
}}</A.Title>
|
|
<A.Description>{{t
|
|
'resources.target.workers.deprecation_message.description'
|
|
}}</A.Description>
|
|
</Hds::Alert>
|
|
<Hds::Form::TextInput::Field
|
|
@value={{@model.worker_filter}}
|
|
@isInvalid={{@model.errors.worker_filter}}
|
|
@type='text'
|
|
name='worker_filter'
|
|
disabled={{true}}
|
|
{{on 'input' (set-from-event @model 'worker_filter')}}
|
|
as |F|
|
|
>
|
|
<F.Label>
|
|
{{t 'resources.target.form.worker_filter.label'}}
|
|
</F.Label>
|
|
<F.HelperText>
|
|
{{t 'resources.target.form.worker_filter.help'}}
|
|
</F.HelperText>
|
|
</Hds::Form::TextInput::Field>
|
|
</div>
|
|
{{#if form.isEditable}}
|
|
<Hds::Button
|
|
class='update-filter-button'
|
|
@text={{t 'resources.target.workers.actions.update-filter'}}
|
|
@color='secondary'
|
|
disabled={{form.disabled}}
|
|
{{on 'click' this.migrateWorkerFilters}}
|
|
/>
|
|
{{/if}}
|
|
</F.Control>
|
|
{{else}}
|
|
<F.Control>
|
|
<WorkerDiagram
|
|
@egressWorkerFilterEnabled={{this.egressWorkerFilterEnabled}}
|
|
@ingressWorkerFilterEnabled={{this.ingressWorkerFilterEnabled}}
|
|
/>
|
|
{{#if (feature-flag 'target-worker-filters-v2-ingress')}}
|
|
<Form::Target::WorkerFilter
|
|
@name='ingress_worker_filter'
|
|
@disabled={{form.disabled}}
|
|
@value={{@model.ingress_worker_filter}}
|
|
@toggleAction={{this.toggleIngressFilter}}
|
|
@toggleEnabled={{this.ingressWorkerFilterEnabled}}
|
|
@onChange={{set-from-event @model 'ingress_worker_filter'}}
|
|
@isInvalid={{@model.errors.ingress_worker_filter}}
|
|
as |F|
|
|
>
|
|
{{#if @model.errors.ingress_worker_filter}}
|
|
<F.Error as |E|>
|
|
{{#each @model.errors.ingress_worker_filter as |error|}}
|
|
<E.Message>{{error.message}}</E.Message>
|
|
{{/each}}
|
|
</F.Error>
|
|
{{/if}}
|
|
</Form::Target::WorkerFilter>
|
|
{{/if}}
|
|
|
|
<Form::Target::WorkerFilter
|
|
@name='egress_worker_filter'
|
|
@disabled={{form.disabled}}
|
|
@value={{@model.egress_worker_filter}}
|
|
@toggleAction={{this.toggleEgressFilter}}
|
|
@toggleEnabled={{this.egressWorkerFilterEnabled}}
|
|
@onChange={{set-from-event @model 'egress_worker_filter'}}
|
|
@isInvalid={{@model.errors.egress_worker_filter}}
|
|
as |F|
|
|
>
|
|
{{#if @model.errors.egress_worker_filter}}
|
|
<F.Error as |E|>
|
|
{{#each @model.errors.egress_worker_filter as |error|}}
|
|
<E.Message>{{error.message}}</E.Message>
|
|
{{/each}}
|
|
</F.Error>
|
|
{{/if}}
|
|
</Form::Target::WorkerFilter>
|
|
|
|
</F.Control>
|
|
{{/if}}
|
|
|
|
</Hds::Form::Fieldset>
|
|
|
|
{{else}}
|
|
<Hds::Form::TextInput::Field
|
|
@isOptional={{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.target.form.worker_filter.label'}}</F.Label>
|
|
<F.HelperText>
|
|
{{t 'resources.target.form.worker_filter.help'}}
|
|
</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>
|
|
{{/if}}
|
|
|
|
{{#if (can 'save model' @model)}}
|
|
<form.actions
|
|
@enableEditText={{t 'actions.edit-form'}}
|
|
@submitText={{t 'actions.save'}}
|
|
@cancelText={{t 'actions.cancel'}}
|
|
/>
|
|
{{/if}}
|
|
|
|
</Rose::Form> |