~allenap/maas/wait-for-dns-update--bug-1550540

« back to all changes in this revision

Viewing changes to src/maasserver/static/partials/controller-details.html

  • Committer: LaMont Jones
  • Date: 2016-02-25 16:13:34 UTC
  • mfrom: (4684 maas)
  • mto: This revision was merged to the branch mainline in revision 4689.
  • Revision ID: lamont@canonical.com-20160225161334-7a52xujm19z83dfe
mergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<div data-ng-hide="loaded">
2
 
    <header class="page-header">
3
 
        <div class="inner-wrapper">
4
 
            <h1 class="page-header__title twelve-col">Loading...</h1>
5
 
        </div>
6
 
    </header>
7
 
</div>
8
 
<div class="ng-hide" data-ng-show="loaded && !isSuperUser()">
9
 
    <header class="page-header">
10
 
        <div class="inner-wrapper">
11
 
            <h1 class="page-header__title twelve-col">You must be a super user to access controller details.</h1>
12
 
        </div>
13
 
    </header>
14
 
</div>
15
 
<div class="ng-hide" data-ng-show="loaded && isSuperUser()">
16
 
    <header class="page-header margin-bottom" data-maas-sticky-header>
17
 
        <div class="inner-wrapper">
18
 
            <h1 class="page-header__title eight-col">
19
 
                <span contenteditable="true"
20
 
                    data-ng-class="{ editable: canEdit(), invalid: editNameInvalid() }"
21
 
                    data-ng-model="nameHeader.value"
22
 
                    data-ng-disabled="!canEdit()"
23
 
                    data-maas-editing="editName()"></span>
24
 
                <a href="" class="alt ng-hide"
25
 
                    data-ng-show="nameHeader.editing"
26
 
                    data-ng-click="cancelEditName()">Cancel</a>
27
 
                <a href="" class="link-cta-ubuntu ng-hide"
28
 
                    data-ng-show="nameHeader.editing"
29
 
                    data-ng-class="{ secondary: editNameInvalid() }"
30
 
                    data-ng-click="saveEditName()">Save</a>
31
 
            </h1>
32
 
            <div class="page-header__actions four-col last-col">
33
 
                 <div class="page-header__cta two-col no-margin-bottom last-col">
34
 
                    <div class="two-col no-margin-bottom last-col">
35
 
                        <a href="#" class="link-cta-ubuntu right">Remove</a>
36
 
                    </div>
37
 
                </div>
38
 
            </div>
39
 
        </div>
40
 
    </header>
41
 
    <div class="inner-wrapper">
42
 
        <ul class="flash-messages">
43
 
            <li class="flash-messages__item error ng-hide"
44
 
                data-ng-repeat="(error_type, error) in errors"
45
 
                data-ng-show="error.viewable">{$ error.message $}</li>
46
 
        </ul>
47
 
    </div>
48
 
    <div class="row">
49
 
        <div class="inner-wrapper">
50
 
            <div class="twelve-col">
51
 
                <h2 class="title">Controller Summary</h2>
52
 
                <form>
53
 
                    <div class="six-col">
54
 
                        <dl>
55
 
                            <dt class="two-col">Type</dt>
56
 
                                <dd class="four-col last-col">
57
 
                                    Rack controller ({$ node.node_type $})
58
 
                                </dd>
59
 
                            <dt class="two-col">Last image sync</dt>
60
 
                                <dd class="four-col last-col">
61
 
                                    <time datetime="2015-08-29T13:58Z">
62
 
                                        August 29th, 2015 at 13:58
63
 
                                    </time>
64
 
                                </dd>
65
 
                            <dt class="two-col">Zone</dt>
66
 
                                <dd class="four-col last-col">
67
 
                                    {$ node.zone.name $}
68
 
                                </dd>
69
 
                            <dt class="two-col">Fabrics</dt>
70
 
                                <dd class="four-col last-col">
71
 
                                    <a href="#" class="link--alt">Fabric 1</a>, <a href="#" class="link--alt">Fabric 2</a>, <a href="#" class="link--alt">Fabric 3</a>, <a href="#" class="link--alt">Fabric 4</a>
72
 
                                </dd>
73
 
                            <dt class="two-col">DHCP</dt>
74
 
                                <dd class="four-col last-col">
75
 
                                    <a href="#" class="link--alt">View compiled configuration</a>
76
 
                                </dd>
77
 
                        </dl>
78
 
                    </div>
79
 
                    <div class="six-col last-col">
80
 
                        <dl>
81
 
                            <dt class="two-col">CPU</dt>
82
 
                                <dd class="four-col last-col">
83
 
                                    {$ node.cpu_count $} cores
84
 
                                </dd>
85
 
                            <dt class="two-col">RAM</dt>
86
 
                                <dd class="four-col last-col">
