Initial Contribution of the rollout-management feature
- Repository functionality for rollout, rolloutgroup entities - Rollout scheduler to watch and handle running rollouts and start next group of rollout - Vaadin view to administrate rollouts and reflect the current rollout status - REST resources to cover rollout creation, updating, starting, pausing and resuming Signed-off-by: Michael Hirsch <michael.hirsch@bosch-si.com>
This commit is contained in:
@@ -127,3 +127,11 @@ $white-hex-color: #fff;
|
||||
$tag-border-green-color: #2c9720;
|
||||
$tag-button-disabled-grey:#c0c0c0;
|
||||
$twin-table-border-grey:#888;
|
||||
|
||||
|
||||
$progress-bar-scheduled-part: $blue-color;
|
||||
$progress-bar-running-part: $signal-yellow-color;
|
||||
$progress-bar-error-part: $signal-red-color;
|
||||
$progress-bar-finished-part: $signal-green-color;
|
||||
$progress-bar-cancelled-part: $grey-light;
|
||||
$progress-bar-notstarted-part: $grey-color;
|
||||
@@ -198,19 +198,34 @@
|
||||
.statusIconNeutral {
|
||||
color: $hawkbit-primary-color;
|
||||
}
|
||||
|
||||
|
||||
.greySpinner{
|
||||
@include valo-spinner($size: $v-font-size--small,$color: $grey-color);
|
||||
pointer-events: auto !important;
|
||||
}
|
||||
|
||||
.yellowSpinner{
|
||||
@include valo-spinner($size: $v-font-size--small,$color: $signal-yellow-color);
|
||||
pointer-events: auto !important;
|
||||
}
|
||||
.blueSpinner{
|
||||
@include valo-spinner($size: $v-font-size--small,$color: $bosch-color-light-blue);
|
||||
pointer-events: auto !important;
|
||||
}
|
||||
|
||||
// Disabled row style when distribution is incomplete
|
||||
.v-table-row-incomplete-distribution {
|
||||
color: $disabled-row-color-grey !important;
|
||||
}
|
||||
.v-table-row-incomplete-distribution {
|
||||
color: $disabled-row-color-grey !important;
|
||||
}
|
||||
|
||||
.v-link {
|
||||
text-decoration: none;
|
||||
padding-right: 10px;
|
||||
font-weight: 300;
|
||||
}
|
||||
.v-link {
|
||||
text-decoration: none;
|
||||
padding-right: 10px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.v-tooltip{
|
||||
max-width:43em;
|
||||
}
|
||||
.v-tooltip{
|
||||
max-width:43em;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
*
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*/
|
||||
@mixin rollout {
|
||||
.rollout-option-group{
|
||||
font-size:12px;
|
||||
font-weight:400;
|
||||
margin-left:8px;
|
||||
}
|
||||
|
||||
.rollout-action-type-layout {
|
||||
.v-caption-padding-right-style{
|
||||
padding-right:0px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.v-context-menu .v-context-menu-item-basic-icon-container{
|
||||
height:0px !important;
|
||||
width:0px !important;
|
||||
}
|
||||
|
||||
.v-context-menu, .v-context-menu .v-context-menu-item-basic{
|
||||
background-color: #feffff !important;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.v-context-menu .v-context-menu-item-basic:focus, .v-context-menu .v-context-menu-item-basic-submenu:focus, .v-context-menu .v-context-menu-item-basic-open {
|
||||
@include valo-gradient($color: $hawkbit-primary-color);
|
||||
background-color: $hawkbit-primary-color !important;
|
||||
color: #e8eef3;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.disable-action-type-layout{
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.rollout-caption-links{
|
||||
font-weight: 400;
|
||||
height: 25px ;
|
||||
padding: 0px 4px ;
|
||||
}
|
||||
|
||||
.rollout-target-count-message{
|
||||
color: $info-message-color-grey;
|
||||
}
|
||||
|
||||
.rollout-table{
|
||||
.v-table-cell-wrapper {
|
||||
cursor: default;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
/**
|
||||
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||
*
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*/
|
||||
@mixin statusprogressbar {
|
||||
.alump-dbar {
|
||||
.status-bar-part-scheduled {
|
||||
background-color: $progress-bar-scheduled-part !important;
|
||||
}
|
||||
|
||||
.status-bar-part-running {
|
||||
background-color: $progress-bar-running-part !important;
|
||||
}
|
||||
|
||||
.status-bar-part-error {
|
||||
background-color: $progress-bar-error-part !important;
|
||||
}
|
||||
|
||||
.status-bar-part-finished {
|
||||
background-color: $progress-bar-finished-part !important;
|
||||
}
|
||||
|
||||
.status-bar-part-cancelled {
|
||||
background-color: $progress-bar-cancelled-part !important;
|
||||
}
|
||||
|
||||
.status-bar-part-notstarted {
|
||||
background-color: $progress-bar-notstarted-part !important;
|
||||
}
|
||||
|
||||
.alump-dbar-left {
|
||||
padding: 3px 0px 3px 0px !important;
|
||||
}
|
||||
|
||||
.alump-dbar-middle {
|
||||
padding: 3px 0px 3px 0px !important;
|
||||
}
|
||||
|
||||
.alump-dbar-right {
|
||||
padding: 3px 0px 3px 0px !important;
|
||||
}
|
||||
|
||||
.alump-dbar-only {
|
||||
padding: 3px 0px 3px 0px !important;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
&.alump-dbar-tooltip {
|
||||
background-color: rgba(27, 54, 73, 0.9);
|
||||
border-radius: 3px;
|
||||
color: white;
|
||||
z-index: 100;
|
||||
padding: 3px;
|
||||
font-size: 10px;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
|
||||
-webkit-box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
//Table header - filter text field style
|
||||
.filter-box {
|
||||
height: 21px !important;
|
||||
height: 25px !important;
|
||||
transition: width .5s ease-in-out;
|
||||
float: right;
|
||||
border-radius: $v-border-radius;
|
||||
|
||||
@@ -54,6 +54,9 @@ $v-table-border-color: $widget-border-color;
|
||||
@import 'customstyles/footer-common';
|
||||
@import 'customstyles/popup-common';
|
||||
@import 'customstyles/target-filter-query';
|
||||
@import 'customstyles/statusprogressbar';
|
||||
@import 'customstyles/rollout';
|
||||
|
||||
|
||||
// Optimize the CSS output
|
||||
$v-included-components: remove($v-included-components, calendar);
|
||||
@@ -88,7 +91,10 @@ $v-included-components: remove($v-included-components, form);
|
||||
@include popup-common;
|
||||
@include valo-menu-responsive;
|
||||
@include target-filter-query;
|
||||
|
||||
@include statusprogressbar;
|
||||
@include rollout;
|
||||
|
||||
|
||||
.v-app-loading {
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
background-image: $app-background-image, linear-gradient(to bottom, $app-background-image-gradient);
|
||||
@@ -120,5 +126,4 @@ $v-included-components: remove($v-included-components, form);
|
||||
left: 50%;
|
||||
margin-left: -20px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,9 +8,11 @@
|
||||
*/
|
||||
@import "customstyles/hawkbitvariables";
|
||||
@import "../hawkbit/hawkbittheme";
|
||||
@import "../hawkbit/addons";
|
||||
|
||||
/* This file prefixes all rules with the theme name to avoid causing conflicts with other themes. */
|
||||
/* The actual styles should be defined in testvalothemedemo.scss */
|
||||
.hawkbit {
|
||||
@include addons;
|
||||
@include hawkbittheme;
|
||||
}
|
||||
|
||||
@@ -123,10 +123,10 @@ label.combobox.type = Select Type
|
||||
label.combobox.tag = Select Tag
|
||||
label.choose.tag = Choose Tag to update
|
||||
label.choose.tag.color = Choose Tag Color
|
||||
label.filter = Filter:
|
||||
label.target.filter.count = Total Targets:
|
||||
label.filter.selected = Selected:
|
||||
label.filter.shown = Shown:
|
||||
label.filter = Filter :
|
||||
label.target.filter.count = Total Targets :
|
||||
label.filter.selected = Selected :
|
||||
label.filter.shown = Shown :
|
||||
label.filter.targets = Filtered targets :
|
||||
label.filter.status = Status,
|
||||
label.filter.tags = Tags,
|
||||
@@ -419,6 +419,10 @@ header.assigned.ds = Assigned DS
|
||||
header.installed.ds = Installed DS
|
||||
header.target.status = Status
|
||||
header.target.tags = Tags
|
||||
header.distributionset = Distribution set
|
||||
header.numberofgroups = No. of groups
|
||||
header.detail.status = Detail status
|
||||
header.total.targets = Total targets
|
||||
|
||||
distribution.details.header = Distribution set
|
||||
target.details.header = Target
|
||||
@@ -433,5 +437,42 @@ combo.type.tag.name = Type tag name
|
||||
label.yes = Yes
|
||||
label.no = No
|
||||
|
||||
#rollout - start
|
||||
header.distributionset = Distribution set
|
||||
header.numberofgroups = No. of groups
|
||||
header.detail.status = Detail status
|
||||
|
||||
header.rolloutgroup.installed.percentage = % Finished
|
||||
header.rolloutgroup.threshold.error = Error threshold
|
||||
header.rolloutgroup.threshold = Trigger threshold
|
||||
header.rolloutgroup.target.date = Date and time
|
||||
header.rolloutgroup.target.message = Messages
|
||||
rollout.group.label.target.truncated = {0} targets has been truncated in the list due the target size limit of {1}
|
||||
|
||||
|
||||
prompt.number.of.groups = Number of groups
|
||||
prompt.tigger.thresold = Trigger threshold
|
||||
prompt.error.threshold = Error threshold
|
||||
prompt.distribution.set = Distribution set
|
||||
caption.configure.rollout = Configure rollout
|
||||
caption.update.rollout = Update rollout
|
||||
prompt.target.filter = Custom target filter
|
||||
message.rollout.nonzero.group.number = Number of groups must be greater than zero
|
||||
message.rollout.max.group.number = Number of groups must not be greater than 500
|
||||
message.rollout.duplicate.check = Rollout [ {0} ] must be unique, entered value already exists.
|
||||
message.correct.invalid.value = Please correct invalid values
|
||||
message.enter.number = Please enter number
|
||||
message.rollout.field.value.range = Value should be in range {0} to {1}
|
||||
message.rollout.started = Rollout {0} started successfully
|
||||
message.rollout.paused = Rollout {0} paused successfully
|
||||
message.rollout.resumed = Rollout {0} resumed successfully
|
||||
message.rollout.noofgroups.or.targetfilter.missing = Please enter number of groups and select target filter
|
||||
message.rollouts = Rollouts
|
||||
label.target.per.group = Targets per group :
|
||||
message.dist.already.assigned = Distribution {0} is already assigned to target
|
||||
message.error.creating.rollout = Server error. Error creating rollout. Please contact the administrator
|
||||
message.error.starting.rollout = Server error. Error starting rollout. Please contact the administrator
|
||||
#rollout - end
|
||||
|
||||
#Menu
|
||||
menu.title = Software Provisioning
|
||||
|
||||
@@ -122,10 +122,10 @@ label.combobox.type = Select Type
|
||||
label.combobox.tag = Select Tag
|
||||
label.choose.tag = Choose Tag to update
|
||||
label.choose.tag.color = Choose Tag Color
|
||||
label.filter = Filter:
|
||||
label.target.filter.count = Total Targets:
|
||||
label.filter.selected = Selected:
|
||||
label.filter.shown = Shown:
|
||||
label.filter = Filter :
|
||||
label.target.filter.count = Total Targets :
|
||||
label.filter.selected = Selected :
|
||||
label.filter.shown = Shown :
|
||||
label.filter.status = Status,
|
||||
label.filter.tags = Tags,
|
||||
label.filter.text = Search Text
|
||||
@@ -142,6 +142,7 @@ label.cancelled = Cancelled
|
||||
label.cancelling = Canceling
|
||||
label.retrieved = Retrieved
|
||||
label.download = Downloading
|
||||
label.scheduled = Scheduled
|
||||
label.target.id = Controller Id :
|
||||
label.target.ip = Controller IP :
|
||||
label.target.security.token = Security token :
|
||||
@@ -405,6 +406,24 @@ header.createdBy = Created By
|
||||
header.createdDate = Created Date
|
||||
header.modifiedBy = Modified By
|
||||
header.modifiedDate = Modified Date
|
||||
header.delete = Delete
|
||||
header.assigned.ds = Assigned DS
|
||||
header.installed.ds = Installed DS
|
||||
header.status = Status
|
||||
header.target.tags = Tags
|
||||
header.distributionset = Distribution set
|
||||
header.numberofgroups = No. of groups
|
||||
header.detail.status = Detail status
|
||||
header.total.targets = Total targets
|
||||
|
||||
header.rolloutgroup.installed.percentage = % Finished
|
||||
header.rolloutgroup.threshold.error = Error threshold
|
||||
header.rolloutgroup.threshold = Trigger threshold
|
||||
|
||||
header.rolloutgroup.target.date = Date and time
|
||||
header.rolloutgroup.target.message = Messages
|
||||
|
||||
rollout.group.label.target.truncated = {0} targets has been truncated in the list due the target size limit of {1}
|
||||
|
||||
distribution.details.header = Distribution set
|
||||
target.details.header = Target
|
||||
@@ -422,3 +441,28 @@ label.no =No
|
||||
|
||||
#Menu
|
||||
menu.title = Software Provisioning
|
||||
|
||||
|
||||
#Rollout management
|
||||
prompt.number.of.groups = Number of groups
|
||||
prompt.tigger.thresold = Trigger threshold
|
||||
prompt.error.threshold = Error threshold
|
||||
prompt.distribution.set = Distribution set
|
||||
caption.configure.rollout = Configure rollout
|
||||
caption.update.rollout = Update rollout
|
||||
prompt.target.filter = Custom target filter
|
||||
message.rollout.nonzero.group.number = Number of groups must be greater than zero
|
||||
message.rollout.max.group.number = Number of groups must not be greater than 500
|
||||
message.rollout.duplicate.check = Rollout [ {0} ] must be unique, entered value already exists.
|
||||
message.rollout.field.value.range = Value should be in range {0} to {1}
|
||||
message.correct.invalid.value = Please correct invalid values
|
||||
message.enter.number = Please enter number
|
||||
message.rollout.started = Rollout {0} started successfully
|
||||
message.rollout.paused = Rollout {0} paused successfully
|
||||
message.rollout.resumed = Rollout {0} resumed successfully
|
||||
message.rollout.noofgroups.or.targetfilter.missing = Please enter number of groups and select target filter
|
||||
message.rollouts = Rollouts
|
||||
label.target.per.group = Targets per group :
|
||||
message.dist.already.assigned = Distribution {0} is already assigned to target
|
||||
message.error.creating.rollout = Server error. Error creating rollout. Please contact the administrator
|
||||
message.error.starting.rollout = Server error. Error starting rollout. Please contact the administrator
|
||||
|
||||
@@ -82,8 +82,7 @@ caption.attributes = Attributes
|
||||
caption.panel.dist.installed = Installed distribution set
|
||||
caption.panel.dist.assigned = Assigned distribution set
|
||||
caption.soft.delete.confirmbox = Confirm Software Module Delete Action
|
||||
caption.cancel.action.confirmbox = Confirm action cancel
|
||||
caption.forcequit.action.confirmbox = Confirm force quit action
|
||||
caption.cancel.action.confirmbox = Confirm action cancellation
|
||||
caption.forced.datefield = Force update at time
|
||||
caption.force.action.confirmbox = Confirm Force Active Action
|
||||
|
||||
@@ -123,17 +122,16 @@ label.combobox.type = Select Type
|
||||
label.combobox.tag = Select Tag
|
||||
label.choose.tag = Choose Tag to update
|
||||
label.choose.tag.color = Choose Tag Color
|
||||
label.filter = Filter:
|
||||
label.target.filter.count = Total Targets:
|
||||
label.filter.selected = Selected:
|
||||
label.filter.shown = Shown:
|
||||
label.filter.targets = Filtered targets :
|
||||
label.filter = Filter :
|
||||
label.target.filter.count = Total Targets :
|
||||
label.filter.selected = Selected :
|
||||
label.filter.shown = Shown :
|
||||
label.filter.status = Status,
|
||||
label.filter.tags = Tags,
|
||||
label.filter.text = Search Text
|
||||
label.filter.dist = Distribution,
|
||||
label.filter.custom = Custom
|
||||
label.target.filter.truncated={0} targets has been truncated in the list due the target size limit of {1}, use filters to reduce the targets to be shown
|
||||
label.target.filter.truncated={0} targets has been truncated in the list due the target size limit of {1}, use filters to reduce the targets to be shown
|
||||
label.active =Active
|
||||
label.inactive = In-active
|
||||
label.finished = Finished
|
||||
@@ -144,7 +142,7 @@ label.cancelled = Cancelled
|
||||
label.cancelling = Canceling
|
||||
label.retrieved = Retrieved
|
||||
label.download = Downloading
|
||||
label.unknown = Unknown
|
||||
label.scheduled = Scheduled
|
||||
label.target.id = Controller Id :
|
||||
label.target.ip = Controller IP :
|
||||
label.target.security.token = Security token :
|
||||
@@ -210,10 +208,8 @@ message.target.assigned.pending = Some target(s) are already assigned.Pending f
|
||||
message.cannot.delete = Cannot be deleted
|
||||
message.check.softwaremodule = Please provide both name and verion!
|
||||
message.duplicate.softwaremodule = {0} : {1} already exists!
|
||||
message.cannot.delete.default.dstype = Default distribution set type cannot be deleted
|
||||
message.tag.delete = Please unclick the tag {0}, then try to delete
|
||||
message.dist.type.check.delete = Please unclick the distribution type {0}, then try to delete
|
||||
message.cannot.delete.default.dstype = Default distribution set type cannot be deleted
|
||||
message.swmodule.type.check.delete = Please unclick the software module type {0}, then try to delete
|
||||
message.targets.already.deleted = Few Target(s) are already deleted.Pending for action
|
||||
message.dists.already.deleted = Few distribution(s) are already deleted.Pending for action
|
||||
@@ -260,7 +256,7 @@ message.sm.delete.confirm = Are you sure that you want to delete the selected {0
|
||||
message.error.os.softmodule = Please select the OS to delete
|
||||
message.error.ah.softmodule = Please select the Application to delete
|
||||
message.error.softmodule.deleted = The selected software module is already deleted
|
||||
message.cancel.action = Cancel..
|
||||
message.cancel.action = Cancel
|
||||
message.cancel.action.success = Action cancelled successfully !
|
||||
message.cancel.action.failed = Unable to cancel the action !
|
||||
message.cancel.action.confirm = Are you sure that you want to cancel this action?
|
||||
@@ -269,10 +265,6 @@ message.dist.alreadyAssigned = {0} Distribution Set(s) were already assigned
|
||||
message.force.action = Force
|
||||
message.force.action.confirm = Are you sure that you want to force this action?
|
||||
message.force.action.success = Action forced successfully !
|
||||
message.forcequit.action = Force Quit..
|
||||
message.forcequit.action.success = Action has been force quit successfully !
|
||||
message.forcequit.action.failed = Force Quitting the action is not possible !
|
||||
message.forcequit.action.confirm = Attention!\nForce quit should only be used when the assignment action is not working properly.\nForce quitting an action has no effect on the connected target. It is just resetting \nthe data stored on the SP update server. \nAre you absolutely sure that you want to force quit this action?
|
||||
message.distribution.no.update = distribution {0} set is already assigned to targets and cannot be changed
|
||||
message.action.not.allowed = Action not allowed
|
||||
message.onlyone.distribution.assigned = Only one distribution set can be assigned
|
||||
@@ -286,15 +278,13 @@ message.type.delete = Please unclick the distribution type {0}, then try to dele
|
||||
message.error.dist.set.type.update= Distribution Set Type is already assigned to targets and cannot be changed
|
||||
message.target.ds.assign.success = Assignments saved successfully !
|
||||
message.no.directory.upload = Directory upload is not supported
|
||||
|
||||
message.delete.filter.confirm = Are you sure that you want to delete custom filter?
|
||||
message.delete.filter.success = Custom filter {0} deleted Successfully!
|
||||
message.create.filter.success = Custom filter {0} created Successfully!
|
||||
message.update.filter.success = Custom filter updated Successfully!
|
||||
message.target.filter.validation = Please enter name and query
|
||||
message.target.filter.duplicate = {0} already exists, please enter another value
|
||||
message.tag.use.bulk.upload = {0} cannot be deleted .It is in use in targets bulk upload
|
||||
message.bulk.upload.tag.assignment.failed = Tag {0} assignment failed as tag no longer exists
|
||||
message.bulk.upload.tag.assignments.failed= Few tag assignments failed as tags no longer exists
|
||||
|
||||
# action info
|
||||
action.target.table.selectall = Select all (Ctrl+A)
|
||||
@@ -317,8 +307,6 @@ message.swModule.deleted = {0} Software module(s) deleted
|
||||
message.upload.failed = Streaming Failed
|
||||
message.uploadedfile.size.exceeded = File size exceeded .Allowed size {0} bytes
|
||||
message.file.not.found = File not found
|
||||
message.artifact.deleted =Artifact with file {0} deleted successfully
|
||||
|
||||
|
||||
upload.swModuleTable.header = Software module
|
||||
upload.selectedfile.name = file selected for upload
|
||||
@@ -344,13 +332,9 @@ caption.tab.description = Description
|
||||
|
||||
caption.delete.artifact.confirmbox = Confirm Artifact Delete Action
|
||||
|
||||
custom.filter.name = Filter Name
|
||||
custom.filter.created.by = Created By
|
||||
custom.created.date = Created Date
|
||||
|
||||
#Manage distributions view
|
||||
label.drop.dist.delete.area = Drop here<br>to delete
|
||||
label.no.tag.assigned = NO TAG
|
||||
caption.assign.software.dist.accordion.tab = Assign Software Modules
|
||||
message.software.assignment = {0} Software Module(s) Assignment(s) done
|
||||
message.dist.inuse = {0} Distribution is already assigned to target
|
||||
@@ -362,8 +346,6 @@ message.sw.module.type.delete = {0} Software Module Type(s) deleted successfully
|
||||
message.dist.type.discard.success = All Distribution Types are discarded successfully !
|
||||
message.dist.discard.success = All Distributions are discarded successfully !
|
||||
message.assign.discard.success = All assignments are discarded successfully !
|
||||
message.bulk.upload.assignment.failed = Distribution set assignment failed as distribution set no longer exists!
|
||||
message.target.ds.assign.success = Assignments saved successfully !
|
||||
|
||||
# Login view
|
||||
notification.login.title=Welcome to Bosch IoT Software Provisioning.
|
||||
@@ -418,21 +400,57 @@ header.modifiedDate = Modified Date
|
||||
header.delete = Delete
|
||||
header.assigned.ds = Assigned DS
|
||||
header.installed.ds = Installed DS
|
||||
header.target.status = Status
|
||||
header.status = Status
|
||||
header.target.tags = Tags
|
||||
header.distributionset = Distribution set
|
||||
header.numberofgroups = No. of groups
|
||||
header.detail.status = Detail status
|
||||
header.total.targets = Total targets
|
||||
|
||||
header.rolloutgroup.installed.percentage = % Finished
|
||||
header.rolloutgroup.threshold.error = Error threshold
|
||||
header.rolloutgroup.threshold = Trigger threshold
|
||||
|
||||
header.rolloutgroup.target.date = Date and time
|
||||
header.rolloutgroup.target.message = Messages
|
||||
|
||||
rollout.group.label.target.truncated = {0} targets has been truncated in the list due the target size limit of {1}
|
||||
|
||||
distribution.details.header = Distribution set
|
||||
target.details.header = Target
|
||||
header.caption.mandatory = Mandatory
|
||||
header.caption.typename = SoftwareModuleType
|
||||
header.caption.softwaremodule = SoftwareModule
|
||||
header.caption.unassign = Unassign
|
||||
message.sw.unassigned = Software module {0} successfully unassigned
|
||||
header.caption.upload.details = Upload details
|
||||
combo.type.tag.name = Type tag name
|
||||
|
||||
label.yes = Yes
|
||||
label.no = No
|
||||
label.no =No
|
||||
|
||||
#Menu
|
||||
menu.title = Software Provisioning
|
||||
|
||||
|
||||
#Rollout management
|
||||
prompt.number.of.groups = Number of groups
|
||||
prompt.tigger.thresold = Trigger threshold
|
||||
prompt.error.threshold = Error threshold
|
||||
prompt.distribution.set = Distribution set
|
||||
caption.configure.rollout = Configure rollout
|
||||
caption.update.rollout = Update rollout
|
||||
prompt.target.filter = Custom target filter
|
||||
message.rollout.nonzero.group.number = Number of groups must be greater than zero
|
||||
message.rollout.max.group.number = Number of groups must not be greater than 500
|
||||
message.rollout.duplicate.check = Rollout [ {0} ] must be unique, entered value already exists.
|
||||
message.correct.invalid.value = Please correct invalid values
|
||||
message.enter.number = Please enter number
|
||||
message.rollout.field.value.range = Value should be in range {0} to {1}
|
||||
message.rollout.started = Rollout {0} started successfully
|
||||
message.rollout.paused = Rollout {0} paused successfully
|
||||
message.rollout.resumed = Rollout {0} resumed successfully
|
||||
message.rollout.noofgroups.or.targetfilter.missing = Please enter number of groups and select target filter
|
||||
message.rollouts = Rollouts
|
||||
label.target.per.group = Targets per group :
|
||||
message.dist.already.assigned = Distribution {0} is already assigned to target
|
||||
message.error.creating.rollout = Server error. Error creating rollout. Please contact the administrator
|
||||
message.error.starting.rollout = Server error. Error starting rollout. Please contact the administrator
|
||||
Reference in New Issue
Block a user