Fix user+global+affinity labels

This commit is contained in:
Vincent Fiduccia 2015-06-03 23:40:14 -07:00
parent 7e2e84429f
commit a8e94d9827
9 changed files with 67 additions and 18 deletions

View File

@ -9,12 +9,21 @@ export default Ember.Component.extend({
var obj = this.get('model')||{}; var obj = this.get('model')||{};
var keys = Ember.keys(obj); var keys = Ember.keys(obj);
keys.forEach(function(key) { keys.forEach(function(key) {
var isUser = key.indexOf(C.LABEL.SYSTEM_PREFIX) !== 0; var type = 'user';
if ( key.indexOf(C.LABEL.SCHED_AFFINITY) === 0 )
{
type = 'affinity';
}
else if ( key.indexOf(C.LABEL.SYSTEM_PREFIX) === 0 )
{
type = 'system';
}
out.push(Ember.Object.create({ out.push(Ember.Object.create({
key: key, key: key,
value: obj[key], value: obj[key],
isUser: isUser, type: type,
kind: (isUser ? 'User' : 'System'), isUser: (type === 'user'),
})); }));
}); });

View File

@ -8,8 +8,8 @@
</thead> </thead>
<tbody> <tbody>
{{#each label in labelArray}} {{#each label in labelArray}}
<tr {{bind-attr class="isUser::text-muted"}}> <tr {{bind-attr class="label.isUser::text-muted"}}>
<td>{{label.kind}}</td> <td>{{uc-first label.type}}</td>
<td>{{label.key}}</td> <td>{{label.key}}</td>
<td>{{label.value}}</td> <td>{{label.value}}</td>
</tr> </tr>

View File

@ -134,7 +134,7 @@ export default Ember.Mixin.create(Cattle.NewOrEditMixin, EditHealthCheck, EditLa
}, },
addSchedulingRule: function() { addSchedulingRule: function() {
this.send('addSystemLabel'); this.send('addSystemLabel','','','affinity');
}, },
removeSchedulingRule: function(obj) { removeSchedulingRule: function(obj) {
@ -167,7 +167,6 @@ export default Ember.Mixin.create(Cattle.NewOrEditMixin, EditHealthCheck, EditLa
this.initCommand(); this.initCommand();
this.initEntryPoint(); this.initEntryPoint();
this.initMemory(); this.initMemory();
this.initLabels();
this.initHealthCheck(); this.initHealthCheck();
this.initScheduling(); this.initScheduling();
} }

View File

@ -8,14 +8,21 @@ export default Ember.Mixin.create({
addLabel: function() { addLabel: function() {
this.get('labelArray').pushObject(Ember.Object.create({ this.get('labelArray').pushObject(Ember.Object.create({
isUser: true, isUser: true,
type: 'user',
key: '', key: '',
value: '', value: '',
})); }));
}, },
addSystemLabel: function(key, value) { addSystemLabel: function(key, value, type) {
if ( !type )
{
type = ((key||'').indexOf(C.LABEL.SCHED_AFFINITY) === 0 ? 'affinity' : 'system');
}
this.get('labelArray').pushObject(Ember.Object.create({ this.get('labelArray').pushObject(Ember.Object.create({
isUser: false, isUser: false,
type: type,
key: key, key: key,
value: value, value: value,
})); }));
@ -97,10 +104,21 @@ export default Ember.Mixin.create({
var keys = Object.keys(obj); var keys = Object.keys(obj);
var out = []; var out = [];
keys.forEach(function(key) { keys.forEach(function(key) {
var type = 'user';
if ( key.indexOf(C.LABEL.SCHED_AFFINITY) === 0 )
{
type = 'affinity';
}
else if ( key.indexOf(C.LABEL.SYSTEM_PREFIX) === 0 )
{
type = 'system';
}
out.push(Ember.Object.create({ out.push(Ember.Object.create({
key: key, key: key,
value: obj[key], value: obj[key],
isUser: key.indexOf(C.LABEL.SYSTEM_PREFIX) !== 0, type: type,
isUser: (type === 'user'),
})); }));
}); });
@ -139,14 +157,25 @@ export default Ember.Mixin.create({
return null; return null;
}, },
setLabel: function(key, value, user) { setLabel: function(key, value) {
key = (key||'').toLowerCase(); key = (key||'').toLowerCase();
var type = 'user';
if ( key.indexOf(C.LABEL.SCHED_AFFINITY) === 0 )
{
type = 'affinity';
}
else if ( key.indexOf(C.LABEL.SYSTEM_PREFIX) === 0 )
{
type = 'system';
}
var existing = this.getLabel(key); var existing = this.getLabel(key);
if ( existing ) if ( existing )
{ {
Ember.setProperties(existing,{ Ember.setProperties(existing,{
value: value, value: value,
isUser: !!user type: type,
isUser: (type === 'user'),
}); });
} }
else else
@ -154,7 +183,8 @@ export default Ember.Mixin.create({
existing = this.get('labelArray').pushObject(Ember.Object.create({ existing = this.get('labelArray').pushObject(Ember.Object.create({
key: key, key: key,
value: value, value: value,
isUser: !!user type: type,
isUser: (type === 'user'),
})); }));
} }

View File

@ -9,12 +9,20 @@ export default Ember.Mixin.create({
var obj = this.get('labelResource.labels')||{}; var obj = this.get('labelResource.labels')||{};
var keys = Ember.keys(obj).sort(); var keys = Ember.keys(obj).sort();
keys.forEach(function(key) { keys.forEach(function(key) {
var isUser = key.indexOf(C.LABEL.SYSTEM_PREFIX) !== 0; var type = 'user';
if ( key.indexOf(C.LABEL.SCHED_AFFINITY) === 0 )
{
type = 'affinity';
}
else if ( key.indexOf(C.LABEL.SYSTEM_PREFIX) === 0 )
{
type = 'system';
}
out.push(Ember.Object.create({ out.push(Ember.Object.create({
key: key, key: key,
value: obj[key], value: obj[key],
isUser: isUser, type: type,
kind: (isUser ? 'User' : 'System'), isUser: (type === 'user'),
})); }));
}); });

View File

@ -4,6 +4,8 @@
{{partial "container/edit-name"}} {{partial "container/edit-name"}}
{{partial "form-divider"}}
<div class="row"> <div class="row">
<div class="col-sm-12 col-md-2 form-label"> <div class="col-sm-12 col-md-2 form-label">
<label>Scale</label> <label>Scale</label>

View File

@ -50,9 +50,9 @@
</thead> </thead>
<tbody> <tbody>
{{#each rule in labelArray}} {{#each rule in labelArray}}
{{#unless rule.isUser}} {{#if (eq rule.type "affinity")}}
{{scheduling-rule-row rule=rule allHosts=allHosts remove="removeSchedulingRule"}} {{scheduling-rule-row rule=rule allHosts=allHosts remove="removeSchedulingRule"}}
{{/unless}} {{/if}}
{{/each}} {{/each}}
</tbody> </tbody>
</table> </table>

View File

@ -78,6 +78,7 @@ export default {
SYSTEM_PREFIX: 'io.rancher.', SYSTEM_PREFIX: 'io.rancher.',
SERVICE_NAME: 'io.rancher.service.name', SERVICE_NAME: 'io.rancher.service.name',
SCHED_GLOBAL: 'io.rancher.scheduler.global', SCHED_GLOBAL: 'io.rancher.scheduler.global',
SCHED_AFFINITY: 'io.rancher.scheduler.affinity:',
SCHED_CONTAINER: 'io.rancher.scheduler.affinity:container', SCHED_CONTAINER: 'io.rancher.scheduler.affinity:container',
SCHED_HOST_LABEL: 'io.rancher.scheduler.affinity:host_label', SCHED_HOST_LABEL: 'io.rancher.scheduler.affinity:host_label',
SCHED_CONTAINER_LABEL: 'io.rancher.scheduler.affinity:container_label', SCHED_CONTAINER_LABEL: 'io.rancher.scheduler.affinity:container_label',

View File

@ -1,6 +1,6 @@
{ {
"name": "ui", "name": "ui",
"version": "0.23.0-rc4", "version": "0.23.0-rc5",
"private": true, "private": true,
"directories": { "directories": {
"doc": "doc", "doc": "doc",