87
 
                                    {$ node.memory $}GiB
88
 
                                </dd>
89
 
                            <dt class="two-col">Storage</dt>
90
 
                                <dd class="four-col last-col">
91
 
                                    {$ node.storage $}GB over {$ node.physical_disk_count $} disks
92
 
                                </dd>
93
 
                            <dt class="two-col">OS</dt>
94
 
                                <dd class="four-col last-col">
95
 
                                    Ubuntu 16.04
96
 
                                </dd>
97
 
                            <dt class="two-col">MAAS version</dt>
98
 
                                <dd class="four-col last-col">
99
 
                                    1.10
100
 
                                </dd>
101
 
                        </dl>
102
 
                    </div>
103
 
                </form>
104
 
            </div>
105
 
        </div>
106
 
    </div>
107
 
    <div class="row">
108
 
        <div class="inner-wrapper">
109
 
            <div class="twelve-col">
110
 
                <h2>Services</h2>
111
 
            </div>
112
 
            <div class="twelve-col">
113
 
                <ul class="list__tree no-bullets">
114
 
                    <li class="list__item">
115
 
                        Cluster D
116
 
                        <ul class="list__tree list__tree--sub-level">
117
 
                            <li class="list__item">TFTP</li>
118
 
                            <li class="list__item">HTTP</li>
119
 
                        </ul>
120
 
                    </li>
121
 
                    <li class="list__item">
122
 
                        <span class="color--error"><span class="icon error"></span>&nbsp;DHCP 4</span> <div class="list__item-feedback">DHCP 4 cannot be provided due to reset</div>
123
 
                    </li>
124
 
                    <li class="list__item">
125
 
                        <span class="color--error"><span class="icon error"></span>&nbsp;DHCP 6</span> <div class="list__item-feedback">DHCP 6 cannot be provided due to reset</div>
126
 
                    </li>
127
 
                    <li class="list__item">ISCSI</li>
128
 
                </ul>
129
 
            </div>
130
 
        </div>
131
 
    </div>
132
 
    <div class="row">
133
 
        <div class="inner-wrapper">
134
 
            <div class="twelve-col">
135
 
                <h2>Served VLANs</h2>
136
 
            </div>
137
 
            <div class="twelve-col">
138
 
                <form class="table">
139
 
                    <header class="table__head">
140
 
                        <div class="table__row">
141
 
                            <div class="table__header table__column--10">VLAN</div>
142
 
                            <div class="table__header table__column--10">Fabric</div>
143
 
                            <div class="table__header table__column--30">Subnet</div>
144
 
                            <div class="table__header table__column--20">Primary rack</div>
145
 
                            <div class="table__header table__column--20">Secondary rack</div>
146
 
                            <div class="table__header table__column--10">HA</div>
147
 
                        </div>
148
 
                    </header>
149
 
                    <main class="table__body">
150
 
                        <div class="table__row">
151
 
                            <div class="table__data table__column--10"><a href="#">10</a></div>
152
 
                            <div class="table__data table__column--10"><a href="#">Fabric-1</a></div>
153
 
                            <div class="table__data table__column--30"><a href="#">192.168.10.0/24</a></div>
154
 
                            <div class="table__data table__column--20">
155
 
                                <select name="rackCtrlr" id="rackCtrlr" class="table__input">
156
 
                                    <option value="" disabled="disabled">Choose rack controller...</option>
157
 
                                    <option value="1">rack-controller-1</option>
158
 
                                    <option value="2">rack-controller-2</option>
159
 
                                    <option value="3" selected="selected">rack-controller-3</option>
160
 
                                    <option value="4">rack-controller-4</option>
161
 
                                </select>
162
 
                            </div>
163
 
                            <div class="table__data table__column--20">
164
 
                                <select name="rackCtrlr" id="rackCtrlr" class="table__input">
165
 
                                    <option value="" disabled="disabled" selected="selected">Choose rack controller...</option>
166
 
                                    <option value="1">rack-controller-1</option>
167
 
                                    <option value="2">rack-controller-2</option>
168
 
                                    <option value="3">rack-controller-3</option>
169
 
                                    <option value="4">rack-controller-4</option>
170
 
                                </select>
171
 
                            </div>
172
 
                            <div class="table__header table__column--10"></div>
173
 
                        </div>
174
 
                        <div class="table__row">
175
 
                            <div class="table__data table__column--10"><a href="#">Untagged</a></div>
176
 
                            <div class="table__data table__column--10"><a href="#">Fabric-2</a></div>
177
 
                            <div class="table__data table__column--30"><a href="#">192.168.10.0/24</a></div>
178
 
                            <div class="table__data table__column--20">
179
 
                                <select name="rackCtrlr" id="rackCtrlr" class="table__input">
