modules/core/domain/src/main/java/org/rhq/core/domain/authz/Permission.java
| 22 -
modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceTypeCriteria.java
| 5
modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
| 6
modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/ResourceComposite.java
| 8
modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/ResourcePermission.java
| 10
modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/composite/ResourceGroupComposite.java
| 5
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsEditor.java
| 143 ++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftConfigurationEditView.java
| 45 +--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftConfigurationView.java
| 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/AbstractDriftAddConfigWizard.java
| 105 +++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/DriftAddConfigWizard.java
| 125 ++++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/DriftAddConfigWizardConfigStep.java
| 72 ++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/DriftAddConfigWizardInfoStep.java
| 149 ++++++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ConfigurationGWTService.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/DriftGWTService.java
| 10
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ConfigurationGWTServiceImpl.java
| 37 --
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/DriftGWTServiceImpl.java
| 12
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
| 10
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
| 10
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
| 12
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
| 12
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
| 12
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
| 56 +++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java
| 13
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
| 3
25 files changed, 732 insertions(+), 159 deletions(-)
New commits:
commit c1f5d145351bd748665ad2dbdd6c6e41b89e6fe8
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue Jun 28 12:30:44 2011 -0400
Drift AddConfig Wizard Work (not fully functional)
- Remove use of ConfigurationManagerLocal.getConfiguration() for security reasons
- add DriftManagerLocal.getDriftConfiguration() as an alternative
- Launch wizard from Add button in Drift->Configuration subtab
- Add new resource perm MANAGE_DRIFT infrastructure
- Add ResourceTypeCriteria.fetchDriftConfigurationTemplates
-
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Permission.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Permission.java
index 3b15d0f..16f60dc 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Permission.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Permission.java
@@ -53,7 +53,6 @@ public enum Permission {
*/
MANAGE_SETTINGS(Target.GLOBAL), // 2
-
/* ========= Resource Permissions ========= */
/**
@@ -126,8 +125,13 @@ public enum Permission {
* Can C/U/D repositories and content sources
*/
// NOTE: This is a GLOBAL permission but defined here to maintain the ordinal
indexes
- MANAGE_REPOSITORIES(Target.GLOBAL) // 15
-
+ MANAGE_REPOSITORIES(Target.GLOBAL), // 15
+
+ /**
+ * Can C/U/D drift related entities
+ */
+ MANAGE_DRIFT(Target.RESOURCE) // 16
+
;
/**
@@ -161,12 +165,12 @@ public enum Permission {
static {
for (Permission permission : Permission.values()) {
switch (permission.getTarget()) {
- case GLOBAL:
- GLOBAL_ALL.add(permission);
- break;
- case RESOURCE:
- RESOURCE_ALL.add(permission);
- break;
+ case GLOBAL:
+ GLOBAL_ALL.add(permission);
+ break;
+ case RESOURCE:
+ RESOURCE_ALL.add(permission);
+ break;
}
}
}
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceTypeCriteria.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceTypeCriteria.java
index 6510989..719fc93 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceTypeCriteria.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceTypeCriteria.java
@@ -74,6 +74,7 @@ public class ResourceTypeCriteria extends Criteria {
private boolean fetchProductVersions;
private boolean fetchBundleType;
private boolean fetchResources;
+ private boolean fetchDriftConfigurationTemplates;
private PageOrdering sortName;
private PageOrdering sortCategory;
@@ -202,6 +203,10 @@ public class ResourceTypeCriteria extends Criteria {
this.fetchResources = fetchResources;
}
+ public void fetchDriftConfigurationTemplates(boolean
fetchDriftConfigurationTemplates) {
+ this.fetchDriftConfigurationTemplates = fetchDriftConfigurationTemplates;
+ }
+
public void addSortName(PageOrdering sortName) {
addSortField("name");
this.sortName = sortName;
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
index 25c8113..6067474 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
@@ -589,7 +589,8 @@ import org.rhq.core.domain.util.Summary;
+ " (SELECT count(p) FROM res.implicitGroups g JOIN g.roles r JOIN
r.subjects s JOIN r.permissions p WHERE s = :subject AND p = 11), " // we want
CONFIGURE_WRITE, 11
+ " (SELECT count(p) FROM res.implicitGroups g JOIN g.roles r JOIN
r.subjects s JOIN r.permissions p WHERE s = :subject AND p = 9), " // we want
MANAGE_CONTENT, 9
+ " (SELECT count(p) FROM res.implicitGroups g JOIN g.roles r JOIN
r.subjects s JOIN r.permissions p WHERE s = :subject AND p = 6), " // we want
CREATE_CHILD_RESOURCES, 6
- + " (SELECT count(p) FROM res.implicitGroups g JOIN g.roles r JOIN
r.subjects s JOIN r.permissions p WHERE s = :subject AND p = 5)) " // we want
DELETE_RESOURCES, 5
+ + " (SELECT count(p) FROM res.implicitGroups g JOIN g.roles r JOIN
r.subjects s JOIN r.permissions p WHERE s = :subject AND p = 5), " // we want
DELETE_RESOURCES, 5
+ + " (SELECT count(p) FROM res.implicitGroups g JOIN g.roles r JOIN
r.subjects s JOIN r.permissions p WHERE s = :subject AND p = 16)) " // we want
MANAGE_DRIFT, 16
+ "FROM Resource res " //
+ " LEFT JOIN res.currentAvailability a " //
+ "WHERE res.id IN (SELECT rr.id FROM Resource rr JOIN rr.implicitGroups g
JOIN g.roles r JOIN r.subjects s WHERE s = :subject)"
@@ -612,7 +613,8 @@ import org.rhq.core.domain.util.Summary;
+ " (SELECT count(p) FROM res.implicitGroups g JOIN g.roles r JOIN
r.subjects s JOIN r.permissions p WHERE s = :subject AND p = 11), " // we want
CONFIGURE_WRITE, 11
+ " (SELECT count(p) FROM res.implicitGroups g JOIN g.roles r JOIN
r.subjects s JOIN r.permissions p WHERE s = :subject AND p = 9), " // we want
MANAGE_CONTENT, 9
+ " (SELECT count(p) FROM res.implicitGroups g JOIN g.roles r JOIN
r.subjects s JOIN r.permissions p WHERE s = :subject AND p = 6), " // we want
CREATE_CHILD_RESOURCES, 6
- + " (SELECT count(p) FROM res.implicitGroups g JOIN g.roles r JOIN
r.subjects s JOIN r.permissions p WHERE s = :subject AND p = 5)) " // we want
DELETE_RESOURCES, 5
+ + " (SELECT count(p) FROM res.implicitGroups g JOIN g.roles r JOIN
r.subjects s JOIN r.permissions p WHERE s = :subject AND p = 5), " // we want
DELETE_RESOURCES, 5
+ + " (SELECT count(p) FROM res.implicitGroups g JOIN g.roles r JOIN
r.subjects s JOIN r.permissions p WHERE s = :subject AND p = 16)) " // we want
MANAGE_DRIFT, 16
+ "FROM Resource res " //
+ " LEFT JOIN res.parentResource parent " //
+ " LEFT JOIN res.currentAvailability a " //
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/ResourceComposite.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/ResourceComposite.java
index c89a0e6..94de345 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/ResourceComposite.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/ResourceComposite.java
@@ -75,11 +75,11 @@ public class ResourceComposite implements Serializable {
*/
public ResourceComposite(Resource resource, AvailabilityType availability, Number
measure, Number inventory,
Number control, Number alert, Number event, Number configureRead, Number
configureWrite, Number content,
- Number createChildResources, Number deleteResources) {
+ Number createChildResources, Number deleteResources, Number drift) {
this(resource, null, availability, new ResourcePermission(measure.intValue() >
0, inventory.intValue() > 0,
control.intValue() > 0, alert.intValue() > 0, event.intValue() > 0,
configureRead.intValue() > 0,
configureWrite.intValue() > 0, content.intValue() > 0,
createChildResources.intValue() > 0, deleteResources
- .intValue() > 0));
+ .intValue() > 0, drift.intValue() > 0));
}
/**
@@ -87,11 +87,11 @@ public class ResourceComposite implements Serializable {
*/
public ResourceComposite(Resource resource, Resource parent, AvailabilityType
availability, Number measure,
Number inventory, Number control, Number alert, Number event, Number
configureRead, Number configureWrite,
- Number content, Number createChildResources, Number deleteResources) {
+ Number content, Number createChildResources, Number deleteResources, Number
drift) {
this(resource, parent, availability, new ResourcePermission(measure.intValue()
> 0, inventory.intValue() > 0,
control.intValue() > 0, alert.intValue() > 0, event.intValue() > 0,
configureRead.intValue() > 0,
configureWrite.intValue() > 0, content.intValue() > 0,
createChildResources.intValue() > 0, deleteResources
- .intValue() > 0));
+ .intValue() > 0, drift.intValue() > 0));
}
// Private constructor that all public constructors delegate to
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/ResourcePermission.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/ResourcePermission.java
index cd7a058..5f53af5 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/ResourcePermission.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/composite/ResourcePermission.java
@@ -59,7 +59,7 @@ public class ResourcePermission implements Serializable {
boolean configureWrite, //
boolean content, //
boolean createChildResources,//
- boolean deleteResource) {
+ boolean deleteResource, boolean drift) {
this.permissions = new HashSet<Permission>();
@@ -93,8 +93,12 @@ public class ResourcePermission implements Serializable {
if (deleteResource) {
this.permissions.add(Permission.DELETE_RESOURCE);
}
+ if (drift) {
+ this.permissions.add(Permission.MANAGE_DRIFT);
+ }
}
+ @SuppressWarnings("unchecked")
public ResourcePermission(Set<Permission> permissions) {
if (permissions instanceof EnumSet) {
throw new IllegalArgumentException("EnumSet is not allowed due to GWT
Serialization issues");
@@ -119,10 +123,8 @@ public class ResourcePermission implements Serializable {
return this.permissions.contains(Permission.MANAGE_ALERTS);
}
- // TODO geta real resource perm
public boolean isDrift() {
- return true;
- //return this.permissions.contains(Permission.MANAGE_DRIFT);
+ return this.permissions.contains(Permission.MANAGE_DRIFT);
}
public boolean isEvent() {
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/composite/ResourceGroupComposite.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/composite/ResourceGroupComposite.java
index 91b7ffa..be3676a 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/composite/ResourceGroupComposite.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/composite/ResourceGroupComposite.java
@@ -79,11 +79,12 @@ public class ResourceGroupComposite implements Serializable {
public ResourceGroupComposite(Long explicitCount, Double explicitAvailability, Long
implicitCount,
Double implicitAvailability, ResourceGroup resourceGroup, Number measure, Number
inventory, Number control,
Number alert, Number event, Number configureRead, Number configureWrite, Number
content,
- Number createChildResources, Number deleteResources) {
+ Number createChildResources, Number deleteResources, Number drift) {
this(explicitCount, explicitAvailability, implicitCount, implicitAvailability,
resourceGroup, null,
new ResourcePermission(measure.intValue() > 0, inventory.intValue() >
0, control.intValue() > 0, alert
.intValue() > 0, event.intValue() > 0, configureRead.intValue()
> 0, configureWrite.intValue() > 0,
- content.intValue() > 0, createChildResources.intValue() > 0,
deleteResources.intValue() > 0));
+ content.intValue() > 0, createChildResources.intValue() > 0,
deleteResources.intValue() > 0, drift
+ .intValue() > 0));
}
public ResourceGroupComposite(Long explicitCount, Double explicitAvailability, Long
implicitCount,
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsEditor.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsEditor.java
index 29eb9c7..c2b33eb 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsEditor.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/PermissionsEditor.java
@@ -77,7 +77,7 @@ public class PermissionsEditor extends LocatableVStack {
setWidth("95%");
setHeight100();
-
+
VLayout spacer = createVerticalSpacer(13);
addMember(spacer);
@@ -138,7 +138,7 @@ public class PermissionsEditor extends LocatableVStack {
if (this.originalValue == null) {
this.originalValue = nativeArray;
}
- ListGridRecord[] permissionRecords =
convertToListGridRecordArray((JavaScriptObject)nativeArray);
+ ListGridRecord[] permissionRecords =
convertToListGridRecordArray((JavaScriptObject) nativeArray);
return RolesDataSource.toPermissionSet(permissionRecords);
}
@@ -154,34 +154,33 @@ public class PermissionsEditor extends LocatableVStack {
ListGridField descriptionField = new ListGridField("description",
MSG.common_title_description());
descriptionField.setWrap(true);
- final ListGridField authorizedField =
createAuthorizedField("authorized",
- MSG.view_adminRoles_permissions_isAuthorized(), "name", grid);
+ final ListGridField authorizedField =
createAuthorizedField("authorized", MSG
+ .view_adminRoles_permissions_isAuthorized(), "name", grid);
grid.setFields(iconField, displayNameField, authorizedField, descriptionField);
List<ListGridRecord> records = new ArrayList<ListGridRecord>();
ListGridRecord record =
createGlobalPermissionRecord(MSG.view_adminRoles_permissions_perm_manageSecurity(),
- "global/Locked", Permission.MANAGE_SECURITY,
- MSG.view_adminRoles_permissions_permDesc_manageSecurity());
+ "global/Locked", Permission.MANAGE_SECURITY,
MSG.view_adminRoles_permissions_permDesc_manageSecurity());
records.add(record);
record =
createGlobalPermissionRecord(MSG.view_adminRoles_permissions_perm_manageInventory(),
- "subsystems/inventory/Inventory", Permission.MANAGE_INVENTORY,
- MSG.view_adminRoles_permissions_permDesc_manageInventory());
+ "subsystems/inventory/Inventory", Permission.MANAGE_INVENTORY, MSG
+ .view_adminRoles_permissions_permDesc_manageInventory());
records.add(record);
record =
createGlobalPermissionRecord(MSG.view_adminRoles_permissions_perm_manageSettings(),
- "subsystems/configure/Configure", Permission.MANAGE_SETTINGS,
- MSG.view_adminRoles_permissions_permDesc_manageSettings());
+ "subsystems/configure/Configure", Permission.MANAGE_SETTINGS, MSG
+ .view_adminRoles_permissions_permDesc_manageSettings());
records.add(record);
record =
createGlobalPermissionRecord(MSG.view_adminRoles_permissions_perm_manageBundles(),
- "subsystems/bundle/Bundle", Permission.MANAGE_BUNDLE,
- MSG.view_adminRoles_permissions_permDesc_manageBundles());
+ "subsystems/bundle/Bundle", Permission.MANAGE_BUNDLE, MSG
+ .view_adminRoles_permissions_permDesc_manageBundles());
records.add(record);
record =
createGlobalPermissionRecord(MSG.view_adminRoles_permissions_perm_manageRepositories(),
- "subsystems/content/Content", Permission.MANAGE_REPOSITORIES,
- MSG.view_adminRoles_permissions_permDesc_manageRepositories());
+ "subsystems/content/Content", Permission.MANAGE_REPOSITORIES, MSG
+ .view_adminRoles_permissions_permDesc_manageRepositories());
records.add(record);
-
+
grid.setData(records.toArray(new ListGridRecord[records.size()]));
return grid;
@@ -208,75 +207,63 @@ public class PermissionsEditor extends LocatableVStack {
List<ListGridRecord> records = new ArrayList<ListGridRecord>();
ListGridRecord record =
createResourcePermissionRecord(MSG.view_adminRoles_permissions_perm_inventory(),
- "subsystems/inventory/Inventory",
- Permission.VIEW_RESOURCE,
- MSG.view_adminRoles_permissions_permReadDesc_inventory(),
- Permission.MODIFY_RESOURCE,
- MSG.view_adminRoles_permissions_permWriteDesc_inventory());
+ "subsystems/inventory/Inventory", Permission.VIEW_RESOURCE, MSG
+ .view_adminRoles_permissions_permReadDesc_inventory(),
Permission.MODIFY_RESOURCE, MSG
+ .view_adminRoles_permissions_permWriteDesc_inventory());
records.add(record);
record =
createResourcePermissionRecord(MSG.view_adminRoles_permissions_perm_manageMeasurements(),
- "subsystems/monitor/Monitor",
- Permission.VIEW_RESOURCE,
- MSG.view_adminRoles_permissions_permReadDesc_manageMeasurements(),
- Permission.MANAGE_MEASUREMENTS,
- MSG.view_adminRoles_permissions_permWriteDesc_manageMeasurements());
+ "subsystems/monitor/Monitor", Permission.VIEW_RESOURCE, MSG
+ .view_adminRoles_permissions_permReadDesc_manageMeasurements(),
Permission.MANAGE_MEASUREMENTS, MSG
+ .view_adminRoles_permissions_permWriteDesc_manageMeasurements());
records.add(record);
record =
createResourcePermissionRecord(MSG.view_adminRoles_permissions_perm_manageAlerts(),
- "subsystems/alert/Alerts",
- Permission.VIEW_RESOURCE,
- MSG.view_adminRoles_permissions_permReadDesc_manageAlerts(),
- Permission.MANAGE_ALERTS,
- MSG.view_adminRoles_permissions_permWriteDesc_manageAlerts());
+ "subsystems/alert/Alerts", Permission.VIEW_RESOURCE, MSG
+ .view_adminRoles_permissions_permReadDesc_manageAlerts(),
Permission.MANAGE_ALERTS, MSG
+ .view_adminRoles_permissions_permWriteDesc_manageAlerts());
records.add(record);
record =
createResourcePermissionRecord(MSG.view_adminRoles_permissions_perm_configure(),
- "subsystems/configure/Configure",
- Permission.CONFIGURE_READ,
- MSG.view_adminRoles_permissions_permReadDesc_configure(),
- Permission.CONFIGURE_WRITE,
- MSG.view_adminRoles_permissions_permWriteDesc_configure());
+ "subsystems/configure/Configure", Permission.CONFIGURE_READ, MSG
+ .view_adminRoles_permissions_permReadDesc_configure(),
Permission.CONFIGURE_WRITE, MSG
+ .view_adminRoles_permissions_permWriteDesc_configure());
records.add(record);
record =
createResourcePermissionRecord(MSG.view_adminRoles_permissions_perm_control(),
- "subsystems/control/Operation",
- Permission.VIEW_RESOURCE,
- MSG.view_adminRoles_permissions_permReadDesc_control(),
- Permission.CONTROL,
- MSG.view_adminRoles_permissions_permWriteDesc_control());
+ "subsystems/control/Operation", Permission.VIEW_RESOURCE, MSG
+ .view_adminRoles_permissions_permReadDesc_control(), Permission.CONTROL,
MSG
+ .view_adminRoles_permissions_permWriteDesc_control());
records.add(record);
record =
createResourcePermissionRecord(MSG.view_adminRoles_permissions_perm_manageEvents(),
- "subsystems/event/Events",
- Permission.VIEW_RESOURCE,
- MSG.view_adminRoles_permissions_permReadDesc_manageEvents(),
- Permission.MANAGE_EVENTS,
- MSG.view_adminRoles_permissions_permWriteDesc_manageEvents());
+ "subsystems/event/Events", Permission.VIEW_RESOURCE, MSG
+ .view_adminRoles_permissions_permReadDesc_manageEvents(),
Permission.MANAGE_EVENTS, MSG
+ .view_adminRoles_permissions_permWriteDesc_manageEvents());
records.add(record);
record =
createResourcePermissionRecord(MSG.view_adminRoles_permissions_perm_manageContent(),
- "subsystems/content/Content",
- Permission.VIEW_RESOURCE,
- MSG.view_adminRoles_permissions_permReadDesc_manageContent(),
- Permission.MANAGE_CONTENT,
- MSG.view_adminRoles_permissions_permWriteDesc_manageContent());
+ "subsystems/content/Content", Permission.VIEW_RESOURCE, MSG
+ .view_adminRoles_permissions_permReadDesc_manageContent(),
Permission.MANAGE_CONTENT, MSG
+ .view_adminRoles_permissions_permWriteDesc_manageContent());
records.add(record);
record =
createResourcePermissionRecord(MSG.view_adminRoles_permissions_perm_createChildResources(),
- "subsystems/inventory/Inventory",
- Permission.VIEW_RESOURCE,
- MSG.view_adminRoles_permissions_permReadDesc_createChildResources(),
- Permission.CREATE_CHILD_RESOURCES,
+ "subsystems/inventory/Inventory", Permission.VIEW_RESOURCE, MSG
+ .view_adminRoles_permissions_permReadDesc_createChildResources(),
Permission.CREATE_CHILD_RESOURCES,
MSG.view_adminRoles_permissions_permWriteDesc_createChildResources());
records.add(record);
record =
createResourcePermissionRecord(MSG.view_adminRoles_permissions_perm_deleteChildResources(),
- "subsystems/inventory/Inventory",
- Permission.VIEW_RESOURCE,
- MSG.view_adminRoles_permissions_permReadDesc_deleteChildResources(),
- Permission.DELETE_RESOURCE,
- MSG.view_adminRoles_permissions_permWriteDesc_deleteChildResources());
+ "subsystems/inventory/Inventory", Permission.VIEW_RESOURCE, MSG
+ .view_adminRoles_permissions_permReadDesc_deleteChildResources(),
Permission.DELETE_RESOURCE, MSG
+ .view_adminRoles_permissions_permWriteDesc_deleteChildResources());
+ records.add(record);
+
+ record =
createResourcePermissionRecord(MSG.view_adminRoles_permissions_perm_manageDrift(),
+ "subsystems/drift/Drift", Permission.VIEW_RESOURCE, MSG
+ .view_adminRoles_permissions_permReadDesc_manageDrift(),
Permission.MANAGE_DRIFT, MSG
+ .view_adminRoles_permissions_permWriteDesc_manageDrift());
records.add(record);
grid.setData(records.toArray(new ListGridRecord[records.size()]));
@@ -301,11 +288,11 @@ public class PermissionsEditor extends LocatableVStack {
grid.setAutoFitData(Autofit.BOTH);
grid.setWrapCells(true);
- grid.setFixedRecordHeights(false);
+ grid.setFixedRecordHeights(false);
return grid;
}
-
+
private ListGridField createAuthorizedField(String name, String title, final String
nameField, final ListGrid grid) {
final ListGridField authorizedField = new ListGridField(name, title, 65);
@@ -322,7 +309,7 @@ public class PermissionsEditor extends LocatableVStack {
grid.setEditEvent(ListGridEditEvent.CLICK);
CheckboxItem editor = new CheckboxItem();
authorizedField.setEditorType(editor);
- final Record[] recordBeingEdited = {null};
+ final Record[] recordBeingEdited = { null };
authorizedField.addRecordClickHandler(new RecordClickHandler() {
public void onRecordClick(RecordClickEvent event) {
recordBeingEdited[0] = event.getRecord();
@@ -330,7 +317,7 @@ public class PermissionsEditor extends LocatableVStack {
});
authorizedField.addChangedHandler(new ChangedHandler() {
public void onChanged(ChangedEvent event) {
- Boolean authorized = (Boolean)event.getValue();
+ Boolean authorized = (Boolean) event.getValue();
int recordNum = event.getRowNum();
ListGridRecord record = grid.getRecord(recordNum);
String permissionName = record.getAttribute(nameField);
@@ -339,17 +326,20 @@ public class PermissionsEditor extends LocatableVStack {
if (permission == Permission.VIEW_RESOURCE) {
String messageString =
MSG.view_adminRoles_permissions_readAccessImplied(permissionDisplayName);
handleIllegalPermissionSelection(event, messageString);
- } else if (!authorized &&
selectedPermissions.contains(Permission.MANAGE_SECURITY) &&
- permission != Permission.MANAGE_SECURITY) {
- String messageString =
MSG.view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection(permissionDisplayName);
+ } else if (!authorized &&
selectedPermissions.contains(Permission.MANAGE_SECURITY)
+ && permission != Permission.MANAGE_SECURITY) {
+ String messageString = MSG
+
.view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection(permissionDisplayName);
handleIllegalPermissionSelection(event, messageString);
- } else if (!authorized &&
selectedPermissions.contains(Permission.MANAGE_INVENTORY) &&
- permission.getTarget() == Permission.Target.RESOURCE) {
- String messageString =
MSG.view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection(permissionDisplayName);
+ } else if (!authorized &&
selectedPermissions.contains(Permission.MANAGE_INVENTORY)
+ && permission.getTarget() == Permission.Target.RESOURCE)
{
+ String messageString = MSG
+
.view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection(permissionDisplayName);
handleIllegalPermissionSelection(event, messageString);
- } else if (!authorized &&
selectedPermissions.contains(Permission.CONFIGURE_WRITE) &&
- permission == Permission.CONFIGURE_READ) {
- String messageString =
MSG.view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection(permissionDisplayName);
+ } else if (!authorized &&
selectedPermissions.contains(Permission.CONFIGURE_WRITE)
+ && permission == Permission.CONFIGURE_READ) {
+ String messageString = MSG
+
.view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection(permissionDisplayName);
handleIllegalPermissionSelection(event, messageString);
} else {
updatePermissions(authorized, permission);
@@ -359,7 +349,7 @@ public class PermissionsEditor extends LocatableVStack {
PermissionsEditor.this.roleEditView.onItemChanged();
}
}
- });
+ });
}
return authorizedField;
@@ -394,7 +384,7 @@ public class PermissionsEditor extends LocatableVStack {
messageString =
MSG.view_adminRoles_permissions_autoselecting_configureWrite_implied();
redrawRequired = true;
}
- }
+ }
} else {
this.selectedPermissions.remove(permission);
}
@@ -413,7 +403,7 @@ public class PermissionsEditor extends LocatableVStack {
}
private ListGridRecord createGlobalPermissionRecord(String displayName, String icon,
Permission globalPermission,
- String description) {
+ String description) {
ListGridRecord record = new ListGridRecord();
record.setAttribute("displayName", displayName);
record.setAttribute("icon", icon);
@@ -425,8 +415,7 @@ public class PermissionsEditor extends LocatableVStack {
}
private ListGridRecord createResourcePermissionRecord(String displayName, String
icon, Permission readPermission,
- String readDescription,
Permission writePermission,
- String writeDescription) {
+ String readDescription, Permission writePermission, String writeDescription) {
ListGridRecord record = new ListGridRecord();
record.setAttribute("displayName", displayName);
record.setAttribute("icon", icon);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftConfigurationEditView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftConfigurationEditView.java
index 3b236c8..432d9b3 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftConfigurationEditView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftConfigurationEditView.java
@@ -113,29 +113,30 @@ public class DriftConfigurationEditView extends LocatableVLayout
implements Prop
removeMember(editor);
}
- GWTServiceLookup.getConfigurationService().getConfiguration(driftConfigId, new
AsyncCallback<Configuration>() {
- @Override
- public void onSuccess(final Configuration result) {
-
- editor = new ConfigurationEditor(extendLocatorId("Editor"),
DriftConfigurationDefinition.getInstance(),
- result);
- editor.setOverflow(Overflow.AUTO);
- editor.addPropertyValueChangeListener(DriftConfigurationEditView.this);
- editor.setReadOnly(!hasWriteAccess);
- addMember(editor);
-
- saveButton.disable();
- buttonbar.setVisible(true);
- markForRedraw();
- refreshing = false;
- }
+ GWTServiceLookup.getDriftService().getDriftConfiguration(context, driftConfigId,
+ new AsyncCallback<DriftConfiguration>() {
+ @Override
+ public void onSuccess(final DriftConfiguration result) {
+
+ editor = new ConfigurationEditor(extendLocatorId("Editor"),
DriftConfigurationDefinition
+ .getInstance(), result.getConfiguration());
+ editor.setOverflow(Overflow.AUTO);
+
editor.addPropertyValueChangeListener(DriftConfigurationEditView.this);
+ editor.setReadOnly(!hasWriteAccess);
+ addMember(editor);
+
+ saveButton.disable();
+ buttonbar.setVisible(true);
+ markForRedraw();
+ refreshing = false;
+ }
- @Override
- public void onFailure(Throwable caught) {
- refreshing = false;
- CoreGUI.getErrorHandler().handleError("Failed to load
configuration.", caught);
- }
- });
+ @Override
+ public void onFailure(Throwable caught) {
+ refreshing = false;
+ CoreGUI.getErrorHandler().handleError("Failed to load
configuration.", caught);
+ }
+ });
}
private void save() {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftConfigurationView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftConfigurationView.java
index 13e5c73..b217d5b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftConfigurationView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftConfigurationView.java
@@ -43,6 +43,7 @@ import
org.rhq.enterprise.gui.coregui.client.components.table.TableActionEnablem
import org.rhq.enterprise.gui.coregui.client.components.table.TableSection;
import org.rhq.enterprise.gui.coregui.client.components.table.TimestampCellFormatter;
import org.rhq.enterprise.gui.coregui.client.components.view.ViewName;
+import org.rhq.enterprise.gui.coregui.client.drift.wizard.DriftAddConfigWizard;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.AncestryUtil;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
@@ -149,9 +150,7 @@ public class DriftConfigurationView extends
TableSection<DriftConfigurationDataS
addTableAction("Add", MSG.common_button_add(), null, new TableAction()
{
public boolean isEnabled(ListGridRecord[] selection) {
- ListGrid grid = getListGrid();
- ResultSet resultSet = (null != grid) ? grid.getResultSet() : null;
- return (hasWriteAccess && grid != null && resultSet !=
null && !resultSet.isEmpty());
+ return hasWriteAccess;
}
public void executeAction(ListGridRecord[] selection, Object actionValue) {
@@ -181,7 +180,7 @@ public class DriftConfigurationView extends
TableSection<DriftConfigurationDataS
}
void add() {
- // TODO: kick off wizard to add new drift config
+ DriftAddConfigWizard.showWizard(context);
}
void delete(ListGridRecord[] records) {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/AbstractDriftAddConfigWizard.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/AbstractDriftAddConfigWizard.java
new file mode 100644
index 0000000..0b6bca4
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/AbstractDriftAddConfigWizard.java
@@ -0,0 +1,105 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.enterprise.gui.coregui.client.drift.wizard;
+
+import org.rhq.core.domain.common.EntityContext;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.enterprise.gui.coregui.client.components.wizard.AbstractWizard;
+import org.rhq.enterprise.gui.coregui.client.components.wizard.WizardView;
+
+/**
+ * @author Jay Shaughnessy
+ */
+public abstract class AbstractDriftAddConfigWizard extends AbstractWizard {
+
+ private EntityContext context;
+ private ResourceType type;
+
+ private String newConfigName;
+ private String newConfigInterval;
+ private Configuration newStartingConfiguration;
+ private Configuration newDriftConfiguration;
+
+ private WizardView view;
+
+ public AbstractDriftAddConfigWizard(final EntityContext context, ResourceType type)
{
+ this.context = context;
+ assert context != null;
+
+ this.type = type;
+ assert type != null;
+ }
+
+ public String getSubtitle() {
+ return null;
+ }
+
+ abstract public void execute();
+
+ public void display() {
+ view = new WizardView(this);
+ view.displayDialog();
+ }
+
+ public EntityContext getEntityContext() {
+ return context;
+ }
+
+ public ResourceType getType() {
+ return type;
+ }
+
+ public String getNewConfigName() {
+ return newConfigName;
+ }
+
+ public void setNewConfigName(String newConfigName) {
+ this.newConfigName = newConfigName;
+ }
+
+ public String getNewConfigInterval() {
+ return newConfigInterval;
+ }
+
+ public void setNewConfigInterval(String newConfigInterval) {
+ this.newConfigInterval = newConfigInterval;
+ }
+
+ public Configuration getNewStartingConfiguration() {
+ return newStartingConfiguration;
+ }
+
+ public void setNewStartingConfiguration(Configuration newStartingConfiguration) {
+ this.newStartingConfiguration = newStartingConfiguration;
+ }
+
+ public Configuration getNewDriftConfiguration() {
+ return newDriftConfiguration;
+ }
+
+ public void setNewConfiguration(Configuration newDriftConfiguration) {
+ this.newDriftConfiguration = newDriftConfiguration;
+ }
+
+ public void cancel() {
+ // nothing to do
+ }
+
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/DriftAddConfigWizard.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/DriftAddConfigWizard.java
new file mode 100644
index 0000000..4fcb61f
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/DriftAddConfigWizard.java
@@ -0,0 +1,125 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.enterprise.gui.coregui.client.drift.wizard;
+
+import java.util.ArrayList;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+import org.rhq.core.domain.common.EntityContext;
+import org.rhq.core.domain.criteria.ResourceCriteria;
+import org.rhq.core.domain.criteria.ResourceTypeCriteria;
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.domain.util.PageList;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.components.wizard.WizardStep;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+
+/**
+ * @author Jay Shaughnessy
+ */
+public class DriftAddConfigWizard extends AbstractDriftAddConfigWizard {
+
+ public DriftAddConfigWizard(EntityContext context, ResourceType type) {
+
+ super(context, type);
+
+ final ArrayList<WizardStep> steps = new ArrayList<WizardStep>();
+
+ steps.add(new DriftAddConfigWizardInfoStep(DriftAddConfigWizard.this));
+ steps.add(new DriftAddConfigWizardConfigStep(DriftAddConfigWizard.this));
+
+ setSteps(steps);
+ }
+
+ public String getWindowTitle() {
+ return MSG.view_drift_wizard_addConfig_windowTitle();
+ }
+
+ public String getTitle() {
+ return MSG.view_drift_wizard_addConfig_title(getType().getName());
+ }
+
+ public String getSubtitle() {
+ return null;
+ }
+
+ public void execute() {
+ // TODO
+ }
+
+ public static void showWizard(final EntityContext context) {
+ assert context != null;
+
+ switch (context.getType()) {
+ case Resource:
+ ResourceCriteria rc = new ResourceCriteria();
+ rc.addFilterId(context.getResourceId());
+ rc.fetchResourceType(true);
+ GWTServiceLookup.getResourceService().findResourcesByCriteria(rc, new
AsyncCallback<PageList<Resource>>() {
+ public void onSuccess(PageList<Resource> result) {
+ if (result.isEmpty()) {
+ throw new IllegalArgumentException("Entity not found ["
+ context + "]");
+ }
+
+ final Resource resource = result.get(0);
+
+ // bypass type cache because this is infrequent an we don't need
to cache the
+ // drift config templates
+ ResourceTypeCriteria rtc = new ResourceTypeCriteria();
+ rtc.addFilterId(resource.getResourceType().getId());
+ rtc.fetchDriftConfigurationTemplates(true);
+
GWTServiceLookup.getResourceTypeGWTService().findResourceTypesByCriteria(rtc,
+ new AsyncCallback<PageList<ResourceType>>() {
+ public void onSuccess(PageList<ResourceType> result) {
+ if (result.isEmpty()) {
+ throw new IllegalArgumentException("Resource
Type not found ["
+ + resource.getResourceType().getId() +
"]");
+ }
+
+ DriftAddConfigWizard wizard = new
DriftAddConfigWizard(context, result.get(0));
+ wizard.startWizard();
+ }
+
+ public void onFailure(Throwable caught) {
+
CoreGUI.getErrorHandler().handleError(MSG.widget_typeTree_loadFail(), caught);
+ }
+ });
+
+ }
+
+ public void onFailure(Throwable caught) {
+
CoreGUI.getErrorHandler().handleError(MSG.view_inventory_resources_loadFailed(), caught);
+ }
+ });
+
+ break;
+
+ default:
+ throw new IllegalArgumentException("Entity Context Type not supported
[" + context + "]");
+ }
+ }
+
+ @Override
+ public void cancel() {
+ super.cancel();
+ }
+
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/DriftAddConfigWizardConfigStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/DriftAddConfigWizardConfigStep.java
new file mode 100644
index 0000000..0d8b6e0
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/DriftAddConfigWizardConfigStep.java
@@ -0,0 +1,72 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.enterprise.gui.coregui.client.drift.wizard;
+
+import com.smartgwt.client.widgets.Canvas;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.domain.drift.DriftConfigurationDefinition;
+import
org.rhq.enterprise.gui.coregui.client.components.configuration.ConfigurationEditor;
+import org.rhq.enterprise.gui.coregui.client.components.wizard.AbstractWizardStep;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.Locatable;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
+
+/**
+ * @author Jay Shaughnessy
+ */
+public class DriftAddConfigWizardConfigStep extends AbstractWizardStep {
+
+ private LocatableVLayout vLayout;
+ private ConfigurationEditor editor;
+ AbstractDriftAddConfigWizard wizard;
+
+ public DriftAddConfigWizardConfigStep(AbstractDriftAddConfigWizard wizard) {
+ this.wizard = wizard;
+ }
+
+ public Canvas getCanvas(Locatable parent) {
+ // This VLayout isn't really necessary at the moment, but provides for easier
expansion if we add more items
+ if (vLayout == null) {
+ String locatorId = (null == parent) ? "DriftConfig" :
parent.extendLocatorId("DriftConfig");
+ vLayout = new LocatableVLayout(locatorId);
+
+ ConfigurationDefinition def = DriftConfigurationDefinition.getInstance();
+ Configuration startingConfig = wizard.getNewStartingConfiguration();
+ editor = new ConfigurationEditor(vLayout.extendLocatorId("Editor"),
def, startingConfig);
+ vLayout.addMember(editor);
+ }
+
+ return vLayout;
+ }
+
+ public boolean nextPage() {
+ if (editor != null && editor.validate()) {
+ wizard.setNewConfiguration(editor.getConfiguration());
+ wizard.execute();
+ return true;
+ }
+
+ return false;
+ }
+
+ public String getName() {
+ return MSG.widget_resourceFactoryWizard_editConfigStepName();
+ }
+}
\ No newline at end of file
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/DriftAddConfigWizardInfoStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/DriftAddConfigWizardInfoStep.java
new file mode 100644
index 0000000..2d0932b
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/DriftAddConfigWizardInfoStep.java
@@ -0,0 +1,149 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.enterprise.gui.coregui.client.drift.wizard;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import com.smartgwt.client.types.Alignment;
+import com.smartgwt.client.types.TitleOrientation;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.form.fields.FormItem;
+import com.smartgwt.client.widgets.form.fields.SelectItem;
+import com.smartgwt.client.widgets.form.fields.TextItem;
+import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
+import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.definition.ConfigurationTemplate;
+import org.rhq.core.domain.drift.DriftConfigurationDefinition;
+import org.rhq.enterprise.gui.coregui.client.components.wizard.AbstractWizardStep;
+import org.rhq.enterprise.gui.coregui.client.util.FormUtility;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.Locatable;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
+
+/**
+ * @author Jay Shaughnessy
+ */
+public class DriftAddConfigWizardInfoStep extends AbstractWizardStep {
+
+ private LocatableDynamicForm form;
+ private AbstractDriftAddConfigWizard wizard;
+ private Map<String, ConfigurationTemplate> templates;
+
+ public DriftAddConfigWizardInfoStep(AbstractDriftAddConfigWizard wizard) {
+ this.wizard = wizard;
+ }
+
+ public Canvas getCanvas(Locatable parent) {
+ if (form == null) {
+
+ if (parent != null) {
+ form = new
LocatableDynamicForm(parent.extendLocatorId("DriftAddConfigInfo"));
+ } else {
+ form = new LocatableDynamicForm("DriftAddConfigInfo");
+ }
+ form.setNumCols(1);
+ List<FormItem> formItems = new ArrayList<FormItem>(2);
+
+ TextItem nameItem = new TextItem("configName",
MSG.view_drift_wizard_addConfig_namePrompt());
+ nameItem.setRequired(true);
+ nameItem.setTitleOrientation(TitleOrientation.TOP);
+ nameItem.setAlign(Alignment.LEFT);
+ nameItem.setWidth(300);
+ FormUtility.addContextualHelp(nameItem,
MSG.view_drift_wizard_addConfig_nameHelp());
+
+ nameItem.addChangedHandler(new ChangedHandler() {
+ public void onChanged(ChangedEvent event) {
+ Object value = event.getValue();
+ if (value == null) {
+ value = "";
+ }
+ wizard.setNewConfigName(value.toString());
+ }
+ });
+ formItems.add(nameItem);
+
+ SelectItem templateSelect = new SelectItem("template",
MSG.view_drift_wizard_addConfig_templatePrompt());
+ templateSelect.setTitleOrientation(TitleOrientation.TOP);
+ templateSelect.setAlign(Alignment.LEFT);
+ templateSelect.setWidth(300);
+ templateSelect.setRequired(true);
+ FormUtility.addContextualHelp(templateSelect,
MSG.view_drift_wizard_addConfig_templateHelp());
+
+ Set<ConfigurationTemplate> templates =
wizard.getType().getDriftConfigurationTemplates();
+ final HashMap<String, ConfigurationTemplate> templatesMap = new
HashMap<String, ConfigurationTemplate>(
+ templates.size() + 1);
+ if (!templates.isEmpty()) {
+ for (ConfigurationTemplate template : templates) {
+ templatesMap.put(template.getName(), template);
+ }
+ } else {
+ // TODO this should throw an error as there should be at least one
template (can remove the +1 sizing above when changing)
+ // throw new IllegalStateException( "At least one srift
configuration template should exist for the resource type" );
+ ConfigurationTemplate test = new ConfigurationTemplate("Test",
"Test");
+ Configuration config = new Configuration();
+ config.put(new PropertySimple("name", "Test"));
+ config.put(new PropertySimple("basedir",
"/TestDir"));
+ config.put(new PropertySimple("interval", "1200"));
+ test.setConfiguration(config);
+
test.setConfigurationDefinition(DriftConfigurationDefinition.getInstance());
+ templatesMap.put("TestOnly", test);
+ }
+
+ templateSelect.setValueMap(templatesMap.keySet().toArray(new
String[templatesMap.size()]));
+ templateSelect.addChangedHandler(new ChangedHandler() {
+ public void onChanged(ChangedEvent event) {
+ Object value = event.getValue();
+ if (value == null) {
+ value = "";
+ }
+
wizard.setNewStartingConfiguration(templatesMap.get(value).createConfiguration());
+ }
+ });
+
+ formItems.add(templateSelect);
+
+ form.setItems(formItems.toArray(new FormItem[formItems.size()]));
+ }
+
+ return form;
+ }
+
+ public boolean nextPage() {
+ return form.validate();
+ }
+
+ public String getName() {
+ return MSG.view_drift_wizard_addConfig_infoStepName();
+ }
+
+ public String getConfigName() {
+ return form.getValueAsString("configName");
+ }
+
+ public Configuration getStartingConfiguration() {
+ String template = form.getValueAsString("template");
+ return templates.get(template).createConfiguration();
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ConfigurationGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ConfigurationGWTService.java
index 5a649fc..5feab0a 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ConfigurationGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ConfigurationGWTService.java
@@ -88,7 +88,5 @@ public interface ConfigurationGWTService extends RemoteService {
void deleteGroupResourceConfigurationUpdate(Integer groupId, Integer[]
groupResourceConfigUpdateIds)
throws RuntimeException;
- Configuration getConfiguration(int configurationId);
-
ConfigurationDefinition getOptionValuesForConfigDefinition(ConfigurationDefinition
definition);
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/DriftGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/DriftGWTService.java
index 56f855f..b72f9cc 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/DriftGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/DriftGWTService.java
@@ -104,6 +104,16 @@ public interface DriftGWTService extends RemoteService {
PageList<Drift> findDriftsByCriteria(DriftCriteria criteria) throws
RuntimeException;
/**
+ * Get the specified drift configuration for the specified context.
+ *
+ * @param entityContext
+ * @param driftConfigId
+ * @return
+ * @throws RuntimeException
+ */
+ DriftConfiguration getDriftConfiguration(EntityContext entityContext, int
driftConfigId) throws RuntimeException;
+
+ /**
* Update the provided driftConfig (identified by name) on the specified
EntityContext. If it exists it will be replaced. If not it will
* be added. Agents, if available, will be notified of the change.
*
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ConfigurationGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ConfigurationGWTServiceImpl.java
index 77652ed..04bfdcb 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ConfigurationGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ConfigurationGWTServiceImpl.java
@@ -48,7 +48,7 @@ public class ConfigurationGWTServiceImpl extends AbstractGWTServiceImpl
implemen
throws RuntimeException {
try {
configurationManager.purgeResourceConfigurationUpdates(getSessionSubject(),
configUpdateIds,
- purgeInProgress);
+ purgeInProgress);
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
}
@@ -87,7 +87,7 @@ public class ConfigurationGWTServiceImpl extends AbstractGWTServiceImpl
implemen
public PluginConfigurationUpdate getLatestPluginConfigurationUpdate(int resourceId)
throws RuntimeException {
try {
PluginConfigurationUpdate update =
configurationManager.getLatestPluginConfigurationUpdate(
- getSessionSubject(), resourceId);
+ getSessionSubject(), resourceId);
return SerialUtility.prepare(update,
"ConfigurationService.getLatestPluginConfigurationUpdate");
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
@@ -108,7 +108,7 @@ public class ConfigurationGWTServiceImpl extends
AbstractGWTServiceImpl implemen
public ConfigurationDefinition getPluginConfigurationDefinition(int resourceTypeId)
throws RuntimeException {
try {
ConfigurationDefinition definition =
configurationManager.getPluginConfigurationDefinitionForResourceType(
- getSessionSubject(), resourceTypeId);
+ getSessionSubject(), resourceTypeId);
return SerialUtility.prepare(definition,
"ConfigurationService.getPluginConfigDefinition");
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
@@ -142,7 +142,7 @@ public class ConfigurationGWTServiceImpl extends
AbstractGWTServiceImpl implemen
Long endDate, boolean suppressOldest, PageControl pc) throws RuntimeException {
try {
PageList<ResourceConfigurationUpdate> updates =
configurationManager.findResourceConfigurationUpdates(
- getSessionSubject(), resourceId, beginDate, endDate, suppressOldest,
pc);
+ getSessionSubject(), resourceId, beginDate, endDate, suppressOldest,
pc);
if (!updates.isEmpty()) {
List<Resource> resources = new
ArrayList<Resource>(updates.size());
for (ResourceConfigurationUpdate update : updates) {
@@ -165,7 +165,7 @@ public class ConfigurationGWTServiceImpl extends
AbstractGWTServiceImpl implemen
throws RuntimeException {
try {
ResourceConfigurationUpdate update =
configurationManager.updateResourceConfiguration(getSessionSubject(),
- resourceId, configuration);
+ resourceId, configuration);
return SerialUtility.prepare(update,
"ConfigurationService.updateResourceConfiguration");
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
@@ -177,7 +177,7 @@ public class ConfigurationGWTServiceImpl extends
AbstractGWTServiceImpl implemen
throws RuntimeException {
try {
PluginConfigurationUpdate update =
configurationManager.updatePluginConfiguration(getSessionSubject(),
- resourceId, configuration);
+ resourceId, configuration);
return SerialUtility.prepare(update,
"ConfigurationService.updatePluginConfiguration");
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
@@ -323,7 +323,7 @@ public class ConfigurationGWTServiceImpl extends
AbstractGWTServiceImpl implemen
try {
Map<Integer, Configuration> configurations =
convertToMap(pluginConfigurations);
this.configurationManager.scheduleGroupPluginConfigurationUpdate(getSessionSubject(),
groupId,
- configurations);
+ configurations);
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
}
@@ -334,7 +334,7 @@ public class ConfigurationGWTServiceImpl extends
AbstractGWTServiceImpl implemen
throws RuntimeException {
try {
this.configurationManager.deleteGroupPluginConfigurationUpdates(getSessionSubject(),
groupId,
- groupPluginConfigUpdateIds);
+ groupPluginConfigUpdateIds);
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
}
@@ -345,18 +345,19 @@ public class ConfigurationGWTServiceImpl extends
AbstractGWTServiceImpl implemen
throws RuntimeException {
try {
this.configurationManager.deleteGroupResourceConfigurationUpdates(getSessionSubject(),
groupId,
- groupResourceConfigUpdateIds);
+ groupResourceConfigUpdateIds);
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
}
}
@Override
- public ConfigurationDefinition getOptionValuesForConfigDefinition(
- ConfigurationDefinition definition) throws RuntimeException {
+ public ConfigurationDefinition
getOptionValuesForConfigDefinition(ConfigurationDefinition definition)
+ throws RuntimeException {
try {
- ConfigurationDefinition def =
configurationManager.getOptionsForConfigurationDefinition(getSessionSubject(),
definition);
- return
SerialUtility.prepare(def,"ConfigurationService.getOptionValuesForPropertySimple");
+ ConfigurationDefinition def =
configurationManager.getOptionsForConfigurationDefinition(
+ getSessionSubject(), definition);
+ return SerialUtility.prepare(def,
"ConfigurationService.getOptionValuesForPropertySimple");
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
}
@@ -376,14 +377,4 @@ public class ConfigurationGWTServiceImpl extends
AbstractGWTServiceImpl implemen
}
}
- @Override
- public Configuration getConfiguration(int configurationId) throws RuntimeException {
- try {
- Configuration configuration =
configurationManager.getConfiguration(getSessionSubject(), configurationId);
- return SerialUtility.prepare(configuration,
"ConfigurationService.getConfiguration");
- } catch (Throwable t) {
- throw getExceptionToThrowToClient(t);
- }
- }
-
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/DriftGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/DriftGWTServiceImpl.java
index 714a68a..92f12cd 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/DriftGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/DriftGWTServiceImpl.java
@@ -105,6 +105,18 @@ public class DriftGWTServiceImpl extends AbstractGWTServiceImpl
implements Drift
}
@Override
+ public DriftConfiguration getDriftConfiguration(EntityContext entityContext, int
driftConfigId)
+ throws RuntimeException {
+ try {
+ DriftConfiguration driftConfig =
driftManager.getDriftConfiguration(getSessionSubject(), entityContext,
+ driftConfigId);
+ return SerialUtility.prepare(driftConfig,
"DriftService.getDriftConfiguration");
+ } catch (Throwable t) {
+ throw getExceptionToThrowToClient(t);
+ }
+ }
+
+ @Override
public void updateDriftConfiguration(EntityContext entityContext, DriftConfiguration
driftConfig) {
try {
this.driftManager.updateDriftConfiguration(getSessionSubject(),
entityContext, driftConfig);
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 6207048..d171188 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -432,6 +432,7 @@ view_adminRoles_permissions_permReadDesc_deleteChildResources =
(IMPLIED) view c
view_adminRoles_permissions_permReadDesc_inventory = (IMPLIED) view Resource properties
(name, description, version, etc.), connection settings, and connection settings history
view_adminRoles_permissions_permReadDesc_manageAlerts = (IMPLIED) view alert definitions
and alert history
view_adminRoles_permissions_permReadDesc_manageContent = (IMPLIED) view installed and
available packages; view package installation history
+view_adminRoles_permissions_permReadDesc_manageDrift = (IMPLIED) view drift
configurations and drift history
view_adminRoles_permissions_permReadDesc_manageEvents = (IMPLIED) view events
view_adminRoles_permissions_permReadDesc_manageMeasurements = (IMPLIED) view metric data
and collection schedules
view_adminRoles_permissions_permWriteDesc_configure = update Resource configuration;
delete Resource configuration revision history items
@@ -441,6 +442,7 @@ view_adminRoles_permissions_permWriteDesc_deleteChildResources =
uninventory res
view_adminRoles_permissions_permWriteDesc_inventory = update Resource name, version,
description, and connection settings; delete connection settings history items
view_adminRoles_permissions_permWriteDesc_manageAlerts = create, update, and delete alert
definitions; acknowledge and delete alert history items
view_adminRoles_permissions_permWriteDesc_manageContent = subscribe to content sources;
install and uninstall packages
+view_adminRoles_permissions_permWriteDesc_manageDrift = create, update, and delete drift
configurations; acknowledge and delete drift history items
view_adminRoles_permissions_permWriteDesc_manageEvents = delete events
view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection
schedules
view_adminRoles_permissions_perm_configure = Configure
@@ -451,6 +453,7 @@ view_adminRoles_permissions_perm_inventory = Inventory
view_adminRoles_permissions_perm_manageAlerts = Manage Alerts
view_adminRoles_permissions_perm_manageBundles = Manage Bundles
view_adminRoles_permissions_perm_manageContent = Manage Content
+view_adminRoles_permissions_perm_manageDrift = Manage Drift
view_adminRoles_permissions_perm_manageEvents = Manage Events
view_adminRoles_permissions_perm_manageInventory = Manage Inventory
view_adminRoles_permissions_perm_manageMeasurements = Manage Measurements
@@ -1123,6 +1126,13 @@ view_drift_table_newFile = New File
view_drift_table_oldFile = Old File
view_drift_table_resourceConfig = Resource Drift Configuration
view_drift_table_resourceHistory = Resource Drift History
+view_drift_wizard_addConfig_infoStepName = Provide Drift Detection Information
+view_drift_wizard_addConfig_nameHelp = A textual name briefly describing the purpose of
this drift detection configuration. Drift configuration names must be unique for a
resource.
+view_drift_wizard_addConfig_namePrompt = New Drift Configuration Name
+view_drift_wizard_addConfig_templateHelp = Each drift configuration describes a set of
files for which drift detection can be performed. The configuration can be enabled and
disabled, defines the detection interval, and specifies a base directory and optional file
filters. For each resource type offering drift detection there will be one or more
predefined templates to use a starting configuration, which can then be edited.
+view_drift_wizard_addConfig_templatePrompt = Drift Configuration Templates
+view_drift_wizard_addConfig_title = Add Drift Configuration for Resource of Type [{0}]
+view_drift_wizard_addConfig_windowTitle = Drift Add Configuration Wizard
view_dynagroup_children = DynaGroup Children
view_dynagroup_compatible = Compatible
view_dynagroup_definitionAlreadyExists = A group definition already exists with this
name
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
index eb042a5..52389a9 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
@@ -398,6 +398,7 @@ view_adminRoles_permissions_permReadDesc_deleteChildResources =
(IMPLIZIT) Ansic
view_adminRoles_permissions_permReadDesc_inventory = (IMPLIZIT) Ansehen der Eigenschaft
einer Ressource (Name, Beschreibung, Version etc.), Verbindungseinstellungen, Verlauf
derselben
view_adminRoles_permissions_permReadDesc_manageAlerts = (IMPLIZIT) Ansehen von
Alarm-Definitionen und ausgelösten Alarmen
view_adminRoles_permissions_permReadDesc_manageContent = (IMPLIZIT) Installierte und
verfügbare Pakete ansehen; Verlauf der Installation von Paketen ansehen
+##view_adminRoles_permissions_permReadDesc_manageDrift = (IMPLIED) view drift
configurations and drift history
view_adminRoles_permissions_permReadDesc_manageEvents = (IMPLIZIT) Ereignisse ansehen
view_adminRoles_permissions_permReadDesc_manageMeasurements = (IMPLIZIT) Monitoringdaten
und -zeitplan ansehen
view_adminRoles_permissions_permWriteDesc_configure = Bearbeiten der
Ressourcen-Konfiguration; Löschen einzelner Einträge im Verlauf der
Ressourcen-Konfiguration
@@ -407,6 +408,7 @@ view_adminRoles_permissions_permWriteDesc_deleteChildResources =
Löschen von Ki
view_adminRoles_permissions_permWriteDesc_inventory = Aktualisieren von Ressourcename,
Beschreibung und Verbindungseinstellungen. Löschen einzelner Einträge des Verlaufs der
Verbindungseinstellungen.
view_adminRoles_permissions_permWriteDesc_manageAlerts = Anlegen, Bearbeiten und Löschen
von Alarm-Definitionen. Bestätigen und Löschen von ausgelösten Alarmen.
view_adminRoles_permissions_permWriteDesc_manageContent = Abonnieren von Content-Quellen;
Pakete installieren und deinstallieren
+##view_adminRoles_permissions_permWriteDesc_manageDrift = create, update, and delete
alert definitions; acknowledge and delete alert history items
view_adminRoles_permissions_permWriteDesc_manageEvents = Ereignisse löschen
view_adminRoles_permissions_permWriteDesc_manageMeasurements = Zeitplan für das
Monitoring bearbeiten
view_adminRoles_permissions_perm_configure = Konfiguration
@@ -417,6 +419,7 @@ view_adminRoles_permissions_perm_inventory = Inventar
view_adminRoles_permissions_perm_manageAlerts = Alarme verwalten
view_adminRoles_permissions_perm_manageBundles = Bundles verwalten
view_adminRoles_permissions_perm_manageContent = Content verwalten
+##view_adminRoles_permissions_perm_manageDrift = Manage Drift
view_adminRoles_permissions_perm_manageEvents = Ereignisse verwalten
view_adminRoles_permissions_perm_manageInventory = Inventar verwalten
view_adminRoles_permissions_perm_manageMeasurements = Monitoring verwalten
@@ -947,6 +950,13 @@ view_dashboards_title = Dashboard
##view_drift_table_oldFile = Old File
view_drift_table_resourceConfig = Resource Drift Configuration
##view_drift_table_resourceHistory = Resource Drift History
+##view_drift_wizard_addConfig_infoStepName = Provide Drift Detection Information
+##view_drift_wizard_addConfig_nameHelp = A textual name briefly describing the purpose of
this drift detection configuration. Drift configuration names must be unique for a
resource.
+##view_drift_wizard_addConfig_namePrompt = New Drift Configuration Name
+##view_drift_wizard_addConfig_templateHelp = Each drift configuration describes a set of
files for which drift detection can be performed. The configuration can be enabled and
disabled, defines the detection interval, and specifies a base directory and optional file
filters. For each resource type offering drift detection there will be one or more
predefined templates to use a starting configuration, which can then be edited.
+##view_drift_wizard_addConfig_templatePrompt = Drift Configuration Templates
+##view_drift_wizard_addConfig_title = Add Drift Configuration for Resource of Type
[{0}]
+##view_drift_wizard_addConfig_windowTitle = Drift Add Configuration Wizard
view_dynagroup_children = DynaGroup Children~
view_dynagroup_compatible = Kompatible
view_dynagroup_definitionAlreadyExists = A group definition already exists with this
name~
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
index d814f25..134a22f 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
@@ -433,6 +433,7 @@ view_adminRoles_permissions_permReadDesc_deleteChildResources =
(IMPLIED) view c
view_adminRoles_permissions_permReadDesc_inventory = (IMPLIED) view Resource properties
(name, description, version, etc.), connection settings, and connection settings history
view_adminRoles_permissions_permReadDesc_manageAlerts = (IMPLIED) view alert definitions
and alert history
view_adminRoles_permissions_permReadDesc_manageContent = (IMPLIED) view installed and
available packages; view package installation history
+##view_adminRoles_permissions_permReadDesc_manageDrift = (IMPLIED) view drift
configurations and drift history
view_adminRoles_permissions_permReadDesc_manageEvents = (IMPLIED) view events
view_adminRoles_permissions_permReadDesc_manageMeasurements = (IMPLIED) view metric data
and collection schedules
view_adminRoles_permissions_permWriteDesc_configure = update Resource configuration;
delete Resource configuration revision history items
@@ -440,8 +441,9 @@ view_adminRoles_permissions_permWriteDesc_control = execute
operations; delete o
view_adminRoles_permissions_permWriteDesc_createChildResources = create new child
Resources (for child Resources of types that are creatable)
view_adminRoles_permissions_permWriteDesc_deleteChildResources = uninventory resources;
delete Resources (for Resources of types that are deletable)
view_adminRoles_permissions_permWriteDesc_inventory = update Resource name, version,
description, and connection settings; delete connection settings history items
-view_adminRoles_permissions_permWriteDesc_manageAlerts = create, update, and delete alert
definitions; acknowledge and delete alert history items
+##view_adminRoles_permissions_permWriteDesc_manageAlerts = create, update, and delete
alert definitions; acknowledge and delete alert history items
view_adminRoles_permissions_permWriteDesc_manageContent = subscribe to content sources;
install and uninstall packages
+##view_adminRoles_permissions_permWriteDesc_manageDrift = create, update, and delete
alert definitions; acknowledge and delete alert history items
view_adminRoles_permissions_permWriteDesc_manageEvents = delete events
view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection
schedules
view_adminRoles_permissions_perm_configure = Configure
@@ -452,6 +454,7 @@ view_adminRoles_permissions_perm_inventory = Inventory
view_adminRoles_permissions_perm_manageAlerts = Manage Alerts
view_adminRoles_permissions_perm_manageBundles = Manage Bundles
view_adminRoles_permissions_perm_manageContent = Manage Content
+##view_adminRoles_permissions_perm_manageDrift = Manage Drift
view_adminRoles_permissions_perm_manageEvents = Manage Events
view_adminRoles_permissions_perm_manageInventory = Manage Inventory
view_adminRoles_permissions_perm_manageMeasurements = Manage Measurements
@@ -1124,6 +1127,13 @@ view_dashboards_title = ダッシュボード
##view_drift_table_oldFile = Old File
view_drift_table_resourceConfig = Resource Drift Configuration
##view_drift_table_resourceHistory = Resource Drift History
+##view_drift_wizard_addConfig_infoStepName = Provide Drift Detection Information
+##view_drift_wizard_addConfig_nameHelp = A textual name briefly describing the purpose of
this drift detection configuration. Drift configuration names must be unique for a
resource.
+##view_drift_wizard_addConfig_namePrompt = New Drift Configuration Name
+##view_drift_wizard_addConfig_templateHelp = Each drift configuration describes a set of
files for which drift detection can be performed. The configuration can be enabled and
disabled, defines the detection interval, and specifies a base directory and optional file
filters. For each resource type offering drift detection there will be one or more
predefined templates to use a starting configuration, which can then be edited.
+##view_drift_wizard_addConfig_templatePrompt = Drift Configuration Templates
+##view_drift_wizard_addConfig_title = Add Drift Configuration for Resource of Type
[{0}]
+##view_drift_wizard_addConfig_windowTitle = Drift Add Configuration Wizard
view_dynagroup_children = DynaGroup Children
view_dynagroup_compatible = Compatible
view_dynagroup_definitionAlreadyExists = A group definition already exists with this
name
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
index 28585bd..88273e4 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
@@ -445,6 +445,7 @@ view_adminRoles_permissions_permReadDesc_deleteChildResources =
(IMPLIED) view c
view_adminRoles_permissions_permReadDesc_inventory = (IMPLIED) view Resource properties
(name, description, version, etc.), connection settings, and connection settings history
view_adminRoles_permissions_permReadDesc_manageAlerts = (IMPLIED) view alert definitions
and alert history
view_adminRoles_permissions_permReadDesc_manageContent = (IMPLIED) view installed and
available packages; view package installation history
+##view_adminRoles_permissions_permReadDesc_manageDrift = (IMPLIED) view drift
configurations and drift history
view_adminRoles_permissions_permReadDesc_manageEvents = (IMPLIED) view events
view_adminRoles_permissions_permReadDesc_manageMeasurements = (IMPLIED) view metric data
and collection schedules
view_adminRoles_permissions_permWriteDesc_configure = update Resource configuration;
delete Resource configuration revision history items
@@ -452,8 +453,9 @@ view_adminRoles_permissions_permWriteDesc_control = execute
operations; delete o
view_adminRoles_permissions_permWriteDesc_createChildResources = create new child
Resources (for child Resources of types that are creatable)
view_adminRoles_permissions_permWriteDesc_deleteChildResources = uninventory resources;
delete Resources (for Resources of types that are deletable)
view_adminRoles_permissions_permWriteDesc_inventory = update Resource name, version,
description, and connection settings; delete connection settings history items
-view_adminRoles_permissions_permWriteDesc_manageAlerts = create, update, and delete alert
definitions; acknowledge and delete alert history items
+##view_adminRoles_permissions_permWriteDesc_manageAlerts = create, update, and delete
alert definitions; acknowledge and delete alert history items
view_adminRoles_permissions_permWriteDesc_manageContent = subscribe to content sources;
install and uninstall packages
+##view_adminRoles_permissions_permWriteDesc_manageDrift = create, update, and delete
alert definitions; acknowledge and delete alert history items
view_adminRoles_permissions_permWriteDesc_manageEvents = delete events
view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection
schedules
view_adminRoles_permissions_perm_configure = Configurar
@@ -464,6 +466,7 @@ view_adminRoles_permissions_perm_inventory = Invent\u00E1rio
view_adminRoles_permissions_perm_manageAlerts = Gerenciar Alertas
view_adminRoles_permissions_perm_manageBundles = Gerenciar Bundles
view_adminRoles_permissions_perm_manageContent = Gerenciar Conte\u00FAdo
+##view_adminRoles_permissions_perm_manageDrift = Manage Drift
view_adminRoles_permissions_perm_manageEvents = Gerenciar Eventos
view_adminRoles_permissions_perm_manageInventory = Gerenciar Invent\u00E1rio
view_adminRoles_permissions_perm_manageMeasurements = Gerenciar M\u00E9tricas
@@ -1147,6 +1150,13 @@ view_dashboards_title = Dashboard~
##view_drift_table_oldFile = Old File
view_drift_table_resourceConfig = Resource Drift Configuration
##view_drift_table_resourceHistory = Resource Drift History
+##view_drift_wizard_addConfig_infoStepName = Provide Drift Detection Information
+##view_drift_wizard_addConfig_nameHelp = A textual name briefly describing the purpose of
this drift detection configuration. Drift configuration names must be unique for a
resource.
+##view_drift_wizard_addConfig_namePrompt = New Drift Configuration Name
+##view_drift_wizard_addConfig_templateHelp = Each drift configuration describes a set of
files for which drift detection can be performed. The configuration can be enabled and
disabled, defines the detection interval, and specifies a base directory and optional file
filters. For each resource type offering drift detection there will be one or more
predefined templates to use a starting configuration, which can then be edited.
+##view_drift_wizard_addConfig_templatePrompt = Drift Configuration Templates
+##view_drift_wizard_addConfig_title = Add Drift Configuration for Resource of Type
[{0}]
+##view_drift_wizard_addConfig_windowTitle = Drift Add Configuration Wizard
view_dynagroup_children = DynaGroup Children~
view_dynagroup_compatible = Compatible
view_dynagroup_definitionAlreadyExists = A group definition already exists with this
name~
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
index b939c99..9ff3634 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
@@ -432,6 +432,7 @@ view_adminRoles_permissions_permReadDesc_deleteChildResources =
(IMPLIED) \u67E5
view_adminRoles_permissions_permReadDesc_inventory = (IMPLIED) view Resource properties
(name, description, version, etc.), connection settings, and connection settings history
view_adminRoles_permissions_permReadDesc_manageAlerts = (IMPLIED)
\u67E5\u770B\u544A\u8B66\u5B9A\u4E49\u548C\u544A\u8B66\u5386\u53F2
view_adminRoles_permissions_permReadDesc_manageContent = (IMPLIED)
\u67E5\u770B\u5B89\u88C5\u7684\u548C\u53EF\u7528\u7684\u5305;
\u67E5\u770B\u5305\u5B89\u88C5\u5386\u53F2
+##view_adminRoles_permissions_permReadDesc_manageDrift = (IMPLIED) view drift
configurations and drift history
view_adminRoles_permissions_permReadDesc_manageEvents =
(IMPLIED)\u67E5\u770B\u4E8B\u4EF6
view_adminRoles_permissions_permReadDesc_manageMeasurements = (IMPLIED) view metric data
and collection schedules
view_adminRoles_permissions_permWriteDesc_configure =
\u66F4\u65B0\u8D44\u6E90\u914D\u7F6E; delete Resource configuration revision history
items
@@ -439,8 +440,9 @@ view_adminRoles_permissions_permWriteDesc_control =
\u6267\u884C\u64CD\u4F5C; \u
view_adminRoles_permissions_permWriteDesc_createChildResources =
\u521B\u5EFA\u65B0\u7684\u5B50\u8D44\u6E90 (for child Resources of types that are
creatable)
view_adminRoles_permissions_permWriteDesc_deleteChildResources = uninventory resources;
delete Resources (for Resources of types that are deletable)
view_adminRoles_permissions_permWriteDesc_inventory = update Resource name, version,
description, and connection settings; delete connection settings history items
-view_adminRoles_permissions_permWriteDesc_manageAlerts = create, update, and delete alert
definitions; acknowledge and delete alert history items
+##view_adminRoles_permissions_permWriteDesc_manageAlerts = create, update, and delete
alert definitions; acknowledge and delete alert history items
view_adminRoles_permissions_permWriteDesc_manageContent = subscribe to content sources;
install and uninstall packages
+##view_adminRoles_permissions_permWriteDesc_manageDrift = create, update, and delete
alert definitions; acknowledge and delete alert history items
view_adminRoles_permissions_permWriteDesc_manageEvents = \u5220\u9664\u4E8B\u4EF6
view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection
schedules
view_adminRoles_permissions_perm_configure = \u914D\u7F6E
@@ -451,6 +453,7 @@ view_adminRoles_permissions_perm_inventory = \u6E05\u5355
view_adminRoles_permissions_perm_manageAlerts = \u7BA1\u7406\u544A\u8B66
view_adminRoles_permissions_perm_manageBundles = \u7BA1\u7406Bundles
view_adminRoles_permissions_perm_manageContent = \u7BA1\u7406Content
+##view_adminRoles_permissions_perm_manageDrift = Manage Drift
view_adminRoles_permissions_perm_manageEvents = \u7BA1\u7406\u4E8B\u4EF6
view_adminRoles_permissions_perm_manageInventory = \u7BA1\u7406\u6E05\u5355
view_adminRoles_permissions_perm_manageMeasurements = \u7BA1\u7406\u6307\u6807
@@ -1123,6 +1126,13 @@ view_dashboards_title = \u7EDF\u8BA1\u8868\u76D8
##view_drift_table_oldFile = Old File
view_drift_table_resourceConfig = Resource Drift Configuration
##view_drift_table_resourceHistory = Resource Drift History
+##view_drift_wizard_addConfig_infoStepName = Provide Drift Detection Information
+##view_drift_wizard_addConfig_nameHelp = A textual name briefly describing the purpose of
this drift detection configuration. Drift configuration names must be unique for a
resource.
+##view_drift_wizard_addConfig_namePrompt = New Drift Configuration Name
+##view_drift_wizard_addConfig_templateHelp = Each drift configuration describes a set of
files for which drift detection can be performed. The configuration can be enabled and
disabled, defines the detection interval, and specifies a base directory and optional file
filters. For each resource type offering drift detection there will be one or more
predefined templates to use a starting configuration, which can then be edited.
+##view_drift_wizard_addConfig_templatePrompt = Drift Configuration Templates
+##view_drift_wizard_addConfig_title = Add Drift Configuration for Resource of Type
[{0}]
+##view_drift_wizard_addConfig_windowTitle = Drift Add Configuration Wizard
view_dynagroup_children = \u5B50\u52A8\u6001\u7EC4
view_dynagroup_compatible = \u517C\u5BB9\u6027
view_dynagroup_definitionAlreadyExists =
\u5DF2\u7ECF\u5B58\u5728\u4EE5\u8BE5\u540D\u79F0\u547D\u540D\u7684\u7EC4\u5B9A\u4E49
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
index 089eb36..ba94b08 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
@@ -126,7 +126,7 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
public void storeChangeSet(final int resourceId, File changeSetZip) throws Exception
{
Resource resource = entityManager.find(Resource.class, resourceId);
if (null == resource) {
- throw new IllegalArgumentException("Resource not found: " +
resourceId);
+ throw new IllegalArgumentException("Resource not found [" +
resourceId + "]");
}
try {
@@ -189,7 +189,7 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
}
}
} catch (Exception e) {
- String msg = "Failed to store drift changeset: " +
driftChangeSet;
+ String msg = "Failed to store drift changeset [" +
driftChangeSet + "]";
log.error(msg, e);
return false;
}
@@ -244,7 +244,7 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
DriftFileContent df = entityManager.find(DriftFileContent.class,
driftFile.getHashId());
if (null == df) {
- throw new IllegalArgumentException("DriftFile not found: " +
driftFile.getHashId());
+ throw new IllegalArgumentException("DriftFile not found [" +
driftFile.getHashId() + "]");
}
df.setData(Hibernate.createBlob(new BufferedInputStream(data)));
df.setStatus(DriftFileStatus.LOADED);
@@ -289,7 +289,7 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
int resourceId = entityContext.getResourceId();
Resource resource = entityManager.find(Resource.class, resourceId);
if (null == resource) {
- throw new IllegalArgumentException("Resource not found: " +
resourceId);
+ throw new IllegalArgumentException("Entity not found [" +
entityContext + "]");
}
for (Iterator<Configuration> i =
resource.getDriftConfigurations().iterator(); i.hasNext();) {
@@ -309,6 +309,11 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
break;
}
}
+
+ break;
+
+ default:
+ throw new IllegalArgumentException("Entity Context Type not supported
[" + entityContext + "]");
}
}
@@ -319,7 +324,7 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
int resourceId = entityContext.getResourceId();
Resource resource = entityManager.find(Resource.class, resourceId);
if (null == resource) {
- throw new IllegalArgumentException("Resource not found: " +
resourceId);
+ throw new IllegalArgumentException("Entity not found [" +
entityContext + "]");
}
for (Iterator<Configuration> i =
resource.getDriftConfigurations().iterator(); i.hasNext();) {
@@ -340,6 +345,11 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
} catch (Exception e) {
log.warn(" Unable to inform agent of unscheduled drift detection
[" + driftConfig + "]", e);
}
+
+ break;
+
+ default:
+ throw new IllegalArgumentException("Entity Context Type not supported
[" + entityContext + "]");
}
}
@@ -363,6 +373,40 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
}
@Override
+ public DriftConfiguration getDriftConfiguration(Subject subject, EntityContext
entityContext, int driftConfigId)
+ throws RuntimeException {
+
+ DriftConfiguration result = null;
+
+ switch (entityContext.getType()) {
+ case Resource:
+ Resource resource = entityManager.find(Resource.class,
entityContext.getResourceId());
+ if (null == resource) {
+ throw new IllegalArgumentException("Entity not found [" +
entityContext + "]");
+ }
+
+ for (Configuration config : resource.getDriftConfigurations()) {
+ if (config.getId() == driftConfigId) {
+ result = new DriftConfiguration(config);
+ break;
+ }
+ }
+
+ break;
+
+ default:
+ throw new IllegalArgumentException("Entity Context Type not supported
[" + entityContext + "]");
+ }
+
+ if (null == result) {
+ throw new IllegalArgumentException("Drift Configuration Id [" +
driftConfigId
+ + "] not found for entityContext [" + entityContext +
"]");
+ }
+
+ return result;
+ }
+
+ @Override
public DriftFile getDriftFile(Subject subject, String sha256) {
DriftFile result = entityManager.find(DriftFile.class, sha256);
return result;
@@ -373,7 +417,7 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
Resource resource = entityManager.find(Resource.class, resourceId);
if (null == resource) {
- throw new IllegalArgumentException("Resource not found: " +
resourceId);
+ throw new IllegalArgumentException("Resource not found [" +
resourceId + "]");
}
AgentClient agentClient =
agentManager.getAgentClient(subjectManager.getOverlord(), resourceId);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java
index 708ef3b..3184e79 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java
@@ -94,6 +94,17 @@ public interface DriftManagerLocal extends DriftManagerRemote {
PageList<Drift> findDriftsByCriteria(Subject subject, DriftCriteria criteria);
/**
+ * Get the specified drift configuration for the specified context.
+ *
+ * @param entityContext
+ * @param driftConfigId
+ * @return The drift configuration
+ * @throws RuntimeException, IllegalArgumentException if entity or driftConfig not
found.
+ */
+ DriftConfiguration getDriftConfiguration(Subject subject, EntityContext
entityContext, int driftConfigId)
+ throws RuntimeException;
+
+ /**
* This method stores the provided change-set file for the resource. The version will
be incremented based
* on the max version of existing change-sets for the resource. The change-set will
be processed generating
* requests for drift file content and/or drift instances as required.
@@ -123,6 +134,8 @@ public interface DriftManagerLocal extends DriftManagerRemote {
*/
void updateDriftConfiguration(Subject subject, EntityContext entityContext,
DriftConfiguration driftConfig);
+ // TODO, the stuff below is very preliminary and will change
+
/**
* SUPPORTS DRIFT RHQ SERVER PLUGIN
* @param driftFile
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
index f4eb0b5..b88f9ae 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
@@ -1505,7 +1505,8 @@ public class ResourceGroupManagerBean implements
ResourceGroupManagerLocal, Reso
+ " ( SELECT count(p) FROM %permAlias%.roles r JOIN r.subjects s
JOIN r.permissions p WHERE s.id = %subjectId% AND p = 11 ), " // CONFIGURE_WRITE
+ " ( SELECT count(p) FROM %permAlias%.roles r JOIN r.subjects s
JOIN r.permissions p WHERE s.id = %subjectId% AND p = 9 ), " // MANAGE_CONTENT
+ " ( SELECT count(p) FROM %permAlias%.roles r JOIN r.subjects s
JOIN r.permissions p WHERE s.id = %subjectId% AND p = 6 ), " //
CREATE_CHILD_RESOURCES
- + " ( SELECT count(p) FROM %permAlias%.roles r JOIN r.subjects s
JOIN r.permissions p WHERE s.id = %subjectId% AND p = 5 ))"; // DELETE_RESOURCES
+ + " ( SELECT count(p) FROM %permAlias%.roles r JOIN r.subjects s
JOIN r.permissions p WHERE s.id = %subjectId% AND p = 5 ), " // DELETE_RESOURCES
+ + " ( SELECT count(p) FROM %permAlias%.roles r JOIN r.subjects s
JOIN r.permissions p WHERE s.id = %subjectId% AND p = 16 ))"; // MANAGE_DRIFT
compositeProjection = compositeProjection.replace("%subjectId%",
String.valueOf(subject.getId()));
break;
default: