184 lines
8.6 KiB
Plaintext
184 lines
8.6 KiB
Plaintext
.grid
|
|
.panel.panel-default
|
|
p.page-title
|
|
i.xo-icon-sr
|
|
| Add SR on
|
|
a(ng-if="'pool' === newSr.container.type", ui-sref="pools_view({id: newSr.container.id})")
|
|
| {{newSr.container.name_label}}
|
|
a(ng-if="'host' === newSr.container.type", ui-sref="hosts_view({id: newSr.container.id})")
|
|
| {{newSr.container.name_label}}
|
|
form.form-horizontal(name = 'srForm' ng-submit="newSr.createSR(formData)")
|
|
.grid
|
|
//- Choose SR type panel
|
|
.panel.panel-default
|
|
.panel-heading.panel-title
|
|
i.fa.fa-info-circle(style="color: #e25440;")
|
|
| General
|
|
.panel-body
|
|
.form-group
|
|
label.col-sm-3.control-label Type
|
|
.col-sm-9
|
|
select.form-control(ng-change = 'newSr.reset(formData)', ng-model = 'formData.srType', name = 'srType', ng-required = 'true')
|
|
option(value="") -- Choose a type of SR --
|
|
optgroup(label="VDI SR")
|
|
option(value="NFS") NFS
|
|
option(value="iSCSI") iSCSI
|
|
option(value="lvm") Local LVM
|
|
optgroup(label="ISO SR")
|
|
option(value="Local") Local
|
|
option(value="NFS_ISO") NFS ISO
|
|
.form-group(ng-class = '{"has-error": newSr.data.error.name}')
|
|
label.col-sm-3.control-label Name
|
|
.col-sm-9
|
|
input.form-control(type="text", placeholder="", name = 'srName', ng-model = 'formData.srName', ng-required = 'true')
|
|
.form-group(ng-class = '{"has-error": newSr.data.error.desc}')
|
|
label.col-sm-3.control-label Description
|
|
.col-sm-9
|
|
input.form-control(type="text", placeholder="SR Created by Xen Orchestra", name = 'srDesc', ng-model = 'formData.srDesc', ng-required = 'true')
|
|
//- Choose SR details
|
|
.panel.panel-default
|
|
.panel-heading.panel-title
|
|
i.fa.fa-cogs(style="color: #e25440;")
|
|
| Settings
|
|
.panel-body
|
|
.form-group(ng-if = 'formData.srType === "NFS" || formData.srType === "iSCSI" || formData.srType === "NFS_ISO"')
|
|
label.col-sm-3.control-label
|
|
| Server
|
|
span(ng-if = 'formData.srType === "iSCSI"')
|
|
| (auth
|
|
input(type = 'checkbox', ng-model = 'formData.srAuth')
|
|
| )
|
|
.col-sm-9
|
|
.input-group
|
|
input.form-control(type="text", placeholder='address{{ formData.srType === "iSCSI" ? "[:port]" : "" }}', name = 'srServer', ng-model = 'formData.srServer', required)
|
|
span.input-group-btn
|
|
button.btn.btn-default(type = 'button', ng-click = 'newSr.populateSettings(formData.srType, formData.srServer, formData.srAuth, formData.srChapUser, formData.srChapPassword)')
|
|
i.fa.fa-search
|
|
|
|
//- For Local LVM
|
|
.form-group(ng-if = 'formData.srType === "lvm"')
|
|
label.col-sm-3.control-label Device
|
|
.col-sm-9
|
|
input.form-control(
|
|
ng-if = 'formData.srType === "lvm"'
|
|
type = 'text'
|
|
name = 'srDevice'
|
|
ng-model = 'formData.srDevice.device'
|
|
placeholder = 'Device, e.g /dev/sda...'
|
|
ng-change = 'newSr.lock = !formData.srDevice.device'
|
|
required
|
|
)
|
|
|
|
.form-group(ng-if = 'newSr.data.paths || formData.srType === "Local"')
|
|
label.col-sm-3.control-label Path
|
|
.col-sm-9
|
|
//- For NFS
|
|
select.form-control(
|
|
ng-if = 'newSr.data.paths'
|
|
name = 'srPath'
|
|
ng-change = 'newSr.loadNfsList(formData)'
|
|
ng-model = 'formData.srPath'
|
|
ng-options = 'item.path for item in newSr.data.paths', required)
|
|
option(value = '', disabled) -- Choose path --
|
|
//- For Local
|
|
input.form-control(
|
|
ng-if = 'formData.srType === "Local"'
|
|
type = 'text'
|
|
name = 'srPath'
|
|
ng-model = 'formData.srPath.path'
|
|
ng-change = 'newSr.lock = !formData.srPath.path'
|
|
required
|
|
)
|
|
|
|
//- For iScsi
|
|
.form-group(ng-if = 'formData.srType === "iSCSI"')
|
|
.col-sm-9.col-sm-offset-3.form-inline(ng-if = 'formData.srAuth')
|
|
label.sr-only(for = 'chapUser') User
|
|
input#chapUser.form-control(type = 'text', ng-model = 'formData.srChapUser', placeholder = 'user', ng-required = 'formData.srAuth')
|
|
|  
|
|
label.sr-only(for = 'chapUser') Password
|
|
input#chapPassword.form-control(type = 'password', ng-model = 'formData.srChapPassword', placeholder = 'password', ng-required = 'formData.srAuth')
|
|
.form-group(ng-if = 'newSr.data.iqns')
|
|
label.col-sm-3.control-label IQN
|
|
.col-sm-9
|
|
select.form-control(ng-change = 'newSr.populateIScsiIds(formData.srIqn, formData.srAuth, formData.srChapUser, formData.srChapPassword)', name = 'srIqn', ng-model = 'formData.srIqn', ng-options = '(item.iqn + " (" + item.ip + ")") for item in newSr.data.iqns', required)
|
|
option(value = '', disabled) -- Choose IQN --
|
|
.form-group(ng-if = 'newSr.data.iScsiIds')
|
|
label.col-sm-3.control-label LUN
|
|
.col-sm-9
|
|
select.form-control(name = 'srIScsiId', ng-change = 'newSr.loadScsiList(formData)', ng-model = 'formData.srIScsiId', ng-options = 'item.display for item in newSr.data.iScsiIds', required)
|
|
option(value = '', disabled) -- Choose LUN --
|
|
.form-group.text-center(ng-if = 'newSr.loading')
|
|
i.fa.fa-circle-o-notch.fa-spin.fa-2x
|
|
|
|
.grid(ng-if = 'newSr.data.nfsList && newSr.data.nfsList.length > 0')
|
|
.panel.panel-default
|
|
.panel-heading.panel-title
|
|
i.fa.fa-eye(style="color: #e25440;")
|
|
| NFS storage use
|
|
.panel-body
|
|
table.table.table-condensed
|
|
tr
|
|
th.text-center Storage UUID
|
|
th
|
|
tr(ng-repeat = 'nfsSr in newSr.data.nfsList')
|
|
td.text-center {{ nfsSr.uuid }}
|
|
td.text-center(ng_if = '!nfsSr.used')
|
|
button.btn.btn-sm.btn-primary(type = 'button', ng-class = '{disabled: newSr.lock}', ng-click = 'newSr.reattachNfs(nfsSr.uuid, {name: formData.srName, nameError: srForm.srName.$error.required}, {desc: formData.srDesc, descError: srForm.srDesc.$error.required}, "NFS_ISO" === formData.srType)') Reattach
|
|
td.text-center(ng_if = 'nfsSr.used', ng-class = '{disabled: newSr.lock}')
|
|
button.btn.btn-sm.btn-danger(ui-sref = 'SRs_view({id: nfsSr.uuid})', ng-class = '{disabled: newSr.lock}')
|
|
i.fa.fa-eye
|
|
| In use
|
|
p.text-center(ng-if = 'newSr.attaching')
|
|
i.fa.fa-circle-o-notch.fa-spin.fa-2x
|
|
|
|
.grid(ng-if = 'newSr.data.scsiList && newSr.data.scsiList.length > 0')
|
|
.panel.panel-default
|
|
.panel-heading.panel-title
|
|
i.fa.fa-eye(style="color: #e25440;")
|
|
| iSCSI storage use
|
|
.panel-body
|
|
table.table.table-condensed
|
|
tr
|
|
th.text-center Storage UUID
|
|
th
|
|
tr(ng-repeat = 'scsiSr in newSr.data.scsiList')
|
|
td.text-center {{ scsiSr.uuid }}
|
|
td.text-center(ng_if = '!scsiSr.used')
|
|
button.btn.btn-sm.btn-primary(type = 'button', ng-class = '{disabled: newSr.lock}', ng-click = 'newSr.reattachIScsi(scsiSr.uuid, {name: formData.srName, nameError: srForm.srName.$error.required}, {desc: formData.srDesc, descError: srForm.srDesc.$error.required})') Reattach
|
|
td.text-center(ng_if = 'scsiSr.used')
|
|
button.btn.btn-sm.btn-danger(ui-sref = 'SRs_view({id: scsiSr.uuid})', ng-class = '{disabled: newSr.lock}')
|
|
i.fa.fa-eye
|
|
| In use
|
|
p.text-center(ng-if = 'newSr.attaching')
|
|
i.fa.fa-circle-o-notch.fa-spin.fa-2x
|
|
|
|
//- Summary
|
|
.grid
|
|
.panel.panel-default
|
|
.panel-heading.panel-title
|
|
i.fa.fa-flag-checkered(style="color: #e25440;")
|
|
| Summary
|
|
.panel-body
|
|
.grid
|
|
.grid-cell
|
|
p.stat-name
|
|
| Name:
|
|
p.center.big {{formData.srName}}
|
|
.grid-cell
|
|
p.stat-name
|
|
| Type:
|
|
p.center.big {{formData.srType}}
|
|
.grid-cell
|
|
div(ng-if = 'formData.srType === "iSCSI"')
|
|
p.stat-name Size
|
|
p.center.big {{formData.srIScsiId.size | bytesToSize}}
|
|
div(ng-if = 'formData.srType === "NFS"')
|
|
p.stat-name Path
|
|
p.center.big {{formData.srPath.path}}
|
|
p.center
|
|
button.btn.btn-lg.btn-primary(type="submit", ng-disabled = 'newSr.lock || newSr.lockCreation')
|
|
i.fa.fa-play
|
|
| Create SR
|
|
i.fa.fa-circle-o-notch.fa-spin(ng-if = 'newSr.creating')
|