180
 
                                    <option value="" disabled="disabled">Choose rack controller...</option>
181
 
                                    <option value="1">rack-controller-1</option>
182
 
                                    <option value="2">rack-controller-2</option>
183
 
                                    <option value="3" selected="selected">rack-controller-3</option>
184
 
                                    <option value="4">rack-controller-4</option>
185
 
                                </select>
186
 
                            </div>
187
 
                            <div class="table__data table__column--20">
188
 
                                <select name="rackCtrlr" id="rackCtrlr" class="table__input">
189
 
                                    <option value="" disabled="disabled">Choose rack controller...</option>
190
 
                                    <option value="1">rack-controller-1</option>
191
 
                                    <option value="2">rack-controller-2</option>
192
 
                                    <option value="3">rack-controller-3</option>
193
 
                                    <option value="4" selected="selected">rack-controller-4</option>
194
 
                                </select>
195
 
                            </div>
196
 
                            <div class="table__header table__column--10"><span class="icon simple-tick"></span></div>
197
 
                        </div>
198
 
                        <div class="table__row">
199
 
                            <div class="table__data table__column--10"><a href="#">Untagged</a></div>
200
 
                            <div class="table__data table__column--10"><a href="#">Fabric-3</a></div>
201
 
                            <div class="table__data table__column--30"><a href="#">192.168.10.0/24</a></div>
202
 
                            <div class="table__data table__column--20">
203
 
                                <select name="rackCtrlr" id="rackCtrlr" class="table__input">
204
 
                                    <option value="" disabled="disabled">Choose rack controller...</option>
205
 
                                    <option value="1">rack-controller-1</option>
206
 
                                    <option value="2" selected="selected">rack-controller-2</option>
207
 
                                    <option value="3">rack-controller-3</option>
208
 
                                    <option value="4">rack-controller-4</option>
209
 
                                </select>
210
 
                            </div>
211
 
                            <div class="table__data table__column--20">
212
 
                                <select name="rackCtrlr" id="rackCtrlr" class="table__input">
213
 
                                    <option value="" disabled="disabled">Choose rack controller...</option>
214
 
                                    <option value="1">rack-controller-1</option>
215
 
                                    <option value="2">rack-controller-2</option>
216
 
                                    <option value="3" selected="selected">rack-controller-3</option>
217
 
                                    <option value="4">rack-controller-4</option>
218
 
                                </select>
219
 
                            </div>
220
 
                            <div class="table__header table__column--10"><span class="icon simple-tick"></span></div>
221
 
                        </div>
222
 
                    </main>
223
 
                </form>
224
 
            </div>
225
 
        </div>
226
 
    </div>
227
 
    <div class="row">
228
 
        <div class="inner-wrapper" ng-controller="NodeNetworkingController">
229
 
            <div class="twelve-col" data-ng-hide="loaded">
230
 
                <h2 class="title">Network</h2>
231
 
                <div class="twelve-col">Loading...</div>
232
 
            </div>
233
 
            <form class="ng-hide" data-ng-show="loaded">
234
 
                <div class="twelve-col">
235
 
                    <h2 class="title">Network</h2>
236
 
                    <div class="twelve-col error ng-hide" data-ng-show="isAllNetworkingDisabled() && isSuperUser()">
237
 
                        <ul class="flash-messages">
238
 
                            <li class="flash-messages__item info">
239
 
                                Network configuration cannot be modified unless the node is Ready or Broken.
240
 
                            </li>
241
 
                        </ul>
242
 
                    </div>
243
 
                    <div class="twelve-col error ng-hide" data-ng-show="!node.on_network">
244
 
                        <ul class="flash-messages">
245
 
                            <li class="flash-messages__item error">
246
 
                                Node must be connected to a network.
247
 
                            </li>
248
 
                        </ul>
249
 
                    </div>
250
 
                    <div class="twelve-col error ng-hide" data-ng-show="!isUbuntuOS()">
251
 
                        <ul class="flash-messages">
252
 
                            <li class="flash-messages__item info">
253
 
                                Custom network configuration only supported on Ubuntu. Using OS default configuration.
254
 
                            </li>
255
 
                        </ul>
256
 
                    </div>
257
 
                    <div class="table margin-bottom">
258
 
                        <header class="table__head">
259
 
                            <div class="table__row">
260
 
                                <div class="table__header table__column--3"></div>
261
 
                                <div class="table__header table__column--12">
262
 
                                    <a class="active"
263
 
                                        data-ng-class="{ active: column == 'name' }"
264
 
                                        data-ng-click="column = 'name'">
265
 
                                        Name
266
 
                                    </a>
267
 
                                    <span class="divide"></span>
268
 
                                    <a data-ng-class="{ active: column == 'mac' }"
269
 
                                        data-ng-click="column = 'mac'">
270
 
                                        MAC
271
 
                                    </a>
272
 
                                </div>
273
 
                                <div class="table__header table__column--3">PXE</div>
274
 
                                <div class="table__header table__column--9">Type</div>
275
 
                                <div class="table__header table__column--14">Fabric</div>
276
 
                                <div class="table__header table__column--14">VLAN</div>
277
 
                                <div class="table__header table__column--18">Subnet</div>
278
 
                                <div class="table__header table__column--27">IP Address</div>
279
 
                            </div>
280
 
                        </header>
281
 
                        <main class="table__body" data-selected-rows>
282
 
                            <div class="table__row"
283
 
                                data-ng-class="{ active: isInterfaceSelected(interface), disabled: isDisabled(), noEdit: cannotEditInterface(interface) }"
284
 
                                data-ng-repeat="interface in interfaces | removeBondParents:newBondInterface">
285
 
                                <div class="table__data table__column--3">
286
 
                                    <span data-ng-hide="isAllNetworkingDisabled()">
287
 
                                        <input class="checkbox" type="checkbox" id="{$ getUniqueKey(interface) $}"
288
 
                                            data-ng-checked="isInterfaceSelected(interface)"
289
 
                                            data-ng-click="toggleInterfaceSelect(interface)"
290
 
                                            data-ng-disabled="isDisabled()">
291
 
                                        <label class="checkbox-label" for="{$ getUniqueKey(interface) $}"></label>
292
 
                                    </span>
293
 
                                </div>
294
 
                                <div class="table__data table__column--12" data-ng-show="column == 'name'">
295
 
                                    <span class="ng-hide" data-ng-show="interface.type == 'alias' || interface.type == 'vlan'">{$ interface.name $}</span>
296
 
                                    <input type="text" class="table__input"
297
 
                                        data-ng-show="interface.type != 'alias' && interface.type != 'vlan'"
298
 
                                        data-ng-model="interface.name"
299
 
                                        data-maas-enter-blur
300
 
                                        data-ng-focus="setFocusInterface(interface)"
301
 
                                        data-ng-blur="clearFocusInterface(interface)"
302
 
                                        data-ng-class="{ invalid: isInterfaceNameInvalid(interface) }">
303
 
                                    <span class="table__label active ng-hide" data-ng-show="interface.members">
304
 
                                        <a data-ng-click="toggleMembers(interface)">
305
 
                                            <span data-ng-hide="isShowingMembers(interface)">Show members</span>
306
 
                                            <span class="ng-hide" data-ng-show="isShowingMembers(interface)">Hide members</span>
307
 
                                        </a>
308
 
                                    </span>
309
 
                                </div>
310
 
                                <div class="table__data table__column--12 ng-hide" data-ng-show="column == 'mac'">
311
 
                                    {$ interface.mac_address $}
312
 
                                    <span class="table__label active ng-hide" data-ng-show="interface.members">
313
 
                                        <a data-ng-click="toggleMembers(interface)">
314
 
                                            <span data-ng-hide="isShowingMembers(interface)">Show members</span>
315
 
                                            <span class="ng-hide" data-ng-show="isShowingMembers(interface)">Hide members</span>
316
 
                                        </a>
317
 
                                    </span>
318
 
                                </div>
319
 
                                <div class="table__data table__column--3">
320
 
                                    <input class="align-center" type="radio" name="bootInterface" checked
321
 
                                        data-ng-if="isBootInterface(interface)">
322
 
                                </div>
323
 
                                <div class="table__data table__column--9">{$ getInterfaceTypeText(interface) $}</div>
324
 
                                <div class="table__data table__column--14">
325
 
                                    <select class="table__input" name="fabric" id="fabric"
326
 
                                        data-ng-model="interface.fabric"
327
 
                                        data-ng-disabled="interface.type == 'alias' || interface.type == 'vlan'"
328
 
                                        data-ng-change="fabricChanged(interface)"
329
 
                                        data-ng-options="fabric as fabric.name for fabric in fabrics">
330
 
                                    </select>
331
 
                                </div>
332
 
                                <div class="table__data table__column--14">
333
 
                                    <select class="table__input" name="vlan" id="vlan"
334
 
                                        data-ng-model="interface.vlan"
335
 
                                        data-ng-disabled="interface.type == 'alias' || interface.vlan.vid === 0"
336
 
                                        data-ng-change="saveInterface(interface)"
337
 
                                        data-ng-options="vlan as getVLANText(vlan) for vlan in vlans | removeDefaultVLANIfVLAN:interface.type | filterByFabric:interface.fabric">
338
 
                                    </select>
339
 
                                </div>
340
 
                                <div class="table__data table__column--18">
341
 
                                    <select class="table__input" name="subnet" id="subnet"
342
 
                                        data-ng-hide="isAllNetworkingDisabled() && interface.discovered[0].subnet_id"
343
 
                                        data-ng-model="interface.subnet"
344
 
                                        data-ng-change="subnetChanged(interface)"
345
 
                                        data-ng-options="subnet as getSubnetText(subnet) for subnet in subnets | filterByVLAN:interface.vlan">
346
 
                                        <option value="" data-ng-hide="interface.links.length > 1">Unconfigured</option>
347
 
                                    </select>
348
 
                                    <span class="ng-hide" data-ng-show="isAllNetworkingDisabled() && interface.discovered[0].subnet_id">
349
 
                                        {$ getSubnetText(getSubnet(interface.discovered[0].subnet_id)) $}
350
 
                                    </span>
351
 
                                </div>
352
 
                                <div class="table__data table__column--21">
353
 
                                    <ul class="no-bullets no-margin-bottom" data-ng-hide="isAllNetworkingDisabled()">
354
 
                                        <li>
355
 
                                            <select class="table__input" name="link-mode" id="link-mode"
356
 
                                                data-ng-model="interface.mode"
357
 
                                                data-ng-change="saveInterfaceLink(interface)"
358
 
                                                data-ng-disabled="isLinkModeDisabled(interface)"
359
 
                                                data-ng-options="mode.mode as mode.text for mode in modes | filterLinkModes:interface">
360
 
                                            </select>
361
 
                                        </li>
362
 
                                        <li class="margin-top--ten" data-ng-show="shouldShowIPAddress(interface)">
363
 
                                            <input type="text" class="table__input no-margin-top"
364
 
                                                data-ng-model="interface.ip_address"
365
 
                                                data-ng-class="{ invalid: isIPAddressInvalid(interface) }"
366
 
                                                data-maas-enter-blur
367
 
                                                data-ng-focus="setFocusInterface(interface)"
368
 
                                                data-ng-blur="clearFocusInterface(interface)"
369
 
                                                data-ng-disabled="interface.mode != 'static'">
370
 
                                        </li>
371
 
                                    </ul>
372
 
                                    <span class="ng-hide" data-ng-show="isAllNetworkingDisabled() && !interface.discovered[0].ip_address">
373
 
                                        {$ interface.ip_address $} ({$ getLinkModeText(interface) $})
374
 
                                    </span>
375
 
                                    <span class="ng-hide" data-ng-show="isAllNetworkingDisabled() && interface.discovered[0].ip_address">
376
 
                                        {$ interface.discovered[0].ip_address $} (DHCP)
377
 
                                    </span>
378
 
                                </div>
379
 
                                <div class="table__data table__column--6">
380
 
                                    <div class="table__controls align-right">
381
 
                                        <a class="icon add tooltip"
382
 
                                            data-tooltip="Add"
383
 
                                            data-ng-click="quickAdd(interface)"
384
 
                                            data-ng-show="canAddAlias(interface) || canAddVLAN(interface)"></a>
385
 
                                        <a class="icon delete tooltip" data-tooltip="Remove" data-ng-click="quickRemove(interface)"></a>
386
 
                                    </div>
387
 
                                </div>
388
 
                                <div class="table__dropdown--info">
389
 
                                    <div class="table__row table__dropdown-row--info" data-ng-class="{ active: isShowingMembers(interface) }" data-ng-repeat="member in interface.members">
390
 
                                        <div data-ng-show="isShowingMembers(interface)">
391
 
                                            <div class="table__data no-padding-top table__column--3"></div>
392
 
                                            <div class="table__data no-padding-top table__column--15"
393
 
                                                data-ng-show="column == 'name'">{$ member.name $}</div>
394
 
                                            <div class="table__data no-padding-top table__column--15 ng-hide"
395
 
                                                data-ng-show="column == 'mac'">{$ member.mac_address $}</div>
396
 
                                            <div class="table__data no-padding-top table__column--15">{$ getInterfaceTypeText(member) $}</div>
397
 
                                            <div class="table__data no-padding-top table__column--67">
398
 
                                            </div>
399
 
                                        </div>
400
 
                                    </div>
401
 
                                </div>
402
 
                                <div class="table__dropdown">
403
 
                                    <div class="table__row table__dropdown-row" data-ng-class="{ active: isShowingAdd() }">
404
 
                                        <div data-ng-show="isShowingAdd()">
405
 
                                            <div class="table__data table__column--3">
406
 
                                            </div>
407
 
                                            <div class="table__data table__column--12">
408
 
                                                {$ getAddName() $}
409
 
                                            </div>
410
 
                                            <div class="table__data table__column--3">
411
 
                                            </div>
412
 
                                            <div class="table__data table__column--9">
413
 
                                                <select class="table__input" name="type" id="type"
414
 
                                                    data-ng-model="newInterface.type"
415
 
                                                    data-ng-change="addTypeChanged()">
416
 
                                                    <option value="alias" data-ng-show="canAddAlias(newInterface.parent)">Alias</option>
417
 
                                                    <option value="vlan" data-ng-show="canAddVLAN(newInterface.parent)">VLAN</option>
418
 
                                                </select>
419
 
                                            </div>
420
 
                                            <div class="table__data table__column--14">
421
 
                                                {$ newInterface.parent.fabric.name $}
422
 
                                            </div>
423
 
                                            <div class="table__data table__column--14">
424
 
                                                <span data-ng-show="newInterface.type === 'alias'">{$ getVLANText(newInterface.parent.vlan) $}</span>
425
 
                                                <select class="table__input" name="vlan" id="vlan"
426
 
                                                    data-ng-model="newInterface.vlan"
427
 
                                                    data-ng-disabled="newInterface.type == 'alias'"
428
 
                                                    data-ng-options="vlan as getVLANText(vlan) for vlan in vlans | removeDefaultVLAN | filterByFabric:newInterface.parent.fabric | filterByUnusedForInterface:newInterface.parent:originalInterfaces"
429
 
                                                    data-ng-show="newInterface.type === 'vlan'"
430
 
                                                    data-ng-change="addVLANChanged()">
431
 
                                                </select>
432
 
                                            </div>
433
 
                                            <div class="table__data table__column--18">
434
 
                                                <select class="table__input" name="subnet" id="subnet"
435
 
                                                    data-ng-model="newInterface.subnet"
436
 
                                                    data-ng-change="addSubnetChanged()"
437
 
                                                    data-ng-options="subnet as getSubnetText(subnet) for subnet in subnets | filterByVLAN:newInterface.vlan">
438
 
                                                    <option value="" data-ng-hide="newInterface.type === 'alias'">Unconfigured</option>
439
 
                                                </select>
440
 
                                            </div>
441
 
                                            <div class="table__data table__column--21">
442
 
                                                <select class="table__input" name="link-mode" id="link-mode"
443
 
                                                    data-ng-model="newInterface.mode"
444
 
                                                    data-ng-disabled="isLinkModeDisabled(newInterface)"
445
 
                                                    data-ng-options="mode.mode as mode.text for mode in modes | filterLinkModes:newInterface">
446
 
                                                </select>
447
 
                                            </div>
448
 
                                            <div class="table__data table_column--6"></div>
449
 
                                        </div>
450
 
                                    </div>
451
 
                                    <div class="table__row table__dropdown-row" data-ng-class="{ active: isShowingInterfaceOptions() || isShowingDeleteComfirm() || isShowingAdd() }">
452
 
                                        <div class="ng-hide" data-ng-show="isShowingInterfaceOptions()">
453
 
                                            <div class="table__data left margin-left--thirty">
454
 
                                                  <button class="cta-ubuntu secondary"
455
 
                                                    data-ng-click="add('alias', interface)"
456
 
                                                    data-ng-show="canAddAlias(interface)">Add alias</button>
457
 
                                                  <button class="cta-ubuntu secondary"
458
 
                                                    data-ng-click="add('vlan', interface)"
459
 
                                                    data-ng-show="canAddVLAN(interface)">Add VLAN</button>
460
 
                                                  <a class="link-cta-ubuntu text-button"
461
 
                                                    data-ng-click="remove()">Remove {$ getRemoveTypeText(interface) $}</a>
462
 
                                            </div>
463
 
                                        </div>
464
 
                                        <div class="ng-hide" data-ng-show="isShowingDeleteComfirm()">
465
 
                                            <div class="table__data left margin-top--five">
466
 
                                                  <p><span class="icon warning margin-right--ten"></span> Are you sure you want to remove this {$ getRemoveTypeText(interface) $}?</p>
467
 
                                            </div>
468
 
                                            <div class="table__data right">
469
 
                                                  <a class="link-cta-ubuntu text-button" data-ng-click="cancel()">Cancel</a>
470
 
                                                  <button class="cta-ubuntu" data-ng-click="confirmRemove(interface)">Remove</button>
471
 
                                            </div>
472
 
                                        </div>
473
 
                                        <div data-ng-show="isShowingAdd() && !newInterface.saving">
474
 
                                            <div class="table__data left margin-left--thirty">
475
 
                                                <button class="cta-ubuntu secondary"
476
 
                                                    data-ng-click="addInterface('alias')"
477
 
                                                    data-ng-show="canAddAlias(interface)">Add <span data-ng-show="newInterface.type === 'alias'">another </span>alias</button>
478
 
                                                <button class="cta-ubuntu secondary"
479
 
                                                    data-ng-click="addInterface('vlan')"
480
 
                                                    data-ng-show="canAddAnotherVLAN(interface)">Add <span data-ng-show="newInterface.type === 'vlan'">another </span>VLAN</button>
481
 
                                            </div>
482
 
                                            <div class="table__data right">
483
 
                                                  <a class="link-cta-ubuntu text-button" data-ng-click="cancel()">Cancel</a>
484
 
                                                  <button class="cta-ubuntu" data-ng-click="addInterface()">Save</button>
485
 
                                            </div>
486
 
                                        </div>
487
 
                                    </div>
488
 
                                </div>
489
 
                            </div>
490
 
                            <div class="table__row active ng-hide" data-ng-show="isShowingCreateBond()">
491
 
                                <div class="table__data table__column--3">
492
 
                                    <input class="checkbox" type="checkbox" id="bond-create" disabled="disabled" checked />
493
 
                                    <label class="checkbox-label" for="bond-create"></label>
494
 
                                </div>
495
 
                                <div class="table__data table__column--12">
496
 
                                    <input type="text" class="table__input editible"
497
 
                                        data-ng-class="{ invalid: isInterfaceNameInvalid(newBondInterface) }"
498
 
                                        data-ng-model="newBondInterface.name">
499
 
                                </div>
500
 
                                <div class="table__data table__column--3">
501
 
                                    <input class="align-center" type="radio" name="bondBootInterface" checked
502
 
                                        data-ng-if="getBondIsBootInterface()">
503
 
                                </div>
504
 
                                <div class="table__data table__column--9">Bond</div>
505
 
                                <div class="table__data table__column--73"></div>
506
 
                                <div class="table__dropdown">
507
 
                                    <div class="table__row table__dropdown-row active">
508
 
                                        <div class="table__data table__column--3">
509
 
                                        </div>
510
 
                                        <div class="table__data table__column--15">
511
 
                                            <label for="type">Bond mode</label>
512
 
                                            <select name="bond-mode" id="bond-mode"
513
 
                                                data-ng-model="newBondInterface.mode"
514
 
                                                data-ng-options="mode[0] as mode[1] for mode in bondOptions.modes">
515
 
                                            </select>
516
 
                                        </div>
517
 
                                        <div class="table__data table__column--15">
518
 
                                            <label for="mac">MAC address</label>
519
 
                                            <input type="text" data-ng-model="newBondInterface.macAddress"
520
 
                                                data-ng-class="{ invalid: isMACAddressInvalid(newBondInterface.macAddress) }"
521
 
                                                data-ng-placeholder="getBondPlaceholderMACAddress()">
522
 
                                        </div>
523
 
                                        <div class="table__data table__column--15" data-ng-show="showLACPRate()">
524
 
                                            <label for="rates">LACP rate</label>
525
 
                                            <select name="bond-mode" id="bond-mode"
526
 
                                                data-ng-model="newBondInterface.lacpRate"
527
 
                                                data-ng-options="rate[0] as rate[1] for rate in bondOptions.lacp_rates">
528
 
                                            </select>
529
 
                                        </div>
530
 
                                        <div class="table__data table__column--15" data-ng-show="showXMITHashPolicy()">
531
 
                                            <label for="rates">XMIT hash policy</label>
532
 
                                            <select name="xmit-hash-policy" id="xmit-hash-policy"
533
 
                                                data-ng-model="newBondInterface.xmitHashPolicy"
534
 
                                                data-ng-options="xmit[0] as xmit[1] for xmit in bondOptions.xmit_hash_policies">
535
 
                                            </select>
536
 
                                        </div>
537
 
                                    </div>
538
 
                                    <div class="table__row table__dropdown-row table__dropdown-row--head active">
539
 
                                        <div class="table__header table__column--3"></div>
540
 
                                        <div class="table__header table__column--15">Name</div>
541
 
                                        <div class="table__header table__column--15">Type</div>
542
 
                                        <div class="table__header table__column--67">Primary</div>
543
 
                                    </div>
544
 
                                    <div class="table__row table__dropdown-row no-border active"
545
 
                                        data-ng-repeat="parent in newBondInterface.parents | orderBy:'name'">
546
 
                                        <div class="table__data no-padding-top table__column--3"></div>
547
 
                                        <div class="table__data no-padding-top table__column--15">{$ parent.name $}</div>
548
 
                                        <div class="table__data no-padding-top table__column--15">{$ getInterfaceTypeText(parent) $}</div>
549
 
                                        <div class="table__data no-padding-top table__column--67">
550
 
                                            <input type="radio" name="bondPrimary" data-ng-model="newBondInterface.primary" data-ng-value="parent">
551
 
                                        </div>
552
 
                                    </div>
553
 
                                    <div class="table__row table__dropdown-row active">
554
 
                                        <div class="table__data right">
555
 
                                            <a class="link-cta-ubuntu text-button" data-ng-click="cancel()">Cancel</a>
556
 
                                            <button class="cta-ubuntu"
557
 
                                                data-ng-click="addBond()"
558
 
                                                data-ng-disabled="cannotAddBond()">Save</button>
559
 
                                        </div>
560
 
                                    </div>
561
 
                                </div>
562
 
                            </div>
563
 
                            <div class="table__row active" data-ng-show="isShowingCreatePhysical()">
564
 
                                <div class="table__data table__column--3">
565
 
                                    <input class="checkbox" type="checkbox" id="interface-create" disabled="disabled" checked />
566
 
                                    <label class="checkbox-label" for="interface-create"></label>
567
 
                                </div>
568
 
                                <div class="table__data table__column--12">
569
 
                                    <input type="text" class="table__input"
570
 
                                        data-ng-class="{ invalid: isInterfaceNameInvalid(newInterface) }"
571
 
                                        data-ng-model="newInterface.name">
572
 
                                </div>
573
 
                                <div class="table__data table__column--3"></div>
574
 
                                <div class="table__data table__column--9">Physical</div>
575
 
                                <div class="table__data table__column--14">
576
 
                                    <select class="table__input" name="fabric" id="fabric"
577
 
                                        data-ng-model="newInterface.fabric"
578
 
                                        data-ng-change="newPhysicalFabricChanged()"
579
 
                                        data-ng-options="fabric as fabric.name for fabric in fabrics">
580
 
                                    </select>
581
 
                                </div>
582
 
                                <div class="table__data table__column--14">
583
 
                                    <select class="table__input" name="vlan" id="vlan" disabled="disabled">
584
 
                                        <option value="" selected>untagged</option>
585
 
                                    </select>
586
 
                                </div>
587
 
                                <div class="table__data table__column--18">
588
 
                                    <select class="table__input" name="subnet" id="subnet"
589
 
                                        data-ng-model="newInterface.subnet"
590
 
                                        data-ng-change="newPhysicalSubnetChanged()"
591
 
                                        data-ng-options="subnet as getSubnetText(subnet) for subnet in subnets | filterByVLAN:newInterface.vlan">
592
 
                                        <option value="">Unconfigured</option>
593
 
                                    </select>
594
 
                                </div>
595
 
                                <div class="table__data table__column--14">
596
 
                                    <select class="table__input" name="link-mode" id="link-mode"
597
 
                                        data-ng-model="newInterface.mode"
598
 
                                        data-ng-disabled="isLinkModeDisabled(newInterface)"
599
 
                                        data-ng-options="mode.mode as mode.text for mode in modes">
600
 
                                    </select>
601
 
                                </div>
602
 
                                <div class="table__data table__column--13"></div>
603
 
                                <div class="table__dropdown">
604
 
                                    <div class="table__row table__dropdown-row active">
605
 
                                        <div class="table__data table__column--3">
606
 
                                        </div>
607
 
                                        <div class="table__data table__column--12">
608
 
                                            <label>MAC address</label>
609
 
                                            <input type="text" data-ng-model="newInterface.macAddress"
610
 
                                                data-ng-class="{ invalid: isMACAddressInvalid(newInterface.macAddress, false) || newInterface.macError }">
611
 
                                        </div>
612
 
                                        <div class="table__data table__column--85"></div>
613
 
                                    </div>
614
 
                                    <div class="table__row table__dropdown-row active">
615
 
                                        <div class="table__data left" data-ng-show="newInterface.errorMsg">
616
 
                                            <span class="icon error"></span> {$ newInterface.errorMsg $}
617
 
                                        </div>
618
 
                                        <div class="table__data right">
619
 
 
620
 
                                            <a class="link-cta-ubuntu text-button" data-ng-click="cancel()">Cancel</a>
621
 
                                            <button class="cta-ubuntu"
622
 
                                                data-ng-click="addPhysicalInterface()"
623
 
                                                data-ng-disabled="cannotAddPhysicalInterface()">Save</button>
624
 
                                        </div>
625
 
                                    </div>
626
 
                                </div>
627
 
                            </div>
628
 
                        </main>
629
 
                    </div>
630
 
                    <div data-ng-hide="isAllNetworkingDisabled() || isShowingCreateBond() || isShowingCreatePhysical()">
631
 
                        <a class="link-cta-ubuntu secondary margin-right"
632
 
                            data-ng-class="{ disabled: selectedMode !== null }"
633
 
                            data-ng-click="showCreatePhysical()">Add interface</a>
634
 
                        <a class="link-cta-ubuntu secondary margin-right"
635
 
                            data-ng-class="{ disabled: !canCreateBond() }"
636
 
                            data-ng-click="showCreateBond()">Create bond</a>
637
 
                    </div>
638
 
                </div>
639
 
            </form>
640
 
        </div>
641
 
    </div>
642
 
</div>