etc/guiperftests/pom.xml
| 204
etc/guiperftests/src/test/java/org/rhq/guiperftest/GuiPerfTestCase.java
| 121
etc/guiperftests/src/test/java/org/rhq/guiperftest/GuiPerfTestSuite.java
| 80
etc/guiperftests/src/test/java/org/rhq/guiperftest/SahiUtility.java
| 57
modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/ConfigurationMetadataParser.java
| 22
modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
| 24
modules/core/client-api/src/main/java/org/rhq/core/clientapi/descriptor/AgentPluginDescriptorUtil.java
| 65
modules/core/client-api/src/main/resources/rhq-configuration.xsd
| 42
modules/core/client-api/src/main/resources/rhq-plugin.xsd
| 74
modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/ConfigurationMetadataParser2Test.java
| 131
modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/MetadataManagerTest.java
| 25
modules/core/client-api/src/test/resources/metadata-manager-test-1.xml
| 10
modules/core/client-api/src/test/resources/test2-plugin.xml
| 40
modules/core/dbutils/pom.xml
| 2
modules/core/dbutils/src/main/scripts/dbsetup/config-schema.xml
| 9
modules/core/dbutils/src/main/scripts/dbsetup/content-schema.xml
| 1
modules/core/dbutils/src/main/scripts/dbsetup/inventory-schema.xml
| 1
modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
| 68
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDestination.java
| 29
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/ResourceTypeBundleConfiguration.java
| 284 +
modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
| 30
modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyOptionsSource.java
| 139
modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java
| 16
modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
| 27
modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/bundle/BundleDeployRequest.java
| 17
modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/bundle/BundlePurgeRequest.java
| 18
modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
| 185
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/CreateResourceRunner.java
| 19
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
| 6
modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
| 20
modules/core/plugin-container/src/main/java/org/rhq/core/pc/standaloneContainer/Command.java
| 2
modules/core/plugin-container/src/main/java/org/rhq/core/pc/upgrade/ResourceUpgradeDelegate.java
| 113
modules/core/plugin-container/src/test/java/org/rhq/core/pc/bundle/BundleManagerTest.java
| 483 ++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
| 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
| 164
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/selection/SingleCompatibleResourceGroupSelector.java
| 63
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
| 21
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationDataSource.java
| 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationListView.java
| 19
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
| 5
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
| 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java
| 7
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/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
| 34
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
| 8
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/AbstractGroupCreateWizard.java
| 113
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupCreateWizard.java
| 70
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupMembersStep.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
| 34
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java
| 43
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ConfigurationGWTServiceImpl.java
| 29
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
| 12
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
| 16
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
| 16
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
| 16
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
| 10
modules/enterprise/gui/coregui/src/main/webapp/images/global/help.png
|binary
modules/enterprise/gui/coregui/src/main/webapp/images/global/help_Disabled.png
|binary
modules/enterprise/server/ear/pom.xml
| 6
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
| 82
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
| 32
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
| 91
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
| 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/util/MeasurementDataManagerUtility.java
| 21
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceTypeManagerBean.java
| 1
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBean.java
| 70
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
| 12
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/alert/test/AlertManagerBeanTest.java
| 44
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
| 77
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanUnitTest.java
| 78
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java
| 25
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
| 21
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/inventory/InventoryManagerBeanTest.java
| 25
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
| 46
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdateResourceTypeSubsystemTest.java
| 106
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/search/GenericSearchAssistTest.java
| 17
modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v1.xml
| 13
modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v2.xml
| 17
modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
| 354 +
modules/enterprise/server/jar/src/test/resources/test/metadata/resource-type/updateResourceTypeBundleTarget-v1.xml
| 27
modules/enterprise/server/jar/src/test/resources/test/metadata/resource-type/updateResourceTypeBundleTarget-v2.xml
| 23
modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/ServerPluginDescriptorUtil.java
| 55
modules/plugins/ant-bundle/src/main/java/org/rhq/plugins/ant/AntBundlePluginComponent.java
| 15
modules/plugins/ant-bundle/src/test/java/org/rhq/plugins/ant/AntBundlePluginComponentTest.java
| 18
modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceDiscoveryComponent.java
| 6
modules/plugins/apache/src/main/java/org/rhq/plugins/apache/util/VirtualHostLegacyResourceKeyUtil.java
| 48
modules/plugins/apache/src/main/java/org/rhq/plugins/www/util/WWWUtils.java
| 41
modules/plugins/apache/src/main/resources/META-INF/rhq-plugin.xml
| 10
modules/plugins/filetemplate-bundle/src/main/java/org/rhq/plugins/filetemplate/FileTemplateBundlePluginServerComponent.java
| 8
modules/plugins/filetemplate-bundle/src/test/java/org/rhq/plugins/filetemplate/ProcessingRecipeContextTest.java
| 3
modules/plugins/hudson/pom.xml
| 4
modules/plugins/jboss-as-5/pom.xml
| 2
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
| 35
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/DeploymentUtils.java
| 31
modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
| 11
modules/plugins/jboss-as-7/pom.xml
| 231 +
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
| 230 +
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
| 178
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
| 239 +
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
| 504 ++
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
| 216 +
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
| 320 +
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
| 44
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceDiscovery.java
| 65
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
| 429 ++
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
| 71
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/JmsComponent.java
| 127
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/LoggerComponent.java
| 69
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
| 246 +
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/PluginStats.java
| 61
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
| 179
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
| 195
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WarComponent.java
| 58
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WarDiscovery.java
| 45
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Attribute.java
| 86
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ComplexResult.java
| 40
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/CompositeOperation.java
| 64
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Domain.java
| 53
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
| 40
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NetworkInterface.java
| 45
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
| 141
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/OperationDescription.java
| 80
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/PROPERTY_VALUE.java
| 69
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadAttribute.java
| 32
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenNames.java
| 37
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenResources.java
| 37
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadResource.java
| 38
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
| 86
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/SocketBindingGroup.java
| 47
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Subsystem.java
| 67
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Tuple.java
| 35
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Type.java
| 50
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/TypeModelValue.java
| 39
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/serializer/PropertyValueDeserializer.java
| 53
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/serializer/PropertyValueSerializer.java
| 45
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
| 1421
++++++
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/CompositeOperationTest.java
| 108
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationTest.java
| 515 ++
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
| 295 +
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/PathHandlingTest.java
| 106
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
| 320 +
modules/plugins/jboss-as-7/src/test/resources/complexInterface.json
| 14
modules/plugins/jboss-as-7/src/test/resources/connector.json
| 10
modules/plugins/jboss-as-7/src/test/resources/domain-result.json
| 2113
++++++++++
modules/plugins/jboss-as-7/src/test/resources/extensions.json
| 93
modules/plugins/jboss-as-7/src/test/resources/interfaces.json
| 8
modules/plugins/jboss-as-7/src/test/resources/logging.json
| 15
modules/plugins/jboss-as-7/src/test/resources/loopback.json
| 10
modules/plugins/jboss-as-7/src/test/resources/schema-locations.json
| 50
modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
| 92
modules/plugins/jboss-as-7/src/test/resources/test-simple.war
|binary
modules/plugins/jboss-as-7/src/test/resources/threadpool.json
| 25
modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
| 11
modules/plugins/jboss-cache-v3/pom.xml
| 2
modules/plugins/perftest/README
| 12
modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestComponent.java
| 2
modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestDiscoveryComponent.java
| 2
modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestRogueDiscoveryComponent.java
| 4
modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/ScenarioManager.java
| 10
modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/event/PerfTestEventPoller.java
| 13
modules/plugins/perftest/src/main/resources/META-INF/rhq-plugin.xml
| 14
modules/plugins/perftest/src/main/resources/artifacts.xml
| 6
modules/plugins/perftest/src/main/resources/calltime.xml
| 2
modules/plugins/perftest/src/main/resources/configurable-1.xml
| 8
modules/plugins/perftest/src/main/resources/configurable-2.xml
| 12
modules/plugins/perftest/src/main/resources/configurable-3.xml
| 8
modules/plugins/perftest/src/main/resources/configurable-4.xml
| 8
modules/plugins/perftest/src/main/resources/configurable-5.xml
| 8
modules/plugins/perftest/src/main/resources/configurable-6.xml
| 7
modules/plugins/perftest/src/main/resources/configurable-alphaomega.xml
| 32
modules/plugins/perftest/src/main/resources/configurable-average.xml
| 32
modules/plugins/perftest/src/main/resources/metrics.xml
| 2
modules/plugins/perftest/src/main/resources/perftest-scenario.xsd
| 4
modules/plugins/perftest/src/main/resources/rogue.xml
| 18
modules/plugins/perftest/src/test/java/org/rhq/plugins/perftest/ScenarioManagerTest.java
| 6
modules/plugins/perftest/src/test/resources/unit-test-scenario.xml
| 8
modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml
| 18
modules/plugins/pom.xml
| 1
pom.xml
| 6
180 files changed, 13970 insertions(+), 721 deletions(-)
New commits:
commit 1a7ea8682fd9dd18e69f62f7e1f14a145e8650bc
Merge: 6b100b8 c1539ab
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Jun 24 15:34:57 2011 -0400
Merge commit 'origin/master' into drift-master-merge
Conflicts:
modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
modules/core/client-api/src/main/resources/rhq-plugin.xsd
modules/core/dbutils/pom.xml
modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ConfigurationGWTService.java
diff --cc
modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
index 3f16233,2d6ba8b..93c4417
---
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
+++
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
@@@ -33,8 -33,8 +33,9 @@@ import java.util.Set
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.rhq.core.clientapi.descriptor.drift.DriftDescriptor;
import org.rhq.core.clientapi.descriptor.plugin.Bundle;
+ import org.rhq.core.clientapi.descriptor.plugin.BundleTargetDescriptor;
import org.rhq.core.clientapi.descriptor.plugin.ContentDescriptor;
import org.rhq.core.clientapi.descriptor.plugin.EventDescriptor;
import org.rhq.core.clientapi.descriptor.plugin.MetricDescriptor;
@@@ -438,13 -440,13 +441,14 @@@ public class PluginMetadataParser
// 2) Classes
// 3) Plugin config
// 4) Resource config
- // 5) Metrics
- // 6) Control operations
- // 7) Process matches (for process scan auto-discovery)
- // 8) Artifacts
- // 9) Child subcategories
- // 10) Bundle Type
- // 11) Bundle Configuration (for types that are targets for bundle deployments)
+ // 5) Drift config
+ // 6) Metrics
+ // 7) Control operations
+ // 8) Process matches (for process scan auto-discovery)
+ // 9) Artifacts
+ // 10) Child subcategories
+ // 11) Bundle Type
++ // 12) Bundle Configuration (for types that are targets for bundle deployments)
String classLoaderTypeString = resourceDescriptor.getClassLoader();
if (classLoaderTypeString == null) {
diff --cc modules/core/client-api/src/main/resources/rhq-plugin.xsd
index df79477,dc4a572..65d0fdb
--- a/modules/core/client-api/src/main/resources/rhq-plugin.xsd
+++ b/modules/core/client-api/src/main/resources/rhq-plugin.xsd
@@@ -563,7 -620,7 +622,8 @@@
<xs:element ref="rhq:event" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="rhq:content" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="resource-configuration"
type="config:configuration" minOccurs="0"/>
+ <xs:element name="drift-configuration"
type="drift:Drift" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="rhq:bundle-target" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="rhq:help" minOccurs="0"
maxOccurs="1" />
</xs:sequence>
<xs:attribute name="name" use="required"
type="xs:string"/>
diff --cc modules/core/dbutils/pom.xml
index e5994fe,a368986..e2a599d
--- a/modules/core/dbutils/pom.xml
+++ b/modules/core/dbutils/pom.xml
@@@ -22,7 -22,7 +22,7 @@@
<properties>
<scm.module.path>modules/core/dbutils/</scm.module.path>
- <db.schema.version>2.109</db.schema.version>
- <db.schema.version>2.110</db.schema.version>
++ <db.schema.version>2.112</db.schema.version>
</properties>
<dependencies>
diff --cc modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
index f1e99bc,4d66b02..143ea85
--- a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
+++ b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
@@@ -3389,132 -3389,61 +3389,186 @@@
<schemaSpec version="2.107">
<schema-createSequence name="RHQ_OPERATION_SCHEDULE_ID_SEQ"
initial="10001"/>
</schemaSpec>
--
-
++
+ <!-- BZ 644328 -->
<schemaSpec version="2.108">
+ <schema-addColumn table="RHQ_RESOURCE_TYPE"
column="BUNDLE_CONFIG_ID" columnType="INTEGER" />
+ <schema-directSQL>
+ <statement desc="Creating RHQ_RESOURCE_TYPE foreign key
relation to RHQ_CONFIG for bundle config">
+ ALTER TABLE RHQ_RESOURCE_TYPE
+ ADD CONSTRAINT RHQ_RT_BUNDLE_CONFIG_ID_FK
+ FOREIGN KEY (BUNDLE_CONFIG_ID)
+ REFERENCES RHQ_CONFIG (ID)
+ </statement>
+ </schema-directSQL>
+ </schemaSpec>
+
+ <!-- BZ 644328 -->
+ <schemaSpec version="2.109">
+ <schema-addColumn table="RHQ_BUNDLE_DESTINATION"
column="DEST_BASE_DIR_NAME" columnType="VARCHAR2"
precision="200" />
+ <schema-directSQL>
+ <statement desc="Pointing all bundle destinations to the
platform type's Root File System dest base dir">
+ UPDATE RHQ_BUNDLE_DESTINATION SET DEST_BASE_DIR_NAME = 'Root
File System'
+ </statement>
+ </schema-directSQL>
+ <schema-alterColumn table="RHQ_BUNDLE_DESTINATION"
column="DEST_BASE_DIR_NAME" nullable="FALSE"/>
+ </schemaSpec>
+
+ <schemaSpec version="2.110">
+ <schema-directSQL>
+ <statement desc="Creating table
RHQ_PROP_DEF_OPT_SRC">
+ CREATE TABLE RHQ_PROP_DEF_OPT_SRC ( ID INTEGER PRIMARY KEY )
+ </statement>
+ </schema-directSQL>
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="LINK_TO_TARGET" columnType="BOOLEAN"/>
+ <schema-alterColumn table="RHQ_PROP_DEF_OPT_SRC"
column="LINK_TO_TARGET" nullable="TRUE"/>
+
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="FILTER" columnType="VARCHAR2" precision="40"/>
+ <schema-alterColumn table="RHQ_PROP_DEF_OPT_SRC"
column="FILTER" nullable="TRUE"/>
+
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="EXPRESSION" columnType="VARCHAR2"
precision="400"/>
+ <schema-alterColumn table="RHQ_PROP_DEF_OPT_SRC"
column="EXPRESSION" nullable="FALSE"/>
+
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="TARGET_TYPE" columnType="VARCHAR2"
precision="20"/>
+ <schema-alterColumn table="RHQ_PROP_DEF_OPT_SRC"
column="TARGET_TYPE" nullable="FALSE"/>
+
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="PROPERTY_DEF_ID" columnType="INTEGER"/>
+ <schema-directSQL>
+ <statement desc="Adding a fk">
+ ALTER TABLE RHQ_PROP_DEF_OPT_SRC
+ ADD CONSTRAINT RHQ_PROP_DEF_OPT_SRC_ID_FK
+ FOREIGN KEY (PROPERTY_DEF_ID)
+ REFERENCES RHQ_CONFIG_PROP_DEF (ID)
+ </statement>
+ </schema-directSQL>
+ <schema-createSequence
name="rhq_config_prop_def_opt_src_id_seq" initial="10001" />
+ </schemaSpec>
++
++ <schemaSpec version="2.111">
+ <schema-directSQL>
+ <statement desc="Creating global drift configuration
definition">
+ INSERT INTO rhq_config_def (id, name, description)
+ VALUES (1, 'GLOBAL_DRIFT_CONFIG_DEF', 'The drift
configuration definition')
+ </statement>
+ <statement>
+ INSERT INTO rhq_config_prop_def (id, name, display_name,
description, required, simple_type,
+ order_index, dtype, config_def_id)
+ VALUES (1, 'name', 'Drift Configuration Name',
'The drift configuration name', true, 'string',
+ 0, 'property', 1)
+ </statement>
+ <statement>
+ INSERT INTO rhq_config_prop_def (id, name, display_name,
description, required, simple_type,
+ default_value, order_index, dtype, config_def_id)
+ VALUES (2, 'enabled', 'Enabled', 'Enables or
disables drift detection for this configuration', true, 'boolean',
+ 'false', 1, 'property', 1)
+ </statement>
+ <statement>
+ INSERT INTO rhq_config_prop_def (id, name, display_name,
description, required, simple_type,
+ order_index, dtype, config_def_id)
+ VALUES (3, 'basedir', 'Base Directory', 'The
base directory from which files will be monitored for drift.',
+ true, 'string', 2, 'property', 1)
+ </statement>
+ <statement>
+ INSERT INTO rhq_config_prop_def (id, name, display_name,
description, required, simple_type,
+ order_index, dtype, default_value, config_def_id)
+ VALUES (4, 'interval', 'Interval', 'The
interval, in seconds, between drift detection scans for this configuration. Default is
thirty minutes.',
+ false, 'long', 3, 'property',
'1800', 1)
+ </statement>
+ <statement>
+ INSERT INTO rhq_config_prop_def (id, name, display_name, dtype,
description, order_index,
+ config_def_id)
+ VALUES (5, 'includes', 'Includes',
'list', 'A set of patterns that specify files and/or directories to
include.',
+ 4, 1)
+ </statement>
+ <statement>
+ INSERT INTO rhq_config_prop_def (id, name, display_name, dtype,
parent_list_definition_id)
+ VALUES (6, 'include', 'Include', 'map',
4)
+ </statement>
+ <statement>
+ INSERT INTO rhq_config_prop_def (id, name, display_name,
description, simple_type,
+ order_index, dtype, parent_map_definition_id)
+ VALUES (7, 'path', 'Path', 'A file system
path that can be a directory or a file. The path is assumed to be relative to the base
directory of the drift configuration.',
+ 'string', 0, 'property', 5)
+ </statement>
+ <statement>
+ INSERT INTO rhq_config_prop_def (id, name, display_name,
description, simple_type,
+ order_index, dtype, parent_map_definition_id)
+ VALUES (8, 'pattern', 'Pattern', 'TBD',
'string', 1, 'property', 5)
+ </statement>
+ <statement>
+ INSERT INTO rhq_config_prop_def (id, name, display_name, dtype,
description, order_index,
+ config_def_id)
+ VALUES (9, 'excludes', 'Excludes',
'list', 'A set of patterns that specify files and/or directories to
exclude.',
+ 5, 1)
+ </statement>
+ <statement>
+ INSERT INTO rhq_config_prop_def (id, name, display_name, dtype,
parent_list_definition_id)
+ VALUES (10, 'exclude', 'Exclude', 'map',
8)
+ </statement>
+ <statement>
+ INSERT INTO rhq_config_prop_def (id, name, display_name,
description, simple_type,
+ order_index, dtype, parent_map_definition_id)
+ VALUES (11, 'path', 'Path', 'A file system
path that can be a directory or a file. The path is assumed to be relative to the base
directory of the drift configuration.',
+ 'string', 0, 'property', 9)
+ </statement>
+ <statement>
+ INSERT INTO rhq_config_prop_def (id, name, display_name,
description, simple_type,
+ order_index, dtype, parent_map_definition_id)
+ VALUES (12, 'pattern', 'Pattern', 'TBD',
'string', 1, 'property', 9)
+ </statement>
+ </schema-directSQL>
+ </schemaSpec>
+
- <schemaSpec version="2.109">
++ <schemaSpec version="2.112">
+ <schema-directSQL>
+ <statement desc="Creating table
RHQ_DRIFT_TEMPLATE">
+ CREATE TABLE RHQ_DRIFT_TEMPLATE (
+ RESOURCE_TYPE_ID INTEGER,
+ CONFIG_TEMPLATE_ID INTEGER)
+ </statement>
+ </schema-directSQL>
+ <schema-alterColumn table="RHQ_DRIFT_TEMPLATE"
column="RESOURCE_TYPE_ID" nullable="false"/>
+ <schema-alterColumn table="RHQ_DRIFT_TEMPLATE"
column="CONFIG_TEMPLATE_ID" nullable="false"/>
+ <schema-directSQL>
+ <statement desc="Creating RHQ_DRIFT_TEMPLATE foreign key to
RHQ_RESOURCE_TYPE">
+ ALTER TABLE RHQ_DRIFT_TEMPLATE
+ ADD CONSTRAINT RESOURCE_TYPE_ID_FK
+ FOREIGN KEY (RESOURCE_TYPE_ID)
+ REFERENCES RHQ_RESOURCE_TYPE (ID)
+ </statement>
+ <statement desc="Creating RHQ_DRIFT_TEMPLATE foreign key to
RHQ_CONFIG_TEMPLATE">
+ ALTER TABLE RHQ_DRIFT_TEMPLATE
+ ADD CONSTRAINT CONFIG_TEMPLATE_ID_FK
+ FOREIGN KEY (CONFIG_TEMPLATE_ID)
+ REFERENCES RHQ_CONFIG_TEMPLATE (ID)
+ </statement>
+ </schema-directSQL>
+
+ <schema-directSQL>
+ <statement desc="Creating table RHQ_DRIFT_CONFIG">
+ CREATE TABLE RHQ_DRIFT_CONFIG (
+ RESOURCE_ID INTEGER,
+ CONFIG_ID INTEGER)
+ </statement>
+ </schema-directSQL>
+ <schema-alterColumn table="RHQ_DRIFT_CONFIG"
column="RESOURCE_ID" nullable="false"/>
+ <schema-alterColumn table="RHQ_DRIFT_CONFIG"
column="CONFIG_ID" nullable="false"/>
+ <schema-directSQL>
+ <statement desc="Creating RHQ_DRIFT_CONFIG foreign key to
RHQ_RESOURCE">
+ ALTER TABLE RHQ_DRIFT_CONFIG
+ ADD CONSTRAINT RESOURCE_ID_FK
+ FOREIGN KEY (RESOURCE_ID)
+ REFERENCES RHQ_RESOURCE (ID)
+ </statement>
+ <statement desc="Creating RHQ_DRIFT_CONFIG foreign key to
RHQ_CONFIG">
+ ALTER TABLE RHQ_DRIFT_CONFIG
+ ADD CONSTRAINT CONFIG_ID_FK
+ FOREIGN KEY (CONFIG_ID)
+ REFERENCES RHQ_CONFIG (ID)
+ </statement>
+ </schema-directSQL>
-
+ </schemaSpec>
++
</dbupgrade>
</target>
</project>
diff --cc
modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
index 15abcac,efb55e4..ff4904d
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
@@@ -59,8 -59,9 +59,10 @@@ import javax.persistence.Transient
import javax.xml.bind.annotation.XmlTransient;
import org.rhq.core.domain.bundle.BundleType;
+ import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
+ import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.domain.configuration.definition.ConfigurationTemplate;
import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.event.EventDefinition;
import org.rhq.core.domain.measurement.MeasurementDefinition;
@@@ -393,10 -395,13 +397,17 @@@ public class ResourceType implements Se
@OneToOne(mappedBy = "resourceType", fetch = FetchType.LAZY, cascade =
CascadeType.ALL, optional = true)
private BundleType bundleType;
+ @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+ @JoinTable(name = "RHQ_DRIFT_TEMPLATE_MAP", joinColumns = @JoinColumn(name
= "RESOURCE_TYPE_ID", nullable = false), inverseJoinColumns = @JoinColumn(name =
"CONFIG_TEMPLATE_ID", nullable = false))
+ private Set<ConfigurationTemplate> driftConfigurationTemplates = new
HashSet<ConfigurationTemplate>();
+
+ // note that this is mapped to a Configuration entity, which is what it really is.
However, our getter/setter
+ // only provides access to this via ResourceTypeBundleConfiguration to encapsulate
the innards of this implementation
+ // detail, exposing only the more strongly typed methods to obtain bundle-related
config properties
+ @JoinColumn(name = "BUNDLE_CONFIG_ID", nullable = true)
+ @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
+ private Configuration bundleConfiguration;
+
@Transient
private transient String helpText;
diff --cc
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ConfigurationGWTService.java
index 0898a97,d501799..5a649fc
---
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,5 -89,9 +88,7 @@@ public interface ConfigurationGWTServic
void deleteGroupResourceConfigurationUpdate(Integer groupId, Integer[]
groupResourceConfigUpdateIds)
throws RuntimeException;
- /**
- * GWT-RPC service asynchronous (client-side) interface
- * @see ConfigurationGWTService
- */
+ Configuration getConfiguration(int configurationId);
++
+ ConfigurationDefinition getOptionValuesForConfigDefinition(ConfigurationDefinition
definition);
}
commit c1539ab2b81270985ba026be2725f8195d9d4917
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 23 11:57:01 2011 -0400
BZ 644328 - abort the bundle deployment if we cannot determine where to put the
bundle,
that is, if we don't have an absolute path. We need to do this for those cases
where, for example, a resource doesn't store an absolute path in its plugin
config,
resource source or trait - rather it stores a relative path. In this case, we
can't
pin that relative path to anything absolute, so we don't know where to put
the bundle.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
index b0cd714..29afab5 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
@@ -507,7 +507,17 @@ public class BundleManager extends AgentService implements
BundleAgentService, B
}
}
- return new File(baseLocation, relativeDeployDir);
+ File destDir = new File(baseLocation, relativeDeployDir);
+
+ if (!destDir.isAbsolute()) {
+ throw new IllegalArgumentException("The base location path specified by
[" + destBaseDirValueName
+ + "] in the context [" + bundleDestBaseDir.getValueContext()
+ + "] along with the destination directory of [" +
relativeDeployDir
+ + "] did not resolve to an absolute path [" +
destDir.getPath()
+ + "] so there is no way to know where to put the bundle.");
+ }
+
+ return destDir;
}
/**
commit 44d0542ab1bf78b8953dc69f805f55fa15420509
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 23 11:43:28 2011 -0400
BZ 644328 - enable bundle deployments to jboss-as-5 plugin
diff --git a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
index 40e2441..21161fe 100644
--- a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
@@ -1191,6 +1191,17 @@
</configuration>
</content>
+ <bundle-target>
+ <destination-base-dir name="Install Directory"
description="The top directory where the JBossAS Server is installed. (i.e. the value
found in the 'JBoss Home Directory' connection property)">
+ <value-context>pluginConfiguration</value-context>
+ <value-name>homeDir</value-name>
+ </destination-base-dir>
+ <destination-base-dir name="Profile Directory"
description="The profile configuration directory such as 'default',
'minimal', 'production' or similar location. (i.e. the value found in the
'Server Home Dir' connection property)">
+ <value-context>pluginConfiguration</value-context>
+ <value-name>serverHomeDir</value-name>
+ </destination-base-dir>
+ </bundle-target>
+
<server name="JBoss AS JVM"
description="JVM of the JBossAS"
sourcePlugin="JMX"
commit d6718f1139ed78493364cbd25e19ebec436822e7
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Jun 22 20:53:15 2011 +0200
Disable the individual test methods, as the class one did not work.
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
index 2c9f546..dfa9fd9 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
@@ -49,7 +49,7 @@ public class UploadAndDeployTest {
private static final String DC_HOST = "localhost";
private static final int DC_HTTP_PORT = 9990;
- @Test(timeOut = 60*1000L)
+ @Test(timeOut = 60*1000L, enabled=false)
public void testUploadOnly() throws Exception {
String bytes_value = prepare();
@@ -61,7 +61,7 @@ public class UploadAndDeployTest {
}
- @Test(timeOut = 60*1000L)
+ @Test(timeOut = 60*1000L, enabled=false)
public void testDoubleUploadOnly() throws Exception {
String bytes_value = prepare();
@@ -74,7 +74,7 @@ public class UploadAndDeployTest {
assert bytes_value.equals("7jgpMVmynfxpqp8UDleKLmtgbrA=");
}
- @Test(timeOut = 60*1000L)
+ @Test(timeOut = 60*1000L,enabled=false)
public void testUploadIndividualSteps() throws Exception {
String bytes_value = prepare();
@@ -154,7 +154,7 @@ public class UploadAndDeployTest {
}
// Test for AS7-853
- @Test(timeOut = 60*1000L)
+ @Test(timeOut = 60*1000L,enabled = false)
public void testUploadIndividualSteps2() throws Exception {
String bytes_value = prepare();
@@ -228,7 +228,7 @@ public class UploadAndDeployTest {
}
- @Test(timeOut = 60*1000L)
+ @Test(timeOut = 60*1000L,enabled = false)
public void testUploadComposite() throws Exception {
String bytes_value = prepare();
commit 2906b2db5c170ef6d80dad8e74a1a1a956bb4ba0
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Jun 22 20:26:16 2011 +0200
Disable the test, as it needs a running as7
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
index 57ec4f3..2c9f546 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
@@ -41,7 +41,7 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
* the UPLOAD_FILE must point to a valid archive in the resources directory.
* @author Heiko W. Rupp
*/
-@Test
+@Test(enabled = false) // TODO add an "integration test profile" that is able
to fire the server before running the test
public class UploadAndDeployTest {
static final String TEST_WAR = "test.war";
@@ -49,7 +49,7 @@ public class UploadAndDeployTest {
private static final String DC_HOST = "localhost";
private static final int DC_HTTP_PORT = 9990;
- @Test(timeOut = 60*1000L, enabled = true)
+ @Test(timeOut = 60*1000L)
public void testUploadOnly() throws Exception {
String bytes_value = prepare();
@@ -61,7 +61,7 @@ public class UploadAndDeployTest {
}
- @Test(timeOut = 60*1000L, enabled = true)
+ @Test(timeOut = 60*1000L)
public void testDoubleUploadOnly() throws Exception {
String bytes_value = prepare();
@@ -74,7 +74,7 @@ public class UploadAndDeployTest {
assert bytes_value.equals("7jgpMVmynfxpqp8UDleKLmtgbrA=");
}
- @Test(timeOut = 60*1000L, enabled = true)
+ @Test(timeOut = 60*1000L)
public void testUploadIndividualSteps() throws Exception {
String bytes_value = prepare();
@@ -154,7 +154,7 @@ public class UploadAndDeployTest {
}
// Test for AS7-853
- @Test(timeOut = 60*1000L, enabled = true)
+ @Test(timeOut = 60*1000L)
public void testUploadIndividualSteps2() throws Exception {
String bytes_value = prepare();
@@ -228,7 +228,7 @@ public class UploadAndDeployTest {
}
- @Test(timeOut = 60*1000L, enabled = true)
+ @Test(timeOut = 60*1000L)
public void testUploadComposite() throws Exception {
String bytes_value = prepare();
commit 28432d866fba7a7cae80e7efc9bd7e84314e113e
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Jun 22 10:43:30 2011 -0400
BZ 644328 - when someone creates a new group from within the bundle deploy wizard,
prepopulate the
bundle deploy wizard's group selector, but only if the new group supports
bundles.
This also clears the radio button options whenever the user starts typing in the
drop down group selector because once you change the group (or start changing the
group)
the radio options probably are not valid (we will refresh the options once a valid
group has been selected)
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
index 54f6f15..7459562 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
@@ -21,6 +21,7 @@ package org.rhq.enterprise.gui.coregui.client.bundle.deploy;
import java.util.LinkedHashMap;
import java.util.Set;
+import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.form.DynamicForm;
@@ -31,6 +32,8 @@ import com.smartgwt.client.widgets.form.fields.TextAreaItem;
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 com.smartgwt.client.widgets.form.fields.events.DataArrivedEvent;
+import com.smartgwt.client.widgets.form.fields.events.DataArrivedHandler;
import com.smartgwt.client.widgets.form.fields.events.IconClickEvent;
import com.smartgwt.client.widgets.form.fields.events.IconClickHandler;
import com.smartgwt.client.widgets.form.validator.IsIntegerValidator;
@@ -61,8 +64,9 @@ public class GetDestinationStep extends AbstractWizardStep {
private VLayout form;
DynamicForm valForm = new
LocatableDynamicForm("GetDestinationStepValForm");
private SingleCompatibleResourceGroupSelector selector;
- private BundleDestination dest = new BundleDestination();
+ private BundleDestination destination = new BundleDestination();
private boolean createInProgress = false;
+ private RadioGroupItem destBaseDirItem;
public GetDestinationStep(BundleDeployWizard wizard) {
this.wizard = wizard;
@@ -94,7 +98,7 @@ public class GetDestinationStep extends AbstractWizardStep {
value = "";
}
wizard.setSubtitle(value.toString());
- dest.setName(value.toString());
+ destination.setName(value.toString());
}
});
FormUtility.addContextualHelp(nameTextItem,
MSG.view_bundle_deployWizard_getDest_name_help());
@@ -108,7 +112,7 @@ public class GetDestinationStep extends AbstractWizardStep {
if (value == null) {
value = "";
}
- dest.setDescription(value.toString());
+ destination.setDescription(value.toString());
}
});
@@ -122,23 +126,23 @@ public class GetDestinationStep extends AbstractWizardStep {
if (value == null) {
value = "";
}
- dest.setDeployDir(value.toString());
+ destination.setDeployDir(value.toString());
}
});
FormUtility.addContextualHelp(deployDirTextItem,
MSG.view_bundle_deployWizard_getDest_deployDir_help());
- final RadioGroupItem destBaseDirItem = new
RadioGroupItem("destBaseDir", MSG
+ this.destBaseDirItem = new RadioGroupItem("destBaseDir", MSG
.view_bundle_deployWizard_getDest_destBaseDirName());
- destBaseDirItem.setWidth(300);
- destBaseDirItem.setRequired(true);
- destBaseDirItem.setDisabled(true);
- destBaseDirItem.addChangedHandler(new ChangedHandler() {
+ this.destBaseDirItem.setWidth(300);
+ this.destBaseDirItem.setRequired(true);
+ this.destBaseDirItem.setDisabled(true);
+ this.destBaseDirItem.addChangedHandler(new ChangedHandler() {
public void onChanged(ChangedEvent event) {
Object value = event.getValue();
if (value != null && value.toString().length() > 0) {
- dest.setDestinationBaseDirectoryName(value.toString());
+ destination.setDestinationBaseDirectoryName(value.toString());
} else {
- dest.setDestinationBaseDirectoryName(null);
+ destination.setDestinationBaseDirectoryName(null);
}
}
});
@@ -152,62 +156,16 @@ public class GetDestinationStep extends AbstractWizardStep {
this.selector.addChangedHandler(new ChangedHandler() {
@Override
public void onChanged(ChangedEvent event) {
- Integer selectedGroupId = null;
-
// if the user is typing in the name of the group, and is only
partially
// done, the event value will be the String of the partial group
name.
// If the selection is an actual group name, the event value will be
// an integer (the group ID) and that is our indication that the
selection
// of an actual group has been made
+ Integer selectedGroupId = null;
if (event.getValue() instanceof Integer) {
selectedGroupId = (Integer) event.getValue();
}
-
- // new group is, or is in the process of being, selected so forget
what the base location was before
- dest.setDestinationBaseDirectoryName(null);
- destBaseDirItem.clearValue();
-
- if (selectedGroupId != null) {
-
bundleServer.getResourceTypeBundleConfiguration(selectedGroupId.intValue(),
- new AsyncCallback<ResourceTypeBundleConfiguration>() {
- public void onSuccess(ResourceTypeBundleConfiguration
result) {
- // populate the base location drop down with all the
possible dest base directories
- LinkedHashMap<String, String> menuItems =
null;
- if (result != null) {
- Set<BundleDestinationBaseDirectory>
baseDirs;
- baseDirs =
result.getBundleDestinationBaseDirectories();
- if (baseDirs != null && baseDirs.size()
> 0) {
- String defaultSelectedItem = null;
- menuItems = new LinkedHashMap<String,
String>(baseDirs.size());
- for (BundleDestinationBaseDirectory baseDir :
baseDirs) {
- if (baseDir.getDescription() != null) {
- menuItems.put(baseDir.getName(),
"<b>" + baseDir.getName()
- + "</b>: " +
baseDir.getDescription());
- } else {
- menuItems.put(baseDir.getName(),
baseDir.getName());
- }
- if (defaultSelectedItem == null) {
- defaultSelectedItem =
baseDir.getName();
- }
- }
- destBaseDirItem.setValueMap(menuItems);
-
destBaseDirItem.setValue(defaultSelectedItem);
-
dest.setDestinationBaseDirectoryName(defaultSelectedItem);
- }
- }
-
- destBaseDirItem.setDisabled(menuItems == null);
- }
-
- public void onFailure(Throwable caught) {
- destBaseDirItem.setDisabled(true);
- CoreGUI.getErrorHandler().handleError(
-
MSG.view_bundle_deployWizard_error_noBundleConfig(), caught);
- }
- });
- } else {
- destBaseDirItem.setDisabled(true);
- }
+ groupSelectionChanged(selectedGroupId);
}
});
final FormItemIcon newGroupIcon = new FormItemIcon();
@@ -223,7 +181,7 @@ public class GetDestinationStep extends AbstractWizardStep {
FormUtility.addContextualHelp(this.selector,
MSG.view_bundle_deployWizard_getDest_group_help(),
newGroupIcon);
- this.valForm.setItems(nameTextItem, descriptionTextAreaItem, this.selector,
destBaseDirItem,
+ this.valForm.setItems(nameTextItem, descriptionTextAreaItem, this.selector,
this.destBaseDirItem,
deployDirTextItem);
CanvasItem ci1 = new CanvasItem();
ci1.setShowTitle(false);
@@ -271,8 +229,8 @@ public class GetDestinationStep extends AbstractWizardStep {
private void createDestination() {
int selectedGroup = (Integer) this.valForm.getValue("group");
- bundleServer.createBundleDestination(wizard.getBundleId(), dest.getName(),
dest.getDescription(), dest
- .getDestinationBaseDirectoryName(), dest.getDeployDir(), selectedGroup, //
+ bundleServer.createBundleDestination(wizard.getBundleId(), destination.getName(),
destination.getDescription(),
+ destination.getDestinationBaseDirectoryName(), destination.getDeployDir(),
selectedGroup, //
new AsyncCallback<BundleDestination>() {
public void onSuccess(BundleDestination result) {
wizard.setDestination(result);
@@ -295,16 +253,84 @@ public class GetDestinationStep extends AbstractWizardStep {
});
}
+ private void groupSelectionChanged(Integer selectedGroupId) {
+ // new group is, or is in the process of being, selected so forget what the base
location was before
+ destination.setDestinationBaseDirectoryName(null);
+ destBaseDirItem.clearValue();
+ destBaseDirItem.setValueMap((String[]) null);
+
+ // this will be null if there is no true group actually selected (e.g. user is
typing a partial name to search)
+ if (selectedGroupId != null) {
+ bundleServer.getResourceTypeBundleConfiguration(selectedGroupId.intValue(),
+ new AsyncCallback<ResourceTypeBundleConfiguration>() {
+ public void onSuccess(ResourceTypeBundleConfiguration result) {
+ // populate the base location drop down with all the possible
dest base directories
+ LinkedHashMap<String, String> menuItems = null;
+ if (result != null) {
+ Set<BundleDestinationBaseDirectory> baseDirs;
+ baseDirs = result.getBundleDestinationBaseDirectories();
+ if (baseDirs != null && baseDirs.size() > 0) {
+ String defaultSelectedItem = null;
+ menuItems = new LinkedHashMap<String,
String>(baseDirs.size());
+ for (BundleDestinationBaseDirectory baseDir : baseDirs)
{
+ if (baseDir.getDescription() != null) {
+ menuItems.put(baseDir.getName(),
"<b>" + baseDir.getName() + "</b>: "
+ + baseDir.getDescription());
+ } else {
+ menuItems.put(baseDir.getName(),
baseDir.getName());
+ }
+ if (defaultSelectedItem == null) {
+ defaultSelectedItem = baseDir.getName();
+ }
+ }
+ destBaseDirItem.setValueMap(menuItems);
+ destBaseDirItem.setValue(defaultSelectedItem);
+
destination.setDestinationBaseDirectoryName(defaultSelectedItem);
+ }
+ }
+
+ destBaseDirItem.setDisabled(menuItems == null);
+ }
+
+ public void onFailure(Throwable caught) {
+ destBaseDirItem.setDisabled(true);
+
CoreGUI.getErrorHandler().handleError(MSG.view_bundle_deployWizard_error_noBundleConfig(),
+ caught);
+ }
+ });
+ } else {
+ destBaseDirItem.setDisabled(true);
+ }
+ }
+
private class QuickGroupCreateWizard extends AbstractGroupCreateWizard {
- private SingleCompatibleResourceGroupSelector selector;
+ private SingleCompatibleResourceGroupSelector groupSelector;
+ private HandlerRegistration handlerRegistrar;
- public QuickGroupCreateWizard(SingleCompatibleResourceGroupSelector selector) {
+ public QuickGroupCreateWizard(SingleCompatibleResourceGroupSelector theSelector)
{
super();
- this.selector = selector;
+ this.groupSelector = theSelector;
}
- public void groupCreateCallback(ResourceGroup group) {
- selector.fetchData();
+ public void groupCreateCallback(final ResourceGroup group) {
+ // note: "group" is essentially a flyweight - it doesn't have
much other than ID
+ this.groupSelector.setValue(group.getId());
+
+ this.handlerRegistrar = this.groupSelector.addDataArrivedHandler(new
DataArrivedHandler() {
+ public void onDataArrived(DataArrivedEvent event) {
+ handlerRegistrar.removeHandler(); // this handler is only needed
once, when group wizard is finished with and we created our group
+ if (groupSelector.getSelectedRecord() == null) {
+ // it appears that the user created a group that cannot be a
bundle target.
+ groupSelector.clearValue();
+ groupSelectionChanged(null);
+ } else {
+ groupSelectionChanged(group.getId());
+ }
+ }
+ });
+
+ // order is important - we set the value first above, add dataArrivedHandler,
then fetch, which triggers our handler
+ this.groupSelector.fetchData();
}
}
commit d010ed0ad32d363421fca16baf8287a90d182b73
Merge: b06ec2e 02c3770
Author: Heiko W. Rupp <hrupp(a)pintsize.home.pilhuhn.de>
Date: Wed Jun 22 16:22:58 2011 +0200
Merge branch 'master' into as7plugin
commit 02c37708fa056563ca233f6b345f3936284afb91
Merge: eb65e1d 38ce0dd
Author: Heiko W. Rupp <hrupp(a)pintsize.home.pilhuhn.de>
Date: Wed Jun 22 16:22:19 2011 +0200
Merge branch 'master' into dependent-values
commit 38ce0dd10f62d6f5f190c3dc82d8bc03d8d5a998
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Tue Jun 21 14:46:04 2011 -0400
[BZ 713448] in the EAR/WAR Resource creation code, if the ManagedDeployment fails to
start, do not consider the Resource creation a failure and rollback the deployment
(
https://bugzilla.redhat.com/show_bug.cgi?id=713448)
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/CreateResourceRunner.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/CreateResourceRunner.java
index e03eaba..2ce32ef 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/CreateResourceRunner.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/CreateResourceRunner.java
@@ -129,14 +129,14 @@ public class CreateResourceRunner implements Callable, Runnable {
}
// Ensure a resource key was returned from the plugin if the plugin reports
the create was successful
- if ((reportedStatus == CreateResourceStatus.SUCCESS) && (resourceKey
== null)) {
- log.warn("Plugin did not indicate the result of the request: "
+ requestId);
+ if ((isSuccessStatus(reportedStatus)) && (resourceKey == null)) {
+ log.warn("Plugin did not indicate the resource key for this request:
" + requestId);
errorMessage = "Plugin did not indicate a resource key for this
request.";
status = CreateResourceStatus.FAILURE;
}
// RHQ-666 - The plugin should provide a resource name if the create was
successful
- if ((reportedStatus == CreateResourceStatus.SUCCESS) && (resourceName
== null)) {
+ if ((isSuccessStatus(reportedStatus)) && (resourceName == null)) {
log.warn("Plugin did not indicate a resource name for the request:
" + requestId);
errorMessage = "Plugin did not indicate a resource name for this
request.";
status = CreateResourceStatus.FAILURE;
@@ -175,16 +175,21 @@ public class CreateResourceRunner implements Callable, Runnable {
// Trigger a service scan on the parent resource to have the newly created
resource discovered if the plugin
// said the create was successful
- if (runRuntimeScan && (status == CreateResourceStatus.SUCCESS)) {
- log.info("Scanning for newly created resource");
+ if (runRuntimeScan && isSuccessStatus(status)) {
+ log.info("Scanning for newly created Resource...");
try {
InventoryManager inventoryManager =
PluginContainer.getInstance().getInventoryManager();
inventoryManager.performServiceScan(parentResourceId);
} catch (Throwable t) {
- log.error("Error received while attempting runtime scan for newly
created resource");
+ log.error("Error received while attempting runtime scan for newly
created Resource...");
}
}
return response;
}
-}
\ No newline at end of file
+
+ private static boolean isSuccessStatus(CreateResourceStatus status) {
+ return (status == CreateResourceStatus.SUCCESS) || (status ==
CreateResourceStatus.INVALID_CONFIGURATION)
+ || (status == CreateResourceStatus.INVALID_ARTIFACT);
+ }
+ }
\ No newline at end of file
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
index 5733012..6314d3a 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/deploy/ManagedComponentDeployer.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2010 Red Hat, Inc.
+ * Copyright (C) 2005-2011 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -34,7 +34,9 @@ import org.apache.commons.logging.LogFactory;
import org.jboss.deployers.spi.management.KnownDeploymentTypes;
import org.jboss.deployers.spi.management.ManagementView;
import org.jboss.deployers.spi.management.deploy.DeploymentManager;
+import org.jboss.managed.api.DeploymentState;
import org.jboss.managed.api.ManagedDeployment;
+import org.jboss.profileservice.spi.NoSuchDeploymentException;
import org.jboss.profileservice.spi.ProfileKey;
import org.rhq.core.domain.configuration.Configuration;
@@ -72,7 +74,9 @@ public class ManagedComponentDeployer implements Deployer {
}
public void deploy(CreateResourceReport createResourceReport, ResourceType
resourceType) {
+ createResourceReport.setStatus(null);
File archiveFile = null;
+
try {
ResourcePackageDetails details = createResourceReport.getPackageDetails();
PackageDetailsKey key = details.getKey();
@@ -163,11 +167,34 @@ public class ManagedComponentDeployer implements Deployer {
}
}
- // Deployment was successful!
+ ManagementView managementView =
this.profileServiceConnection.getManagementView();
+ managementView.load();
+ for (String deployedArchive : deployedArchives) {
+ ManagedDeployment managedDeployment;
+ try {
+ managedDeployment = managementView.getDeployment(deployedArchive);
+ } catch (NoSuchDeploymentException e) {
+ LOG.error("Failed to find managed deployment '" +
deployedArchive + "' after deploying '"
+ + archiveName + "'.");
+ continue;
+ }
+ DeploymentState state = managedDeployment.getDeploymentState();
+ if (state != DeploymentState.STARTED) {
+ // The app failed to start - do not consider this a FAILURE, since it
was at least deployed
+ // successfully. However, set the status to INVALID_ARTIFACT and set
an error message, so
+ // the user is informed of the condition.
+
createResourceReport.setStatus(CreateResourceStatus.INVALID_ARTIFACT);
+ createResourceReport.setErrorMessage("Failed to start
application '" + deployedArchive + "' after deploying it.");
+ break;
+ }
+ }
+
createResourceReport.setResourceName(archiveName);
createResourceReport.setResourceKey(archiveName);
- createResourceReport.setStatus(CreateResourceStatus.SUCCESS);
-
+ if (createResourceReport.getStatus() == null) {
+ // Deployment was 100% successful, including starting the app.
+ createResourceReport.setStatus(CreateResourceStatus.SUCCESS);
+ }
} catch (Throwable t) {
LOG.error("Error deploying application for request [" +
createResourceReport + "].", t);
createResourceReport.setStatus(CreateResourceStatus.FAILURE);
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/DeploymentUtils.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/DeploymentUtils.java
index 7fb2ee8..560cb9d 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/DeploymentUtils.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/DeploymentUtils.java
@@ -1,6 +1,6 @@
/*
* Jopr Management Platform
- * Copyright (C) 2005-2009 Red Hat, Inc.
+ * Copyright (C) 2005-2011 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -107,7 +107,7 @@ public class DeploymentUtils {
+ ThrowableUtil.getAllMessages(distributeFailure));
}
- // Now that we've successfully distributed the deployment, we need to start
it.
+ // Now that we've successfully distributed the deployment, try to start it.
String[] deploymentNames = progress.getDeploymentID().getRepositoryNames();
DeploymentStatus startStatus;
Exception startFailure = null;
@@ -122,30 +122,11 @@ public class DeploymentUtils {
startFailure = e;
}
if (startFailure != null) {
- LOG.error("Failed to start deployment " +
Arrays.asList(deploymentNames) + " during deployment of '"
- + archiveFileName + "'. Backing out the deployment...",
startFailure);
- // If start failed, the app is invalid, so back out the deployment.
- DeploymentStatus removeStatus;
- Exception removeFailure = null;
- try {
- progress = deploymentManager.remove(deploymentNames);
- removeStatus = run(progress);
- if (removeStatus.isFailed()) {
- removeFailure = (removeStatus.getFailure() != null) ?
removeStatus.getFailure() : new Exception(
- "Remove failed for unknown reason.");
- }
- } catch (Exception e) {
- removeFailure = e;
- }
- if (removeFailure != null) {
- LOG.error("Failed to remove deployment " +
Arrays.asList(deploymentNames) + " after start failure.",
- removeFailure);
- }
- throw new Exception("Failed to start deployment " +
Arrays.asList(deploymentNames)
- + " during deployment of '" + archiveFileName + "'
- cause: "
- + ThrowableUtil.getAllMessages(startFailure));
+ // There are times when the user expects the app to fail to start, so just
log a warning.
+ LOG.warn("Failed to start deployment " +
Arrays.asList(deploymentNames) + " during deployment of '"
+ + archiveFileName + "'.", startFailure);
}
- // If we made it this far, the deployment (distribution+start) was successful.
+
return deploymentNames;
}
commit 6002385bcf18e960d5ef4312d656e13ebf870239
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Tue Jun 21 14:43:16 2011 -0400
set read timeout on http url connections to prevent calls to down URLs from hanging
when running on certain versions of JRockit
(
https://bugzilla.redhat.com/show_bug.cgi?id=714817)
diff --git a/modules/plugins/apache/src/main/java/org/rhq/plugins/www/util/WWWUtils.java
b/modules/plugins/apache/src/main/java/org/rhq/plugins/www/util/WWWUtils.java
index 5afb34a..a979565 100644
--- a/modules/plugins/apache/src/main/java/org/rhq/plugins/www/util/WWWUtils.java
+++ b/modules/plugins/apache/src/main/java/org/rhq/plugins/www/util/WWWUtils.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2011 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -21,8 +21,6 @@ package org.rhq.plugins.www.util;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
@@ -32,36 +30,37 @@ import javax.net.ssl.SSLException;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
-import javax.xml.ws.handler.LogicalHandler;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
- * Helper class that contains methods that send http requests and evaluate results
+ * Helper class that contains methods that send HTTP requests and evaluate results.
+ *
* @author Ian Springer
*/
public abstract class WWWUtils {
- /**
- * Sends a HEAD request to the passed url and returns if the server was
reachable
- * @param httpURL a http or https URL to check
- * @return true if connecting to the URL succeeds, or false otherwise
- */
-
+ /**
+ * Sends a HEAD request for the passed URL and returns true if the URL was
reachable.
+ *
+ * @param httpURL a http or https URL to check
+ * @return true if connecting to the URL succeeds, or false otherwise
+ */
public static boolean isAvailable(URL httpURL) {
String failMsg = "URL [" + httpURL + "] returned
unavailable";
try {
HttpURLConnection connection = (HttpURLConnection) httpURL.openConnection();
connection.setRequestMethod("HEAD");
connection.setConnectTimeout(3000);
+ connection.setReadTimeout(1000);
if (connection instanceof HttpsURLConnection) {
disableCertificateVerification((HttpsURLConnection) connection);
}
connection.connect();
- // get the respone code to actually trigger sending the Request.
+ // get the response code to actually trigger sending the Request.
connection.getResponseCode();
} catch (SSLException e) {
Log log = LogFactory.getLog(WWWUtils.class);
@@ -77,9 +76,10 @@ public abstract class WWWUtils {
}
/**
- * Get the content of the 'Server:' header
+ * Get the content of the 'Server' header.
+ *
* @param httpURL a http or https URL to get the header from
- * @return The contents of the header or null if anything went wrong or the field was
not present.
+ * @return the contents of the header or null if anything went wrong or the field was
not present.
*/
public static String getServerHeader(URL httpURL) {
String ret;
@@ -88,8 +88,10 @@ public abstract class WWWUtils {
HttpURLConnection connection = (HttpURLConnection) httpURL.openConnection();
connection.setRequestMethod("HEAD");
connection.setConnectTimeout(3000);
+ connection.setReadTimeout(1000);
+
connection.connect();
- // get the respone code to actually trigger sending the Request.
+ // get the response code to actually trigger sending the Request.
connection.getResponseCode();
ret = connection.getHeaderField("Server");
}
@@ -108,9 +110,11 @@ public abstract class WWWUtils {
}
public void checkClientTrusted(X509Certificate[] certs, String authType)
{
+ return;
}
public void checkServerTrusted(X509Certificate[] certs, String authType)
{
+ return;
}
}
};
@@ -120,14 +124,11 @@ public abstract class WWWUtils {
connection.setSSLSocketFactory(sslContext.getSocketFactory());
connection.setHostnameVerifier(new HostnameVerifier() {
@Override
- public boolean verify(String s, SSLSession sslSession) {
+ public boolean verify(String hostname, SSLSession sslSession) {
return true;
}
});
- } catch (NoSuchAlgorithmException e) {
- Log log = LogFactory.getLog(WWWUtils.class);
- log.warn("Failed to disable certificate validation.", e);
- } catch (KeyManagementException e) {
+ } catch (Exception e) {
Log log = LogFactory.getLog(WWWUtils.class);
log.warn("Failed to disable certificate validation.", e);
}
commit 1ec59dd46414571a9665657d74db4a97c8bfe0b7
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Mon Jun 20 15:52:02 2011 -0500
Remove findbugs filter and parse all the files included in project.
diff --git a/pom.xml b/pom.xml
index 404ca42..98dfb0c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1213,7 +1213,6 @@
<version>2.3.2</version>
<configuration>
<xmlOutput>true</xmlOutput>
- <onlyAnalyze>org.rhq.*,org.jboss.jopr.*</onlyAnalyze>
<effort>Max</effort>
<threshold>Default</threshold>
</configuration>
commit fd40309615241dcc25419fc11c811254944b29c0
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Mon Jun 20 14:42:55 2011 -0500
Upgrade findbugs to version 2.3.2.
diff --git a/modules/plugins/jboss-as-5/pom.xml b/modules/plugins/jboss-as-5/pom.xml
index 7d0fdcc..6ec0096 100644
--- a/modules/plugins/jboss-as-5/pom.xml
+++ b/modules/plugins/jboss-as-5/pom.xml
@@ -720,7 +720,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
- <version>2.0.1</version>
+ <version>2.3.2</version>
</plugin>
</plugins>
</reporting>
diff --git a/modules/plugins/jboss-cache-v3/pom.xml
b/modules/plugins/jboss-cache-v3/pom.xml
index 1d1e3aa..1a3a1df 100644
--- a/modules/plugins/jboss-cache-v3/pom.xml
+++ b/modules/plugins/jboss-cache-v3/pom.xml
@@ -645,7 +645,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
- <version>2.0.1</version>
+ <version>2.3.2</version>
</plugin>
</plugins>
</reporting>
diff --git a/pom.xml b/pom.xml
index b7f249e..404ca42 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,7 +74,7 @@
<commons-logging.version>1.1.0.jboss</commons-logging.version>
<concurrent.version>1.3.4-jboss-update1</concurrent.version> <!--
oswego-concurrent compatible with 4.2.3.GA -->
- <findbugs.version>2.3.1</findbugs.version>
+ <findbugs.version>2.3.2</findbugs.version>
<getopt.version>1.0.13</getopt.version>
<hibernate3.version>3.2.r14201-2</hibernate3.version>
<hibernate-annotations.version>3.2.1.GA</hibernate-annotations.version>
@@ -1210,7 +1210,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
- <version>2.3.1</version>
+ <version>2.3.2</version>
<configuration>
<xmlOutput>true</xmlOutput>
<onlyAnalyze>org.rhq.*,org.jboss.jopr.*</onlyAnalyze>
commit b06ec2e2753e497bc08041a13d5d5c728a1ffecf
Merge: 3434b60 04f721e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Jun 20 12:54:06 2011 +0200
Merge branch 'master' into as7plugin
commit eb65e1d4bd710ca8e2c2f56c36419aecf8b78a4e
Merge: 7e9533e 04f721e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Jun 20 12:50:01 2011 +0200
Merge branch 'master' into linking
Conflicts:
modules/core/dbutils/pom.xml
modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
diff --cc modules/core/dbutils/pom.xml
index c4c6a6a,e5994fe..a368986
--- a/modules/core/dbutils/pom.xml
+++ b/modules/core/dbutils/pom.xml
@@@ -22,7 -22,7 +22,7 @@@
<properties>
<scm.module.path>modules/core/dbutils/</scm.module.path>
- <db.schema.version>2.108</db.schema.version>
- <db.schema.version>2.109</db.schema.version>
++ <db.schema.version>2.110</db.schema.version>
</properties>
<dependencies>
diff --cc modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
index 20ebfb9,bbaa066..4d66b02
--- a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
+++ b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
@@@ -3390,35 -3390,30 +3390,60 @@@
<schema-createSequence name="RHQ_OPERATION_SCHEDULE_ID_SEQ"
initial="10001"/>
</schemaSpec>
++
+ <!-- BZ 644328 -->
<schemaSpec version="2.108">
+ <schema-addColumn table="RHQ_RESOURCE_TYPE"
column="BUNDLE_CONFIG_ID" columnType="INTEGER" />
+ <schema-directSQL>
+ <statement desc="Creating RHQ_RESOURCE_TYPE foreign key
relation to RHQ_CONFIG for bundle config">
+ ALTER TABLE RHQ_RESOURCE_TYPE
+ ADD CONSTRAINT RHQ_RT_BUNDLE_CONFIG_ID_FK
+ FOREIGN KEY (BUNDLE_CONFIG_ID)
+ REFERENCES RHQ_CONFIG (ID)
+ </statement>
+ </schema-directSQL>
+ </schemaSpec>
+
+ <!-- BZ 644328 -->
+ <schemaSpec version="2.109">
+ <schema-addColumn table="RHQ_BUNDLE_DESTINATION"
column="DEST_BASE_DIR_NAME" columnType="VARCHAR2"
precision="200" />
+ <schema-directSQL>
+ <statement desc="Pointing all bundle destinations to the
platform type's Root File System dest base dir">
+ UPDATE RHQ_BUNDLE_DESTINATION SET DEST_BASE_DIR_NAME = 'Root
File System'
+ </statement>
+ </schema-directSQL>
+ <schema-alterColumn table="RHQ_BUNDLE_DESTINATION"
column="DEST_BASE_DIR_NAME" nullable="FALSE"/>
+ </schemaSpec>
+
++ <schemaSpec version="2.110">
+ <schema-directSQL>
+ <statement desc="Creating table
RHQ_PROP_DEF_OPT_SRC">
+ CREATE TABLE RHQ_PROP_DEF_OPT_SRC ( ID INTEGER PRIMARY KEY )
+ </statement>
+ </schema-directSQL>
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="LINK_TO_TARGET" columnType="BOOLEAN"/>
+ <schema-alterColumn table="RHQ_PROP_DEF_OPT_SRC"
column="LINK_TO_TARGET" nullable="TRUE"/>
+
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="FILTER" columnType="VARCHAR2" precision="40"/>
+ <schema-alterColumn table="RHQ_PROP_DEF_OPT_SRC"
column="FILTER" nullable="TRUE"/>
+
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="EXPRESSION" columnType="VARCHAR2"
precision="400"/>
+ <schema-alterColumn table="RHQ_PROP_DEF_OPT_SRC"
column="EXPRESSION" nullable="FALSE"/>
+
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="TARGET_TYPE" columnType="VARCHAR2"
precision="20"/>
+ <schema-alterColumn table="RHQ_PROP_DEF_OPT_SRC"
column="TARGET_TYPE" nullable="FALSE"/>
+
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="PROPERTY_DEF_ID" columnType="INTEGER"/>
+ <schema-directSQL>
+ <statement desc="Adding a fk">
+ ALTER TABLE RHQ_PROP_DEF_OPT_SRC
+ ADD CONSTRAINT RHQ_PROP_DEF_OPT_SRC_ID_FK
+ FOREIGN KEY (PROPERTY_DEF_ID)
+ REFERENCES RHQ_CONFIG_PROP_DEF (ID)
+ </statement>
+ </schema-directSQL>
+ <schema-createSequence
name="rhq_config_prop_def_opt_src_id_seq" initial="10001" />
+ </schemaSpec>
</dbupgrade>
</target>
</project>
commit 7e9533e6a0a07a333beb8ed2a3867829098f554e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Jun 20 12:36:03 2011 +0200
Put the callback before the creation of the new Editor.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
index bd59ff8..3e1364b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
@@ -71,8 +71,6 @@ import com.smartgwt.client.widgets.form.fields.events.ChangeEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
-import com.smartgwt.client.widgets.form.fields.events.TitleHoverEvent;
-import com.smartgwt.client.widgets.form.fields.events.TitleHoverHandler;
import com.smartgwt.client.widgets.form.validator.CustomValidator;
import com.smartgwt.client.widgets.form.validator.FloatRangeValidator;
import com.smartgwt.client.widgets.form.validator.IntegerRangeValidator;
@@ -352,22 +350,6 @@ public class ConfigurationEditor extends LocatableVLayout {
}
}
- if (configurationDefinition!=null ) {
-
configurationService.getOptionValuesForConfigDefinition(configurationDefinition,new
AsyncCallback<ConfigurationDefinition>() {
- @Override
- public void onFailure(Throwable throwable) {
- showError(throwable);
- }
-
- @Override
- public void onSuccess(ConfigurationDefinition result) {
- if (loadHandler!=null)
- loadHandler.loadedConfigurationDefinition(result);
- }
- });
- }
-
-
reload();
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
index 528f2ef..ed727db 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/AbstractOperationScheduleDetailsView.java
@@ -28,6 +28,7 @@ import java.util.Set;
import java.util.TreeSet;
import com.google.gwt.core.client.JavaScriptObject;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.widgets.Canvas;
@@ -58,6 +59,8 @@ import
org.rhq.enterprise.gui.coregui.client.components.form.EnhancedDynamicForm
import org.rhq.enterprise.gui.coregui.client.components.form.TimeUnit;
import org.rhq.enterprise.gui.coregui.client.components.form.UnitType;
import org.rhq.enterprise.gui.coregui.client.components.trigger.JobTriggerEditor;
+import org.rhq.enterprise.gui.coregui.client.gwt.ConfigurationGWTServiceAsync;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.schedule.ResourceOperationScheduleDataSource;
import org.rhq.enterprise.gui.coregui.client.util.FormUtility;
import org.rhq.enterprise.gui.coregui.client.util.TypeConversionUtility;
@@ -355,7 +358,7 @@ public abstract class AbstractOperationScheduleDetailsView extends
if (operationName == null) {
value = "<i>" +
MSG.view_operationScheduleDetails_fieldDefault_parameters() + "</i>";
} else {
- ConfigurationDefinition parametersDefinition =
this.operationNameToParametersDefinitionMap
+ final ConfigurationDefinition parametersDefinition =
this.operationNameToParametersDefinitionMap
.get(operationName);
if (parametersDefinition == null ||
parametersDefinition.getPropertyDefinitions().isEmpty()) {
value = "<i>" +
MSG.view_operationScheduleDetails_noParameters() + "</i>";
@@ -382,11 +385,40 @@ public abstract class AbstractOperationScheduleDetailsView extends
} else {
}
+
+ ConfigurationGWTServiceAsync configurationService =
GWTServiceLookup.getConfigurationService();
+
configurationService.getOptionValuesForConfigDefinition(parametersDefinition,new
AsyncCallback<ConfigurationDefinition>() {
+
+
+ @Override
+ public void onFailure(Throwable throwable) {
+ ConfigurationEditor configurationEditor = new
ConfigurationEditor("ParametersEditor",
+ parametersDefinition, parameters);
+ configurationEditor.setReadOnly(isReadOnly());
+
operationParametersConfigurationHolder.addMember(configurationEditor);
+ operationParametersConfigurationHolder.show();
+
+ }
+
+ @Override
+ public void onSuccess(ConfigurationDefinition result) {
+ ConfigurationEditor configurationEditor = new
ConfigurationEditor("ParametersEditor",
+ result, parameters);
+ configurationEditor.setReadOnly(isReadOnly());
+
operationParametersConfigurationHolder.addMember(configurationEditor);
+ operationParametersConfigurationHolder.show();
+
+ }
+ });
+
+
+/*
ConfigurationEditor configurationEditor = new
ConfigurationEditor("ParametersEditor",
parametersDefinition, this.parameters);
configurationEditor.setReadOnly(isReadOnly());
this.operationParametersConfigurationHolder.addMember(configurationEditor);
this.operationParametersConfigurationHolder.show();
+*/
}
}
this.operationParametersItem.setValue(value);
commit 04f721e861f260537ba85fd33fb79e8620dae01b
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Jun 17 17:19:06 2011 -0400
provide a "+" add icon to the bundle deploy wizard's create destination
step
this allows you to create a group right there in case you don't yet
have a group that you want
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
index b7fedc0..54f6f15 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
@@ -25,11 +25,14 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.CanvasItem;
+import com.smartgwt.client.widgets.form.fields.FormItemIcon;
import com.smartgwt.client.widgets.form.fields.RadioGroupItem;
import com.smartgwt.client.widgets.form.fields.TextAreaItem;
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 com.smartgwt.client.widgets.form.fields.events.IconClickEvent;
+import com.smartgwt.client.widgets.form.fields.events.IconClickHandler;
import com.smartgwt.client.widgets.form.validator.IsIntegerValidator;
import com.smartgwt.client.widgets.form.validator.Validator;
import com.smartgwt.client.widgets.layout.VLayout;
@@ -37,11 +40,13 @@ import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.bundle.BundleDestination;
import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
import
org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory;
+import org.rhq.core.domain.resource.group.ResourceGroup;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import
org.rhq.enterprise.gui.coregui.client.bundle.deploy.selection.SingleCompatibleResourceGroupSelector;
import org.rhq.enterprise.gui.coregui.client.components.wizard.AbstractWizardStep;
import org.rhq.enterprise.gui.coregui.client.gwt.BundleGWTServiceAsync;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import
org.rhq.enterprise.gui.coregui.client.inventory.groups.wizard.AbstractGroupCreateWizard;
import org.rhq.enterprise.gui.coregui.client.util.FormUtility;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
@@ -205,7 +210,18 @@ public class GetDestinationStep extends AbstractWizardStep {
}
}
});
- FormUtility.addContextualHelp(this.selector,
MSG.view_bundle_deployWizard_getDest_group_help());
+ final FormItemIcon newGroupIcon = new FormItemIcon();
+ newGroupIcon.setSrc("[SKIN]/actions/add.png");
+ this.selector.addIconClickHandler(new IconClickHandler() {
+ public void onIconClick(IconClickEvent event) {
+ if (event.getIcon().equals(newGroupIcon)) {
+ new QuickGroupCreateWizard(selector).startWizard();
+ }
+ }
+ });
+
+ FormUtility.addContextualHelp(this.selector,
MSG.view_bundle_deployWizard_getDest_group_help(),
+ newGroupIcon);
this.valForm.setItems(nameTextItem, descriptionTextAreaItem, this.selector,
destBaseDirItem,
deployDirTextItem);
@@ -278,4 +294,18 @@ public class GetDestinationStep extends AbstractWizardStep {
}
});
}
+
+ private class QuickGroupCreateWizard extends AbstractGroupCreateWizard {
+ private SingleCompatibleResourceGroupSelector selector;
+
+ public QuickGroupCreateWizard(SingleCompatibleResourceGroupSelector selector) {
+ super();
+ this.selector = selector;
+ }
+
+ public void groupCreateCallback(ResourceGroup group) {
+ selector.fetchData();
+ }
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/AbstractGroupCreateWizard.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/AbstractGroupCreateWizard.java
new file mode 100644
index 0000000..9ef3573
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/AbstractGroupCreateWizard.java
@@ -0,0 +1,113 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2010 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, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * 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 and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.enterprise.gui.coregui.client.inventory.groups.wizard;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.widgets.IButton;
+
+import org.rhq.core.domain.resource.group.ResourceGroup;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.LinkManager;
+import org.rhq.enterprise.gui.coregui.client.components.wizard.AbstractWizard;
+import org.rhq.enterprise.gui.coregui.client.components.wizard.WizardStep;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGroupGWTServiceAsync;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message;
+
+/**
+ * A wizard for creating a new Resource group. This is an abstract base class that
+ * subclasses can use to perform group creation.
+ *
+ * @author Greg Hinkle
+ * @author John Mazzitelli
+ */
+public abstract class AbstractGroupCreateWizard extends AbstractWizard {
+ private GroupCreateStep createStep;
+ private GroupMembersStep memberStep;
+
+ public AbstractGroupCreateWizard() {
+ List<WizardStep> steps = new ArrayList<WizardStep>();
+ steps.add(createStep = new GroupCreateStep());
+ steps.add(memberStep = new GroupMembersStep(this));
+ setSteps(steps);
+ }
+
+ public String getWindowTitle() {
+ return MSG.view_groupCreateWizard_windowTitle();
+ }
+
+ public String getTitle() {
+ return MSG.view_groupCreateWizard_title();
+ }
+
+ public String getSubtitle() {
+ return null;
+ }
+
+ public List<IButton> getCustomButtons(int step) {
+ return null;
+ }
+
+ public void cancel() {
+ // Nothing to do. Group is persisted after the "Finish" button.
+ }
+
+ public boolean createGroup() {
+
+ ResourceGroupGWTServiceAsync groupService =
GWTServiceLookup.getResourceGroupService();
+
+ groupService.createResourceGroup(createStep.getGroup(),
memberStep.getSelectedResourceIds(),
+ new AsyncCallback<ResourceGroup>() {
+ public void onFailure(Throwable caught) {
+
CoreGUI.getErrorHandler().handleError(MSG.view_groupCreateWizard_createFailure(),
caught);
+ }
+
+ public void onSuccess(ResourceGroup result) {
+ String groupUrl = LinkManager.getResourceGroupLink(result.getId());
+ String conciseMessage =
MSG.view_groupCreateWizard_createSuccessful_concise(groupUrl);
+ String detailedMessage =
MSG.view_groupCreateWizard_createSuccessful_full(result.getGroupCategory()
+ .name().toLowerCase(), result.getName(), String
+ .valueOf(memberStep.getSelectedResourceIds().length));
+ CoreGUI.getMessageCenter().notify(new Message(conciseMessage,
detailedMessage));
+ groupCreateCallback(result);
+ }
+ });
+
+ return true;
+ }
+
+ /**
+ * Subclasses can override this in order to perform additional tasks once the group
is created.
+ * Use this to do things like refresh other parts of the UI that need to see the new
group
+ * that was created.
+ *
+ * @param group the new group that was created
+ */
+ protected void groupCreateCallback(ResourceGroup group) {
+ return; // no-op - subclasses can override this method to do things
+ }
+
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupCreateWizard.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupCreateWizard.java
index e437e31..462b636 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupCreateWizard.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupCreateWizard.java
@@ -22,84 +22,24 @@
*/
package org.rhq.enterprise.gui.coregui.client.inventory.groups.wizard;
-import java.util.ArrayList;
-import java.util.List;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.smartgwt.client.widgets.IButton;
-
import org.rhq.core.domain.resource.group.ResourceGroup;
-import org.rhq.enterprise.gui.coregui.client.CoreGUI;
-import org.rhq.enterprise.gui.coregui.client.LinkManager;
-import org.rhq.enterprise.gui.coregui.client.components.wizard.AbstractWizard;
-import org.rhq.enterprise.gui.coregui.client.components.wizard.WizardStep;
-import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
-import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGroupGWTServiceAsync;
import org.rhq.enterprise.gui.coregui.client.inventory.groups.ResourceGroupListView;
-import org.rhq.enterprise.gui.coregui.client.util.message.Message;
/**
* A wizard for creating a new Resource group.
*
* @author Greg Hinkle
+ * @author John Mazzitelli
*/
-public class GroupCreateWizard extends AbstractWizard {
+public class GroupCreateWizard extends AbstractGroupCreateWizard {
private ResourceGroupListView resourceGroupListView;
- private GroupCreateStep createStep;
- private GroupMembersStep memberStep;
-
public GroupCreateWizard(ResourceGroupListView resourceGroupListView) {
+ super();
this.resourceGroupListView = resourceGroupListView;
-
- List<WizardStep> steps = new ArrayList<WizardStep>();
-
- steps.add(createStep = new GroupCreateStep());
- steps.add(memberStep = new GroupMembersStep(this));
- setSteps(steps);
}
- public String getWindowTitle() {
- return MSG.view_groupCreateWizard_windowTitle();
- }
-
- public String getTitle() {
- return MSG.view_groupCreateWizard_title();
- }
-
- public String getSubtitle() {
- return null;
- }
-
- public List<IButton> getCustomButtons(int step) {
- return null;
- }
-
- public void cancel() {
- // Nothing to do. Group is persisted after the "Finish" button.
- }
-
- public boolean createGroup() {
-
- ResourceGroupGWTServiceAsync groupService =
GWTServiceLookup.getResourceGroupService();
-
- groupService.createResourceGroup(createStep.getGroup(),
memberStep.getSelectedResourceIds(),
- new AsyncCallback<ResourceGroup>() {
- public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_groupCreateWizard_createFailure(),
caught);
- }
-
- public void onSuccess(ResourceGroup result) {
- String groupUrl = LinkManager.getResourceGroupLink(result.getId());
- String conciseMessage =
MSG.view_groupCreateWizard_createSuccessful_concise(groupUrl);
- String detailedMessage =
MSG.view_groupCreateWizard_createSuccessful_full(result.getGroupCategory()
- .name().toLowerCase(), result.getName(), String
- .valueOf(memberStep.getSelectedResourceIds().length));
- CoreGUI.getMessageCenter().notify(new Message(conciseMessage,
detailedMessage));
- resourceGroupListView.refresh();
- }
- });
-
- return true;
+ public void groupCreateCallback(ResourceGroup group) {
+ resourceGroupListView.refresh();
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupMembersStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupMembersStep.java
index 0f8fe84..6b4e85d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupMembersStep.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/wizard/GroupMembersStep.java
@@ -35,10 +35,10 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.Locatable;
*/
public class GroupMembersStep extends AbstractWizardStep {
- private GroupCreateWizard wizard = null;
+ private AbstractGroupCreateWizard wizard = null;
private ResourceSelector selector = null;
- public GroupMembersStep(GroupCreateWizard wizard) {
+ public GroupMembersStep(AbstractGroupCreateWizard wizard) {
this.wizard = wizard;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
index c510c4b..09f5ec4 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
@@ -50,10 +50,38 @@ public class FormUtility {
}
}
+ /**
+ * Adds a help icon to the given form item. When the help icon is clicked,
+ * the helpText is displayed to the user.
+ *
+ * @param item item that will get a single help icon added to it
+ * @param helpText the help text to show the user when the help icon is clicked
+ */
public static void addContextualHelp(FormItem item, final String helpText) {
+ addContextualHelp(item, helpText, (FormItemIcon[]) null);
+ }
+
+ /**
+ * Just like {@link #addContextualHelp(FormItem, String)} except this will also add
+ * the given icons to the form item, with the help icon being the last icon.
+ *
+ * @param item item that will get the given icons plus a help icon added to it
+ * @param helpText the help text to show the user when the help icon is clicked
+ * @param icons other icons to add to the form item - these will appear before the
help icon
+ */
+ public static void addContextualHelp(FormItem item, final String helpText,
FormItemIcon... icons) {
final FormItemIcon helpIcon = new FormItemIcon();
helpIcon.setSrc(ImageManager.getHelpIcon());
- item.setIcons(helpIcon);
+
+ if (icons == null) {
+ item.setIcons(helpIcon);
+ } else {
+ FormItemIcon[] allIcons = new FormItemIcon[icons.length + 1];
+ System.arraycopy(icons, 0, allIcons, 0, icons.length);
+ allIcons[icons.length] = helpIcon;
+ item.setIcons(allIcons);
+ }
+
item.addIconClickHandler(new IconClickHandler() {
public void onIconClick(IconClickEvent event) {
if (event.getIcon().equals(helpIcon)) {
commit 757c7d6923741ee83657de0c078a1d46c1603921
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Jun 14 10:13:40 2011 +0200
BZ 712311 prevent a NPE in case there is no current config.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
index 7e7d926..14d22c2 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
@@ -410,14 +410,15 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
+ "]; will assume latest resource configuration update is the
current resource configuration.");
}
- // Mask the configuration before returning the update.
- Configuration configuration = current.getConfiguration();
- ConfigurationDefinition configurationDefinition =
getResourceConfigurationDefinitionForResourceType(
- subjectManager.getOverlord(), resource.getResourceType().getId());
- // We do not want the masked configuration persisted, so detach all entities
before masking the configuration.
- entityManager.clear();
- ConfigurationMaskingUtility.maskConfiguration(configuration,
configurationDefinition);
-
+ if (current!=null) {
+ // Mask the configuration before returning the update.
+ Configuration configuration = current.getConfiguration();
+ ConfigurationDefinition configurationDefinition =
getResourceConfigurationDefinitionForResourceType(
+ subjectManager.getOverlord(), resource.getResourceType().getId());
+ // We do not want the masked configuration persisted, so detach all entities
before masking the configuration.
+ entityManager.clear();
+ ConfigurationMaskingUtility.maskConfiguration(configuration,
configurationDefinition);
+ }
return current;
}
commit 321e2eec625cb9e503e9135722704c3da01c7f15
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Jun 17 14:56:35 2011 -0400
rename all on.* sysprops in perftest plugin to rhq.* and replace other ON/JON
references with "RHQ"; in perftest discovery code, if rhq.perftest.scenario
sysprop is not defined, log an info message, rather than an error; include
perftest plugin in RHQ distribution
diff --git a/modules/enterprise/server/ear/pom.xml
b/modules/enterprise/server/ear/pom.xml
index 4d6ee84..00b29ea 100644
--- a/modules/enterprise/server/ear/pom.xml
+++ b/modules/enterprise/server/ear/pom.xml
@@ -692,6 +692,12 @@
<artifactItem>
<groupId>org.rhq</groupId>
+
<artifactId>rhq-perftest-plugin</artifactId>
+ <version>${project.version}</version>
+ </artifactItem>
+
+ <artifactItem>
+ <groupId>org.rhq</groupId>
<artifactId>rhq-snmptrapd-plugin</artifactId>
<version>${project.version}</version>
</artifactItem>
diff --git a/modules/plugins/perftest/README b/modules/plugins/perftest/README
index 3e2f1cb..bb31981 100644
--- a/modules/plugins/perftest/README
+++ b/modules/plugins/perftest/README
@@ -1,12 +1,12 @@
Usage
=============================
-- Deploy the perftest plugin to the JON server (by default, the agent will download the
plugin on startup)
+- Deploy the perftest plugin to the RHQ Server (by default, the Agent will download the
plugin on startup)
- The scenario to use is specified to the agent through a system property. The value of
this property should be the
- name of the XML file without the .xml extension. The property name is
on.perftest.scenario. For example (remove
- the quotes)
+ name of the XML file without the .xml extension. The property name is
rhq.perftest.scenario. For example (remove
+ the quotes):
- "-Don.perftest.scenario=high-servers-1000"
+ "-Drhq.perftest.scenario=high-servers-1000"
-- Some scenarios may be configurable and require other system properties to dictate its
behavior. Check the
- scenario itself for more details.
\ No newline at end of file
+- Some scenarios may be configurable and require other system properties to dictate their
behavior. Check the
+ scenario XML files for more details.
\ No newline at end of file
diff --git
a/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestComponent.java
b/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestComponent.java
index 485ff20..1f5b2e6 100644
---
a/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestComponent.java
+++
b/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestComponent.java
@@ -62,7 +62,7 @@ import java.util.Set;
import java.util.Arrays;
/**
- * JON resource component for handling resources defined in the performance test
scenario.
+ * RHQ resource component for handling resources defined in the performance test
scenario.
*
* @author Jason Dobies
*/
diff --git
a/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestDiscoveryComponent.java
b/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestDiscoveryComponent.java
index 6830f5f..e47e9fb 100644
---
a/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestDiscoveryComponent.java
+++
b/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestDiscoveryComponent.java
@@ -29,7 +29,7 @@ import org.rhq.plugins.perftest.configuration.ConfigurationFactory;
import org.rhq.plugins.perftest.resource.ResourceFactory;
/**
- * JON discovery component for discovering resources defined in the performance test
scenario.
+ * RHQ discovery component for discovering resources defined in the performance test
scenario.
*
* @author Jason Dobies
*/
diff --git
a/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestRogueDiscoveryComponent.java
b/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestRogueDiscoveryComponent.java
index 7f4eeda..433668e 100644
---
a/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestRogueDiscoveryComponent.java
+++
b/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/PerfTestRogueDiscoveryComponent.java
@@ -34,8 +34,8 @@ import org.rhq.plugins.perftest.resource.ResourceFactory;
public class PerfTestRogueDiscoveryComponent implements ResourceDiscoveryComponent {
private Log log = LogFactory.getLog(PerfTestRogueDiscoveryComponent.class);
- private static final String SYSPROP_DISCOVERY =
"on.perftest.server-rogue-discovery";
- private static final String SYSPROP_DISCOVERY_INT =
"on.perftest.server-rogue-discovery-interruptable";
+ private static final String SYSPROP_DISCOVERY =
"rhq.perftest.server-rogue-discovery";
+ private static final String SYSPROP_DISCOVERY_INT =
"rhq.perftest.server-rogue-discovery-interruptable";
public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext context)
throws InvalidPluginConfigurationException, Exception {
diff --git
a/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/ScenarioManager.java
b/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/ScenarioManager.java
index 5cd8fea..306f3d5 100644
---
a/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/ScenarioManager.java
+++
b/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/ScenarioManager.java
@@ -68,7 +68,7 @@ import org.rhq.plugins.perftest.trait.SimpleTraitFactory;
import org.rhq.plugins.perftest.trait.TraitFactory;
/**
- * Loads performance testing scenarios and parses into usable components by the JON
resource components.
+ * Loads performance testing scenarios and parses into usable components by the RHQ
resource components.
*
* @author Jason Dobies
*/
@@ -82,7 +82,7 @@ public class ScenarioManager {
* name of the scenario, minus the ".xml". For example, to use the scenario
defined in high-servers.xml, this
* property should be set to "high-servers".
*/
- public static final String SCENARIO_PROPERTY = "on.perftest.scenario";
+ public static final String SCENARIO_PROPERTY = "rhq.perftest.scenario";
/**
* Resource factory used when a scenario doesn't define any resources of a
particular type.
@@ -452,11 +452,11 @@ public class ScenarioManager {
String scenarioName = System.getProperty(SCENARIO_PROPERTY);
if (scenarioName == null) {
- log.error("Cannot find scenario name. Make sure the property " +
SCENARIO_PROPERTY + " is set.");
+ log.info("Cannot find scenario name. Make sure the system property
" + SCENARIO_PROPERTY + " is set.");
return;
}
- log.info("Loading Performance Testing Scenario: " + scenarioName);
+ log.info("Loading Performance Testing Scenario [" + scenarioName +
"]...");
ClassLoader loader = this.getClass().getClassLoader();
URL scenarioUrl = loader.getResource(scenarioName + ".xml");
@@ -485,7 +485,7 @@ public class ScenarioManager {
unmarshaller.setEventHandler(vec);
this.scenario = (Scenario) unmarshaller.unmarshal(scenarioUrl);
} catch (JAXBException e) {
- log.error("Scenario could not be loaded", e);
+ log.error("Scenario [" + scenarioName + "] could not be loaded
from [" + scenarioUrl + "]." , e);
return;
}
}
diff --git
a/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/event/PerfTestEventPoller.java
b/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/event/PerfTestEventPoller.java
index d3d3713..10af135 100644
---
a/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/event/PerfTestEventPoller.java
+++
b/modules/plugins/perftest/src/main/java/org/rhq/plugins/perftest/event/PerfTestEventPoller.java
@@ -10,16 +10,17 @@ import org.rhq.core.pluginapi.inventory.ResourceContext;
/**
* Emits events when polled. Set the following system properties to define behavior:
- * on.perftest.events.count (default is "1")
- * on.perftest.events.severity (default is "INFO")
- * on.perftest.events.polling-interval (in seconds; if this is not set, this poller
object will never be created)
+ *
+ * rhq.perftest.events.count (default is "1")
+ * rhq.perftest.events.severity (default is "INFO")
+ * rhq.perftest.events.polling-interval (in seconds; if this is not set, this poller
object will never be created)
*/
public class PerfTestEventPoller implements EventPoller {
public static final String PERFTEST_EVENT_TYPE = "PerfTestEventType";
- public static final String SYSPROP_EVENTS_POLLING_INTERVAL =
"on.perftest.events.polling-interval";
- public static final String SYSPROP_EVENTS_COUNT =
"on.perftest.events.count";
- public static final String SYSPROP_EVENTS_SEVERITY =
"on.perftest.events.severity";
+ public static final String SYSPROP_EVENTS_POLLING_INTERVAL =
"rhq.perftest.events.polling-interval";
+ public static final String SYSPROP_EVENTS_COUNT =
"rhq.perftest.events.count";
+ public static final String SYSPROP_EVENTS_SEVERITY =
"rhq.perftest.events.severity";
private final ResourceContext resourceContext;
diff --git a/modules/plugins/perftest/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/perftest/src/main/resources/META-INF/rhq-plugin.xml
index 2975ccd..abbb55c 100644
--- a/modules/plugins/perftest/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/perftest/src/main/resources/META-INF/rhq-plugin.xml
@@ -356,18 +356,18 @@
<help>
<![CDATA[
- <p>To enable the perftest plugin, start the agent with
<tt>-Don.perftest.scenario=scenario-name</tt> where the
+ <p>To enable the perftest plugin, start the agent with
<tt>-Drhq.perftest.scenario=scenario-name</tt> where the
scenario name matches one of the included scenario files for an inventory
structure you would like to
- simulated.</p>
+ simulate.</p>
<p>The following setup, for example, will use some typical server and
service configurations resulting in 10
- servers each with 25 child services and each of those will have 2 child-child
services.<p>
+ servers each with 25 child services each having 2 child services of their
own.<p>
<code><pre>
- -Don.perftest.scenario=configurable-average
- -Don.perftest.server-a-count=10
- -Don.perftest.service-a-count=25
- -Don.perftest.service-ab-count=2
+ -Drhq.perftest.scenario=configurable-average
+ -Drhq.perftest.server-a-count=10
+ -Drhq.perftest.service-a-count=25
+ -Drhq.perftest.service-ab-count=2
</pre></code>
]]>
</help>
diff --git a/modules/plugins/perftest/src/main/resources/artifacts.xml
b/modules/plugins/perftest/src/main/resources/artifacts.xml
index 9203575..c12d876 100644
--- a/modules/plugins/perftest/src/main/resources/artifacts.xml
+++ b/modules/plugins/perftest/src/main/resources/artifacts.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<resource type="server-a">
- <simpleResourceGenerator property="on.perftest.server-a-count"/>
- <simpleContentGenerator packageType="artifact1"
numberOfPackages="10" property="on.perftest.artifact1-count"/>
+ <simpleResourceGenerator property="rhq.perftest.server-a-count"/>
+ <simpleContentGenerator packageType="artifact1"
numberOfPackages="10" property="rhq.perftest.artifact1-count"/>
</resource>
</scenario>
diff --git a/modules/plugins/perftest/src/main/resources/calltime.xml
b/modules/plugins/perftest/src/main/resources/calltime.xml
index a2967c5..b2ea6c9 100644
--- a/modules/plugins/perftest/src/main/resources/calltime.xml
+++ b/modules/plugins/perftest/src/main/resources/calltime.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<resource type="server-a">
<simpleResourceGenerator numberOfResources="1"/>
diff --git a/modules/plugins/perftest/src/main/resources/configurable-1.xml
b/modules/plugins/perftest/src/main/resources/configurable-1.xml
index b904d91..55f88b7 100644
--- a/modules/plugins/perftest/src/main/resources/configurable-1.xml
+++ b/modules/plugins/perftest/src/main/resources/configurable-1.xml
@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<!--
This scenario will create a number of servers, each with a number of services.
Both are configurable
through the properties specified in this file. For example, to create 10 servers,
each with 100 services,
the following should be passed to the agent:
- -Don.perftest.scenario=configurable-1 -Don.perftest.server-a-count=10
-Don.perftest.service-a-count=50
+ -Drhq.perftest.scenario=configurable-1 -Drhq.perftest.server-a-count=10
-Drhq.perftest.service-a-count=50
-->
<resource type="server-a">
- <simpleResourceGenerator property="on.perftest.server-a-count"/>
+ <simpleResourceGenerator property="rhq.perftest.server-a-count"/>
</resource>
<resource type="service-a">
- <simpleResourceGenerator property="on.perftest.service-a-count"/>
+ <simpleResourceGenerator property="rhq.perftest.service-a-count"/>
</resource>
</scenario>
diff --git a/modules/plugins/perftest/src/main/resources/configurable-2.xml
b/modules/plugins/perftest/src/main/resources/configurable-2.xml
index 9ae3211..58e9d6a 100644
--- a/modules/plugins/perftest/src/main/resources/configurable-2.xml
+++ b/modules/plugins/perftest/src/main/resources/configurable-2.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<!--
This scenario will create a number of servers, each with a number of services.
Some services (those of type
@@ -9,20 +9,20 @@
specified in this file. For example, to create 10 servers, each with 20 services,
and each of those services
having 5 child services, the following should be passed to the agent:
- -Don.perftest.scenario=configurable-2 -Don.perftest.server-a-count=10
-Don.perftest.service-a-count=50
- -Don.perftest.service-ab-count=5
+ -Drhq.perftest.scenario=configurable-2 -Drhq.perftest.server-a-count=10
-Drhq.perftest.service-a-count=50
+ -Drhq.perftest.service-ab-count=5
-->
<resource type="server-a">
- <simpleResourceGenerator property="on.perftest.server-a-count"/>
+ <simpleResourceGenerator property="rhq.perftest.server-a-count"/>
</resource>
<resource type="service-a">
- <simpleResourceGenerator property="on.perftest.service-a-count"/>
+ <simpleResourceGenerator property="rhq.perftest.service-a-count"/>
</resource>
<resource type="service-ab">
- <simpleResourceGenerator property="on.perftest.service-ab-count"/>
+ <simpleResourceGenerator
property="rhq.perftest.service-ab-count"/>
</resource>
</scenario>
diff --git a/modules/plugins/perftest/src/main/resources/configurable-3.xml
b/modules/plugins/perftest/src/main/resources/configurable-3.xml
index fbfba82..e84530a 100644
--- a/modules/plugins/perftest/src/main/resources/configurable-3.xml
+++ b/modules/plugins/perftest/src/main/resources/configurable-3.xml
@@ -1,24 +1,24 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<!--
This scenario will create a number of servers, each with a number of services.
Both are configurable
through the properties specified in this file. For example, to create 10 servers,
each with 100 services,
the following should be passed to the agent:
- -Don.perftest.scenario=configurable-3 -Don.perftest.server-b-count=10
-Don.perftest.service-b-count=50
+ -Drhq.perftest.scenario=configurable-3 -Drhq.perftest.server-b-count=10
-Drhq.perftest.service-b-count=50
-->
<resource type="server-b">
- <simpleResourceGenerator property="on.perftest.server-b-count"/>
+ <simpleResourceGenerator property="rhq.perftest.server-b-count"/>
<simpleNumericMeasurementGenerator/>
</resource>
<resource type="service-b">
- <simpleResourceGenerator property="on.perftest.service-b-count"/>
+ <simpleResourceGenerator property="rhq.perftest.service-b-count"/>
</resource>
</scenario>
diff --git a/modules/plugins/perftest/src/main/resources/configurable-4.xml
b/modules/plugins/perftest/src/main/resources/configurable-4.xml
index 11aefc1..c364e60 100644
--- a/modules/plugins/perftest/src/main/resources/configurable-4.xml
+++ b/modules/plugins/perftest/src/main/resources/configurable-4.xml
@@ -1,24 +1,24 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<!--
This scenario will create a number of servers, each with a number of services
(with metrics). Both are configurable
through the properties specified in this file. For example, to create 10 servers,
each with 100 services,
the following should be passed to the agent:
- -Don.perftest.scenario=configurable-4 -Don.perftest.server-b-count=10
-Don.perftest.service-b-metrics-count=50
+ -Drhq.perftest.scenario=configurable-4 -Drhq.perftest.server-b-count=10
-Drhq.perftest.service-b-metrics-count=50
-->
<resource type="server-b">
- <simpleResourceGenerator property="on.perftest.server-b-count"/>
+ <simpleResourceGenerator property="rhq.perftest.server-b-count"/>
<simpleNumericMeasurementGenerator/>
</resource>
<resource type="service-b-metrics">
- <simpleResourceGenerator
property="on.perftest.service-b-metrics-count"/>
+ <simpleResourceGenerator
property="rhq.perftest.service-b-metrics-count"/>
<simpleNumericMeasurementGenerator/>
</resource>
diff --git a/modules/plugins/perftest/src/main/resources/configurable-5.xml
b/modules/plugins/perftest/src/main/resources/configurable-5.xml
index 889b2b2..769fed9 100644
--- a/modules/plugins/perftest/src/main/resources/configurable-5.xml
+++ b/modules/plugins/perftest/src/main/resources/configurable-5.xml
@@ -1,25 +1,25 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<!--
This scenario will create one server with a service that has 5 summary
measurements in them.
To create 10 servers, each with 170 services, the following should be passed to
the agent:
- -Don.perftest.scenario=configurable-5 -Don.perftest.server-d-count=10
-Don.perftest.service-d-metrics-count=170
+ -Drhq.perftest.scenario=configurable-5 -Drhq.perftest.server-d-count=10
-Drhq.perftest.service-d-metrics-count=170
This collects, on average, 170 measurements per minute (assuming summary
measurement collection interval is 5 mins)
-->
<resource type="server-d">
- <simpleResourceGenerator property="on.perftest.server-d-count"/>
+ <simpleResourceGenerator property="rhq.perftest.server-d-count"/>
<simpleNumericMeasurementGenerator/>
</resource>
<resource type="service-d-metrics">
- <simpleResourceGenerator
property="on.perftest.service-d-metrics-count"/>
+ <simpleResourceGenerator
property="rhq.perftest.service-d-metrics-count"/>
<simpleNumericMeasurementGenerator/>
<simpleTraitMeasurementGenerator/>
<ConfigurableCallTimeDataGenerator
diff --git a/modules/plugins/perftest/src/main/resources/configurable-6.xml
b/modules/plugins/perftest/src/main/resources/configurable-6.xml
index 03bbf97..5340023 100644
--- a/modules/plugins/perftest/src/main/resources/configurable-6.xml
+++ b/modules/plugins/perftest/src/main/resources/configurable-6.xml
@@ -1,16 +1,15 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
-
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<resource type="server-e">
- <simpleResourceGenerator property="on.perftest.server-e-count"/>
+ <simpleResourceGenerator property="rhq.perftest.server-e-count"/>
<OOBNumericMeasurementGenerator/>
</resource>
<resource type="service-e-metrics">
- <simpleResourceGenerator
property="on.perftest.service-e-metrics-count"/>
+ <simpleResourceGenerator
property="rhq.perftest.service-e-metrics-count"/>
<OOBNumericMeasurementGenerator/>
</resource>
diff --git a/modules/plugins/perftest/src/main/resources/configurable-alphaomega.xml
b/modules/plugins/perftest/src/main/resources/configurable-alphaomega.xml
index 7cd8c0b..5f7dbf0 100644
--- a/modules/plugins/perftest/src/main/resources/configurable-alphaomega.xml
+++ b/modules/plugins/perftest/src/main/resources/configurable-alphaomega.xml
@@ -1,41 +1,41 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<!--
Sets up "omega servers" that have two kinds of child services,
"alpha" and "beta".
Example:
- -Don.perftest.scenario=configurable-alphaomega
- -Don.perftest.server-omega-count=10
- -Don.perftest.service-alpha-count=25
- -Don.perftest.service-beta-count=2
+ -Drhq.perftest.scenario=configurable-alphaomega
+ -Drhq.perftest.server-omega-count=10
+ -Drhq.perftest.service-alpha-count=25
+ -Drhq.perftest.service-beta-count=2
You can optionally indicate how many content packages to have:
- -Don.perftest.omega-content[0-4]-count
- -Don.perftest.alpha-content0-count
+ -Drhq.perftest.omega-content[0-4]-count
+ -Drhq.perftest.alpha-content0-count
-->
<resource type="server-omega">
- <simpleResourceGenerator
property="on.perftest.server-omega-count"/>
+ <simpleResourceGenerator
property="rhq.perftest.server-omega-count"/>
<simpleNumericMeasurementGenerator/>
- <simpleContentGenerator packageType="omega-content0"
property="on.perftest.omega-content0-count" numberOfPackages="10"
/>
- <simpleContentGenerator packageType="omega-content1"
property="on.perftest.omega-content1-count" numberOfPackages="10"
/>
- <simpleContentGenerator packageType="omega-content2"
property="on.perftest.omega-content2-count" numberOfPackages="10"
/>
- <simpleContentGenerator packageType="omega-content3"
property="on.perftest.omega-content3-count" numberOfPackages="10"
/>
- <simpleContentGenerator packageType="omega-content4"
property="on.perftest.omega-content4-count" numberOfPackages="10"
/>
+ <simpleContentGenerator packageType="omega-content0"
property="rhq.perftest.omega-content0-count" numberOfPackages="10"
/>
+ <simpleContentGenerator packageType="omega-content1"
property="rhq.perftest.omega-content1-count" numberOfPackages="10"
/>
+ <simpleContentGenerator packageType="omega-content2"
property="rhq.perftest.omega-content2-count" numberOfPackages="10"
/>
+ <simpleContentGenerator packageType="omega-content3"
property="rhq.perftest.omega-content3-count" numberOfPackages="10"
/>
+ <simpleContentGenerator packageType="omega-content4"
property="rhq.perftest.omega-content4-count" numberOfPackages="10"
/>
</resource>
<resource type="service-alpha">
- <simpleResourceGenerator
property="on.perftest.service-alpha-count"/>
+ <simpleResourceGenerator
property="rhq.perftest.service-alpha-count"/>
<simpleNumericMeasurementGenerator/>
- <simpleContentGenerator packageType="alpha-content0"
property="on.perftest.alpha-content0-count" numberOfPackages="1"
/>
+ <simpleContentGenerator packageType="alpha-content0"
property="rhq.perftest.alpha-content0-count" numberOfPackages="1"
/>
</resource>
<resource type="service-beta">
- <simpleResourceGenerator
property="on.perftest.service-beta-count"/>
+ <simpleResourceGenerator
property="rhq.perftest.service-beta-count"/>
<simpleConfigurationGenerator/>
<simpleNumericMeasurementGenerator/>
</resource>
diff --git a/modules/plugins/perftest/src/main/resources/configurable-average.xml
b/modules/plugins/perftest/src/main/resources/configurable-average.xml
index 9453373..aabc151 100644
--- a/modules/plugins/perftest/src/main/resources/configurable-average.xml
+++ b/modules/plugins/perftest/src/main/resources/configurable-average.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<!--
This scenario will try to mimic an "average" inventory with a typical
number of metrics, plugin
@@ -12,36 +12,36 @@
specified in this file. For example, to create 10 servers, each with 25 services,
and each of those services
having 2 child services, the following should be passed to the agent:
- -Don.perftest.scenario=configurable-average
- -Don.perftest.server-a-count=10
- -Don.perftest.service-a-count=25
- -Don.perftest.service-ab-count=2
+ -Drhq.perftest.scenario=configurable-average
+ -Drhq.perftest.server-a-count=10
+ -Drhq.perftest.service-a-count=25
+ -Drhq.perftest.service-ab-count=2
You can optionally indicate how many content packages to have:
- -Don.perftest.package[0-4]-count
- -Don.perftest.childPackage0-count
+ -Drhq.perftest.package[0-4]-count
+ -Drhq.perftest.childPackage0-count
-->
<resource type="server-a">
- <simpleResourceGenerator property="on.perftest.server-a-count"/>
+ <simpleResourceGenerator property="rhq.perftest.server-a-count"/>
<simpleConfigurationGenerator/>
<simpleNumericMeasurementGenerator/>
- <simpleContentGenerator packageType="package0"
property="on.perftest.package0-count" numberOfPackages="0" />
- <simpleContentGenerator packageType="package1"
property="on.perftest.package1-count" numberOfPackages="1" />
- <simpleContentGenerator packageType="package2"
property="on.perftest.package2-count" numberOfPackages="2" />
- <simpleContentGenerator packageType="package3"
property="on.perftest.package3-count" numberOfPackages="3" />
- <simpleContentGenerator packageType="package4"
property="on.perftest.package4-count" numberOfPackages="4" />
+ <simpleContentGenerator packageType="package0"
property="rhq.perftest.package0-count" numberOfPackages="0" />
+ <simpleContentGenerator packageType="package1"
property="rhq.perftest.package1-count" numberOfPackages="1" />
+ <simpleContentGenerator packageType="package2"
property="rhq.perftest.package2-count" numberOfPackages="2" />
+ <simpleContentGenerator packageType="package3"
property="rhq.perftest.package3-count" numberOfPackages="3" />
+ <simpleContentGenerator packageType="package4"
property="rhq.perftest.package4-count" numberOfPackages="4" />
</resource>
<resource type="service-a">
- <simpleResourceGenerator property="on.perftest.service-a-count"/>
+ <simpleResourceGenerator property="rhq.perftest.service-a-count"/>
<simpleConfigurationGenerator/>
<simpleNumericMeasurementGenerator/>
- <simpleContentGenerator packageType="childPackage0"
property="on.perftest.childPackage0-count" numberOfPackages="1" />
+ <simpleContentGenerator packageType="childPackage0"
property="rhq.perftest.childPackage0-count" numberOfPackages="1"
/>
</resource>
<resource type="service-ab">
- <simpleResourceGenerator property="on.perftest.service-ab-count"/>
+ <simpleResourceGenerator
property="rhq.perftest.service-ab-count"/>
<simpleConfigurationGenerator/>
<simpleNumericMeasurementGenerator/>
</resource>
diff --git a/modules/plugins/perftest/src/main/resources/metrics.xml
b/modules/plugins/perftest/src/main/resources/metrics.xml
index 1b09b0f..1b7288f 100644
--- a/modules/plugins/perftest/src/main/resources/metrics.xml
+++ b/modules/plugins/perftest/src/main/resources/metrics.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<resource type="server-a">
<simpleResourceGenerator numberOfResources="1"/>
diff --git a/modules/plugins/perftest/src/main/resources/perftest-scenario.xsd
b/modules/plugins/perftest/src/main/resources/perftest-scenario.xsd
index ab938e5..3555093 100644
--- a/modules/plugins/perftest/src/main/resources/perftest-scenario.xsd
+++ b/modules/plugins/perftest/src/main/resources/perftest-scenario.xsd
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:perf="urn:xmlns:jboss.org:on-perftest"
- targetNamespace="urn:xmlns:jboss.org:on-perftest"
+ xmlns:perf="urn:xmlns:jboss.org:rhq-perftest"
+ targetNamespace="urn:xmlns:jboss.org:rhq-perftest"
elementFormDefault="qualified"
jaxb:version="2.0"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
diff --git a/modules/plugins/perftest/src/main/resources/rogue.xml
b/modules/plugins/perftest/src/main/resources/rogue.xml
index ac72edf..cc25071 100644
--- a/modules/plugins/perftest/src/main/resources/rogue.xml
+++ b/modules/plugins/perftest/src/main/resources/rogue.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<!--
- -Don.perftest.scenario=rogue
- -Don.perftest.server-rogue-count=10
+ -Drhq.perftest.scenario=rogue
+ -Drhq.perftest.server-rogue-count=10
There is an additional system property you can set to determine the discovery
component behavior.
You set this either to "error" which causes discovery component to throw an
Exception or you set it to
@@ -13,20 +13,20 @@
value and the component throws an InvalidPluginConfigurationException. If you do not
set this, the discovery
component returns normally.
- -Don.perftest.server-rogue-discovery=error // discovery component throws an exception
during auto-discovery scan
- -Don.perftest.server-rogue-discovery=foo // discovery component throws an invalid
config exception during auto-discovery scan
- -Don.perftest.server-rogue-discovery=60 // discovery component sleeps for 60 seconds
during auto-discovery scan
+ -Drhq.perftest.server-rogue-discovery=error // discovery component throws an exception
during auto-discovery scan
+ -Drhq.perftest.server-rogue-discovery=foo // discovery component throws an invalid
config exception during auto-discovery scan
+ -Drhq.perftest.server-rogue-discovery=60 // discovery component sleeps for 60 seconds
during auto-discovery scan
There is another system property that allows the discovery component to abort this
discovery sleep.
- If you set on.perftest.server-rogue-discovery-interruptable to true, and the plugin
container times out
+ If you set rhq.perftest.server-rogue-discovery-interruptable to true, and the plugin
container times out
the discovery, the rogue discovery will be nice and abort what its doing and have the
thread return.
Otherwise, the rogue discovery component will ignore the interrupt and keep sleeping
until its done.
- -Don.perftest.server-rogue-discovery-interruptable=true
+ -Drhq.perftest.server-rogue-discovery-interruptable=true
-->
<resource type="server-rogue">
- <simpleResourceGenerator
property="on.perftest.server-rogue-count"/>
+ <simpleResourceGenerator
property="rhq.perftest.server-rogue-count"/>
</resource>
</scenario>
\ No newline at end of file
diff --git
a/modules/plugins/perftest/src/test/java/org/rhq/plugins/perftest/ScenarioManagerTest.java
b/modules/plugins/perftest/src/test/java/org/rhq/plugins/perftest/ScenarioManagerTest.java
index 9fa41fd..1642cbd 100644
---
a/modules/plugins/perftest/src/test/java/org/rhq/plugins/perftest/ScenarioManagerTest.java
+++
b/modules/plugins/perftest/src/test/java/org/rhq/plugins/perftest/ScenarioManagerTest.java
@@ -88,7 +88,7 @@ public class ScenarioManagerTest {
@Test
public void configurableResources() {
// Setup
- System.setProperty("on.perftest.server-b-test", "20");
+ System.setProperty("rhq.perftest.server-b-test", "20");
ResourceType resourceType = new ResourceType("server-b",
"plugin", ResourceCategory.SERVER, null);
ResourceDiscoveryContext context = new ResourceDiscoveryContext(resourceType,
null, null, null, null, null,
@@ -108,8 +108,8 @@ public class ScenarioManagerTest {
@Test
public void OOBMetrics() {
// Setup
- System.setProperty("on.perftest.server-e-count", "3");
- System.setProperty("on.perftest.service-e-metrics-count",
"10");
+ System.setProperty("rhq.perftest.server-e-count", "3");
+ System.setProperty("rhq.perftest.service-e-metrics-count",
"10");
// Test
ScenarioManager manager = ScenarioManager.getInstance();
diff --git a/modules/plugins/perftest/src/test/resources/unit-test-scenario.xml
b/modules/plugins/perftest/src/test/resources/unit-test-scenario.xml
index 79bd046..7ef3dc3 100644
--- a/modules/plugins/perftest/src/test/resources/unit-test-scenario.xml
+++ b/modules/plugins/perftest/src/test/resources/unit-test-scenario.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<scenario
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="urn:xmlns:jboss.org:on-perftest">
+ xmlns="urn:xmlns:jboss.org:rhq-perftest">
<resource type="server-a">
<simpleResourceGenerator numberOfResources="10"/>
@@ -10,16 +10,16 @@
</resource>
<resource type="server-b">
- <simpleResourceGenerator property="on.perftest.server-b-test"/>
+ <simpleResourceGenerator property="rhq.perftest.server-b-test"/>
</resource>
<resource type="server-e">
- <simpleResourceGenerator property="on.perftest.server-e-count"/>
+ <simpleResourceGenerator property="rhq.perftest.server-e-count"/>
<OOBNumericMeasurementGenerator/>
</resource>
<resource type="service-e-metrics">
- <simpleResourceGenerator
property="on.perftest.service-e-metrics-count"/>
+ <simpleResourceGenerator
property="rhq.perftest.service-e-metrics-count"/>
<OOBNumericMeasurementGenerator/>
</resource>
commit 17552e0da2d96b1ee71f145dd31bc4b9d6671430
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Jun 17 20:43:52 2011 +0200
Prevent possible NPE
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
index fd94954..ebb6d38 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
@@ -250,6 +250,8 @@ public class PropertyDefinitionSimple extends PropertyDefinition {
public void setOptionsSource(PropertyOptionsSource source) {
this.optionsSource.clear();
+ if (source==null)
+ return;
source.propertyDefinition = this;
this.optionsSource.add(source);
}
commit 3434b60637c8024e83569c50acad52f8e74176da
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Jun 17 20:06:44 2011 +0200
Fix some option source
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 1b83106..0ccacf6 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -108,16 +108,18 @@
<operation name="server-group:remove" displayName="Remove
ServerGroup" description="Remove a server group from the Domain.">
<parameters>
<c:simple-property name="name" description="Name of
Group to remove">
- <c:option-source target="resource"
expression="type=server-group"/>
+ <c:option-source target="resource"
expression="type=ServerGroup"/>
</c:simple-property>
</parameters>
</operation>
<operation name="managed-server:add" displayName="Add managed
server" description="Add a new managed server">
<parameters>
<c:simple-property name="servername" displayName="Name
of the new server" required="true"/>
- <c:simple-property name="hostname" displayName="Name of
the host to put the server on" required="true"/>
+ <c:simple-property name="hostname" displayName="Name of
the host to put the server on" required="true">
+ <c:option-source target="resource"
expression="type=Host plugin=jboss-as-7"/>
+ </c:simple-property>
<c:simple-property name="server-group"
displayName="Server group to add to" required="true">
- <c:option-source target="resource"
expression="type=server-group"/>
+ <c:option-source target="resource"
expression="type=ServerGroup"/>
</c:simple-property>
<c:simple-property name="socket-bindings"
displayName="Socket bindings to base upon" default="standard-sockets"
description="Socket bindings to base upon"/>
<c:simple-property name="port-offset" displayName="Port
offset" default="0" type="integer" />
commit 4b070d94e8ceedefd7811a7d2cebe30010f03907
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Jun 17 20:01:21 2011 +0200
Directly do a resource criteria query. No need for the SearchSubsystem.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
index 3e10602..8299edd 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
@@ -2412,32 +2412,19 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
if (pds.getOptionsSource()!=null) {
// evaluate the source parameters
PropertyOptionsSource pos = pds.getOptionsSource();
- SearchSubsystem subsystem;
- if (pos.getTargetType()== PropertyOptionsSource.TargetType.GROUP)
- subsystem=SearchSubsystem.GROUP;
- else
- subsystem=SearchSubsystem.RESOURCE;
- SearchAssistManager searchAssistManager = new SearchAssistManager(subject,
subsystem); // TODO do we need the suggestions at all?
- List<SearchSuggestion> suggestions =
searchAssistManager.getSuggestions(pos.getExpression(),
- pos.getExpression().length());
- if (suggestions.size()>1)
- log.warn("Search expression for property [" + pds.getName() +
"] returned more than one result, joining ...");
- for (SearchSuggestion suggestion : suggestions) {
- ResourceCriteria criteria = new ResourceCriteria();
- criteria.setSearchExpression(suggestion.getValue());
- // TODO for groups we need to talk to the group manager
- List<ResourceComposite> composites =
resourceManager.findResourceCompositesByCriteria(subject,criteria);
- for (ResourceComposite composite : composites) {
-
- // TODO for configuration we need to drill down into the resource
configuration
- PropertyDefinitionEnumeration pde = new
PropertyDefinitionEnumeration(composite.getResource().getName(),""+composite.getResource().getId());
-
- // TODO filter -- or leave up to search expression??
-
- pds.getEnumeratedValues().add(pde);
- }
- }
+ ResourceCriteria criteria = new ResourceCriteria();
+ criteria.setSearchExpression(pos.getExpression());
+ // TODO for groups we need to talk to the group manager
+ List<ResourceComposite> composites =
resourceManager.findResourceCompositesByCriteria(subject,criteria);
+ for (ResourceComposite composite : composites) {
+
+ // TODO for configuration we need to drill down into the resource
configuration
+ PropertyDefinitionEnumeration pde = new
PropertyDefinitionEnumeration(composite.getResource().getName(),""+composite.getResource().getId());
+ // TODO filter -- or leave up to search expression??
+
+ pds.getEnumeratedValues().add(pde);
+ }
}
}
commit 828c5d27e76168e2827ee3b868bb433087afb9e8
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Jun 17 18:18:50 2011 +0200
Persist the link to the property definition
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
index a597478..fd94954 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
@@ -250,6 +250,7 @@ public class PropertyDefinitionSimple extends PropertyDefinition {
public void setOptionsSource(PropertyOptionsSource source) {
this.optionsSource.clear();
+ source.propertyDefinition = this;
this.optionsSource.add(source);
}
commit fabdf620c756d90fd7fccd4af816f01a679e3a25
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Jun 17 16:08:18 2011 +0200
Add more option-sources.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index b63bdbc..1b83106 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -107,7 +107,9 @@
</operation>
<operation name="server-group:remove" displayName="Remove
ServerGroup" description="Remove a server group from the Domain.">
<parameters>
- <c:simple-property name="name" description="Name of
Group to add"/>
+ <c:simple-property name="name" description="Name of
Group to remove">
+ <c:option-source target="resource"
expression="type=server-group"/>
+ </c:simple-property>
</parameters>
</operation>
<operation name="managed-server:add" displayName="Add managed
server" description="Add a new managed server">
@@ -128,7 +130,9 @@
<operation name="managed-server:remove" displayName="Remove
managed server" description="Remove a managed server">
<parameters>
<c:simple-property name="servername" displayName="Name
of the server to remove" required="true"/>
- <c:simple-property name="hostname" displayName="Name of
the host where the server is on" required="true"/>
+ <c:simple-property name="hostname" displayName="Name of
the host where the server is on" required="true">
+ <c:option-source target="resource"
expression="type=JBossAS-Managed"/>
+ </c:simple-property>
</parameters>
<results>
<c:simple-property name="result" description="Outcome
of the remove server operation"/>
commit 26f07e6d14a978989354631f032bac5bddc45c8e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Jun 17 15:16:00 2011 +0200
Use the new option-source
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 7851d73..b63bdbc 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -114,7 +114,9 @@
<parameters>
<c:simple-property name="servername" displayName="Name
of the new server" required="true"/>
<c:simple-property name="hostname" displayName="Name of
the host to put the server on" required="true"/>
- <c:simple-property name="server-group"
displayName="Server group to add to" required="true"/>
+ <c:simple-property name="server-group"
displayName="Server group to add to" required="true">
+ <c:option-source target="resource"
expression="type=server-group"/>
+ </c:simple-property>
<c:simple-property name="socket-bindings"
displayName="Socket bindings to base upon" default="standard-sockets"
description="Socket bindings to base upon"/>
<c:simple-property name="port-offset" displayName="Port
offset" default="0" type="integer" />
<c:simple-property name="auto-start"
displayName="Autostart" default="false" type="boolean"
/>
commit 6bdc50c39f70d2dce81db95dabaf28555df35167
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Jun 17 14:45:35 2011 +0200
Hook in the search subsystem and criteria search.
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 3aeaa07..bbd047b 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
@@ -355,7 +355,7 @@ public class ConfigurationGWTServiceImpl extends
AbstractGWTServiceImpl implemen
public ConfigurationDefinition getOptionValuesForConfigDefinition(
ConfigurationDefinition definition) throws RuntimeException {
try {
- ConfigurationDefinition def =
configurationManager.getOptionsForConfigurationDefinition(definition);
+ ConfigurationDefinition def =
configurationManager.getOptionsForConfigurationDefinition(getSessionSubject(),
definition);
return
SerialUtility.prepare(def,"ConfigurationService.getOptionValuesForPropertySimple");
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
index 64f0927..3e10602 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
@@ -67,6 +67,7 @@ import
org.rhq.core.domain.configuration.definition.ConfigurationFormat;
import org.rhq.core.domain.configuration.definition.PropertyDefinition;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionEnumeration;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
+import org.rhq.core.domain.configuration.definition.PropertyOptionsSource;
import org.rhq.core.domain.configuration.group.AbstractGroupConfigurationUpdate;
import org.rhq.core.domain.configuration.group.GroupPluginConfigurationUpdate;
import org.rhq.core.domain.configuration.group.GroupResourceConfigurationUpdate;
@@ -75,15 +76,19 @@ import
org.rhq.core.domain.criteria.GroupPluginConfigurationUpdateCriteria;
import org.rhq.core.domain.criteria.GroupResourceConfigurationUpdateCriteria;
import org.rhq.core.domain.criteria.PluginConfigurationUpdateCriteria;
import org.rhq.core.domain.criteria.ResourceConfigurationUpdateCriteria;
+import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.resource.Agent;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceError;
import org.rhq.core.domain.resource.ResourceErrorType;
import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.domain.resource.composite.ResourceComposite;
import org.rhq.core.domain.resource.group.GroupCategory;
import org.rhq.core.domain.resource.group.ResourceGroup;
import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
+import org.rhq.core.domain.search.SearchSubsystem;
+import org.rhq.core.domain.search.SearchSuggestion;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
@@ -113,6 +118,7 @@ import
org.rhq.enterprise.server.resource.group.ResourceGroupManagerLocal;
import org.rhq.enterprise.server.resource.group.ResourceGroupNotFoundException;
import org.rhq.enterprise.server.resource.group.ResourceGroupUpdateException;
import org.rhq.enterprise.server.scheduler.SchedulerLocal;
+import org.rhq.enterprise.server.search.execution.SearchAssistManager;
import org.rhq.enterprise.server.system.ServerVersion;
import org.rhq.enterprise.server.util.CriteriaQueryGenerator;
import org.rhq.enterprise.server.util.CriteriaQueryRunner;
@@ -2378,7 +2384,8 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
return updates;
}
- public ConfigurationDefinition
getOptionsForConfigurationDefinition(ConfigurationDefinition def) {
+
+ public ConfigurationDefinition getOptionsForConfigurationDefinition(Subject subject,
ConfigurationDefinition def) {
for (Map.Entry<String,PropertyDefinition> entry :
def.getPropertyDefinitions().entrySet()) {
@@ -2386,23 +2393,52 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
if (pd instanceof PropertyDefinitionSimple) {
PropertyDefinitionSimple pds = (PropertyDefinitionSimple) pd;
- handlePDS(pds);
+ handlePDS(subject, pds);
}
// TODO consider more cases
}
- return def;
+ return def; // TODO clone the incoming definition?
}
- private void handlePDS(PropertyDefinitionSimple pds) {
+ /**
+ * Determine the dynamic enumeration values for one PropertyDefinitionSimple
+ * @param subject Subject of the caller - may limit search results
+ * @param pds the PropertyDefinitionSimple to work on
+ */
+ private void handlePDS(Subject subject, PropertyDefinitionSimple pds) {
if (pds.getOptionsSource()!=null) {
- // TODO evaluate the source parameters
+ // evaluate the source parameters
+ PropertyOptionsSource pos = pds.getOptionsSource();
+ SearchSubsystem subsystem;
+ if (pos.getTargetType()== PropertyOptionsSource.TargetType.GROUP)
+ subsystem=SearchSubsystem.GROUP;
+ else
+ subsystem=SearchSubsystem.RESOURCE;
+ SearchAssistManager searchAssistManager = new SearchAssistManager(subject,
subsystem); // TODO do we need the suggestions at all?
+ List<SearchSuggestion> suggestions =
searchAssistManager.getSuggestions(pos.getExpression(),
+ pos.getExpression().length());
+ if (suggestions.size()>1)
+ log.warn("Search expression for property [" + pds.getName() +
"] returned more than one result, joining ...");
+ for (SearchSuggestion suggestion : suggestions) {
+ ResourceCriteria criteria = new ResourceCriteria();
+ criteria.setSearchExpression(suggestion.getValue());
+ // TODO for groups we need to talk to the group manager
+ List<ResourceComposite> composites =
resourceManager.findResourceCompositesByCriteria(subject,criteria);
+ for (ResourceComposite composite : composites) {
+
+ // TODO for configuration we need to drill down into the resource
configuration
+ PropertyDefinitionEnumeration pde = new
PropertyDefinitionEnumeration(composite.getResource().getName(),""+composite.getResource().getId());
+
+ // TODO filter -- or leave up to search expression??
+
+ pds.getEnumeratedValues().add(pde);
+ }
+ }
+
}
- // TODO next is a dummy.
- PropertyDefinitionEnumeration foo = new
PropertyDefinitionEnumeration("main-server-group","main-server-group");
- pds.getEnumeratedValues().add(foo);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
index ca557203..f047d7b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
@@ -568,5 +568,5 @@ public interface ConfigurationManagerLocal {
PageList<GroupPluginConfigurationUpdate>
findGroupPluginConfigurationUpdatesByCriteria(Subject subject,
GroupPluginConfigurationUpdateCriteria criteria);
- ConfigurationDefinition getOptionsForConfigurationDefinition(ConfigurationDefinition
def);
+ ConfigurationDefinition getOptionsForConfigurationDefinition(Subject subject,
ConfigurationDefinition def);
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/search/GenericSearchAssistTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/search/GenericSearchAssistTest.java
index 3570f56..dbbeb64 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/search/GenericSearchAssistTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/search/GenericSearchAssistTest.java
@@ -10,8 +10,12 @@ import java.util.List;
import org.testng.annotations.Test;
+import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.search.SearchSubsystem;
import org.rhq.core.domain.search.SearchSuggestion;
+import org.rhq.enterprise.server.search.execution.SearchAssistManager;
import org.rhq.enterprise.server.test.AbstractEJB3Test;
+import org.rhq.enterprise.server.util.LookupUtil;
public class GenericSearchAssistTest extends AbstractEJB3Test {
@@ -61,6 +65,19 @@ public class GenericSearchAssistTest extends AbstractEJB3Test {
}
}
+ @Test
+ public void test2() throws Exception {
+ Subject overlord = LookupUtil.getSubjectManager().getOverlord();
+ SearchAssistManager mgr = new SearchAssistManager(overlord,
SearchSubsystem.RESOURCE);
+ List<SearchSuggestion> suggestions =
mgr.getSuggestions("category=PLATFORM",0);
+ System.out.println("Number of suggestions: " + suggestions.size());
+ for (SearchSuggestion s : suggestions) {
+ System.out.println(s);
+ }
+
+
+ }
+
private void compare(List<SearchSuggestion> results, List<String>
expected) {
List<String> rawResults = new ArrayList<String>();
for (SearchSuggestion suggestion : results) {
commit aa6ff5c12b3750cd1264b84559306e29b86e062d
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 16 15:29:57 2011 -0400
bumping back JNA version to 3.2.5
diff --git a/pom.xml b/pom.xml
index c47cd49..b7f249e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,7 +94,7 @@
<sigar.version>1.6.5.132</sigar.version>
<sigar.zip.version>1.6.5</sigar.zip.version>
<quartz.version>1.6.5</quartz.version>
- <jna.version>3.2.3</jna.version>
+ <jna.version>3.2.5</jna.version>
<twitter4j.version>2.1.2</twitter4j.version>
<commons-codec.version>1.4</commons-codec.version>
<testng.version>5.13.1</testng.version>
commit cc03cf67d114ba6914d685e17bdbe86bb1cf841a
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 16 15:26:37 2011 -0400
BZ 644328 - even though webservices aren't used much anymore, I see we are missing
lots of @WebMethod annotations, so I'm adding them.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
index 273f2c2..41ec97c 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
@@ -89,7 +89,6 @@ public interface BundleManagerRemote {
* @return the new BundleFile
* @throws Exception
*/
-
@WebMethod
BundleFile addBundleFile( //
@WebParam(name = "subject") Subject subject, //
@@ -104,6 +103,7 @@ public interface BundleManagerRemote {
*
* @see {@link addBundleFile(Subject, int, String, String, Architecture, InputStream,
boolean)}
*/
+ @WebMethod
BundleFile addBundleFileViaByteArray( //
@WebParam(name = "subject") Subject subject, //
@WebParam(name = "bundleVersionid") int bundleVersionId, //
@@ -117,6 +117,7 @@ public interface BundleManagerRemote {
*
* @see {@link addBundleFile(Subject, int, String, String, Architecture, InputStream,
boolean)}
*/
+ @WebMethod
BundleFile addBundleFileViaURL( //
@WebParam(name = "subject") Subject subject, //
@WebParam(name = "bundleVersionid") int bundleVersionId, //
@@ -130,6 +131,7 @@ public interface BundleManagerRemote {
*
* @see {@link addBundleFile(Subject, int, String, String, Architecture, InputStream,
boolean)}
*/
+ @WebMethod
BundleFile addBundleFileViaPackageVersion( //
@WebParam(name = "subject") Subject subject, //
@WebParam(name = "bundleVersionid") int bundleVersionId, //
@@ -150,6 +152,7 @@ public interface BundleManagerRemote {
* @return the persisted deployment
* @throws Exception
*/
+ @WebMethod
BundleDeployment createBundleDeployment( //
@WebParam(name = "subject") Subject subject, //
@WebParam(name = "bundleVersionId") int bundleVersionId, //
@@ -173,6 +176,7 @@ public interface BundleManagerRemote {
* @return the persisted destination
* @throws Exception
*/
+ @WebMethod
BundleDestination createBundleDestination( //
@WebParam(name = "subject") Subject subject, //
@WebParam(name = "bundleId") int bundleId, //
@@ -193,6 +197,7 @@ public interface BundleManagerRemote {
* @return the persisted BundleVersion with alot of the internal relationships filled
in to help the caller
* understand all that this method did.
*/
+ @WebMethod
BundleVersion createBundleVersionViaRecipe( //
@WebParam(name = "subject") Subject subject, //
@WebParam(name = "recipe") String recipe) throws Exception;
@@ -209,6 +214,7 @@ public interface BundleManagerRemote {
* @return the persisted BundleVersion with alot of the internal relationships filled
in to help the caller
* understand all that this method did. Bundle files specifically are
returned.
*/
+ @WebMethod
BundleVersion createBundleVersionViaFile( //
@WebParam(name = "subject") Subject subject, //
@WebParam(name = "distributionFile") File distributionFile) throws
Exception;
@@ -229,6 +235,7 @@ public interface BundleManagerRemote {
* @return the persisted BundleVersion with alot of the internal relationships filled
in to help the caller
* understand all that this method did. Bundle files specifically are
returned.
*/
+ @WebMethod
BundleVersion createBundleVersionViaURL( //
@WebParam(name = "subject") Subject subject, //
@WebParam(name = "distributionFileUrl") String distributionFileUrl)
throws Exception;
@@ -332,6 +339,7 @@ public interface BundleManagerRemote {
* @return The List of filenames.
* @throws Exception
*/
+ @WebMethod
Set<String> getBundleVersionFilenames( //
@WebParam(name = "subject") Subject subject, //
@WebParam(name = "bundleVersionId") int bundleVersionId, //
commit d8513869945fbe84642266abe709cd78490a10e0
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 16 15:25:52 2011 -0400
BZ 644328 - the description is optional - if it wasn't specified, then just show
the name
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
index 21a6a64..b7fedc0 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
@@ -175,8 +175,12 @@ public class GetDestinationStep extends AbstractWizardStep {
String defaultSelectedItem = null;
menuItems = new LinkedHashMap<String,
String>(baseDirs.size());
for (BundleDestinationBaseDirectory baseDir :
baseDirs) {
- menuItems.put(baseDir.getName(),
"<b>" + baseDir.getName() + "</b>: "
- + baseDir.getDescription());
+ if (baseDir.getDescription() != null) {
+ menuItems.put(baseDir.getName(),
"<b>" + baseDir.getName()
+ + "</b>: " +
baseDir.getDescription());
+ } else {
+ menuItems.put(baseDir.getName(),
baseDir.getName());
+ }
if (defaultSelectedItem == null) {
defaultSelectedItem =
baseDir.getName();
}
commit a75d63257ea4c4212e66c6a18f1c69286a75e895
Merge: 2ec2511 b166bce
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 16 14:32:56 2011 -0400
Merge commit 'origin/master' into nonplatform-bundles-644328
commit b166bce2bb8319661e3f169edc73f7644bc89600
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Jun 16 19:32:38 2011 +0200
Improving the apache vhost upgrade process. Now we can successfully upgrade resoures
from RHQ 1.x even if RHQ 3 would get them wrong.
diff --git
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceDiscoveryComponent.java
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceDiscoveryComponent.java
index d6a36fb..28f68da 100644
---
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceDiscoveryComponent.java
+++
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/ApacheVirtualHostServiceDiscoveryComponent.java
@@ -191,7 +191,7 @@ public class ApacheVirtualHostServiceDiscoveryComponent implements
ResourceDisco
//yay, we can use the snmpService index to determine which vhost
we're dealing with
if (snmpServiceIndex == 1) {
//k, looks the vhost was representing the main server. Let's
do a cross-check.
- List<String> legacyResourceKeys =
legacyResourceKeyUtil.getLegacyMainServerResourceKeys();
+ Set<String> legacyResourceKeys =
legacyResourceKeyUtil.getLegacyMainServerResourceKeys();
if (legacyResourceKeys.contains(resourceKey)) {
newResourceKey =
ApacheVirtualHostServiceComponent.MAIN_SERVER_RESOURCE_KEY;
} else {
@@ -214,7 +214,7 @@ public class ApacheVirtualHostServiceDiscoveryComponent implements
ResourceDisco
//right, let's do a cross-check before we actually create
the resource key so
//that we catch user-generated errors.
- List<String> legacyResourceKeys =
legacyResourceKeyUtil.getLegacyVirtualHostResourceKeys(vhost);
+ Set<String> legacyResourceKeys =
legacyResourceKeyUtil.getLegacyVirtualHostResourceKeys(vhost);
if (legacyResourceKeys.contains(resourceKey)) {
newResourceKey = createResourceKey(vhost.serverName,
vhost.hosts);
} else {
@@ -240,7 +240,7 @@ public class ApacheVirtualHostServiceDiscoveryComponent implements
ResourceDisco
Map<String, Set<VHostSpec>> possibleMatchesPerRK = new
HashMap<String, Set<VHostSpec>>();
for (VHostSpec vhost : vhosts) {
- List<String> legacyResourceKeys =
legacyResourceKeyUtil.getLegacyVirtualHostResourceKeys(vhost);
+ Set<String> legacyResourceKeys =
legacyResourceKeyUtil.getLegacyVirtualHostResourceKeys(vhost);
for(String legacyRK : legacyResourceKeys) {
addPossibleRKMatch(legacyRK, vhost, possibleMatchesPerRK);
diff --git
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/util/VirtualHostLegacyResourceKeyUtil.java
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/util/VirtualHostLegacyResourceKeyUtil.java
index 6c8436e..c1f98aa 100644
---
a/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/util/VirtualHostLegacyResourceKeyUtil.java
+++
b/modules/plugins/apache/src/main/java/org/rhq/plugins/apache/util/VirtualHostLegacyResourceKeyUtil.java
@@ -25,7 +25,9 @@ import java.net.URISyntaxException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import org.rhq.plugins.apache.ApacheServerComponent;
import org.rhq.plugins.apache.ApacheVirtualHostServiceComponent;
@@ -64,15 +66,11 @@ public class VirtualHostLegacyResourceKeyUtil {
* This uses the algoritms used in the RHQ 3 codebase and returns both the resource
key
* that would be generated wihout SNMP support and with it.
* <p>
- * The returned list contains either 1 or 2 elements. The first element is always the
resource
- * key as it would be generated without SNMP support. The second element is the
resource key as
- * it would be derived from the SNMP record. If the legacy algorithm wouldn't be
able to
- * deduce the resource key from SNMP (which could happen), the second element
wouldn't be present
- * in the resulting list.
- * .
+ * The returned set also contains the resource key as it would be found by RHQ 1.x
+ *
* @return possible resource keys of the main server.
*/
- public List<String> getLegacyMainServerResourceKeys() {
+ public Set<String> getLegacyMainServerResourceKeys() {
String mainServerUrl = serverComponent.getServerUrl();
String key = null;
@@ -94,29 +92,32 @@ public class VirtualHostLegacyResourceKeyUtil {
key = ApacheVirtualHostServiceComponent.MAIN_SERVER_RESOURCE_KEY;
}
+ Set<String> ret = new HashSet<String>();
+
+ ret.add(key);
+
String snmpKey = getSNMPResourceKey(key);
- String[] ret = new String[snmpKey == null ? 1 : 2];
-
- ret[0] = key;
if (snmpKey != null) {
- ret[1] = snmpKey;
+ ret.add(snmpKey);
}
+
+
ret.add(addressUtility.getHttpdInternalMainServerAddressRepresentation(runtimeConfig).toString(false,
false));
- return Arrays.asList(ret);
+ return ret;
}
/**
* Returns a list of possible resource keys that the RHQ 3 code could generate for
the specified
* vhost.
* <p>
- * As with {@link #getLegacyMainServerResourceKeys()} the resulting list will contain
either 1 or
- * 2 elements depending on the ability of the legacy algorithm to deduce the resource
key from SNMP.
+ * As with {@link #getLegacyMainServerResourceKeys()} the resulting set will contain
all the various
+ * resource keys that could have been found by past versions of the plugin.
*
* @param vhost
* @return the possible vhosts
*/
- public List<String> getLegacyVirtualHostResourceKeys(VHostSpec vhost) {
+ public Set<String> getLegacyVirtualHostResourceKeys(VHostSpec vhost) {
String host = vhost.hosts.get(0);
HttpdAddressUtility.Address hostAddr = HttpdAddressUtility.Address.parse(host);
if (vhost.serverName != null) {
@@ -133,16 +134,19 @@ public class VirtualHostLegacyResourceKeyUtil {
String key = hostAddr.host + ":" + hostAddr.port;
- String snmpKey = getSNMPResourceKey(key);
-
- String[] ret = new String[snmpKey == null ? 1 : 2];
- ret[0] = key;
+ Set<String> ret = new HashSet<String>();
+
+ ret.add(key);
+ String snmpKey = getSNMPResourceKey(key);
if (snmpKey != null) {
- ret[1] = snmpKey;
+ ret.add(snmpKey);
}
-
- return Arrays.asList(ret);
+
+ String snmpKeyFromRhq1 =
addressUtility.getHttpdInternalVirtualHostAddressRepresentation(runtimeConfig,
vhost.hosts.get(0), vhost.serverName).toString(false, false);
+ ret.add(snmpKeyFromRhq1);
+
+ return ret;
}
private String getSNMPResourceKey(String nonSnmpResourceKey) {
commit c6ebdb696373e10dcfa7ed28eed0e7547efaa615
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Jun 16 19:31:13 2011 +0200
BZ 711135 - define defaults to all required properties in the apache plugin
configuration so that upgrade of the plugin on the server succeeds.
diff --git a/modules/plugins/apache/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/apache/src/main/resources/META-INF/rhq-plugin.xml
index f3cf33f..ad08a22 100644
--- a/modules/plugins/apache/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/apache/src/main/resources/META-INF/rhq-plugin.xml
@@ -84,7 +84,7 @@
</c:list-property>
'>
<!ENTITY DocumentRoot '
- <c:simple-property name="DocumentRoot">
+ <c:simple-property name="DocumentRoot" default="THIS IS
AUTO-DISCOVERED">
<c:description>
This directive sets the directory from which httpd will serve files. Unless
matched by a directive like Alias, the server appends the path from the requested URL to
the document root to make the path to the document.
If the directory-path is not absolute then it is assumed to be relative to
the ServerRoot.
@@ -264,14 +264,14 @@
activationPolicy: immediate
-->
<c:simple-property name="serverRoot" required="true"
- description="the absolute path of the Apache server root
directory"/>
+ description="the absolute path of the Apache server root
directory" default="THIS SHOULD BE AUTO-DISCOVERED"/>
<c:simple-property name="executablePath"
required="false"
description="the path to the Apache executable - if the
path is not absolute, it will be resolved relative to the server root directory; if unset,
default value is 'bin/httpd' on UNIX or 'bin\Apache.exe' on
Windows"/>
<c:simple-property name="controlScriptPath"
required="false"
description="the path to the Apache control script - if
the path is not absolute, it will be resolved relative to the server root directory; if
unset, default will be 'bin/apachectl' on UNIX or the Apache executable on
Windows"/>
<!-- TODO need to add a comment about the file location on Win* -->
<c:simple-property name="configFile" required="true"
readOnly="true"
- description="the path to the httpd.conf file - if the
path is not absolute, it will be resolved relative to the server root directory; if unset,
default will be 'conf/httpd.conf' on UNIX"/>
+ description="the path to the httpd.conf file - if the
path is not absolute, it will be resolved relative to the server root directory; if unset,
default will be 'conf/httpd.conf' on UNIX" default="THIS SHOULD BE
AUTO-DISCOVERED"/>
<c:simple-property name="url" displayName="URL"
required="false"
description="The http or https URL that will be used to
check availability for this Apache
server; if not set, availablity will be determined based
on whether plugin can connect
@@ -320,7 +320,7 @@
</c:property-options>
</c:simple-property>
- <c:simple-property name="vhostFilesMask"
displayName="Path To Contain Virtual Hosts Files">
+ <c:simple-property name="vhostFilesMask"
displayName="Path To Contain Virtual Hosts Files"
default="conf.d/*.conf">
<c:description>
If the new virtual hosts should be created in standalone files, this
mask determines where
to create those files. The '*' in the path is replaced by the
name of the virtual host.
@@ -718,7 +718,7 @@
<service name="Directory"
class="ApacheDirectoryComponent"
discovery="ApacheDirectoryDiscoveryComponent"
createDeletePolicy="both">
<plugin-configuration>
- <c:simple-property name="directiveIndex"
readOnly="true" required="true" type="integer"/>
+ <c:simple-property name="directiveIndex"
readOnly="true" required="true" type="integer"
default="-1"/>
<c:simple-property name="regexp" displayName="Regular
Expression" type="boolean" default="false"
readOnly="true"
description="Does the name of this directory
denote a regular expression?"/>
</plugin-configuration>
commit ab97d23a233552d206f198f71bcdd711618a7bb0
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Jun 16 19:26:15 2011 +0200
BZ 712429 - giving out more useful error message in case of resource key conflict
during the resource upgrade.
The error message now contains the details of the resources given resource conflicts
with so that the user can easily locate them.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/upgrade/ResourceUpgradeDelegate.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/upgrade/ResourceUpgradeDelegate.java
index cee582e..915c8e0 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/upgrade/ResourceUpgradeDelegate.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/upgrade/ResourceUpgradeDelegate.java
@@ -19,6 +19,7 @@
package org.rhq.core.pc.upgrade;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -59,7 +60,7 @@ public class ResourceUpgradeDelegate {
private boolean enabled = true;
private Set<ResourceUpgradeRequest> requests = new
HashSet<ResourceUpgradeRequest>();
- private Set<ResourceUpgradeRequest> originalResourceData = new
HashSet<ResourceUpgradeRequest>();
+ private Set<ResourceUpgradeRequest> originalResourceData = new
HashSet<ResourceUpgradeRequest>();
private InventoryManager inventoryManager;
private Set<Resource> failedResources = new HashSet<Resource>();
private Map<Resource, Set<ResourceType>> failedResourceTypesPerParent =
new HashMap<Resource, Set<ResourceType>>();
@@ -154,19 +155,21 @@ public class ResourceUpgradeDelegate {
if ((upgradeErrors = checkUpgradeValid(resource, request)) !=
null) {
//the resource is in its upgraded state but it's going to
get reverted back to the original state
//in the code below. Let's use the original resource for
the error message so that we don't confuse
- //the user.
- for(ResourceUpgradeRequest orig : originalResourceData) {
- if (orig.equals(request)) {
- orig.updateResource(resource);
- break;
- }
+ //the user.
+ ResourceUpgradeRequest orig = findOriginal(request);
+
+ //orig should never be null, but let's be paranoid
+ if (orig != null) {
+ orig.updateResource(resource);
}
- String errorString = "Upgrading the resource [" +
resource + "] using these updates [" + request
- + "] would render the inventory invalid because of
the following reasons: " + upgradeErrors;
+
+ String errorString = "Upgrading the resource [" +
resource + "] using these updates ["
+ + request + "] would render the inventory invalid
because of the following reasons: "
+ + upgradeErrors;
//now switch the resource back to the upgraded state for the
rest of the code below again
request.updateResource(resource);
-
+
log.error(errorString);
IllegalStateException ex = new
IllegalStateException(errorString);
@@ -176,7 +179,7 @@ public class ResourceUpgradeDelegate {
//to the server and locally roll back to the previous state.
request.setErrorProperties(ex);
request.clearUpgradeData();
-
+
if (request.getUpgradeErrorMessage() != null) {
rememberFailure(resource);
inventoryManager.deactivateResource(resource);
@@ -185,7 +188,7 @@ public class ResourceUpgradeDelegate {
}
}
}
-
+
//now before we talk to server and sync up the upgraded data,
//reset the resources to their original values so that any changes
//the server makes to the upgrade data are applied to the
"vanilla" state
@@ -197,12 +200,12 @@ public class ResourceUpgradeDelegate {
request.updateResource(resource);
}
}
-
+
//merge the resources with the data as received from the server
//(this can differ from what the upgrade "wants" because the
server is
//free to disallow some changes, e.g. resource name change)
inventoryManager.mergeResourcesFromUpgrade(requests);
-
+
//and now restart all the "touched" resources with the true
intended
//data
for (ResourceUpgradeRequest request : requests) {
@@ -235,16 +238,17 @@ public class ResourceUpgradeDelegate {
ResourceComponent<T> parentResourceComponent =
resourceContainer.getResourceContext()
.getParentResourceComponent();
-
+
Resource parentResource = resourceContainer.getResource().getParentResource();
ResourceContainer parentResourceContainer = (parentResource != null) ?
inventoryManager
.getResourceContainer(resourceContainer.getResource().getParentResource()) :
null;
- ResourceContext<?> parentResourceContext = parentResourceContainer == null
? null : parentResourceContainer.getResourceContext();
-
+ ResourceContext<?> parentResourceContext = parentResourceContainer == null
? null : parentResourceContainer
+ .getResourceContext();
+
Resource resource = resourceContainer.getResource();
-
+
ResourceDiscoveryComponent<ResourceComponent<T>> discoveryComponent =
PluginContainer.getInstance()
.getPluginComponentFactory().getDiscoveryComponent(resource.getResourceType(),
parentResourceContainer);
@@ -281,41 +285,80 @@ public class ResourceUpgradeDelegate {
rememberFailure(resource);
return false;
}
-
+
//alright, everything went fine with the upgrade. Let's update the data of
the resource
//right now so that it starts up as if it was already upgraded. This is to ensure
that
//its children will use a parent component that behaves like the upgraded one.
//We are going to roll back the upgraded data if the upgrade fails to sync with
the server
//later on.
-
+
//remember the original values
ResourceUpgradeRequest original = new ResourceUpgradeRequest(resource.getId());
original.fillInFromResource(resource);
originalResourceData.add(original);
-
+
//update the resource
request.updateResource(resource);
-
+
return true;
}
private String checkUpgradeValid(Resource resource, ResourceUpgradeReport
upgradeReport) {
StringBuilder s = new StringBuilder();
- if (!checkResourceKeyUniqueAmongSiblings(resource, upgradeReport)) {
- s.append("\nAnother inventoried sibling resource of the same type
already has the proposed resource key or would have it after the upgrade.");
+ Set<Resource> duplicitSiblings = findDuplicitSiblingResources(resource,
upgradeReport);
+ if (!duplicitSiblings.isEmpty()) {
+ s.append("After the upgrade, the following resources would have the same
resource key which is illegal. This is an issue of either the old or the new version of
the plugin '"
+ + resource.getResourceType().getPlugin()
+ + "'. Please consult the documentation of the plugin to see what
are the recommended steps to resolve this situation:\n");
+
+ //ok, this is a little tricky
+ //this method is called when the inventory is in the state as it would look
after a
+ //successful upgrade.
+ //but just now, we found out that the upgrade won't succeed because we
found some
+ //conflicting resources. These resources won't be upgraded but right now,
we see
+ //them as if they were.
+ //For each resource, we therefore need to find the corresponding
"original" and report
+ //that instead of how the resource looks like right now.
+ for (Resource r : duplicitSiblings) {
+ ResourceUpgradeRequest fakeRequest = new
ResourceUpgradeRequest(r.getId());
+ fakeRequest.fillInFromResource(r);
+
+ ResourceUpgradeRequest orig = findOriginal(fakeRequest);
+
+ //we might not find the original, because this resource might not need an
upgrade.
+ //in that case, the reporting will be accurate because upgrade didn't
touch the resource.
+ if (orig != null) {
+ orig.updateResource(r);
+ }
+
+ //now we have the resource as it looked before the upgrade kicked in
(which is in this
+ //case also what it will look like after the upgrade finishes, because
we're failing it).
+ s.append(r).append(",\n");
+
+ //and revert the resource back to what it looked like (i.e. back to the
upgraded state so
+ //that we don't introduce side-effects in this method).
+ if (orig != null) {
+ fakeRequest.updateResource(r);
+ }
+ }
+
+ //remove the trailing ",\n"
+ s.replace(s.length() - 2, s.length(), "");
}
return s.length() > 0 ? s.toString() : null;
}
- private boolean checkResourceKeyUniqueAmongSiblings(Resource resource,
ResourceUpgradeReport upgradeReport) {
+ private Set<Resource> findDuplicitSiblingResources(Resource resource,
ResourceUpgradeReport upgradeReport) {
Resource parent = resource.getParentResource();
if (parent == null) {
//there is only a single platform resource on an agent
- return true;
+ return Collections.emptySet();
}
+ Set<Resource> ret = new HashSet<Resource>();
+
for (Resource sibling : parent.getChildResources()) {
//we'd have a resource key conflict if there was a resource
//of the same type under the same parent that would have the same
@@ -325,18 +368,18 @@ public class ResourceUpgradeDelegate {
&& !sibling.getUuid().equals(resource.getUuid())) {
if (sibling.getResourceKey().equals(upgradeReport.getNewResourceKey()))
{
- return false;
+ ret.add(sibling);
}
}
}
- return true;
+ return ret;
}
-
+
private void rememberFailure(Resource resource) {
failedResources.add(resource);
Resource parentResource = resource.getParentResource();
-
+
Set<ResourceType> failedResourceTypesInParent =
failedResourceTypesPerParent.get(parentResource);
if (failedResourceTypesInParent == null) {
failedResourceTypesInParent = new HashSet<ResourceType>();
@@ -345,4 +388,14 @@ public class ResourceUpgradeDelegate {
failedResourceTypesInParent.add(resource.getResourceType());
}
+
+ private ResourceUpgradeRequest findOriginal(ResourceUpgradeRequest request) {
+ for(ResourceUpgradeRequest original : originalResourceData) {
+ if (original.equals(request)) {
+ return original;
+ }
+ }
+
+ return null;
+ }
}
commit 2ec2511ba508c96a2389f40ea13a121774cdeebd
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 16 13:32:34 2011 -0400
BZ 644328 - not really related to this BZ but the help icons need to show
a "?" not a "i". For some reason, our built in skin's icon has
a "i" in the icon.
I found the smartgwt ? icon and used that.
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/images/global/help.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/help.png
index 12cd1ae..25ce508 100644
Binary files a/modules/enterprise/gui/coregui/src/main/webapp/images/global/help.png and
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/help.png differ
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/images/global/help_Disabled.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/help_Disabled.png
index 4fc784a..ff2fd21 100644
Binary files
a/modules/enterprise/gui/coregui/src/main/webapp/images/global/help_Disabled.png and
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/help_Disabled.png differ
commit 83d78504eac6fd1afdab1e2eab1ab598cbd2f336
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 16 13:24:23 2011 -0400
BZ 644328 - add context help to some fields in the bundle deploy wizard
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
index 8be3976..4c8fbfa 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
@@ -25,6 +25,13 @@ public class ImageManager {
public static final String IMAGES_DIR = "images/";
+ /**
+ * Returns a generic "help" icon. This will also have a peer
"disabled" help icon.
+ */
+ public static String getHelpIcon() {
+ return "global/help.png";
+ }
+
public static String getLoadingIcon() {
return "ajax-loader.gif";
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
index 8d7acfd..21a6a64 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
@@ -42,6 +42,7 @@ import
org.rhq.enterprise.gui.coregui.client.bundle.deploy.selection.SingleCompa
import org.rhq.enterprise.gui.coregui.client.components.wizard.AbstractWizardStep;
import org.rhq.enterprise.gui.coregui.client.gwt.BundleGWTServiceAsync;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.util.FormUtility;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
import org.rhq.enterprise.gui.coregui.client.util.selenium.Locatable;
@@ -91,6 +92,7 @@ public class GetDestinationStep extends AbstractWizardStep {
dest.setName(value.toString());
}
});
+ FormUtility.addContextualHelp(nameTextItem,
MSG.view_bundle_deployWizard_getDest_name_help());
final TextAreaItem descriptionTextAreaItem = new
TextAreaItem("description", MSG
.view_bundle_deployWizard_getDest_desc());
@@ -118,6 +120,7 @@ public class GetDestinationStep extends AbstractWizardStep {
dest.setDeployDir(value.toString());
}
});
+ FormUtility.addContextualHelp(deployDirTextItem,
MSG.view_bundle_deployWizard_getDest_deployDir_help());
final RadioGroupItem destBaseDirItem = new
RadioGroupItem("destBaseDir", MSG
.view_bundle_deployWizard_getDest_destBaseDirName());
@@ -198,6 +201,7 @@ public class GetDestinationStep extends AbstractWizardStep {
}
}
});
+ FormUtility.addContextualHelp(this.selector,
MSG.view_bundle_deployWizard_getDest_group_help());
this.valForm.setItems(nameTextItem, descriptionTextAreaItem, this.selector,
destBaseDirItem,
deployDirTextItem);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
index 1097bf1..c510c4b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/FormUtility.java
@@ -25,6 +25,8 @@ import com.smartgwt.client.widgets.form.fields.FormItemIcon;
import com.smartgwt.client.widgets.form.fields.events.IconClickEvent;
import com.smartgwt.client.widgets.form.fields.events.IconClickHandler;
+import org.rhq.enterprise.gui.coregui.client.ImageManager;
+
/**
* A collection of utility methods for working with SmartGWT {@link DynamicForm}s.
*
@@ -50,7 +52,7 @@ public class FormUtility {
public static void addContextualHelp(FormItem item, final String helpText) {
final FormItemIcon helpIcon = new FormItemIcon();
- helpIcon.setSrc("[SKIN]/actions/help.png");
+ helpIcon.setSrc(ImageManager.getHelpIcon());
item.setIcons(helpIcon);
item.addIconClickHandler(new IconClickHandler() {
public void onIconClick(IconClickEvent event) {
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 a66fbd1..ddd0d3e 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
@@ -918,9 +918,12 @@ view_bundle_deployWizard_getConfigSkip = No configuration needed for
this bundle
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
view_bundle_deployWizard_getDestStep = New Destination
view_bundle_deployWizard_getDest_deployDir = Deployment Directory
+view_bundle_deployWizard_getDest_deployDir_help = The directory where the bundle will be
deployed. This directory will be the same for all deployments on all resources but it is
relative to the destination base directory location. This means that the absolute
directory may have a different path on the different target resources depending on where
the base location is on all the different target resources.
view_bundle_deployWizard_getDest_desc = Destination Description
view_bundle_deployWizard_getDest_destBaseDirName = Base Location
+view_bundle_deployWizard_getDest_group_help = The group whose members will be the
destination targets for all bundle deployments. Only compatible groups that contain
resources that support bundle deployments are selectable.
view_bundle_deployWizard_getDest_name = Destination Name
+view_bundle_deployWizard_getDest_name_help = The name of the destination, which will
identify a particular group of resources and the destination directory on those resources
for a particular bundle.
view_bundle_deployWizard_getInfoStep = Provide Deployment Information
view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description
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 ff33d5d..8edfee2 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
@@ -781,9 +781,12 @@ view_bundle_deployWizard_getConfigSkip = No configuration needed for
this bundle
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration~
view_bundle_deployWizard_getDestStep = New Destination~
##view_bundle_deployWizard_getDest_deployDir = Deployment Directory
-view_bundle_deployWizard_getDest_desc = Destination Description~
+##view_bundle_deployWizard_getDest_deployDir_help = The directory where the bundle will
be deployed. This directory will be the same for all deployments on all resources but it
is relative to the destination base directory location. This means that the absolute
directory may have a different path on the different target resources depending on where
the base location is on all the different target resources.
+##view_bundle_deployWizard_getDest_desc = Destination Description
##view_bundle_deployWizard_getDest_destBaseDirName = Base Location
-view_bundle_deployWizard_getDest_name = Destination Name~
+##view_bundle_deployWizard_getDest_group_help = The group whose members will be the
destination targets for all bundle deployments. Only compatible groups that contain
resources that support bundle deployments are selectable.
+##view_bundle_deployWizard_getDest_name = Destination Name
+##view_bundle_deployWizard_getDest_name_help = The name of the destination, which will
identify a particular group of resources and the destination directory on those resources
for a particular bundle.
view_bundle_deployWizard_getInfoStep = Provide Deployment Information~
view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)~
view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description~
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 b20b7c0..b9fc4a3 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
@@ -919,9 +919,12 @@ view_bundle_deployWizard_getConfigSkip = No configuration needed for
this bundle
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
view_bundle_deployWizard_getDestStep = New Destination
##view_bundle_deployWizard_getDest_deployDir = Deployment Directory
-view_bundle_deployWizard_getDest_desc = Destination Description
+##view_bundle_deployWizard_getDest_deployDir_help = The directory where the bundle will
be deployed. This directory will be the same for all deployments on all resources but it
is relative to the destination base directory location. This means that the absolute
directory may have a different path on the different target resources depending on where
the base location is on all the different target resources.
+##view_bundle_deployWizard_getDest_desc = Destination Description
##view_bundle_deployWizard_getDest_destBaseDirName = Base Location
-view_bundle_deployWizard_getDest_name = Destination Name
+##view_bundle_deployWizard_getDest_group_help = The group whose members will be the
destination targets for all bundle deployments. Only compatible groups that contain
resources that support bundle deployments are selectable.
+##view_bundle_deployWizard_getDest_name = Destination Name
+##view_bundle_deployWizard_getDest_name_help = The name of the destination, which will
identify a particular group of resources and the destination directory on those resources
for a particular bundle.
view_bundle_deployWizard_getInfoStep = Provide Deployment Information
view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description
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 68e9552..1a2ae2f 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
@@ -936,9 +936,12 @@ view_bundle_deployWizard_getConfigSkip = No configuration needed for
this bundle
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration~
view_bundle_deployWizard_getDestStep = New Destination~
##view_bundle_deployWizard_getDest_deployDir = Deployment Directory
-view_bundle_deployWizard_getDest_desc = Destination Description~
+##view_bundle_deployWizard_getDest_deployDir_help = The directory where the bundle will
be deployed. This directory will be the same for all deployments on all resources but it
is relative to the destination base directory location. This means that the absolute
directory may have a different path on the different target resources depending on where
the base location is on all the different target resources.
+##view_bundle_deployWizard_getDest_desc = Destination Description
##view_bundle_deployWizard_getDest_destBaseDirName = Base Location
-view_bundle_deployWizard_getDest_name = Destination Name~
+##view_bundle_deployWizard_getDest_group_help = The group whose members will be the
destination targets for all bundle deployments. Only compatible groups that contain
resources that support bundle deployments are selectable.
+##view_bundle_deployWizard_getDest_name = Destination Name
+##view_bundle_deployWizard_getDest_name_help = The name of the destination, which will
identify a particular group of resources and the destination directory on those resources
for a particular bundle.
view_bundle_deployWizard_getInfoStep = Provide Deployment Information~
view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)~
view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description~
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 cde574b..0b9d91a 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
@@ -918,9 +918,12 @@ view_bundle_deployWizard_getConfigSkip = No configuration needed for
this bundle
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
view_bundle_deployWizard_getDestStep = \u65B0\u5EFA\u76EE\u7684\u5730
##view_bundle_deployWizard_getDest_deployDir = Deployment Directory
+##view_bundle_deployWizard_getDest_deployDir_help = The directory where the bundle will
be deployed. This directory will be the same for all deployments on all resources but it
is relative to the destination base directory location. This means that the absolute
directory may have a different path on the different target resources depending on where
the base location is on all the different target resources.
view_bundle_deployWizard_getDest_desc = \u76EE\u7684\u5730\u63CF\u8FF0
##view_bundle_deployWizard_getDest_destBaseDirName = Base Location
+##view_bundle_deployWizard_getDest_group_help = The group whose members will be the
destination targets for all bundle deployments. Only compatible groups that contain
resources that support bundle deployments are selectable.
view_bundle_deployWizard_getDest_name = \u76EE\u7684\u5730\u540D
+##view_bundle_deployWizard_getDest_name_help = The name of the destination, which will
identify a particular group of resources and the destination directory on those resources
for a particular bundle.
view_bundle_deployWizard_getInfoStep = \u63D0\u4F9B\u53D1\u5E03\u4FE1\u606F
view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
view_bundle_deployWizard_getInfo_deploymentDesc = \u53D1\u5E03\u63CF\u8FF0
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/images/global/help.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/help.png
new file mode 100644
index 0000000..12cd1ae
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/help.png differ
diff --git
a/modules/enterprise/gui/coregui/src/main/webapp/images/global/help_Disabled.png
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/help_Disabled.png
new file mode 100644
index 0000000..4fc784a
Binary files /dev/null and
b/modules/enterprise/gui/coregui/src/main/webapp/images/global/help_Disabled.png differ
commit 969095fc111bff5690a3102f506eedb0beaced98
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu Jun 16 11:25:27 2011 -0400
downgrade JNA from 3.2.5 to 3.2.3, since 3.2.3 is the latest version available
in the central repo
diff --git a/pom.xml b/pom.xml
index b7f249e..c47cd49 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,7 +94,7 @@
<sigar.version>1.6.5.132</sigar.version>
<sigar.zip.version>1.6.5</sigar.zip.version>
<quartz.version>1.6.5</quartz.version>
- <jna.version>3.2.5</jna.version>
+ <jna.version>3.2.3</jna.version>
<twitter4j.version>2.1.2</twitter4j.version>
<commons-codec.version>1.4</commons-codec.version>
<testng.version>5.13.1</testng.version>
commit 3431d0db3475816a887511505904576b588367c3
Merge: 5a2ef20 47a5ff6
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 16 09:57:06 2011 -0400
Merge commit 'origin/master' into nonplatform-bundles-644328
commit 5a2ef20fb74acbf56c3ea303852c90e440e5e910
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 16 09:56:42 2011 -0400
BZ 644328 - add description attribute to the bundle-target schema stuff so
we can add help test to the deploy wizard. change the Base Location drop down
menu to a radio button group.
diff --git
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
index c75111b..2d6ba8b 100644
---
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
+++
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
@@ -542,7 +542,9 @@ public class PluginMetadataParser {
String name = destBaseDir.getName();
String valueContext = destBaseDir.getValueContext();
String valueName = destBaseDir.getValueName();
- bundleConfiguration.addBundleDestinationBaseDirectory(name,
valueContext, valueName);
+ String description = destBaseDir.getDescription();
+ bundleConfiguration.addBundleDestinationBaseDirectory(name,
valueContext, valueName,
+ description);
}
resourceType.setResourceTypeBundleConfiguration(bundleConfiguration);
}
diff --git a/modules/core/client-api/src/main/resources/rhq-plugin.xsd
b/modules/core/client-api/src/main/resources/rhq-plugin.xsd
index c06b949..dc4a572 100644
--- a/modules/core/client-api/src/main/resources/rhq-plugin.xsd
+++ b/modules/core/client-api/src/main/resources/rhq-plugin.xsd
@@ -530,10 +530,17 @@
</xs:sequence>
<xs:attribute name="name" type="xs:string"
use="required">
<xs:annotation>
- <xs:documentation>
- The name given to identify this particular destination
base directory.
- </xs:documentation>
- </xs:annotation>
+ <xs:documentation>
+ The name given to identify this particular destination
base directory.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="description"
type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ An explanation to the user to describe what this
destination location is.
+ </xs:documentation>
+ </xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/ResourceTypeBundleConfiguration.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/ResourceTypeBundleConfiguration.java
index 4ab5755..415383c 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/ResourceTypeBundleConfiguration.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/ResourceTypeBundleConfiguration.java
@@ -36,7 +36,7 @@ import org.rhq.core.domain.configuration.PropertySimple;
* the bundle destination base directory definitions (the base locations where bundles
can be deployed for resources that
* are of the given type). Rather than expect users of this object to know the internal
properties stored in the config, this
* object has strongly-typed methods to extract the properties into more easily
consumable POJOs, such as
- * {@link #getBundleDestinationBaseDirectory()} and {@link
#addBundleDestinationBaseDirectory(String, String)}.
+ * {@link #getBundleDestinationBaseDirectory()} and {@link
#addBundleDestinationBaseDirectory(String, String, String, String)}.
*
* @author John Mazzitelli
*/
@@ -48,6 +48,7 @@ public class ResourceTypeBundleConfiguration implements Serializable {
private static final String BUNDLE_DEST_BASE_DIR_NAME_NAME = "name";
private static final String BUNDLE_DEST_BASE_DIR_VALUE_CONTEXT_NAME =
"valueContext";
private static final String BUNDLE_DEST_BASE_DIR_VALUE_NAME_NAME =
"valueName";
+ private static final String BUNDLE_DEST_BASE_DIR_DESCRIPTION_NAME =
"description";
// this is the actual bundle configuration - see ResourceType.bundleConfiguration
private Configuration bundleConfiguration;
@@ -102,7 +103,9 @@ public class ResourceTypeBundleConfiguration implements Serializable
{
String name = map.getSimpleValue(BUNDLE_DEST_BASE_DIR_NAME_NAME, null);
String valueContext =
map.getSimpleValue(BUNDLE_DEST_BASE_DIR_VALUE_CONTEXT_NAME, null);
String valueName = map.getSimpleValue(BUNDLE_DEST_BASE_DIR_VALUE_NAME_NAME,
null);
- BundleDestinationBaseDirectory bdbd = new
BundleDestinationBaseDirectory(name, valueContext, valueName);
+ String description =
map.getSimpleValue(BUNDLE_DEST_BASE_DIR_DESCRIPTION_NAME, null);
+ BundleDestinationBaseDirectory bdbd = new
BundleDestinationBaseDirectory(name, valueContext, valueName,
+ description);
retVal.add(bdbd);
}
@@ -118,14 +121,16 @@ public class ResourceTypeBundleConfiguration implements Serializable
{
* in {@link BundleDestinationBaseDirectory.Context}
* @param valueName the name of the property found in the given context where the
value
* of the base directory is
+ * @param description optional explanation for what this destination location is
*/
- public void addBundleDestinationBaseDirectory(String name, String valueContext,
String valueName) {
+ public void addBundleDestinationBaseDirectory(String name, String valueContext,
String valueName, String description) {
if (this.bundleConfiguration == null) {
throw new NullPointerException("bundleConfiguration == null");
}
// we create this just to make sure the context and value are valid. An exception
will be thrown if they are not.
- BundleDestinationBaseDirectory destBaseDir = new
BundleDestinationBaseDirectory(name, valueContext, valueName);
+ BundleDestinationBaseDirectory destBaseDir = new
BundleDestinationBaseDirectory(name, valueContext, valueName,
+ description);
PropertyList propertyList =
this.bundleConfiguration.getList(BUNDLE_DEST_BASE_DIR_LIST_NAME);
if (propertyList == null) {
@@ -138,10 +143,18 @@ public class ResourceTypeBundleConfiguration implements Serializable
{
.getValueContext().name());
PropertySimple valueNameProp = new
PropertySimple(BUNDLE_DEST_BASE_DIR_VALUE_NAME_NAME, destBaseDir
.getValueName());
+
PropertyMap map = new PropertyMap(BUNDLE_DEST_BASE_DIR_LIST_ITEM_NAME);
map.put(nameProp);
map.put(valueContextProp);
map.put(valueNameProp);
+
+ if (destBaseDir.getDescription() != null) {
+ PropertySimple descriptionProp = new
PropertySimple(BUNDLE_DEST_BASE_DIR_DESCRIPTION_NAME, destBaseDir
+ .getDescription());
+ map.put(descriptionProp);
+ }
+
propertyList.add(map);
return;
}
@@ -200,14 +213,16 @@ public class ResourceTypeBundleConfiguration implements Serializable
{
private final String name;
private final Context valueContext;
private final String valueName;
+ private final String description;
- public BundleDestinationBaseDirectory(String name, String valueContext, String
valueName) {
+ public BundleDestinationBaseDirectory(String name, String valueContext, String
valueName, String description) {
if (name == null) {
throw new NullPointerException("name == null");
}
this.name = name;
this.valueContext = Context.valueOf(valueContext); // will throw an exception
if its not valid, which is what we want
this.valueName = valueName;
+ this.description = description;
}
/**
@@ -233,11 +248,19 @@ public class ResourceTypeBundleConfiguration implements Serializable
{
return valueName;
}
+ /**
+ * @return an explanation for what this directory location is
+ */
+ public String getDescription() {
+ return description;
+ }
+
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("BundleDestinationBaseDirectory
[name=").append(name).append(", valueContext=").append(
- valueContext).append(",
valueName=").append(valueName).append("]");
+ valueContext).append(",
valueName=").append(valueName).append(",
description=").append(description)
+ .append("]");
return builder.toString();
}
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/bundle/BundleManagerTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/bundle/BundleManagerTest.java
index 9942cb3..c69331c 100644
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/bundle/BundleManagerTest.java
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/bundle/BundleManagerTest.java
@@ -401,22 +401,22 @@ public class BundleManagerTest {
// measurement trait value, or strictly on the root file system (using no
resource specific value)
ResourceTypeBundleConfiguration rtbc = new
ResourceTypeBundleConfiguration(new Configuration());
rtbc.addBundleDestinationBaseDirectory(BUNDLE_CONFIG_NAME_FS,
Context.fileSystem.name(),
- BUNDLE_CONFIG_CONTEXT_VALUE_FS);
+ BUNDLE_CONFIG_CONTEXT_VALUE_FS, null);
serverTypeFS.setResourceTypeBundleConfiguration(rtbc);
rtbc = new ResourceTypeBundleConfiguration(new Configuration());
rtbc.addBundleDestinationBaseDirectory(BUNDLE_CONFIG_NAME_PC,
Context.pluginConfiguration.name(),
- BUNDLE_CONFIG_CONTEXT_VALUE_PC);
+ BUNDLE_CONFIG_CONTEXT_VALUE_PC, null);
serverTypePC.setResourceTypeBundleConfiguration(rtbc);
rtbc = new ResourceTypeBundleConfiguration(new Configuration());
rtbc.addBundleDestinationBaseDirectory(BUNDLE_CONFIG_NAME_RC,
Context.resourceConfiguration.name(),
- BUNDLE_CONFIG_CONTEXT_VALUE_RC);
+ BUNDLE_CONFIG_CONTEXT_VALUE_RC, null);
serverTypeRC.setResourceTypeBundleConfiguration(rtbc);
rtbc = new ResourceTypeBundleConfiguration(new Configuration());
rtbc.addBundleDestinationBaseDirectory(BUNDLE_CONFIG_NAME_MT,
Context.measurementTrait.name(),
- BUNDLE_CONFIG_CONTEXT_VALUE_MT);
+ BUNDLE_CONFIG_CONTEXT_VALUE_MT, null);
serverTypeMT.setResourceTypeBundleConfiguration(rtbc);
// each different resource needs to specify where exactly it wants the
bundles deployed
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
index cdba5cb..8d7acfd 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
@@ -18,14 +18,14 @@
*/
package org.rhq.enterprise.gui.coregui.client.bundle.deploy;
-import java.util.Arrays;
+import java.util.LinkedHashMap;
import java.util.Set;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.CanvasItem;
-import com.smartgwt.client.widgets.form.fields.SelectItem;
+import com.smartgwt.client.widgets.form.fields.RadioGroupItem;
import com.smartgwt.client.widgets.form.fields.TextAreaItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
@@ -119,12 +119,10 @@ public class GetDestinationStep extends AbstractWizardStep {
}
});
- final SelectItem destBaseDirItem = new SelectItem("destBaseDir",
MSG
+ final RadioGroupItem destBaseDirItem = new
RadioGroupItem("destBaseDir", MSG
.view_bundle_deployWizard_getDest_destBaseDirName());
destBaseDirItem.setWidth(300);
destBaseDirItem.setRequired(true);
- destBaseDirItem.setAllowEmptyValue(false);
- destBaseDirItem.setMultiple(false);
destBaseDirItem.setDisabled(true);
destBaseDirItem.addChangedHandler(new ChangedHandler() {
public void onChanged(ChangedEvent event) {
@@ -166,20 +164,23 @@ public class GetDestinationStep extends AbstractWizardStep {
new AsyncCallback<ResourceTypeBundleConfiguration>() {
public void onSuccess(ResourceTypeBundleConfiguration
result) {
// populate the base location drop down with all the
possible dest base directories
- String[] menuItems = null;
+ LinkedHashMap<String, String> menuItems =
null;
if (result != null) {
Set<BundleDestinationBaseDirectory>
baseDirs;
baseDirs =
result.getBundleDestinationBaseDirectories();
if (baseDirs != null && baseDirs.size()
> 0) {
- menuItems = new String[baseDirs.size()];
- int i = 0;
+ String defaultSelectedItem = null;
+ menuItems = new LinkedHashMap<String,
String>(baseDirs.size());
for (BundleDestinationBaseDirectory baseDir :
baseDirs) {
- menuItems[i++] = baseDir.getName();
+ menuItems.put(baseDir.getName(),
"<b>" + baseDir.getName() + "</b>: "
+ + baseDir.getDescription());
+ if (defaultSelectedItem == null) {
+ defaultSelectedItem =
baseDir.getName();
+ }
}
- Arrays.sort(menuItems); // just so they are
ordered in the drop down list
destBaseDirItem.setValueMap(menuItems);
- destBaseDirItem.setValue(menuItems[0]);
-
dest.setDestinationBaseDirectoryName(menuItems[0]);
+
destBaseDirItem.setValue(defaultSelectedItem);
+
dest.setDestinationBaseDirectoryName(defaultSelectedItem);
}
}
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
index fa55ec1..40a0168 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
@@ -1053,7 +1053,7 @@ public class BundleManagerBeanTest extends AbstractEJB3Test {
ResourceTypeBundleConfiguration rtbc = new
ResourceTypeBundleConfiguration(new Configuration());
rtbc.addBundleDestinationBaseDirectory(TEST_DESTBASEDIR_NAME,
ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory.Context.pluginConfiguration.name(),
- TEST_BUNDLE_DESTBASEDIR_PROP);
+ TEST_BUNDLE_DESTBASEDIR_PROP, null);
resourceType.setResourceTypeBundleConfiguration(rtbc);
resourceType.setPluginConfigurationDefinition(pcDef);
diff --git a/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
index dd1d008..a151196 100644
--- a/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
@@ -258,11 +258,11 @@
</content>
<bundle-target>
- <destination-base-dir name="Install Directory">
+ <destination-base-dir name="Install Directory"
description="The top directory where the JBossAS Server is installed. (i.e. the value
found in the 'JBoss Home Directory' connection property)">
<value-context>pluginConfiguration</value-context>
<value-name>jbossHomeDir</value-name>
</destination-base-dir>
- <destination-base-dir name="Configuration Set Directory">
+ <destination-base-dir name="Profile Directory"
description="The profile configuration directory such as 'default',
'minimal', 'production' or similar location. (i.e. the value found in the
'Configuration Path' connection property)">
<value-context>pluginConfiguration</value-context>
<value-name>configurationPath</value-name>
</destination-base-dir>
diff --git a/modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml
index 3c56aa4..40f6975 100644
--- a/modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml
@@ -33,7 +33,7 @@
'>
<!ENTITY bundleTarget '
<bundle-target>
- <destination-base-dir name="Root File System">
+ <destination-base-dir name="Root File System" description="The
top root directory on the platform (/)" >
<value-context>fileSystem</value-context>
<value-name>/</value-name>
</destination-base-dir>
commit 47a5ff64c25c0f4d8648ed8101152d17863abe4d
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Tue Jun 7 18:40:22 2011 +0200
BZ 711484 - catching all the exceptions that can happen during resource activation
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index d29cd56..dc58717 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -2746,8 +2746,10 @@ public class InventoryManager extends AgentService implements
ContainerService,
for (Resource child : resource.getChildResources()) {
activateAndUpgradeResourceRecursively(child, doUpgrade);
}
- } catch (PluginContainerException e) {
- log.error("Exception thrown while activating [" + resource +
"].", e);
+ } catch (InvalidPluginConfigurationException e) {
+ log.debug("Failed to activate resource [" + resource + "]
due to invalid plugin configuration.", e);
+ } catch (Throwable t) {
+ log.error("Exception thrown while activating [" + resource +
"].", t);
}
}
}
commit 5905b70b72eea224790d1254d973ba6dadf6b30e
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Wed Jun 15 15:08:37 2011 -0500
Close all db connections used by dbunit when no longer needed.
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/alert/test/AlertManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/alert/test/AlertManagerBeanTest.java
index 83eb204..41b902c 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/alert/test/AlertManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/alert/test/AlertManagerBeanTest.java
@@ -18,10 +18,8 @@
*/
package org.rhq.enterprise.server.alert.test;
+import java.sql.Connection;
import java.util.List;
-import java.util.Random;
-
-import javax.persistence.EntityManager;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
@@ -30,27 +28,15 @@ import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.dataset.xml.FlatXmlProducer;
import org.dbunit.operation.DatabaseOperation;
import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.xml.sax.InputSource;
-import org.rhq.core.domain.alert.Alert;
-import org.rhq.core.domain.alert.AlertCondition;
-import org.rhq.core.domain.alert.AlertConditionCategory;
import org.rhq.core.domain.alert.AlertConditionLog;
-import org.rhq.core.domain.alert.AlertDampening;
-import org.rhq.core.domain.alert.AlertDefinition;
-import org.rhq.core.domain.alert.AlertPriority;
-import org.rhq.core.domain.alert.BooleanExpression;
import org.rhq.core.domain.alert.notification.AlertNotificationLog;
-import org.rhq.core.domain.alert.notification.ResultState;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.common.EntityContext;
-import org.rhq.core.domain.resource.Agent;
import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.ResourceCategory;
-import org.rhq.core.domain.resource.ResourceType;
import org.rhq.enterprise.server.alert.AlertManagerLocal;
import org.rhq.enterprise.server.test.AbstractEJB3Test;
import org.rhq.enterprise.server.util.LookupUtil;
@@ -64,14 +50,22 @@ public class AlertManagerBeanTest extends AbstractEJB3Test {
private Subject superuser;
private Resource newResource;
-
@BeforeMethod
public void beforeMethod() throws Exception {
alertManager = LookupUtil.getAlertManager();
superuser = LookupUtil.getSubjectManager().getOverlord();
- IDatabaseConnection connection = new DatabaseConnection(getConnection());
- DatabaseOperation.CLEAN_INSERT.execute(connection, getDataSet());
+ Connection connection = null;
+
+ try {
+ connection = getConnection();
+ IDatabaseConnection dbUnitConnection = new DatabaseConnection(connection);
+ DatabaseOperation.CLEAN_INSERT.execute(dbUnitConnection, getDataSet());
+ } finally {
+ if (connection != null) {
+ connection.close();
+ }
+ }
newResource = getEntityManager().find(Resource.class, 1);
}
@@ -79,8 +73,17 @@ public class AlertManagerBeanTest extends AbstractEJB3Test {
@AfterClass
public void cleanupDB() throws Exception {
if ("true".equals(System.getProperty("clean.db"))) {
- IDatabaseConnection connection = new DatabaseConnection(getConnection());
- DatabaseOperation.DELETE_ALL.execute(connection, getDataSet());
+ Connection connection = null;
+
+ try {
+ connection = getConnection();
+ IDatabaseConnection dbUnitConnection = new
DatabaseConnection(connection);
+ DatabaseOperation.DELETE_ALL.execute(dbUnitConnection, getDataSet());
+ } finally {
+ if (connection != null) {
+ connection.close();
+ }
+ }
}
}
@@ -121,5 +124,4 @@ public class AlertManagerBeanTest extends AbstractEJB3Test {
assert 2 == alertManager.deleteAlerts(0L, System.currentTimeMillis() + 600000L);
// go out into the future to make sure we get our alert
}
-
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
index 46005c3..082bd6b 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.java
@@ -22,11 +22,11 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.sql.Connection;
import java.util.Random;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
-import javax.persistence.EntityManager;
import org.dbunit.database.DatabaseConfig;
import org.dbunit.database.DatabaseConnection;
@@ -43,6 +43,7 @@ import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
+import org.xml.sax.InputSource;
import org.jboss.mx.util.MBeanServerLocator;
@@ -50,14 +51,11 @@ import org.rhq.core.clientapi.server.discovery.InventoryReport;
import org.rhq.core.domain.discovery.ResourceSyncInfo;
import org.rhq.core.domain.resource.Agent;
import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.enterprise.server.core.comm.ServerCommunicationsService;
import org.rhq.enterprise.server.core.comm.ServerCommunicationsServiceMBean;
-import org.rhq.enterprise.server.discovery.DiscoveryBossLocal;
import org.rhq.enterprise.server.test.AbstractEJB3Test;
import org.rhq.enterprise.server.util.LookupUtil;
-import org.xml.sax.InputSource;
public class DiscoveryBossBeanTest extends AbstractEJB3Test {
private DiscoveryBossLocal discoveryBoss;
@@ -176,9 +174,18 @@ public class DiscoveryBossBeanTest extends AbstractEJB3Test {
}
public void initDB() throws Exception {
- IDatabaseConnection conn = new DatabaseConnection(getConnection());
- setDbType(conn);
- DatabaseOperation.CLEAN_INSERT.execute(conn, getDataSet());
+ Connection connection = null;
+
+ try {
+ connection = getConnection();
+ IDatabaseConnection dbUnitConnection = new DatabaseConnection(connection);
+ setDbType(dbUnitConnection);
+ DatabaseOperation.CLEAN_INSERT.execute(dbUnitConnection, getDataSet());
+ } finally {
+ if (connection != null) {
+ connection.close();
+ }
+ }
}
void setDbType(IDatabaseConnection connection) throws Exception {
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/inventory/InventoryManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/inventory/InventoryManagerBeanTest.java
index acb6963..6aa8c4d 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/inventory/InventoryManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/inventory/InventoryManagerBeanTest.java
@@ -1,5 +1,8 @@
package org.rhq.enterprise.server.inventory;
+import static java.util.Arrays.asList;
+
+import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
@@ -24,8 +27,6 @@ import org.rhq.core.domain.resource.ResourceType;
import org.rhq.enterprise.server.test.AbstractEJB3Test;
import org.rhq.enterprise.server.util.LookupUtil;
-import static java.util.Arrays.asList;
-
public class InventoryManagerBeanTest extends AbstractEJB3Test {
@BeforeClass
@@ -34,10 +35,7 @@ public class InventoryManagerBeanTest extends AbstractEJB3Test {
getTransactionManager().begin();
List<Integer> resourceTypeIds = asList(1, 2, 3, 4, 5);
-// List<ResourceType> resourceTypes = asList(
-// getEntityManager().find(ResourceType.class, 1),
-// getEntityManager().find(ResourceType.class, 4));
-
+
InventoryManagerLocal inventoryMgr = LookupUtil.getInventoryManager();
inventoryMgr.markTypesDeleted(resourceTypeIds);
getTransactionManager().commit();
@@ -117,9 +115,18 @@ public class InventoryManagerBeanTest extends AbstractEJB3Test {
}
public void initDB() throws Exception {
- IDatabaseConnection conn = new DatabaseConnection(getConnection());
- setDbType(conn);
- DatabaseOperation.CLEAN_INSERT.execute(conn, getDataSet());
+ Connection connection = null;
+
+ try {
+ connection = getConnection();
+ IDatabaseConnection conn = new DatabaseConnection(connection);
+ setDbType(conn);
+ DatabaseOperation.CLEAN_INSERT.execute(conn, getDataSet());
+ } finally {
+ if (connection != null) {
+ connection.close();
+ }
+ }
}
void setDbType(IDatabaseConnection connection) throws Exception {
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
index 8eebdb9..7182555 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java
@@ -1,7 +1,10 @@
package org.rhq.enterprise.server.resource.metadata;
+import static org.rhq.core.clientapi.shared.PluginDescriptorUtil.loadPluginDescriptor;
+
import java.io.File;
import java.net.URL;
+import java.sql.Connection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -36,9 +39,6 @@ import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal;
import org.rhq.enterprise.server.test.AbstractEJB3Test;
import org.rhq.enterprise.server.util.LookupUtil;
-import static org.rhq.core.clientapi.shared.PluginDescriptorUtil.toPluginDescriptor;
-import static org.rhq.core.clientapi.shared.PluginDescriptorUtil.loadPluginDescriptor;
-
public class MetadataBeanTest extends AbstractEJB3Test {
private static List<String> plugins = new ArrayList<String>();
@@ -70,9 +70,18 @@ public class MetadataBeanTest extends AbstractEJB3Test {
}
protected void setupDB() throws Exception {
- DatabaseConnection dbunitConnection = new DatabaseConnection(getConnection());
- setDbType(dbunitConnection);
- DatabaseOperation.CLEAN_INSERT.execute(dbunitConnection, getDataSet());
+ Connection connection = null;
+
+ try {
+ connection = getConnection();
+ DatabaseConnection dbunitConnection = new DatabaseConnection(connection);
+ setDbType(dbunitConnection);
+ DatabaseOperation.CLEAN_INSERT.execute(dbunitConnection, getDataSet());
+ } finally {
+ if (connection != null) {
+ connection.close();
+ }
+ }
}
private void setDbType(IDatabaseConnection connection) throws Exception {
@@ -106,7 +115,6 @@ public class MetadataBeanTest extends AbstractEJB3Test {
}
protected void createPlugin(String pluginFileName, String version, String
descriptorFileName) throws Exception {
-// URL descriptorURL = getClass().getResource(descriptorFileName);
URL descriptorURL = getDescriptorURL(descriptorFileName);
PluginDescriptor pluginDescriptor = loadPluginDescriptor(descriptorURL);
String pluginFilePath = getCurrentWorkingDir() + "/" + pluginFileName +
".jar";
@@ -132,25 +140,6 @@ public class MetadataBeanTest extends AbstractEJB3Test {
String dir = getClass().getSimpleName();
return getClass().getResource(dir + "/" + descriptor);
}
-
-// protected void createPlugin(String pluginFileName, String version, String
descriptor) throws Exception {
-// PluginDescriptor pluginDescriptor = toPluginDescriptor(descriptor);
-// String pluginFilePath = getCurrentWorkingDir() + "/" + pluginFileName
+ ".jar";
-// File pluginFile = new File(pluginFilePath);
-//
-// Plugin plugin = new Plugin(pluginDescriptor.getName(), pluginFilePath);
-// plugin.setDisplayName(pluginDescriptor.getName());
-// plugin.setEnabled(true);
-// plugin.setDescription(pluginDescriptor.getDescription());
-// plugin.setAmpsVersion(getAmpsVersion(pluginDescriptor));
-// plugin.setVersion(pluginDescriptor.getVersion());
-// plugin.setMD5(MessageDigestGenerator.getDigestString(pluginFile));
-//
-// SubjectManagerLocal subjectMgr = LookupUtil.getSubjectManager();
-// PluginManagerLocal pluginMgr = LookupUtil.getPluginManager();
-//
-// pluginMgr.registerPlugin(subjectMgr.getOverlord(), plugin, pluginDescriptor,
null, true);
-// }
private String getPluginWorkDir() throws Exception {
return getCurrentWorkingDir() + "/work";
@@ -212,13 +201,11 @@ public class MetadataBeanTest extends AbstractEJB3Test {
errors = "Failed to find the following " + propertyName + "(s)
for type " + resourceTypeName +
": " + missing;
}
-
+
if (unexpected.size() > 0) {
errors += "\nFailed to find the following " + propertyName +
"(s) for type " + resourceTypeName +
": " + unexpected;
}
-
-
}
private boolean contains(ResourceType type, String propertyName, String expected)
throws Exception {
@@ -231,5 +218,4 @@ public class MetadataBeanTest extends AbstractEJB3Test {
}
return false;
}
-
}
commit cb91dc2624cf5b1fca44ffcf579b162fc46fee44
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Jun 15 15:07:31 2011 -0400
BZ 644328 - prohibit someone from specifying a ".." directory inside the
deployDir for a destination
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index 9ea77f5..139efe4 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -304,6 +304,14 @@ public class BundleManagerBean implements BundleManagerLocal,
BundleManagerRemot
public BundleDestination createBundleDestination(Subject subject, int bundleId,
String name, String description,
String destBaseDirName, String deployDir, Integer groupId) throws Exception {
+ // if there is a .. in the path that looks suspicious, reject it. (note the : is
to reject things like C:..\..\dir on windows)
+ // this won't allow everything (such as directories that start with
".." like "..abc" or "/abc/..def") but if you are naming
+ // your directories in those strange ways, you deserve what you get
+ if (deployDir.startsWith("..") ||
deployDir.matches(".*[/:\\\\]\\.\\..*")) {
+ throw new IllegalArgumentException(
+ "Destination directories are not allowed to have '..' parent
directory path elements");
+ }
+
Bundle bundle = entityManager.find(Bundle.class, bundleId);
if (null == bundle) {
throw new IllegalArgumentException("Invalid bundleId [" + bundleId
+ "]");
commit 3b2d8e21c537dac74b9652c63f8b12bef053c531
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Jun 15 18:11:44 2011 +0200
As tests are checking *updates*, I can only verify the updated version.
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java
index f3df649..ffdfec7 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java
@@ -181,29 +181,17 @@ public class ConfigurationMetadataManagerBeanTest extends
AbstractEJB3Test {
public void updatePropertyDefinitionOptionSource() {
initConfigDefs("servers[name='OptionSourceTest']",
"OptionSourceTest");
- // check initial entry
- PropertyDefinitionSimple prop1 = (PropertyDefinitionSimple)
originalConfigDef.get("prop1");
- assert prop1 !=null;
-// assert prop1.getEnumeratedValues().size()==1 : "Did not find my one
option"; TODO
- PropertyOptionsSource source = prop1.getOptionsSource();
- assert source !=null : "PropertyOptionSource was not persisted";
- assert source.getFilter().equals("*.jdbc");
-
- PropertyDefinitionSimple prop2 = (PropertyDefinitionSimple)
originalConfigDef.get("prop2");
- assert prop2 !=null;
- assert prop2.getEnumeratedValues().size()==0;
- assert prop2.getOptionsSource()==null;
// now check the upgrades
- prop1 = (PropertyDefinitionSimple) updatedConfigDef.get("prop1");
+ PropertyDefinitionSimple prop1 = (PropertyDefinitionSimple)
updatedConfigDef.get("prop1");
assert prop1 !=null;
assert prop1.getEnumeratedValues().size()==0 : "Found an option value.
";
- source = prop1.getOptionsSource();
+ PropertyOptionsSource source = prop1.getOptionsSource();
assert source !=null : "PropertyOptionSource was not persisted";
assert source.getFilter()==null : "Assumed filter to be null, but was "
+ source.getFilter();
- prop2 = (PropertyDefinitionSimple) updatedConfigDef.get("prop2");
+ PropertyDefinitionSimple prop2 = (PropertyDefinitionSimple)
updatedConfigDef.get("prop2");
assert prop2 !=null;
- assert prop2.getEnumeratedValues().size()==0;
+ assert prop2.getEnumeratedValues().size()==1;
assert prop2.getOptionsSource()!=null;
assert prop2.getOptionsSource().getExpression().equals("*");
@@ -239,6 +227,7 @@ public class ConfigurationMetadataManagerBeanTest extends
AbstractEJB3Test {
private void updateConfigDef() {
ConfigurationMetadataManagerLocal configMetadataMgr =
LookupUtil.getConfigurationMetadataManager();
+ // The next line updates originalConfigDef with the content of updatedConfigDef
configMetadataMgr.updateConfigurationDefinition(updatedConfigDef,
originalConfigDef);
}
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v2.xml
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v2.xml
index 0f0e3a7..4292975 100644
---
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v2.xml
+++
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v2.xml
@@ -96,6 +96,9 @@
linkToTarget="false"/>
</c:simple-property>
<c:simple-property name="prop2">
+ <c:property-options>
+ <c:option value="value2"/>
+ </c:property-options>
<c:option-source target="resource"
expression="*"/>
</c:simple-property>
</plugin-configuration>
commit 093dfe99e79909d8cc0b01615a0b61fdc84a985f
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Jun 15 17:17:40 2011 +0200
Initial batch of core object changes and plugin parsing for the dependent values
feature.
diff --git
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/ConfigurationMetadataParser.java
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/ConfigurationMetadataParser.java
index 72e107a..facde3c 100644
---
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/ConfigurationMetadataParser.java
+++
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/ConfigurationMetadataParser.java
@@ -40,6 +40,7 @@ import
org.rhq.core.clientapi.descriptor.configuration.IntegerConstraintType;
import org.rhq.core.clientapi.descriptor.configuration.ListProperty;
import org.rhq.core.clientapi.descriptor.configuration.MapProperty;
import org.rhq.core.clientapi.descriptor.configuration.Option;
+import org.rhq.core.clientapi.descriptor.configuration.OptionSource;
import org.rhq.core.clientapi.descriptor.configuration.PropertyGroup;
import org.rhq.core.clientapi.descriptor.configuration.PropertyOptions;
import org.rhq.core.clientapi.descriptor.configuration.PropertyType;
@@ -60,6 +61,7 @@ import
org.rhq.core.domain.configuration.definition.PropertyDefinitionList;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionMap;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
import org.rhq.core.domain.configuration.definition.PropertyGroupDefinition;
+import org.rhq.core.domain.configuration.definition.PropertyOptionsSource;
import org.rhq.core.domain.configuration.definition.PropertySimpleType;
import org.rhq.core.domain.configuration.definition.constraint.Constraint;
import org.rhq.core.domain.configuration.definition.constraint.FloatRangeConstraint;
@@ -235,6 +237,24 @@ public class ConfigurationMetadataParser {
parsePropertyOptions(property, simpleProperty.getPropertyOptions());
}
+ if (simpleProperty.getOptionSource() != null) {
+ PropertyOptionsSource optionsSource = new PropertyOptionsSource();
+ OptionSource source = simpleProperty.getOptionSource();
+ optionsSource.setTarget(source.getTarget().toString());
+ optionsSource.setLinkToTarget(source.isLinkToTarget());
+ if (source.getFilter()!=null && source.getFilter().length()>40) {
+ throw new IllegalArgumentException("Filter expression must be less
than 40 chars long");
+ }
+ optionsSource.setFilter(source.getFilter());
+ String expression = source.getExpression();
+ if (expression ==null || expression.isEmpty())
+ throw new IllegalArgumentException("Expression must not be
empty");
+ if (expression.length()>400)
+ throw new IllegalArgumentException("Expression must be less than 400
chars long");
+ optionsSource.setExpression(expression);
+ property.setOptionsSource(optionsSource);
+ }
+
return property;
}
@@ -500,4 +520,4 @@ public class ConfigurationMetadataParser {
return (value != null) ? value.trim() : null;
}
-}
\ No newline at end of file
+}
diff --git a/modules/core/client-api/src/main/resources/rhq-configuration.xsd
b/modules/core/client-api/src/main/resources/rhq-configuration.xsd
index fe898f2..b038ec1 100644
--- a/modules/core/client-api/src/main/resources/rhq-configuration.xsd
+++ b/modules/core/client-api/src/main/resources/rhq-configuration.xsd
@@ -258,6 +258,8 @@
<xs:element name="property-options"
type="config:propertyOptions" minOccurs="0"
maxOccurs="1"/>
+ <xs:element name="option-source"
type="config:optionSource" minOccurs="0" maxOccurs="1"/>
+
<xs:element name="constraint"
type="config:constraintType" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="defaultValueDescription"
minOccurs="0" maxOccurs="1">
@@ -440,6 +442,46 @@
</xs:attribute>
</xs:complexType>
+ <xs:simpleType name="sourceType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="plugin"/>
+ <xs:enumeration value="resourceType"/>
+ <xs:enumeration value="resource"/>
+ <xs:enumeration value="configuration"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="optionSource">
+ <xs:annotation>
+ <xs:documentation>
+ Defines a source for the options of the property options. Sources can
e.g.
+ be Resources, ResourceTypes, Schedules, Configurations etc.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="target" use="required"
type="config:sourceType">
+ <xs:annotation>
+ <xs:documentation>Type of the link target</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="linkToTarget" use="optional"
default="false" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation>Should the UI show a link to the
target?</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="filter" use="optional"
type="xs:string">
+ <xs:annotation>
+ <xs:documentation>A filter to narrow down search results. Example:
*.jdbc</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="expression" use="required"
type="xs:string">
+ <xs:annotation>
+ <xs:documentation>An expression that defines a path to the target
item(s).
+ Expressions are written in the syntax of the search
bar.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ </xs:complexType>
+
<xs:complexType name="option">
<xs:annotation>
<xs:documentation>Describes an allowed value for an enumerated simple
property.
diff --git
a/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/ConfigurationMetadataParser2Test.java
b/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/ConfigurationMetadataParser2Test.java
new file mode 100644
index 0000000..46db0a3
--- /dev/null
+++
b/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/ConfigurationMetadataParser2Test.java
@@ -0,0 +1,131 @@
+ /*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * 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 and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+ package org.rhq.core.clientapi.agent.metadata.test;
+
+ import java.net.URL;
+ import java.util.List;
+
+ import javax.xml.bind.JAXBContext;
+ import javax.xml.bind.Unmarshaller;
+ import javax.xml.bind.util.ValidationEventCollector;
+
+
+ import org.apache.commons.logging.Log;
+ import org.apache.commons.logging.LogFactory;
+ import org.testng.annotations.BeforeSuite;
+ import org.testng.annotations.Test;
+
+ import org.rhq.core.clientapi.agent.metadata.ConfigurationMetadataParser;
+ import org.rhq.core.clientapi.agent.metadata.InvalidPluginDescriptorException;
+ import org.rhq.core.clientapi.descriptor.DescriptorPackages;
+ import org.rhq.core.clientapi.descriptor.plugin.PluginDescriptor;
+ import org.rhq.core.clientapi.descriptor.plugin.ServerDescriptor;
+ import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+ import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
+ import org.rhq.core.domain.configuration.definition.PropertySimpleType;
+
+ /**
+ * @author Jason Dobies
+ * @author Heiko W. Rupp
+ */
+ public class ConfigurationMetadataParser2Test {
+ private static final Log LOG =
LogFactory.getLog(ConfigurationMetadataParser2Test.class);
+ private static final String DESCRIPTOR_FILENAME = "test2-plugin.xml";
+
+ private PluginDescriptor pluginDescriptor;
+
+ @BeforeSuite
+ public void loadPluginDescriptor() throws Exception {
+ try {
+ URL descriptorUrl =
this.getClass().getClassLoader().getResource(DESCRIPTOR_FILENAME);
+ LOG.info("Loading plugin descriptor at: " + descriptorUrl);
+
+ JAXBContext jaxbContext =
JAXBContext.newInstance(DescriptorPackages.PC_PLUGIN);
+
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ ValidationEventCollector vec = new ValidationEventCollector();
+ unmarshaller.setEventHandler(vec);
+ pluginDescriptor = (PluginDescriptor)
unmarshaller.unmarshal(descriptorUrl.openStream());
+ } catch (Throwable t) {
+ // Catch RuntimeExceptions and Errors and dump their stack trace, because
Surefire will completely swallow them
+ // and throw a cryptic NPE (see
http://jira.codehaus.org/browse/SUREFIRE-157)!
+ t.printStackTrace();
+ throw new RuntimeException(t);
+ }
+ }
+
+ @Test
+ public void parseValidDefinitionServer2() throws InvalidPluginDescriptorException {
+ ConfigurationDefinition definition = loadDescriptor("testServer2");
+
+ assertSimplePropertyType(definition, "prop1",
PropertySimpleType.STRING);
+ assertSimplePropertyType(definition, "prop2",
PropertySimpleType.STRING);
+ assertSimplePropertyType(definition, "prop3",
PropertySimpleType.STRING);
+
+ PropertyDefinitionSimple pds = (PropertyDefinitionSimple)
definition.get("prop1");
+ assert pds.getEnumeratedValues().size()==2;
+ assert pds.getOptionsSource()==null;
+
+ pds = (PropertyDefinitionSimple) definition.get("prop2");
+ assert pds.getEnumeratedValues().isEmpty();
+ assert pds.getOptionsSource()!=null;
+
+ pds = (PropertyDefinitionSimple) definition.get("prop3");
+ assert pds.getEnumeratedValues().size()==1;
+ assert pds.getOptionsSource()!=null;
+
+ }
+
+
+
+
+
+
+ private void assertSimplePropertyType(ConfigurationDefinition definition, String
propertyName,
+ PropertySimpleType type) {
+ PropertyDefinitionSimple simple =
definition.getPropertyDefinitionSimple(propertyName);
+ assert simple != null : propertyName + " was not loaded";
+ assert simple.getType() == type : propertyName + " was read with incorrect
type";
+ assert simple.getName().equals(propertyName) : propertyName + " was read
with no name";
+ }
+
+
+ private ConfigurationDefinition loadDescriptor(String serverName) throws
InvalidPluginDescriptorException {
+ List<ServerDescriptor> servers = pluginDescriptor.getServers();
+
+ ServerDescriptor serverDescriptor = findServer(serverName, servers);
+ assert serverDescriptor != null : "Server descriptor not found in test
plugin descriptor";
+
+ return ConfigurationMetadataParser.parse("null",
serverDescriptor.getResourceConfiguration());
+ }
+
+ private ServerDescriptor findServer(String name, List<ServerDescriptor>
servers) {
+ for (ServerDescriptor server : servers) {
+ if (server.getName().equals(name)) {
+ return server;
+ }
+ }
+
+ return null;
+ }
+ }
diff --git a/modules/core/client-api/src/test/resources/test2-plugin.xml
b/modules/core/client-api/src/test/resources/test2-plugin.xml
new file mode 100644
index 0000000..e954f51
--- /dev/null
+++ b/modules/core/client-api/src/test/resources/test2-plugin.xml
@@ -0,0 +1,40 @@
+<plugin name="TestPlugin2" displayName="Mock JBoss AS"
package="org.rhq.plugins.mock.jboss"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="urn:xmlns:rhq-plugin"
+ xmlns:c="urn:xmlns:rhq-configuration">
+
+
+ <server name="testServer2">
+
+
+ <resource-configuration>
+ <c:simple-property name="prop1">
+ <c:property-options>
+ <c:option value="a"/>
+ <c:option value="b"/>
+ </c:property-options>
+ </c:simple-property>
+
+ <c:simple-property name="prop2">
+ <c:option-source
+ target="resource"
+ linkToTarget="true"
+ filter="*.jdbc"
+ expression="resourceType=DomainDeployment,resource=*"
/>
+ </c:simple-property>
+
+ <c:simple-property name="prop3">
+ <c:property-options>
+ <c:option value="one"/>
+ </c:property-options>
+ <c:option-source
+ target="resource"
+ linkToTarget="true"
+ filter="*.jdbc"
+ expression="resourceType=DomainDeployment,resource=*"
/>
+ </c:simple-property>
+
+ </resource-configuration>
+
+ </server>
+</plugin>
diff --git a/modules/core/dbutils/pom.xml b/modules/core/dbutils/pom.xml
index 800cb87..c4c6a6a 100644
--- a/modules/core/dbutils/pom.xml
+++ b/modules/core/dbutils/pom.xml
@@ -22,7 +22,7 @@
<properties>
<scm.module.path>modules/core/dbutils/</scm.module.path>
- <db.schema.version>2.107</db.schema.version>
+ <db.schema.version>2.108</db.schema.version>
</properties>
<dependencies>
diff --git a/modules/core/dbutils/src/main/scripts/dbsetup/config-schema.xml
b/modules/core/dbutils/src/main/scripts/dbsetup/config-schema.xml
index 209a8a9..c5155ab 100644
--- a/modules/core/dbutils/src/main/scripts/dbsetup/config-schema.xml
+++ b/modules/core/dbutils/src/main/scripts/dbsetup/config-schema.xml
@@ -58,6 +58,15 @@
<column name="PROPERTY_DEF_ID" type="INTEGER"
required="false" references="RHQ_CONFIG_PROP_DEF"/>
</table>
+ <table name="RHQ_PROP_DEF_OPT_SRC">
+ <column name="ID" type="INTEGER" required="true"
default="sequence-only" initial="10001"
primarykey="true"/>
+ <column name="LINK_TO_TARGET" type="BOOLEAN"
required="false"/>
+ <column name="FILTER" type="VARCHAR2"
required="false" size="40"/>
+ <column name="EXPRESSION" type="VARCHAR2"
required="true" size="400"/>
+ <column name="TARGET_TYPE" type="VARCHAR2"
required="true" size="20"/>
+ <column name="PROPERTY_DEF_ID" type="INTEGER"
required="false" references="RHQ_CONFIG_PROP_DEF"/>
+ </table>
+
<table name="RHQ_CONFIG_PROP_CONSTR">
<column name="ID" type="INTEGER" required="true"
default="sequence-only" initial="10001"
primarykey="true"/>
<column name="DTYPE" type="VARCHAR2"
required="true" size="15"/>
diff --git a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
index 1e7fffe..20ebfb9 100644
--- a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
+++ b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
@@ -3290,11 +3290,11 @@
<schema-directSQL>
<statement desc="Changing primary key of
RHQ_OPERATION_SCHEDULE to ID. Step1/3...">
ALTER TABLE RHQ_OPERATION_SCHEDULE DROP CONSTRAINT
RHQ_OPERATION_SCHEDULE_KEY
- </statement>
- <statement desc="Changing primary key of
RHQ_OPERATION_SCHEDULE to ID. Step2/3...">
+ </statement>
+ <statement desc="Changing primary key of
RHQ_OPERATION_SCHEDULE to ID. Step2/3...">
ALTER TABLE RHQ_OPERATION_SCHEDULE ADD PRIMARY KEY (ID)
- </statement>
- <statement desc="Changing primary key of
RHQ_OPERATION_SCHEDULE to ID. Step3/3...">
+ </statement>
+ <statement desc="Changing primary key of
RHQ_OPERATION_SCHEDULE to ID. Step3/3...">
CREATE UNIQUE INDEX RHQ_OPERATION_SCHEDULE_KEY_IDX ON
RHQ_OPERATION_SCHEDULE (JOB_NAME, JOB_GROUP)
</statement>
</schema-directSQL>
@@ -3389,6 +3389,36 @@
<schemaSpec version="2.107">
<schema-createSequence name="RHQ_OPERATION_SCHEDULE_ID_SEQ"
initial="10001"/>
</schemaSpec>
+
+ <schemaSpec version="2.108">
+ <schema-directSQL>
+ <statement desc="Creating table
RHQ_PROP_DEF_OPT_SRC">
+ CREATE TABLE RHQ_PROP_DEF_OPT_SRC ( ID INTEGER PRIMARY KEY )
+ </statement>
+ </schema-directSQL>
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="LINK_TO_TARGET" columnType="BOOLEAN"/>
+ <schema-alterColumn table="RHQ_PROP_DEF_OPT_SRC"
column="LINK_TO_TARGET" nullable="TRUE"/>
+
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="FILTER" columnType="VARCHAR2" precision="40"/>
+ <schema-alterColumn table="RHQ_PROP_DEF_OPT_SRC"
column="FILTER" nullable="TRUE"/>
+
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="EXPRESSION" columnType="VARCHAR2"
precision="400"/>
+ <schema-alterColumn table="RHQ_PROP_DEF_OPT_SRC"
column="EXPRESSION" nullable="FALSE"/>
+
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="TARGET_TYPE" columnType="VARCHAR2"
precision="20"/>
+ <schema-alterColumn table="RHQ_PROP_DEF_OPT_SRC"
column="TARGET_TYPE" nullable="FALSE"/>
+
+ <schema-addColumn table="RHQ_PROP_DEF_OPT_SRC"
column="PROPERTY_DEF_ID" columnType="INTEGER"/>
+ <schema-directSQL>
+ <statement desc="Adding a fk">
+ ALTER TABLE RHQ_PROP_DEF_OPT_SRC
+ ADD CONSTRAINT RHQ_PROP_DEF_OPT_SRC_ID_FK
+ FOREIGN KEY (PROPERTY_DEF_ID)
+ REFERENCES RHQ_CONFIG_PROP_DEF (ID)
+ </statement>
+ </schema-directSQL>
+ <schema-createSequence
name="rhq_config_prop_def_opt_src_id_seq" initial="10001" />
+ </schemaSpec>
</dbupgrade>
</target>
</project>
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
index b77b4e6..a597478 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyDefinitionSimple.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2011 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -38,6 +38,7 @@ import javax.persistence.OneToMany;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.IndexColumn;
@@ -84,7 +85,7 @@ public class PropertyDefinitionSimple extends PropertyDefinition {
* {@link PropertyDefinition#required} field is <code>false</code> (i.e.
for optional properties). Conversely, this
* field should be null for properties whose {@link PropertyDefinition#required}
field is <code>true</code> (i.e. for
* required properties).
- *
+ *
* This field is mainly used to help build default templates. You usually do not want
to use this
* default value member variable directly - consider using the configuration
definition's default template.
*/
@@ -97,6 +98,10 @@ public class PropertyDefinitionSimple extends PropertyDefinition {
@Enumerated(EnumType.ORDINAL)
private MeasurementUnits units;
+ @Cascade( { org.hibernate.annotations.CascadeType.ALL,
org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
+ @OneToMany(mappedBy = "propertyDefinition", fetch = FetchType.EAGER)
+ List<PropertyOptionsSource> optionsSource = new
ArrayList<PropertyOptionsSource>();
+
public PropertyDefinitionSimple(@NotNull String name, String description, boolean
required,
@NotNull PropertySimpleType type) {
super(name, description, required);
@@ -207,7 +212,7 @@ public class PropertyDefinitionSimple extends PropertyDefinition {
* value. Note, however, you rarely want to use this directly. Under most
* circumstances, you should be using the configuration definition's
* {@link ConfigurationDefinition#getDefaultTemplate() default template}.
- *
+ *
* For an example of where this method is useful, see
*
org.rhq.core.clientapi.agent.configuration.ConfigurationUtility.initializeDefaultTemplate(ConfigurationDefinition)
*
@@ -222,7 +227,7 @@ public class PropertyDefinitionSimple extends PropertyDefinition {
* only at times when you plan on building default templates with this
* property definition later. See {@link #getDefaultValue()} for more details
* on this default value.
- *
+ *
* @param defaultValue
*/
public void setDefaultValue(String defaultValue) {
@@ -237,6 +242,18 @@ public class PropertyDefinitionSimple extends PropertyDefinition {
this.units = units;
}
+ public PropertyOptionsSource getOptionsSource() {
+ if (optionsSource.isEmpty())
+ return null;
+ return optionsSource.get(0);
+ }
+
+ public void setOptionsSource(PropertyOptionsSource source) {
+ this.optionsSource.clear();
+ this.optionsSource.add(source);
+ }
+
+
@Override
public String toString() {
return "SimpleProperty["
@@ -247,4 +264,4 @@ public class PropertyDefinitionSimple extends PropertyDefinition {
+ ((getPropertyGroupDefinition() != null) ? ("(Group: " +
getPropertyGroupDefinition().getName() + ")")
: "");
}
-}
\ No newline at end of file
+}
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyOptionsSource.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyOptionsSource.java
new file mode 100644
index 0000000..1af0bf4
--- /dev/null
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/definition/PropertyOptionsSource.java
@@ -0,0 +1,139 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * 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 and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.core.domain.configuration.definition;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+
+/**
+ * Defines a source for property options
+ * @author Heiko W. Rupp
+ */
+@Entity
+@Table(name="RHQ_PROP_DEF_OPT_SRC")
+@SequenceGenerator(name = "SEQ", sequenceName =
"RHQ_CONFIG_PROP_DEF_OPT_SRC_ID_SEQ")
+(a)XmlAccessorType(XmlAccessType.FIELD)
+public class PropertyOptionsSource implements Serializable{
+
+ @Id
+ @GeneratedValue(generator = "SEQ", strategy = GenerationType.AUTO)
+ private int id;
+
+ @Column(name="LINK_TO_TARGET")
+ private boolean linkToTarget;
+ private String filter;
+ private String expression;
+ @Column(name="TARGET_TYPE")
+ @Enumerated(EnumType.STRING)
+ private TargetType targetType;
+
+ @ManyToOne
+ @JoinColumn(name="PROPERTY_DEF_ID" )
+ PropertyDefinitionSimple propertyDefinition;
+
+ public PropertyOptionsSource() {
+ }
+
+ public void setTarget(String target) {
+ targetType = TargetType.fromValue(target);
+ }
+
+ public void setLinkToTarget(boolean linkToTarget) {
+ this.linkToTarget = linkToTarget;
+ }
+
+ public void setFilter(String filter) {
+ this.filter = filter;
+ }
+
+ public void setExpression(String expression) {
+ this.expression = expression;
+ }
+
+ public boolean isLinkToTarget() {
+ return linkToTarget;
+ }
+
+ public String getFilter() {
+ return filter;
+ }
+
+ public String getExpression() {
+ return expression;
+ }
+
+ public TargetType getTargetType() {
+ return targetType;
+ }
+
+ public enum TargetType {
+ GROUP("group"),
+ PLUGIN("plugin"),
+ RESOURCE_TYPE("resourceType"),
+ RESOURCE("resource"),
+ CONFIGURATION("configuration");
+
+ private final String value;
+
+ TargetType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static TargetType fromValue(String v) {
+ for (TargetType c: TargetType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ return valueOf(v);
+// throw new IllegalArgumentException(v.toString());
+ }
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
index a956c46..bd59ff8 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
@@ -350,9 +350,25 @@ public class ConfigurationEditor extends LocatableVLayout {
}
});
}
- } else {
- reload();
}
+
+ if (configurationDefinition!=null ) {
+
configurationService.getOptionValuesForConfigDefinition(configurationDefinition,new
AsyncCallback<ConfigurationDefinition>() {
+ @Override
+ public void onFailure(Throwable throwable) {
+ showError(throwable);
+ }
+
+ @Override
+ public void onSuccess(ConfigurationDefinition result) {
+ if (loadHandler!=null)
+ loadHandler.loadedConfigurationDefinition(result);
+ }
+ });
+ }
+
+
+ reload();
}
public void reload() {
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 bdb5a7d..d501799 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
@@ -11,6 +11,8 @@ import org.rhq.core.domain.configuration.PluginConfigurationUpdate;
import org.rhq.core.domain.configuration.ResourceConfigurationUpdate;
import org.rhq.core.domain.configuration.composite.ResourceConfigurationComposite;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionEnumeration;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
import org.rhq.core.domain.configuration.group.GroupPluginConfigurationUpdate;
import org.rhq.core.domain.configuration.group.GroupResourceConfigurationUpdate;
import org.rhq.core.domain.criteria.GroupPluginConfigurationUpdateCriteria;
@@ -86,4 +88,10 @@ public interface ConfigurationGWTService extends RemoteService {
void deleteGroupResourceConfigurationUpdate(Integer groupId, Integer[]
groupResourceConfigUpdateIds)
throws RuntimeException;
+
+ /**
+ * GWT-RPC service asynchronous (client-side) interface
+ * @see ConfigurationGWTService
+ */
+ ConfigurationDefinition getOptionValuesForConfigDefinition(ConfigurationDefinition
definition);
}
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 7f7c31b..3aeaa07 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,7 +345,18 @@ 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 {
+ try {
+ ConfigurationDefinition def =
configurationManager.getOptionsForConfigurationDefinition(definition);
+ return
SerialUtility.prepare(def,"ConfigurationService.getOptionValuesForPropertySimple");
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
index 7d94069..64f0927 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
@@ -64,6 +64,9 @@ import org.rhq.core.domain.configuration.ResourceConfigurationUpdate;
import org.rhq.core.domain.configuration.composite.ConfigurationUpdateComposite;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.ConfigurationFormat;
+import org.rhq.core.domain.configuration.definition.PropertyDefinition;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionEnumeration;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
import org.rhq.core.domain.configuration.group.AbstractGroupConfigurationUpdate;
import org.rhq.core.domain.configuration.group.GroupPluginConfigurationUpdate;
import org.rhq.core.domain.configuration.group.GroupResourceConfigurationUpdate;
@@ -678,7 +681,7 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
}
Query countQuery = PersistenceUtility.createCountQuery(entityManager,
- ResourceConfigurationUpdate.QUERY_FIND_BY_GROUP_ID_AND_STATUS);
+ ResourceConfigurationUpdate.QUERY_FIND_BY_GROUP_ID_AND_STATUS);
countQuery.setParameter("groupId", compatibleGroup.getId());
countQuery.setParameter("status",
ConfigurationUpdateStatus.INPROGRESS);
long count = (Long) countQuery.getSingleResult();
@@ -1620,7 +1623,7 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
public Configuration getConfigurationFromDefaultTemplate(ConfigurationDefinition
definition) {
ConfigurationDefinition managedDefinition =
entityManager.find(ConfigurationDefinition.class, definition
- .getId());
+ .getId());
Configuration configuration =
managedDefinition.getDefaultTemplate().getConfiguration();
ConfigurationMaskingUtility.maskConfiguration(configuration, managedDefinition);
return configuration;
@@ -1992,7 +1995,7 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
pc.initDefaultOrderingField("modifiedTime", PageOrdering.DESC);
Query query = PersistenceUtility.createQueryWithOrderBy(entityManager,
- GroupPluginConfigurationUpdate.QUERY_FIND_BY_GROUP_ID, pc);
+ GroupPluginConfigurationUpdate.QUERY_FIND_BY_GROUP_ID, pc);
Query countQuery = PersistenceUtility.createCountQuery(entityManager,
GroupPluginConfigurationUpdate.QUERY_FIND_BY_GROUP_ID);
query.setParameter("groupId", groupId);
@@ -2375,6 +2378,34 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
return updates;
}
+ public ConfigurationDefinition
getOptionsForConfigurationDefinition(ConfigurationDefinition def) {
+
+
+ for (Map.Entry<String,PropertyDefinition> entry :
def.getPropertyDefinitions().entrySet()) {
+ PropertyDefinition pd = entry.getValue();
+
+ if (pd instanceof PropertyDefinitionSimple) {
+ PropertyDefinitionSimple pds = (PropertyDefinitionSimple) pd;
+ handlePDS(pds);
+
+ }
+ // TODO consider more cases
+ }
+
+ return def;
+ }
+
+ private void handlePDS(PropertyDefinitionSimple pds) {
+
+ if (pds.getOptionsSource()!=null) {
+ // TODO evaluate the source parameters
+ }
+ // TODO next is a dummy.
+ PropertyDefinitionEnumeration foo = new
PropertyDefinitionEnumeration("main-server-group","main-server-group");
+ pds.getEnumeratedValues().add(foo);
+
+ }
+
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//
// Remote Interface Impl
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
index c1222c1..ca557203 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerLocal.java
@@ -44,7 +44,6 @@ import
org.rhq.core.domain.criteria.GroupResourceConfigurationUpdateCriteria;
import org.rhq.core.domain.criteria.PluginConfigurationUpdateCriteria;
import org.rhq.core.domain.criteria.ResourceConfigurationUpdateCriteria;
import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.group.ResourceGroup;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.server.configuration.job.GroupPluginConfigurationUpdateJob;
@@ -568,4 +567,6 @@ public interface ConfigurationManagerLocal {
PageList<GroupPluginConfigurationUpdate>
findGroupPluginConfigurationUpdatesByCriteria(Subject subject,
GroupPluginConfigurationUpdateCriteria criteria);
+
+ ConfigurationDefinition getOptionsForConfigurationDefinition(ConfigurationDefinition
def);
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java
index fd2decc..48109dc 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java
@@ -420,6 +420,9 @@ public class ConfigurationMetadataManagerBean implements
ConfigurationMetadataMa
// handle <defaultValue> [0..1]
existingPDS.setDefaultValue(newPDS.getDefaultValue());
+
+ // handle <c:source>
+ existingPDS.setOptionsSource(newPDS.getOptionsSource());
} else {
// other type
replaceProperty(existingProperty, newProperty);
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java
index 75feadd..f3df649 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java
@@ -39,6 +39,7 @@ import
org.rhq.core.domain.configuration.definition.PropertyDefinitionList;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionMap;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
import org.rhq.core.domain.configuration.definition.PropertyGroupDefinition;
+import org.rhq.core.domain.configuration.definition.PropertyOptionsSource;
import org.rhq.enterprise.server.test.AbstractEJB3Test;
import org.rhq.enterprise.server.util.LookupUtil;
import org.rhq.test.AssertUtils;
@@ -53,7 +54,7 @@ import static java.util.Arrays.asList;
* is the original version and the other is the upgraded version. In order to avoid
inter-dependencies between test
* methods, a separate plugin configuration should be used for each test method. A
separate resource type is declared
* for each test, further documenting and delinating where each configuration is used. In
the test methods, the
- * original and updated coniguration definitions are initialized with an xpath expression
that specifies the owning
+ * original and updated configuration definitions are initialized with an xpath
expression that specifies the owning
* resource type.
*/
public class ConfigurationMetadataManagerBeanTest extends AbstractEJB3Test {
@@ -176,6 +177,39 @@ public class ConfigurationMetadataManagerBeanTest extends
AbstractEJB3Test {
expected, actual, ignoredProperties);
}
+ @Test
+ public void updatePropertyDefinitionOptionSource() {
+ initConfigDefs("servers[name='OptionSourceTest']",
"OptionSourceTest");
+
+ // check initial entry
+ PropertyDefinitionSimple prop1 = (PropertyDefinitionSimple)
originalConfigDef.get("prop1");
+ assert prop1 !=null;
+// assert prop1.getEnumeratedValues().size()==1 : "Did not find my one
option"; TODO
+ PropertyOptionsSource source = prop1.getOptionsSource();
+ assert source !=null : "PropertyOptionSource was not persisted";
+ assert source.getFilter().equals("*.jdbc");
+
+ PropertyDefinitionSimple prop2 = (PropertyDefinitionSimple)
originalConfigDef.get("prop2");
+ assert prop2 !=null;
+ assert prop2.getEnumeratedValues().size()==0;
+ assert prop2.getOptionsSource()==null;
+ // now check the upgrades
+ prop1 = (PropertyDefinitionSimple) updatedConfigDef.get("prop1");
+ assert prop1 !=null;
+ assert prop1.getEnumeratedValues().size()==0 : "Found an option value.
";
+ source = prop1.getOptionsSource();
+ assert source !=null : "PropertyOptionSource was not persisted";
+ assert source.getFilter()==null : "Assumed filter to be null, but was "
+ source.getFilter();
+
+ prop2 = (PropertyDefinitionSimple) updatedConfigDef.get("prop2");
+ assert prop2 !=null;
+ assert prop2.getEnumeratedValues().size()==0;
+ assert prop2.getOptionsSource()!=null;
+ assert prop2.getOptionsSource().getExpression().equals("*");
+
+
+ }
+
private void initConfigDefs(String path, String configName) {
loadAndPersistConfigDefs(path, configName);
updateConfigDef();
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v1.xml
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v1.xml
index 5a1fe11..c125cf2 100644
---
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v1.xml
+++
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v1.xml
@@ -67,4 +67,17 @@
</c:map-property>
</plugin-configuration>
</server>
+
+ <server name="OptionSourceTest">
+ <plugin-configuration>
+ <c:simple-property name="prop1">
+ <c:property-options>
+ <c:option value="value1"/>
+ </c:property-options>
+ <c:option-source target="resource"
expression="resourceType=DomainDeployment,plugin=as7"
+ filter="*.jdbc"
linkToTarget="false"/>
+ </c:simple-property>
+ <c:simple-property name="prop2"/>
+ </plugin-configuration>
+ </server>
</plugin>
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v2.xml
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v2.xml
index 564c68c..0f0e3a7 100644
---
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v2.xml
+++
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/configuration/metadata/configuration_metadata_manager_bean_test_v2.xml
@@ -67,7 +67,7 @@
<c:simple-property name="myListMember"
type="double"
default="3.14"
- description="PI"/>
+ description="PI"/>
</c:map-property>
</c:list-property>
</plugin-configuration>
@@ -89,4 +89,16 @@
</c:map-property>
</plugin-configuration>
</server>
+ <server name="OptionSourceTest">
+ <plugin-configuration>
+ <c:simple-property name="prop1">
+ <c:option-source target="resource"
expression="resourceType=DomainDeployment,plugin=as7"
+ linkToTarget="false"/>
+ </c:simple-property>
+ <c:simple-property name="prop2">
+ <c:option-source target="resource"
expression="*"/>
+ </c:simple-property>
+ </plugin-configuration>
+ </server>
+
</plugin>
commit d16af0ea8b4aad419fec5726681e0390ec4c05da
Merge: 7d3e34b 7377e26
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Jun 15 09:29:32 2011 -0400
Merge commit 'origin/master' into nonplatform-bundles-644328
commit 7377e269fb933b5340ff029d156dc5b7fbc973ee
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Tue Jun 14 16:11:48 2011 -0500
Update to make dbunit config files oracle friendly.
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
index 388398c..d584809 100644
---
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
+++
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
@@ -21,14 +21,14 @@
NAME="admin"
FIRST_NAME="Super"
LAST_NAME="User"
- FSYSTEM="TRUE"/>
+ FSYSTEM="1"/>
<rhq_subject
ID="2"
NAME="rhqadmin"
FIRST_NAME="RHQ"
LAST_NAME="Administrator"
EMAIL_ADDRESS="nobody@localhost"
- FSYSTEM="FALSE"/>
+ FSYSTEM="0"/>
<rhq_resource_type/>
<rhq_resource_subcat/>
<rhq_resource_type_parents/>
@@ -48,12 +48,12 @@
<rhq_role
ID="1"
NAME="Super User Role"
- FSYSTEM="TRUE"
+ FSYSTEM="1"
DESCRIPTION="System superuser role that provides full access to everything.
This role cannot be modified."/>
<rhq_role
ID="2"
NAME="All Resources Role"
- FSYSTEM="FALSE"
+ FSYSTEM="0"
DESCRIPTION="Provides full access to all resources in inventory. Cannot
modify users, roles or server settings."/>
<rhq_role_resource_group_map/>
<rhq_role_ldap_group/>
@@ -108,37 +108,37 @@
<rhq_alert_condition_log/>
<rhq_alert_notification/>
<rhq_system_config ID="1" PROPERTY_KEY="SERVER_VERSION"
PROPERTY_VALUE="4.1.0-SNAPSHOT"
- DEFAULT_PROPERTY_VALUE="4.1.0-SNAPSHOT"
FREAD_ONLY="TRUE"/>
+ DEFAULT_PROPERTY_VALUE="4.1.0-SNAPSHOT" FREAD_ONLY="1"/>
<rhq_system_config ID="2" PROPERTY_KEY="DB_SCHEMA_VERSION"
PROPERTY_VALUE="2.107"
- DEFAULT_PROPERTY_VALUE="2.107" FREAD_ONLY="TRUE"/>
+ DEFAULT_PROPERTY_VALUE="2.107" FREAD_ONLY="1"/>
<rhq_system_config ID="3" PROPERTY_KEY="CAM_JAAS_PROVIDER"
PROPERTY_VALUE="JDBC"
- DEFAULT_PROPERTY_VALUE="JDBC" FREAD_ONLY="FALSE"/>
+ DEFAULT_PROPERTY_VALUE="JDBC" FREAD_ONLY="0"/>
<rhq_system_config ID="4" PROPERTY_KEY="CAM_BASE_URL"
PROPERTY_VALUE="http://localhost:7080/"
- DEFAULT_PROPERTY_VALUE="http://localhost:7080/"
FREAD_ONLY="FALSE"/>
+ DEFAULT_PROPERTY_VALUE="http://localhost:7080/"
FREAD_ONLY="0"/>
<rhq_system_config ID="9" PROPERTY_KEY="CAM_HELP_USER"
PROPERTY_VALUE="web"
- DEFAULT_PROPERTY_VALUE="web" FREAD_ONLY="FALSE"/>
+ DEFAULT_PROPERTY_VALUE="web" FREAD_ONLY="0"/>
<rhq_system_config ID="10" PROPERTY_KEY="CAM_HELP_PASSWORD"
PROPERTY_VALUE="user"
- DEFAULT_PROPERTY_VALUE="user" FREAD_ONLY="FALSE"/>
+ DEFAULT_PROPERTY_VALUE="user" FREAD_ONLY="0"/>
<rhq_system_config ID="32"
PROPERTY_KEY="CAM_DATA_MAINTENANCE"
- PROPERTY_VALUE="3600000" DEFAULT_PROPERTY_VALUE="3600000"
FREAD_ONLY="FALSE"/>
+ PROPERTY_VALUE="3600000" DEFAULT_PROPERTY_VALUE="3600000"
FREAD_ONLY="0"/>
<rhq_system_config ID="34" PROPERTY_KEY="RT_DATA_PURGE"
PROPERTY_VALUE="2678400000"
- DEFAULT_PROPERTY_VALUE="2678400000"
FREAD_ONLY="FALSE"/>
- <rhq_system_config ID="35"
PROPERTY_KEY="DATA_REINDEX_NIGHTLY" PROPERTY_VALUE="true"
- DEFAULT_PROPERTY_VALUE="true" FREAD_ONLY="FALSE"/>
+ DEFAULT_PROPERTY_VALUE="2678400000" FREAD_ONLY="0"/>
+ <rhq_system_config ID="35"
PROPERTY_KEY="DATA_REINDEX_NIGHTLY" PROPERTY_VALUE="1"
+ DEFAULT_PROPERTY_VALUE="1" FREAD_ONLY="0"/>
<rhq_system_config ID="36" PROPERTY_KEY="ALERT_PURGE"
PROPERTY_VALUE="2678400000"
- DEFAULT_PROPERTY_VALUE="2678400000"
FREAD_ONLY="FALSE"/>
+ DEFAULT_PROPERTY_VALUE="2678400000" FREAD_ONLY="0"/>
<rhq_system_config ID="51" PROPERTY_KEY="EVENT_PURGE"
PROPERTY_VALUE="1209600000"
- DEFAULT_PROPERTY_VALUE="1209600000"
FREAD_ONLY="FALSE"/>
+ DEFAULT_PROPERTY_VALUE="1209600000" FREAD_ONLY="0"/>
<rhq_system_config ID="52"
PROPERTY_KEY="AGENT_MAX_QUIET_TIME_ALLOWED" PROPERTY_VALUE="900000"
- DEFAULT_PROPERTY_VALUE="900000" FREAD_ONLY="FALSE"/>
- <rhq_system_config ID="53"
PROPERTY_KEY="ENABLE_AGENT_AUTO_UPDATE" PROPERTY_VALUE="true"
- DEFAULT_PROPERTY_VALUE="true" FREAD_ONLY="FALSE"/>
+ DEFAULT_PROPERTY_VALUE="900000" FREAD_ONLY="0"/>
+ <rhq_system_config ID="53"
PROPERTY_KEY="ENABLE_AGENT_AUTO_UPDATE" PROPERTY_VALUE="1"
+ DEFAULT_PROPERTY_VALUE="1" FREAD_ONLY="0"/>
<rhq_system_config ID="54" PROPERTY_KEY="TRAIT_PURGE"
PROPERTY_VALUE="31536000000"
- DEFAULT_PROPERTY_VALUE="31536000000"
FREAD_ONLY="FALSE"/>
+ DEFAULT_PROPERTY_VALUE="31536000000" FREAD_ONLY="0"/>
<rhq_system_config ID="55" PROPERTY_KEY="AVAILABILITY_PURGE"
PROPERTY_VALUE="31536000000"
- DEFAULT_PROPERTY_VALUE="31536000000"
FREAD_ONLY="FALSE"/>
- <rhq_system_config ID="56"
PROPERTY_KEY="RESOURCE_GENERIC_PROPERTIES_UPGRADE"
PROPERTY_VALUE="false"
- DEFAULT_PROPERTY_VALUE="false" FREAD_ONLY="FALSE"/>
+ DEFAULT_PROPERTY_VALUE="31536000000" FREAD_ONLY="0"/>
+ <rhq_system_config ID="56"
PROPERTY_KEY="RESOURCE_GENERIC_PROPERTIES_UPGRADE" PROPERTY_VALUE="0"
+ DEFAULT_PROPERTY_VALUE="0" FREAD_ONLY="0"/>
<rhq_plugin/>
<rhq_measurement_def/>
<rhq_measurement_sched/>
commit 7d3e34bd373fca40e499c5692cc6cab3a2b4932d
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Tue Jun 14 15:55:15 2011 -0400
BZ 644328 - fix deployment view so it doesn't assume a platform is the bundle
target.
make the icon dependent on the type of compat group and change the column headers
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
index 8ff20ff..03484a4 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
@@ -338,19 +338,19 @@ public class BundleDeploymentView extends LocatableVLayout
implements Bookmarkab
table.setTitleComponent(new HTMLFlow(MSG.view_bundle_deploy_selectARow()));
// resource icon field
+ ResourceCategory resourceCategory =
deployment.getDestination().getGroup().getResourceType().getCategory();
ListGridField resourceIcon = new
ListGridField("resourceAvailability");
HashMap<String, String> icons = new HashMap<String, String>();
- icons.put(AvailabilityType.UP.name(),
ImageManager.getResourceIcon(ResourceCategory.PLATFORM, Boolean.TRUE));
- icons.put(AvailabilityType.DOWN.name(),
ImageManager.getResourceIcon(ResourceCategory.PLATFORM, Boolean.FALSE));
+ icons.put(AvailabilityType.UP.name(),
ImageManager.getResourceIcon(resourceCategory, Boolean.TRUE));
+ icons.put(AvailabilityType.DOWN.name(),
ImageManager.getResourceIcon(resourceCategory, Boolean.FALSE));
resourceIcon.setValueIcons(icons);
resourceIcon.setValueIconSize(16);
resourceIcon.setType(ListGridFieldType.ICON);
resourceIcon.setWidth(40);
// resource field
- ListGridField resource = new ListGridField("resource",
MSG.common_title_platform());
- resource.setAutoFitWidth(true);
- resource.setAutoFitWidthApproach(AutoFitWidthApproach.BOTH);
+ ListGridField resource = new ListGridField("resource",
MSG.common_title_resource());
+ resource.setWidth("*");
resource.setCellFormatter(new CellFormatter() {
public String format(Object value, ListGridRecord listGridRecord, int i, int
i1) {
return "<a href=\"" +
LinkManager.getResourceLink(listGridRecord.getAttributeAsInt("resourceId"))
@@ -360,7 +360,7 @@ public class BundleDeploymentView extends LocatableVLayout implements
Bookmarkab
});
// resource version field
- ListGridField resourceVersion = new ListGridField("resourceVersion",
MSG.view_bundle_deploy_operatingSystem());
+ ListGridField resourceVersion = new ListGridField("resourceVersion",
MSG.common_title_version());
resourceVersion.setAutoFitWidth(true);
resourceVersion.setAutoFitWidthApproach(AutoFitWidthApproach.BOTH);
@@ -370,7 +370,7 @@ public class BundleDeploymentView extends LocatableVLayout implements
Bookmarkab
status.setValueIconHeight(11);
status.setValueIconWidth(11);
status.setShowValueIconOnly(true);
- status.setWidth("*");
+ status.setWidth(60);
List<ListGridRecord> records = new ArrayList<ListGridRecord>();
for (BundleResourceDeployment rd : deployment.getResourceDeployments()) {
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 1178cea..a66fbd1 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
@@ -943,13 +943,12 @@ view_bundle_deploy_deleteConfirm = Are you sure you want to delete
this bundle d
view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
view_bundle_deploy_deployedBy = Deployed By
-view_bundle_deploy_deploymentPlatforms = Deployment Platforms
+view_bundle_deploy_deploymentPlatforms = Deployment Resource
view_bundle_deploy_installDetails = Install Details
view_bundle_deploy_loadBundleFailure = Failed to find bundle
view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments
view_bundle_deploy_loadFailure = Failed to load bundle deployment
view_bundle_deploy_name = Deployment Name
-view_bundle_deploy_operatingSystem = Operating System
view_bundle_deploy_selectARow = Select a row to show installation details
view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags
view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags
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 938cfd9..ff33d5d 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
@@ -801,13 +801,12 @@ view_bundle_deployWizard_selectVersion_select = Select Version from
List:~
view_bundle_deployWizard_title = Bundle Deployment Wizard~
view_bundle_deploy_action = Action~
view_bundle_deploy_backButton = Back to Destination~
-view_bundle_deploy_deploymentPlatforms = Deployment Platforms~
+view_bundle_deploy_deploymentPlatforms = Deployment Resource
view_bundle_deploy_installDetails = Install Details~
view_bundle_deploy_loadBundleFailure = Failed to find bundle~
view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments~
view_bundle_deploy_loadFailure = Failed to load bundle deployment~
view_bundle_deploy_name = Deployment Name~
-view_bundle_deploy_operatingSystem = Operating System~
view_bundle_deploy_selectARow = Select a row to show installation details~
view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags~
view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags~
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 919e18f..b20b7c0 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
@@ -944,13 +944,12 @@ view_bundle_deploy_deleteConfirm = Are you sure you want to delete
this bundle d
view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
view_bundle_deploy_deployedBy = Deployed By
-view_bundle_deploy_deploymentPlatforms = Deployment Platforms
+view_bundle_deploy_deploymentPlatforms = Deployment Resource
view_bundle_deploy_installDetails = Install Details
view_bundle_deploy_loadBundleFailure = Failed to find bundle
view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments
view_bundle_deploy_loadFailure = Failed to load bundle deployment
view_bundle_deploy_name = Deployment Name
-view_bundle_deploy_operatingSystem = Operating System
view_bundle_deploy_selectARow = Select a row to show installation details
view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags
view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags
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 1a5974f..68e9552 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
@@ -961,13 +961,12 @@ view_bundle_deploy_deleteConfirm = Are you sure you want to delete
this bundle d
view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
view_bundle_deploy_deployedBy = Deployed By
-view_bundle_deploy_deploymentPlatforms = Deployment Platforms~
+view_bundle_deploy_deploymentPlatforms = Deployment Resource
view_bundle_deploy_installDetails = Install Details~
view_bundle_deploy_loadBundleFailure = Failed to find bundle~
view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments~
view_bundle_deploy_loadFailure = Failed to load bundle deployment~
view_bundle_deploy_name = Deployment Name~
-view_bundle_deploy_operatingSystem = Operating System~
view_bundle_deploy_selectARow = Select a row to show installation details~
view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags~
view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags~
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 5902fb6..cde574b 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
@@ -949,7 +949,6 @@ view_bundle_deploy_loadBundleFailure = \u67E5\u627Ebundle\u5931\u8D25
view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments
view_bundle_deploy_loadFailure = Failed to load bundle deployment
view_bundle_deploy_name = \u53D1\u5E03\u540D
-view_bundle_deploy_operatingSystem = \u64CD\u4F5C\u7CFB\u7EDF
view_bundle_deploy_selectARow = \u9009\u4E2D\u884C\u663E\u793A\u5B89\u88C5\u7EC6\u8282
view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags
view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags
commit fd7985d3dfd0c8a08ea0e9f8ef67ebbc0aecfa5e
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Tue Jun 14 11:16:01 2011 -0500
Tear down the entire database and rebuild it before running dbunit tests. This will
fix FK violations from server/jar tests.
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
index 70f7073..388398c 100644
---
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
+++
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
@@ -1,37 +1,326 @@
<dataset>
- <rhq_content_source/>
- <rhq_repo_content_src_map/>
- <rhq_repo/>
- <rhq_config_def/>
- <rhq_config_prop_def/>
- <rhq_conf_prop_def_enum/>
- <rhq_config_prop_constr/>
- <rhq_resource_type/>
- <rhq_resource_type_parents/>
- <rhq_process_scan/>
- <rhq_event_def/>
- <rhq_measurement_def/>
- <rhq_operation_def/>
- <rhq_package_type/>
- <rhq_bundle_type/>
- <rhq_config/>
- <rhq_config_property/>
- <rhq_config_template/>
- <rhq_resource_group_res_exp_map/>
- <rhq_resource_group_res_imp_map/>
- <rhq_resource_subcat/>
- <rhq_resource_group/>
- <rhq_resource/>
- <rhq_prd_ver/>
- <rhq_alert_definition/>
- <rhq_alert_condition/>
- <rhq_alert/>
- <rhq_alert_condition_log/>
- <rhq_alert_notif_log/>
- <rhq_availability/>
- <rhq_measurement_sched/>
- <rhq_package/>
- <rhq_bundle/>
- <rhq_plugin/>
+ <rhq_config_def/>
+ <rhq_config_prop_grp_def/>
+ <rhq_config_prop_def/>
+ <rhq_conf_prop_def_enum/>
+ <rhq_config_prop_constr/>
+ <rhq_config/>
+ <rhq_config_property/>
+ <rhq_config_template/>
+ <rhq_raw_config/>
+ <rhq_affinity_group/>
+ <rhq_server/>
+ <rhq_agent/>
+ <rhq_partition_event/>
+ <rhq_partition_details/>
+ <rhq_failover_list/>
+ <rhq_failover_details/>
+ <rhq_principal id="2" PRINCIPAL="rhqadmin"
PASSWORD="x1XwrxKuPvYUILiOnOZTLg=="/>
+ <rhq_subject
+ ID="1"
+ NAME="admin"
+ FIRST_NAME="Super"
+ LAST_NAME="User"
+ FSYSTEM="TRUE"/>
+ <rhq_subject
+ ID="2"
+ NAME="rhqadmin"
+ FIRST_NAME="RHQ"
+ LAST_NAME="Administrator"
+ EMAIL_ADDRESS="nobody@localhost"
+ FSYSTEM="FALSE"/>
+ <rhq_resource_type/>
+ <rhq_resource_subcat/>
+ <rhq_resource_type_parents/>
+ <rhq_process_scan/>
+ <rhq_prd_ver/>
+ <rhq_resource/>
+ <rhq_resource_error/>
+ <rhq_group_def/>
+ <rhq_resource_group/>
+ <rhq_resource_group_res_imp_map/>
+ <rhq_resource_group_res_exp_map/>
+ <rhq_config_group_update/>
+ <rhq_config_update/>
+ <rhq_tagging/>
+ <rhq_tagging_resource_map/>
+ <rhq_tagging_res_group_map/>
+ <rhq_role
+ ID="1"
+ NAME="Super User Role"
+ FSYSTEM="TRUE"
+ DESCRIPTION="System superuser role that provides full access to everything.
This role cannot be modified."/>
+ <rhq_role
+ ID="2"
+ NAME="All Resources Role"
+ FSYSTEM="FALSE"
+ DESCRIPTION="Provides full access to all resources in inventory. Cannot
modify users, roles or server settings."/>
+ <rhq_role_resource_group_map/>
+ <rhq_role_ldap_group/>
+ <rhq_permission ROLE_ID="1" OPERATION="0"/> <!--
Permission.MANAGE_SECURITY -->
+ <rhq_permission ROLE_ID="1" OPERATION="1"/> <!--
Permission.MANAGE_INVENTORY -->
+ <rhq_permission ROLE_ID="1" OPERATION="2"/> <!--
Permission.MANAGE_SETTINGS -->
+ <rhq_permission ROLE_ID="1" OPERATION="12"/> <!--
Permission.MANAGE_BUNDLE -->
+ <rhq_permission ROLE_ID="1" OPERATION="15"/> <!--
Permission.MANAGE_REPOSITORIES -->
+ <!-- resource permissions start here-->
+ <rhq_permission ROLE_ID="1" OPERATION="3"/> <!--
Permission.VIEW_RESOURCE -->
+ <rhq_permission ROLE_ID="1" OPERATION="4"/> <!--
Permission.MODIFY_RESOURCE -->
+ <rhq_permission ROLE_ID="1" OPERATION="5"/> <!--
Permission.DELETE_RESOURCE -->
+ <rhq_permission ROLE_ID="1" OPERATION="6"/> <!--
Permission.CREATE_CHILD_RESOURCES -->
+ <rhq_permission ROLE_ID="1" OPERATION="7"/> <!--
Permission.MANAGE_ALERTS -->
+ <rhq_permission ROLE_ID="1" OPERATION="8"/> <!--
Permission.MANAGE_MEASUREMENTS -->
+ <rhq_permission ROLE_ID="1" OPERATION="9"/> <!--
Permission.MANAGE_CONTENT -->
+ <rhq_permission ROLE_ID="1" OPERATION="10"/> <!--
Permission.CONTROL -->
+ <rhq_permission ROLE_ID="1" OPERATION="11"/> <!--
Permission.CONFIGURE -->
+ <rhq_permission ROLE_ID="1" OPERATION="14"/> <!--
Permission.MANAGE_EVENTS -->
+
+ <!-- give all-resources-role all permissions (resource perms is mainly just to
show on view-role page) -->
+ <rhq_permission ROLE_ID="2" OPERATION="1"/> <!--
Permission.MANAGE_INVENTORY -->
+ <rhq_permission ROLE_ID="2" OPERATION="12"/> <!--
Permission.MANAGE_BUNDLE -->
+ <!-- resource permissions start here-->
+ <rhq_permission ROLE_ID="2" OPERATION="3"/> <!--
Permission.VIEW_RESOURCE -->
+ <rhq_permission ROLE_ID="2" OPERATION="4"/> <!--
Permission.MODIFY_RESOURCE -->
+ <rhq_permission ROLE_ID="2" OPERATION="5"/> <!--
Permission.DELETE_RESOURCE -->
+ <rhq_permission ROLE_ID="2" OPERATION="6"/> <!--
Permission.CREATE_CHILD_RESOURCES -->
+ <rhq_permission ROLE_ID="2" OPERATION="7"/> <!--
Permission.MANAGE_ALERTS -->
+ <rhq_permission ROLE_ID="2" OPERATION="8"/> <!--
Permission.MANAGE_MEASUREMENTS -->
+ <rhq_permission ROLE_ID="2" OPERATION="9"/> <!--
Permission.MANAGE_CONTENT -->
+ <rhq_permission ROLE_ID="2" OPERATION="10"/> <!--
Permission.CONTROL -->
+ <rhq_permission ROLE_ID="2" OPERATION="11"/> <!--
Permission.CONFIGURE -->
+ <rhq_permission ROLE_ID="2" OPERATION="14"/> <!--
Permission.MANAGE_EVENTS -->
+ <rhq_subject_role_map SUBJECT_ID="1" ROLE_ID="1"/>
+ <rhq_subject_role_map SUBJECT_ID="2" ROLE_ID="1"/>
+ <rhq_subject_role_ldap_map/>
+ <rhq_saved_search/>
+ <rhq_dashboard/>
+ <rhq_dashboard_portlet/>
+ <rhq_operation_def/>
+ <rhq_operation_history/>
+ <rhq_operation_schedule/>
+ <rhq_event_def/>
+ <rhq_event_source/>
+ <rhq_event/>
+ <rhq_alert_definition/>
+ <rhq_alert_dampen_event/>
+ <rhq_alert_condition/>
+ <rhq_alert/>
+ <rhq_alert_notif_log/>
+ <rhq_alert_condition_log/>
+ <rhq_alert_notification/>
+ <rhq_system_config ID="1" PROPERTY_KEY="SERVER_VERSION"
PROPERTY_VALUE="4.1.0-SNAPSHOT"
+ DEFAULT_PROPERTY_VALUE="4.1.0-SNAPSHOT"
FREAD_ONLY="TRUE"/>
+ <rhq_system_config ID="2" PROPERTY_KEY="DB_SCHEMA_VERSION"
PROPERTY_VALUE="2.107"
+ DEFAULT_PROPERTY_VALUE="2.107" FREAD_ONLY="TRUE"/>
+ <rhq_system_config ID="3" PROPERTY_KEY="CAM_JAAS_PROVIDER"
PROPERTY_VALUE="JDBC"
+ DEFAULT_PROPERTY_VALUE="JDBC" FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="4" PROPERTY_KEY="CAM_BASE_URL"
PROPERTY_VALUE="http://localhost:7080/"
+ DEFAULT_PROPERTY_VALUE="http://localhost:7080/"
FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="9" PROPERTY_KEY="CAM_HELP_USER"
PROPERTY_VALUE="web"
+ DEFAULT_PROPERTY_VALUE="web" FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="10" PROPERTY_KEY="CAM_HELP_PASSWORD"
PROPERTY_VALUE="user"
+ DEFAULT_PROPERTY_VALUE="user" FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="32"
PROPERTY_KEY="CAM_DATA_MAINTENANCE"
+ PROPERTY_VALUE="3600000" DEFAULT_PROPERTY_VALUE="3600000"
FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="34" PROPERTY_KEY="RT_DATA_PURGE"
PROPERTY_VALUE="2678400000"
+ DEFAULT_PROPERTY_VALUE="2678400000"
FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="35"
PROPERTY_KEY="DATA_REINDEX_NIGHTLY" PROPERTY_VALUE="true"
+ DEFAULT_PROPERTY_VALUE="true" FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="36" PROPERTY_KEY="ALERT_PURGE"
PROPERTY_VALUE="2678400000"
+ DEFAULT_PROPERTY_VALUE="2678400000"
FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="51" PROPERTY_KEY="EVENT_PURGE"
PROPERTY_VALUE="1209600000"
+ DEFAULT_PROPERTY_VALUE="1209600000"
FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="52"
PROPERTY_KEY="AGENT_MAX_QUIET_TIME_ALLOWED" PROPERTY_VALUE="900000"
+ DEFAULT_PROPERTY_VALUE="900000" FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="53"
PROPERTY_KEY="ENABLE_AGENT_AUTO_UPDATE" PROPERTY_VALUE="true"
+ DEFAULT_PROPERTY_VALUE="true" FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="54" PROPERTY_KEY="TRAIT_PURGE"
PROPERTY_VALUE="31536000000"
+ DEFAULT_PROPERTY_VALUE="31536000000"
FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="55" PROPERTY_KEY="AVAILABILITY_PURGE"
PROPERTY_VALUE="31536000000"
+ DEFAULT_PROPERTY_VALUE="31536000000"
FREAD_ONLY="FALSE"/>
+ <rhq_system_config ID="56"
PROPERTY_KEY="RESOURCE_GENERIC_PROPERTIES_UPGRADE"
PROPERTY_VALUE="false"
+ DEFAULT_PROPERTY_VALUE="false" FREAD_ONLY="FALSE"/>
+ <rhq_plugin/>
+ <rhq_measurement_def/>
+ <rhq_measurement_sched/>
+ <rhq_measurement_bline/>
+ <rhq_measurement_data_num_1h/>
+ <rhq_measurement_data_num_6h/>
+ <rhq_measurement_data_num_1d/>
+ <rhq_measurement_data_trait/>
+ <rhq_calltime_data_key/>
+ <rhq_calltime_data_value/>
+ <rhq_availability/>
+ <rhq_resource_avail/>
+ <rhq_measurement_oob/>
+ <rhq_measurement_oob_tmp/>
+ <rhq_numbers i="0"/>
+ <rhq_numbers i="1"/>
+ <rhq_numbers i="2"/>
+ <rhq_numbers i="3"/>
+ <rhq_numbers i="4"/>
+ <rhq_numbers i="5"/>
+ <rhq_numbers i="6"/>
+ <rhq_numbers i="7"/>
+ <rhq_numbers i="8"/>
+ <rhq_numbers i="9"/>
+ <rhq_numbers i="10"/>
+ <rhq_numbers i="11"/>
+ <rhq_numbers i="12"/>
+ <rhq_numbers i="13"/>
+ <rhq_numbers i="14"/>
+ <rhq_numbers i="15"/>
+ <rhq_numbers i="16"/>
+ <rhq_numbers i="17"/>
+ <rhq_numbers i="18"/>
+ <rhq_numbers i="19"/>
+ <rhq_numbers i="20"/>
+ <rhq_numbers i="21"/>
+ <rhq_numbers i="22"/>
+ <rhq_numbers i="23"/>
+ <rhq_numbers i="24"/>
+ <rhq_numbers i="25"/>
+ <rhq_numbers i="26"/>
+ <rhq_numbers i="27"/>
+ <rhq_numbers i="28"/>
+ <rhq_numbers i="29"/>
+ <rhq_numbers i="30"/>
+ <rhq_numbers i="31"/>
+ <rhq_numbers i="32"/>
+ <rhq_numbers i="33"/>
+ <rhq_numbers i="34"/>
+ <rhq_numbers i="35"/>
+ <rhq_numbers i="36"/>
+ <rhq_numbers i="37"/>
+ <rhq_numbers i="38"/>
+ <rhq_numbers i="39"/>
+ <rhq_numbers i="40"/>
+ <rhq_numbers i="41"/>
+ <rhq_numbers i="42"/>
+ <rhq_numbers i="43"/>
+ <rhq_numbers i="44"/>
+ <rhq_numbers i="45"/>
+ <rhq_numbers i="46"/>
+ <rhq_numbers i="47"/>
+ <rhq_numbers i="48"/>
+ <rhq_numbers i="49"/>
+ <rhq_numbers i="50"/>
+ <rhq_numbers i="51"/>
+ <rhq_numbers i="52"/>
+ <rhq_numbers i="53"/>
+ <rhq_numbers i="54"/>
+ <rhq_numbers i="55"/>
+ <rhq_numbers i="56"/>
+ <rhq_numbers i="57"/>
+ <rhq_numbers i="58"/>
+ <rhq_numbers i="59"/>
+ <rhq_meas_data_num_r00/>
+ <rhq_meas_data_num_r01/>
+ <rhq_meas_data_num_r02/>
+ <rhq_meas_data_num_r03/>
+ <rhq_meas_data_num_r04/>
+ <rhq_meas_data_num_r05/>
+ <rhq_meas_data_num_r06/>
+ <rhq_meas_data_num_r07/>
+ <rhq_meas_data_num_r08/>
+ <rhq_meas_data_num_r09/>
+ <rhq_meas_data_num_r10/>
+ <rhq_meas_data_num_r11/>
+ <rhq_meas_data_num_r12/>
+ <rhq_meas_data_num_r13/>
+ <rhq_meas_data_num_r14/>
+ <rhq_architecture id="1" name="noarch"/>
+ <rhq_architecture id="2" name="i386"/>
+ <rhq_architecture id="3" name="i486"/>
+ <rhq_architecture id="4" name="i586"/>
+ <rhq_architecture id="5" name="i686"/>
+ <rhq_architecture id="6" name="alpha"/>
+ <rhq_architecture id="7" name="alphaev6"/>
+ <rhq_architecture id="8" name="ia64"/>
+ <rhq_architecture id="9" name="sparc"/>
+ <rhq_architecture id="10" name="sparcv9"/>
+ <rhq_architecture id="11" name="sparc64"/>
+ <rhq_architecture id="12" name="src"/>
+ <rhq_architecture id="13" name="s390"/>
+ <rhq_architecture id="14" name="athlon"/>
+ <rhq_architecture id="15" name="s390x"/>
+ <rhq_architecture id="16" name="ppc"/>
+ <rhq_architecture id="17" name="ppc64"/>
+ <rhq_architecture id="18" name="pSeries"/>
+ <rhq_architecture id="19" name="iSeries"/>
+ <rhq_architecture id="20" name="x86_64"/>
+ <rhq_architecture id="21" name="ppc64iseries"/>
+ <rhq_architecture id="22" name="ppc64pseries"/>
+ <rhq_architecture id="23" name="sparc-solaris"/>
+ <rhq_architecture id="24" name="sparc.sun4u-solaris"/>
+ <rhq_architecture id="25" name="tar"/>
+ <rhq_architecture id="26" name="ia32e"/>
+ <rhq_architecture id="27" name="amd64"/>
+ <rhq_architecture id="28" name="i386-solaris"/>
+ <rhq_architecture id="29" name="nosrc"/>
+ <rhq_architecture id="30" name="sparc-solaris-patch"/>
+ <rhq_architecture id="31" name="i386-solaris-patch"/>
+ <rhq_architecture id="32"
name="sparc-solaris-patch-cluster"/>
+ <rhq_architecture id="33"
name="i386-solaris-patch-cluster"/>
+ <rhq_architecture id="34" name="noarch-solaris"/>
+ <rhq_architecture id="35" name="noarch-solaris-patch"/>
+ <rhq_architecture id="36"
name="noarch-solaris-patch-cluster"/>
+ <rhq_architecture id="37" name="solaris-patch"/>
+ <rhq_architecture id="38" name="solaris-patch-cluster"/>
+ <rhq_repo_group_type id="1" name="family"/>
+ <rhq_repo_group/>
+ <rhq_content_source_type/>
+ <rhq_content_source/>
+ <rhq_repo/>
+ <rhq_repo_relation_type id="1" name="parent"/>
+ <rhq_repo_relation_type id="2" name="clone"/>
+ <rhq_repo_relation/>
+ <rhq_package_type/>
+ <rhq_package/>
+ <rhq_package_bits/>
+ <rhq_package_version/>
+ <rhq_content_req/>
+ <rhq_installed_package/>
+ <rhq_installed_pkg_hist/>
+ <rhq_content_src_sync/>
+ <rhq_repo_sync/>
+ <rhq_package_inst_step/>
+ <rhq_repo_resource_map/>
+ <rhq_repo_content_src_map/>
+ <rhq_repo_repo_group_map/>
+ <rhq_repo_repo_relation_map/>
+ <rhq_repo_pkg_version_map/>
+ <rhq_pkg_ver_content_src_map/>
+ <rhq_pkg_prd_map/>
+ <rhq_distribution_type id="1" name="kickstart"
description="Linux kickstart distribution"/>
+ <rhq_distribution_type id="2" name="jumpstart"
description="solaris jumpstart distribution"/>
+ <rhq_distribution/>
+ <rhq_repo_distribution/>
+ <rhq_distribution_file/>
+ <rhq_advisory/>
+ <rhq_advisory_package/>
+ <rhq_cve/>
+ <rhq_advisory_cve/>
+ <rhq_advisory_buglist/>
+ <rhq_repo_advisory/>
+ <rhq_bundle_type/>
+ <rhq_bundle/>
+ <rhq_bundle_version/>
+ <rhq_bundle_version_repo/>
+ <rhq_bundle_file/>
+ <rhq_bundle_destination/>
+ <rhq_bundle_deployment/>
+ <rhq_bundle_res_deploy/>
+ <rhq_bundle_res_dep_hist/>
+ <rhq_tagging_bundle_map/>
+ <rhq_tagging_bundle_version_map/>
+ <rhq_tagging_bundle_deploy_map/>
+ <rhq_tagging_bundle_dest_map/>
+ <rhq_create_res_hist/>
+ <rhq_delete_res_hist/>
+ <jms_messages/>
+ <jms_transactions/>
+ <jms_users/>
+ <jms_roles/>
+ <jms_subscriptions/>
</dataset>
commit 448abed3493f91fab365bc3bc050e4dc45ffa848
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Tue Jun 14 10:44:44 2011 -0400
BZ 644328 - ant bundle handler tests need to ensure they set the abs dest dir to
simulate what the PC would do
diff --git
a/modules/plugins/ant-bundle/src/test/java/org/rhq/plugins/ant/AntBundlePluginComponentTest.java
b/modules/plugins/ant-bundle/src/test/java/org/rhq/plugins/ant/AntBundlePluginComponentTest.java
index 18d672f..a772ef0 100644
---
a/modules/plugins/ant-bundle/src/test/java/org/rhq/plugins/ant/AntBundlePluginComponentTest.java
+++
b/modules/plugins/ant-bundle/src/test/java/org/rhq/plugins/ant/AntBundlePluginComponentTest.java
@@ -161,6 +161,7 @@ public class AntBundlePluginComponentTest {
request.setBundleFilesLocation(this.bundleFilesDir);
request.setResourceDeployment(new BundleResourceDeployment(deployment, null));
request.setBundleManagerProvider(new MockBundleManagerProvider());
+ request.setAbsoluteDestinationDirectory(this.destDir);
request.setRevert(true);
BundleDeployResult results = plugin.deployBundle(request);
@@ -276,6 +277,7 @@ public class AntBundlePluginComponentTest {
request.setBundleFilesLocation(this.bundleFilesDir);
request.setResourceDeployment(new BundleResourceDeployment(deployment, null));
request.setBundleManagerProvider(new MockBundleManagerProvider());
+ request.setAbsoluteDestinationDirectory(this.destDir);
BundleDeployResult results = plugin.deployBundle(request);
@@ -361,6 +363,7 @@ public class AntBundlePluginComponentTest {
request.setBundleFilesLocation(this.bundleFilesDir);
request.setResourceDeployment(new BundleResourceDeployment(deployment, null));
request.setBundleManagerProvider(new MockBundleManagerProvider());
+ request.setAbsoluteDestinationDirectory(this.destDir);
BundleDeployResult results = plugin.deployBundle(request);
@@ -444,6 +447,7 @@ public class AntBundlePluginComponentTest {
request.setBundleFilesLocation(this.bundleFilesDir);
request.setResourceDeployment(new BundleResourceDeployment(deployment, null));
request.setBundleManagerProvider(new MockBundleManagerProvider());
+ request.setAbsoluteDestinationDirectory(this.destDir);
BundleDeployResult results = plugin.deployBundle(request);
@@ -473,6 +477,7 @@ public class AntBundlePluginComponentTest {
BundlePurgeRequest purgeRequest = new BundlePurgeRequest();
purgeRequest.setLiveResourceDeployment(new BundleResourceDeployment(deployment,
null));
purgeRequest.setBundleManagerProvider(new MockBundleManagerProvider());
+ purgeRequest.setAbsoluteDestinationDirectory(this.destDir);
BundlePurgeResult purgeResults = plugin.purgeBundle(purgeRequest);
assertResultsSuccess(purgeResults);
@@ -556,6 +561,7 @@ public class AntBundlePluginComponentTest {
request.setBundleFilesLocation(this.bundleFilesDir);
request.setResourceDeployment(new BundleResourceDeployment(deployment, null));
request.setBundleManagerProvider(new MockBundleManagerProvider());
+ request.setAbsoluteDestinationDirectory(this.destDir);
request.setCleanDeployment(clean);
BundleDeployResult results = plugin.deployBundle(request);
commit 3f0d99edb790a8877292c31453beac8b56de18d1
Merge: 7590cce 925b384
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Tue Jun 14 10:21:53 2011 -0400
Merge commit 'origin/master' into nonplatform-bundles-644328
commit 9c04e5bb15f7de53526930fb47b9f19ec55f49b9
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Jun 14 10:13:40 2011 +0200
BZ 712311 prevent a NPE in case there is no current config.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
index bef0519..7d94069 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
@@ -410,14 +410,15 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
+ "]; will assume latest resource configuration update is the
current resource configuration.");
}
- // Mask the configuration before returning the update.
- Configuration configuration = current.getConfiguration();
- ConfigurationDefinition configurationDefinition =
getResourceConfigurationDefinitionForResourceType(
- subjectManager.getOverlord(), resource.getResourceType().getId());
- // We do not want the masked configuration persisted, so detach all entities
before masking the configuration.
- entityManager.clear();
- ConfigurationMaskingUtility.maskConfiguration(configuration,
configurationDefinition);
-
+ if (current!=null) {
+ // Mask the configuration before returning the update.
+ Configuration configuration = current.getConfiguration();
+ ConfigurationDefinition configurationDefinition =
getResourceConfigurationDefinitionForResourceType(
+ subjectManager.getOverlord(), resource.getResourceType().getId());
+ // We do not want the masked configuration persisted, so detach all entities
before masking the configuration.
+ entityManager.clear();
+ ConfigurationMaskingUtility.maskConfiguration(configuration,
configurationDefinition);
+ }
return current;
}
commit 7590ccecf2bb79e6b82fd3e47f2b3125dac96201
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Jun 13 17:57:13 2011 -0400
BZ 644328 - finish the unit tests - this tests the fourth kind of context -
measurementTraits.
this shows that we can use a trait value as a mechanism to tell the bundle system
where
to install a bundle.
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/bundle/BundleManagerTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/bundle/BundleManagerTest.java
index 913e951..9942cb3 100644
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/bundle/BundleManagerTest.java
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/bundle/BundleManagerTest.java
@@ -53,6 +53,13 @@ import
org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration.BundleDestinat
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.content.PackageVersion;
+import org.rhq.core.domain.measurement.DataType;
+import org.rhq.core.domain.measurement.MeasurementData;
+import org.rhq.core.domain.measurement.MeasurementDataRequest;
+import org.rhq.core.domain.measurement.MeasurementDataTrait;
+import org.rhq.core.domain.measurement.MeasurementDefinition;
+import org.rhq.core.domain.measurement.MeasurementSchedule;
+import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.core.domain.resource.ResourceType;
@@ -175,8 +182,6 @@ public class BundleManagerTest {
}
- // TODO
- @Test(enabled = false)
public void testNonPlatformBundleDeploy_Trait() throws Exception {
MockInventoryManager im = (MockInventoryManager)
mockBundleManager.getInventoryManager();
@@ -418,10 +423,21 @@ public class BundleManagerTest {
// using the different contexts that are supported.
Configuration pluginConfiguration = new Configuration();
pluginConfiguration.put(new PropertySimple(BUNDLE_CONFIG_CONTEXT_VALUE_PC,
BUNDLE_CONFIG_LOCATION_PC));
+ serverPC.setPluginConfiguration(pluginConfiguration);
+
Configuration resourceConfiguration = new Configuration();
resourceConfiguration.put(new PropertySimple(BUNDLE_CONFIG_CONTEXT_VALUE_RC,
BUNDLE_CONFIG_LOCATION_RC));
- serverPC.setPluginConfiguration(pluginConfiguration);
serverRC.setResourceConfiguration(resourceConfiguration);
+
+ MeasurementDefinition definition = new MeasurementDefinition(serverTypeMT,
BUNDLE_CONFIG_CONTEXT_VALUE_MT);
+ definition.setDataType(DataType.TRAIT);
+ definition.setId(123);
+ MeasurementSchedule schedule = new MeasurementSchedule(definition,
serverMT);
+ schedule.setId(123123);
+ MeasurementScheduleRequest scheduleRequest = new
MeasurementScheduleRequest(schedule);
+ Set<MeasurementScheduleRequest> schedules = new
HashSet<MeasurementScheduleRequest>(1);
+ schedules.add(scheduleRequest);
+ serverContainerMT.setMeasurementSchedule(schedules);
}
@Override
@@ -443,7 +459,19 @@ public class BundleManagerTest {
}
private class MockMeasurementManager extends MeasurementManager {
-
+ @Override
+ public Set<MeasurementData> getRealTimeMeasurementValue(int resourceId,
List<MeasurementDataRequest> requests) {
+ // anytime this method gets called, it means our tests are asking for the
test trait value. It will
+ // always be the same value for all tests.
+ MeasurementDataRequest dataRequest = requests.iterator().next();
+ MeasurementScheduleRequest request = new MeasurementScheduleRequest(0,
dataRequest.getName(), 0, true,
+ DataType.TRAIT);
+ MeasurementDataTrait data = new MeasurementDataTrait(request,
+ MockInventoryManager.BUNDLE_CONFIG_LOCATION_MT);
+ Set<MeasurementData> values = new HashSet<MeasurementData>();
+ values.add(data);
+ return values;
+ }
}
@SuppressWarnings("unchecked")
commit a46e697ceab00d25eea43c14bb09005725d0dda8
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Jun 13 17:37:07 2011 -0400
BZ 644328 - finish up the initial coding of the nonplatform bundle deployment
this also adds several unit tests that exercise 3 of the 4 kinds of
"contexts" that can
be used to denote where to deploy things on the resource. you can specify
a fileSystem location (which is for backward compat - this is how the platform plugin
will specify it can be a bundle target), you can specify the name of a plugin
configuration
property (whose value is the location of where the bundles go) and you can specify the
name
of a resource configuration property. The fourth context, measurementTrait, means you
can have trait whose value is the directory location where the bundles are stored.
this is coded up but i do not have a unit test showing it working. That's coming
up next.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
index 23cd5e7..b0cd714 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
@@ -25,6 +25,7 @@ package org.rhq.core.pc.bundle;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -53,6 +54,10 @@ import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
import org.rhq.core.domain.bundle.BundleResourceDeploymentHistory.Status;
import
org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory;
import org.rhq.core.domain.content.PackageVersion;
+import org.rhq.core.domain.measurement.DataType;
+import org.rhq.core.domain.measurement.MeasurementData;
+import org.rhq.core.domain.measurement.MeasurementDataRequest;
+import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.pc.ContainerService;
@@ -61,6 +66,7 @@ import org.rhq.core.pc.PluginContainerConfiguration;
import org.rhq.core.pc.agent.AgentService;
import org.rhq.core.pc.inventory.InventoryManager;
import org.rhq.core.pc.inventory.ResourceContainer;
+import org.rhq.core.pc.measurement.MeasurementManager;
import org.rhq.core.pc.util.ComponentUtil;
import org.rhq.core.pc.util.FacetLockType;
import org.rhq.core.pc.util.LoggingThreadFactory;
@@ -145,7 +151,7 @@ public class BundleManager extends AgentService implements
BundleAgentService, B
final BundleDeployment bundleDeployment =
resourceDeployment.getBundleDeployment();
// find the resource that will handle the bundle processing
- InventoryManager im = PluginContainer.getInstance().getInventoryManager();
+ InventoryManager im = getInventoryManager();
BundleType bundleType =
bundleDeployment.getBundleVersion().getBundle().getBundleType();
ResourceType resourceType = bundleType.getResourceType();
Set<Resource> resources = im.getResourcesWithType(resourceType);
@@ -230,7 +236,7 @@ public class BundleManager extends AgentService implements
BundleAgentService, B
final BundleDeployment bundleDeployment =
resourceDeployment.getBundleDeployment();
// find the resource that will purge the bundle
- InventoryManager im = PluginContainer.getInstance().getInventoryManager();
+ InventoryManager im = getInventoryManager();
BundleType bundleType =
bundleDeployment.getBundleVersion().getBundle().getBundleType();
ResourceType resourceType = bundleType.getResourceType();
Set<Resource> resources = im.getResourcesWithType(resourceType);
@@ -433,7 +439,7 @@ public class BundleManager extends AgentService implements
BundleAgentService, B
}
// get the resource entity stored in our local inventory
- InventoryManager im = PluginContainer.getInstance().getInventoryManager();
+ InventoryManager im = getInventoryManager();
Resource resource = bundleResourceDeployment.getResource();
ResourceContainer container = im.getResourceContainer(resource);
resource = container.getResource();
@@ -489,8 +495,11 @@ public class BundleManager extends AgentService implements
BundleAgentService, B
break;
}
case measurementTrait: {
- // TODO: find out where we squirrel away traits
- baseLocation = null;
+ baseLocation = getTraitValue(container, destBaseDirValueName);
+ if (baseLocation == null) {
+ throw new IllegalArgumentException("Cannot obtain trait [" +
destBaseDirName + "] for resource ["
+ + resource.getName() + "]");
+ }
break;
}
default: {
@@ -502,6 +511,50 @@ public class BundleManager extends AgentService implements
BundleAgentService, B
}
/**
+ * Given the name of a trait, this will find the value of that trait for the given
resource.
+ *
+ * @param resource the resource whose trait value is to be obtained
+ * @param traitName the name of the trait whose value is to be obtained
+ *
+ * @return the value of the trait, or <code>null</code> if unknown
+ */
+ private String getTraitValue(ResourceContainer container, String traitName) {
+ Integer traitScheduleId = null;
+ Set<MeasurementScheduleRequest> schedules =
container.getMeasurementSchedule();
+ for (MeasurementScheduleRequest schedule : schedules) {
+ if (schedule.getName().equals(traitName)) {
+ if (schedule.getDataType() != DataType.TRAIT) {
+ throw new IllegalArgumentException("Measurement named [" +
traitName + "] for resource ["
+ + container.getResource().getName() + "] is not a trait, it
is of type ["
+ + schedule.getDataType() + "]");
+ }
+ traitScheduleId = Integer.valueOf(schedule.getScheduleId());
+ }
+ }
+ if (traitScheduleId == null) {
+ throw new IllegalArgumentException("There is no trait [" +
traitName + "] for resource ["
+ + container.getResource().getName() + "]");
+ }
+
+ MeasurementManager mm = getMeasurementManager();
+ String traitValue = mm.getCachedTraitValue(traitScheduleId.intValue());
+ if (traitValue == null) {
+ // the trait hasn't been collected yet, so it isn't cached. We need
to get its live value
+ List<MeasurementDataRequest> requests = new
ArrayList<MeasurementDataRequest>();
+ requests.add(new MeasurementDataRequest(traitName, DataType.TRAIT));
+ Set<MeasurementData> dataset =
mm.getRealTimeMeasurementValue(container.getResource().getId(), requests);
+ if (dataset != null && dataset.size() == 1) {
+ Object value = dataset.iterator().next().getValue();
+ if (value != null) {
+ traitValue = value.toString();
+ }
+ }
+ }
+
+ return traitValue;
+ }
+
+ /**
* If this manager can talk to a server-side {@link BundleServerService}, a proxy to
that service is returned.
*
* @return the server-side proxy; <code>null</code> if this manager
doesn't have a server to talk to
@@ -527,7 +580,27 @@ public class BundleManager extends AgentService implements
BundleAgentService, B
*
* @throws PluginContainerException on error
*/
- private BundleFacet getBundleFacet(int resourceId, long timeout) throws
PluginContainerException {
+ protected BundleFacet getBundleFacet(int resourceId, long timeout) throws
PluginContainerException {
return ComponentUtil.getComponent(resourceId, BundleFacet.class,
FacetLockType.READ, timeout, false, true);
}
+
+ /**
+ * Returns the manager that can provide data on the inventory. This is a separate
protected method
+ * so we can extend our manger class to have a mock manager for testing.
+ *
+ * @return the inventory manager
+ */
+ protected InventoryManager getInventoryManager() {
+ return PluginContainer.getInstance().getInventoryManager();
+ }
+
+ /**
+ * Returns the manager that can provide data on the measurements/metrics. This is a
separate protected method
+ * so we can extend our manger class to have a mock manager for testing.
+ *
+ * @return the inventory manager
+ */
+ protected MeasurementManager getMeasurementManager() {
+ return PluginContainer.getInstance().getMeasurementManager();
+ }
}
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
index 2cf62d1..88bc4e6 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/measurement/MeasurementManager.java
@@ -44,7 +44,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.rhq.core.clientapi.agent.measurement.MeasurementAgentService;
-import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementData;
import org.rhq.core.domain.measurement.MeasurementDataNumeric;
import org.rhq.core.domain.measurement.MeasurementDataRequest;
@@ -239,6 +238,21 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
}
}
+ /**
+ * If you want to get a cached value of a trait, pass in its schedule ID.
+ * This is useful if you don't care to obtain the latest-n-greated value of the
trait,
+ * and you want to avoid making a live call to the managed resource to obtain its
value.
+ * Note that if the trait is not yet cached, this will return null, and the caller
will
+ * be forced to make a live call to obtain the trait value, but at least this can
help
+ * avoid unnecessarily calling the live resource.
+ *
+ * @param scheduleId the schedule for the trait for a specific resource
+ * @return the trait's cached value, <code>null</code> if not
available
+ */
+ public String getCachedTraitValue(int scheduleId) {
+ return traitCache.get(scheduleId);
+ }
+
public void perMinuteItizeData(MeasurementReport report) {
Iterator<MeasurementDataNumeric> iter =
report.getNumericData().iterator();
while (iter.hasNext()) {
@@ -428,8 +442,8 @@ public class MeasurementManager extends AgentService implements
MeasurementAgent
MeasurementReport report = new MeasurementReport();
Set<MeasurementScheduleRequest> allMeasurements = new
HashSet<MeasurementScheduleRequest>();
for (MeasurementDataRequest dataRequest : requests) {
- allMeasurements.add(new MeasurementScheduleRequest(1, dataRequest.getName(),
0, true,
- dataRequest.getType()));
+ allMeasurements
+ .add(new MeasurementScheduleRequest(1, dataRequest.getName(), 0, true,
dataRequest.getType()));
}
try {
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/bundle/BundleManagerTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/bundle/BundleManagerTest.java
new file mode 100644
index 0000000..913e951
--- /dev/null
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/bundle/BundleManagerTest.java
@@ -0,0 +1,455 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2008 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, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * 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 and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.core.pc.bundle;
+
+import java.io.File;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import org.rhq.core.clientapi.agent.PluginContainerException;
+import org.rhq.core.clientapi.agent.bundle.BundleScheduleRequest;
+import org.rhq.core.clientapi.agent.bundle.BundleScheduleResponse;
+import org.rhq.core.clientapi.server.bundle.BundleServerService;
+import org.rhq.core.domain.bundle.Bundle;
+import org.rhq.core.domain.bundle.BundleDeployment;
+import org.rhq.core.domain.bundle.BundleDeploymentStatus;
+import org.rhq.core.domain.bundle.BundleDestination;
+import org.rhq.core.domain.bundle.BundleResourceDeployment;
+import org.rhq.core.domain.bundle.BundleResourceDeploymentHistory;
+import org.rhq.core.domain.bundle.BundleType;
+import org.rhq.core.domain.bundle.BundleVersion;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
+import
org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory.Context;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.content.PackageVersion;
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceCategory;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.pc.PluginContainerConfiguration;
+import org.rhq.core.pc.ServerServices;
+import org.rhq.core.pc.inventory.InventoryManager;
+import org.rhq.core.pc.inventory.ResourceContainer;
+import org.rhq.core.pc.measurement.MeasurementManager;
+import org.rhq.core.pluginapi.bundle.BundleDeployRequest;
+import org.rhq.core.pluginapi.bundle.BundleDeployResult;
+import org.rhq.core.pluginapi.bundle.BundleFacet;
+import org.rhq.core.pluginapi.bundle.BundlePurgeRequest;
+import org.rhq.core.pluginapi.bundle.BundlePurgeResult;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
+
+@Test
+public class BundleManagerTest {
+ private MockBundleManager mockBundleManager;
+ private PluginContainerConfiguration pcConfig;
+
+ @BeforeMethod
+ public void beforeMethod() {
+ ServerServices serverServices = new ServerServices();
+ serverServices.setBundleServerService(new MockBundleServerService());
+
+ pcConfig = new PluginContainerConfiguration();
+ pcConfig.setServerServices(serverServices);
+
+ mockBundleManager = new MockBundleManager();
+ mockBundleManager.setConfiguration(pcConfig);
+ mockBundleManager.initialize();
+ }
+
+ @AfterMethod
+ public void afterMethod() {
+ mockBundleManager.shutdown();
+ pcConfig = null;
+ }
+
+ public void testNonPlatformBundleDeploy_FileSystem_AbsolutePath() throws Exception {
+ MockInventoryManager im = (MockInventoryManager)
mockBundleManager.getInventoryManager();
+
+ BundleType bundleType = new BundleType("bundleTypeName",
im.bundleHandlerType);
+ Bundle bundle = new Bundle("bundleName", bundleType, null, null);
+ BundleVersion bundleVersion = new BundleVersion("bundleVersionName",
"1.0", bundle, "");
+ BundleDestination destination = new BundleDestination(bundle,
"destName", null,
+ MockInventoryManager.BUNDLE_CONFIG_NAME_FS, "/tmp/dest"); //
ABSOLUTE PATH
+ BundleDeployment bundleDeployment = new BundleDeployment(bundleVersion,
destination, "deploymentName");
+ BundleResourceDeployment resourceDeployment = new
BundleResourceDeployment(bundleDeployment, im.serverFS);
+ BundleScheduleRequest request = new BundleScheduleRequest(resourceDeployment);
+
+ // No matter what the CONTEXT_VALUE_FS is (i.e. the default context value in the
plugin descriptor),
+ // if the user specifies an absolute path for the destination, that will be used
explicitly. So here in this test,
+ // the destination was specified with a destDir that had an absolute path of
/tmp/dest and it will be used as-is
+ mockBundleManager.absolutePathToAssert = "/tmp/dest";
+ BundleScheduleResponse response = mockBundleManager.schedule(request);
+ assertSuccess(response);
+ assertBundleDeploymentStatus(BundleDeploymentStatus.SUCCESS);
+
+ }
+
+ public void testNonPlatformBundleDeploy_FileSystem_RelativePath() throws Exception {
+ MockInventoryManager im = (MockInventoryManager)
mockBundleManager.getInventoryManager();
+
+ BundleType bundleType = new BundleType("bundleTypeName",
im.bundleHandlerType);
+ Bundle bundle = new Bundle("bundleName", bundleType, null, null);
+ BundleVersion bundleVersion = new BundleVersion("bundleVersionName",
"1.0", bundle, "");
+ BundleDestination destination = new BundleDestination(bundle,
"destName", null,
+ MockInventoryManager.BUNDLE_CONFIG_NAME_FS, "relative/path"); //
RELATIVE PATH
+ BundleDeployment bundleDeployment = new BundleDeployment(bundleVersion,
destination, "deploymentName");
+ BundleResourceDeployment resourceDeployment = new
BundleResourceDeployment(bundleDeployment, im.serverFS);
+ BundleScheduleRequest request = new BundleScheduleRequest(resourceDeployment);
+
+ // in the real world, the context value for fileSystem contexts will probably
always be "/" but
+ // to test that we are really using this context value, our tests set it to
something other than "/".
+ // That's why we prepend CONTEXT_VALUE_FS to the front of the
destination's destDir
+ // note that we expect that relative path converted to absolute
+ mockBundleManager.absolutePathToAssert =
MockInventoryManager.BUNDLE_CONFIG_CONTEXT_VALUE_FS + "/relative/path";
+ BundleScheduleResponse response = mockBundleManager.schedule(request);
+ assertSuccess(response);
+ assertBundleDeploymentStatus(BundleDeploymentStatus.SUCCESS);
+
+ }
+
+ public void testNonPlatformBundleDeploy_PluginConfig() throws Exception {
+ MockInventoryManager im = (MockInventoryManager)
mockBundleManager.getInventoryManager();
+
+ BundleType bundleType = new BundleType("bundleTypeName",
im.bundleHandlerType);
+ Bundle bundle = new Bundle("bundleName", bundleType, null, null);
+ BundleVersion bundleVersion = new BundleVersion("bundleVersionName",
"1.0", bundle, "");
+ BundleDestination destination = new BundleDestination(bundle,
"destName", null,
+ MockInventoryManager.BUNDLE_CONFIG_NAME_PC, "relative/path/pc");
+ BundleDeployment bundleDeployment = new BundleDeployment(bundleVersion,
destination, "deploymentName");
+ BundleResourceDeployment resourceDeployment = new
BundleResourceDeployment(bundleDeployment, im.serverPC);
+ BundleScheduleRequest request = new BundleScheduleRequest(resourceDeployment);
+
+ mockBundleManager.absolutePathToAssert =
MockInventoryManager.BUNDLE_CONFIG_LOCATION_PC + "/relative/path/pc";
+ BundleScheduleResponse response = mockBundleManager.schedule(request);
+ assertSuccess(response);
+ assertBundleDeploymentStatus(BundleDeploymentStatus.SUCCESS);
+
+ }
+
+ public void testNonPlatformBundleDeploy_ResourceConfig() throws Exception {
+ MockInventoryManager im = (MockInventoryManager)
mockBundleManager.getInventoryManager();
+
+ BundleType bundleType = new BundleType("bundleTypeName",
im.bundleHandlerType);
+ Bundle bundle = new Bundle("bundleName", bundleType, null, null);
+ BundleVersion bundleVersion = new BundleVersion("bundleVersionName",
"1.0", bundle, "");
+ BundleDestination destination = new BundleDestination(bundle,
"destName", null,
+ MockInventoryManager.BUNDLE_CONFIG_NAME_RC, "relative/path/rc");
+ BundleDeployment bundleDeployment = new BundleDeployment(bundleVersion,
destination, "deploymentName");
+ BundleResourceDeployment resourceDeployment = new
BundleResourceDeployment(bundleDeployment, im.serverRC);
+ BundleScheduleRequest request = new BundleScheduleRequest(resourceDeployment);
+
+ mockBundleManager.absolutePathToAssert =
MockInventoryManager.BUNDLE_CONFIG_LOCATION_RC + "/relative/path/rc";
+ BundleScheduleResponse response = mockBundleManager.schedule(request);
+ assertSuccess(response);
+ assertBundleDeploymentStatus(BundleDeploymentStatus.SUCCESS);
+
+ }
+
+ // TODO
+ @Test(enabled = false)
+ public void testNonPlatformBundleDeploy_Trait() throws Exception {
+ MockInventoryManager im = (MockInventoryManager)
mockBundleManager.getInventoryManager();
+
+ BundleType bundleType = new BundleType("bundleTypeName",
im.bundleHandlerType);
+ Bundle bundle = new Bundle("bundleName", bundleType, null, null);
+ BundleVersion bundleVersion = new BundleVersion("bundleVersionName",
"1.0", bundle, "");
+ BundleDestination destination = new BundleDestination(bundle,
"destName", null,
+ MockInventoryManager.BUNDLE_CONFIG_NAME_MT, "relative/path/mt");
+ BundleDeployment bundleDeployment = new BundleDeployment(bundleVersion,
destination, "deploymentName");
+ BundleResourceDeployment resourceDeployment = new
BundleResourceDeployment(bundleDeployment, im.serverMT);
+ BundleScheduleRequest request = new BundleScheduleRequest(resourceDeployment);
+
+ mockBundleManager.absolutePathToAssert =
MockInventoryManager.BUNDLE_CONFIG_LOCATION_MT + "/relative/path/mt";
+ BundleScheduleResponse response = mockBundleManager.schedule(request);
+ assertSuccess(response);
+ assertBundleDeploymentStatus(BundleDeploymentStatus.SUCCESS);
+
+ }
+
+ public void testNonPlatformBundleDeploy_FileSystem_Failure() throws Exception {
+ MockInventoryManager im = (MockInventoryManager)
mockBundleManager.getInventoryManager();
+
+ BundleType bundleType = new BundleType("bundleTypeName",
im.bundleHandlerType);
+ Bundle bundle = new Bundle("bundleName", bundleType, null, null);
+ BundleVersion bundleVersion = new BundleVersion("bundleVersionName",
"1.0", bundle, "");
+ BundleDestination destination = new BundleDestination(bundle,
"destName", null,
+ MockInventoryManager.BUNDLE_CONFIG_NAME_FS, "/tmp/dest"); //
ABSOLUTE PATH
+ BundleDeployment bundleDeployment = new BundleDeployment(bundleVersion,
destination, "deploymentName");
+ BundleResourceDeployment resourceDeployment = new
BundleResourceDeployment(bundleDeployment, im.serverFS);
+ BundleScheduleRequest request = new BundleScheduleRequest(resourceDeployment);
+
+ mockBundleManager.absolutePathToAssert = "/should_fail_to_match"; //
this will not match the /tmp/dest that we set the destination to
+ BundleScheduleResponse response = mockBundleManager.schedule(request);
+ assertSuccess(response);
+ assertBundleDeploymentStatus(BundleDeploymentStatus.FAILURE);
+
+ }
+
+ private void assertSuccess(BundleScheduleResponse response) {
+ assert response.isSuccess() : response;
+ }
+
+ private void assertBundleDeploymentStatus(BundleDeploymentStatus statusToAssert)
throws Exception {
+ MockBundleServerService bundleService;
+ bundleService = (MockBundleServerService)
pcConfig.getServerServices().getBundleServerService();
+ assert bundleService.lastStatusLatch.await(30, TimeUnit.SECONDS) : "Test did
not complete in a timely manner - is it hung?";
+ assert bundleService.lastStatus == statusToAssert : "Deployment status
[" + bundleService.lastStatus
+ + "] did not match what was expected [" + statusToAssert +
"]";
+ }
+
+ private class MockBundleManager extends BundleManager {
+ public String absolutePathToAssert;
+
+ @Override
+ protected InventoryManager getInventoryManager() {
+ return new MockInventoryManager();
+ }
+
+ @Override
+ protected MeasurementManager getMeasurementManager() {
+ return new MockMeasurementManager();
+ }
+
+ @Override
+ protected BundleFacet getBundleFacet(int resourceId, long timeout) throws
PluginContainerException {
+ return new MockBundleFacet(this);
+ }
+ }
+
+ private class MockBundleFacet implements BundleFacet {
+ MockBundleManager manager;
+
+ public MockBundleFacet(MockBundleManager mbm) {
+ manager = mbm;
+ }
+
+ @Override
+ public BundleDeployResult deployBundle(BundleDeployRequest request) {
+ BundleDeployResult result = new BundleDeployResult();
+ // tests should be setting MockBundleManager.absolutePathToAssert to the path
that should be expected
+ if (!request.getAbsoluteDestinationDirectory().equals(new
File(manager.absolutePathToAssert))) {
+ result.setErrorMessage("absolute path [" +
request.getAbsoluteDestinationDirectory()
+ + "] did not match the expected path [" +
manager.absolutePathToAssert + "]");
+ System.out.println(result.getErrorMessage());
+ }
+ return result;
+ }
+
+ @Override
+ public BundlePurgeResult purgeBundle(BundlePurgeRequest request) {
+ BundlePurgeResult result = new BundlePurgeResult();
+ return result;
+ }
+ }
+
+ private class MockBundleServerService implements BundleServerService {
+ public BundleDeploymentStatus lastStatus = null;
+ public CountDownLatch lastStatusLatch = new CountDownLatch(1);
+
+ @Override
+ public void addDeploymentHistory(int bundleDeploymentId,
BundleResourceDeploymentHistory history) {
+ return;
+ }
+
+ @Override
+ public long downloadPackageBits(PackageVersion packageVersion, OutputStream
outputStream) {
+ return 0;
+ }
+
+ @Override
+ public List<PackageVersion> getAllBundleVersionPackageVersions(int
bundleVersionId) {
+ return new ArrayList<PackageVersion>(0);
+ }
+
+ @Override
+ public void setBundleDeploymentStatus(int bundleDeploymentId,
BundleDeploymentStatus status) {
+ // only track success or failure status
+ if ((status == BundleDeploymentStatus.SUCCESS) || (status ==
BundleDeploymentStatus.FAILURE)) {
+ lastStatus = status;
+ lastStatusLatch.countDown();
+ }
+ return;
+ }
+ }
+
+ private class MockInventoryManager extends InventoryManager {
+ private static final String BUNDLE_CONFIG_NAME_FS =
"fsBaseDirLocation";
+ private static final String BUNDLE_CONFIG_CONTEXT_VALUE_FS = "/blah";
+
+ private static final String BUNDLE_CONFIG_NAME_PC =
"pcBaseDirLocation";
+ private static final String BUNDLE_CONFIG_CONTEXT_VALUE_PC =
"pcPropBundle";
+ private static final String BUNDLE_CONFIG_LOCATION_PC =
"/pluginconfig/base/dir";
+
+ private static final String BUNDLE_CONFIG_NAME_RC =
"rcBaseDirLocation";
+ private static final String BUNDLE_CONFIG_CONTEXT_VALUE_RC =
"rcPropBundle";
+ private static final String BUNDLE_CONFIG_LOCATION_RC =
"/resourceconfig/base/dir";
+
+ private static final String BUNDLE_CONFIG_NAME_MT =
"mtBaseDirLocation";
+ private static final String BUNDLE_CONFIG_CONTEXT_VALUE_MT =
"traitBundle";
+ private static final String BUNDLE_CONFIG_LOCATION_MT =
"/trait/base/dir";
+
+ // mocking the following:
+ // - one platform type and a platform resource to be used as the root parent
+ // - one bundle handler type and resource to mimic our bundle handler component
+ // - one server resource for each kind of "destination base directory
context"
+ // ** FS = fileSystem (the bundle will be deployed directly to the root file
system)
+ // ** PC = pluginConfiguration (bundle deployed to a directory specified in a
plugin config property)
+ // ** RC = resourceConfiguration (bundle deployed to a directory specified in a
resource config property)
+ // ** MT = measurementTrait (bundle deployed to a directory specified in a
measurement trait value)
+ public ResourceType platformType;
+ public ResourceType bundleHandlerType;
+ public ResourceType serverTypeFS;
+ public ResourceType serverTypePC;
+ public ResourceType serverTypeRC;
+ public ResourceType serverTypeMT;
+ public Resource platform;
+ public Resource bundleHandler;
+ public Resource serverFS;
+ public Resource serverPC;
+ public Resource serverRC;
+ public Resource serverMT;
+ public HashMap<ResourceType, Resource> typeResourceMap = new
HashMap<ResourceType, Resource>();
+ public HashMap<Integer, ResourceContainer> idResourceContainerMap = new
HashMap<Integer, ResourceContainer>();
+
+ public MockInventoryManager() {
+ platformType = new ResourceType("platformResourceTypeName",
"pluginName", ResourceCategory.PLATFORM, null);
+ bundleHandlerType = new ResourceType("bhRTypeName",
"pluginName", ResourceCategory.SERVER, platformType);
+ serverTypeFS = new ResourceType("typeName-fileSystem",
"pluginName", ResourceCategory.SERVER, platformType);
+ serverTypePC = new ResourceType("typeName-plugConfig",
"pluginName", ResourceCategory.SERVER, platformType);
+ serverTypeRC = new ResourceType("typeName-reSconfig",
"pluginName", ResourceCategory.SERVER, platformType);
+ serverTypeMT = new ResourceType("typeName-trait",
"pluginName", ResourceCategory.SERVER, platformType);
+
+ int id = 1;
+ platform = new Resource("platformKey", "platformName",
platformType);
+ platform.setId(id++);
+ bundleHandler = new Resource("bhKey", "bhName",
bundleHandlerType);
+ bundleHandler.setId(id++);
+ bundleHandler.setParentResource(platform);
+ serverFS = new Resource("serverKey-fileSystem",
"serverName-fileSystem", serverTypeFS);
+ serverFS.setId(id++);
+ serverFS.setParentResource(platform);
+ serverPC = new Resource("serverKey-plugConfig",
"serverName-plugConfig", serverTypePC);
+ serverPC.setId(id++);
+ serverPC.setParentResource(platform);
+ serverRC = new Resource("serverKey-resConfig",
"serverName-resConfig", serverTypeRC);
+ serverRC.setId(id++);
+ serverRC.setParentResource(platform);
+ serverMT = new Resource("serverKey-traitConfig",
"serverName-traitConfig", serverTypeMT);
+ serverMT.setId(id++);
+ serverMT.setParentResource(platform);
+
+ typeResourceMap.put(platformType, platform);
+ typeResourceMap.put(bundleHandlerType, bundleHandler);
+ typeResourceMap.put(serverTypeFS, serverFS);
+ typeResourceMap.put(serverTypePC, serverPC);
+ typeResourceMap.put(serverTypeRC, serverRC);
+ typeResourceMap.put(serverTypeMT, serverMT);
+
+ ResourceContainer platformContainer = new ResourceContainer(platform, null);
+ ResourceContainer bundleHandlerContainer = new
ResourceContainer(bundleHandler, null);
+ ResourceContainer serverContainerFS = new ResourceContainer(serverFS, null);
+ ResourceContainer serverContainerPC = new ResourceContainer(serverPC, null);
+ ResourceContainer serverContainerRC = new ResourceContainer(serverRC, null);
+ ResourceContainer serverContainerMT = new ResourceContainer(serverMT, null);
+ idResourceContainerMap.put(platform.getId(), platformContainer);
+ idResourceContainerMap.put(bundleHandler.getId(), bundleHandlerContainer);
+ idResourceContainerMap.put(serverFS.getId(), serverContainerFS);
+ idResourceContainerMap.put(serverPC.getId(), serverContainerPC);
+ idResourceContainerMap.put(serverRC.getId(), serverContainerRC);
+ idResourceContainerMap.put(serverMT.getId(), serverContainerMT);
+
+ bundleHandlerContainer.setResourceContext(new
MockResourceContext(bundleHandler));
+
+ // each different resource type that supports bundle deployments needs to
define its
+ // bundle configuration to denote where the base directory location is
found.
+ // Today we support four ways: via plugin config property, resource config
property,
+ // measurement trait value, or strictly on the root file system (using no
resource specific value)
+ ResourceTypeBundleConfiguration rtbc = new
ResourceTypeBundleConfiguration(new Configuration());
+ rtbc.addBundleDestinationBaseDirectory(BUNDLE_CONFIG_NAME_FS,
Context.fileSystem.name(),
+ BUNDLE_CONFIG_CONTEXT_VALUE_FS);
+ serverTypeFS.setResourceTypeBundleConfiguration(rtbc);
+
+ rtbc = new ResourceTypeBundleConfiguration(new Configuration());
+ rtbc.addBundleDestinationBaseDirectory(BUNDLE_CONFIG_NAME_PC,
Context.pluginConfiguration.name(),
+ BUNDLE_CONFIG_CONTEXT_VALUE_PC);
+ serverTypePC.setResourceTypeBundleConfiguration(rtbc);
+
+ rtbc = new ResourceTypeBundleConfiguration(new Configuration());
+ rtbc.addBundleDestinationBaseDirectory(BUNDLE_CONFIG_NAME_RC,
Context.resourceConfiguration.name(),
+ BUNDLE_CONFIG_CONTEXT_VALUE_RC);
+ serverTypeRC.setResourceTypeBundleConfiguration(rtbc);
+
+ rtbc = new ResourceTypeBundleConfiguration(new Configuration());
+ rtbc.addBundleDestinationBaseDirectory(BUNDLE_CONFIG_NAME_MT,
Context.measurementTrait.name(),
+ BUNDLE_CONFIG_CONTEXT_VALUE_MT);
+ serverTypeMT.setResourceTypeBundleConfiguration(rtbc);
+
+ // each different resource needs to specify where exactly it wants the
bundles deployed
+ // using the different contexts that are supported.
+ Configuration pluginConfiguration = new Configuration();
+ pluginConfiguration.put(new PropertySimple(BUNDLE_CONFIG_CONTEXT_VALUE_PC,
BUNDLE_CONFIG_LOCATION_PC));
+ Configuration resourceConfiguration = new Configuration();
+ resourceConfiguration.put(new PropertySimple(BUNDLE_CONFIG_CONTEXT_VALUE_RC,
BUNDLE_CONFIG_LOCATION_RC));
+ serverPC.setPluginConfiguration(pluginConfiguration);
+ serverRC.setResourceConfiguration(resourceConfiguration);
+ }
+
+ @Override
+ public Set<Resource> getResourcesWithType(ResourceType type) {
+ HashSet<Resource> set = new HashSet<Resource>(1);
+ set.add(typeResourceMap.get(type));
+ return set;
+ }
+
+ @Override
+ public ResourceContainer getResourceContainer(Integer resourceId) {
+ return idResourceContainerMap.get(resourceId);
+ }
+
+ @Override
+ public ResourceContainer getResourceContainer(Resource resource) {
+ return idResourceContainerMap.get(resource.getId());
+ }
+ }
+
+ private class MockMeasurementManager extends MeasurementManager {
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private class MockResourceContext extends ResourceContext {
+ public MockResourceContext(Resource resource) {
+ super(resource, null, null, null, null, null, null, null, null, null, null,
null);
+ }
+ }
+}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
index cffcadd..fa55ec1 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
@@ -85,7 +85,7 @@ import org.rhq.core.util.stream.StreamUtil;
import org.rhq.core.util.updater.DeploymentProperties;
import org.rhq.enterprise.server.plugin.pc.MasterServerPluginContainer;
import org.rhq.enterprise.server.resource.ResourceManagerLocal;
-import org.rhq.enterprise.server.resource.metadata.test.UpdateSubsytemTestBase;
+import org.rhq.enterprise.server.test.AbstractEJB3Test;
import org.rhq.enterprise.server.test.TestAgentClient;
import org.rhq.enterprise.server.test.TestServerCommunicationsService;
import org.rhq.enterprise.server.util.LookupUtil;
@@ -96,7 +96,7 @@ import org.rhq.enterprise.server.util.LookupUtil;
*/
@SuppressWarnings( { "unused" })
@Test
-public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
+public class BundleManagerBeanTest extends AbstractEJB3Test {
private static final boolean TESTS_ENABLED = true;
@@ -115,12 +115,10 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
private Subject overlord;
TestServerCommunicationsService agentServiceContainer;
- @Override
@BeforeClass
public void beforeClass() {
- super.beforeClass();
agentServiceContainer = prepareForTestAgents();
- agentServiceContainer.bundleService = new TestAgentClient(null, new
TestServerCommunicationsService());
+ agentServiceContainer.bundleService = new TestAgentClient(null,
agentServiceContainer);
}
@AfterClass
@@ -863,7 +861,7 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
}
@Test(enabled = TESTS_ENABLED)
- public void testfindBundlesByCriteria() throws Exception {
+ public void testFindBundlesByCriteria() throws Exception {
Bundle b1 = createBundle("one");
Bundle b2 = createBundle("two");
BundleVersion bv1 = createBundleVersion(b1.getName(), "1.0", b1);
@@ -921,7 +919,7 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
}
@Test(enabled = TESTS_ENABLED)
- public void testfindBundleVersionsByCriteria() throws Exception {
+ public void testFindBundleVersionsByCriteria() throws Exception {
Bundle b1 = createBundle("one");
BundleVersion bv1 = createBundleVersion(b1.getName(), "1.0", b1);
BundleVersion bv2 = createBundleVersion(b1.getName(), "2.0", b1);
commit 925b384bee787d14701ef1bf1565eccb1a12c435
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Mon Jun 13 13:25:52 2011 -0500
One more attempt to fix FK violations for test runs.
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
index b958a1c..70f7073 100644
---
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
+++
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
@@ -1,4 +1,5 @@
<dataset>
+ <rhq_content_source/>
<rhq_repo_content_src_map/>
<rhq_repo/>
<rhq_config_def/>
commit dcfdf741499c67d55ad5e2d4b319f5a8cbd9fe56
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Mon Jun 13 12:52:06 2011 -0500
One more attempt to fix FK violations for dbupgrade test runs.
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
index d419fe5..b958a1c 100644
---
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
+++
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
@@ -1,4 +1,6 @@
<dataset>
+ <rhq_repo_content_src_map/>
+ <rhq_repo/>
<rhq_config_def/>
<rhq_config_prop_def/>
<rhq_conf_prop_def_enum/>
@@ -28,8 +30,6 @@
<rhq_availability/>
<rhq_measurement_sched/>
<rhq_package/>
- <rhq_repo_content_src_map/>
- <rhq_repo/>
<rhq_bundle/>
<rhq_plugin/>
</dataset>
commit 8445b4e6fe77a7c866dec1306254410d0dc032a5
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Fri Jun 10 16:56:10 2011 -0500
One more attempt to fix FK violations for test runs. This method is very fragile...
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
index 1777489..d419fe5 100644
---
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
+++
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
@@ -14,10 +14,11 @@
<rhq_config/>
<rhq_config_property/>
<rhq_config_template/>
+ <rhq_resource_group_res_exp_map/>
<rhq_resource_group_res_imp_map/>
- <rhq_resource/>
<rhq_resource_subcat/>
<rhq_resource_group/>
+ <rhq_resource/>
<rhq_prd_ver/>
<rhq_alert_definition/>
<rhq_alert_condition/>
commit 5118f46cf1b5734d294f31faf6a89d0a73c5924f
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Jun 10 17:25:42 2011 -0400
BZ 644328 - agent code to determine where to deploy the bundle under a resource
the only thing left is a TODO to figure out how to get a measurement trait value
diff --git
a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/bundle/BundleDeployRequest.java
b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/bundle/BundleDeployRequest.java
index d70716e..8130ee3 100644
---
a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/bundle/BundleDeployRequest.java
+++
b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/bundle/BundleDeployRequest.java
@@ -23,6 +23,7 @@ import java.io.File;
import java.io.Serializable;
import java.util.Map;
+import org.rhq.core.domain.bundle.BundleDestination;
import org.rhq.core.domain.bundle.BundleResourceDeployment;
import org.rhq.core.domain.content.PackageVersion;
@@ -40,11 +41,26 @@ public class BundleDeployRequest implements Serializable {
private Map<PackageVersion, File> packageVersionFiles;
private boolean isCleanDeployment = false;
private boolean isRevert = false;
+ private File absDestDir;
public BundleDeployRequest() {
}
/**
+ * Returns the full, absolute directory as found on the local machine's file
system
+ * where the bundle should be deployed. This is the bundle destination's
+ * {@link BundleDestination#getDeployDir() relative destination directory} under the
+ * {@link BundleDestination#getDestinationBaseDirectoryName() destination base
directory}.
+ */
+ public File getAbsoluteDestinationDirectory() {
+ return this.absDestDir;
+ }
+
+ public void setAbsoluteDestinationDirectory(File absoluteDestDir) {
+ this.absDestDir = absoluteDestDir;
+ }
+
+ /**
* This returns the location where the plugin container has downloaded the bundle
files.
*
* @return the location where the bundle files have been downloaded
@@ -118,6 +134,7 @@ public class BundleDeployRequest implements Serializable {
public String toString() {
StringBuilder str = new StringBuilder(this.getClass() + ": ");
str.append("deployment=[").append(resourceDeployment.toString()).append("],
");
+
str.append("full-deploy-directory=[").append(absDestDir.toString()).append("],
");
str.append("clean=[").append(isCleanDeployment).append("],
");
str.append("revert=[").append(isRevert).append("]");
return str.toString();
diff --git
a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/bundle/BundlePurgeRequest.java
b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/bundle/BundlePurgeRequest.java
index 6f41339..8e9456d 100644
---
a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/bundle/BundlePurgeRequest.java
+++
b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/bundle/BundlePurgeRequest.java
@@ -19,8 +19,10 @@
package org.rhq.core.pluginapi.bundle;
+import java.io.File;
import java.io.Serializable;
+import org.rhq.core.domain.bundle.BundleDestination;
import org.rhq.core.domain.bundle.BundleResourceDeployment;
/**
@@ -33,11 +35,26 @@ public class BundlePurgeRequest implements Serializable {
private BundleResourceDeployment resourceDeployment;
private BundleManagerProvider bundleManagerProvider;
+ private File absDestDir;
public BundlePurgeRequest() {
}
/**
+ * Returns the full, absolute directory as found on the local machine's file
system
+ * where the bundle should be deployed. This is the bundle destination's
+ * {@link BundleDestination#getDeployDir() relative destination directory} under the
+ * {@link BundleDestination#getDestinationBaseDirectoryName() destination base
directory}.
+ */
+ public File getAbsoluteDestinationDirectory() {
+ return this.absDestDir;
+ }
+
+ public void setAbsoluteDestinationDirectory(File absoluteDestDir) {
+ this.absDestDir = absoluteDestDir;
+ }
+
+ /**
* This is information about the last known live resource deployment - this is to be
purged.
*
* @return information about the live resource deployment that is to be purged
@@ -62,6 +79,7 @@ public class BundlePurgeRequest implements Serializable {
public String toString() {
StringBuilder str = new StringBuilder(this.getClass() + ": ");
str.append("live-deployment-to-be-purge=[").append(resourceDeployment.toString()).append("],
");
+
str.append("full-deploy-directory=[").append(absDestDir.toString()).append("]");
return str.toString();
}
}
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
index b945ff1..23cd5e7 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/bundle/BundleManager.java
@@ -44,11 +44,14 @@ import org.rhq.core.clientapi.agent.bundle.BundleScheduleResponse;
import org.rhq.core.clientapi.server.bundle.BundleServerService;
import org.rhq.core.domain.bundle.BundleDeployment;
import org.rhq.core.domain.bundle.BundleDeploymentStatus;
+import org.rhq.core.domain.bundle.BundleDestination;
import org.rhq.core.domain.bundle.BundleResourceDeployment;
import org.rhq.core.domain.bundle.BundleResourceDeploymentHistory;
import org.rhq.core.domain.bundle.BundleType;
import org.rhq.core.domain.bundle.BundleVersion;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
import org.rhq.core.domain.bundle.BundleResourceDeploymentHistory.Status;
+import
org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory;
import org.rhq.core.domain.content.PackageVersion;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
@@ -177,6 +180,8 @@ public class BundleManager extends AgentService implements
BundleAgentService, B
auditDeployment(resourceDeployment, AUDIT_DEPLOYMENT_STARTED,
bundleDeployment.getName(),
deploymentMessage);
+ File absoluteDestDir =
getAbsoluteDestinationDir(request.getBundleResourceDeployment());
+
BundleDeployRequest deployRequest = new BundleDeployRequest();
deployRequest.setBundleManagerProvider(BundleManager.this);
deployRequest.setResourceDeployment(resourceDeployment);
@@ -184,6 +189,7 @@ public class BundleManager extends AgentService implements
BundleAgentService, B
deployRequest.setPackageVersionFiles(downloadedFiles);
deployRequest.setCleanDeployment(request.isCleanDeployment());
deployRequest.setRevert(request.isRevert());
+ deployRequest.setAbsoluteDestinationDirectory(absoluteDestDir);
// get the bundle facet object that will process the bundle and
call it to start the deployment
int facetMethodTimeout = 4 * 60 * 60 * 1000; // 4 hours is given
to the bundle plugin to do its thing
@@ -244,9 +250,12 @@ public class BundleManager extends AgentService implements
BundleAgentService, B
+ resourceDeployment.getResource() + "]";
auditDeployment(resourceDeployment, AUDIT_PURGE_STARTED,
bundleDeployment.getName(), deploymentMessage);
+ File absoluteDestDir =
getAbsoluteDestinationDir(request.getLiveBundleResourceDeployment());
+
org.rhq.core.pluginapi.bundle.BundlePurgeRequest purgeRequest = new
org.rhq.core.pluginapi.bundle.BundlePurgeRequest();
purgeRequest.setBundleManagerProvider(this);
purgeRequest.setLiveResourceDeployment(resourceDeployment);
+ purgeRequest.setAbsoluteDestinationDirectory(absoluteDestDir);
// get the bundle facet object that will process the bundle and call it to
start the purge
int facetMethodTimeout = 30 * 60 * 1000; // 30 minutes should be enough time
for the bundle plugin to purge everything
@@ -406,6 +415,93 @@ public class BundleManager extends AgentService implements
BundleAgentService, B
}
/**
+ * Given a deployment, this examines the destination and the resource to determine
where exactly
+ * the bundle distribution should be written.
+ *
+ * @param bundleResourceDeployment describes where the bundle should be or is
deployed
+ *
+ * @return absolute directory location where the bundle should be deployed
+ */
+ private File getAbsoluteDestinationDir(BundleResourceDeployment
bundleResourceDeployment) {
+ BundleDestination dest =
bundleResourceDeployment.getBundleDeployment().getDestination();
+ String destBaseDirName = dest.getDestinationBaseDirectoryName();
+ String relativeDeployDir = dest.getDeployDir();
+
+ // paranoia, if no deploy dir is given, as assume it will be directly under the
base location
+ if (relativeDeployDir == null || relativeDeployDir.trim().length() == 0) {
+ relativeDeployDir = File.separator;
+ }
+
+ // get the resource entity stored in our local inventory
+ InventoryManager im = PluginContainer.getInstance().getInventoryManager();
+ Resource resource = bundleResourceDeployment.getResource();
+ ResourceContainer container = im.getResourceContainer(resource);
+ resource = container.getResource();
+
+ // find out the type of base location that is specified by the bundle
destination
+ BundleDestinationBaseDirectory bundleDestBaseDir = null;
+ ResourceTypeBundleConfiguration rtbc =
resource.getResourceType().getResourceTypeBundleConfiguration();
+ if (rtbc == null) {
+ throw new IllegalArgumentException("The resource type doesn't
support bundle deployments: " + resource);
+ }
+ for (BundleDestinationBaseDirectory bdbd :
rtbc.getBundleDestinationBaseDirectories()) {
+ if (bdbd.getName().equals(destBaseDirName)) {
+ bundleDestBaseDir = bdbd;
+ break;
+ }
+ }
+ if (bundleDestBaseDir == null) {
+ throw new IllegalArgumentException(
+ "The resource type doesn't support bundle destination base
location named [" + destBaseDirName + "]");
+ }
+
+ // based on the type of destination base location, determine the root base
directory
+ String destBaseDirValueName = bundleDestBaseDir.getValueName(); // the name we
look up in the given context
+ String baseLocation;
+ switch (bundleDestBaseDir.getValueContext()) {
+ case fileSystem: {
+ if (!new File(relativeDeployDir).isAbsolute()) {
+ // the deploy dir is not absolute; since we need to pin it to something,
we assume the top root directory
+ // unless the descriptor told us to go somewhere else differently
+ baseLocation = destBaseDirValueName; // ultimately this came from the
plugin descriptor
+ if (baseLocation == null || baseLocation.trim().length() == 0) {
+ baseLocation = File.separator; // paranoia, if the plugin descriptor
didn't specify, assume the top root directory
+ }
+ } else {
+ baseLocation = null; // so the relativeDeployDir is processed as an
absolute dir
+ }
+ break;
+ }
+ case pluginConfiguration: {
+ baseLocation =
resource.getPluginConfiguration().getSimpleValue(destBaseDirValueName, null);
+ if (baseLocation == null) {
+ throw new IllegalArgumentException("Cannot determine the bundle base
deployment location - "
+ + "there is no plugin configuration setting for [" +
destBaseDirValueName + "]");
+ }
+ break;
+ }
+ case resourceConfiguration: {
+ baseLocation =
resource.getResourceConfiguration().getSimpleValue(destBaseDirValueName, null);
+ if (baseLocation == null) {
+ throw new IllegalArgumentException("Cannot determine the bundle base
deployment location - "
+ + "there is no resource configuration setting for [" +
destBaseDirValueName + "]");
+ }
+ break;
+ }
+ case measurementTrait: {
+ // TODO: find out where we squirrel away traits
+ baseLocation = null;
+ break;
+ }
+ default: {
+ throw new IllegalArgumentException("Unknown bundle destination location
context: " + bundleDestBaseDir);
+ }
+ }
+
+ return new File(baseLocation, relativeDeployDir);
+ }
+
+ /**
* If this manager can talk to a server-side {@link BundleServerService}, a proxy to
that service is returned.
*
* @return the server-side proxy; <code>null</code> if this manager
doesn't have a server to talk to
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index e7f80c6..9ea77f5 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -81,7 +81,6 @@ import org.rhq.core.domain.criteria.BundleVersionCriteria;
import org.rhq.core.domain.criteria.ResourceGroupCriteria;
import org.rhq.core.domain.criteria.ResourceTypeCriteria;
import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.ResourceCategory;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.group.ResourceGroup;
import org.rhq.core.domain.util.PageControl;
@@ -1007,18 +1006,18 @@ public class BundleManagerBean implements BundleManagerLocal,
BundleManagerRemot
ResourceGroup group = destination.getGroup();
// Create and persist updates for each of the group members.
- Set<Resource> platforms = group.getExplicitResources();
- if (platforms.isEmpty()) {
+ Set<Resource> groupMembers = group.getExplicitResources();
+ if (groupMembers.isEmpty()) {
throw new IllegalArgumentException("Destination [" + destination
- + "] group has no platforms. Invalid deployment destination");
+ + "] group has no members. Invalid deployment destination");
}
- for (Resource platform : platforms) {
+ for (Resource groupMember : groupMembers) {
try {
- scheduleBundleResourceDeployment(subject, newDeployment, platform,
isCleanDeployment, isRevert);
+ scheduleBundleResourceDeployment(subject, newDeployment, groupMember,
isCleanDeployment, isRevert);
} catch (Throwable t) {
- log.error("Failed to complete scheduling of platform deployment to
[" + platform
- + "]. Other platforms may have been scheduled. ", t);
+ log.error("Failed to complete scheduling of bundle deployment to
[" + groupMember
+ + "]. Other bundle deployments to other resources may have been
scheduled. ", t);
}
}
@@ -1057,18 +1056,18 @@ public class BundleManagerBean implements BundleManagerLocal,
BundleManagerRemot
}
private BundleResourceDeployment scheduleBundleResourceDeployment(Subject subject,
BundleDeployment deployment,
- Resource platform, boolean isCleanDeployment, boolean isRevert) throws Exception
{
+ Resource bundleTarget, boolean isCleanDeployment, boolean isRevert) throws
Exception {
- int platformId = platform.getId();
- AgentClient agentClient =
agentManager.getAgentClient(subjectManager.getOverlord(), platformId);
+ int bundleTargetResourceId = bundleTarget.getId();
+ AgentClient agentClient =
agentManager.getAgentClient(subjectManager.getOverlord(), bundleTargetResourceId);
BundleAgentService bundleAgentService = agentClient.getBundleAgentService();
// The BundleResourceDeployment record must exist in the db before the agent
request because the agent may try
// to add History to it during immediate deployments. So, create and persist it
(requires a new trans).
BundleResourceDeployment resourceDeployment =
bundleManager.createBundleResourceDeployment(subject, deployment
- .getId(), platformId);
+ .getId(), bundleTargetResourceId);
- if (ResourceCategory.PLATFORM.equals(platform.getResourceType().getCategory()))
{
+ if (null != bundleTarget.getResourceType().getResourceTypeBundleConfiguration())
{
// Ask the agent to schedule the request. The agent should add history as
needed.
try {
@@ -1097,7 +1096,7 @@ public class BundleManagerBean implements BundleManagerLocal,
BundleManagerRemot
// fail the unlaunched resource deployment
BundleResourceDeploymentHistory failureHistory = new
BundleResourceDeploymentHistory(subject.getName(),
this.AUDIT_ACTION_DEPLOYMENT, deployment.getName(), null,
- BundleResourceDeploymentHistory.Status.FAILURE, "Failed to
schedule, agent on [" + platform
+ BundleResourceDeploymentHistory.Status.FAILURE, "Failed to
schedule, agent on [" + bundleTarget
+ "] may be down: " + t, null);
bundleManager.addBundleResourceDeploymentHistory(subject,
resourceDeployment.getId(), failureHistory);
bundleManager.setBundleResourceDeploymentStatus(subject,
resourceDeployment.getId(),
@@ -1109,7 +1108,8 @@ public class BundleManagerBean implements BundleManagerLocal,
BundleManagerRemot
BundleDeploymentStatus.FAILURE);
BundleResourceDeploymentHistory history = new
BundleResourceDeploymentHistory(subject.getName(),
AUDIT_ACTION_DEPLOYMENT, deployment.getName(), null,
BundleResourceDeploymentHistory.Status.FAILURE,
- "Target resource is not a platform [id=" + platform.getId() +
"]. Fix target group for destination ["
+ "Target resource is not of a type that can have bundles deployed to
it [resource="
+ + bundleTarget.getName() + "; id=" + bundleTarget.getId() +
"]. Fix target group for destination ["
+ deployment.getDestination().getName() + "]", null);
bundleManager.addBundleResourceDeploymentHistory(subject,
resourceDeployment.getId(), history);
}
@@ -1362,7 +1362,7 @@ public class BundleManagerBean implements BundleManagerLocal,
BundleManagerRemot
// TODO: MANAGE_INVENTORY was too restrictive as a bundle manager could
not then
// see his resource deployments. Until we can handle granular
authorization checks on
// optionally fetched resource member data, allow a bundle manager to
see
- // resouce deployments to any platform.
+ // resource deployments to any resource.
if (!authorizationManager.hasGlobalPermission(subject,
Permission.MANAGE_BUNDLE)) {
throw new PermissionException("Subject [" +
subject.getName()
+ "] requires InventoryManager or BundleManager permission
for requested query criteria.");
diff --git
a/modules/plugins/ant-bundle/src/main/java/org/rhq/plugins/ant/AntBundlePluginComponent.java
b/modules/plugins/ant-bundle/src/main/java/org/rhq/plugins/ant/AntBundlePluginComponent.java
index 201d212..31e01ef 100644
---
a/modules/plugins/ant-bundle/src/main/java/org/rhq/plugins/ant/AntBundlePluginComponent.java
+++
b/modules/plugins/ant-bundle/src/main/java/org/rhq/plugins/ant/AntBundlePluginComponent.java
@@ -130,8 +130,7 @@ public class AntBundlePluginComponent implements ResourceComponent,
BundleFacet
// Parse and execute the Ant script.
executeDeploymentPhase(recipeFile, antProps, buildListeners,
DeploymentPhase.STOP);
- String deployDirString =
bundleDeployment.getDestination().getDeployDir();
- File deployDir = new File(deployDirString);
+ File deployDir = request.getAbsoluteDestinationDirectory();
DeploymentsMetadata deployMetadata = new DeploymentsMetadata(deployDir);
DeploymentPhase installPhase = (deployMetadata.isManaged()) ?
DeploymentPhase.UPGRADE
: DeploymentPhase.INSTALL;
@@ -175,8 +174,7 @@ public class AntBundlePluginComponent implements ResourceComponent,
BundleFacet
BundlePurgeResult result = new BundlePurgeResult();
try {
BundleResourceDeployment deploymentToPurge =
request.getLiveResourceDeployment();
- BundleDeployment bundleDeployment = deploymentToPurge.getBundleDeployment();
- File deployDir = new File(bundleDeployment.getDestination().getDeployDir());
+ File deployDir = request.getAbsoluteDestinationDirectory();
String deployDirAbsolutePath = deployDir.getAbsolutePath();
BundleManagerProvider bundleManagerProvider =
request.getBundleManagerProvider();
@@ -312,14 +310,11 @@ public class AntBundlePluginComponent implements ResourceComponent,
BundleFacet
BundleResourceDeployment resourceDeployment = request.getResourceDeployment();
BundleDeployment bundleDeployment = resourceDeployment.getBundleDeployment();
- String deployDir = bundleDeployment.getDestination().getDeployDir();
- if (deployDir == null) {
- throw new IllegalStateException("Bundle deployment does not specify
install dir: " + bundleDeployment);
- }
- antProps.setProperty(DeployPropertyNames.DEPLOY_DIR, deployDir);
-
int deploymentId = bundleDeployment.getId();
+ String deployDir = request.getAbsoluteDestinationDirectory().getAbsolutePath();
+
antProps.setProperty(DeployPropertyNames.DEPLOY_ID,
Integer.toString(deploymentId));
+ antProps.setProperty(DeployPropertyNames.DEPLOY_DIR, deployDir);
antProps.setProperty(DeployPropertyNames.DEPLOY_NAME,
bundleDeployment.getName());
antProps.setProperty(DeployPropertyNames.DEPLOY_REVERT,
String.valueOf(request.isRevert()));
antProps.setProperty(DeployPropertyNames.DEPLOY_CLEAN,
String.valueOf(request.isCleanDeployment()));
diff --git
a/modules/plugins/filetemplate-bundle/src/main/java/org/rhq/plugins/filetemplate/FileTemplateBundlePluginServerComponent.java
b/modules/plugins/filetemplate-bundle/src/main/java/org/rhq/plugins/filetemplate/FileTemplateBundlePluginServerComponent.java
index 940a01e..2cf5193 100644
---
a/modules/plugins/filetemplate-bundle/src/main/java/org/rhq/plugins/filetemplate/FileTemplateBundlePluginServerComponent.java
+++
b/modules/plugins/filetemplate-bundle/src/main/java/org/rhq/plugins/filetemplate/FileTemplateBundlePluginServerComponent.java
@@ -89,7 +89,7 @@ public class FileTemplateBundlePluginServerComponent implements
ResourceComponen
// before processing the recipe, wipe the dest dir if we need to perform a
clean deployment
if (request.isCleanDeployment()) {
- File deployDir = new
File(bundleDeployment.getDestination().getDeployDir());
+ File deployDir = request.getAbsoluteDestinationDirectory();
if (deployDir.exists()) {
bundleManagerProvider.auditDeployment(resourceDeployment,
"Cleaning Deployment", deployDir
.getAbsolutePath(), null, null, "The existing deployment
found at ["
@@ -109,7 +109,8 @@ public class FileTemplateBundlePluginServerComponent implements
ResourceComponen
bundleDeployment.getName(), null, null, "setting replacement
variable values using ["
+ bundleDeployment.getConfiguration().toString(true) + "]",
null);
recipeContext.setReplacementVariableValues(bundleDeployment.getConfiguration());
- recipeContext.addReplacementVariableValue(DEPLOY_DIR,
bundleDeployment.getDestination().getDeployDir());
+ recipeContext.addReplacementVariableValue(DEPLOY_DIR,
request.getAbsoluteDestinationDirectory()
+ .getAbsolutePath());
recipeContext.addReplacementVariableValue(DEPLOY_ID,
Integer.toString(bundleDeployment.getId()));
recipeContext.addReplacementVariableValue(DEPLOY_NAME,
bundleDeployment.getName());
@@ -130,8 +131,7 @@ public class FileTemplateBundlePluginServerComponent implements
ResourceComponen
BundlePurgeResult result = new BundlePurgeResult();
try {
BundleResourceDeployment deploymentToPurge =
request.getLiveResourceDeployment();
- BundleDeployment bundleDeployment = deploymentToPurge.getBundleDeployment();
- File deployDir = new File(bundleDeployment.getDestination().getDeployDir());
+ File deployDir = request.getAbsoluteDestinationDirectory();
String deployDirAbsolutePath = deployDir.getAbsolutePath();
BundleManagerProvider bundleManagerProvider =
request.getBundleManagerProvider();
commit eb1b80d836a0f0259d8462fb71181dbf3298ce94
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Jun 10 14:57:10 2011 -0400
BZ 644328 - start fixing up the server side API. adding dest base dir parameter to
API.
diff --git
a/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/MetadataManagerTest.java
b/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/MetadataManagerTest.java
index 488d673..052d3e3 100644
---
a/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/MetadataManagerTest.java
+++
b/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/MetadataManagerTest.java
@@ -262,7 +262,7 @@ public class MetadataManagerTest {
ResourceTypeBundleConfiguration bundleTargetConfig =
serverType.getResourceTypeBundleConfiguration();
assert bundleTargetConfig != null;
Set<ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory> set =
bundleTargetConfig
- .getBundleDestinationBaseDirectory();
+ .getBundleDestinationBaseDirectories();
assert set.size() == 2;
for (BundleDestinationBaseDirectory bdbd : set) {
if (bdbd.getName().equals("basedir1")) {
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDestination.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDestination.java
index 7603d78..c7a8a14 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDestination.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDestination.java
@@ -109,10 +109,12 @@ public class BundleDestination implements Serializable {
// for JPA use
}
- public BundleDestination(Bundle bundle, String name, ResourceGroup group, String
deployDir) {
+ public BundleDestination(Bundle bundle, String name, ResourceGroup group, String
destinationBaseDirectoryName,
+ String deployDir) {
this.bundle = bundle;
this.name = name;
this.group = group;
+ this.destinationBaseDirectoryName = destinationBaseDirectoryName;
this.deployDir = deployDir;
}
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/ResourceTypeBundleConfiguration.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/ResourceTypeBundleConfiguration.java
index dba31e7..4ab5755 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/ResourceTypeBundleConfiguration.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/ResourceTypeBundleConfiguration.java
@@ -81,7 +81,7 @@ public class ResourceTypeBundleConfiguration implements Serializable {
*
* @return the set of destination base directories that can be targets for bundle
deployments
*/
- public Set<BundleDestinationBaseDirectory> getBundleDestinationBaseDirectory()
{
+ public Set<BundleDestinationBaseDirectory>
getBundleDestinationBaseDirectories() {
if (this.bundleConfiguration == null) {
return null;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
index 95f01fd..cdba5cb 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
@@ -169,7 +169,7 @@ public class GetDestinationStep extends AbstractWizardStep {
String[] menuItems = null;
if (result != null) {
Set<BundleDestinationBaseDirectory>
baseDirs;
- baseDirs =
result.getBundleDestinationBaseDirectory();
+ baseDirs =
result.getBundleDestinationBaseDirectories();
if (baseDirs != null && baseDirs.size()
> 0) {
menuItems = new String[baseDirs.size()];
int i = 0;
@@ -247,7 +247,7 @@ public class GetDestinationStep extends AbstractWizardStep {
int selectedGroup = (Integer) this.valForm.getValue("group");
bundleServer.createBundleDestination(wizard.getBundleId(), dest.getName(),
dest.getDescription(), dest
- .getDeployDir(), selectedGroup, //
+ .getDestinationBaseDirectoryName(), dest.getDeployDir(), selectedGroup, //
new AsyncCallback<BundleDestination>() {
public void onSuccess(BundleDestination result) {
wizard.setDestination(result);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java
index ed820ad..3c41a95 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java
@@ -55,8 +55,8 @@ public interface BundleGWTService extends RemoteService {
Configuration configuration, boolean enforcePolicy, int enforcementInterval,
boolean pinToBundle)
throws RuntimeException;
- BundleDestination createBundleDestination(int bundleId, String name, String
description, String deployDir,
- int groupId) throws RuntimeException;
+ BundleDestination createBundleDestination(int bundleId, String name, String
description, String destBaseDirName,
+ String deployDir, int groupId) throws RuntimeException;
void deleteBundles(int[] bundleIds) throws RuntimeException;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java
index 883f0fb..9d53edb 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java
@@ -95,12 +95,12 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
@Override
- public BundleDestination createBundleDestination(int bundleId, String name, String
description, String deployDir,
- int groupId) throws RuntimeException {
+ public BundleDestination createBundleDestination(int bundleId, String name, String
description,
+ String destBaseDirName, String deployDir, int groupId) throws RuntimeException {
try {
BundleDestination result =
bundleManager.createBundleDestination(getSessionSubject(), bundleId, name,
- description, deployDir, groupId);
+ description, destBaseDirName, deployDir, groupId);
return SerialUtility.prepare(result, "createBundleDestination");
} catch (Throwable t) {
throw getExceptionToThrowToClient(t);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index 774cd88..e7f80c6 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -303,25 +303,25 @@ public class BundleManagerBean implements BundleManagerLocal,
BundleManagerRemot
@Override
@RequiredPermission(Permission.MANAGE_BUNDLE)
public BundleDestination createBundleDestination(Subject subject, int bundleId,
String name, String description,
- String deployDir, Integer groupId) throws Exception {
+ String destBaseDirName, String deployDir, Integer groupId) throws Exception {
Bundle bundle = entityManager.find(Bundle.class, bundleId);
if (null == bundle) {
throw new IllegalArgumentException("Invalid bundleId [" + bundleId
+ "]");
}
- // validate that the group exists and is a platform group
+ // validate that the group exists and is a compatible group that can support
bundle deployments
ResourceGroupCriteria c = new ResourceGroupCriteria();
c.addFilterId(groupId);
- c.addFilterExplicitResourceCategory(ResourceCategory.PLATFORM);
+ c.addFilterBundleTargetableOnly(true);
List<ResourceGroup> groups =
resourceGroupManager.findResourceGroupsByCriteria(subject, c);
if (null == groups || groups.isEmpty()) {
throw new IllegalArgumentException("Invalid groupId [" + groupId
- + "]. Must exist and contain only platform members.");
+ + "]. It must be an existing compatible group whose members must be
able to support bundle deployments");
}
ResourceGroup group = entityManager.find(ResourceGroup.class,
groups.get(0).getId());
- BundleDestination dest = new BundleDestination(bundle, name, group, deployDir);
+ BundleDestination dest = new BundleDestination(bundle, name, group,
destBaseDirName, deployDir);
dest.setDescription(description);
entityManager.persist(dest);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
index 6bfa7e4..273f2c2 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
@@ -158,10 +158,16 @@ public interface BundleManagerRemote {
@WebParam(name = "configuration") Configuration configuration) throws
Exception;
/**
+ * Creates a bundle destination that describes a target for the bundle deployments.
+ *
* @param subject user must have MANAGE_INVENTORY permission
* @param BundleId the Bundle to be deployed to this Destination
* @param name a name for this destination. not null or empty
* @param description an optional longer description describing this destination
+ * @param destBaseDirName The name of the base directory location where the bundle
will be deployed.
+ * <code>deployDir</code> is relative to the
directory that this name refers to.
+ * This name isn't the directory itself, it refers to the
named location as
+ * defined in the agent plugin's descriptor for the
resource's type
* @param deployDir the root dir for deployments to this destination
* @param groupIf the target platforms for deployments to this destination
* @return the persisted destination
@@ -172,6 +178,7 @@ public interface BundleManagerRemote {
@WebParam(name = "bundleId") int bundleId, //
@WebParam(name = "name") String name, //
@WebParam(name = "description") String description, //
+ @WebParam(name = "destBaseDirName") String destBaseDirName, //
@WebParam(name = "deployDir") String deployDir, //
@WebParam(name = "groupId") Integer groupId) throws Exception;
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
index fd3bb91..e485abc 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
@@ -304,8 +304,9 @@ public class WebservicesManagerBean implements WebservicesRemote {
}
public BundleDestination createBundleDestination(Subject subject, int bundleId,
String name, String description,
- String deployDir, Integer groupId) throws Exception {
- return bundleManager.createBundleDestination(subject, bundleId, name,
description, deployDir, groupId);
+ String destBaseDirName, String deployDir, Integer groupId) throws Exception {
+ return bundleManager.createBundleDestination(subject, bundleId, name,
description, destBaseDirName, deployDir,
+ groupId);
}
public BundleVersion createBundleVersionViaRecipe(Subject subject, String recipe)
throws Exception {
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
index 624a815..cffcadd 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java
@@ -53,6 +53,8 @@ import org.rhq.core.domain.bundle.BundleResourceDeployment;
import org.rhq.core.domain.bundle.BundleResourceDeploymentHistory;
import org.rhq.core.domain.bundle.BundleType;
import org.rhq.core.domain.bundle.BundleVersion;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
+import
org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory;
import org.rhq.core.domain.bundle.composite.BundleWithLatestVersionComposite;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
@@ -99,6 +101,9 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
private static final boolean TESTS_ENABLED = true;
private static final String TEST_PREFIX = "bundletest";
+ private static final String TEST_BUNDLE_DESTBASEDIR_PROP = TEST_PREFIX +
".destBaseDirProp";
+ private static final String TEST_BUNDLE_DESTBASEDIR_PROP_VALUE = TEST_PREFIX +
"/destBaseDir";
+ private static final String TEST_DESTBASEDIR_NAME = TEST_PREFIX +
".destBaseDirName";
private BundleManagerLocal bundleManager;
private ResourceManagerLocal resourceManager;
@@ -954,29 +959,9 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
assertTrue(bvOut.getBundleDeployments().isEmpty());
}
- @Test(enabled = DISABLED)
- public void testInsertAndRetrieve() throws Exception {
- assertNotNull(null);
- }
-
- @Test(enabled = DISABLED)
- public void testFindByPlatformId() throws Exception {
- assertNotNull(null);
- }
-
- @Test(enabled = DISABLED)
- public void testFindByBundleId() throws Exception {
- assertNotNull(null);
- }
-
- @Test(enabled = DISABLED)
- public void testFindByBundleResourceDeploymentId() throws Exception {
- assertNotNull(null);
- }
-
private BundleType createBundleType(String name) throws Exception {
final String fullName = TEST_PREFIX + "-type-" + name;
- ResourceType rt = createResourceType(name);
+ ResourceType rt = createResourceTypeForBundleType(name);
BundleType bt = bundleManager.createBundleType(overlord, fullName, rt.getId());
assert bt.getId() > 0;
@@ -1013,10 +998,11 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase
{
throws Exception {
final String fullName = TEST_PREFIX + "-bundledestination-" + name;
BundleDestination bd = bundleManager.createBundleDestination(overlord,
bundle.getId(), fullName, fullName,
- deployDir, group.getId());
+ TEST_DESTBASEDIR_NAME, deployDir, group.getId());
assert bd.getId() > 0;
assert bd.getName().endsWith(fullName);
+ assert bd.getDestinationBaseDirectoryName().equals(TEST_DESTBASEDIR_NAME);
return bd;
}
@@ -1031,7 +1017,7 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
return bd;
}
- private ResourceType createResourceType(String name) throws Exception {
+ private ResourceType createResourceTypeForBundleType(String name) throws Exception {
final String fullName = TEST_PREFIX + "-resourcetype-" + name;
ResourceType rt = new ResourceType(fullName, "BundleManagerBeanTest",
ResourceCategory.PLATFORM, null);
@@ -1044,7 +1030,7 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase {
return rt;
}
- // lifted from ResourceManagerBeanTest
+ // lifted from ResourceManagerBeanTest, with the addition of adding bundle config to
the type
private ResourceGroup createTestResourceGroup() throws Exception {
getTransactionManager().begin();
EntityManager em = getEntityManager();
@@ -1057,20 +1043,51 @@ public class BundleManagerBeanTest extends UpdateSubsytemTestBase
{
// with the bundle resource type
ResourceType resourceType = new ResourceType(TEST_PREFIX +
"-platform-" + System.currentTimeMillis(),
"test", ResourceCategory.PLATFORM, null);
+
+ // we need to make this test type bundle targetable
+ ConfigurationDefinition pcDef = new ConfigurationDefinition(TEST_PREFIX +
"-testdef", "bundle test");
+ PropertyDefinitionSimple propDef = new
PropertyDefinitionSimple(TEST_BUNDLE_DESTBASEDIR_PROP, "", true,
+ PropertySimpleType.STRING);
+ propDef.setDisplayName(TEST_BUNDLE_DESTBASEDIR_PROP);
+ pcDef.put(propDef);
+ em.persist(pcDef);
+
+ ResourceTypeBundleConfiguration rtbc = new
ResourceTypeBundleConfiguration(new Configuration());
+ rtbc.addBundleDestinationBaseDirectory(TEST_DESTBASEDIR_NAME,
+
ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory.Context.pluginConfiguration.name(),
+ TEST_BUNDLE_DESTBASEDIR_PROP);
+ resourceType.setResourceTypeBundleConfiguration(rtbc);
+ resourceType.setPluginConfigurationDefinition(pcDef);
+
em.persist(resourceType);
+ // make sure the bundle config is ok
+ rtbc = resourceType.getResourceTypeBundleConfiguration();
+ assert rtbc != null;
+ assert rtbc.getBundleDestinationBaseDirectories().size() == 1;
+ BundleDestinationBaseDirectory bdbd =
rtbc.getBundleDestinationBaseDirectories().iterator().next();
+ assert bdbd.getName().equals(TEST_DESTBASEDIR_NAME);
+ assert bdbd.getValueContext() ==
ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory.Context.pluginConfiguration;
+ assert bdbd.getValueName().equals(TEST_BUNDLE_DESTBASEDIR_PROP);
+
Agent agent = new Agent(TEST_PREFIX + "-testagent",
"testaddress", 1, "", "testtoken");
em.persist(agent);
em.flush();
+ Configuration rc = new Configuration();
+ rc.put(new PropertySimple(TEST_BUNDLE_DESTBASEDIR_PROP,
TEST_BUNDLE_DESTBASEDIR_PROP_VALUE));
+ em.persist(rc);
+
resource = new Resource("reskey" + System.currentTimeMillis(),
TEST_PREFIX + "-resname", resourceType);
resource.setUuid("" + System.currentTimeMillis());
resource.setInventoryStatus(InventoryStatus.COMMITTED);
resource.setAgent(agent);
+ resource.setResourceConfiguration(rc);
em.persist(resource);
resourceGroup = new ResourceGroup(TEST_PREFIX + "-group-" +
System.currentTimeMillis());
resourceGroup.addExplicitResource(resource);
+ resourceGroup.setResourceType(resourceType); // need to tell the group the
type it is
em.persist(resourceGroup);
getTransactionManager().commit();
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdateResourceTypeSubsystemTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdateResourceTypeSubsystemTest.java
index 246ca59..5ad9cdb 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdateResourceTypeSubsystemTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdateResourceTypeSubsystemTest.java
@@ -69,7 +69,7 @@ public class UpdateResourceTypeSubsystemTest extends
UpdateSubsytemTestBase {
ResourceTypeBundleConfiguration bundleConfig1 =
server1.getResourceTypeBundleConfiguration();
assert bundleConfig1 != null : "server should have been a bundle
target";
- Set<BundleDestinationBaseDirectory> baseDirs1 =
bundleConfig1.getBundleDestinationBaseDirectory();
+ Set<BundleDestinationBaseDirectory> baseDirs1 =
bundleConfig1.getBundleDestinationBaseDirectories();
assert baseDirs1.size() == 2 : "should have been 2 bundle dest base
dirs: " + baseDirs1;
for (BundleDestinationBaseDirectory baseDir : baseDirs1) {
@@ -101,7 +101,7 @@ public class UpdateResourceTypeSubsystemTest extends
UpdateSubsytemTestBase {
ResourceTypeBundleConfiguration bundleConfig2 =
server2.getResourceTypeBundleConfiguration();
assert bundleConfig2 != null : "server should have been a bundle
target";
- Set<BundleDestinationBaseDirectory> baseDirs2 =
bundleConfig2.getBundleDestinationBaseDirectory();
+ Set<BundleDestinationBaseDirectory> baseDirs2 =
bundleConfig2.getBundleDestinationBaseDirectories();
assert baseDirs2.size() == 1 : "should have been 1 bundle dest base dir:
" + baseDirs2;
BundleDestinationBaseDirectory baseDir = baseDirs2.iterator().next();
diff --git
a/modules/plugins/ant-bundle/src/test/java/org/rhq/plugins/ant/AntBundlePluginComponentTest.java
b/modules/plugins/ant-bundle/src/test/java/org/rhq/plugins/ant/AntBundlePluginComponentTest.java
index 9f2c846..18d672f 100644
---
a/modules/plugins/ant-bundle/src/test/java/org/rhq/plugins/ant/AntBundlePluginComponentTest.java
+++
b/modules/plugins/ant-bundle/src/test/java/org/rhq/plugins/ant/AntBundlePluginComponentTest.java
@@ -66,6 +66,8 @@ import org.rhq.core.util.updater.DeploymentsMetadata;
@Test
public class AntBundlePluginComponentTest {
+ private static final String DEST_BASE_DIR_NAME = "Root File System"; //
just mimics the real platform plugin types' name
+
private AntBundlePluginComponent plugin;
private File tmpDir;
private File bundleFilesDir;
@@ -126,7 +128,7 @@ public class AntBundlePluginComponentTest {
BundleVersion bundleVersion = new BundleVersion("test-bundle-two",
"2.5", bundle,
getRecipeFromFile("test-bundle-two.xml"));
BundleDestination destination = new BundleDestination(bundle,
"testSimpleBundle2Dest", new ResourceGroup(
- "testSimpleBundle2Group"), this.destDir.getAbsolutePath());
+ "testSimpleBundle2Group"), DEST_BASE_DIR_NAME,
this.destDir.getAbsolutePath());
Configuration config = new Configuration();
String customPropName = "custom.prop";
@@ -241,7 +243,7 @@ public class AntBundlePluginComponentTest {
BundleVersion bundleVersion = new BundleVersion("test-bundle-two",
"2.5", bundle,
getRecipeFromFile("test-bundle-two.xml"));
BundleDestination destination = new BundleDestination(bundle,
"testSimpleBundle2Dest", new ResourceGroup(
- "testSimpleBundle2Group"), this.destDir.getAbsolutePath());
+ "testSimpleBundle2Group"), DEST_BASE_DIR_NAME,
this.destDir.getAbsolutePath());
Configuration config = new Configuration();
String customPropName = "custom.prop";
@@ -323,7 +325,7 @@ public class AntBundlePluginComponentTest {
BundleVersion bundleVersion = new BundleVersion("testSimpleBundle",
"1.0", bundle,
getRecipeFromFile("test-bundle.xml"));
BundleDestination destination = new BundleDestination(bundle,
"testSimpleBundle", new ResourceGroup(
- "testSimpleBundle"), this.destDir.getAbsolutePath());
+ "testSimpleBundle"), DEST_BASE_DIR_NAME,
this.destDir.getAbsolutePath());
Configuration config = new Configuration();
String realPropValue = "ABC123";
@@ -389,7 +391,7 @@ public class AntBundlePluginComponentTest {
BundleVersion bundleVersion = new
BundleVersion("testNoManageRootDirBundle", "1.0", bundle,
getRecipeFromFile("test-bundle-no-manage-root-dir.xml"));
BundleDestination destination = new BundleDestination(bundle,
"testNoManageRootDirBundle", new ResourceGroup(
- "testNoManageRootDirBundle"), this.destDir.getAbsolutePath());
+ "testNoManageRootDirBundle"), DEST_BASE_DIR_NAME,
this.destDir.getAbsolutePath());
Configuration config = new Configuration();
BundleDeployment deployment = new BundleDeployment();
@@ -508,7 +510,7 @@ public class AntBundlePluginComponentTest {
BundleVersion bundleVersion = new BundleVersion("test-bundle-two",
"3.0", bundle,
getRecipeFromFile("test-bundle-three.xml"));
BundleDestination destination = new BundleDestination(bundle,
"testSimpleBundle2Dest", new ResourceGroup(
- "testSimpleBundle2Group"), this.destDir.getAbsolutePath());
+ "testSimpleBundle2Group"), DEST_BASE_DIR_NAME,
this.destDir.getAbsolutePath());
Configuration config = new Configuration();
String customPropName = "custom.prop";
diff --git
a/modules/plugins/filetemplate-bundle/src/test/java/org/rhq/plugins/filetemplate/ProcessingRecipeContextTest.java
b/modules/plugins/filetemplate-bundle/src/test/java/org/rhq/plugins/filetemplate/ProcessingRecipeContextTest.java
index fd71508..f05eda7 100644
---
a/modules/plugins/filetemplate-bundle/src/test/java/org/rhq/plugins/filetemplate/ProcessingRecipeContextTest.java
+++
b/modules/plugins/filetemplate-bundle/src/test/java/org/rhq/plugins/filetemplate/ProcessingRecipeContextTest.java
@@ -191,9 +191,10 @@ public class ProcessingRecipeContextTest {
Bundle bundle = new Bundle("name", bundleType, null, null);
BundleVersion bundleVersion = new BundleVersion("bname",
"bversion", bundle, "");
String name = "name";
+ String destBaseDirName = "destBaseDirName";
String installDir = "installDir";
BundleDestination bundleDestination = new BundleDestination(bundle,
"destName", new ResourceGroup("groupName"),
- installDir);
+ destBaseDirName, installDir);
BundleDeployment bundleDeployment = new BundleDeployment(bundleVersion,
bundleDestination, name);
BundleResourceDeployment deployment = new
BundleResourceDeployment(bundleDeployment, resource);
commit 6586722934e103511568a54e919887476cdf9704
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Jun 10 13:53:19 2011 -0400
log plugin descriptor validation errors at ERROR or WARN level, rather than DEBUG;
include line # and column # in validation errors
diff --git
a/modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/ServerPluginDescriptorUtil.java
b/modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/ServerPluginDescriptorUtil.java
index 00ba663..93a42a2 100644
---
a/modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/ServerPluginDescriptorUtil.java
+++
b/modules/enterprise/server/xml-schemas/src/main/java/org/rhq/enterprise/server/xmlschema/ServerPluginDescriptorUtil.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2011 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -39,6 +39,7 @@ import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.ValidationEvent;
+import javax.xml.bind.ValidationEventLocator;
import javax.xml.bind.util.ValidationEventCollector;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
@@ -55,6 +56,7 @@ import
org.rhq.enterprise.server.xmlschema.generated.serverplugin.ServerPluginDe
* Utilities for server-side plugin descriptors.
*
* @author John Mazzitelli
+ * @author Ian Springer
*/
public abstract class ServerPluginDescriptorUtil {
private static final Log LOG = LogFactory.getLog(ServerPluginDescriptorUtil.class);
@@ -235,12 +237,9 @@ public abstract class ServerPluginDescriptorUtil {
pluginDescriptor = ((JAXBElement<? extends
ServerPluginDescriptorType>) jaxbElement).getValue();
} finally {
if (unmarshaller != null) {
- for (ValidationEvent ev : ((ValidationEventCollector)
unmarshaller.getEventHandler())
- .getEvents()) {
- logger.debug("Plugin [" + pluginJarFileUrl +
"] descriptor event {Severity: "
- + ev.getSeverity() + ", Message: " +
ev.getMessage() + ", Exception: "
- + ev.getLinkedException() + "}");
- }
+ ValidationEventCollector validationEventCollector =
+
(ValidationEventCollector)unmarshaller.getEventHandler();
+ logValidationEvents(pluginJarFileUrl, validationEventCollector);
}
}
}
@@ -319,6 +318,48 @@ public abstract class ServerPluginDescriptorUtil {
}
}
+ private static void logValidationEvents(URL pluginJarFileUrl,
ValidationEventCollector validationEventCollector) {
+ for (ValidationEvent event : validationEventCollector.getEvents()) {
+ // First build the message to be logged. The message will look something like
this:
+ //
+ // Validation fatal error while parsing
[jopr-jboss-as-plugin-4.1.0-SNAPSHOT.jar:META-INF/rhq-plugin.xml]
+ // at line 221, column 94: cvc-minInclusive-valid: Value '20000' is
not facet-valid with respect to
+ // minInclusive '30000' for type
'#AnonType_defaultIntervalmetric'.
+ //
+ StringBuilder message = new StringBuilder();
+ String severity = null;
+ switch(event.getSeverity()) {
+ case ValidationEvent.WARNING:
+ severity = "warning";
+ break;
+ case ValidationEvent.ERROR:
+ severity = "error";
+ break;
+ case ValidationEvent.FATAL_ERROR:
+ severity = "fatal error";
+ break;
+ }
+ message.append("Validation ").append(severity);
+ File pluginJarFile = new File(pluginJarFileUrl.getPath());
+ message.append(" while parsing
[").append(pluginJarFile.getName()).append(":").append(PLUGIN_DESCRIPTOR_PATH).append("]");
+ ValidationEventLocator locator = event.getLocator();
+ message.append(" at line ").append(locator.getLineNumber());
+ message.append(", column ").append(locator.getColumnNumber());
+ message.append(": ").append(event.getMessage());
+
+ // Now write the message to the log at an appropriate level.
+ switch(event.getSeverity()) {
+ case ValidationEvent.WARNING:
+ case ValidationEvent.ERROR:
+ LOG.warn(message);
+ break;
+ case ValidationEvent.FATAL_ERROR:
+ LOG.error(message);
+ break;
+ }
+ }
+ }
+
/**
* Obtains the manifest of the plugin file represented by the given deployment info.
* Use this method rather than calling deploymentInfo.getManifest()
commit dbe68b1790b4bdacd86b23dc6acdd86562fd61fb
Author: John Sanda <jsanda(a)redhat.com>
Date: Fri Jun 10 12:51:13 2011 -0400
removing file that was accidentally included in previous commit
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.xml.orig
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.xml.orig
deleted file mode 100644
index 6f40805..0000000
---
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.xml.orig
+++ /dev/null
@@ -1,101 +0,0 @@
-<dataset>
- <rhq_agent id="1"
- name="TestAgent-dbbt"
- address="0.0.0.0"
- port="16163"
- remote_endpoint="http://here"
- agenttoken="tok"
- backfilled="false"
- ctime="123456"
- mtime="123456"/>
-
- <rhq_config_def/>
- <rhq_config_prop_def/>
- <rhq_conf_prop_def_enum/>
- <rhq_config_prop_constr/>
-
- <rhq_resource_type id="1"
- name="test platform"
- category="PLATFORM"
- creation_data_type="CONFIGURATION"
- create_delete_policy="BOTH"
- supports_manual_add="true"
- singleton="false"
- plugin="test"
- deleted="false"/>
- <rhq_resource_type id="2"
- name="test server"
- category="SERVER"
- creation_data_type="CONFIGURATION"
- create_delete_policy="BOTH"
- supports_manual_add="true"
- singleton="false"
- plugin="test"
- deleted="false"/>
- <rhq_resource_type id="3"
- name="test service 1"
- category="SERVICE"
- creation_data_type="CONFIGURATION"
- create_delete_policy="BOTH"
- supports_manual_add="true"
- singleton="false"
- plugin="test"
- deleted="false"/>
- <rhq_resource_type id="4"
- name="test service 2"
- category="SERVICE"
- creation_data_type="CONFIGURATION"
- create_delete_policy="BOTH"
- supports_manual_add="true"
- singleton="false"
- plugin="test"
- deleted="false"/>
-
- <rhq_resource_type_parents resource_type_id="2"
- parent_resource_type_id="1"/>
- <rhq_resource_type_parents resource_type_id="3"
- parent_resource_type_id="2"/>
- <rhq_resource_type_parents resource_type_id="4"
- parent_resource_type_id="2"/>
-
- <rhq_process_scan/>
- <rhq_event_def/>
- <rhq_measurement_def/>
- <rhq_operation_def/>
- <rhq_package_type/>
- <rhq_bundle_type/>
- <rhq_config/>
- <rhq_config_property/>
- <rhq_config_template/>
- <rhq_resource/>
- <rhq_resource_subcat/>
- <rhq_resource_group/>
- <rhq_prd_ver/>
- <rhq_alert_definition/>
- <rhq_alert_condition/>
- <rhq_alert/>
- <rhq_alert_condition_log/>
- <rhq_alert_notif_log/>
- <rhq_availability/>
- <rhq_measurement_sched/>
-<<<<<<< HEAD
- <rhq_content_source/>
-=======
- <rhq_content_source_type/>
- <rhq_content_source/>
- <rhq_repo_content_src_map/>
->>>>>>> master
- <rhq_package/>
- <rhq_bundle/>
-
- <rhq_plugin id="1"
- deployment="AGENT"
- name="test"
- display_name="test"
- enabled="true"
- status="INSTALLED"
- path="/plugins/test.jar"
- md5="1234567"
- ctime="12345"
- mtime="123456"/>
-</dataset>
commit 13ae6ee73bec0ffb29568c0250c0bd267239258d
Author: John Sanda <jsanda(a)redhat.com>
Date: Fri Jun 10 12:38:17 2011 -0400
Fixing test failures that were due to tests not getting updated
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanUnitTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanUnitTest.java
index bbffef8..d51798d 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanUnitTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanUnitTest.java
@@ -31,6 +31,8 @@ import static org.testng.Assert.*;
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.util.exception.ThrowableUtil;
+import org.rhq.enterprise.server.auth.SubjectManagerLocal;
+import org.rhq.enterprise.server.resource.ResourceManagerLocal;
import org.rhq.test.JMockTest;
import org.rhq.test.jmock.PropertyMatcher;
import org.rhq.core.domain.auth.Subject;
@@ -61,9 +63,14 @@ public class ConfigurationManagerBeanUnitTest extends JMockTest {
static final boolean FROM_STRUCTURED = true;
static final boolean FROM_RAW = false;
+ static final Subject OVERLORD = new Subject("overlord", true, true);
ConfigurationManagerLocal configurationMgrLocal;
+ ResourceManagerLocal resourceMgr;
+
+ SubjectManagerLocal subjectMgr;
+
AgentManagerLocal agentMgr;
AuthorizationManagerLocal authorizationMgr;
@@ -87,6 +94,12 @@ public class ConfigurationManagerBeanUnitTest extends JMockTest {
entityMgr = context.mock(EntityManager.class);
setField(configurationMgr, "entityManager", entityMgr);
+
+ resourceMgr = context.mock(ResourceManagerLocal.class);
+ setField(configurationMgr, "resourceManager", resourceMgr);
+
+ subjectMgr = context.mock(SubjectManagerLocal.class);
+ setField(configurationMgr, "subjectManager", subjectMgr);
}
static void setField(Object src, String fieldName, Object value) {
@@ -126,6 +139,11 @@ public class ConfigurationManagerBeanUnitTest extends JMockTest {
expectedUpdate.getConfiguration(), expectedUpdate.getResource().getId());
context.checking(new Expectations() {{
+ allowing(subjectMgr).getOverlord(); will(returnValue(OVERLORD));
+
+ allowing(resourceMgr).getResource(OVERLORD, fixture.resourceId);
+ will(returnValue(fixture.resource));
+
oneOf(authorizationMgr).hasResourcePermission(fixture.subject,
CONFIGURE_WRITE, fixture.resourceId);
will(returnValue(true));
@@ -163,6 +181,11 @@ public class ConfigurationManagerBeanUnitTest extends JMockTest {
expectedUpdate.getConfiguration(), expectedUpdate.getResource().getId());
context.checking(new Expectations() {{
+ allowing(subjectMgr).getOverlord(); will(returnValue(OVERLORD));
+
+ allowing(resourceMgr).getResource(OVERLORD, fixture.resourceId);
+ will(returnValue(fixture.resource));
+
allowing(entityMgr).find(Resource.class, fixture.resourceId);
will(returnValue(fixture.resource));
oneOf(authorizationMgr).hasResourcePermission(fixture.subject,
CONFIGURE_WRITE, fixture.resourceId);
@@ -197,56 +220,6 @@ public class ConfigurationManagerBeanUnitTest extends JMockTest {
configurationMgr.updateResourceConfiguration(fixture.subject, fixture.resourceId,
fixture.configuration);
}
-// @Test
-// public void
updateResourceConfigShouldTranslateStructuredWhenStructredConfigHasEdits() throws
Exception {
-// final ResourceConfigUpdateFixture fixture =
newStructuredAndRawResourceConfigUpdateFixture();
-//
-// final Configuration translatedConfig = fixture.configuration.deepCopy();
-// translatedConfig.addRawConfiguration(new RawConfiguration());
-//
-// final ResourceConfigurationUpdate expectedUpdate = new
ResourceConfigurationUpdate(fixture.resource,
-// translatedConfig, fixture.subject.getName());
-// expectedUpdate.setId(-1);
-//
-// final AgentClient agentClient = context.mock(AgentClient.class);
-// final ConfigurationAgentService configAgentService =
context.mock(ConfigurationAgentService.class);
-//
-// final ConfigurationUpdateRequest expectedUpdateRequest = new
ConfigurationUpdateRequest(expectedUpdate.getId(),
-// expectedUpdate.getConfiguration(), expectedUpdate.getResource().getId());
-//
-// final Sequence configUdpate =
context.sequence("structured-config-update");
-//
-// context.checking(new Expectations() {{
-// allowing(entityMgr).find(Resource.class, fixture.resourceId);
will(returnValue(fixture.resource));
-//
-// allowing(authorizationMgr).canViewResource(fixture.subject,
fixture.resourceId); will(returnValue(true));
-//
-// oneOf(configAgentService).merge(fixture.configuration, fixture.resourceId,
FROM_STRUCTURED);
-// will(returnValue(translatedConfig)); inSequence(configUdpate);
-//
-//
oneOf(configurationMgrLocal).persistNewResourceConfigurationUpdateHistory(fixture.subject,
-// fixture.resourceId, translatedConfig, INPROGRESS,
fixture.subject.getName(),
-// fixture.isPartOfGroupUpdate);
-// will(returnValue(expectedUpdate));
-// inSequence(configUdpate);
-//
-// allowing(agentMgr).getAgentClient(expectedUpdate.getResource().getAgent());
will(returnValue(agentClient));
-//
-// allowing(agentClient).getConfigurationAgentService();
will(returnValue(configAgentService));
-//
-// oneOf(configAgentService).validate(fixture.configuration,
fixture.resourceId, FROM_STRUCTURED);
-// inSequence(configUdpate);
-//
-//
oneOf(configAgentService).updateResourceConfiguration(with(matchingUpdateRequest(expectedUpdateRequest)));
-// inSequence(configUdpate);
-// }});
-//
-// ResourceConfigurationUpdate actualUpdate =
configurationMgr.updateStructuredOrRawConfiguration(fixture.subject,
-// fixture.resourceId, fixture.configuration, FROM_STRUCTURED);
-//
-// assertSame(actualUpdate, expectedUpdate, "Expected to get back the
persisted configuration update");
-// }
-
@Test
public void updateResourceConfigShouldNotTranslateStructuredWhenRawNotSupported()
throws Exception {
final ResourceConfigUpdateFixture fixture =
newStructuredResourceConfigUpdateFixture();
@@ -364,6 +337,11 @@ public class ConfigurationManagerBeanUnitTest extends JMockTest {
expectedUpdate.setErrorMessage(ThrowableUtil.getStackAsString(exception));
context.checking(new Expectations() {{
+ allowing(subjectMgr).getOverlord(); will(returnValue(OVERLORD));
+
+ allowing(resourceMgr).getResource(OVERLORD, fixture.resourceId);
+ will(returnValue(fixture.resource));
+
allowing(entityMgr).find(Resource.class, fixture.resourceId);
will(returnValue(fixture.resource));
allowing(entityMgr).find(ResourceConfigurationUpdate.class,
expectedUpdate.getId());
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.xml.orig
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.xml.orig
new file mode 100644
index 0000000..6f40805
--- /dev/null
+++
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/discovery/DiscoveryBossBeanTest.xml.orig
@@ -0,0 +1,101 @@
+<dataset>
+ <rhq_agent id="1"
+ name="TestAgent-dbbt"
+ address="0.0.0.0"
+ port="16163"
+ remote_endpoint="http://here"
+ agenttoken="tok"
+ backfilled="false"
+ ctime="123456"
+ mtime="123456"/>
+
+ <rhq_config_def/>
+ <rhq_config_prop_def/>
+ <rhq_conf_prop_def_enum/>
+ <rhq_config_prop_constr/>
+
+ <rhq_resource_type id="1"
+ name="test platform"
+ category="PLATFORM"
+ creation_data_type="CONFIGURATION"
+ create_delete_policy="BOTH"
+ supports_manual_add="true"
+ singleton="false"
+ plugin="test"
+ deleted="false"/>
+ <rhq_resource_type id="2"
+ name="test server"
+ category="SERVER"
+ creation_data_type="CONFIGURATION"
+ create_delete_policy="BOTH"
+ supports_manual_add="true"
+ singleton="false"
+ plugin="test"
+ deleted="false"/>
+ <rhq_resource_type id="3"
+ name="test service 1"
+ category="SERVICE"
+ creation_data_type="CONFIGURATION"
+ create_delete_policy="BOTH"
+ supports_manual_add="true"
+ singleton="false"
+ plugin="test"
+ deleted="false"/>
+ <rhq_resource_type id="4"
+ name="test service 2"
+ category="SERVICE"
+ creation_data_type="CONFIGURATION"
+ create_delete_policy="BOTH"
+ supports_manual_add="true"
+ singleton="false"
+ plugin="test"
+ deleted="false"/>
+
+ <rhq_resource_type_parents resource_type_id="2"
+ parent_resource_type_id="1"/>
+ <rhq_resource_type_parents resource_type_id="3"
+ parent_resource_type_id="2"/>
+ <rhq_resource_type_parents resource_type_id="4"
+ parent_resource_type_id="2"/>
+
+ <rhq_process_scan/>
+ <rhq_event_def/>
+ <rhq_measurement_def/>
+ <rhq_operation_def/>
+ <rhq_package_type/>
+ <rhq_bundle_type/>
+ <rhq_config/>
+ <rhq_config_property/>
+ <rhq_config_template/>
+ <rhq_resource/>
+ <rhq_resource_subcat/>
+ <rhq_resource_group/>
+ <rhq_prd_ver/>
+ <rhq_alert_definition/>
+ <rhq_alert_condition/>
+ <rhq_alert/>
+ <rhq_alert_condition_log/>
+ <rhq_alert_notif_log/>
+ <rhq_availability/>
+ <rhq_measurement_sched/>
+<<<<<<< HEAD
+ <rhq_content_source/>
+=======
+ <rhq_content_source_type/>
+ <rhq_content_source/>
+ <rhq_repo_content_src_map/>
+>>>>>>> master
+ <rhq_package/>
+ <rhq_bundle/>
+
+ <rhq_plugin id="1"
+ deployment="AGENT"
+ name="test"
+ display_name="test"
+ enabled="true"
+ status="INSTALLED"
+ path="/plugins/test.jar"
+ md5="1234567"
+ ctime="12345"
+ mtime="123456"/>
+</dataset>
commit 28f91db14c2ffb367cd93f98b9e9ab2935103a2c
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Jun 10 12:23:26 2011 -0400
BZ 644328 - put the base location in the GUI deployment view
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
index 3542481..8ff20ff 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
@@ -177,6 +177,9 @@ public class BundleDeploymentView extends LocatableVLayout implements
Bookmarkab
destinationGroup.setLinkTitle(StringUtility.escapeHtml((deployment.getDestination().getGroup().getName())));
destinationGroup.setTarget("_self");
+ StaticTextItem destBaseDir = new StaticTextItem("destBaseDir",
MSG.view_bundle_dest_baseDirName());
+
destBaseDir.setValue(deployment.getDestination().getDestinationBaseDirectoryName());
+
StaticTextItem path = new StaticTextItem("path",
MSG.view_bundle_deployDir());
path.setValue(deployment.getDestination().getDeployDir());
@@ -201,8 +204,8 @@ public class BundleDeploymentView extends LocatableVLayout implements
Bookmarkab
});
}
- form.setFields(bundleName, deployed, actionItem, bundleVersionName, deployedBy,
destinationGroup, path,
- description, status);
+ form.setFields(bundleName, bundleVersionName, actionItem, deployed, deployedBy,
destinationGroup, destBaseDir,
+ description, path, status);
return form;
}
commit 73d16605e7fd7a3933d9c470351905e49fd703f4
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Jun 10 12:16:27 2011 -0400
more work on gui perf tests
diff --git a/etc/guiperftests/pom.xml b/etc/guiperftests/pom.xml
index ab81ed0..4ef1107 100644
--- a/etc/guiperftests/pom.xml
+++ b/etc/guiperftests/pom.xml
@@ -18,7 +18,7 @@
inventoried Resources is running on localhost:7080</description>
<properties>
- <!-- explictly specify a default encoding to avoid relying on the LANG env var
being set correctly -->
+ <!-- explicitly specify a default encoding to avoid relying on the LANG env var
being set correctly -->
<project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
</properties>
diff --git a/etc/guiperftests/src/test/java/org/rhq/guiperftest/GuiPerfTestCase.java
b/etc/guiperftests/src/test/java/org/rhq/guiperftest/GuiPerfTestCase.java
index 9116089..ef4d309 100644
--- a/etc/guiperftests/src/test/java/org/rhq/guiperftest/GuiPerfTestCase.java
+++ b/etc/guiperftests/src/test/java/org/rhq/guiperftest/GuiPerfTestCase.java
@@ -35,6 +35,17 @@ public class GuiPerfTestCase extends TestCase {
super(name);
}
+ public void testLoadResourceTree() {
+ Browser browser = GuiPerfTestSuite.getBrowser();
+
+ browser.link("Inventory").click();
+ browser.cell("Platforms").click();
+ browser.div("Linux Operating
System").under(browser.cell("Description")).doubleClick();
+ // check that tree has been drawn
+ assertTrue(browser.table("treeCellSelected").isVisible());
+ }
+
+/*
public void testCreateCompatibleGroup() throws InterruptedException {
Browser browser = GuiPerfTestSuite.getBrowser();
@@ -47,16 +58,24 @@ public class GuiPerfTestCase extends TestCase {
browser.textarea("description").setValue("bleh");
browser.cell("Next").click();
- browser.textbox("search").setValue("RHQ Agent");
- browser.textbox("search").click();
- browser.waitFor(500);
+ //browser.textbox("search").setValue("RHQ Agent");
+ //browser.textbox("search").click();
+
+ browser.cell("Choose a value").click();
+ browser.xy(browser.cell("RHQAgent Plugin"), 3, 3).hover();
+ browser.xy(browser.cell("treeMenuSelected[2]", 3, 3)).click();
+ //browser.xy(browser.cell("RHQ Agent"), 3,
3).near(browser.cell("RHQAgent Plugin")).click();
+
+ browser.waitFor(1000);
browser.div("RHQ Agent[1]").hover();
- browser.waitFor(300);
+ browser.waitFor(1000);
browser.div("RHQ Agent[1]").click();
browser.image("right_Over.png").click();
browser.cell("Finish").click();
}
+*/
+/*
public void testCreateRole() throws InterruptedException {
Browser browser = GuiPerfTestSuite.getBrowser();
@@ -71,6 +90,7 @@ public class GuiPerfTestCase extends TestCase {
browser.image("unchecked.png").near(browser.div("Manage
Security")).click();
browser.cell("Save").click();
}
+*/
public static Test suite() {
return new GuiPerfTestSuite(GuiPerfTestCase.class);
commit 11c98ceed96bf24e2397e04d946abb2655e0cfea
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Jun 10 12:15:43 2011 -0400
[BZ 712444] make sure fatal validation errors during parsing of an agent plugin
descriptor are logged (
https://bugzilla.redhat.com/show_bug.cgi?id=712444)
diff --git
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/descriptor/AgentPluginDescriptorUtil.java
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/descriptor/AgentPluginDescriptorUtil.java
index 8e41c8b..bdfdd84 100644
---
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/descriptor/AgentPluginDescriptorUtil.java
+++
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/descriptor/AgentPluginDescriptorUtil.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2011 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -38,6 +38,7 @@ import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.ValidationEvent;
+import javax.xml.bind.ValidationEventLocator;
import javax.xml.bind.util.ValidationEventCollector;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
@@ -62,6 +63,7 @@ import org.rhq.core.util.exception.WrappedRemotingException;
* Utilities for agent plugin descriptors.
*
* @author John Mazzitelli
+ * @author Ian Springer
*/
public abstract class AgentPluginDescriptorUtil {
private static final Log LOG = LogFactory.getLog(AgentPluginDescriptorUtil.class);
@@ -282,7 +284,7 @@ public abstract class AgentPluginDescriptorUtil {
/**
* Loads a plugin descriptor from the given plugin jar and returns it.
*
- * This is a static method to provide a convienence method for others to be able to
use.
+ * This is a static method to provide a convenience method for others to be able to
use.
*
* @param pluginJarFileUrl URL to a plugin jar file
* @return the plugin descriptor found in the given plugin jar file
@@ -308,7 +310,7 @@ public abstract class AgentPluginDescriptorUtil {
JarInputStream jis = null;
JarEntry descriptorEntry = null;
-
+ ValidationEventCollector validationEventCollector = new
ValidationEventCollector();
try {
jis = new JarInputStream(pluginJarFileUrl.openStream());
JarEntry nextEntry = jis.getNextJarEntry();
@@ -332,22 +334,14 @@ public abstract class AgentPluginDescriptorUtil {
Schema pluginSchema =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(
pluginSchemaURL);
unmarshaller.setSchema(pluginSchema);
-
- ValidationEventCollector vec = new ValidationEventCollector();
- unmarshaller.setEventHandler(vec);
+ unmarshaller.setEventHandler(validationEventCollector);
PluginDescriptor pluginDescriptor = (PluginDescriptor)
unmarshaller.unmarshal(jis);
- for (ValidationEvent event : vec.getEvents()) {
- logger.debug("Plugin [" + pluginDescriptor.getName() + "]
descriptor messages {Severity: "
- + event.getSeverity() + ", Message: " + event.getMessage()
+ ", Exception: "
- + event.getLinkedException() + "}");
- }
-
return pluginDescriptor;
} catch (Exception e) {
throw new PluginContainerException("Could not successfully parse the
plugin descriptor ["
- + PLUGIN_DESCRIPTOR_PATH + " found in plugin jar at [" +
pluginJarFileUrl + "]",
+ + PLUGIN_DESCRIPTOR_PATH + "] found in plugin jar at [" +
pluginJarFileUrl + "].",
new WrappedRemotingException(e));
} finally {
if (jis != null) {
@@ -357,6 +351,51 @@ public abstract class AgentPluginDescriptorUtil {
logger.warn("Cannot close jar stream [" + pluginJarFileUrl
+ "]. Cause: " + e);
}
}
+
+ logValidationEvents(pluginJarFileUrl, validationEventCollector, logger);
+ }
+ }
+
+ private static void logValidationEvents(URL pluginJarFileUrl,
ValidationEventCollector validationEventCollector,
+ Log logger) {
+ for (ValidationEvent event : validationEventCollector.getEvents()) {
+ // First build the message to be logged. The message will look something like
this:
+ //
+ // Validation fatal error while parsing
[jopr-jboss-as-plugin-4.1.0-SNAPSHOT.jar:META-INF/rhq-plugin.xml]
+ // at line 221, column 94: cvc-minInclusive-valid: Value '20000' is
not facet-valid with respect to
+ // minInclusive '30000' for type
'#AnonType_defaultIntervalmetric'.
+ //
+ StringBuilder message = new StringBuilder();
+ String severity = null;
+ switch(event.getSeverity()) {
+ case ValidationEvent.WARNING:
+ severity = "warning";
+ break;
+ case ValidationEvent.ERROR:
+ severity = "error";
+ break;
+ case ValidationEvent.FATAL_ERROR:
+ severity = "fatal error";
+ break;
+ }
+ message.append("Validation ").append(severity);
+ File pluginJarFile = new File(pluginJarFileUrl.getPath());
+ message.append(" while parsing
[").append(pluginJarFile.getName()).append(":").append(PLUGIN_DESCRIPTOR_PATH).append("]");
+ ValidationEventLocator locator = event.getLocator();
+ message.append(" at line ").append(locator.getLineNumber());
+ message.append(", column ").append(locator.getColumnNumber());
+ message.append(": ").append(event.getMessage());
+
+ // Now write the message to the log at an appropriate level.
+ switch(event.getSeverity()) {
+ case ValidationEvent.WARNING:
+ case ValidationEvent.ERROR:
+ logger.warn(message);
+ break;
+ case ValidationEvent.FATAL_ERROR:
+ logger.error(message);
+ break;
+ }
}
}
commit 224bade5a67f9dbbcc2343090df4609b00c9a517
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Jun 10 11:45:38 2011 -0400
fix a bunch of bugs in the recently added config masking code where resourceId was
being passed in where resourceTypeId should have been
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
index bef0519..7e7d926 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBean.java
@@ -116,7 +116,7 @@ import org.rhq.enterprise.server.util.CriteriaQueryRunner;
import org.rhq.enterprise.server.util.QuartzUtil;
/**
- * The manager responsible for working with resource and plugin configurations.
+ * The manager responsible for working with Resource and plugin configurations.
*
* @author John Mazzitelli
* @author Ian Springer
@@ -928,7 +928,7 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
for (PluginConfigurationUpdate update : updates) {
Configuration configuration = update.getConfiguration();
ConfigurationDefinition configurationDefinition =
getPluginConfigurationDefinitionForResourceType(
- subjectManager.getOverlord(), update.getResource().getId());
+ subjectManager.getOverlord(),
update.getResource().getResourceType().getId());
ConfigurationMaskingUtility.maskConfiguration(configuration,
configurationDefinition);
}
@@ -990,7 +990,7 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
for (ResourceConfigurationUpdate update : updates) {
Configuration configuration = update.getConfiguration();
ConfigurationDefinition configurationDefinition =
getResourceConfigurationDefinitionForResourceType(
- subjectManager.getOverlord(), update.getResource().getId());
+ subjectManager.getOverlord(),
update.getResource().getResourceType().getId());
ConfigurationMaskingUtility.maskConfiguration(configuration,
configurationDefinition);
}
@@ -2272,7 +2272,7 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
for (ResourceConfigurationUpdate update : updates) {
Configuration configuration = update.getConfiguration();
ConfigurationDefinition configurationDefinition =
getResourceConfigurationDefinitionForResourceType(
- subjectManager.getOverlord(), update.getResource().getId());
+ subjectManager.getOverlord(),
update.getResource().getResourceType().getId());
ConfigurationMaskingUtility.maskConfiguration(configuration,
configurationDefinition);
}
@@ -2299,7 +2299,7 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
for (PluginConfigurationUpdate update : updates) {
Configuration configuration = update.getConfiguration();
ConfigurationDefinition configurationDefinition =
getPluginConfigurationDefinitionForResourceType(
- subjectManager.getOverlord(), update.getResource().getId());
+ subjectManager.getOverlord(),
update.getResource().getResourceType().getId());
ConfigurationMaskingUtility.maskConfiguration(configuration,
configurationDefinition);
}
@@ -2331,7 +2331,7 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
for (ResourceConfigurationUpdate memberUpdate : memberUpdates) {
Configuration configuration = memberUpdate.getConfiguration();
ConfigurationDefinition configurationDefinition =
getResourceConfigurationDefinitionForResourceType(
- subjectManager.getOverlord(),
memberUpdate.getResource().getId());
+ subjectManager.getOverlord(),
memberUpdate.getResource().getResourceType().getId());
ConfigurationMaskingUtility.maskConfiguration(configuration,
configurationDefinition);
}
}
@@ -2365,7 +2365,7 @@ public class ConfigurationManagerBean implements
ConfigurationManagerLocal, Conf
for (PluginConfigurationUpdate memberUpdate : memberUpdates) {
Configuration configuration = memberUpdate.getConfiguration();
ConfigurationDefinition configurationDefinition =
getPluginConfigurationDefinitionForResourceType(
- subjectManager.getOverlord(),
memberUpdate.getResource().getId());
+ subjectManager.getOverlord(),
memberUpdate.getResource().getResourceType().getId());
ConfigurationMaskingUtility.maskConfiguration(configuration,
configurationDefinition);
}
}
commit 46705946d33d7049670731144384c2a15e55f207
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu Jun 9 10:48:28 2011 -0400
cosmetic: fix a couple typos
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/util/MeasurementDataManagerUtility.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/util/MeasurementDataManagerUtility.java
index 281beb2..0dfe0bb 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/util/MeasurementDataManagerUtility.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/util/MeasurementDataManagerUtility.java
@@ -48,12 +48,12 @@ import
org.rhq.enterprise.server.measurement.MeasurementNotFoundException;
import org.rhq.enterprise.server.util.LookupUtil;
/**
- * This is purposefully not TimeZone sensitive. It makes this easier to deal with in
clusters with servers in different
+ * This is purposefully not TimeZone sensitive. It makes it easier for it to deal with
clusters with servers in different
* timezones, but it means that we can't rely on table maintenance in the middle of
the night. That's ok, we're going to
- * do this like the rest of the maintenance on the hour. It does mean that even with 12
hour tables we may have data in
- * one from 10 am to 10 pm local instead of 12 to 12.
- *
- * <p/>Due to the leap seconds its possible some tables will technically span more
than MILLISECONDS_PER_TABLE of real
+ * do this like the rest of the maintenance - on the hour. It does mean that even with 12
hour tables we may have data
+ * in one from 10 am to 10 pm local instead of 12 to 12.
+ * <p/>
+ * Due to the leap seconds, it's possible some tables will technically span more than
MILLISECONDS_PER_TABLE of real
* time. This is an irrelevant quirk.
*
* @author Greg Hinkle
@@ -79,7 +79,7 @@ public class MeasurementDataManagerUtility {
private static NumberFormat nf = new DecimalFormat("00");
private static final long MILLISECONDS_PER_DAY = 1000L * 60 * 60 * 24;
- public static final long MILLESECONDS_PER_TABLE = MILLISECONDS_PER_DAY /
TABLES_PER_DAY;
+ public static final long MILLISECONDS_PER_TABLE = MILLISECONDS_PER_DAY /
TABLES_PER_DAY;
public static final long RAW_PURGE = STORED_DAYS * MILLISECONDS_PER_DAY;
@@ -304,7 +304,6 @@ public class MeasurementDataManagerUtility {
ResultSet rs = null;
try {
connection = datasource.getConnection();
- ;
String table = TABLE_PREFIX + nf.format(index);
String query = "SELECT d.time_stamp, d.value \n" + "FROM
" + table + " d \n"
+ "WHERE d.schedule_id = ? \n" + "AND d.time_stamp = (
SELECT MAX(dd.time_stamp) \n" + "FROM "
@@ -506,10 +505,10 @@ public class MeasurementDataManagerUtility {
long day = now / MILLISECONDS_PER_DAY;
long timeOfDay = now - (day * MILLISECONDS_PER_DAY);
- long remaining = MILLESECONDS_PER_TABLE - timeOfDay;
+ long remaining = MILLISECONDS_PER_TABLE - timeOfDay;
long nextRotation = now + remaining;
if (nextRotation < now) {
- nextRotation += MILLESECONDS_PER_TABLE;
+ nextRotation += MILLISECONDS_PER_TABLE;
}
return DateFormat.getDateTimeInstance(DateFormat.LONG,
DateFormat.FULL).format(new Date(nextRotation));
@@ -519,7 +518,7 @@ public class MeasurementDataManagerUtility {
long day = time / MILLISECONDS_PER_DAY;
long timeOfDay = time - (day * MILLISECONDS_PER_DAY);
- long table = ((day * TABLES_PER_DAY) + (timeOfDay / MILLESECONDS_PER_TABLE));
+ long table = ((day * TABLES_PER_DAY) + (timeOfDay / MILLISECONDS_PER_TABLE));
long tableIndex = (table % TABLE_COUNT);
return (int) tableIndex;
@@ -530,7 +529,7 @@ public class MeasurementDataManagerUtility {
int result;
try {
- result = Integer.valueOf(indexString).intValue();
+ result = Integer.valueOf(indexString);
} catch (NumberFormatException e) {
LOG.error("Invalid raw table name: " + tableName + ",
returning table index 0.");
result = 0;
commit a5c92fa93669e2de24a6067a43116d0565d84632
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Tue Jun 7 10:48:03 2011 -0400
initial cut at a Sahi-based GUI perf test suite
diff --git a/etc/guiperftests/pom.xml b/etc/guiperftests/pom.xml
new file mode 100644
index 0000000..ab81ed0
--- /dev/null
+++ b/etc/guiperftests/pom.xml
@@ -0,0 +1,204 @@
+<?xml version="1.0"?>
+
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.rhq.guiperftest</groupId>
+ <artifactId>rhq-guiperftest</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+
+ <name>RHQ GUI Performance Tests</name>
+ <description>JunitPerf-based performance tests for the RHQ GUI, which test
+ that load times for various pages are acceptable (less than 10
+ seconds); the tests currently assume an RHQ Server with
+ inventoried Resources is running on localhost:7080</description>
+
+ <properties>
+ <!-- explictly specify a default encoding to avoid relying on the LANG env var
being set correctly -->
+ <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.1.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.16</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.2</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junitperf</groupId>
+ <artifactId>junitperf</artifactId>
+ <version>1.9.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>net.sf</groupId>
+ <artifactId>sahi</artifactId>
+ <version>3.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+
+ <build>
+
+ <defaultGoal>test</defaultGoal>
+
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.6</version>
+ <configuration>
+ <argLine>-Xms16M -Xmx256M</argLine>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+
+ <plugins>
+
+ <!-- Set the 'maven.version' property to the version of Maven being
used,
+ so we can include the Maven version in the jar's MANIFEST.MF file. -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.5</version>
+ <executions>
+ <execution>
+ <phase>initialize</phase>
+ <goals>
+ <goal>maven-version</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <version>2.4.3</version>
+ <configuration>
+ <!-- As of v2.4 of this plugin, the default delimiters are @*@ -
+ we want the old default of ${*} instead. -->
+ <useDefaultDelimiters>false</useDefaultDelimiters>
+ <delimiters>
+ <delimiter>${*}</delimiter>
+ </delimiters>
+ </configuration>
+ </plugin>
+
+ <!-- Ensure all code compiles and runs on Java 6 or later. -->
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.3.2</version>
+ <configuration>
+ <!-- invocation options -->
+ <fork>true</fork>
+ <meminitial>64M</meminitial>
+ <maxmem>512M</maxmem>
+
+ <!-- compiler options -->
+ <source>1.6</source>
+ <target>1.6</target>
+ <optimize>false</optimize>
+ <verbose>true</verbose>
+ <compilerArgument>-Xlint</compilerArgument>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>2.3.1</version>
+ <configuration>
+ <archive>
+ <manifest>
+
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+ </manifest>
+ <manifestEntries>
+ <Maven-Version>${maven.version}</Maven-Version>
+ <Java-Version>${java.version}</Java-Version>
+ <Java-Vendor>${java.vendor}</Java-Vendor>
+ <Os-Name>${os.name}</Os-Name>
+ <Os-Arch>${os.arch}</Os-Arch>
+ <Os-Version>${os.version}</Os-Version>
+ </manifestEntries>
+ </archive>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-enforcer-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>enforce-versions</id>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <configuration>
+ <rules>
+ <requireMavenVersion>
+ <version>2.0.10</version>
+ </requireMavenVersion>
+ <requireJavaVersion>
+ <version>[1.6,1.8)</version> <!-- 1.6.x, 1.7.x -->
+ </requireJavaVersion>
+ </rules>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.6</version>
+ <configuration>
+ <trimStackTrace>false</trimStackTrace>
+ </configuration>
+ </plugin>
+
+ </plugins>
+
+ </build>
+
+ <profiles>
+
+ <profile>
+ <id>test.debug</id>
+ <activation>
+ <property>
+ <name>test.debug</name>
+ </property>
+ </activation>
+
+ <properties>
+ <!-- See:
http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#debu...
-->
+ <maven.surefire.debug>-Xdebug -Xnoagent -Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,address=8797,server=y,suspend=y</maven.surefire.debug>
+ </properties>
+ </profile>
+
+ </profiles>
+
+</project>
+
diff --git a/etc/guiperftests/src/test/java/org/rhq/guiperftest/GuiPerfTestCase.java
b/etc/guiperftests/src/test/java/org/rhq/guiperftest/GuiPerfTestCase.java
new file mode 100644
index 0000000..9116089
--- /dev/null
+++ b/etc/guiperftests/src/test/java/org/rhq/guiperftest/GuiPerfTestCase.java
@@ -0,0 +1,101 @@
+/*
+ * 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.guiperftest;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import net.sf.sahi.client.Browser;
+
+import java.util.UUID;
+
+/**
+ * Performance tests for RHQ GUI.
+ *
+ * @author Ian Springer
+ */
+public class GuiPerfTestCase extends TestCase {
+
+ public GuiPerfTestCase(String name) {
+ super(name);
+ }
+
+ public void testCreateCompatibleGroup() throws InterruptedException {
+ Browser browser = GuiPerfTestSuite.getBrowser();
+
+ browser.link("Inventory").click();
+ browser.cell("Compatible Groups").click();
+ browser.cell("New").click();
+
+ String groupName = "group" + UUID.randomUUID();
+ browser.textbox("name").setValue(groupName);
+ browser.textarea("description").setValue("bleh");
+ browser.cell("Next").click();
+
+ browser.textbox("search").setValue("RHQ Agent");
+ browser.textbox("search").click();
+ browser.waitFor(500);
+ browser.div("RHQ Agent[1]").hover();
+ browser.waitFor(300);
+ browser.div("RHQ Agent[1]").click();
+ browser.image("right_Over.png").click();
+ browser.cell("Finish").click();
+ }
+
+ public void testCreateRole() throws InterruptedException {
+ Browser browser = GuiPerfTestSuite.getBrowser();
+
+ browser.link("Administration").click();
+ browser.cell("Roles").click();
+ browser.cell("New").click();
+
+ String roleName = "role" + UUID.randomUUID();
+ browser.textbox("name").setValue(roleName);
+ browser.textbox("description").setValue("bleh");
+ browser.image(0).near(browser.div("Manage Security")).click();
+ browser.image("unchecked.png").near(browser.div("Manage
Security")).click();
+ browser.cell("Save").click();
+ }
+
+ public static Test suite() {
+ return new GuiPerfTestSuite(GuiPerfTestCase.class);
+ /*long maxElapsedTime = 10000;
+
+ TestSuite undecoratedSuite = new TestSuite(GuiPerfTestCase.class);
+ Enumeration undecoratedTests = undecoratedSuite.tests();
+ GuiPerfTestSuite timedSuite = new GuiPerfTestSuite();
+ while (undecoratedTests.hasMoreElements()) {
+ Test undecoratedTest = (Test) undecoratedTests.nextElement();
+ System.out.println("test: " + undecoratedTest);
+ TimedTest timedTest = new TimedTest(undecoratedTest, maxElapsedTime);
+ timedTest.setQuiet();
+ timedSuite.addTest(timedTest);
+ }
+
+ // Run the whole suite 10x concurrently.
+ LoadTest loadTest = new LoadTest(timedSuite, 10);
+ loadTest.setEnforceTestAtomicity(true);
+
+ return loadTest;*/
+ }
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(suite());
+ }
+
+}
diff --git a/etc/guiperftests/src/test/java/org/rhq/guiperftest/GuiPerfTestSuite.java
b/etc/guiperftests/src/test/java/org/rhq/guiperftest/GuiPerfTestSuite.java
new file mode 100644
index 0000000..e2818e8
--- /dev/null
+++ b/etc/guiperftests/src/test/java/org/rhq/guiperftest/GuiPerfTestSuite.java
@@ -0,0 +1,80 @@
+/*
+ * 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.guiperftest;
+
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+import net.sf.sahi.client.Browser;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * @author Ian Springer
+ */
+public class GuiPerfTestSuite extends TestSuite {
+
+ private static final ThreadLocal<Browser> BROWSERS = new
ThreadLocal<Browser>();
+
+ private AtomicInteger threadCount = new AtomicInteger();
+
+ public GuiPerfTestSuite() {
+ SahiUtility.initSahi();
+ }
+
+ public GuiPerfTestSuite(Class<GuiPerfTestCase> testClass) {
+ super(testClass);
+
+ SahiUtility.initSahi();
+ }
+
+ @Override
+ public void run(TestResult result) {
+ Browser browser = BROWSERS.get();
+ if (browser == null) {
+ // Start at 1, so 0 is reserved for manual recording and testing.
+ int browserIndex = this.threadCount.incrementAndGet();
+ System.out.println("browserIndex=" + browserIndex);
+ browser = SahiUtility.createBrowser(browserIndex);
+ BROWSERS.set(browser);
+
+ login(browser);
+ }
+
+ super.run(result);
+
+ logout(browser);
+ browser.close();
+ }
+
+ public static Browser getBrowser() {
+ return BROWSERS.get();
+ }
+
+ private void login(Browser browser) {
+ browser.navigateTo("http://localhost:7080/");
+ browser.textbox("user").setValue("rhqadmin");
+ browser.password("password").setValue("rhqadmin");
+ browser.cell("Login").click();
+ }
+
+ private void logout(Browser browser) {
+ browser.link("Logout").click();
+ }
+
+}
diff --git a/etc/guiperftests/src/test/java/org/rhq/guiperftest/SahiUtility.java
b/etc/guiperftests/src/test/java/org/rhq/guiperftest/SahiUtility.java
new file mode 100644
index 0000000..1068c0f
--- /dev/null
+++ b/etc/guiperftests/src/test/java/org/rhq/guiperftest/SahiUtility.java
@@ -0,0 +1,57 @@
+/*
+ * 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.guiperftest;
+
+import net.sf.sahi.client.Browser;
+import net.sf.sahi.config.Configuration;
+
+/**
+ *
+ */
+public class SahiUtility {
+
+ private static final String SAHI_BASE = "/home/ips/Applications/sahi-3.5";
+ private static final String SAHI_USER_DATA = SAHI_BASE + "/userdata";
+
+ public static void initSahi() {
+ Configuration.initJava(SAHI_BASE, SAHI_USER_DATA);
+ }
+
+ public static Browser createBrowser(int profileIndex) {
+ System.out.println("Creating browser #" + profileIndex +
"...");
+ String browserPath = "/usr/bin/firefox";
+ String browserProcessName = "firefox";
+ String firefoxProfile = "sahi" + profileIndex;
+
+ String browserOptions = "-profile " + SAHI_USER_DATA +
"/browser/ff/profiles/" + firefoxProfile
+ + " -no-remote";
+ System.out.println("Browser options: " + browserOptions);
+ Browser browser = new Browser(browserPath, browserProcessName, browserOptions);
+ try {
+ browser.open();
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to connect to Sahi proxy - make sure
Sahi dashboard is running - cause: "
+ + e);
+ }
+
+
+ return browser;
+ }
+
+}
commit 16ac412aa461a11a23ab929de499c9474aae4c02
Merge: 2f43118 4eb05eb
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Jun 10 10:24:46 2011 -0400
Merge commit 'origin/master' into nonplatform-bundles-644328
commit 4eb05eb36eb71f6ccf89e99dc6e8953d2224808d
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Fri Jun 10 09:23:37 2011 -0500
Fix for one more FK constraint violation for test runs.
diff --git
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
index 67c37e2..1777489 100644
---
a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
+++
b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/MetadataTest.xml
@@ -27,6 +27,7 @@
<rhq_availability/>
<rhq_measurement_sched/>
<rhq_package/>
+ <rhq_repo_content_src_map/>
<rhq_repo/>
<rhq_bundle/>
<rhq_plugin/>
commit 2f4311816c1acbb057e2c774984e9b58a8ef95a2
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 9 16:41:44 2011 -0400
BZ 644328 - add support to the jboss4 plugin so it supports bundle deployment to
either
the install directory or the config set directory (e.g. the "default"
directory)
diff --git a/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
index 192c7f1..dd1d008 100644
--- a/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
@@ -257,6 +257,17 @@
</configuration>
</content>
+ <bundle-target>
+ <destination-base-dir name="Install Directory">
+ <value-context>pluginConfiguration</value-context>
+ <value-name>jbossHomeDir</value-name>
+ </destination-base-dir>
+ <destination-base-dir name="Configuration Set Directory">
+ <value-context>pluginConfiguration</value-context>
+ <value-name>configurationPath</value-name>
+ </destination-base-dir>
+ </bundle-target>
+
<help>
<![CDATA[
<h3>Binding to IP addresses</h3>
commit 9b7363009b2b6d722be733f03bf7894aced195b9
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 9 16:40:58 2011 -0400
BZ 644328 - fix the drop down selector
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
index b4701a0..95f01fd 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
@@ -124,6 +124,7 @@ public class GetDestinationStep extends AbstractWizardStep {
destBaseDirItem.setWidth(300);
destBaseDirItem.setRequired(true);
destBaseDirItem.setAllowEmptyValue(false);
+ destBaseDirItem.setMultiple(false);
destBaseDirItem.setDisabled(true);
destBaseDirItem.addChangedHandler(new ChangedHandler() {
public void onChanged(ChangedEvent event) {
@@ -156,14 +157,14 @@ public class GetDestinationStep extends AbstractWizardStep {
selectedGroupId = (Integer) event.getValue();
}
+ // new group is, or is in the process of being, selected so forget
what the base location was before
+ dest.setDestinationBaseDirectoryName(null);
+ destBaseDirItem.clearValue();
+
if (selectedGroupId != null) {
bundleServer.getResourceTypeBundleConfiguration(selectedGroupId.intValue(),
new AsyncCallback<ResourceTypeBundleConfiguration>() {
public void onSuccess(ResourceTypeBundleConfiguration
result) {
- // new group selected, forget what the base location
was before
- dest.setDestinationBaseDirectoryName(null);
- destBaseDirItem.clearValue();
-
// populate the base location drop down with all the
possible dest base directories
String[] menuItems = null;
if (result != null) {
@@ -176,7 +177,8 @@ public class GetDestinationStep extends AbstractWizardStep {
menuItems[i++] = baseDir.getName();
}
Arrays.sort(menuItems); // just so they are
ordered in the drop down list
- destBaseDirItem.setValues(menuItems);
+ destBaseDirItem.setValueMap(menuItems);
+ destBaseDirItem.setValue(menuItems[0]);
dest.setDestinationBaseDirectoryName(menuItems[0]);
}
}
@@ -185,11 +187,13 @@ public class GetDestinationStep extends AbstractWizardStep {
}
public void onFailure(Throwable caught) {
- dest.setDestinationBaseDirectoryName(null);
+ destBaseDirItem.setDisabled(true);
CoreGUI.getErrorHandler().handleError(
MSG.view_bundle_deployWizard_error_noBundleConfig(), caught);
}
});
+ } else {
+ destBaseDirItem.setDisabled(true);
}
}
});
commit 0067ddf223fb3a5a4fd6a28bcad3b2c46ade773d
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 9 14:06:16 2011 -0400
BZ 644328 - from the GWT bundle deploy wizard, be able to select any
compatible group whose type can support bundle deployment
and be able to select one of the type's available bundle
destination base locations.
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java
index 6f99a24..144a71d 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/ResourceGroupCriteria.java
@@ -60,6 +60,7 @@ public class ResourceGroupCriteria extends TaggedCriteria {
private Boolean filterPrivate; /* if true, show only private groups for the calling
user */
private Boolean filterVisible = true; /* only show visible groups by default */
private List<Integer> filterIds; // requires overrides
+ private NonBindingOverrideFilter filterBundleTargetableOnly; // requires overrides -
finds only those that have bundle config - that is, can be targeted for bundle deployment
private boolean fetchExplicitResources;
private boolean fetchImplicitResources;
@@ -116,6 +117,7 @@ public class ResourceGroupCriteria extends TaggedCriteria {
+ " WHERE resourcegroup.id = explicitGroup.id AND NOT
res.resourceType.name = ? )");
filterOverrides.put("groupDefinitionId", "groupDefinition.id =
?");
filterOverrides.put("ids", "id IN ( ? )");
+ filterOverrides.put("bundleTargetableOnly",
"resourceType.bundleConfiguration IS NOT NULL");
sortOverrides.put("resourceTypeName", "resourceType.name");
sortOverrides.put("pluginName", "resourceType.plugin");
@@ -238,6 +240,20 @@ public class ResourceGroupCriteria extends TaggedCriteria {
this.filterIds = CriteriaUtils.getListIgnoringNulls(filterIds);
}
+ /**
+ * If true is passed in, only those groups that can be targeted for bundle
deployments will
+ * be fetched. By definition, this means no mixed groups are ever fetched and only
+ * compatible groups with resource types that support bundle deployments are
fetched.
+ * Technically, what this means is only those compatible groups whose
+ * resource types have non-null bundle configurations are fetched.
+ *
+ * @param filterBundleTargetableOnly
+ */
+ public void addFilterBundleTargetableOnly(boolean filterBundleTargetableOnly) {
+ this.filterBundleTargetableOnly = (filterBundleTargetableOnly ?
NonBindingOverrideFilter.ON
+ : NonBindingOverrideFilter.OFF);
+ }
+
public void fetchExplicitResources(boolean fetchExplicitResources) {
this.fetchExplicitResources = fetchExplicitResources;
}
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
index 288be78..efb55e4 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
@@ -81,6 +81,7 @@ import org.rhq.core.domain.util.Summary;
@Table(name = ResourceType.TABLE_NAME)
@SequenceGenerator(name = "SEQ", sequenceName =
"RHQ_RESOURCE_TYPE_ID_SEQ")
@NamedQueries( {
+ @NamedQuery(name = ResourceType.QUERY_GET_BUNDLE_CONFIG_BY_GROUP_ID, query =
"SELECT rg.resourceType.bundleConfiguration FROM ResourceGroup rg WHERE rg.id =
:groupId"),
@NamedQuery(name = ResourceType.QUERY_FIND_BY_PLUGIN, query = "SELECT rt FROM
ResourceType AS rt "
+ "WHERE rt.plugin = :plugin AND rt.deleted = false"),
@NamedQuery(name = ResourceType.QUERY_FIND_BY_NAME_AND_PLUGIN, // TODO: QUERY: names
are case-sensitive
@@ -248,6 +249,7 @@ public class ResourceType implements Serializable,
Comparable<ResourceType> {
public static final ResourceType ANY_PLATFORM_TYPE = null;
+ public static final String QUERY_GET_BUNDLE_CONFIG_BY_GROUP_ID =
"ResourceType.getBundleConfigByGroupResourceType";
public static final String QUERY_GET_EXPLICIT_RESOURCE_TYPE_COUNTS_BY_GROUP =
"ResourceType.getExplicitResourceTypeCountsByGroup";
public static final String QUERY_GET_IMPLICIT_RESOURCE_TYPE_COUNTS_BY_GROUP =
"ResourceType.getImplicitResourceTypeCountsByGroup";
public static final String QUERY_FIND_BY_NAME_AND_PLUGIN =
"ResourceType.findByNameAndPlugin";
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
index 4a7b5ac..b4701a0 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/GetDestinationStep.java
@@ -18,10 +18,14 @@
*/
package org.rhq.enterprise.gui.coregui.client.bundle.deploy;
+import java.util.Arrays;
+import java.util.Set;
+
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.CanvasItem;
+import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.TextAreaItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
@@ -31,8 +35,10 @@ import com.smartgwt.client.widgets.form.validator.Validator;
import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.bundle.BundleDestination;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
+import
org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
-import
org.rhq.enterprise.gui.coregui.client.bundle.deploy.selection.SinglePlatformResourceGroupSelector;
+import
org.rhq.enterprise.gui.coregui.client.bundle.deploy.selection.SingleCompatibleResourceGroupSelector;
import org.rhq.enterprise.gui.coregui.client.components.wizard.AbstractWizardStep;
import org.rhq.enterprise.gui.coregui.client.gwt.BundleGWTServiceAsync;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
@@ -48,7 +54,7 @@ public class GetDestinationStep extends AbstractWizardStep {
private final BundleDeployWizard wizard;
private VLayout form;
DynamicForm valForm = new
LocatableDynamicForm("GetDestinationStepValForm");
- private SinglePlatformResourceGroupSelector selector;
+ private SingleCompatibleResourceGroupSelector selector;
private BundleDestination dest = new BundleDestination();
private boolean createInProgress = false;
@@ -113,14 +119,83 @@ public class GetDestinationStep extends AbstractWizardStep {
}
});
- this.selector = new SinglePlatformResourceGroupSelector("group",
MSG.common_title_resource_group());
+ final SelectItem destBaseDirItem = new SelectItem("destBaseDir",
MSG
+ .view_bundle_deployWizard_getDest_destBaseDirName());
+ destBaseDirItem.setWidth(300);
+ destBaseDirItem.setRequired(true);
+ destBaseDirItem.setAllowEmptyValue(false);
+ destBaseDirItem.setDisabled(true);
+ destBaseDirItem.addChangedHandler(new ChangedHandler() {
+ public void onChanged(ChangedEvent event) {
+ Object value = event.getValue();
+ if (value != null && value.toString().length() > 0) {
+ dest.setDestinationBaseDirectoryName(value.toString());
+ } else {
+ dest.setDestinationBaseDirectoryName(null);
+ }
+ }
+ });
+
+ this.selector = new SingleCompatibleResourceGroupSelector("group",
MSG.common_title_resource_group());
this.selector.setWidth(300);
this.selector.setRequired(true);
Validator validator = new IsIntegerValidator();
validator.setErrorMessage(MSG.view_bundle_deployWizard_error_8());
this.selector.setValidators(validator);
+ this.selector.addChangedHandler(new ChangedHandler() {
+ @Override
+ public void onChanged(ChangedEvent event) {
+ Integer selectedGroupId = null;
+
+ // if the user is typing in the name of the group, and is only
partially
+ // done, the event value will be the String of the partial group
name.
+ // If the selection is an actual group name, the event value will be
+ // an integer (the group ID) and that is our indication that the
selection
+ // of an actual group has been made
+ if (event.getValue() instanceof Integer) {
+ selectedGroupId = (Integer) event.getValue();
+ }
+
+ if (selectedGroupId != null) {
+
bundleServer.getResourceTypeBundleConfiguration(selectedGroupId.intValue(),
+ new AsyncCallback<ResourceTypeBundleConfiguration>() {
+ public void onSuccess(ResourceTypeBundleConfiguration
result) {
+ // new group selected, forget what the base location
was before
+ dest.setDestinationBaseDirectoryName(null);
+ destBaseDirItem.clearValue();
+
+ // populate the base location drop down with all the
possible dest base directories
+ String[] menuItems = null;
+ if (result != null) {
+ Set<BundleDestinationBaseDirectory>
baseDirs;
+ baseDirs =
result.getBundleDestinationBaseDirectory();
+ if (baseDirs != null && baseDirs.size()
> 0) {
+ menuItems = new String[baseDirs.size()];
+ int i = 0;
+ for (BundleDestinationBaseDirectory baseDir :
baseDirs) {
+ menuItems[i++] = baseDir.getName();
+ }
+ Arrays.sort(menuItems); // just so they are
ordered in the drop down list
+ destBaseDirItem.setValues(menuItems);
+
dest.setDestinationBaseDirectoryName(menuItems[0]);
+ }
+ }
+
+ destBaseDirItem.setDisabled(menuItems == null);
+ }
+
+ public void onFailure(Throwable caught) {
+ dest.setDestinationBaseDirectoryName(null);
+ CoreGUI.getErrorHandler().handleError(
+
MSG.view_bundle_deployWizard_error_noBundleConfig(), caught);
+ }
+ });
+ }
+ }
+ });
- this.valForm.setItems(nameTextItem, descriptionTextAreaItem,
deployDirTextItem, selector);
+ this.valForm.setItems(nameTextItem, descriptionTextAreaItem, this.selector,
destBaseDirItem,
+ deployDirTextItem);
CanvasItem ci1 = new CanvasItem();
ci1.setShowTitle(false);
ci1.setCanvas(valForm);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/selection/SingleCompatibleResourceGroupSelector.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/selection/SingleCompatibleResourceGroupSelector.java
new file mode 100644
index 0000000..38ac90b
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deploy/selection/SingleCompatibleResourceGroupSelector.java
@@ -0,0 +1,63 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2010 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, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * 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 and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.enterprise.gui.coregui.client.bundle.deploy.selection;
+
+import com.smartgwt.client.data.DSRequest;
+import com.smartgwt.client.types.TextMatchStyle;
+import com.smartgwt.client.widgets.form.fields.ComboBoxItem;
+import com.smartgwt.client.widgets.grid.ListGridField;
+
+import org.rhq.core.domain.criteria.ResourceGroupCriteria;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.inventory.groups.ResourceGroupsDataSource;
+
+public class SingleCompatibleResourceGroupSelector extends ComboBoxItem {
+
+ public SingleCompatibleResourceGroupSelector(String name, String title) {
+ super(name, title);
+
+ ListGridField nameField = new ListGridField("name");
+ ListGridField descriptionField = new ListGridField("description");
+
+ setOptionDataSource(new CompatibleResourceGroupsDataSource());
+
+ setWidth(240);
+ setTitle(CoreGUI.getMessages().common_title_resource_group());
+
+ setValueField("id");
+ setDisplayField("name");
+ setPickListWidth(450);
+ setPickListFields(nameField, descriptionField);
+ setTextMatchStyle(TextMatchStyle.SUBSTRING);
+ }
+
+ protected class CompatibleResourceGroupsDataSource extends ResourceGroupsDataSource
{
+
+ @Override
+ protected ResourceGroupCriteria getFetchCriteria(final DSRequest request) {
+ ResourceGroupCriteria result = super.getFetchCriteria(request);
+ result.addFilterBundleTargetableOnly(true);
+ return result;
+ }
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java
index 79166ba..ed820ad 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/BundleGWTService.java
@@ -30,6 +30,7 @@ import org.rhq.core.domain.bundle.BundleFile;
import org.rhq.core.domain.bundle.BundleResourceDeployment;
import org.rhq.core.domain.bundle.BundleType;
import org.rhq.core.domain.bundle.BundleVersion;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
import org.rhq.core.domain.bundle.composite.BundleWithLatestVersionComposite;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.criteria.BundleCriteria;
@@ -42,6 +43,8 @@ import org.rhq.core.domain.util.PageList;
public interface BundleGWTService extends RemoteService {
+ ResourceTypeBundleConfiguration getResourceTypeBundleConfiguration(int compatGroupId)
throws RuntimeException;
+
BundleVersion createBundleVersion(int bundleId, String name, String version, String
recipe) throws RuntimeException;
BundleVersion createBundleVersionViaURL(String url) throws RuntimeException;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
index 10daf03..08128de 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
@@ -141,7 +141,8 @@ public class SingleGroupDefinitionView extends LocatableVLayout
implements Bookm
form.setDataSource(GroupDefinitionDataSource.getInstance());
form.setHiliteRequiredFields(true);
form.setRequiredTitleSuffix(" <span style=\"color: red;\">*
</span>:");
- DSOperationType saveOperationType = (groupDefinition.getId() == 0) ?
DSOperationType.ADD : DSOperationType.UPDATE;
+ DSOperationType saveOperationType = (groupDefinition.getId() == 0) ?
DSOperationType.ADD
+ : DSOperationType.UPDATE;
form.setSaveOperationType(saveOperationType);
final DynaGroupChildrenView dynaGroupChildrenView = new
DynaGroupChildrenView(extendLocatorId("DynaGroups"),
@@ -200,7 +201,7 @@ public class SingleGroupDefinitionView extends LocatableVLayout
implements Bookm
} else {
Record newRecord = results[0];
GroupDefinition newGroupDefinition =
GroupDefinitionDataSource.getInstance().copyValues(
- newRecord);
+ newRecord);
if (recalc) {
recalculate(dynaGroupChildrenView,
newGroupDefinition.getId());
}
@@ -350,8 +351,7 @@ public class SingleGroupDefinitionView extends LocatableVLayout
implements Bookm
templateSelectorTitleSpacer.setColSpan(1);
templateSelectorTitleSpacer.setEndRow(false);
- // TODO: i18n title
- templateSelector = new SelectItem("templateSelector", "Saved
Expression");
+ templateSelector = new SelectItem("templateSelector",
MSG.view_dynagroup_exprBuilder_savedExpression());
templateStrings = getTemplates();
templateSelector.setValueMap(templateStrings.keySet().toArray(new
String[templateStrings.size()]));
templateSelector.setAllowEmptyValue(true);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java
index 3d9c312..883f0fb 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/BundleGWTServiceImpl.java
@@ -28,6 +28,7 @@ import org.rhq.core.domain.bundle.BundleFile;
import org.rhq.core.domain.bundle.BundleResourceDeployment;
import org.rhq.core.domain.bundle.BundleType;
import org.rhq.core.domain.bundle.BundleVersion;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
import org.rhq.core.domain.bundle.composite.BundleWithLatestVersionComposite;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.criteria.BundleCriteria;
@@ -37,7 +38,6 @@ import org.rhq.core.domain.criteria.BundleFileCriteria;
import org.rhq.core.domain.criteria.BundleResourceDeploymentCriteria;
import org.rhq.core.domain.criteria.BundleVersionCriteria;
import org.rhq.core.domain.util.PageList;
-import org.rhq.core.util.exception.ThrowableUtil;
import org.rhq.enterprise.gui.coregui.client.gwt.BundleGWTService;
import org.rhq.enterprise.gui.coregui.server.util.SerialUtility;
import org.rhq.enterprise.server.bundle.BundleManagerLocal;
@@ -48,6 +48,19 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
private BundleManagerLocal bundleManager = LookupUtil.getBundleManager();
+ @Override
+ public ResourceTypeBundleConfiguration getResourceTypeBundleConfiguration(int
compatGroupId)
+ throws RuntimeException {
+ try {
+ ResourceTypeBundleConfiguration results =
bundleManager.getResourceTypeBundleConfiguration(
+ getSessionSubject(), compatGroupId);
+ return SerialUtility.prepare(results,
"getResourceTypeBundleConfiguration");
+ } catch (Throwable t) {
+ throw getExceptionToThrowToClient(t);
+ }
+ }
+
+ @Override
public BundleVersion createBundleVersionViaURL(String url) throws RuntimeException {
try {
BundleVersion results =
bundleManager.createBundleVersionViaURL(getSessionSubject(), url);
@@ -57,6 +70,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public BundleVersion createBundleVersionViaRecipe(String recipe) throws
RuntimeException {
try {
BundleVersion results =
bundleManager.createBundleVersionViaRecipe(getSessionSubject(), recipe);
@@ -66,6 +80,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public BundleDeployment createBundleDeployment(int bundleVersionId, int
bundleDestinationId, String description,
Configuration configuration, boolean enforcePolicy, int enforcementInterval,
boolean pinToBundle)
throws RuntimeException {
@@ -79,6 +94,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public BundleDestination createBundleDestination(int bundleId, String name, String
description, String deployDir,
int groupId) throws RuntimeException {
@@ -91,6 +107,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public BundleVersion createBundleVersion(int bundleId, String name, String version,
String recipe)
throws RuntimeException {
try {
@@ -102,6 +119,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public void deleteBundles(int[] bundleIds) throws RuntimeException {
try {
bundleManager.deleteBundles(getSessionSubject(), bundleIds);
@@ -110,6 +128,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public void deleteBundle(int bundleId) throws RuntimeException {
try {
bundleManager.deleteBundle(getSessionSubject(), bundleId);
@@ -118,6 +137,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public void deleteBundleDeployment(int bundleDeploymentId) throws RuntimeException {
try {
bundleManager.deleteBundleDeployment(getSessionSubject(),
bundleDeploymentId);
@@ -126,6 +146,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public void deleteBundleDestination(int bundleDestinationId) throws RuntimeException
{
try {
bundleManager.deleteBundleDestination(getSessionSubject(),
bundleDestinationId);
@@ -134,6 +155,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public void deleteBundleVersion(int bundleVersionId, boolean deleteBundleIfEmpty)
throws RuntimeException {
try {
bundleManager.deleteBundleVersion(getSessionSubject(), bundleVersionId,
deleteBundleIfEmpty);
@@ -142,6 +164,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public ArrayList<BundleType> getAllBundleTypes() throws RuntimeException {
try {
ArrayList<BundleType> bundleTypes = new ArrayList<BundleType>();
@@ -152,6 +175,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public HashMap<String, Boolean> getAllBundleVersionFilenames(int
bundleVersionId) throws RuntimeException {
HashMap<String, Boolean> results = new HashMap<String, Boolean>();
try {
@@ -162,6 +186,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public String getBundleDeploymentName(int bundleDestinationId, int bundleVersionId,
int prevDeploymentId)
throws RuntimeException {
String result;
@@ -174,6 +199,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public BundleDeployment scheduleBundleDeployment(int bundleDeploymentId, boolean
isCleanDeployment)
throws RuntimeException {
try {
@@ -185,6 +211,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public BundleDeployment scheduleRevertBundleDeployment(int bundleDeploymentId, String
deploymentDescription,
boolean isCleanDeployment) throws RuntimeException {
try {
@@ -196,6 +223,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public PageList<Bundle> findBundlesByCriteria(BundleCriteria criteria) throws
RuntimeException {
try {
PageList<Bundle> results =
bundleManager.findBundlesByCriteria(getSessionSubject(), criteria);
@@ -205,6 +233,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public PageList<BundleDeployment>
findBundleDeploymentsByCriteria(BundleDeploymentCriteria criteria)
throws RuntimeException {
try {
@@ -216,6 +245,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public PageList<BundleDestination>
findBundleDestinationsByCriteria(BundleDestinationCriteria criteria)
throws RuntimeException {
try {
@@ -227,6 +257,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public PageList<BundleFile> findBundleFilesByCriteria(BundleFileCriteria
criteria) throws RuntimeException {
try {
PageList<BundleFile> result =
bundleManager.findBundleFilesByCriteria(getSessionSubject(), criteria);
@@ -236,6 +267,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public PageList<BundleResourceDeployment>
findBundleResourceDeploymentsByCriteria(
BundleResourceDeploymentCriteria criteria) throws RuntimeException {
try {
@@ -247,6 +279,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public PageList<BundleVersion>
findBundleVersionsByCriteria(BundleVersionCriteria criteria) throws RuntimeException {
try {
PageList<BundleVersion> results =
bundleManager.findBundleVersionsByCriteria(getSessionSubject(), criteria);
@@ -256,6 +289,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public PageList<BundleWithLatestVersionComposite>
findBundlesWithLatestVersionCompositesByCriteria(
BundleCriteria criteria) throws RuntimeException {
try {
@@ -267,6 +301,7 @@ public class BundleGWTServiceImpl extends AbstractGWTServiceImpl
implements Bund
}
}
+ @Override
public void purgeBundleDestination(int bundleDestinationId) throws RuntimeException
{
try {
bundleManager.purgeBundleDestination(getSessionSubject(),
bundleDestinationId);
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 d62e049..1178cea 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
@@ -913,11 +913,13 @@ view_bundle_deployWizard_error_6 = Failed to create deployment: {0}
view_bundle_deployWizard_error_7 = Failed to get deployment name.
view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down
view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage
+view_bundle_deployWizard_error_noBundleConfig = Failed to obtain bundle target
information. Is the group you selected a valid compatible group that can be targeted for
bundle deployments?
view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
view_bundle_deployWizard_getDestStep = New Destination
view_bundle_deployWizard_getDest_deployDir = Deployment Directory
view_bundle_deployWizard_getDest_desc = Destination Description
+view_bundle_deployWizard_getDest_destBaseDirName = Base Location
view_bundle_deployWizard_getDest_name = Destination Name
view_bundle_deployWizard_getInfoStep = Provide Deployment Information
view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
@@ -1150,6 +1152,7 @@ view_dynagroup_exprBuilder_resource_greatGreatGrandparent =
GreatGreatGrandparen
view_dynagroup_exprBuilder_resource_parent = Parent
view_dynagroup_exprBuilder_resource_resource = Resource
view_dynagroup_exprBuilder_resource_tooltip = Choose the level of the resource you wish
to select. For example, select "parent" will find resources whose parent
resource matches the rest of the expression.
+view_dynagroup_exprBuilder_savedExpression = Saved Expression
view_dynagroup_exprBuilder_title = Expression Builder
view_dynagroup_exprBuilder_unset = Unset
view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the "=" operator because
of how databases store and query data.
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 30def7c..938cfd9 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
@@ -776,11 +776,13 @@ view_bundle_deployWizard_error_6 = Failed to create deployment:
{0}~
view_bundle_deployWizard_error_7 = Failed to get deployment name.~
view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down~
view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage~
+##view_bundle_deployWizard_error_noBundleConfig = Failed to obtain bundle target
information. Is the group you selected a valid compatible group that can be targeted for
bundle deployments?
view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.~
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration~
view_bundle_deployWizard_getDestStep = New Destination~
##view_bundle_deployWizard_getDest_deployDir = Deployment Directory
view_bundle_deployWizard_getDest_desc = Destination Description~
+##view_bundle_deployWizard_getDest_destBaseDirName = Base Location
view_bundle_deployWizard_getDest_name = Destination Name~
view_bundle_deployWizard_getInfoStep = Provide Deployment Information~
view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)~
@@ -935,6 +937,7 @@ view_dynagroup_definitions = DynaGroup-Definitionen
view_dynagroup_deleteFailureSelection = Failed to delete the selected group definitions~
view_dynagroup_deleteSuccessfulSelection = You have successfully deleted [{0}] group
definitions~
view_dynagroup_editing = Editing [{0}]~
+##view_dynagroup_exprBuilder_savedExpression = Saved Expression
view_dynagroup_expression = Ausdruck
view_dynagroup_expressionSet = Expression Set~
view_dynagroup_lastCalculationTime = Zeitpunkt letzte Berechnung
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 837d613..919e18f 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
@@ -914,11 +914,13 @@ view_bundle_deployWizard_error_6 = Failed to create deployment: {0}
view_bundle_deployWizard_error_7 = Failed to get deployment name.
view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down
view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage
+##view_bundle_deployWizard_error_noBundleConfig = Failed to obtain bundle target
information. Is the group you selected a valid compatible group that can be targeted for
bundle deployments?
view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
view_bundle_deployWizard_getDestStep = New Destination
##view_bundle_deployWizard_getDest_deployDir = Deployment Directory
view_bundle_deployWizard_getDest_desc = Destination Description
+##view_bundle_deployWizard_getDest_destBaseDirName = Base Location
view_bundle_deployWizard_getDest_name = Destination Name
view_bundle_deployWizard_getInfoStep = Provide Deployment Information
view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
@@ -1151,6 +1153,7 @@ view_dynagroup_exprBuilder_resource_greatGreatGrandparent =
GreatGreatGrandparen
view_dynagroup_exprBuilder_resource_parent = Parent
view_dynagroup_exprBuilder_resource_resource = Resource
view_dynagroup_exprBuilder_resource_tooltip = Choose the level of the resource you wish
to select. For example, select "parent" will find resources whose parent
resource matches the rest of the expression.
+##view_dynagroup_exprBuilder_savedExpression = Saved Expression
view_dynagroup_exprBuilder_title = Expression Builder
view_dynagroup_exprBuilder_unset = Unset
view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the "=" operator because
of how databases store and query data.
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 8313b56..1a5974f 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
@@ -931,11 +931,13 @@ view_bundle_deployWizard_error_6 = Failed to create deployment:
{0}~
view_bundle_deployWizard_error_7 = Failed to get deployment name.~
view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down~
view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage:~
+##view_bundle_deployWizard_error_noBundleConfig = Failed to obtain bundle target
information. Is the group you selected a valid compatible group that can be targeted for
bundle deployments?
view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.~
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration~
view_bundle_deployWizard_getDestStep = New Destination~
##view_bundle_deployWizard_getDest_deployDir = Deployment Directory
view_bundle_deployWizard_getDest_desc = Destination Description~
+##view_bundle_deployWizard_getDest_destBaseDirName = Base Location
view_bundle_deployWizard_getDest_name = Destination Name~
view_bundle_deployWizard_getInfoStep = Provide Deployment Information~
view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)~
@@ -1174,6 +1176,7 @@ view_dynagroup_exprBuilder_resource_greatGreatGrandparent =
GreatGreatGrandparen
view_dynagroup_exprBuilder_resource_parent = Parent
view_dynagroup_exprBuilder_resource_resource = Resource
view_dynagroup_exprBuilder_resource_tooltip = Choose the level of the resource you wish
to select. For example, select "parent" will find resources whose parent
resource matches the rest of the expression.
+##view_dynagroup_exprBuilder_savedExpression = Saved Expression
view_dynagroup_exprBuilder_title = Expression Builder
view_dynagroup_exprBuilder_unset = Unset
view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the " = " operator
because of how databases store and query data.
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 f488ffc..5902fb6 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
@@ -913,11 +913,13 @@ view_bundle_deployWizard_error_6 =
\u521B\u5EFA\u53D1\u5E03\u5931\u8D25: {0}
view_bundle_deployWizard_error_7 = Failed to get deployment name.
view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down
view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage
+##view_bundle_deployWizard_error_noBundleConfig = Failed to obtain bundle target
information. Is the group you selected a valid compatible group that can be targeted for
bundle deployments?
view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
view_bundle_deployWizard_getDestStep = \u65B0\u5EFA\u76EE\u7684\u5730
##view_bundle_deployWizard_getDest_deployDir = Deployment Directory
view_bundle_deployWizard_getDest_desc = \u76EE\u7684\u5730\u63CF\u8FF0
+##view_bundle_deployWizard_getDest_destBaseDirName = Base Location
view_bundle_deployWizard_getDest_name = \u76EE\u7684\u5730\u540D
view_bundle_deployWizard_getInfoStep = \u63D0\u4F9B\u53D1\u5E03\u4FE1\u606F
view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
@@ -1150,6 +1152,7 @@ view_dynagroup_exprBuilder_resource_greatGreatGrandparent =
GreatGreatGrandparen
view_dynagroup_exprBuilder_resource_parent = Parent
view_dynagroup_exprBuilder_resource_resource = Resource
view_dynagroup_exprBuilder_resource_tooltip =
\u9009\u62E9\u8981\u67E5\u8BE2\u8D44\u6E90\u6240\u5728\u7684\u5C42\u7EA7. \u4F8B\u5982,
\u9009\u4E2D
"parent"\u4F1A\u67E5\u8BE2\u51FA\u7236\u8D44\u6E90\u7684\u6EE1\u8DB3\u5269\u4F59\u8868\u8FBE\u5F0F\u7684\u8D44\u6E90.
+##view_dynagroup_exprBuilder_savedExpression = Saved Expression
view_dynagroup_exprBuilder_title = \u8868\u8FBE\u5F0F\u7F16\u8BD1
view_dynagroup_exprBuilder_unset = \u6062\u590D\u8BBE\u7F6E
view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the "=" operator because
of how databases store and query data.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
index 5738c64..774cd88 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerBean.java
@@ -37,6 +37,7 @@ import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
+import javax.persistence.EntityNotFoundException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
@@ -61,6 +62,7 @@ import org.rhq.core.domain.bundle.BundleResourceDeployment;
import org.rhq.core.domain.bundle.BundleResourceDeploymentHistory;
import org.rhq.core.domain.bundle.BundleType;
import org.rhq.core.domain.bundle.BundleVersion;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
import org.rhq.core.domain.bundle.composite.BundleWithLatestVersionComposite;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
@@ -147,6 +149,34 @@ public class BundleManagerBean implements BundleManagerLocal,
BundleManagerRemot
private ResourceGroupManagerLocal resourceGroupManager;
@Override
+ public ResourceTypeBundleConfiguration getResourceTypeBundleConfiguration(Subject
subject, int compatGroupId)
+ throws Exception {
+
+ // Even though its harmless to return metadata (bundle config) about a resource
type, we are getting that through
+ // a relationship from a resource group. To prevent someone from probing the
inventory to see which groups
+ // are types that support bundles, we only allow someone to traverse the
relationship from group to type
+ // if that someone has access to the group.
+ if (authorizationManager.canViewGroup(subject, compatGroupId)) {
+ Query q =
entityManager.createNamedQuery(ResourceType.QUERY_GET_BUNDLE_CONFIG_BY_GROUP_ID);
+ q.setParameter("groupId", compatGroupId);
+ ResourceTypeBundleConfiguration bundleConfig = null;
+ try {
+ Configuration config = (Configuration) q.getSingleResult();
+ if (config != null) {
+ bundleConfig = new ResourceTypeBundleConfiguration(config);
+ }
+ } catch (EntityNotFoundException enfe) {
+ // ignore this - this is just a group that isn't a compatible group
+ // or it is, but its type cannot be a target for bundle deployments
+ }
+
+ return bundleConfig;
+ } else {
+ throw new Exception("[" + subject.getName() + "] is not
authorized to access the group");
+ }
+ }
+
+ @Override
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
@RequiredPermission(Permission.MANAGE_BUNDLE)
public BundleResourceDeploymentHistory addBundleResourceDeploymentHistory(Subject
subject, int bundleDeploymentId,
@@ -1326,7 +1356,7 @@ public class BundleManagerBean implements BundleManagerLocal,
BundleManagerRemot
BundleResourceDeploymentCriteria criteria) {
CriteriaQueryGenerator generator = new CriteriaQueryGenerator(subject,
criteria);
- ;
+
if (!authorizationManager.isInventoryManager(subject)) {
if (criteria.isInventoryManagerRequired()) {
// TODO: MANAGE_INVENTORY was too restrictive as a bundle manager could
not then
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
index 231d4c3..6bfa7e4 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/bundle/BundleManagerRemote.java
@@ -37,6 +37,7 @@ import org.rhq.core.domain.bundle.BundleFile;
import org.rhq.core.domain.bundle.BundleResourceDeployment;
import org.rhq.core.domain.bundle.BundleType;
import org.rhq.core.domain.bundle.BundleVersion;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
import org.rhq.core.domain.bundle.composite.BundleWithLatestVersionComposite;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.content.Architecture;
@@ -61,6 +62,21 @@ import org.rhq.enterprise.server.system.ServerVersion;
public interface BundleManagerRemote {
/**
+ * Given the ID for a compatible group, this will return the bundle configuration
metadata for that group's resource type.
+ * User interfaces will need to use this method in order to find out if a) the group
can be a target for a bundle deployment
+ * and/or b) what different destination base locations are supported by the group.
+ *
+ * @param subject the user making the request
+ * @param compatGroupId the ID for a compatible group whose type's bundle config
is to be returned
+ * @return the bundle configuration for the group's resource type
+ * @throws Exception
+ */
+ @WebMethod
+ ResourceTypeBundleConfiguration getResourceTypeBundleConfiguration( //
+ @WebParam(name = "subject") Subject subject, //
+ @WebParam(name = "compatGroupId") int compatGroupId) throws Exception;
+
+ /**
* Adds a BundleFile to the BundleVersion and implicitly creates the backing
PackageVersion. If the PackageVersion
* already exists use {@link addBundleFile(Subject, int, String, int, boolean)}
*
@@ -73,6 +89,7 @@ public interface BundleManagerRemote {
* @return the new BundleFile
* @throws Exception
*/
+
@WebMethod
BundleFile addBundleFile( //
@WebParam(name = "subject") Subject subject, //
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
index 3ee8cc0..fd3bb91 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/webservices/WebservicesManagerBean.java
@@ -47,6 +47,7 @@ import org.rhq.core.domain.bundle.BundleFile;
import org.rhq.core.domain.bundle.BundleResourceDeployment;
import org.rhq.core.domain.bundle.BundleType;
import org.rhq.core.domain.bundle.BundleVersion;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
import org.rhq.core.domain.bundle.composite.BundleWithLatestVersionComposite;
import org.rhq.core.domain.common.EntityContext;
import org.rhq.core.domain.common.ProductInfo;
@@ -269,6 +270,12 @@ public class WebservicesManagerBean implements WebservicesRemote {
//BUNDLEMANAGER: BEGIN ------------------------------------------
+ @Override
+ public ResourceTypeBundleConfiguration getResourceTypeBundleConfiguration(Subject
subject, int compatGroupId)
+ throws Exception {
+ return bundleManager.getResourceTypeBundleConfiguration(subject, compatGroupId);
+ }
+
public BundleFile addBundleFile(Subject subject, int bundleVersionId, String name,
String version,
Architecture architecture, InputStream fileStream) throws Exception {
return bundleManager.addBundleFile(subject, bundleVersionId, name, version,
architecture, fileStream);
commit a86e99ac6f679f3eacf9c59af069a681356fa29e
Merge: 60ba20a a6d2d56
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Jun 8 11:21:49 2011 -0400
Merge commit 'origin/master' into nonplatform-bundles-644328
commit 60ba20a7d4391f5de003073b15af01d486b02030
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Tue Jun 7 17:52:23 2011 -0400
BZ 644328 - add new attribute to BundleDestination domain object. It now knows which
base directory name the user selected to deploy bundles to.
this upgrades the existing database data to use the platform "Root File
System" base dir name since all bundles up to this point
have been deployed to that base location.
diff --git a/modules/core/dbutils/pom.xml b/modules/core/dbutils/pom.xml
index c4c6a6a..e5994fe 100644
--- a/modules/core/dbutils/pom.xml
+++ b/modules/core/dbutils/pom.xml
@@ -22,7 +22,7 @@
<properties>
<scm.module.path>modules/core/dbutils/</scm.module.path>
- <db.schema.version>2.108</db.schema.version>
+ <db.schema.version>2.109</db.schema.version>
</properties>
<dependencies>
diff --git a/modules/core/dbutils/src/main/scripts/dbsetup/content-schema.xml
b/modules/core/dbutils/src/main/scripts/dbsetup/content-schema.xml
index 8cd2711..3ade2e9 100644
--- a/modules/core/dbutils/src/main/scripts/dbsetup/content-schema.xml
+++ b/modules/core/dbutils/src/main/scripts/dbsetup/content-schema.xml
@@ -548,6 +548,7 @@
<column name="BUNDLE_ID" type="INTEGER"
required="true" references="RHQ_BUNDLE"/>
<column name="GROUP_ID" type="INTEGER"
required="true" references="RHQ_RESOURCE_GROUP"/>
<column name="DEPLOY_DIR" size="256"
type="VARCHAR2" required="true"/>
+ <column name="DEST_BASE_DIR_NAME" size="200"
type="VARCHAR2" required="true"/>
<!-- This index is for constraint, not performance -->
<index name="RHQ_BUNDLE_DESTINATION_UNIQUE"
unique="true">
diff --git a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
index c7aa1a6..bbaa066 100644
--- a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
+++ b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
@@ -3390,6 +3390,7 @@
<schema-createSequence name="RHQ_OPERATION_SCHEDULE_ID_SEQ"
initial="10001"/>
</schemaSpec>
+ <!-- BZ 644328 -->
<schemaSpec version="2.108">
<schema-addColumn table="RHQ_RESOURCE_TYPE"
column="BUNDLE_CONFIG_ID" columnType="INTEGER" />
<schema-directSQL>
@@ -3402,6 +3403,17 @@
</schema-directSQL>
</schemaSpec>
+ <!-- BZ 644328 -->
+ <schemaSpec version="2.109">
+ <schema-addColumn table="RHQ_BUNDLE_DESTINATION"
column="DEST_BASE_DIR_NAME" columnType="VARCHAR2"
precision="200" />
+ <schema-directSQL>
+ <statement desc="Pointing all bundle destinations to the
platform type's Root File System dest base dir">
+ UPDATE RHQ_BUNDLE_DESTINATION SET DEST_BASE_DIR_NAME = 'Root
File System'
+ </statement>
+ </schema-directSQL>
+ <schema-alterColumn table="RHQ_BUNDLE_DESTINATION"
column="DEST_BASE_DIR_NAME" nullable="FALSE"/>
+ </schemaSpec>
+
</dbupgrade>
</target>
</project>
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDestination.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDestination.java
index dc730c7..7603d78 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDestination.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleDestination.java
@@ -79,9 +79,12 @@ public class BundleDestination implements Serializable {
@Column(name = "DESCRIPTION", nullable = true)
private String description;
- @Column(name = "DEPLOY_DIR", nullable = true)
+ @Column(name = "DEPLOY_DIR", nullable = false)
private String deployDir;
+ @Column(name = "DEST_BASE_DIR_NAME", nullable = false)
+ private String destinationBaseDirectoryName;
+
@Column(name = "CTIME")
private Long ctime = System.currentTimeMillis();
@@ -145,6 +148,26 @@ public class BundleDestination implements Serializable {
this.deployDir = deployDir;
}
+ /**
+ * All resource types that can be targets for bundle deployments define one or more
+ * destination base directories. These are given names in the type's plugin
descriptor.
+ * This method returns the name of the destination base directory where all bundles
+ * will be destined to be deployed on all resources found in the destination group.
+ *
+ * @return name of the destination base directory - this isn't an actual
directory location
+ * (it can't be because it will be different on all individual machines
where the bundles
+ * will be deployed), it is the name of the destination location as defined
in
+ * the plugin descriptor for the type of resources where the bundle is to be
deployed
+ * (i.e. it is the type of the compatible group associated with this
destination).
+ */
+ public String getDestinationBaseDirectoryName() {
+ return destinationBaseDirectoryName;
+ }
+
+ public void setDestinationBaseDirectoryName(String destinationBaseDirectoryName) {
+ this.destinationBaseDirectoryName = destinationBaseDirectoryName;
+ }
+
public long getCtime() {
return this.ctime;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationDataSource.java
index 0dab73f..28d64b6 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationDataSource.java
@@ -57,6 +57,7 @@ public class BundleDestinationDataSource extends
RPCDataSource<BundleDestination
public static final String FIELD_GROUP_ID = "groupId";
public static final String FIELD_GROUP_NAME = "groupName";
public static final String FIELD_DEPLOY_DIR = "deployDir";
+ public static final String FIELD_BASE_DIR_NAME = "baseDirName";
public static final String FIELD_LATEST_DEPLOY_VERSION =
"latestDeploymentVersion";
public static final String FIELD_LATEST_DEPLOY_DATE =
"latestDeploymentDate";
public static final String FIELD_LATEST_DEPLOY_STATUS =
"latestDeploymentStatus";
@@ -88,6 +89,10 @@ public class BundleDestinationDataSource extends
RPCDataSource<BundleDestination
DataSourceTextField group = new DataSourceTextField(FIELD_GROUP_NAME,
MSG.view_bundle_dest_group());
fields.add(group);
+ DataSourceTextField baseDirName = new DataSourceTextField(FIELD_BASE_DIR_NAME,
MSG
+ .view_bundle_dest_baseDirName());
+ fields.add(baseDirName);
+
DataSourceTextField deployDir = new DataSourceTextField(FIELD_DEPLOY_DIR,
MSG.view_bundle_dest_deployDir());
fields.add(deployDir);
@@ -204,6 +209,7 @@ public class BundleDestinationDataSource extends
RPCDataSource<BundleDestination
record.setAttribute(FIELD_BUNDLE_NAME, from.getBundle().getName());
record.setAttribute(FIELD_GROUP_ID, from.getGroup().getId());
record.setAttribute(FIELD_GROUP_NAME, from.getGroup().getName());
+ record.setAttribute(FIELD_BASE_DIR_NAME,
from.getDestinationBaseDirectoryName());
record.setAttribute(FIELD_DEPLOY_DIR, from.getDeployDir());
record.setAttribute("object", from);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationListView.java
index bbd20f6..6e3d4cd 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationListView.java
@@ -65,6 +65,8 @@ public class BundleDestinationListView extends
Table<BundleDestinationDataSource
.view_bundle_bundle());
ListGridField groupNameField = new
ListGridField(BundleDestinationDataSource.FIELD_GROUP_NAME, MSG
.view_bundle_dest_group());
+ ListGridField baseDirNameField = new
ListGridField(BundleDestinationDataSource.FIELD_BASE_DIR_NAME, MSG
+ .view_bundle_dest_baseDirName());
ListGridField deployDirField = new
ListGridField(BundleDestinationDataSource.FIELD_DEPLOY_DIR, MSG
.view_bundle_dest_deployDir());
ListGridField latestDeploymentVersionField = new ListGridField(
@@ -82,7 +84,7 @@ public class BundleDestinationListView extends
Table<BundleDestinationDataSource
Integer bundleId =
listGridRecord.getAttributeAsInt(BundleDestinationDataSource.FIELD_BUNDLE_ID);
Integer bundleDestId =
listGridRecord.getAttributeAsInt(BundleDestinationDataSource.FIELD_ID);
return "<a href=\"" +
LinkManager.getBundleDestinationLink(bundleId, bundleDestId) + "\">"
- + StringUtility.escapeHtml(value.toString()) +
"</a>";
+ + StringUtility.escapeHtml(value.toString()) +
"</a>";
}
});
@@ -90,7 +92,7 @@ public class BundleDestinationListView extends
Table<BundleDestinationDataSource
public String format(Object value, ListGridRecord listGridRecord, int i, int
i1) {
Integer groupId =
listGridRecord.getAttributeAsInt(BundleDestinationDataSource.FIELD_GROUP_ID);
return "<a href=\"" +
LinkManager.getResourceGroupLink(groupId) + "\">"
- + StringUtility.escapeHtml(value.toString()) +
"</a>";
+ + StringUtility.escapeHtml(value.toString()) +
"</a>";
}
});
@@ -98,7 +100,7 @@ public class BundleDestinationListView extends
Table<BundleDestinationDataSource
public String format(Object value, ListGridRecord listGridRecord, int i, int
i1) {
Integer bid =
listGridRecord.getAttributeAsInt(BundleDestinationDataSource.FIELD_BUNDLE_ID);
return "<a href=\"" + LinkManager.getBundleLink(bid) +
"\">"
- + StringUtility.escapeHtml(value.toString()) +
"</a>";
+ + StringUtility.escapeHtml(value.toString()) +
"</a>";
}
});
@@ -114,18 +116,19 @@ public class BundleDestinationListView extends
Table<BundleDestinationDataSource
latestDeploymentStatusField.setShowValueIconOnly(true);
idField.setWidth(50);
- nameField.setWidth("20%");
- descriptionField.setWidth("25%");
+ nameField.setWidth("15%");
+ descriptionField.setWidth("20%");
bundleNameField.setHidden(true);
groupNameField.setWidth("15%");
- deployDirField.setWidth("20%");
+ baseDirNameField.setWidth("15%");
+ deployDirField.setWidth("15%");
latestDeploymentVersionField.setWidth("10%");
latestDeploymentDateField.setWidth("10%");
latestDeploymentStatusField.setWidth(80);
// XXX there seems to be a bug here - i want to hide the bundle column, but
setHidden(true) causes the entire rendering to fail
- setListGridFields(idField, nameField, descriptionField, /*bundleNameField,
*/groupNameField, deployDirField,
- latestDeploymentVersionField, latestDeploymentDateField,
latestDeploymentStatusField);
+ setListGridFields(idField, nameField, descriptionField, /*bundleNameField,
*/groupNameField, baseDirNameField,
+ deployDirField, latestDeploymentVersionField, latestDeploymentDateField,
latestDeploymentStatusField);
setListGridDoubleClickHandler(new DoubleClickHandler() {
@Override
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
index 0a805e0..bd0bc67 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
@@ -140,13 +140,16 @@ public class BundleDestinationView extends LocatableVLayout
implements Bookmarka
destinationGroup.setLinkTitle(StringUtility.escapeHtml(destination.getGroup().getName()));
destinationGroup.setTarget("_self");
+ StaticTextItem baseDirName = new StaticTextItem("baseDir",
MSG.view_bundle_dest_baseDirName());
+ baseDirName.setValue(destination.getDestinationBaseDirectoryName());
+
StaticTextItem path = new StaticTextItem("path",
MSG.view_bundle_dest_deployDir());
path.setValue(destination.getDeployDir());
StaticTextItem description = new StaticTextItem("description",
MSG.common_title_description());
description.setValue(StringUtility.escapeHtml(destination.getDescription()));
- form.setFields(bundleName, actionItem, created, destinationGroup, path,
description);
+ form.setFields(bundleName, actionItem, created, destinationGroup, baseDirName,
path, description);
return form;
}
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 c1e745b..d62e049 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
@@ -916,7 +916,7 @@ view_bundle_deployWizard_error_9 = Failed to delete new destination in
nextPage
view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
view_bundle_deployWizard_getDestStep = New Destination
-view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)
+view_bundle_deployWizard_getDest_deployDir = Deployment Directory
view_bundle_deployWizard_getDest_desc = Destination Description
view_bundle_deployWizard_getDest_name = Destination Name
view_bundle_deployWizard_getInfoStep = Provide Deployment Information
@@ -955,6 +955,7 @@ view_bundle_deploy_time = Deployment Time
view_bundle_deployed = Deployed
view_bundle_deployments = Deployments
view_bundle_dest_backToBundle = Back to Bundle
+view_bundle_dest_baseDirName = Base Location
view_bundle_dest_created = Created
view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle destination?
This only deletes it from the database; all bundle content that was deployed to this
destination on remote machines will remain.
view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
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 9e1efbd..30def7c 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
@@ -779,7 +779,7 @@ view_bundle_deployWizard_error_9 = Failed to delete new destination in
nextPage~
view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.~
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration~
view_bundle_deployWizard_getDestStep = New Destination~
-view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)~
+##view_bundle_deployWizard_getDest_deployDir = Deployment Directory
view_bundle_deployWizard_getDest_desc = Destination Description~
view_bundle_deployWizard_getDest_name = Destination Name~
view_bundle_deployWizard_getInfoStep = Provide Deployment Information~
@@ -813,6 +813,7 @@ view_bundle_deploy_time = Deployment Time~
view_bundle_deployed = Deployed
view_bundle_deployments = Deployments
view_bundle_dest_backToBundle = Zurück zum Bundle
+##view_bundle_dest_baseDirName = Base Location
view_bundle_dest_created = Angelegt
view_bundle_dest_deployDir = Deploy-Verzeichnis
view_bundle_dest_group = Gruppe
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 3e43cf4..837d613 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
@@ -917,7 +917,7 @@ view_bundle_deployWizard_error_9 = Failed to delete new destination in
nextPage
view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
view_bundle_deployWizard_getDestStep = New Destination
-view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)
+##view_bundle_deployWizard_getDest_deployDir = Deployment Directory
view_bundle_deployWizard_getDest_desc = Destination Description
view_bundle_deployWizard_getDest_name = Destination Name
view_bundle_deployWizard_getInfoStep = Provide Deployment Information
@@ -956,6 +956,7 @@ view_bundle_deploy_time = Deployment Time
view_bundle_deployed = Deployed
view_bundle_deployments = Deployments
view_bundle_dest_backToBundle = Back to Bundle
+##view_bundle_dest_baseDirName = Base Location
view_bundle_dest_created = Created
view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle destination?
This only deletes it from the database; all bundle content that was deployed to this
destination on remote machines will remain.
view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
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 3dd563c..8313b56 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
@@ -934,7 +934,7 @@ view_bundle_deployWizard_error_9 = Failed to delete new destination in
nextPage:
view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.~
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration~
view_bundle_deployWizard_getDestStep = New Destination~
-view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)~
+##view_bundle_deployWizard_getDest_deployDir = Deployment Directory
view_bundle_deployWizard_getDest_desc = Destination Description~
view_bundle_deployWizard_getDest_name = Destination Name~
view_bundle_deployWizard_getInfoStep = Provide Deployment Information~
@@ -973,6 +973,7 @@ view_bundle_deploy_time = Deployment Time~
view_bundle_deployed = Deployed~
view_bundle_deployments = Deployments~
view_bundle_dest_backToBundle = Back to Bundle~
+##view_bundle_dest_baseDirName = Base Location
view_bundle_dest_created = Created~
view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle destination?
This only deletes it from the database; all bundle content that was deployed to this
destination on remote machines will remain.
view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
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 2de927f..f488ffc 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
@@ -916,7 +916,7 @@ view_bundle_deployWizard_error_9 = Failed to delete new destination in
nextPage
view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
view_bundle_deployWizard_getDestStep = \u65B0\u5EFA\u76EE\u7684\u5730
-view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)
+##view_bundle_deployWizard_getDest_deployDir = Deployment Directory
view_bundle_deployWizard_getDest_desc = \u76EE\u7684\u5730\u63CF\u8FF0
view_bundle_deployWizard_getDest_name = \u76EE\u7684\u5730\u540D
view_bundle_deployWizard_getInfoStep = \u63D0\u4F9B\u53D1\u5E03\u4FE1\u606F
@@ -955,6 +955,7 @@ view_bundle_deploy_time = \u53D1\u5E03\u65F6\u95F4
view_bundle_deployed = \u5DF2\u53D1\u5E03
view_bundle_deployments = \u53D1\u5E03
view_bundle_dest_backToBundle = \u8FD4\u56DEBundle
+##view_bundle_dest_baseDirName = Base Location
view_bundle_dest_created = \u5DF2\u521B\u5EFA
view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle destination?
This only deletes it from the database; all bundle content that was deployed to this
destination on remote machines will remain.
view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
commit c51f62d0ca5118874b3c3ea3d000f06f474af117
Merge: 42c0276 ea15f1e
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Tue Jun 7 16:26:30 2011 -0400
Merge commit 'origin/master' into nonplatform-bundles-644328
Conflicts:
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_de.properties
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_ja.properties
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_pt.properties
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages_zh.properties
this just removed ^M EOL chars
commit 42c0276d756a82471201834e76ff7140834a557f
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Tue Jun 7 15:43:15 2011 -0400
Normalize Resource Bundle Format
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 276c465..2782b79 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
@@ -1,1804 +1,1794 @@
-#
-# RHQ GUI i18n Messages - Default (English)
-#
-# Developers: See the following wiki page for how to work with this file:
-#
-#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
-#
-###################################
-
-common_alert_high = High
-common_alert_low = Low
-common_alert_medium = Medium
-common_buildInfo_gwtVersion = ${gwt.version}
-common_button_ack = Acknowledge
-common_button_ack_all = Acknowledge All
-common_button_add = Add
-common_button_advanced = Advanced...
-common_button_apply = Apply
-common_button_cancel = Cancel
-common_button_close = Close
-common_button_compare = Compare
-common_button_create_child = Create Child
-common_button_delete = Delete
-common_button_delete_all = Delete All
-common_button_disable = Disable
-common_button_edit = Edit
-common_button_enable = Enable
-common_button_finish = Finish
-common_button_import = Import
-common_button_new = New
-common_button_next = Next
-common_button_ok = OK
-common_button_previous = Previous
-common_button_purgeAll = Purge All
-common_button_refresh = Refresh
-common_button_reset = Reset
-common_button_save = Save
-common_button_schedule = Schedule
-common_button_search = Search
-common_button_set = Set
-common_button_showDetails = Show Details...
-common_button_uninventory = Uninventory
-common_calendar_april_short = apr
-common_calendar_august_short = aug
-common_calendar_december_short = dec
-common_calendar_february_short = feb
-common_calendar_january_short = jan
-common_calendar_july_short = jul
-common_calendar_june_short = jun
-common_calendar_march_short = mar
-common_calendar_may_short = may
-common_calendar_november_short = nov
-common_calendar_october_short = oct
-common_calendar_september_short = sept
-common_label_ago = ago
-common_label_all = ALL
-common_label_all_resources = all resources
-common_label_day = day
-common_label_days = days
-common_label_hour = hour
-common_label_hours = hours
-common_label_item = item
-common_label_items = items
-common_label_milliseconds = milliseconds
-common_label_minutes = minutes
-common_label_month = month
-common_label_none = none
-common_label_role = role
-common_label_roles = roles
-common_label_scheduled_operations = scheduled operations
-common_label_seconds = seconds
-common_label_selected_resources = selected resources
-common_label_unlimited = unlimited
-common_label_user = user
-common_label_users = users
-common_label_week = week
-common_label_weeks = weeks
-common_label_yesterday = Yesterday
-common_msg_areYouSure = Are You Sure?
-common_msg_asyncTimeout = {0}. This occurred because the server is taking a long time to
complete this request. Please be aware that the server may still be processing your
request and it may complete shortly. You can check the server logs to see if any abnormal
errors occurred.
-common_msg_changeAutoDetected = Change auto-detected
-common_msg_deleteConfirm = Are you sure you want to delete the # selected {0}?
-common_msg_emphasizedNotePrefix = NOTE:
-common_msg_loading = Loading...
-common_msg_noItemsToShow = No items to show
-common_msg_notYetImplemented = Not Yet Implemented
-common_msg_see_more = see more...
-common_msg_step_x_of_y = Step {0} of {1}
-common_severity_debug = Debug
-common_severity_error = Error
-common_severity_fatal = Fatal
-common_severity_info = Info
-common_severity_warn = Warn
-common_status_canceled = Canceled
-common_status_deferred = Deferred
-common_status_failed = Failed
-common_status_inprogress = In Progress
-common_status_nochange = No Change
-common_status_partial = Partial
-common_status_success = Success
-common_status_timedOut = Timed Out
-common_status_unknown = Unknown
-common_title_add_column = Add Column
-common_title_add_graph_to_view = Add Graph to Monitor View
-common_title_add_portlet = Add Portlet
-common_title_address = Address
-common_title_alert_range = Alert Range
-common_title_ancestry = Ancestry
-common_title_availability = Availability
-common_title_available_resources = Available Resources
-common_title_average_metrics = Average Metrics per Minute
-common_title_background = Background
-common_title_bundle = Bundle
-common_title_bundles = Bundles
-common_title_category = Category
-common_title_change_refresh_time = Refresh Interval
-common_title_columns = Columns
-common_title_compare_metrics = Compare Metrics
-common_title_compatibleGroups = Compatible Groups
-common_title_compatibleGroups_total = Compatible Group Total
-common_title_component_errors = Component Errors
-common_title_config_update_status = Update Status
-common_title_configuration = Configuration
-common_title_count = Count
-common_title_custom = Custom
-common_title_dashboard_name = Dashboard Name
-common_title_dateCreated = Date Created
-common_title_dateRange = Date Range
-common_title_default = Default
-common_title_description = Description
-common_title_details = Details
-common_title_display = Display
-common_title_display_name = Display Name
-common_title_duration = Duration
-common_title_edit_mode = Edit Mode
-common_title_enabled = Enabled?
-common_title_end = End
-common_title_error = Error
-common_title_generalProp = General Properties
-common_title_group = Group
-common_title_group_def_total = Group Definition Total
-common_title_group_member_health = Group Member Health
-common_title_groups = Groups
-common_title_help = Help
-common_title_host = Host
-common_title_icon =
-common_title_id = ID
-common_title_id_parent = Parent ID
-common_title_info = Info
-common_title_inventory = Inventory
-common_title_inventorySummary = Inventory Summary
-common_title_lastUpdated = Last Updated
-common_title_lastUpdatedBy = Last Updated By
-common_title_ldapGroups = LDAP Groups
-common_title_mashup = Mashup
-common_title_members_reporting = Members Reporting
-common_title_message = Message
-common_title_metric = Metric
-common_title_metric_chart = Metric Chart
-common_title_mixedGroups = Mixed Groups
-common_title_mixedGroups_total = Mixed Group Total
-common_title_name = Name
-common_title_new_dashboard = New Dashboard
-common_title_numeric_metrics = Numeric Metrics
-common_title_numeric_type = Numeric Type
-common_title_operation_status = Operation Status
-common_title_operations = Operations
-common_title_operations_range = Operation Range
-common_title_over = Over
-common_title_password = Password
-common_title_path = Path
-common_title_permissions = Permissions
-common_title_platform = Platform
-common_title_platform_total = Platform Total
-common_title_plugin = Plugin
-common_title_port = Port
-common_title_providers = Providers
-common_title_recent_alerts = Recent Alerts
-common_title_recent_bundle_deployments = Recent Bundle Deployments
-common_title_recent_configuration_updates = Recent Configuration Updates
-common_title_recent_event_counts = Recent Event Counts
-common_title_recent_measurements = Recent Measurements
-common_title_recent_oob_metrics = Recent Out of Bound metrics
-common_title_recent_operations = Recent Operations
-common_title_recent_pkg_history = Recent Package History
-common_title_recently_added = Recently Added
-common_title_remove_column = Remove Column
-common_title_repositories = Repositories
-common_title_resource = Resource
-common_title_resourceGroups = Resource Groups
-common_title_resource_group = Resource Group
-common_title_resource_id = Resource ID
-common_title_resource_inventory = Resource Inventory
-common_title_resource_key = Resource Key
-common_title_resource_name = Resource Name
-common_title_resource_type = Resource Type
-common_title_resources = Resources
-common_title_results_count = Results Count
-common_title_results_count_tooltip = Displays this number of results
-common_title_role = Role
-common_title_roles = Roles
-common_title_scheduled_operations = Scheduled Operations
-common_title_search = Search
-common_title_selected_resources = Selected Resources
-common_title_server = Server
-common_title_server_total = Server Total
-common_title_service = Service
-common_title_service_total = Service Total
-common_title_settings = Settings
-common_title_show = Show
-common_title_show_more = Show more...
-common_title_sort_order = Sort Order
-common_title_sort_order_tooltip = Sets sort order for results.
-common_title_start = Start
-common_title_status = Status
-common_title_stop = Stop
-common_title_summary = Summary
-common_title_tag_cloud = Tag Cloud
-common_title_the = The
-common_title_timestamp = Date/Time
-common_title_total = Total
-common_title_type = Type
-common_title_units = Units
-common_title_user = User
-common_title_users = Users
-common_title_value = Value
-common_title_version = Version
-common_title_view_mode = View Mode
-common_title_web_address = Web Address
-common_title_welcome = Welcome
-common_unit_days = days
-common_unit_hours = hours
-common_unit_milliseconds = milliseconds
-common_unit_minutes = minutes
-common_unit_months = months
-common_unit_seconds = seconds
-common_unit_times = times
-common_unit_weeks = weeks
-common_unit_years = years
-common_val_for = for
-common_val_n1st = {0}st
-common_val_n2nd = {0}nd
-common_val_n3rd = {0}rd
-common_val_na = N/A
-common_val_never = Never
-common_val_no = No
-common_val_no_lower = no
-common_val_none = None
-common_val_nth = {0}th
-common_val_yes = Yes
-common_val_yes_lower = yes
-
-dataSource_ContentRepoTree_error_load = Error loading repositories
-dataSource_ContentRepoTree_field_parentId = Parent ID
-dataSource_bundle_loadFailed = Failed to load Bundle data
-dataSource_configurationHistory_clickToSeeError = Double click to see error message...
-dataSource_configurationHistory_currentConfig = This is the current configuration
-dataSource_configurationHistory_dateCompleted = Date Completed
-dataSource_configurationHistory_dateSubmitted = Date Submitted
-dataSource_configurationHistory_error_fetchFailure = Unable to load configuration
history.
-dataSource_configurationHistory_updateType = Update Type
-dataSource_configurationHistory_updateType_group = Group
-dataSource_configurationHistory_updateType_individual = Individual
-dataSource_definitions_loadFailed = Failed to load metric definitions
-dataSource_measurementOob_error_fetchFailure = Failed to load measurement OOB
information
-dataSource_measurementOob_field_factor = Out of Range Factor (%)
-dataSource_measurementOob_field_formattedBaseband = Band
-dataSource_measurementOob_field_formattedOutlier = Outlier
-dataSource_measurementOob_field_parentName = Parent
-dataSource_measurementOob_field_resourceName = Resource
-dataSource_measurementOob_field_scheduleName = Metric
-dataSource_operationHistory_error_fetchFailure = Failure loading operation histories.
-dataSource_operationHistory_field_createdTime = Created Time
-dataSource_operationHistory_field_operationName = Operation Name
-dataSource_operationHistory_field_startedTime = Started Time
-dataSource_operationHistory_field_subject = Requester
-dataSource_operationSchedule_field_description = Notes
-dataSource_operationSchedule_field_id = Schedule ID
-dataSource_operationSchedule_field_nextFireTime = Next Execution
-dataSource_operationSchedule_field_operationDisplayName = Operation
-dataSource_operationSchedule_field_operationName = Operation
-dataSource_operationSchedule_field_subject = Owner
-dataSource_operationSchedule_field_timeout = Timeout (in seconds)
-dataSource_platforms_field_cpu = CPU
-dataSource_platforms_field_memory = Memory
-dataSource_platforms_field_swap = Swap
-dataSource_problemResources_error_fetchFailure = Failed to load Resources with
alerts/unavailability.
-dataSource_problemResources_field_alerts = Alerts
-dataSource_problemResources_field_available = Current Availability
-dataSource_recentOperations_error_fetchFailure = Failed to load recently completed
operations.
-dataSource_recentOperations_field_location = Location
-dataSource_recentOperations_field_operation = Operation
-dataSource_recentOperations_field_resource = Resource
-dataSource_recentOperations_field_status = Status
-dataSource_recentOperations_field_time = Date/Time
-dataSource_resourceErrors_clickStatusIcon = Click the icon for more details
-dataSource_resourceErrors_deleteFailure = Failed to delete resource errors
-dataSource_resourceErrors_deleteSuccess = You have successfully deleted [{0}] resource
error messages.
-dataSource_resourceErrors_error_fetchFailure = Failed to find Resource errors for
Resource with id [{0}].
-dataSource_resourceErrors_field_errorType = Error Type
-dataSource_resourceErrors_field_summary = Summary
-dataSource_resourceErrors_field_timeOccured = Time
-dataSource_resourceGroups_loadFailed = Failed to load Resource Groups
-dataSource_resources_field_discoveryTime = Discovery Time
-dataSource_resources_field_importTime = Import Time
-dataSource_resources_field_key = Key
-dataSource_resources_field_lastModifiedTime = Last Modified Time
-dataSource_resources_field_lastModifier = Last Modifier
-dataSource_resources_field_location = Location
-dataSource_rpc_error_transformRequestFailure = Failure in datasource while processing {0}
request.
-dataSource_rpc_error_unsupportedArrayFilterType = No support for passing array filters of
type {0}.
-dataSource_rpc_error_unsupportedEnumType = Please add an appropriate code block for enum
{0} to RPCDataSource.getEnumArray(Class)
-dataSource_rpc_no = no
-dataSource_rpc_yes = yes
-dataSource_scheduledOperations_error_fetchFailure = Failed to load scheduled operations.
-dataSource_scheduledOperations_field_location = Location
-dataSource_scheduledOperations_field_operation = Operation
-dataSource_scheduledOperations_field_resource = Resource
-dataSource_scheduledOperations_field_time = Date/Time
-dataSource_schedules_disableFailure_group = Failed to disable the collection of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_disableFailure_resource = Failed to disable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_disableSuccessful_concise = You have disabled the collection of
[{0}] measurements
-dataSource_schedules_disableSuccessful_full_group = You have disabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The disabled measurements are:
[{2}]
-dataSource_schedules_disableSuccessful_full_resource = You have disabled the collection
of [{0}] measurements for the resource with ID [{1}]. The disabled measurements are:
[{2}]
-dataSource_schedules_enableFailure_group = Failed to enable the collection of [{0}]
metrics for group with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_enableFailure_resource = Failed to enable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_enableSuccessful_concise = You have enabled the collection of [{0}]
measurements
-dataSource_schedules_enableSuccessful_full_group = You have enabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The enabled measurements are:
[{2}]
-dataSource_schedules_enableSuccessful_full_resource = You have enabled the collection of
[{0}] measurements for the resource with ID [{1}]. The enabled measurements are: [{2}]
-dataSource_schedules_field_resourceGroupId = Group ID
-dataSource_schedules_loadFailed = Failed to load metric schedules
-dataSource_schedules_loadFailedContext = Failed to load metric schedules for context
[{0}]
-dataSource_schedules_loadFailedCriteria = Failed to load metric schedules for criteria
[{0}]
-dataSource_schedules_updateFailure_group = Failed to set the collection interval of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
-dataSource_schedules_updateFailure_resource = Failed to set the collection interval of
[{0}] metrics for resource with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
-dataSource_schedules_updateSuccessful_concise = A new collection interval of [{0}]
seconds has been set on [{1}] measurements
-dataSource_schedules_updateSuccessful_full_group = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource group with ID [{2}]. The updated
measurements are: [{3}]
-dataSource_schedules_updateSuccessful_full_resource = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource with ID [{2}]. The updated
measurements are: [{3}]
-dataSource_traits_failFetch = Failed to fetch traits for criteria [{0}].
-dataSource_traits_field_definitionID = Definition ID
-dataSource_traits_field_lastChanged = Last Changed
-dataSource_traits_field_primaryKey = Primary Key
-dataSource_traits_field_trait = Trait
-dataSource_traits_group_field_groupId = Group ID
-dataSource_users_delete = Deleted user [{0}]
-dataSource_users_deleteFailed = Failed to delete user [{0}]
-dataSource_users_field_department = Department
-dataSource_users_field_emailAddress = Email Address
-dataSource_users_field_factive = Login Enabled?
-dataSource_users_field_firstName = First Name
-dataSource_users_field_id = ID
-dataSource_users_field_lastName = Last Name
-dataSource_users_field_ldap = LDAP Login?
-dataSource_users_field_name = User Name
-dataSource_users_field_password = Password
-dataSource_users_field_passwordVerify = Verify Password
-dataSource_users_field_phoneNumber = Phone Number
-dataSource_users_invalidEmailAddress = Invalid email address.
-dataSource_users_passwordsDoNotMatch = Passwords do not match.
-
-datasource_roles_field_ldapGroups = LDAP Groups
-datasource_roles_field_permissions = Permissions
-datasource_roles_field_resourceGroups = Resource Groups
-datasource_roles_field_subjects = Subjects
-datasource_templateSchedules_disabled = Disabled collection of selected metric [{0}].
-datasource_templateSchedules_disabled_detailed = Disabled collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
-datasource_templateSchedules_disabled_failed = Failed to disable collection of metric
[{0}] [{1}] by default for ResourceType with id [{2}].
-datasource_templateSchedules_enabled = Enabled collection of selected metric [{0}].
-datasource_templateSchedules_enabled_detailed = Enabled collection of metric [{0}] [{1}]
by default for ResourceType with id [{2}].
-datasource_templateSchedules_enabled_failed = Failed to enable collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
-datasource_templateSchedules_updated = Updated collection intervals of selected metric
[{0}].
-datasource_templateSchedules_updated_detail = Collection interval for metric [{0}] [{1}]
by default for ResourceType with id [{2}] set to [{3}] seconds.
-datasource_templateSchedules_updated_failed = Failed to set collection interval to [{0}]
seconds for metric [{1}] [{2}] by default for ResourceType with id [{3}].
-
-favorites = Favorites
-
-favorites_groups = Favorite Groups
-favorites_recentlyViewed = Recently Viewed
-favorites_resources = Favorite Resources
-
-group_tree_partialClusterTooltip = {0} out of {1} group members have a
''{2}'' resource
-
-util_ancestry_parentAncestry = Parent Ancestry for:
-util_errorHandler_nullException = exception was null
-util_monitoringRequestCallback_error_checkServerStatusFailure = Unable to determine login
status - check Server status.
-util_rpcManager_activeRequests = {0} Active Requests
-util_userPerm_loadFailGlobal = Failed to load your global permissions - none granted.
-util_userPerm_loadFailGroup = Failed to load your permissions for Resource Group with id
[{0}] - none granted.
-util_userPerm_loadFailResource = Failed to load your permissions for Resource with id
[{0}] - none granted.
-util_userSession_loadFailSubject = UserSessionManager: Failed to load user Subject
-util_userSession_logoutFail = Failed to logout.
-util_widgetsField_unlimited = Unlimited
-
-view_aboutBox_allRightsReserved = All Rights Reserved.
-view_aboutBox_buildNumber = Build Number:
-view_aboutBox_failedToLoad = Failed to load product information.
-view_aboutBox_homepage = Homepage
-view_aboutBox_jbossByRedHat = JBoss by Red Hat
-view_aboutBox_title = About {0}
-view_aboutBox_version = Version:
-view_adminConfig_downloads = Downloads
-view_adminConfig_plugins = Plugins
-view_adminConfig_systemSettings = System Settings
-view_adminConfig_templates = Templates
-view_adminContent_contentSources = Content Sources
-view_adminContent_repositories = Repositories
-view_adminRoles_assignedGroups = Assigned Resource Groups
-view_adminRoles_assignedSubjects = Assigned Subjects
-view_adminRoles_failLdap = Failed to determine if LDAP configured - assuming no
LDAP.
-view_adminRoles_failLdapGroups = Failed to retrieve available LDAP groups - assuming no
LDAP groups.
-view_adminRoles_failLdapGroupsRole = Failed to load LDAP groups available for role.
-view_adminRoles_failRoles = Failed to fetch roles.
-view_adminRoles_globalPerms = Global Permissions
-view_adminRoles_ldapGroups = LDAP Groups
-view_adminRoles_ldapGroupsReadOnly = LDAP group data is read only
-view_adminRoles_noItems = No items to show
-view_adminRoles_noLdap = The LDAP security integration is not configured. To
configure LDAP, go to <a {0}>{1}</a>.
-view_adminRoles_permissions_autoselecting_configureRead_implied = Autodeselected
CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
-view_adminRoles_permissions_autoselecting_configureWrite_implied = Autoselected
CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
-view_adminRoles_permissions_autoselecting_manageInventory_implied = Autoselected
unselected Resource permissions, since MANAGE_INVENTORY implies all Resource
permissions...
-view_adminRoles_permissions_autoselecting_manageSecurity_implied = Autoselected
unselected permissions, since MANAGE_SECURITY implies all other permissions...
-view_adminRoles_permissions_globalPermissions = Global Permissions
-view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection = {0}
read permission cannot be deselected, unless the {0} write permission, which implies the
read permission, is deselected first.
-view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection = {0}
permission cannot be deselected, unless Manage Inventory, which implies all Resource
permissions, is deselected first.
-view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection = {0}
permission cannot be deselected, unless the Manage Security permission, which implies all
other permissions, is deselected first.
-view_adminRoles_permissions_isAuthorized = Authorized?
-view_adminRoles_permissions_isRead = Read?
-view_adminRoles_permissions_isWrite = Write?
-view_adminRoles_permissions_permDesc_manageBundles = can create, update, or delete
provisioning bundles (viewing is implied for everyone)
-view_adminRoles_permissions_permDesc_manageInventory = has all Resource permissions, as
described below, for all Resources; can create, update, and delete groups; and can import
auto-discovered or manually discovered Resources
-view_adminRoles_permissions_permDesc_manageRepositories = can create, update, or delete
repositories of any user (everyone can create their own repositories), can associate
content sources to repositories.
-view_adminRoles_permissions_permDesc_manageSecurity = can create, update, or delete users
and roles (viewing is implied for everyone)
-view_adminRoles_permissions_permDesc_manageSettings = can modify the RHQ Server
configuration and perform any Server-related functionality
-view_adminRoles_permissions_permReadDesc_configure = view Resource configuration and
Resource configuration revision history
-view_adminRoles_permissions_permReadDesc_control = (IMPLIED) view available operations
and operation execution history
-view_adminRoles_permissions_permReadDesc_createChildResources = (IMPLIED) view child
Resource creation history
-view_adminRoles_permissions_permReadDesc_deleteChildResources = (IMPLIED) view child
Resource deletion history
-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_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
-view_adminRoles_permissions_permWriteDesc_control = execute operations; delete operation
execution history items
-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_manageContent = subscribe to content sources;
install and uninstall packages
-view_adminRoles_permissions_permWriteDesc_manageEvents = delete events
-view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection
schedules
-view_adminRoles_permissions_perm_configure = Configure
-view_adminRoles_permissions_perm_control = Control
-view_adminRoles_permissions_perm_createChildResources = Create Child Resources
-view_adminRoles_permissions_perm_deleteChildResources = Delete Child Resources
-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_manageEvents = Manage Events
-view_adminRoles_permissions_perm_manageInventory = Manage Inventory
-view_adminRoles_permissions_perm_manageMeasurements = Manage Measurements
-view_adminRoles_permissions_perm_manageRepositories = Manage Repositories
-view_adminRoles_permissions_perm_manageSecurity = Manage Security
-view_adminRoles_permissions_perm_manageSettings = Manage Settings
-view_adminRoles_permissions_read = Read:
-view_adminRoles_permissions_readAccessImplied = Read access for the {0} permission is
implied and cannot be disabled.
-view_adminRoles_permissions_resourcePermissions = Resource Permissions
-view_adminRoles_permissions_write = Write:
-view_adminRoles_perms = Permissions
-view_adminRoles_resourcePerms = Resource Permissions
-view_adminRoles_roleAdded = Role [{0}] added.
-view_adminRoles_roleDeleteFailed = Failed to delete role [{0}].
-view_adminRoles_roleDeleted = Role [{0}] deleted.
-view_adminRoles_roleUpdateFailed = Failed to update role [{0}].
-view_adminRoles_roleUpdated = Role [{0}] updated.
-view_adminSecurity_roles = Roles
-view_adminSecurity_users = Users
-view_adminTemplates_disabledAlertTemplates = Disabled Alert Templates
-view_adminTemplates_disabledMetricTemplates = Disabled Metric Templates
-view_adminTemplates_editAlertTemplate = Edit Alert Template
-view_adminTemplates_editMetricTemplate = Edit Metric Template
-view_adminTemplates_enabledAlertTemplates = Enabled Alert Templates
-view_adminTemplates_enabledMetricTemplates = Enabled Metric Templates
-view_adminTemplates_platformServices = Platform Services
-view_adminTemplates_platforms = Platforms
-view_adminTemplates_prompt_disabledAlertTemplates = Number of alert templates that are
created but disabled on this resource type
-view_adminTemplates_prompt_disabledMetricTemplates = Number of metric schedules that are
disabled by default on this resource type
-view_adminTemplates_prompt_enabledAlertTemplates = Number of alert templates that are
enabled on this resource type
-view_adminTemplates_prompt_enabledMetricTemplates = Number of metric schedules that are
enabled by default on this resource type
-view_adminTemplates_servers = Servers
-view_adminTopology_affinityGroups = Affinity Groups
-view_adminTopology_agents = Agents
-view_adminTopology_partitionEvents = Partition Events
-view_adminTopology_remoteAgentInstall = Remote Agent Install
-view_adminTopology_servers = Servers
-view_adminUsersDetails_dataTypeName = user
-view_adminUsersList_dataTypeName = user
-view_adminUsersList_dataTypeNamePlural = users
-view_admin_administration = Administration
-view_admin_configuration = Configuration
-view_admin_content = Content
-view_admin_downloads_agentDownload = Agent Download
-view_admin_downloads_agent_buildNumber = Agent Build
-view_admin_downloads_agent_help = <p> This is the RHQ Agent Update Binary jar file.
The purpose of this jar file is to allow you to install a fresh agent on a machine where
an agent does not yet exist and to allow you to update an agent that is already installed
on a machine. For more details, run this agent download jar with the --help command line
option:<br/> <b>java -jar <agent-download.jar> --help</b>
</p> <h3>Agent Install</h3> <p> <b>java -jar
<agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
-view_admin_downloads_agent_link_label = Link
-view_admin_downloads_agent_link_value = Download Agent {0} ({1})
-view_admin_downloads_agent_loadError = Cannot get agent version info
-view_admin_downloads_agent_md5 = Agent MD5
-view_admin_downloads_agent_version = Agent Version
-view_admin_downloads_bundleDownload = Bundle Deployer Download
-view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is for
use by developers and packagers of RHQ bundles. This standalone tool allows you to test
your bundles and their recipes from a console. </p>
-view_admin_downloads_bundle_link_label = Link
-view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
-view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
-view_admin_downloads_cliDownload = Command Line Client Download
-view_admin_downloads_cli_buildNumber = CLI Build
-view_admin_downloads_cli_help = <p> This is the Command Line Client tool,
otherwise known as the CLI. It is a standalone tool that runs from within a console and
provides a command line interface to the RHQ Server. You can invoke commands via the CLI
as well as run scripts to perform automated tasks. See the documentation for more
information on how to install and use the CLI. </p>
-view_admin_downloads_cli_link_label = Link
-view_admin_downloads_cli_link_value = Download CLI {0} ({1})
-view_admin_downloads_cli_loadError = Cannot get CLI version info
-view_admin_downloads_cli_md5 = CLI MD5
-view_admin_downloads_cli_version = CLI Version
-view_admin_downloads_connectorsDownload = Connectors Download
-view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by RHQ. You install connectors into some managed
products so RHQ agents can talk to them. See the documentation for more information.
-view_admin_downloads_connectors_loadError = Cannot get connectors info
-view_admin_downloads_connectors_none = No connectors are available for download
-view_admin_landing = From this section, the RHQ global settings can be
administered. This includes configuring security, setting up plugins, and managing RHQ
Servers and Agents.
-view_admin_measTemplates_title = Template Metric Collection Schedules
-view_admin_measTemplates_updateExisting_title = Update Existing Schedules
-view_admin_measTemplates_updateExisting_tooltip = Check this box to update the collection
schedules for the selected metrics on all existing resources of this type. If this is not
checked, the template schedules will only be applied to new resources of this type that
are added to inventory in the future.
-view_admin_security = Security
-view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = If this amount of time passes
without hearing from an agent, that quiet agent will be considered down. This value is
specified in minutes.
-view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent Max Quiet Time Allowed
-view_admin_systemSettings_AlertPurge_desc = How old alert history items must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_AlertPurge_name = Delete Alerts Older Than
-view_admin_systemSettings_AvailabilityPurge_desc = How old availability data must be
before being purged from the database. This is specified in days.
-view_admin_systemSettings_AvailabilityPurge_name = Delete Availability Data Older Than
-view_admin_systemSettings_BaseURL_desc = A URL to the server GUI, used mainly within
alert email notifications.
-view_admin_systemSettings_BaseURL_name = GUI Console URL
-view_admin_systemSettings_BaselineDataSet_desc = The amount of past measurement data that
is used to determine a baseline. This is specified in days.
-view_admin_systemSettings_BaselineDataSet_name = Baseline Dataset
-view_admin_systemSettings_BaselineFrequency_desc = The frequency which the
auto-calculation of baselines will be performed. If 0, baseline auto-calculation is
disabled. This is specified in days.
-view_admin_systemSettings_BaselineFrequency_name = Baseline Calculation Frequency
-view_admin_systemSettings_DataMaintenance_desc = How often database maintenance is
performed (for example, vacuuming if using Postgres). This is specified in hours.
-view_admin_systemSettings_DataMaintenance_name = Database Maintenance Period
-view_admin_systemSettings_DataReindex_desc = If enabled, certain database tables will be
re-indexed periodically.
-view_admin_systemSettings_DataReindex_name = Reindex Data Tables Nightly
-view_admin_systemSettings_EnableAgentAutoUpdate_desc = Determines if the server will
allow agents to auto-update themselves. You will not be able to download agent
distributions from the server if this is disabled.
-view_admin_systemSettings_EnableAgentAutoUpdate_name = Enable Agent Auto-Updates
-view_admin_systemSettings_EnableDebugMode_desc = If enabled, the server will enter debug
mode.
-view_admin_systemSettings_EnableDebugMode_name = Enable Debug Mode
-view_admin_systemSettings_EnableExperimentalFeatures_desc = If enabled, any experimental
features that exist in the current product will be available.
-view_admin_systemSettings_EnableExperimentalFeatures_name = Enable Experimental Features
-view_admin_systemSettings_EventPurge_desc = How old event data must be before being
purged from the database. This is specified in days.
-view_admin_systemSettings_EventPurge_name = Delete Events Older Than
-view_admin_systemSettings_JAASProvider_desc = Should LDAP be used to determine user
identity?
-view_admin_systemSettings_JAASProvider_name = Enable LDAP
-view_admin_systemSettings_LDAPBaseDN_desc = The base of the directory tree to search for
usernames and passwords while authenticating users, e.g. ou=People,dc=redhat,dc=com
-view_admin_systemSettings_LDAPBaseDN_name = Search Base
-view_admin_systemSettings_LDAPBindDN_desc = The username to connect to the LDAP server
when querying the LDAP user database. This is typically the full LDAP distinguished name
(DN) of a manager user, e.g. cn=Manager,dc=redhat,dc=com
-view_admin_systemSettings_LDAPBindDN_name = Username
-view_admin_systemSettings_LDAPBindPW_desc = The credentials of the user used to connect
to the LDAP server when querying the LDAP user database.
-view_admin_systemSettings_LDAPBindPW_name = Password
-view_admin_systemSettings_LDAPFilter_desc = Any additional filters to apply when doing
the LDAP search. This is useful if the population to authenticate can be identified via a
given LDAP property, e.g. RHQUser=true
-view_admin_systemSettings_LDAPFilter_name = Search Filter
-view_admin_systemSettings_LDAPGroupFilter_desc = LDAP search filter that must return all
LDAP groups available for authorization. This is used for LDAP group authorization.
-view_admin_systemSettings_LDAPGroupFilter_name = Group Search Filter
-view_admin_systemSettings_LDAPGroupMember_desc = LDAP search filter that is used in
conjunction with the group search filter to determine user authorization. This is used for
LDAP group authorization.
-view_admin_systemSettings_LDAPGroupMember_name = Group Member Filter
-view_admin_systemSettings_LDAPLoginProperty_desc = The LDAP property that contains the
user name. Defaults to "cn". If multiple matches are found, the first entry
found is used.
-view_admin_systemSettings_LDAPLoginProperty_name = Login Property
-view_admin_systemSettings_LDAPProtocol_desc = Should communication with the LDAP server
be done over SSL?
-view_admin_systemSettings_LDAPProtocol_name = SSL
-view_admin_systemSettings_LDAPUrl_desc = URL to the LDAP Server
-view_admin_systemSettings_LDAPUrl_name = LDAP URL
-view_admin_systemSettings_RtDataPurge_desc = How old response time data must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_RtDataPurge_name = Delete Response Time Data Older Than
-view_admin_systemSettings_TraitPurge_desc = How old measurement trait data must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_TraitPurge_name = Delete Measurement Traits Older Than
-view_admin_systemSettings_cannotLoadServerDetails = Cannot load server details
-view_admin_systemSettings_cannotLoadSettings = Cannot obtain the current system settings
-view_admin_systemSettings_fixBeforeSaving = Please fix the invalid values before saving
-view_admin_systemSettings_group_baseline = Automatic Baseline Configuration Properties
-view_admin_systemSettings_group_dataMgr = Data Manager Configuration Properties
-view_admin_systemSettings_group_general = General Configuration Properties
-view_admin_systemSettings_group_ldap = LDAP Configuration Properties
-view_admin_systemSettings_saveFailure = Failed to save the system settings
-view_admin_systemSettings_savedSettings = You successfully saved the system properties
-view_admin_systemSettings_serverDetails = Server Details
-view_admin_systemSettings_serverDetails_buildNumber = Build Number
-view_admin_systemSettings_serverDetails_currentTable = Current Measurement Raw Table
-view_admin_systemSettings_serverDetails_dbDriverName = Database Driver Name
-view_admin_systemSettings_serverDetails_dbDriverVersion = Database Driver Version
-view_admin_systemSettings_serverDetails_dbName = Database Product Name
-view_admin_systemSettings_serverDetails_dbUrl = Database Connection URL
-view_admin_systemSettings_serverDetails_dbVersion = Database Product Version
-view_admin_systemSettings_serverDetails_installDir = Server Installation Directory
-view_admin_systemSettings_serverDetails_nextRotation = Next Measurement Table Rotation
-view_admin_systemSettings_serverDetails_time = Server Local Time
-view_admin_systemSettings_serverDetails_tz = Server Time Zone
-view_admin_topology = Topology
-view_alert_common_tab_conditions = Conditions
-view_alert_common_tab_conditions_expression = Fire alert when
-view_alert_common_tab_conditions_expression_tooltip = Determines if ANY or ALL of the
conditions must evaluate to true in order for the entire condition set to be considered
true.
-view_alert_common_tab_conditions_modal_title = Add Condition
-view_alert_common_tab_conditions_recovery_disabled = This alert caused its alert
definition to be disabled
-view_alert_common_tab_conditions_recovery_enabled = Triggered ''{0}'' to
be re-enabled
-view_alert_common_tab_conditions_text = Condition
-view_alert_common_tab_conditions_type_availability = Availability Change
-view_alert_common_tab_conditions_type_availability_down = Went down
-view_alert_common_tab_conditions_type_availability_up = Came up
-view_alert_common_tab_conditions_type_event = Event Detection
-view_alert_common_tab_conditions_type_event_matching = with event source matching
-view_alert_common_tab_conditions_type_metric_baseline = Metric Value Baseline
-view_alert_common_tab_conditions_type_metric_baseline_verb = of
-view_alert_common_tab_conditions_type_metric_calltime_change = Call Time Value Changes
-view_alert_common_tab_conditions_type_metric_calltime_change_verb = by at least
-view_alert_common_tab_conditions_type_metric_calltime_delta_grows = Grows
-view_alert_common_tab_conditions_type_metric_calltime_delta_other = Changes
-view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = Shrinks
-view_alert_common_tab_conditions_type_metric_calltime_destination = with call destination
matching
-view_alert_common_tab_conditions_type_metric_calltime_threshold = Call Time Value
Threshold
-view_alert_common_tab_conditions_type_metric_change = Metric Value Change
-view_alert_common_tab_conditions_type_metric_threshold = Metric Value Threshold
-view_alert_common_tab_conditions_type_metric_trait_change = Trait Change
-view_alert_common_tab_conditions_type_operation = Operation Execution
-view_alert_common_tab_conditions_type_operation_status = with result status
-view_alert_common_tab_conditions_type_resource_configuration = Resource Configuration
Change
-view_alert_common_tab_conditions_value = Value
-view_alert_common_tab_dampening = Dampening
-view_alert_common_tab_dampening_category_consecutive_count = Consecutive
-view_alert_common_tab_dampening_category_consecutive_count_tooltip = An alert is
triggered once every X occurrences the condition set is true consecutively.
-view_alert_common_tab_dampening_category_duration_count = Time Period
-view_alert_common_tab_dampening_category_duration_count_tooltip = An alert is triggered
once every X occurrences the condition set is true within a given time period.
-view_alert_common_tab_dampening_category_none = None
-view_alert_common_tab_dampening_category_none_tooltip = Dampening is disabled. Every time
the condition set is true, an alert will be triggered.
-view_alert_common_tab_dampening_category_partial_count = Last N Evaluations
-view_alert_common_tab_dampening_category_partial_count_tooltip = An alert is triggered
once every X occurrences the condition set is true during the last N evaluations of the
condition set.
-view_alert_common_tab_dampening_consecutive_occurrences_label = Occurrences
-view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = The number of
times the condition set must be consecutively true before the alert is triggered
-view_alert_common_tab_dampening_duration_occurrences_label = Occurrences
-view_alert_common_tab_dampening_duration_occurrences_label_tooltip = The number of times
the condition set must be true during the given time period before the alert is
triggered.
-view_alert_common_tab_dampening_duration_period_label = Time Period
-view_alert_common_tab_dampening_duration_period_label_tooltip = The time span in which
the condition set will be tested to see if the given number of occurrences are true.
-view_alert_common_tab_dampening_partial_evalatuions_label = Evaluations
-view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = The total number of
times the condition set will be tested to see if the given number of occurrences are
true.
-view_alert_common_tab_dampening_partial_occurrences_label = Occurrences
-view_alert_common_tab_dampening_partial_occurrences_label_tooltip = The number of times
the condition set must be true during the last N evaluations before the alert is
triggered.
-view_alert_common_tab_general = General Properties
-view_alert_common_tab_invalid_condition_category = Invalid condition category - please
report this as a bug: {0}
-view_alert_common_tab_invalid_dampening_category = Invalid dampening category - please
report this as a bug: {0}
-view_alert_common_tab_invalid_time_units = Invalid time units - please report this as a
bug: {0}
-view_alert_common_tab_notifications = Notifications
-view_alert_common_tab_notifications_message = Message
-view_alert_common_tab_notifications_sender = Sender
-view_alert_common_tab_notifications_status = Status
-view_alert_common_tab_recovery = Recovery
-view_alert_definition_condition_editor_avilability_option_down = Goes down
-view_alert_definition_condition_editor_avilability_option_up = Comes up
-view_alert_definition_condition_editor_avilability_tooltip = Specify the availability
state change that will trigger the condition.
-view_alert_definition_condition_editor_avilability_value = Availability
-view_alert_definition_condition_editor_common_avg = Average
-view_alert_definition_condition_editor_common_max = Maximum
-view_alert_definition_condition_editor_common_min = Minimum
-view_alert_definition_condition_editor_delete_confirm = Delete the selected alert
condition(s)?
-view_alert_definition_condition_editor_event_regex = Regular Expression
-view_alert_definition_condition_editor_event_regex_tooltip = If specified, this is a
regular expression that must match a collected event message in order to trigger the
condition.
-view_alert_definition_condition_editor_event_severity = Event Severity
-view_alert_definition_condition_editor_event_severity_debug = Debug
-view_alert_definition_condition_editor_event_severity_error = Error
-view_alert_definition_condition_editor_event_severity_fatal = Fatal
-view_alert_definition_condition_editor_event_severity_info = Info
-view_alert_definition_condition_editor_event_severity_warn = Warn
-view_alert_definition_condition_editor_event_tooltip = Specify the event severity that an
event message must be reported with in order to trigger this condition. If you specify an
optional regular expression, the event message must also match that regular expression in
order for the condition to trigger.
-view_alert_definition_condition_editor_metric_baseline_percentage = Baseline Percentage
-view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = A collected
metric value will trigger this condition when compared to this percentage of the selected
baseline value using the selected comparator
-view_alert_definition_condition_editor_metric_baseline_tooltip = Specify the baseline
value that must be violated to trigger the condition. The value you specify is a
percentage of the given baseline value.
-view_alert_definition_condition_editor_metric_baseline_value = Baseline
-view_alert_definition_condition_editor_metric_calltime_change_percentage = Percentage
Change
-view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip = A
collected calltime value will trigger this condition when it differs by at least this
percentage of the selected calltime limit value
-view_alert_definition_condition_editor_metric_calltime_change_tooltip = Specify the
calltime value that, when changed at least a specified amount, triggers the condition. You
must specify which calltime limit to check (minimum, maximum or average calltime value)
and the percentage of change that must occur.
-view_alert_definition_condition_editor_metric_calltime_common_comparator = Comparator
-view_alert_definition_condition_editor_metric_calltime_common_comparator_changes =
Changes
-view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = Grows
-view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks =
Shrinks
-view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = How a
collected calltime value should be compared to the given calltime limit
-view_alert_definition_condition_editor_metric_calltime_common_limit = Call Time Limit
-view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = The
calltime limit value that is to be compared with the given value
-view_alert_definition_condition_editor_metric_calltime_common_name = Call Time Metric
-view_alert_definition_condition_editor_metric_calltime_common_regex = Regular Expression
-view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip = If
specified, this is a regular expression that must match a call destination in order to
trigger the condition.
-view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Specify the
calltime threshold value that, when violated, triggers the condition. The value you
specify is an absolute value with an optional units specifier. You also must specify which
calltime limit to compare the value with (minimum, maximum or average calltime value).
-view_alert_definition_condition_editor_metric_calltime_threshold_value = Call Time Value
-view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = The
threshold value of the metric that will trigger the condition when compared using the
selected comparator.
-view_alert_definition_condition_editor_metric_change_tooltip = Specify the metric whose
value must change to trigger the condition.
-view_alert_definition_condition_editor_metric_common_definition_not_found = Should have
found metric definition - something is wrong
-view_alert_definition_condition_editor_metric_threshold_comparator = Comparator
-view_alert_definition_condition_editor_metric_threshold_comparator_equal = Equal to
-view_alert_definition_condition_editor_metric_threshold_comparator_greater = Greater
Than
-view_alert_definition_condition_editor_metric_threshold_comparator_less = Less than
-view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = How a
collected metric value should be compared to the given threshold value
-view_alert_definition_condition_editor_metric_threshold_name = Metric
-view_alert_definition_condition_editor_metric_threshold_tooltip = Specify the threshold
value that, when violated, triggers the condition. The value you specify is an absolute
value with an optional units specifier.
-view_alert_definition_condition_editor_metric_threshold_value = Metric Value
-view_alert_definition_condition_editor_metric_threshold_value_tooltip = The threshold
value of the metric that will trigger the condition when compared using the selected
comparator.
-view_alert_definition_condition_editor_metric_trait_change_tooltip = Specify the trait
whose value must change to trigger the condition.
-view_alert_definition_condition_editor_metric_trait_change_value = Trait
-view_alert_definition_condition_editor_operation_status = Operation Status
-view_alert_definition_condition_editor_operation_status_canceled = Canceled
-view_alert_definition_condition_editor_operation_status_failure = Failure
-view_alert_definition_condition_editor_operation_status_inprogress = In Progress
-view_alert_definition_condition_editor_operation_status_success = Success
-view_alert_definition_condition_editor_operation_tooltip = Specify the result that must
occur when the selected operation is executed in order to trigger the condition.
-view_alert_definition_condition_editor_operation_value = Operation
-view_alert_definition_condition_editor_option_availability = Availability Change
-view_alert_definition_condition_editor_option_event = Event Detection
-view_alert_definition_condition_editor_option_label = Condition Type
-view_alert_definition_condition_editor_option_metric_baseline = Measurement Baseline
Threshold
-view_alert_definition_condition_editor_option_metric_calltime_change = Call Time Value
Change
-view_alert_definition_condition_editor_option_metric_calltime_threshold = Call Time Value
Threshold
-view_alert_definition_condition_editor_option_metric_change = Measurement Value Change
-view_alert_definition_condition_editor_option_metric_threshold = Measurement Absolute
Value Threshold
-view_alert_definition_condition_editor_option_metric_trait_change = Trait Value Change
-view_alert_definition_condition_editor_option_operation = Operation Execution
-view_alert_definition_condition_editor_option_resource_configuration = Resource
Configuration Change
-view_alert_definition_condition_editor_resource_configuration_tooltip = This condition is
triggered when the resource configuration changes.
-view_alert_definition_for_group = View Group Definition
-view_alert_definition_for_type = View Template
-view_alert_definition_notification_cliScript_editor_anotherUser = Another User
-view_alert_definition_notification_cliScript_editor_existingScript = Existing Script
-view_alert_definition_notification_cliScript_editor_loadFailed = Loading the CLI
Notification Editor Failed.
-view_alert_definition_notification_cliScript_editor_newScriptVersion = Version
-view_alert_definition_notification_cliScript_editor_repository = Repository
-view_alert_definition_notification_cliScript_editor_script = Script
-view_alert_definition_notification_cliScript_editor_selectRepo = Select the repository
where the script should reside
-view_alert_definition_notification_cliScript_editor_selectRepoFirst = Select a repository
first.
-view_alert_definition_notification_cliScript_editor_thisUser = Myself
-view_alert_definition_notification_cliScript_editor_uploadNewScript = Upload New Script
-view_alert_definition_notification_cliScript_editor_verifyAuthentication = Verify
-view_alert_definition_notification_cliScript_editor_whichUser = User To Run The Script
As
-view_alert_definition_notification_editor_delete_confirm = Are you sure you want to
delete the selected alert notifications?
-view_alert_definition_notification_editor_field_configuration = Configuration
-view_alert_definition_notification_editor_field_configuration_loadFailed = Failed to get
notification configuration preview
-view_alert_definition_notification_editor_field_configuration_not_loaded = Unknown
-view_alert_definition_notification_editor_field_sender = Sender
-view_alert_definition_notification_editor_loadFailed = Cannot get alert senders
-view_alert_definition_notification_editor_loadFailed_single = Cannot get alert sender
configuration definition
-view_alert_definition_notification_editor_none_available = No alert senders available
-view_alert_definition_notification_editor_saveFailed = Cannot save the notification
configuration
-view_alert_definition_notification_editor_sender = Notification Sender
-view_alert_definition_notification_editor_title_add = Add Notification
-view_alert_definition_notification_editor_title_edit = Edit Notification
-view_alert_definition_notification_operation_editor_common_operation = Operation
-view_alert_definition_notification_operation_editor_mode_relative = Relative Resource
-view_alert_definition_notification_operation_editor_mode_specific = Specific Resource
-view_alert_definition_notification_operation_editor_mode_this = This Resource
-view_alert_definition_notification_operation_editor_mode_title = Resource Selection Mode
-view_alert_definition_notification_operation_editor_mode_unknown = UNKNOWN OPTION - THIS
IS A BUG
-view_alert_definition_notification_operation_editor_operations_loadFailed = Failed to
load the list of available operations
-view_alert_definition_notification_operation_editor_operations_no_parameters = This
operation does not take any parameters
-view_alert_definition_notification_operation_editor_relative_ancestor = Start Search
From
-view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed = Cannot
get type ancestry
-view_alert_definition_notification_operation_editor_relative_ancestor_root = Root
Ancestor Type
-view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Select
the top of the type hierarchy from which to search its descendant tree for the Filter By
type
-view_alert_definition_notification_operation_editor_relative_descendant = Then Filter By
-view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip =
A specific name to uniquely identify a resource when more than one resource of the
selected type might exist. This is optional if there will only ever be one resource of the
resource type in the selected type hierarchy.
-view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
Cannot get type descendants
-view_alert_definition_notification_operation_editor_relative_descendant_tooltip = The
resource type to search for under the root type defined in the Start Search From
selection.
-view_alert_definition_notification_operation_editor_specific_pick_button = Pick
-view_alert_definition_notification_operation_editor_specific_pick_error_invalid = Please
pick a resource
-view_alert_definition_notification_operation_editor_specific_pick_error_no_operation =
Please pick a resource that has one or more operations
-view_alert_definition_notification_operation_editor_specific_pick_text = Pick a
resource...
-view_alert_definition_notification_operation_editor_specific_resource = Resource
-view_alert_definition_notification_role_editor_loadFailed = Cannot determine current
roles - starting empty
-view_alert_definition_notification_role_editor_restoreFailed = Cannot use current roles -
starting empty
-view_alert_definition_notification_role_editor_saveFailed = Cannot save the selected
roles
-view_alert_definition_notification_user_editor_loadFailed = Cannot determine current
users - starting empty
-view_alert_definition_notification_user_editor_restoreFailed = Cannot use current users -
starting empty
-view_alert_definition_notification_user_editor_saveFailed = Cannot save the selected
users
-view_alert_definition_recovery_editor_disable_when_fired = Disable When Fired
-view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indicates if this
alert will be disabled after it fires. Once disabled, the alert can be manually re-enabled
or a recovery alert can be set up to automatically re-enable it. If this alert is a
recovery alert itself, this setting cannot be turned on.
-view_alert_definition_recovery_editor_loadFailed = Cannot build recovery menu
-view_alert_definition_recovery_editor_none_available = None
-view_alert_definition_recovery_editor_recovery_alert = Recover Alert
-view_alert_definition_recovery_editor_recovery_alert_tooltip = The target alert that will
be recovered (i.e. re-enabled) after this alert triggers. Do not select an alert here if
you are not defining a recovery alert.
-view_alert_definitions_create_failure = Alert definition creation failed
-view_alert_definitions_create_success = Alert definition successfully created
-view_alert_definitions_delete_confirm = Delete the selected alert definition(s)?
-view_alert_definitions_delete_failure = Failed to deleted the selected alert definitions
-view_alert_definitions_delete_success = Successfully deleted {0} alert definitions
-view_alert_definitions_disable_confirm = Disable the selected alert definition(s)?
-view_alert_definitions_disable_failure = Failed to disable the selected alert
definitions
-view_alert_definitions_disable_success = Successfully disabled {0} alert definitions
-view_alert_definitions_enable_confirm = Enable the selected alert definition(s)?
-view_alert_definitions_enable_failure = Failed to enable the selected alert definitions
-view_alert_definitions_enable_success = Successfully enabled {0} alert definitions
-view_alert_definitions_loadFailed = Failed to fetch alert definition data
-view_alert_definitions_loadFailed_single = Failed to fetch data for alert definition with
id {0}
-view_alert_definitions_table_title_group = Group Alert Definitions
-view_alert_definitions_table_title_resource = Resource Alert Definitions
-view_alert_definitions_update_failure = Alert definition update failed
-view_alert_definitions_update_success = Alert definition successfully updated
-view_alert_details_field_ack_at = Acknowledged at
-view_alert_details_field_ack_by = Acknowledged by
-view_alert_details_field_recovery_info = Recovery Info
-view_alert_details_loadFailed = Failed to fetch alert details
-view_alerts_ack_confirm = Acknowledge the selected alert(s)?
-view_alerts_ack_confirm_all = Acknowledge all alerts from this source?
-view_alerts_ack_failure = Failed to acknowledge alerts with id''s: {0}
-view_alerts_ack_failure_all = Failed to acknowledge all alerts from this source
-view_alerts_ack_success = Successfully acknowledged {0} alerts
-view_alerts_delete_confirm = Delete the selected alert(s)?
-view_alerts_delete_confirm_all = Delete all alerts from this source?
-view_alerts_delete_failure = Failed to delete alerts with id''s: {0}
-view_alerts_delete_failure_all = Failed to delete all alerts from this source
-view_alerts_delete_success = Successfully deleted {0} alerts
-view_alerts_field_ack_status = Status
-view_alerts_field_ack_status_ack = Ack ({0})
-view_alerts_field_ack_status_ackHover = Acknowledged by {0} at {1}
-view_alerts_field_ack_status_noAck = No Ack
-view_alerts_field_ack_status_noAckHover = Not yet Acknowledged
-view_alerts_field_ack_subject = Acknowledge Subject
-view_alerts_field_ack_time = Acknowledge Time
-view_alerts_field_condition_text = Condition Text
-view_alerts_field_condition_text_many = Multiple Conditions
-view_alerts_field_condition_text_none = No Conditions
-view_alerts_field_condition_value = Condition Value
-view_alerts_field_created_time = Creation Time
-view_alerts_field_enabled = Enabled
-view_alerts_field_modified_time = Modified Time
-view_alerts_field_name = Name
-view_alerts_field_parent = Parent
-view_alerts_field_priority = Priority
-view_alerts_field_protected = Protected
-view_alerts_field_protected_tooltip = If true, this definition is protected from being
changed by the parent definition. In other words, the parent definition settings will not
override this definition.
-view_alerts_loadFailed = Failed to fetch alerts data
-view_alerts_table_filter_priority = Priority Filter
-view_alerts_table_title_group = Group Alert History
-view_alerts_table_title_resource = Resource Alert History
-view_autoDiscoveryQ_committed = Committed
-view_autoDiscoveryQ_confirmSelect = Also select the platform children?
-view_autoDiscoveryQ_deleted = Deleted
-view_autoDiscoveryQ_field_discoveryTime = Discovery Time
-view_autoDiscoveryQ_field_inventoryStatus = Inventory Status
-view_autoDiscoveryQ_field_key = Resource Key
-view_autoDiscoveryQ_field_name = Resource Name
-view_autoDiscoveryQ_field_parentId = Parent ID
-view_autoDiscoveryQ_ignore = Ignore
-view_autoDiscoveryQ_ignoreFailure = Failed to ignore resources
-view_autoDiscoveryQ_ignoreSuccessful = You have successfully ignored the selected
resources.
-view_autoDiscoveryQ_ignored = Ignored
-view_autoDiscoveryQ_import = Import
-view_autoDiscoveryQ_importFailure = Failed to import resources
-view_autoDiscoveryQ_importSuccessful = You have successfully imported the selected
resources.
-view_autoDiscoveryQ_loadFailure = Failed to load the inventory discovery queue
-view_autoDiscoveryQ_new = New
-view_autoDiscoveryQ_newAndIgnored = New and Ignored
-view_autoDiscoveryQ_noItems = No items to show
-view_autoDiscoveryQ_noperm = (You are not authorized to view the auto-discovery
queue)
-view_autoDiscoveryQ_showStatus = Show
-view_autoDiscoveryQ_title = Autodiscovery Queue
-view_autoDiscoveryQ_unignore = Unignore
-view_autoDiscoveryQ_unignoreFailure = Failed to unignore resources
-view_autoDiscoveryQ_unignoreSuccessful = You have successfully unignored the selected
resources.
-view_autoDiscoveryQ_uninventoried = Uninventoried
-view_bundleVersion_loadFailure = Failed to load bundle version data
-view_bundle_bundle = Bundle
-view_bundle_bundleDeployment = Bundle Deployment
-view_bundle_bundleDeployments = Bundle Deployments
-view_bundle_bundleDestinations = Bundle Destinations
-view_bundle_bundleFiles = Bundle Files
-view_bundle_bundleType = Bundle Type
-view_bundle_bundleVersion = Bundle Version
-view_bundle_bundleVersions = Bundle Versions
-view_bundle_bundles = Bundles
-view_bundle_createWizard_bundleDistro = Bundle Distribution
-view_bundle_createWizard_cancelFailure = Failed to fully cancel the creation of bundle
[{0}], version = [{1}] - the bundle may still exist in the database
-view_bundle_createWizard_cancelSuccessful = Canceled the creation of bundle [{0}],
version = [{1}]
-view_bundle_createWizard_clickToUploadRecipe = Click to load a recipe file
-view_bundle_createWizard_createFailure = Failed to create the bundle
-view_bundle_createWizard_createSuccessful = You have successfully created a bundle named
[{0}] with a version of [{1}]
-view_bundle_createWizard_enterRecipe = Please supply a valid recipe
-view_bundle_createWizard_enterUrl = Please enter a valid URL where the bundle
distribution file can be downloaded from
-view_bundle_createWizard_failedToUploadDistroFile = Failed to upload bundle distribution
file
-view_bundle_createWizard_failedToUploadFile = Failed to upload bundle file
-view_bundle_createWizard_loadBundleFileFailure = Cannot obtain bundle file information
from server
-view_bundle_createWizard_noAdditionalFilesNeeded = No additional files need to be
uploaded for this bundle
-view_bundle_createWizard_noBundleTypesAvail = No bundle types are available
-view_bundle_createWizard_noBundleTypesSupported = No bundle types are supported - you
must deploy a valid plugin that supports bundle deployments
-view_bundle_createWizard_provideBundleDistro = Provide a Bundle Distribution
-view_bundle_createWizard_recipeOption = Recipe
-view_bundle_createWizard_title = Create Bundle
-view_bundle_createWizard_uploadInProgress = Upload is in progress... This can take
several minutes for large files
-view_bundle_createWizard_uploadOption = Upload
-view_bundle_createWizard_uploadStepName = Upload Bundle Files
-view_bundle_createWizard_urlOption = URL
-view_bundle_createWizard_windowTitle = Bundle Creation Wizard
-view_bundle_createWizard_youMustChooseOne = You must choose one option in order to create
a bundle!
-view_bundle_deleteConfirm = Are you sure you want to delete this bundle? All
versions, destinations and deployments for this bundle will also be deleted.
-view_bundle_deploy = Deploy
-view_bundle_deployDir = Deploy Directory
-view_bundle_deployWizard_deployStep = Deploy Bundle to Destination Platforms
-view_bundle_deployWizard_deploying = Deploying...
-view_bundle_deployWizard_deploymentCreated = Created Deployment...
-view_bundle_deployWizard_deploymentCreatedDetail = You have created the deployment [{0}]
with the description [{1}]
-view_bundle_deployWizard_deploymentCreatedDetail_concise = You have created the
deployment [{0}]
-view_bundle_deployWizard_deploymentScheduled = Bundle Deployment Scheduled!
-view_bundle_deployWizard_deploymentScheduledDetail = You have scheduled the bundle
deployment [{0}] to the destination group [{1}]
-view_bundle_deployWizard_deploymentScheduledDetail_concise = You have scheduled the
bundle deployment
-view_bundle_deployWizard_destinationCreatedDetail = You have created the destination
[{0}] with the description [{1}]
-view_bundle_deployWizard_destinationCreatedDetail_concise = You have created the
destination [{0}]
-view_bundle_deployWizard_error_1 = Failed to delete new deployment on Cancel
-view_bundle_deployWizard_error_10 = Failed to create destination, it may already exist.
(Note, for an existing destination deploy from the Destination view)
-view_bundle_deployWizard_error_11 = Failed to find defined deployments.
-view_bundle_deployWizard_error_12 = Failed to find defined bundles.
-view_bundle_deployWizard_error_2 = Failed to delete new destination on Cancel
-view_bundle_deployWizard_error_3 = Failed to Schedule Deployment!
-view_bundle_deployWizard_error_4 = Failed to schedule deployment: {0}
-view_bundle_deployWizard_error_5 = Failed to Create Deployment!
-view_bundle_deployWizard_error_6 = Failed to create deployment: {0}
-view_bundle_deployWizard_error_7 = Failed to get deployment name.
-view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down
-view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage
-view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
-view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
-view_bundle_deployWizard_getDestStep = New Destination
-view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)
-view_bundle_deployWizard_getDest_desc = Destination Description
-view_bundle_deployWizard_getDest_name = Destination Name
-view_bundle_deployWizard_getInfoStep = Provide Deployment Information
-view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
-view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description
-view_bundle_deployWizard_getInfo_deploymentName = Deployment Name
-view_bundle_deployWizard_getOptionsStep = Deploy Options
-view_bundle_deployWizard_getOptions_deployLater = Deploy Later
-view_bundle_deployWizard_getOptions_deployNow = Deploy Now
-view_bundle_deployWizard_getOptions_deployTime = Deployment Time
-view_bundle_deployWizard_selectBundleStep = Select Deployment Bundle
-view_bundle_deployWizard_selectBundle_single = Select only a single bundle for
deployment.
-view_bundle_deployWizard_selectVersionStep = Select Deployment Bundle Version
-view_bundle_deployWizard_selectVersion_latest = Latest Version [{0}]
-view_bundle_deployWizard_selectVersion_live = Live Version [{0}]
-view_bundle_deployWizard_selectVersion_select = Select Version from List:
-view_bundle_deployWizard_title = Bundle Deployment Wizard
-view_bundle_deploy_action = Action
-view_bundle_deploy_backButton = Back to Destination
-view_bundle_deploy_clickForError = Click the icon for the error message
-view_bundle_deploy_deleteConfirm = Are you sure you want to delete this bundle
deployment?
-view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
-view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
-view_bundle_deploy_deployedBy = Deployed By
-view_bundle_deploy_deploymentPlatforms = Deployment Platforms
-view_bundle_deploy_installDetails = Install Details
-view_bundle_deploy_loadBundleFailure = Failed to find bundle
-view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments
-view_bundle_deploy_loadFailure = Failed to load bundle deployment
-view_bundle_deploy_name = Deployment Name
-view_bundle_deploy_operatingSystem = Operating System
-view_bundle_deploy_selectARow = Select a row to show installation details
-view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags
-view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags
-view_bundle_deploy_time = Deployment Time
-view_bundle_deployed = Deployed
-view_bundle_deployments = Deployments
-view_bundle_dest_backToBundle = Back to Bundle
-view_bundle_dest_created = Created
-view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle
destination? This only deletes it from the database; all bundle content that was deployed
to this destination on remote machines will remain.
-view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
-view_bundle_dest_deleteSuccessful = You successfully deleted the bundle destination
[{0}]
-view_bundle_dest_deployDir = Deploy Directory
-view_bundle_dest_group = Group
-view_bundle_dest_lastDeployedVersion = Last Deployed Version
-view_bundle_dest_lastDeploymentDate = Last Deployment Date
-view_bundle_dest_lastDeploymentStatus = Last Deployment Status
-view_bundle_dest_loadFailure = Failed to load bundle destinations
-view_bundle_dest_loadFailureVersionInfo = Failed to load bundle destination deployed
version information
-view_bundle_dest_purgeConfirm = This will purge the bundle content from all remote
machines. Are you sure you want to do this?
-view_bundle_dest_purgeFailure = Failed to purge the bundle destination [{0}] from some
or all of the remote machines.
-view_bundle_dest_purgeSuccessful = You successfully purged the bundle destination [{0}]
from all of the remote machines.
-view_bundle_dest_revertConfirm = This will revert all remote machines back to the
previous bundle deployment. Are you sure you want to do this?
-view_bundle_dest_tagUpdateFailure = Failed to update bundle destination tags
-view_bundle_dest_tagUpdateSuccessful = You have successfully updated the bundle
destination tags
-view_bundle_destinations = Destinations
-view_bundle_fileListView_fileSize = File Size
-view_bundle_fileListView_loadFailure = Failed to load bundle file data
-view_bundle_fileListView_md5 = MD5
-view_bundle_fileListView_sha256 = SHA256
-view_bundle_files = Files
-view_bundle_latestVersion = Latest Version
-view_bundle_list_backToAll = Back to All Bundles
-view_bundle_list_deleteConfirm = Are you sure you want to delete the selected bundles?
-view_bundle_list_deleteFailure = Failed to delete the bundle [{0}]
-view_bundle_list_deleteSuccessful = You successfully deleted the bundle [{0}]
-view_bundle_list_deletesFailure = Failed to delete the bundles
-view_bundle_list_deletesSuccessful = You successfully deleted the bundles
-view_bundle_list_destinationsCount = Destinations Count
-view_bundle_list_error1 = Failed to load bundle to deploy [{0}]
-view_bundle_list_error2 = Failed to get a single bundle to deploy [{0}]
-view_bundle_list_error3 = Failed to load bundle
-view_bundle_list_loadFailure = Failed to load the bundle to be deployed [{0}]
-view_bundle_list_loadWithLatestFailure = Failed to load bundle with the latest version
data
-view_bundle_list_singleLoadFailure = Failed to get a single bundle to be deployed [{0}]
-view_bundle_list_tagUpdateFailure = Failed to update bundle tags
-view_bundle_list_tagUpdateSuccessful = You have successfully updated the bundle tags
-view_bundle_list_versionsCount = Versions Count
-view_bundle_purge = Purge
-view_bundle_recipe = Recipe
-view_bundle_resDeployDS_loadFailure = Failed to load bundle resource deployments
-view_bundle_revert = Revert
-view_bundle_revertWizard_confirmStep_confirmation = Reverting Live Deployment to Previous
Deployment. Click "Next" to continue...
-view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment = Failed to find live
deployment; cannot revert
-view_bundle_revertWizard_confirmStep_liveDeployment = Live Deployment
-view_bundle_revertWizard_confirmStep_name = Revert Deployment Confirmation
-view_bundle_revertWizard_confirmStep_noLiveDeployment = No live deployment was found for
the destination [{0}]
-view_bundle_revertWizard_confirmStep_noLiveDeployment_concise = No live deployment was
found for the destination
-view_bundle_revertWizard_confirmStep_noPriorDeployment = The live deployment [{0}] cannot
be reverted because there is no prior deployment for the destination [{1}]
-view_bundle_revertWizard_confirmStep_noPriorDeployment_concise = The live deployment
cannot be reverted because there is no prior deployment
-view_bundle_revertWizard_confirmStep_prevDeployment = Previous Deployment
-view_bundle_revertWizard_getInfoStep_cleanDeploy = Clean Deployment? (this will delete an
old, existing deploy directory prior to starting the revert deployment)
-view_bundle_revertWizard_getInfoStep_getNameFailure = Failed to get revert deployment
name
-view_bundle_revertWizard_getInfoStep_name = Provide Revert Information
-view_bundle_revertWizard_getInfoStep_revertDeployDesc = Revert Deploy Description
-view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT
From]\\n{0}\\n\\n[REVERT To]\\n{1}
-view_bundle_revertWizard_getInfoStep_revertDeployName = Revert Deploy Name
-view_bundle_revertWizard_revertStep_name = Deploy Bundle to Destination Platforms
-view_bundle_revertWizard_revertStep_reverting = Reverting...
-view_bundle_revertWizard_revertStep_scheduled = You have successfully scheduled the
revert deployment!
-view_bundle_revertWizard_revertStep_scheduledDetails = You have successfully scheduled to
revert the bundle deployment [{0}] from resource group [{1}]
-view_bundle_revertWizard_revertStep_scheduledFailure = Failed to schedule revert
deployment!
-view_bundle_revertWizard_title = Bundle Revert
-view_bundle_revertWizard_windowTitle = Bundle Revert Wizard
-view_bundle_tree_loadFailure = Failed to load bundle data
-view_bundle_version_backToBundle = Back to Bundle
-view_bundle_version_bundleVersionTagUpdateFailure = Failed to update bundle version tags
-view_bundle_version_bundleVersionTagUpdateSuccessful = You have successfully updated the
bundle version tags
-view_bundle_version_deleteConfirm = Are you sure you want to delete this bundle version?
-view_bundle_version_deleteFailure = Failed to delete the bundle version [{0}]
-view_bundle_version_deleteSuccessful = You successfully deleted the bundle version [{0}]
-view_bundle_version_loadFailure = Failed to load bundle version
-view_bundle_versions = Versions
-view_configCompare_comparingConfigs = Comparing Configurations
-view_configCompare_configCompare = Configuration Comparison
-view_configEdit_addItem = Add Item to List
-view_configEdit_confirm_1 = Are you sure you want to delete the selected properties
from the set?
-view_configEdit_confirm_2 = Are you sure you want to delete this row?
-view_configEdit_confirm_3 = Are you sure you want to delete the [{0}] selected
[{1}]?
-view_configEdit_editRow = Edit Row
-view_configEdit_enterPropName = Enter the name of the property to be added.
-view_configEdit_error_1 = Configuration is not supported by this Resource.
-view_configEdit_error_2 = Connection settings are not supported by this
Resource.
-view_configEdit_error_3 = Cannot add property named [{0}]. The property name is
already used in the set.
-view_configEdit_files = Files
-view_configEdit_hideAll = Hide All
-view_configEdit_jumpToSection = Jump to Section
-view_configEdit_msg_1 = Added property [{0}] to the set.
-view_configEdit_msg_2 = Removed properties from the set.
-view_configEdit_msg_3 = [{0} {1}] deleted from list.
-view_configEdit_msg_4 = Item added to list.
-view_configEdit_properties = Properties
-view_configEdit_tooltip_1 = Delete the selected items from the list.
-view_configEdit_tooltip_2 = Add an item to the list.
-view_configEdit_viewRow = View Row
-view_configurationDetails_allPropertiesValid = All configuration properties have valid
values, so the configuration can now be saved.
-view_configurationDetails_configNotUpdatedDueToNoChange = Configuration was not updated,
since the new configuration is equivalent to the current configuration.
-view_configurationDetails_error_updateFailure = Failed to update configuration.
-view_configurationDetails_messageConcise = Configuration updated - current version is
{0}.
-view_configurationDetails_messageDetailed = Configuration updated to version {0} for
Resource [{1}].
-view_configurationDetails_noPermission = You do not have permission to edit this
Resource''s configuration.
-view_configurationDetails_somePropertiesInvalid = The following configuration properties
have invalid values: {0}. The values must be corrected before the configuration can be
saved.
-view_configurationHistoryDetails_error_loadFailure = Unable to load configuration
history.
-view_configurationHistoryList_cannotDeleteCurrent = One of the selected history items
represents the current configuration - you cannot delete it.
-view_configurationHistoryList_cannotDeleteGroupItems = One or more selected configuration
history items are part of a group configuration update. You must purge that parent group
history item before you can delete its individual resource history items.
-view_configurationHistoryList_delete_failure = Failed to delete the configuration history
items.
-view_configurationHistoryList_delete_success = You successfully deleted the selected
configuration history items.
-view_configurationHistoryList_rollback = Rollback
-view_configurationHistoryList_rollback_failure = Failed to rollback the configuration.
The original configuration is still in effect.
-view_configurationHistoryList_rollback_success = You successfully rolled back the
configuration to the selected past configuration.
-view_configurationHistoryList_table_clickStatusIcon = Click the status icon for full
details
-view_configurationHistoryList_table_statusFailure = This configuration update failed
-view_configurationHistoryList_table_statusInprogress = This configuration update is still
in progress
-view_configurationHistoryList_table_statusNochange = No changes were made to this
configuration
-view_configurationHistoryList_table_statusSuccess = This configuration update was
successful
-view_configurationHistoryList_title = Configuration History
-view_connectionSettingsDetails_allPropertiesValid = All connection settings have valid
values, so the settings can now be saved.
-view_connectionSettingsDetails_error_updateFailure = Failed to update connection
settings.
-view_connectionSettingsDetails_messageConcise_updateSuccess = Connection settings update
initiated.
-view_connectionSettingsDetails_messageDetailed_updateSuccess = Connection settings update
initiated for Resource [{0}].
-view_connectionSettingsDetails_noPermission = You do not have permission to edit this
Resource''s connection settings.
-view_connectionSettingsDetails_somePropertiesInvalid = The following connection settings
have invalid values: {0}. The values must be corrected before the settings can be saved.
-view_core_error_1 = New Alerts lookup failed
-view_core_loggedOut = Logged out
-view_core_noRecentAlerts = There are no recent alerts to report
-view_core_recentAlerts = There are [{0}] recent alerts - click to go to the
recent alerts report
-view_core_uncaught = Globally uncaught exception
-view_dashboardManager_deleteFail = Failed to delete dashboard.
-view_dashboardManager_deleted = Successfully deleted dashboard {0}
-view_dashboardManager_error = Failed to save dashboard to server
-view_dashboardManager_saved = Saved dashboard {0} to server
-view_dashboardManager_success = Saved dashboard
-view_dashboard_favorites_error1 = Failed to load favorite Resources.
-view_dashboardsManager_error1 = Failed to add new dashboard
-view_dashboardsManager_message_title_details = <h1>Welcome to
RHQ</h1>\n<p>The RHQ project is an abstraction and plug-in based systems
management suite that provides extensible and integrated systems management for multiple
products and platforms across a set of core features. The project is designed with layered
modules that provide a flexible architecture for deployment. It delivers a core user
interface that delivers audited and historical management across an entire enterprise. A
Server/Agent architecture provides remote management and plugins implement all specific
support for managed products.</p>\n <p>This default dashboard can be edited by
clicking the (edit mode) button above.</p>
-view_dashboards_confirm1 = Are you sure you want to delete
-view_dashboards_portlets_refresh_fail1 = Failed to update interval for portlets that
auto-refresh
-view_dashboards_portlets_refresh_fail2 = Failed to disable reload for portlets that
auto-refresh
-view_dashboards_portlets_refresh_multiple_min = {0} minutes
-view_dashboards_portlets_refresh_none = No Refresh
-view_dashboards_portlets_refresh_one_min = 1 minute
-view_dashboards_portlets_refresh_success1 = Updated interval for portlets that
auto-refresh
-view_dashboards_portlets_refresh_success2 = Stopping reload for portlets that
auto-refresh
-view_dashboards_title = Dashboard
-view_dynagroup_children = DynaGroup Children
-view_dynagroup_compatible = Compatible
-view_dynagroup_definitionAlreadyExists = A group definition already exists with this
name
-view_dynagroup_definitionCreated = You have successfully created a group definition named
[{0}]
-view_dynagroup_definitionLoadFailure = Failed to load group definitions
-view_dynagroup_definitions = DynaGroup Definitions
-view_dynagroup_deleteFailureSelection = Failed to delete the selected group definitions
-view_dynagroup_deleteSuccessfulSelection = You have successfully deleted [{0}] group
definitions
-view_dynagroup_editing = Editing [{0}]
-view_dynagroup_exprBuilder_addExpression = Add Expression
-view_dynagroup_exprBuilder_comparisonType = Comparison Type
-view_dynagroup_exprBuilder_comparisonType_contains = contains
-view_dynagroup_exprBuilder_comparisonType_endsWith = ends with
-view_dynagroup_exprBuilder_comparisonType_equals = equals
-view_dynagroup_exprBuilder_comparisonType_startsWith = starts with
-view_dynagroup_exprBuilder_comparisonType_tooltip = Comparison Type
-view_dynagroup_exprBuilder_definingPlugin = Defining Plugin
-view_dynagroup_exprBuilder_definingPlugin_tooltip = The plugin to search
-view_dynagroup_exprBuilder_expression = Expression
-view_dynagroup_exprBuilder_expressionType = Expression Type
-view_dynagroup_exprBuilder_expressionType_pluginConfig = Plugin Configuration
-view_dynagroup_exprBuilder_expressionType_resource = Resource
-view_dynagroup_exprBuilder_expressionType_resourceCategory = Resource Category
-view_dynagroup_exprBuilder_expressionType_resourceConfig = Resource Configuration
-view_dynagroup_exprBuilder_expressionType_resourceType = Resource Type
-view_dynagroup_exprBuilder_expressionType_tooltip = The type of property this expression
switches on:<br/> <b>Resource</b>: A resource property such as its name
or version<br/> <b>Resource Type</b>: Search for resources of a specific
type<br/> <b>Resource Category</b>: Search for resources by category:
platform, server, service<br/> <b>Trait</b>: Resources that have
selected values for a monitored trait<br/> <b>Plugin Configuration</b>:
Search by the plugin component configuration setting of the component<br/>
<b>Resource Configuration</b>: Search by the configuration setting of the
managed resource
-view_dynagroup_exprBuilder_expressionType_trait = Trait
-view_dynagroup_exprBuilder_expression_tooltip = This is the full expression that is
represented by the selections in the form below. This text will be added to your group
definition expression text when you click the "Add Expression" button.
-view_dynagroup_exprBuilder_groupBy = Group by
-view_dynagroup_exprBuilder_groupBy_tooltip = GroupBy will cause the system to pivot on
the values from the entered expressions creating a separate group for each value. For
example, GroupBy on the cluster name to create a group for each cluster with all cluster
members in it.
-view_dynagroup_exprBuilder_noPlugins = --No plugins--
-view_dynagroup_exprBuilder_noProperties = --No properties--
-view_dynagroup_exprBuilder_noResourceTypes = --No resource types--
-view_dynagroup_exprBuilder_pluginLoadFailure = Cannot get the list of plugins
-view_dynagroup_exprBuilder_propLoadFailure = Cannot get list of properties
-view_dynagroup_exprBuilder_propertyName = Property Name
-view_dynagroup_exprBuilder_propertyName_tooltip = The name of the property to query. This
is defined by the expression type as well as the resource type.
-view_dynagroup_exprBuilder_resTypeLoadFailure = Cannot get list of resource types for
plugin [{0}]
-view_dynagroup_exprBuilder_resource = Resource
-view_dynagroup_exprBuilder_resourceType = Resource Type
-view_dynagroup_exprBuilder_resourceType_tooltip = The type of resource
-view_dynagroup_exprBuilder_resource_child = Child
-view_dynagroup_exprBuilder_resource_grandparent = Grandparent
-view_dynagroup_exprBuilder_resource_greatGrandparent = GreatGrandparent
-view_dynagroup_exprBuilder_resource_greatGreatGrandparent = GreatGreatGrandparent
-view_dynagroup_exprBuilder_resource_parent = Parent
-view_dynagroup_exprBuilder_resource_resource = Resource
-view_dynagroup_exprBuilder_resource_tooltip = Choose the level of the resource you wish
to select. For example, select "parent" will find resources whose parent
resource matches the rest of the expression.
-view_dynagroup_exprBuilder_title = Expression Builder
-view_dynagroup_exprBuilder_unset = Unset
-view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the "=" operator because
of how databases store and query data.
-view_dynagroup_exprBuilder_value_tooltip = The string value for the expression to query
-view_dynagroup_expression = Expression
-view_dynagroup_expressionBuilderIconTooltip = Expression Builder...
-view_dynagroup_expressionSet = Expression Set
-view_dynagroup_lastCalculationTime = Last Calculation Time
-view_dynagroup_loadDefinitionFailure = Failed to load group definition [{0}]
-view_dynagroup_loadDefinitionMissing = There is no group definition with the ID of [{0}]
-view_dynagroup_mixed = Mixed
-view_dynagroup_newGroupDefinition = New Group Definition
-view_dynagroup_nextCalculationTime = Next Calculation Time
-view_dynagroup_permDenied = You do not have permission to view group definitions
-view_dynagroup_recalcFailure = Failed to recalculated this group definition
-view_dynagroup_recalcFailureSelection = Failed to recalculated the selected group
definitions
-view_dynagroup_recalcSuccessful = You have successfully recalculated this group
definition
-view_dynagroup_recalcSuccessfulSelection = You have successfully recalculated [{0}] group
definitions
-view_dynagroup_recalculate = Recalculate
-view_dynagroup_recalculationInterval = Recalculation Interval (ms)
-view_dynagroup_recursive = Recursive
-view_dynagroup_saveAndRecalculate = Save & Recalculate
-view_dynagroup_saveFailure = Failed to save the group definition named [{0}]
-view_dynagroup_saveSuccessful = You have successfully saved the group definition named
[{0}]
-view_dynagroup_singleSaveFailure = An error occurred - there should have been one
created, but instead there were [{0}] created
-view_dynagroup_template_customExpression = Custom Expression...
-view_dynagroup_template_downedResources = All resources currently down
-view_dynagroup_template_jbossas4_clusters = JBossAS 4 - Clusters
-view_dynagroup_template_jbossas4_earClusters = JBossAS 4 - Clustered EARs
-view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - All hosting any version of
"my" app
-view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - All non-secured
-view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - Unique versions
-view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - Clusters
-view_dynagroup_template_platforms = Platform resources in inventory
-view_dynagroup_template_uniqueResourceTypes = Unique resource types in inventory
-view_groupConfigEdit_member = Member
-view_groupConfigEdit_noListProps = List properties are not currently supported for group
configurations.
-view_groupConfigEdit_setAll = Set all values to:
-view_groupConfigEdit_tooltip_1 = Member values differ - click icon to edit them.
-view_groupConfigEdit_unset = Unset
-view_groupConfigEdit_valsDiff = member values differ
-view_groupConfigEdit_valsDiffForProp = Member Values for Property [{0}]
-view_groupCreateWizard_createFailure = Failed to create the resource group
-view_groupCreateWizard_createStepName = Group Settings
-view_groupCreateWizard_createStep_recursive = Recursive
-view_groupCreateWizard_createSuccessful_concise = You have created a new resource group.
[<a href="{0}">View Group</a>]
-view_groupCreateWizard_createSuccessful_full = You have created a new [{0}] resource
group with the name [{1}] that contains [{2}] member resources
-view_groupCreateWizard_membersStepName = Select Members
-view_groupCreateWizard_title = Create Group
-view_groupCreateWizard_windowTitle = Create Group
-view_groupInventoryMembers_button_updateMembership = Update Membership...
-view_groupInventoryMembers_title_updateMembership = Update Membership
-view_group_detail_failLoad = Failed to load group for group with ID [{0}]
-view_group_detail_failLoadComp = Failed to load group composite for group with ID [{0}]
-view_group_detail_failRecursiveChange = Failed to update the recursive setting for group
[{0}]
-view_group_detail_recursiveChange = You successfully changed the recursive setting for
group [{0}]
-view_group_inventory_activity_no_recent_metrics = This group has no recent metrics
-view_group_meas_schedules_title = Group Metric Collection Schedules
-view_group_membership_failFetch = Failed to fetch Resource Group
-view_group_membership_saveFailure = Failed to update membership of group [{0}]
-view_group_membership_saveSuccessful = You have updated the membership of group [{0}]
-view_group_operationScheduleDetails_failedToLoadMembers = Failed to load group member
Resources.
-view_group_operationScheduleDetails_field_execute = Execute
-view_group_operationScheduleDetails_field_haltOnFailure = Halt on Failure?
-view_group_operationScheduleDetails_memberResource = Member Resource
-view_group_operationScheduleDetails_value_parallel = in parallel
-view_group_operationScheduleDetails_value_sequential = in the order specified below (drag
and drop member Resources to change order)
-view_group_pluginConfig_edit_currentGroupProperties = Current Group Properties
-view_group_pluginConfig_edit_invalid = The following connection setting properties have
invalid values and must be corrected before the connection settings can be saved: [{0}]
-view_group_pluginConfig_edit_noperm = You do not have permission to edit this group
connection settings
-view_group_pluginConfig_edit_saveFailure = Failed to initiate group connection setting
update for [{0}] compatible group named [{1}]
-view_group_pluginConfig_edit_saveInitiated_concise = The group connection setting updates
have been initiated
-view_group_pluginConfig_edit_saveInitiated_full = The group connection setting updates
have been initiated for the [{0}] compatible group named [{1}]
-view_group_pluginConfig_edit_saveTooltip = Update the connection settings of all group
members
-view_group_pluginConfig_edit_valid = All connection setting properties have valid values,
so the connection settings can now be saved
-view_group_pluginConfig_members_fetchFailure = Failed to get plugin config update history
for members of group [{0}]
-view_group_pluginConfig_members_fetchFailureConn = Failed to retrieve member connection
settings for [{0}]
-view_group_pluginConfig_members_fetchFailureConnInProgress = A group plugin configuration
update is currently in progress. You must wait until the update is finished before you can
view the group settings.
-view_group_pluginConfig_members_statusDetails = Status Details
-view_group_pluginConfig_members_statusFailure = This configuration update failed for an
unknown reason
-view_group_pluginConfig_members_statusInprogress = This configuration update is still in
progress
-view_group_pluginConfig_members_statusNochange = No changes were made to this
configuration
-view_group_pluginConfig_members_statusSuccess = This configuration update was successful
-view_group_pluginConfig_members_title = Group Connection Settings Member Histories
-view_group_pluginConfig_table_clickStatusIcon = Click the status icon for full details
-view_group_pluginConfig_table_deleteFailure = Failed to delete group plugin config
history
-view_group_pluginConfig_table_deleteSuccessful = You have deleted [{0}] history items
-view_group_pluginConfig_table_failFetch = Failed to get group plugin config history
-view_group_pluginConfig_table_msg1 = View Member History for status of each individual
resource
-view_group_pluginConfig_table_statusDetails = Status Details
-view_group_pluginConfig_table_statusFailure = This group configuration update failed
-view_group_pluginConfig_table_statusInprogress = This group configuration update is still
in progress
-view_group_pluginConfig_table_statusNochange = No changes were made to this group
configuration
-view_group_pluginConfig_table_statusSuccess = This group configuration update was
successful
-view_group_pluginConfig_table_title = Group Connection Settings History
-view_group_pluginConfig_table_viewMemberHistory = View Member History
-view_group_pluginConfig_table_viewSettings = View Settings
-view_group_pluginConfig_view_groupProperties = Group Properties
-view_group_pluginConfig_view_noperm = You do not have permissions to see the connection
settings
-view_group_resConfig_edit_invalid = The following configuration properties have invalid
values and must be corrected before the configuration can be saved: [{0}]
-view_group_resConfig_edit_loadFail = Failed to retrieve member Resource configurations
for [{0}]
-view_group_resConfig_edit_noperm = You do not have permission to edit this group
configuration
-view_group_resConfig_edit_saveFailure = Failed to initiate group configuration update for
[{0}] compatible group named [{1}]
-view_group_resConfig_edit_saveInitiated_concise = The group configuration updates have
been initiated
-view_group_resConfig_edit_saveInitiated_full = The group configuration updates have been
initiated for the [{0}] compatible group named [{1}]
-view_group_resConfig_edit_saveTooltip = Update the configurations of all group members
-view_group_resConfig_edit_valid = All configuration properties have valid values, so the
configuration can now be saved
-view_group_resConfig_members_fetchFailure = Failed to get resource config update history
for members of group [{0}]
-view_group_resConfig_members_fetchFailureConfig = Failed to retrieve member resource
configuration settings for [{0}]
-view_group_resConfig_members_fetchFailureConfigInProgress = A group resource
configuration update is currently in progress. You must wait until the update is finished
before you can view the group settings.
-view_group_resConfig_members_statusDetails = Status Details
-view_group_resConfig_members_statusFailure = This configuration update failed for an
unknown reason
-view_group_resConfig_members_statusInprogress = This configuration update is still in
progress
-view_group_resConfig_members_statusNochange = No changes were made to this configuration
-view_group_resConfig_members_statusSuccess = This configuration update was successful
-view_group_resConfig_members_title = Group Resource Configuration Member Histories
-view_group_resConfig_table_clickStatusIcon = Click the status icon for full details
-view_group_resConfig_table_deleteFailure = Failed to delete group resource config
history
-view_group_resConfig_table_deleteSuccessful = You have deleted [{0}] history items
-view_group_resConfig_table_failFetch = Failed to get group resource config history
-view_group_resConfig_table_msg1 = View Member History for status of each individual
resource
-view_group_resConfig_table_statusDetails = Status Details
-view_group_resConfig_table_statusFailure = This group configuration update failed
-view_group_resConfig_table_statusInprogress = This group configuration update is still in
progress
-view_group_resConfig_table_statusNochange = No changes were made to this group
configuration
-view_group_resConfig_table_statusSuccess = This group configuration update was
successful
-view_group_resConfig_table_title = Group Resource Configuration History
-view_group_resConfig_table_viewMemberHistory = View Member History
-view_group_resConfig_table_viewSettings = View Settings
-view_group_resConfig_view_groupProperties = Group Properties
-view_group_resConfig_view_noperm = You do not have permissions to see the resource
configuration settings
-view_group_summary_compatible = Compatible
-view_group_summary_descUpdateFailure = Failed to change the description of the resource
group with ID [{0}]
-view_group_summary_descUpdateSuccessful = You have changed the description of this
resource group
-view_group_summary_dynamic = Dynamic
-view_group_summary_dynamicNote = Dynamic group names and descriptions are managed, and
therefore are not editable
-view_group_summary_groupDefinition = Group Definition
-view_group_summary_memberCount = Member Count
-view_group_summary_memberType = Member Type
-view_group_summary_mixed = Mixed
-view_group_summary_nameUpdateFailure = Failed to change the name of the resource group
with ID [{0}] - could not change from [{1}] to [{2}]
-view_group_summary_nameUpdateSuccessful = You have changed the name of the resource group
with ID [{0}] from [{1}] to [{2}]
-view_group_summary_recursive = Recursive
-view_helpTop_description = This section provides access to documentation,
tutorials, version, and other helpful information.
-view_help_section_product = Product
-view_help_section_product_about = About
-view_inventory_adq = Discovery Queue
-view_inventory_allGroups = All Groups
-view_inventory_allResources = All Resources
-view_inventory_collectionInterval = Collection Interval
-view_inventory_dynagroupDefs = Dynagroup Definitions
-view_inventory_eventDetails_loadFailed = An error occurred loading the event details
-view_inventory_eventHistory_deleteFailed = Failed to deleted selected events for [{0}]
-view_inventory_eventHistory_deleteSuccessful = You have successfully deleted [{0}] events
for [{1}]
-view_inventory_eventHistory_details = Details
-view_inventory_eventHistory_detailsFilter = Details Filter
-view_inventory_eventHistory_groupEventHistory = Group Event History
-view_inventory_eventHistory_purgeFailed = Failed to purge events for [{0}]
-view_inventory_eventHistory_purgeSuccessful = You have successfully purged [{0}] events
for [{1}]
-view_inventory_eventHistory_resourceEventHistory = Resource Event History
-view_inventory_eventHistory_severity = Severity
-view_inventory_eventHistory_severityFilter = Severity Filter
-view_inventory_eventHistory_sourceFilter = Source Filter
-view_inventory_eventHistory_sourceLocation = Source Location
-view_inventory_eventHistory_timestamp = Timestamp
-view_inventory_groups = Groups
-view_inventory_groups_children = Children
-view_inventory_groups_deleteFailed = Failed to delete the selected resource groups
-view_inventory_groups_deleteSuccessful = You have successfully deleted the selected
resource groups
-view_inventory_groups_descendants = Descendants
-view_inventory_groups_loadFailed = Failed to load group composite data
-view_inventory_groups_resourceGroups = Resource Groups
-view_inventory_mixed = mixed
-view_inventory_platforms = Platforms
-view_inventory_problemGroups = Problem Groups
-view_inventory_resource_loadFailed = Resource with id [{0}] does not exist or is not
accessible
-view_inventory_resources_deleteConfirm = Are you sure you want to delete the selected
resources?
-view_inventory_resources_deleteFailed = Failed to delete the selected resources
-view_inventory_resources_deleteSuccessful = You have successfully deleted the selected
resources
-view_inventory_resources_loadFailed = Failed to load resource composite data
-view_inventory_resources_title = Resources
-view_inventory_resources_title_children = Child Resources
-view_inventory_resources_title_members = Member Resources
-view_inventory_resources_uninventoryConfirm = Are you sure you want to uninventory the
selected resources? Note that if a selected resource still exists, then it will get
rediscovered during its agent''s next discovery scan.
-view_inventory_resources_uninventoryFailed = Failed to uninventory the selected
resources
-view_inventory_resources_uninventorySuccessful = You have successfully uninventoried the
selected resources
-view_inventory_sectionHelp = From this section, newly discovered Resources,
inventoried Resources, and Groups can be viewed and managed.
-view_inventory_servers = Servers
-view_inventory_services = Services
-view_inventory_summary_agent_error1 = Failed to locate agent managing resource id
-view_inventory_summary_agent_error2 = Failed to ping agent managing resource id
-view_inventory_summary_agent_error3 = You do not have permission to view details for this
Agent.
-view_inventory_summary_agent_fullEnpoint = Full Endpoint
-view_inventory_summary_agent_fullEnpoint_err1 = !No remote endpoint associated with this
resource!
-view_inventory_summary_agent_last_title = Last Received Availability Report
-view_inventory_summary_agent_status_title = Agent Communications Status
-view_inventory_summary_agent_title = Agent Managing this Resource
-view_inventory_unavailableServers = Unavailable Servers
-view_leftNav_unknownPage = Unknown page name [{0}] for section [{1}] - URL is
invalid.
-view_login_invalidEmail = Invalid e-mail address
-view_login_login = Login
-view_login_logout = Logout
-view_login_noBackend = The backend datasource is unavailable.
-view_login_noLdap = Note: Optional retrieval of ldap details unsuccessful.
Manual entry is required.
-view_login_noUser = The username or password provided does not match our
records.
-view_login_prompt = Please Login
-view_login_registerLater = (Cancel - Complete registration later.)
-view_login_registerLdapSuccess = Successfully registered the new LDAP User.
-view_login_registerUser = Register User
-view_login_welcome = Welcome
-view_login_welcomeMsg = Welcome to RHQ! <br/><br/> Enter/update the
following fields to complete your registration process.<br/> Once you click
"OK", you will be logged in.<br/><br/>
-view_measureRange_last = Time Range - Previous
-view_measureRange_simple = Simple...
-view_measureRange_start = Time Range - Start
-view_measureTable_chartMetricValues = Chart Selected Metrics
-view_measureTable_getLive = Get Live Value
-view_measureTable_getLive_failure = Cannot get live values for those metrics. Make sure
the agent is running and the managed resource is up.
-view_measureTable_live_title = Live Data
-view_measure_nan = --no data available--
-view_measurementOob_title = Suspect Metrics
-view_menuBar_logout = Logout
-view_messageCenter_clearAllMessages = Clear All Messages
-view_messageCenter_lastNMessages = Last {0} Messages
-view_messageCenter_maxMessages = Max Messages
-view_messageCenter_messageBarShowDetails = Show Details
-view_messageCenter_messageDetail = Detail
-view_messageCenter_messageSeverity = Severity
-view_messageCenter_messageTime = Time
-view_messageCenter_messageTitle = Message Center
-view_messageCenter_noRecentMessages = No Recent Messages
-view_messageCenter_stackTraceFollows = --- STACK TRACE FOLLOWS ---
-view_metric_traits = Traits
-view_metric_viewTraitHistory = Value History for Trait [{0}]
-view_operationHistoryDetails_dateCompleted = Date Completed
-view_operationHistoryDetails_dateSubmitted = Date Submitted
-view_operationHistoryDetails_error_fetchFailure = Failure loading operation history.
-view_operationHistoryDetails_noResults = This operation does not return any results.
-view_operationHistoryDetails_operation = Operation
-view_operationHistoryDetails_parameters = Parameters
-view_operationHistoryDetails_requestor = Requestor
-view_operationHistoryDetails_results = Results
-view_operationHistoryDetails_status = Status
-view_operationHistoryList_button_forceDelete = Force Delete
-view_operationHistoryList_button_runOperation = Run Operation
-view_operationHistoryList_notYetStarted = not yet started
-view_operationHistoryList_title = Operation History
-view_operationScheduleDetails_enterParametersBelow = Enter parameters below...
-view_operationScheduleDetails_fieldDefault_description = Select an operation to see its
description.
-view_operationScheduleDetails_fieldDefault_parameters = Select an operation to see its
parameters.
-view_operationScheduleDetails_fieldHelp_description = an optional description of this
scheduled operation (e.g. nightly maintenance app server restart)
-view_operationScheduleDetails_fieldHelp_timeout = a time duration - if specified, if the
duration elapses before a scheduled operation execution has completed, the RHQ Server will
timeout the operation and consider it to have failed; note, it is usually not possible to
abort the underlying managed resource operation if it was already initiated
-view_operationScheduleDetails_field_description = Description
-view_operationScheduleDetails_field_parameters = Parameters
-view_operationScheduleDetails_field_timeout = Timeout
-view_operationScheduleDetails_noParameters = This operation does not take any
parameters.
-view_operationScheduleDetails_operationSchedule = Operation Schedule
-view_portlet_autodiscovery_setting_platforms = discovered platforms
-view_portlet_configure_definitionDesc = The configuration settings for the portlet.
-view_portlet_configure_definitionTitle = Portlet Configuration
-view_portlet_configure_needed = Click the Settings button to configure this portlet.
-view_portlet_configure_notNeeded = Configuration is not necessary for this portlet.
-view_portlet_defaultName_autodiscovery = Discovery Queue
-view_portlet_defaultName_favoriteResources = Favorite Resources
-view_portlet_defaultName_groupMetric = Resource Group Metric Graph
-view_portlet_defaultName_group_alerts = Group: Alerts
-view_portlet_defaultName_group_bundles = Group: Bundle Deployments
-view_portlet_defaultName_group_config_updates = Group: Configuration Updates
-view_portlet_defaultName_group_events = Group: Event Counts
-view_portlet_defaultName_group_metrics = Group: Metrics
-view_portlet_defaultName_group_oobs = Group: OOB Conditions
-view_portlet_defaultName_group_operations = Group: Operations
-view_portlet_defaultName_group_pkg_hisory = Group: Package History
-view_portlet_defaultName_inventorySummary = Inventory Summary
-view_portlet_defaultName_mashup = Mashup
-view_portlet_defaultName_message = Message
-view_portlet_defaultName_operations = Recent Operations
-view_portlet_defaultName_platformSummary = Platform Utilization
-view_portlet_defaultName_problemResources = Alerted or Unavailable Resources
-view_portlet_defaultName_recentAlerts = Recent Alerts
-view_portlet_defaultName_recentlyAddedResources = Recently Added Resources
-view_portlet_defaultName_resourceMetric = Resource Metric Graph
-view_portlet_defaultName_resource_alerts = Resource: Alerts
-view_portlet_defaultName_resource_bundles = Resource: Bundle Deployments
-view_portlet_defaultName_resource_config_updates = Resource: Configuration Updates
-view_portlet_defaultName_resource_events = Resource: Event Counts
-view_portlet_defaultName_resource_metrics = Resource: Measurements
-view_portlet_defaultName_resource_oobs = Resource: OOB Metrics
-view_portlet_defaultName_resource_operations = Resource: Operations
-view_portlet_defaultName_resource_pkg_hisory = Resource: Package History
-view_portlet_defaultName_tagCloud = Tag Cloud
-view_portlet_factory_invalidPortlet = This is an obsolete portlet that is no longer
valid. Please delete it.
-view_portlet_graph_configure_metricDefinition_graph = The metric definition id to graph
-view_portlet_graph_configure_resource_graph = The resource to graph
-view_portlet_help_autodiscovery = This portlet allows import or ignore of newly
discovered resources. Imported resources are added to inventory for monitoring and
management. Ignored resources are not imported and are hidden from view unless explicitly
unignored.
-view_portlet_help_bundle_deps = This portlet shows relevant bundle deployments based on
display criteria configured.
-view_portlet_help_config_updates = This portlet displays recent configuration changes
consistent with configuration settings.
-view_portlet_help_eventcounts = This portlet displays Event counts consistent with
display criteria configured.
-view_portlet_help_favoriteResources = This portlet displays the current user''s
favorite resources.
-view_portlet_help_graph = This portlet displays the resource metric graph.
-view_portlet_help_inventorySummary = This portlet displays a short summary of the current
user''s viewable inventory and metric collection rate.
-view_portlet_help_mashup = This portlet displays the returned content of a remote
HTTP request (via an iframe).
-view_portlet_help_message = This portlet displays a static HTML message. The
<i>message</i> property must be configured.
-view_portlet_help_metrics = This portlet graphs relevant recent metric data based
on display criteria configured.
-view_portlet_help_none = There is no help available for this portlet.
-view_portlet_help_oobs = This portlet displays OOB(Out of Bound) metric
conditions.
-view_portlet_help_operations = This portlet displays the most recently executed
operations for the current user''s inventory.
-view_portlet_help_operations_criteria = This portlet displays Operations consistent with
display criteria configured.
-view_portlet_help_pkg_history = This portlet shows relevant package history based on
display criteria configured.
-view_portlet_help_platformSummary = This portlet displays utilization data (such as
current CPU and memory usage) for platform resources that are accessible by the current
user.
-view_portlet_help_problemResources = This portlet displays the current user''s
alerted or unavailable resources.
-view_portlet_help_recentAlerts = This portlet displays alerts recently fired on the
current user''s viewable inventory.
-view_portlet_help_recentlyAdded = This portlet displays resources that have recently been
imported into inventory.
-view_portlet_help_scheduledOperations = This portlet displays the next scheduled
operations for the current user''s inventory.
-view_portlet_help_tagCloud = This portlet displays the relative tag counts for the
current user''s inventory.
-view_portlet_inventory_error1 = Failed to retrieve inventory summary
-view_portlet_inventory_tooltip_collapse = Click to hide details for this resource.
-view_portlet_inventory_tooltip_expand = Click to show more details for this resource.
-view_portlet_message_title = The message to display.
-view_portlet_operations_config_completed = completed operations
-view_portlet_operations_config_completed_enable = Whether to enable completed operations
results grouping for dashboard.
-view_portlet_operations_config_completed_maximum = Maximum number of Completed operations
to display.
-view_portlet_operations_config_scheduled_enable = Whether to enable scheduled operations
results grouping for dashboard.
-view_portlet_operations_config_scheduled_maximum = Maximum number of Scheduled operations
to display.
-view_portlet_operations_config_show_last = show Last
-view_portlet_operations_config_show_next = show Next
-view_portlet_operations_disabled = (Results currently disabled. Change settings to enable
results.
-view_portlet_platform_platform_error_1 = Failed to load platform metrics
-view_portlet_platform_type_error_1 = Could not load type data
-view_portlet_problemResources_config_display_maximum = Maximum number of Problem
resources to display.
-view_portlet_problemResources_config_display_range = Show problem resources going back
this many hours.
-view_portlet_problemResources_config_display_range2 = From {0} to {1}
-view_portlet_problemResources_maxDisplaySetting = maximum resources.
-view_portlet_recentAlerts_config_members = Select Members
-view_portlet_recentAlerts_config_priority_label = priority Alerts,
-view_portlet_recentAlerts_config_when = within the past
-view_portlet_recentAlerts_fail_msg = Failed to load resources assigned for alert
filtering.
-view_portlet_recentlyAdded_error1 = Failed to load recently added resources
-view_portlet_recentlyAdded_setting_addedPlatforms = recently added platforms
-view_portlet_results_empty = No results found using specified criteria.
-view_remoteAgentInstall_agentStatus = Agent Status
-view_remoteAgentInstall_agentStatusDefault = -Click Update Status Button-
-view_remoteAgentInstall_buttonFindAgent = Find Agent
-view_remoteAgentInstall_connInfo = Connection Information
-view_remoteAgentInstall_error_1 = Error occurred while trying to find agent install path
-view_remoteAgentInstall_error_2 = Could not find an agent installed when looking in
common locations
-view_remoteAgentInstall_error_3 = Could not find an agent installed at or under [{0}]
-view_remoteAgentInstall_error_4 = Failed to install agent
-view_remoteAgentInstall_error_5 = Failed to start agent
-view_remoteAgentInstall_error_6 = Failed to stop agent
-view_remoteAgentInstall_installAgent = Install Agent
-view_remoteAgentInstall_installInfo = Agent Installation Information
-view_remoteAgentInstall_installPath = Agent Install Path
-view_remoteAgentInstall_owner = Owner
-view_remoteAgentInstall_promptHost = The host where the agent is or will be installed
-view_remoteAgentInstall_promptInstallPath = Where the agent is or will be installed. If
you aren''t sure where an agent is installed, enter a parent directory and click
the ''Find Agent'' button to scan that directory and below. If you enter
an empty path, common locations are searched on the host for an agent install.
-view_remoteAgentInstall_promptPassword = The credentials that are used to authenticate
the user on the host via SSH
-view_remoteAgentInstall_promptPort = The port the SSH server is listening to. If not
specified, the default is 22
-view_remoteAgentInstall_promptUser = The name of the user whose credentials are passed to
the host via SSH
-view_remoteAgentInstall_result = Result
-view_remoteAgentInstall_resultCode = ResultCode
-view_remoteAgentInstall_startAgent = Start Agent
-view_remoteAgentInstall_startAgentResults = Agent start results: [{0}]
-view_remoteAgentInstall_step = Step
-view_remoteAgentInstall_stopAgent = Stop Agent
-view_remoteAgentInstall_stopAgentResults = Agent stop results: [{0}]
-view_remoteAgentInstall_success = Agent installation complete
-view_remoteAgentInstall_updateStatus = Update Status
-view_reportsTop_description = This section provides access to global reports.
-view_reportsTop_title = Reports
-view_reports_alertDefinitions = Alert Definitions
-view_reports_alertDefinitions_parentHover = Click to go to the parent alert definition
-view_reports_alertDefinitions_resTypeLoadError = Cannot get the template resource type -
unable to view the alert template.
-view_reports_inventorySummary_failFetch = Failed to get inventory summary
-view_reports_platforms = Platform Utilization
-view_reports_subsystems = Subsystems
-view_resourceResourceGroupList_error_fetchFailure = Failed to fetch Resource''s
groups.
-view_resourceResourceGroupList_error_updateFailure = Failed to update assigned Resource
groups.
-view_resourceResourceGroupList_message_updateSuccess = Group membership updated for
[{0}].
-view_resource_inventory_activity_changed_by = Changed by
-view_resource_inventory_activity_criteria_no_recent_events = No event counts based off
display criteria.
-view_resource_inventory_activity_no_recent_alerts = No recent alerts
-view_resource_inventory_activity_no_recent_bundle_deploy = No recent bundle deployments
-view_resource_inventory_activity_no_recent_config_history = No configuration change
history
-view_resource_inventory_activity_no_recent_events = No events in the last 24 hours
-view_resource_inventory_activity_no_recent_metrics = This resource has no recent metrics
-view_resource_inventory_activity_no_recent_oob = No OOB conditions found
-view_resource_inventory_activity_no_recent_operations = No recent operation history
-view_resource_inventory_activity_no_recent_pkg_history = No recent package history
-view_resource_inventory_childhistory_createdChild = Created Child
-view_resource_inventory_childhistory_deletedChild = Deleted Child
-view_resource_inventory_childhistory_filterTitle = Past N Days
-view_resource_inventory_childhistory_status_invalidArtifact = Invalid Artifact
-view_resource_inventory_childhistory_status_invalidConfig = Invalid Configuration
-view_resource_monitor_availability_loadFailed = Failed to load availability history
-view_resource_monitor_calltime_average = Average
-view_resource_monitor_calltime_count = Count
-view_resource_monitor_calltime_destination = Call Destination
-view_resource_monitor_calltime_editFailed = Call time data can not be edited
-view_resource_monitor_calltime_loadFailed = Could not load call time data
-view_resource_monitor_calltime_lookupFailed = Could not load resource for call time
-view_resource_monitor_calltime_maximum = Maximum
-view_resource_monitor_calltime_minimum = Minimum
-view_resource_monitor_calltime_title = Call Time Data
-view_resource_monitor_calltime_total = Total
-view_resource_monitor_detailed_graph_label = Detailed Graph
-view_resource_monitor_graph_instructions = Point your mouse to a data point on the chart
-view_resource_monitor_graph_live_tooltip = Click for a live graph of current values
-view_resource_monitor_graphs_loadFailed = Failed to load graph data
-view_resource_monitor_graphs_lookupFailed = Failed to find resource for graph
-view_resource_monitor_graphs_noneAvailable = No graphs available
-view_resource_monitor_schedules_title = Resource Metric Collection Schedules
-view_resource_monitor_table_alerts = Alerts
-view_resource_monitor_table_avg = Average
-view_resource_monitor_table_last = Last
-view_resource_monitor_table_max = Maximum
-view_resource_monitor_table_min = Minimum
-view_resource_title_component_errors_tooltip = Shows managed component errors. Click for
details
-view_resource_title_tagUpdateFailed = Failed to update resource tags
-view_searchBar_defaultPattern = name your pattern
-view_searchBar_error_selectSavedSearch = ''Error selecting saved
search''
-view_searchBar_query = Query
-view_searchBar_resourceGroups = Resource Groups
-view_searchBar_resources = Resources
-view_searchBar_welcomeMessage = search for {0}s
-view_searchGUI_loginStatus = Unable to determine login status, check server status
-view_selector_assigned = Assigned {0}
-view_selector_available = Available {0}
-view_subTab_error_disabled = Cannot select disabled subTab [{0}].
-view_summaryDashboard_resetConfirm = Reset to default summary dashboard (lose local
changes)?
-view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of
Resource with id {0} from [{1}] to [{2}].
-view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of
Resource with id {0} from [{1}] to [{2}].
-view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with
id {0} from [{1}] to [{2}].
-view_summaryOverviewForm_error_traitsLoadFailure = Failed to load traits for {0}.
-view_summaryOverviewForm_field_description = Description
-view_summaryOverviewForm_field_location = Location
-view_summaryOverviewForm_field_name = Name
-view_summaryOverviewForm_field_type = Type
-view_summaryOverviewForm_field_version = Version
-view_summaryOverviewForm_header_summary = Summary
-view_summaryOverviewForm_label_plugin = Plugin:
-view_summaryOverviewForm_label_type = Type:
-view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with
id {0} was changed from [{1}] to [{2}].
-view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0}
was changed from [{1}] to [{2}].
-view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was
changed from [{1}] to [{2}].
-view_summaryOverview_header_detectedErrors = Detected Errors
-view_summaryOverview_title_errorDetailsWindow = Error Details
-view_summaryOverview_tooltip_detectedErrors = Click on the rows to see the error
details.
-view_tableSection_backButton = Back to List
-view_tableSection_error_badId = Can not show detail for [{0}]. Illegal 'id':
[{1}]. Please report this bug
-view_tableSection_error_noId = Table [{0}] record is missing 'id' attribute -
please report this bug.
-view_table_drawFail = Failed to draw Table [{0}].
-view_table_matchingRows = Matching Rows: {0} (selected: {1})
-view_table_totalRows = Total Rows: {0} (selected: {1})
-view_tabs_common_activity = Activity
-view_tabs_common_agent = Agent
-view_tabs_common_alerts = Alerts
-view_tabs_common_availability = Availability
-view_tabs_common_calltime = Calltime
-view_tabs_common_child_history = Child History
-view_tabs_common_child_resources = Child Resources
-view_tabs_common_configuration = Configuration
-view_tabs_common_connectionSettings = Connection Settings
-view_tabs_common_connectionSettingsHistory = Connection Settings History
-view_tabs_common_content = Content
-view_tabs_common_current = Current
-view_tabs_common_dashboard = Dashboard
-view_tabs_common_definitions = Definitions
-view_tabs_common_deployed = Deployed
-view_tabs_common_events = Events
-view_tabs_common_graphs = Graphs
-view_tabs_common_group_members = Group Members
-view_tabs_common_group_membership = Group Membership
-view_tabs_common_groups = Groups
-view_tabs_common_history = History
-view_tabs_common_inventory = Inventory
-view_tabs_common_members = Members
-view_tabs_common_monitoring = Monitoring
-view_tabs_common_new = New
-view_tabs_common_operations = Operations
-view_tabs_common_overview = Overview
-view_tabs_common_schedule = Schedule
-view_tabs_common_schedules = Schedules
-view_tabs_common_subscriptions = Subscriptions
-view_tabs_common_summary = Summary
-view_tabs_common_tables = Tables
-view_tabs_common_timeline = Timeline
-view_tabs_common_traits = Traits
-view_tabs_invalidSubTab = Invalid subtab: {0}
-view_tabs_invalidTab = Invalid tab: {0}
-view_tagCloud_deleteTag = Delete Tag
-view_tagCloud_deleteTagFailure = Failed to delete the tag [{0}]
-view_tagCloud_deleteTagSuccess = You successfully deleted the tag [{0}]
-view_tagCloud_error_fetchFailure = Failed to load tags.
-view_tagCloud_error_tagUsedCount = Tag used {0} times.
-view_tagCloud_title = Tag Cloud
-view_taggedResources_title = Resources
-view_tags_error_1 = Failed to load Tags
-view_tags_tags = Tags
-view_tags_tooltip_1 = Click to remove this Tag
-view_tags_tooltip_2 = Click to edit Tags
-view_tags_tooltip_3 = Enter a Tag in the format:
(namespace:)(semantic=)tagname (e.g. it:env=QA, or owner=John)
-view_testTop_description = This section contains pages for testing various GUI
components.
-view_testTop_title = Test
-view_titleBar_common_addedFav = You have added [{0}] as a favorite
-view_titleBar_common_addedFavFailure = Failed to add [{0}] as a favorite
-view_titleBar_common_clickToAddFav = Click to add this as a favorite
-view_titleBar_common_clickToRemoveFav = Click to remove this as a favorite
-view_titleBar_common_loadTagsFailure = Failed to load the tags for [{0}]
-view_titleBar_common_removedFav = You have removed [{0}] as one of your favorites
-view_titleBar_common_removedFavFailure = Failed to remove [{0}] as one of your favorites
-view_titleBar_common_updateTagsFailure = Failed to update the tags for [{0}]
-view_titleBar_common_updateTagsSuccessful = The tags for [{0}] have been updated
-view_titleBar_group_failInfo = Failed to get general info on group [{0}] with ID
[{1}]
-view_titleBar_group_summary_collapsedTooltip = Click to show more details for this group
-view_titleBar_group_summary_expandedTooltip = Click to hide details for this group
-view_tree_common_contextMenu_addChartToDashboard = Add chart to dashboard [{0}]
-view_tree_common_contextMenu_editPluginConfiguration = Edit [{0}] Plugin Configuration
-view_tree_common_contextMenu_editResourceConfiguration = Edit [{0}] Resource
Configuration
-view_tree_common_contextMenu_groupGraph = Group Metric Graph
-view_tree_common_contextMenu_loadFail_children = Failed to load platform manual add
children
-view_tree_common_contextMenu_loadFail_dashboards = Failed to load user dashboards
-view_tree_common_contextMenu_loadFail_group = Failed to load group for context menu
-view_tree_common_contextMenu_loadFailed_dashboard = Failed to load user dashboards
-view_tree_common_contextMenu_loadFailed_manualAddChildren = Failed to load platform
manual add children
-view_tree_common_contextMenu_measurements = Measurements
-view_tree_common_contextMenu_operations = Operations
-view_tree_common_contextMenu_operations_loadFailed = Failure to start wizard for running
operations
-view_tree_common_contextMenu_resourceConfiguration = Resource Configuration
-view_tree_common_contextMenu_resourceGraph = Resource Metric Graph
-view_tree_common_contextMenu_saveChartToDashboardFailure = Failed to save the dashboard
-view_tree_common_contextMenu_saveChartToDashboardSuccessful = You have saved dashboard
[{0}]
-view_tree_common_contextMenu_type_name_label = Type: {0}
-view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group
-view_tree_common_loadFailed_children = Failed to load children for node
-view_tree_common_loadFailed_create = Failed to create view for this node
-view_tree_common_loadFailed_descendants = Failed to load descendants for tree
-view_tree_common_loadFailed_generic = Failed to load data for tree
-view_tree_common_loadFailed_group = Failed to load group with id [{0}]
-view_tree_common_loadFailed_groupTree = Failed to load group tree
-view_tree_common_loadFailed_node = Failed to load data for this node
-view_tree_common_loadFailed_root = Failed to load root for tree
-view_tree_common_loadFailed_selection = Failed to select this node
-view_tree_common_loadFailed_update = Failed to update view for this node
-view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing
group. key: [{0}]
-view_type_parentId = Parent ID
-view_type_resourceTypes = Resource Types
-view_type_typeTreeLoadFailure = Failed to load resource type tree data
-view_upload_alreadyUploaded = File has already been uploaded
-view_upload_bundleDistFile = Distribution File
-view_upload_error_bundleDistFile = Error uploading Bundle Distribution File
-view_upload_error_file = Error uploading file
-view_upload_error_fileName = Error uploading file [{0}]
-view_upload_error_fileName_2 = Error uploading file [{0}], check for invalid file
path.
-view_upload_error_packageVersionFile = Error uploading Package Version File
-view_upload_error_results = Error uploading file, unexpected results: [{0}]
-view_upload_inProgress = Can not submit, upload is currently in progress
-view_upload_prompt_1 = Please select a file to upload [{0}]
-view_upload_prompt_2 = File to Upload
-view_upload_success = File successfully uploaded
-view_upload_tooltip_1a = Select a file to upload, then click Upload or Next
-view_upload_tooltip_1b = Select a file to upload, then click Next
-view_upload_tooltip_2 = File upload had previously failed
-view_upload_upload = Upload
-view_upload_uploadFile = UploadFile
-
-widget_colorPicker_tooltip = Click to select a new color
-widget_durationItem_inputUnitLessThanTargetUnit = Input unit is less than target unit.
-widget_durationItem_unitTypeNotSupported = Unit type [{0}] is not supported by this
DurationItem.
-widget_jobTriggerEditor_fieldHelp_repeatDuration = keep running this operation this many
times or until this amount of time has elapsed
-widget_jobTriggerEditor_fieldHelp_repeatInterval = how often the operation should be
executed
-widget_jobTriggerEditor_fieldHelp_startDelay = start executing the operation after this
amount of time has elapsed
-widget_jobTriggerEditor_field_cronExpression = Cron Expression
-widget_jobTriggerEditor_field_mode = Schedule using
-widget_jobTriggerEditor_field_repeatInterval_later = Repeat every
-widget_jobTriggerEditor_field_repeatInterval_now = Run now and every
-widget_jobTriggerEditor_field_startType = Run
-widget_jobTriggerEditor_message_endTimeMustBeAfterStartTime = End time must be after
start time.
-widget_jobTriggerEditor_message_endTimeMustBeInFuture = End time must be in the future.
-widget_jobTriggerEditor_message_startTimeMustBeInFuture = Start time must be in the
future.
-widget_jobTriggerEditor_tab_examples = Examples
-widget_jobTriggerEditor_tab_format = Format
-widget_jobTriggerEditor_value_calendar = Calendar
-widget_jobTriggerEditor_value_cronExpression = Cron Expression
-widget_jobTriggerEditor_value_for = For
-widget_jobTriggerEditor_value_in = in
-widget_jobTriggerEditor_value_indefinitely = Indefinitely
-widget_jobTriggerEditor_value_later = Later
-widget_jobTriggerEditor_value_laterAndRepeat = Later & Repeat
-widget_jobTriggerEditor_value_now = Now
-widget_jobTriggerEditor_value_nowAndRepeat = Now & Repeat
-widget_jobTriggerEditor_value_on = on
-widget_jobTriggerEditor_value_until = Until
-widget_recordEditor_error_invalidViewPath = Invalid view path: [{0}]
-widget_recordEditor_error_multipleRecords = Multiple records were returned - expected
exactly one.
-widget_recordEditor_error_noRecords = No records were returned - expected exactly one.
-widget_recordEditor_error_operation = Operation failed. An error occurred
-widget_recordEditor_error_operationInvalidValues = Operation failed - one or more fields
have invalid values
-widget_recordEditor_error_permissionCreate = You do not have the permissions required to
create a new [{0}]
-widget_recordEditor_error_unsupportedOperationType = Unsupported operation type: [{0}]
-widget_recordEditor_info_recordCreatedConcise = {0} created.
-widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
-widget_recordEditor_info_recordUpdatedConcise = {0} updated.
-widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
-widget_recordEditor_info_recordsDeletedConcise = {0} {1} deleted.
-widget_recordEditor_info_recordsDeletedDetailed = {0} {1} deleted: {2}.
-widget_recordEditor_label_loading = Loading...
-widget_recordEditor_title_edit = Edit {0} [{1}]
-widget_recordEditor_title_new = Create New {0}
-widget_recordEditor_title_view = View {0} [{1}]
-widget_recordEditor_warn_validation = One or more fields have invalid values. This [{0}]
cannot be saved until these values are corrected
-widget_resourceFactoryWizard_archPrompt = Package Architecture
-widget_resourceFactoryWizard_configTemplatePrompt = Resource Configuration Templates
-widget_resourceFactoryWizard_contentTemplatePrompt = Deployment Time Configuration
Templates
-widget_resourceFactoryWizard_createSubmit = A request to create a resource with the name
of [{0}] has been submitted successfully.
-widget_resourceFactoryWizard_createSubmitType = A request to create a resource of type
[{0}] has been submitted successfully.
-widget_resourceFactoryWizard_createWizardTitle = Create New Resource of Type [{0}]
-widget_resourceFactoryWizard_createWizardWindowTitle = Resource Create Wizard
-widget_resourceFactoryWizard_editConfigStepName = Deployment Options
-widget_resourceFactoryWizard_execute1 = Failed to create a new resource - there is no
package version
-widget_resourceFactoryWizard_execute2 = Failed to create a new resource
-widget_resourceFactoryWizard_failedToDeleteVersion = Failed to delete package version
while canceling a resource create
-widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for new
resource
-widget_resourceFactoryWizard_importFailure = Failed to manually import resource
-widget_resourceFactoryWizard_importSubmitted = A request to import a new resource of type
[{0}] has been submitted
-widget_resourceFactoryWizard_importWizardTitle = Import Resource of Type [{0}]
-widget_resourceFactoryWizard_importWizardWindowTitle = Resource Import Wizard
-widget_resourceFactoryWizard_infoStepName = Resource Information
-widget_resourceFactoryWizard_infoStep_loadFail = Failed to get available Architectures
-widget_resourceFactoryWizard_namePrompt = New Resource Name
-widget_resourceFactoryWizard_templatePrompt = Connection Settings Template
-widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will override
the default timeout for child resource creation (on the RHQ Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
-widget_resourceFactoryWizard_uploadFailure = Failed to upload file
-widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
-widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can
take several minutes to complete for large distribution files.
-widget_resourceFactoryWizard_versionPrompt = Package Version
-widget_resourceSelector_groupCategory = Group Category
-widget_resourceSelector_pleaseSelectMultipleResource = Please select one or more
resources
-widget_resourceSelector_pleaseSelectResource = Please select a resource
-widget_resourceSelector_selectMultipleResources = Select Resources
-widget_resourceSelector_selectResource = Select a Resource
-widget_typeCache_loadFail = Failed to load resource type metadata
-widget_typeTree_badTemplateType = Invalid URL. Unknown template type [{0}]
-widget_typeTree_badTypeId = Invalid URL. Bad resource type ID [{0}]
-widget_typeTree_loadFail = Failed to load resource types
+#
+# RHQ GUI i18n Messages - Default (English)
+#
+# Developers: See the following wiki page for how to work with this file:
+#
+#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
+#
+###################################
+common_alert_high = High
+common_alert_low = Low
+common_alert_medium = Medium
+common_buildInfo_gwtVersion = ${gwt.version}
+common_button_ack = Acknowledge
+common_button_ack_all = Acknowledge All
+common_button_add = Add
+common_button_advanced = Advanced...
+common_button_apply = Apply
+common_button_cancel = Cancel
+common_button_close = Close
+common_button_compare = Compare
+common_button_create_child = Create Child
+common_button_delete = Delete
+common_button_delete_all = Delete All
+common_button_disable = Disable
+common_button_edit = Edit
+common_button_enable = Enable
+common_button_finish = Finish
+common_button_import = Import
+common_button_new = New
+common_button_next = Next
+common_button_ok = OK
+common_button_previous = Previous
+common_button_purgeAll = Purge All
+common_button_refresh = Refresh
+common_button_reset = Reset
+common_button_save = Save
+common_button_schedule = Schedule
+common_button_search = Search
+common_button_set = Set
+common_button_showDetails = Show Details...
+common_button_uninventory = Uninventory
+common_calendar_april_short = apr
+common_calendar_august_short = aug
+common_calendar_december_short = dec
+common_calendar_february_short = feb
+common_calendar_january_short = jan
+common_calendar_july_short = jul
+common_calendar_june_short = jun
+common_calendar_march_short = mar
+common_calendar_may_short = may
+common_calendar_november_short = nov
+common_calendar_october_short = oct
+common_calendar_september_short = sept
+common_label_ago = ago
+common_label_all = ALL
+common_label_all_resources = all resources
+common_label_day = day
+common_label_days = days
+common_label_hour = hour
+common_label_hours = hours
+common_label_item = item
+common_label_items = items
+common_label_milliseconds = milliseconds
+common_label_minutes = minutes
+common_label_month = month
+common_label_none = none
+common_label_role = role
+common_label_roles = roles
+common_label_scheduled_operations = scheduled operations
+common_label_seconds = seconds
+common_label_selected_resources = selected resources
+common_label_unlimited = unlimited
+common_label_user = user
+common_label_users = users
+common_label_week = week
+common_label_weeks = weeks
+common_label_yesterday = Yesterday
+common_msg_areYouSure = Are You Sure?
+common_msg_asyncTimeout = {0}. This occurred because the server is taking a long time to
complete this request. Please be aware that the server may still be processing your
request and it may complete shortly. You can check the server logs to see if any abnormal
errors occurred.
+common_msg_changeAutoDetected = Change auto-detected
+common_msg_deleteConfirm = Are you sure you want to delete the # selected {0}?
+common_msg_emphasizedNotePrefix = NOTE:
+common_msg_loading = Loading...
+common_msg_noItemsToShow = No items to show
+common_msg_notYetImplemented = Not Yet Implemented
+common_msg_see_more = see more...
+common_msg_step_x_of_y = Step {0} of {1}
+common_severity_debug = Debug
+common_severity_error = Error
+common_severity_fatal = Fatal
+common_severity_info = Info
+common_severity_warn = Warn
+common_status_canceled = Canceled
+common_status_deferred = Deferred
+common_status_failed = Failed
+common_status_inprogress = In Progress
+common_status_nochange = No Change
+common_status_partial = Partial
+common_status_success = Success
+common_status_timedOut = Timed Out
+common_status_unknown = Unknown
+common_title_add_column = Add Column
+common_title_add_graph_to_view = Add Graph to Monitor View
+common_title_add_portlet = Add Portlet
+common_title_address = Address
+common_title_alert_range = Alert Range
+common_title_ancestry = Ancestry
+common_title_availability = Availability
+common_title_available_resources = Available Resources
+common_title_average_metrics = Average Metrics per Minute
+common_title_background = Background
+common_title_bundle = Bundle
+common_title_bundles = Bundles
+common_title_category = Category
+common_title_change_refresh_time = Refresh Interval
+common_title_columns = Columns
+common_title_compare_metrics = Compare Metrics
+common_title_compatibleGroups = Compatible Groups
+common_title_compatibleGroups_total = Compatible Group Total
+common_title_component_errors = Component Errors
+common_title_config_update_status = Update Status
+common_title_configuration = Configuration
+common_title_count = Count
+common_title_custom = Custom
+common_title_dashboard_name = Dashboard Name
+common_title_dateCreated = Date Created
+common_title_dateRange = Date Range
+common_title_default = Default
+common_title_description = Description
+common_title_details = Details
+common_title_display = Display
+common_title_display_name = Display Name
+common_title_duration = Duration
+common_title_edit_mode = Edit Mode
+common_title_enabled = Enabled?
+common_title_end = End
+common_title_error = Error
+common_title_generalProp = General Properties
+common_title_group = Group
+common_title_group_def_total = Group Definition Total
+common_title_group_member_health = Group Member Health
+common_title_groups = Groups
+common_title_help = Help
+common_title_host = Host
+common_title_id = ID
+common_title_id_parent = Parent ID
+common_title_info = Info
+common_title_inventory = Inventory
+common_title_inventorySummary = Inventory Summary
+common_title_lastUpdated = Last Updated
+common_title_lastUpdatedBy = Last Updated By
+common_title_ldapGroups = LDAP Groups
+common_title_mashup = Mashup
+common_title_members_reporting = Members Reporting
+common_title_message = Message
+common_title_metric = Metric
+common_title_metric_chart = Metric Chart
+common_title_mixedGroups = Mixed Groups
+common_title_mixedGroups_total = Mixed Group Total
+common_title_name = Name
+common_title_new_dashboard = New Dashboard
+common_title_numeric_metrics = Numeric Metrics
+common_title_numeric_type = Numeric Type
+common_title_operation_status = Operation Status
+common_title_operations = Operations
+common_title_operations_range = Operation Range
+common_title_over = Over
+common_title_password = Password
+common_title_path = Path
+common_title_permissions = Permissions
+common_title_platform = Platform
+common_title_platform_total = Platform Total
+common_title_plugin = Plugin
+common_title_port = Port
+common_title_providers = Providers
+common_title_recent_alerts = Recent Alerts
+common_title_recent_bundle_deployments = Recent Bundle Deployments
+common_title_recent_configuration_updates = Recent Configuration Updates
+common_title_recent_event_counts = Recent Event Counts
+common_title_recent_measurements = Recent Measurements
+common_title_recent_oob_metrics = Recent Out of Bound metrics
+common_title_recent_operations = Recent Operations
+common_title_recent_pkg_history = Recent Package History
+common_title_recently_added = Recently Added
+common_title_remove_column = Remove Column
+common_title_repositories = Repositories
+common_title_resource = Resource
+common_title_resourceGroups = Resource Groups
+common_title_resource_group = Resource Group
+common_title_resource_id = Resource ID
+common_title_resource_inventory = Resource Inventory
+common_title_resource_key = Resource Key
+common_title_resource_name = Resource Name
+common_title_resource_type = Resource Type
+common_title_resources = Resources
+common_title_results_count = Results Count
+common_title_results_count_tooltip = Displays this number of results
+common_title_role = Role
+common_title_roles = Roles
+common_title_scheduled_operations = Scheduled Operations
+common_title_search = Search
+common_title_selected_resources = Selected Resources
+common_title_server = Server
+common_title_server_total = Server Total
+common_title_service = Service
+common_title_service_total = Service Total
+common_title_settings = Settings
+common_title_show = Show
+common_title_show_more = Show more...
+common_title_sort_order = Sort Order
+common_title_sort_order_tooltip = Sets sort order for results.
+common_title_start = Start
+common_title_status = Status
+common_title_stop = Stop
+common_title_summary = Summary
+common_title_tag_cloud = Tag Cloud
+common_title_the = The
+common_title_timestamp = Date/Time
+common_title_total = Total
+common_title_type = Type
+common_title_units = Units
+common_title_user = User
+common_title_users = Users
+common_title_value = Value
+common_title_version = Version
+common_title_view_mode = View Mode
+common_title_web_address = Web Address
+common_title_welcome = Welcome
+common_unit_days = days
+common_unit_hours = hours
+common_unit_milliseconds = milliseconds
+common_unit_minutes = minutes
+common_unit_months = months
+common_unit_seconds = seconds
+common_unit_times = times
+common_unit_weeks = weeks
+common_unit_years = years
+common_val_for = for
+common_val_n1st = {0}st
+common_val_n2nd = {0}nd
+common_val_n3rd = {0}rd
+common_val_na = N/A
+common_val_never = Never
+common_val_no = No
+common_val_no_lower = no
+common_val_none = None
+common_val_nth = {0}th
+common_val_yes = Yes
+common_val_yes_lower = yes
+dataSource_ContentRepoTree_error_load = Error loading repositories
+dataSource_ContentRepoTree_field_parentId = Parent ID
+dataSource_bundle_loadFailed = Failed to load Bundle data
+dataSource_configurationHistory_clickToSeeError = Double click to see error message...
+dataSource_configurationHistory_currentConfig = This is the current configuration
+dataSource_configurationHistory_dateCompleted = Date Completed
+dataSource_configurationHistory_dateSubmitted = Date Submitted
+dataSource_configurationHistory_error_fetchFailure = Unable to load configuration
history.
+dataSource_configurationHistory_updateType = Update Type
+dataSource_configurationHistory_updateType_group = Group
+dataSource_configurationHistory_updateType_individual = Individual
+dataSource_definitions_loadFailed = Failed to load metric definitions
+dataSource_measurementOob_error_fetchFailure = Failed to load measurement OOB
information
+dataSource_measurementOob_field_factor = Out of Range Factor (%)
+dataSource_measurementOob_field_formattedBaseband = Band
+dataSource_measurementOob_field_formattedOutlier = Outlier
+dataSource_measurementOob_field_parentName = Parent
+dataSource_measurementOob_field_resourceName = Resource
+dataSource_measurementOob_field_scheduleName = Metric
+dataSource_operationHistory_error_fetchFailure = Failure loading operation histories.
+dataSource_operationHistory_field_createdTime = Created Time
+dataSource_operationHistory_field_operationName = Operation Name
+dataSource_operationHistory_field_startedTime = Started Time
+dataSource_operationHistory_field_subject = Requester
+dataSource_operationSchedule_field_description = Notes
+dataSource_operationSchedule_field_id = Schedule ID
+dataSource_operationSchedule_field_nextFireTime = Next Execution
+dataSource_operationSchedule_field_operationDisplayName = Operation
+dataSource_operationSchedule_field_operationName = Operation
+dataSource_operationSchedule_field_subject = Owner
+dataSource_operationSchedule_field_timeout = Timeout (in seconds)
+dataSource_platforms_field_cpu = CPU
+dataSource_platforms_field_memory = Memory
+dataSource_platforms_field_swap = Swap
+dataSource_problemResources_error_fetchFailure = Failed to load Resources with
alerts/unavailability.
+dataSource_problemResources_field_alerts = Alerts
+dataSource_problemResources_field_available = Current Availability
+dataSource_recentOperations_error_fetchFailure = Failed to load recently completed
operations.
+dataSource_recentOperations_field_location = Location
+dataSource_recentOperations_field_operation = Operation
+dataSource_recentOperations_field_resource = Resource
+dataSource_recentOperations_field_status = Status
+dataSource_recentOperations_field_time = Date/Time
+dataSource_resourceErrors_clickStatusIcon = Click the icon for more details
+dataSource_resourceErrors_deleteFailure = Failed to delete resource errors
+dataSource_resourceErrors_deleteSuccess = You have successfully deleted [{0}] resource
error messages.
+dataSource_resourceErrors_error_fetchFailure = Failed to find Resource errors for
Resource with id [{0}].
+dataSource_resourceErrors_field_errorType = Error Type
+dataSource_resourceErrors_field_summary = Summary
+dataSource_resourceErrors_field_timeOccured = Time
+dataSource_resourceGroups_loadFailed = Failed to load Resource Groups
+dataSource_resources_field_discoveryTime = Discovery Time
+dataSource_resources_field_importTime = Import Time
+dataSource_resources_field_key = Key
+dataSource_resources_field_lastModifiedTime = Last Modified Time
+dataSource_resources_field_lastModifier = Last Modifier
+dataSource_resources_field_location = Location
+dataSource_rpc_error_transformRequestFailure = Failure in datasource while processing {0}
request.
+dataSource_rpc_error_unsupportedArrayFilterType = No support for passing array filters of
type {0}.
+dataSource_rpc_error_unsupportedEnumType = Please add an appropriate code block for enum
{0} to RPCDataSource.getEnumArray(Class)
+dataSource_rpc_no = no
+dataSource_rpc_yes = yes
+dataSource_scheduledOperations_error_fetchFailure = Failed to load scheduled operations.
+dataSource_scheduledOperations_field_location = Location
+dataSource_scheduledOperations_field_operation = Operation
+dataSource_scheduledOperations_field_resource = Resource
+dataSource_scheduledOperations_field_time = Date/Time
+dataSource_schedules_disableFailure_group = Failed to disable the collection of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_disableFailure_resource = Failed to disable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_disableSuccessful_concise = You have disabled the collection of
[{0}] measurements
+dataSource_schedules_disableSuccessful_full_group = You have disabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The disabled measurements are:
[{2}]
+dataSource_schedules_disableSuccessful_full_resource = You have disabled the collection
of [{0}] measurements for the resource with ID [{1}]. The disabled measurements are:
[{2}]
+dataSource_schedules_enableFailure_group = Failed to enable the collection of [{0}]
metrics for group with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_enableFailure_resource = Failed to enable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_enableSuccessful_concise = You have enabled the collection of [{0}]
measurements
+dataSource_schedules_enableSuccessful_full_group = You have enabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The enabled measurements are:
[{2}]
+dataSource_schedules_enableSuccessful_full_resource = You have enabled the collection of
[{0}] measurements for the resource with ID [{1}]. The enabled measurements are: [{2}]
+dataSource_schedules_field_resourceGroupId = Group ID
+dataSource_schedules_loadFailed = Failed to load metric schedules
+dataSource_schedules_loadFailedContext = Failed to load metric schedules for context
[{0}]
+dataSource_schedules_loadFailedCriteria = Failed to load metric schedules for criteria
[{0}]
+dataSource_schedules_updateFailure_group = Failed to set the collection interval of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
+dataSource_schedules_updateFailure_resource = Failed to set the collection interval of
[{0}] metrics for resource with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
+dataSource_schedules_updateSuccessful_concise = A new collection interval of [{0}]
seconds has been set on [{1}] measurements
+dataSource_schedules_updateSuccessful_full_group = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource group with ID [{2}]. The updated
measurements are: [{3}]
+dataSource_schedules_updateSuccessful_full_resource = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource with ID [{2}]. The updated
measurements are: [{3}]
+dataSource_traits_failFetch = Failed to fetch traits for criteria [{0}].
+dataSource_traits_field_definitionID = Definition ID
+dataSource_traits_field_lastChanged = Last Changed
+dataSource_traits_field_primaryKey = Primary Key
+dataSource_traits_field_trait = Trait
+dataSource_traits_group_field_groupId = Group ID
+dataSource_users_delete = Deleted user [{0}]
+dataSource_users_deleteFailed = Failed to delete user [{0}]
+dataSource_users_field_department = Department
+dataSource_users_field_emailAddress = Email Address
+dataSource_users_field_factive = Login Enabled?
+dataSource_users_field_firstName = First Name
+dataSource_users_field_id = ID
+dataSource_users_field_lastName = Last Name
+dataSource_users_field_ldap = LDAP Login?
+dataSource_users_field_name = User Name
+dataSource_users_field_password = Password
+dataSource_users_field_passwordVerify = Verify Password
+dataSource_users_field_phoneNumber = Phone Number
+dataSource_users_invalidEmailAddress = Invalid email address.
+dataSource_users_passwordsDoNotMatch = Passwords do not match.
+datasource_roles_field_ldapGroups = LDAP Groups
+datasource_roles_field_permissions = Permissions
+datasource_roles_field_resourceGroups = Resource Groups
+datasource_roles_field_subjects = Subjects
+datasource_templateSchedules_disabled = Disabled collection of selected metric [{0}].
+datasource_templateSchedules_disabled_detailed = Disabled collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_disabled_failed = Failed to disable collection of metric
[{0}] [{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_enabled = Enabled collection of selected metric [{0}].
+datasource_templateSchedules_enabled_detailed = Enabled collection of metric [{0}] [{1}]
by default for ResourceType with id [{2}].
+datasource_templateSchedules_enabled_failed = Failed to enable collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_updated = Updated collection intervals of selected metric
[{0}].
+datasource_templateSchedules_updated_detail = Collection interval for metric [{0}] [{1}]
by default for ResourceType with id [{2}] set to [{3}] seconds.
+datasource_templateSchedules_updated_failed = Failed to set collection interval to [{0}]
seconds for metric [{1}] [{2}] by default for ResourceType with id [{3}].
+favorites = Favorites
+favorites_groups = Favorite Groups
+favorites_recentlyViewed = Recently Viewed
+favorites_resources = Favorite Resources
+group_tree_partialClusterTooltip = {0} out of {1} group members have a
''{2}'' resource
+util_ancestry_parentAncestry = Parent Ancestry for:
+util_errorHandler_nullException = exception was null
+util_monitoringRequestCallback_error_checkServerStatusFailure = Unable to determine login
status - check Server status.
+util_rpcManager_activeRequests = {0} Active Requests
+util_userPerm_loadFailGlobal = Failed to load your global permissions - none granted.
+util_userPerm_loadFailGroup = Failed to load your permissions for Resource Group with id
[{0}] - none granted.
+util_userPerm_loadFailResource = Failed to load your permissions for Resource with id
[{0}] - none granted.
+util_userSession_loadFailSubject = UserSessionManager: Failed to load user Subject
+util_userSession_logoutFail = Failed to logout.
+util_widgetsField_unlimited = Unlimited
+view_aboutBox_allRightsReserved = All Rights Reserved.
+view_aboutBox_buildNumber = Build Number:
+view_aboutBox_failedToLoad = Failed to load product information.
+view_aboutBox_homepage = Homepage
+view_aboutBox_jbossByRedHat = JBoss by Red Hat
+view_aboutBox_title = About {0}
+view_aboutBox_version = Version:
+view_adminConfig_downloads = Downloads
+view_adminConfig_plugins = Plugins
+view_adminConfig_systemSettings = System Settings
+view_adminConfig_templates = Templates
+view_adminContent_contentSources = Content Sources
+view_adminContent_repositories = Repositories
+view_adminRoles_assignedGroups = Assigned Resource Groups
+view_adminRoles_assignedSubjects = Assigned Subjects
+view_adminRoles_failLdap = Failed to determine if LDAP configured - assuming no LDAP.
+view_adminRoles_failLdapGroups = Failed to retrieve available LDAP groups - assuming no
LDAP groups.
+view_adminRoles_failLdapGroupsRole = Failed to load LDAP groups available for role.
+view_adminRoles_failRoles = Failed to fetch roles.
+view_adminRoles_globalPerms = Global Permissions
+view_adminRoles_ldapGroups = LDAP Groups
+view_adminRoles_ldapGroupsReadOnly = LDAP group data is read only
+view_adminRoles_noItems = No items to show
+view_adminRoles_noLdap = The LDAP security integration is not configured. To configure
LDAP, go to <a {0}>{1}</a>.
+view_adminRoles_permissions_autoselecting_configureRead_implied = Autodeselected
CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
+view_adminRoles_permissions_autoselecting_configureWrite_implied = Autoselected
CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
+view_adminRoles_permissions_autoselecting_manageInventory_implied = Autoselected
unselected Resource permissions, since MANAGE_INVENTORY implies all Resource
permissions...
+view_adminRoles_permissions_autoselecting_manageSecurity_implied = Autoselected
unselected permissions, since MANAGE_SECURITY implies all other permissions...
+view_adminRoles_permissions_globalPermissions = Global Permissions
+view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection = {0}
read permission cannot be deselected, unless the {0} write permission, which implies the
read permission, is deselected first.
+view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection = {0}
permission cannot be deselected, unless Manage Inventory, which implies all Resource
permissions, is deselected first.
+view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection = {0}
permission cannot be deselected, unless the Manage Security permission, which implies all
other permissions, is deselected first.
+view_adminRoles_permissions_isAuthorized = Authorized?
+view_adminRoles_permissions_isRead = Read?
+view_adminRoles_permissions_isWrite = Write?
+view_adminRoles_permissions_permDesc_manageBundles = can create, update, or delete
provisioning bundles (viewing is implied for everyone)
+view_adminRoles_permissions_permDesc_manageInventory = has all Resource permissions, as
described below, for all Resources; can create, update, and delete groups; and can import
auto-discovered or manually discovered Resources
+view_adminRoles_permissions_permDesc_manageRepositories = can create, update, or delete
repositories of any user (everyone can create their own repositories), can associate
content sources to repositories.
+view_adminRoles_permissions_permDesc_manageSecurity = can create, update, or delete users
and roles (viewing is implied for everyone)
+view_adminRoles_permissions_permDesc_manageSettings = can modify the RHQ Server
configuration and perform any Server-related functionality
+view_adminRoles_permissions_permReadDesc_configure = view Resource configuration and
Resource configuration revision history
+view_adminRoles_permissions_permReadDesc_control = (IMPLIED) view available operations
and operation execution history
+view_adminRoles_permissions_permReadDesc_createChildResources = (IMPLIED) view child
Resource creation history
+view_adminRoles_permissions_permReadDesc_deleteChildResources = (IMPLIED) view child
Resource deletion history
+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_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
+view_adminRoles_permissions_permWriteDesc_control = execute operations; delete operation
execution history items
+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_manageContent = subscribe to content sources;
install and uninstall packages
+view_adminRoles_permissions_permWriteDesc_manageEvents = delete events
+view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection
schedules
+view_adminRoles_permissions_perm_configure = Configure
+view_adminRoles_permissions_perm_control = Control
+view_adminRoles_permissions_perm_createChildResources = Create Child Resources
+view_adminRoles_permissions_perm_deleteChildResources = Delete Child Resources
+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_manageEvents = Manage Events
+view_adminRoles_permissions_perm_manageInventory = Manage Inventory
+view_adminRoles_permissions_perm_manageMeasurements = Manage Measurements
+view_adminRoles_permissions_perm_manageRepositories = Manage Repositories
+view_adminRoles_permissions_perm_manageSecurity = Manage Security
+view_adminRoles_permissions_perm_manageSettings = Manage Settings
+view_adminRoles_permissions_read = Read:
+view_adminRoles_permissions_readAccessImplied = Read access for the {0} permission is
implied and cannot be disabled.
+view_adminRoles_permissions_resourcePermissions = Resource Permissions
+view_adminRoles_permissions_write = Write:
+view_adminRoles_perms = Permissions
+view_adminRoles_resourcePerms = Resource Permissions
+view_adminRoles_roleAdded = Role [{0}] added.
+view_adminRoles_roleDeleteFailed = Failed to delete role [{0}].
+view_adminRoles_roleDeleted = Role [{0}] deleted.
+view_adminRoles_roleUpdateFailed = Failed to update role [{0}].
+view_adminRoles_roleUpdated = Role [{0}] updated.
+view_adminSecurity_roles = Roles
+view_adminSecurity_users = Users
+view_adminTemplates_disabledAlertTemplates = Disabled Alert Templates
+view_adminTemplates_disabledMetricTemplates = Disabled Metric Templates
+view_adminTemplates_editAlertTemplate = Edit Alert Template
+view_adminTemplates_editMetricTemplate = Edit Metric Template
+view_adminTemplates_enabledAlertTemplates = Enabled Alert Templates
+view_adminTemplates_enabledMetricTemplates = Enabled Metric Templates
+view_adminTemplates_platformServices = Platform Services
+view_adminTemplates_platforms = Platforms
+view_adminTemplates_prompt_disabledAlertTemplates = Number of alert templates that are
created but disabled on this resource type
+view_adminTemplates_prompt_disabledMetricTemplates = Number of metric schedules that are
disabled by default on this resource type
+view_adminTemplates_prompt_enabledAlertTemplates = Number of alert templates that are
enabled on this resource type
+view_adminTemplates_prompt_enabledMetricTemplates = Number of metric schedules that are
enabled by default on this resource type
+view_adminTemplates_servers = Servers
+view_adminTopology_affinityGroups = Affinity Groups
+view_adminTopology_agents = Agents
+view_adminTopology_partitionEvents = Partition Events
+view_adminTopology_remoteAgentInstall = Remote Agent Install
+view_adminTopology_servers = Servers
+view_adminUsersDetails_dataTypeName = user
+view_adminUsersList_dataTypeName = user
+view_adminUsersList_dataTypeNamePlural = users
+view_admin_administration = Administration
+view_admin_configuration = Configuration
+view_admin_content = Content
+view_admin_downloads_agentDownload = Agent Download
+view_admin_downloads_agent_buildNumber = Agent Build
+view_admin_downloads_agent_help = <p> This is the RHQ Agent Update Binary jar file.
The purpose of this jar file is to allow you to install a fresh agent on a machine where
an agent does not yet exist and to allow you to update an agent that is already installed
on a machine. For more details, run this agent download jar with the --help command line
option:<br/> <b>java -jar <agent-download.jar> --help</b>
</p> <h3>Agent Install</h3> <p> <b>java -jar
<agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
+view_admin_downloads_agent_link_label = Link
+view_admin_downloads_agent_link_value = Download Agent {0} ({1})
+view_admin_downloads_agent_loadError = Cannot get agent version info
+view_admin_downloads_agent_md5 = Agent MD5
+view_admin_downloads_agent_version = Agent Version
+view_admin_downloads_bundleDownload = Bundle Deployer Download
+view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is for
use by developers and packagers of RHQ bundles. This standalone tool allows you to test
your bundles and their recipes from a console. </p>
+view_admin_downloads_bundle_link_label = Link
+view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
+view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
+view_admin_downloads_cliDownload = Command Line Client Download
+view_admin_downloads_cli_buildNumber = CLI Build
+view_admin_downloads_cli_help = <p> This is the Command Line Client tool, otherwise
known as the CLI. It is a standalone tool that runs from within a console and provides a
command line interface to the RHQ Server. You can invoke commands via the CLI as well as
run scripts to perform automated tasks. See the documentation for more information on how
to install and use the CLI. </p>
+view_admin_downloads_cli_link_label = Link
+view_admin_downloads_cli_link_value = Download CLI {0} ({1})
+view_admin_downloads_cli_loadError = Cannot get CLI version info
+view_admin_downloads_cli_md5 = CLI MD5
+view_admin_downloads_cli_version = CLI Version
+view_admin_downloads_connectorsDownload = Connectors Download
+view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by RHQ. You install connectors into some managed
products so RHQ agents can talk to them. See the documentation for more information.
+view_admin_downloads_connectors_loadError = Cannot get connectors info
+view_admin_downloads_connectors_none = No connectors are available for download
+view_admin_landing = From this section, the RHQ global settings can be administered. This
includes configuring security, setting up plugins, and managing RHQ Servers and Agents.
+view_admin_measTemplates_title = Template Metric Collection Schedules
+view_admin_measTemplates_updateExisting_title = Update Existing Schedules
+view_admin_measTemplates_updateExisting_tooltip = Check this box to update the collection
schedules for the selected metrics on all existing resources of this type. If this is not
checked, the template schedules will only be applied to new resources of this type that
are added to inventory in the future.
+view_admin_security = Security
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = If this amount of time passes
without hearing from an agent, that quiet agent will be considered down. This value is
specified in minutes.
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent Max Quiet Time Allowed
+view_admin_systemSettings_AlertPurge_desc = How old alert history items must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_AlertPurge_name = Delete Alerts Older Than
+view_admin_systemSettings_AvailabilityPurge_desc = How old availability data must be
before being purged from the database. This is specified in days.
+view_admin_systemSettings_AvailabilityPurge_name = Delete Availability Data Older Than
+view_admin_systemSettings_BaseURL_desc = A URL to the server GUI, used mainly within
alert email notifications.
+view_admin_systemSettings_BaseURL_name = GUI Console URL
+view_admin_systemSettings_BaselineDataSet_desc = The amount of past measurement data that
is used to determine a baseline. This is specified in days.
+view_admin_systemSettings_BaselineDataSet_name = Baseline Dataset
+view_admin_systemSettings_BaselineFrequency_desc = The frequency which the
auto-calculation of baselines will be performed. If 0, baseline auto-calculation is
disabled. This is specified in days.
+view_admin_systemSettings_BaselineFrequency_name = Baseline Calculation Frequency
+view_admin_systemSettings_DataMaintenance_desc = How often database maintenance is
performed (for example, vacuuming if using Postgres). This is specified in hours.
+view_admin_systemSettings_DataMaintenance_name = Database Maintenance Period
+view_admin_systemSettings_DataReindex_desc = If enabled, certain database tables will be
re-indexed periodically.
+view_admin_systemSettings_DataReindex_name = Reindex Data Tables Nightly
+view_admin_systemSettings_EnableAgentAutoUpdate_desc = Determines if the server will
allow agents to auto-update themselves. You will not be able to download agent
distributions from the server if this is disabled.
+view_admin_systemSettings_EnableAgentAutoUpdate_name = Enable Agent Auto-Updates
+view_admin_systemSettings_EnableDebugMode_desc = If enabled, the server will enter debug
mode.
+view_admin_systemSettings_EnableDebugMode_name = Enable Debug Mode
+view_admin_systemSettings_EnableExperimentalFeatures_desc = If enabled, any experimental
features that exist in the current product will be available.
+view_admin_systemSettings_EnableExperimentalFeatures_name = Enable Experimental Features
+view_admin_systemSettings_EventPurge_desc = How old event data must be before being
purged from the database. This is specified in days.
+view_admin_systemSettings_EventPurge_name = Delete Events Older Than
+view_admin_systemSettings_JAASProvider_desc = Should LDAP be used to determine user
identity?
+view_admin_systemSettings_JAASProvider_name = Enable LDAP
+view_admin_systemSettings_LDAPBaseDN_desc = The base of the directory tree to search for
usernames and passwords while authenticating users, e.g. ou=People,dc=redhat,dc=com
+view_admin_systemSettings_LDAPBaseDN_name = Search Base
+view_admin_systemSettings_LDAPBindDN_desc = The username to connect to the LDAP server
when querying the LDAP user database. This is typically the full LDAP distinguished name
(DN) of a manager user, e.g. cn=Manager,dc=redhat,dc=com
+view_admin_systemSettings_LDAPBindDN_name = Username
+view_admin_systemSettings_LDAPBindPW_desc = The credentials of the user used to connect
to the LDAP server when querying the LDAP user database.
+view_admin_systemSettings_LDAPBindPW_name = Password
+view_admin_systemSettings_LDAPFilter_desc = Any additional filters to apply when doing
the LDAP search. This is useful if the population to authenticate can be identified via a
given LDAP property, e.g. RHQUser=true
+view_admin_systemSettings_LDAPFilter_name = Search Filter
+view_admin_systemSettings_LDAPGroupFilter_desc = LDAP search filter that must return all
LDAP groups available for authorization. This is used for LDAP group authorization.
+view_admin_systemSettings_LDAPGroupFilter_name = Group Search Filter
+view_admin_systemSettings_LDAPGroupMember_desc = LDAP search filter that is used in
conjunction with the group search filter to determine user authorization. This is used for
LDAP group authorization.
+view_admin_systemSettings_LDAPGroupMember_name = Group Member Filter
+view_admin_systemSettings_LDAPLoginProperty_desc = The LDAP property that contains the
user name. Defaults to "cn". If multiple matches are found, the first entry
found is used.
+view_admin_systemSettings_LDAPLoginProperty_name = Login Property
+view_admin_systemSettings_LDAPProtocol_desc = Should communication with the LDAP server
be done over SSL?
+view_admin_systemSettings_LDAPProtocol_name = SSL
+view_admin_systemSettings_LDAPUrl_desc = URL to the LDAP Server
+view_admin_systemSettings_LDAPUrl_name = LDAP URL
+view_admin_systemSettings_RtDataPurge_desc = How old response time data must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_RtDataPurge_name = Delete Response Time Data Older Than
+view_admin_systemSettings_TraitPurge_desc = How old measurement trait data must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_TraitPurge_name = Delete Measurement Traits Older Than
+view_admin_systemSettings_cannotLoadServerDetails = Cannot load server details
+view_admin_systemSettings_cannotLoadSettings = Cannot obtain the current system settings
+view_admin_systemSettings_fixBeforeSaving = Please fix the invalid values before saving
+view_admin_systemSettings_group_baseline = Automatic Baseline Configuration Properties
+view_admin_systemSettings_group_dataMgr = Data Manager Configuration Properties
+view_admin_systemSettings_group_general = General Configuration Properties
+view_admin_systemSettings_group_ldap = LDAP Configuration Properties
+view_admin_systemSettings_saveFailure = Failed to save the system settings
+view_admin_systemSettings_savedSettings = You successfully saved the system properties
+view_admin_systemSettings_serverDetails = Server Details
+view_admin_systemSettings_serverDetails_buildNumber = Build Number
+view_admin_systemSettings_serverDetails_currentTable = Current Measurement Raw Table
+view_admin_systemSettings_serverDetails_dbDriverName = Database Driver Name
+view_admin_systemSettings_serverDetails_dbDriverVersion = Database Driver Version
+view_admin_systemSettings_serverDetails_dbName = Database Product Name
+view_admin_systemSettings_serverDetails_dbUrl = Database Connection URL
+view_admin_systemSettings_serverDetails_dbVersion = Database Product Version
+view_admin_systemSettings_serverDetails_installDir = Server Installation Directory
+view_admin_systemSettings_serverDetails_nextRotation = Next Measurement Table Rotation
+view_admin_systemSettings_serverDetails_time = Server Local Time
+view_admin_systemSettings_serverDetails_tz = Server Time Zone
+view_admin_topology = Topology
+view_alert_common_tab_conditions = Conditions
+view_alert_common_tab_conditions_expression = Fire alert when
+view_alert_common_tab_conditions_expression_tooltip = Determines if ANY or ALL of the
conditions must evaluate to true in order for the entire condition set to be considered
true.
+view_alert_common_tab_conditions_modal_title = Add Condition
+view_alert_common_tab_conditions_recovery_disabled = This alert caused its alert
definition to be disabled
+view_alert_common_tab_conditions_recovery_enabled = Triggered ''{0}'' to
be re-enabled
+view_alert_common_tab_conditions_text = Condition
+view_alert_common_tab_conditions_type_availability = Availability Change
+view_alert_common_tab_conditions_type_availability_down = Went down
+view_alert_common_tab_conditions_type_availability_up = Came up
+view_alert_common_tab_conditions_type_event = Event Detection
+view_alert_common_tab_conditions_type_event_matching = with event source matching
+view_alert_common_tab_conditions_type_metric_baseline = Metric Value Baseline
+view_alert_common_tab_conditions_type_metric_baseline_verb = of
+view_alert_common_tab_conditions_type_metric_calltime_change = Call Time Value Changes
+view_alert_common_tab_conditions_type_metric_calltime_change_verb = by at least
+view_alert_common_tab_conditions_type_metric_calltime_delta_grows = Grows
+view_alert_common_tab_conditions_type_metric_calltime_delta_other = Changes
+view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = Shrinks
+view_alert_common_tab_conditions_type_metric_calltime_destination = with call destination
matching
+view_alert_common_tab_conditions_type_metric_calltime_threshold = Call Time Value
Threshold
+view_alert_common_tab_conditions_type_metric_change = Metric Value Change
+view_alert_common_tab_conditions_type_metric_threshold = Metric Value Threshold
+view_alert_common_tab_conditions_type_metric_trait_change = Trait Change
+view_alert_common_tab_conditions_type_operation = Operation Execution
+view_alert_common_tab_conditions_type_operation_status = with result status
+view_alert_common_tab_conditions_type_resource_configuration = Resource Configuration
Change
+view_alert_common_tab_conditions_value = Value
+view_alert_common_tab_dampening = Dampening
+view_alert_common_tab_dampening_category_consecutive_count = Consecutive
+view_alert_common_tab_dampening_category_consecutive_count_tooltip = An alert is
triggered once every X occurrences the condition set is true consecutively.
+view_alert_common_tab_dampening_category_duration_count = Time Period
+view_alert_common_tab_dampening_category_duration_count_tooltip = An alert is triggered
once every X occurrences the condition set is true within a given time period.
+view_alert_common_tab_dampening_category_none = None
+view_alert_common_tab_dampening_category_none_tooltip = Dampening is disabled. Every time
the condition set is true, an alert will be triggered.
+view_alert_common_tab_dampening_category_partial_count = Last N Evaluations
+view_alert_common_tab_dampening_category_partial_count_tooltip = An alert is triggered
once every X occurrences the condition set is true during the last N evaluations of the
condition set.
+view_alert_common_tab_dampening_consecutive_occurrences_label = Occurrences
+view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = The number of
times the condition set must be consecutively true before the alert is triggered
+view_alert_common_tab_dampening_duration_occurrences_label = Occurrences
+view_alert_common_tab_dampening_duration_occurrences_label_tooltip = The number of times
the condition set must be true during the given time period before the alert is
triggered.
+view_alert_common_tab_dampening_duration_period_label = Time Period
+view_alert_common_tab_dampening_duration_period_label_tooltip = The time span in which
the condition set will be tested to see if the given number of occurrences are true.
+view_alert_common_tab_dampening_partial_evalatuions_label = Evaluations
+view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = The total number of
times the condition set will be tested to see if the given number of occurrences are
true.
+view_alert_common_tab_dampening_partial_occurrences_label = Occurrences
+view_alert_common_tab_dampening_partial_occurrences_label_tooltip = The number of times
the condition set must be true during the last N evaluations before the alert is
triggered.
+view_alert_common_tab_general = General Properties
+view_alert_common_tab_invalid_condition_category = Invalid condition category - please
report this as a bug: {0}
+view_alert_common_tab_invalid_dampening_category = Invalid dampening category - please
report this as a bug: {0}
+view_alert_common_tab_invalid_time_units = Invalid time units - please report this as a
bug: {0}
+view_alert_common_tab_notifications = Notifications
+view_alert_common_tab_notifications_message = Message
+view_alert_common_tab_notifications_sender = Sender
+view_alert_common_tab_notifications_status = Status
+view_alert_common_tab_recovery = Recovery
+view_alert_definition_condition_editor_avilability_option_down = Goes down
+view_alert_definition_condition_editor_avilability_option_up = Comes up
+view_alert_definition_condition_editor_avilability_tooltip = Specify the availability
state change that will trigger the condition.
+view_alert_definition_condition_editor_avilability_value = Availability
+view_alert_definition_condition_editor_common_avg = Average
+view_alert_definition_condition_editor_common_max = Maximum
+view_alert_definition_condition_editor_common_min = Minimum
+view_alert_definition_condition_editor_delete_confirm = Delete the selected alert
condition(s)?
+view_alert_definition_condition_editor_event_regex = Regular Expression
+view_alert_definition_condition_editor_event_regex_tooltip = If specified, this is a
regular expression that must match a collected event message in order to trigger the
condition.
+view_alert_definition_condition_editor_event_severity = Event Severity
+view_alert_definition_condition_editor_event_severity_debug = Debug
+view_alert_definition_condition_editor_event_severity_error = Error
+view_alert_definition_condition_editor_event_severity_fatal = Fatal
+view_alert_definition_condition_editor_event_severity_info = Info
+view_alert_definition_condition_editor_event_severity_warn = Warn
+view_alert_definition_condition_editor_event_tooltip = Specify the event severity that an
event message must be reported with in order to trigger this condition. If you specify an
optional regular expression, the event message must also match that regular expression in
order for the condition to trigger.
+view_alert_definition_condition_editor_metric_baseline_percentage = Baseline Percentage
+view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = A collected
metric value will trigger this condition when compared to this percentage of the selected
baseline value using the selected comparator
+view_alert_definition_condition_editor_metric_baseline_tooltip = Specify the baseline
value that must be violated to trigger the condition. The value you specify is a
percentage of the given baseline value.
+view_alert_definition_condition_editor_metric_baseline_value = Baseline
+view_alert_definition_condition_editor_metric_calltime_change_percentage = Percentage
Change
+view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip = A
collected calltime value will trigger this condition when it differs by at least this
percentage of the selected calltime limit value
+view_alert_definition_condition_editor_metric_calltime_change_tooltip = Specify the
calltime value that, when changed at least a specified amount, triggers the condition. You
must specify which calltime limit to check (minimum, maximum or average calltime value)
and the percentage of change that must occur.
+view_alert_definition_condition_editor_metric_calltime_common_comparator = Comparator
+view_alert_definition_condition_editor_metric_calltime_common_comparator_changes =
Changes
+view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = Grows
+view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks =
Shrinks
+view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = How a
collected calltime value should be compared to the given calltime limit
+view_alert_definition_condition_editor_metric_calltime_common_limit = Call Time Limit
+view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = The
calltime limit value that is to be compared with the given value
+view_alert_definition_condition_editor_metric_calltime_common_name = Call Time Metric
+view_alert_definition_condition_editor_metric_calltime_common_regex = Regular Expression
+view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip = If
specified, this is a regular expression that must match a call destination in order to
trigger the condition.
+view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Specify the
calltime threshold value that, when violated, triggers the condition. The value you
specify is an absolute value with an optional units specifier. You also must specify which
calltime limit to compare the value with (minimum, maximum or average calltime value).
+view_alert_definition_condition_editor_metric_calltime_threshold_value = Call Time Value
+view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = The
threshold value of the metric that will trigger the condition when compared using the
selected comparator.
+view_alert_definition_condition_editor_metric_change_tooltip = Specify the metric whose
value must change to trigger the condition.
+view_alert_definition_condition_editor_metric_common_definition_not_found = Should have
found metric definition - something is wrong
+view_alert_definition_condition_editor_metric_threshold_comparator = Comparator
+view_alert_definition_condition_editor_metric_threshold_comparator_equal = Equal to
+view_alert_definition_condition_editor_metric_threshold_comparator_greater = Greater
Than
+view_alert_definition_condition_editor_metric_threshold_comparator_less = Less than
+view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = How a
collected metric value should be compared to the given threshold value
+view_alert_definition_condition_editor_metric_threshold_name = Metric
+view_alert_definition_condition_editor_metric_threshold_tooltip = Specify the threshold
value that, when violated, triggers the condition. The value you specify is an absolute
value with an optional units specifier.
+view_alert_definition_condition_editor_metric_threshold_value = Metric Value
+view_alert_definition_condition_editor_metric_threshold_value_tooltip = The threshold
value of the metric that will trigger the condition when compared using the selected
comparator.
+view_alert_definition_condition_editor_metric_trait_change_tooltip = Specify the trait
whose value must change to trigger the condition.
+view_alert_definition_condition_editor_metric_trait_change_value = Trait
+view_alert_definition_condition_editor_operation_status = Operation Status
+view_alert_definition_condition_editor_operation_status_canceled = Canceled
+view_alert_definition_condition_editor_operation_status_failure = Failure
+view_alert_definition_condition_editor_operation_status_inprogress = In Progress
+view_alert_definition_condition_editor_operation_status_success = Success
+view_alert_definition_condition_editor_operation_tooltip = Specify the result that must
occur when the selected operation is executed in order to trigger the condition.
+view_alert_definition_condition_editor_operation_value = Operation
+view_alert_definition_condition_editor_option_availability = Availability Change
+view_alert_definition_condition_editor_option_event = Event Detection
+view_alert_definition_condition_editor_option_label = Condition Type
+view_alert_definition_condition_editor_option_metric_baseline = Measurement Baseline
Threshold
+view_alert_definition_condition_editor_option_metric_calltime_change = Call Time Value
Change
+view_alert_definition_condition_editor_option_metric_calltime_threshold = Call Time Value
Threshold
+view_alert_definition_condition_editor_option_metric_change = Measurement Value Change
+view_alert_definition_condition_editor_option_metric_threshold = Measurement Absolute
Value Threshold
+view_alert_definition_condition_editor_option_metric_trait_change = Trait Value Change
+view_alert_definition_condition_editor_option_operation = Operation Execution
+view_alert_definition_condition_editor_option_resource_configuration = Resource
Configuration Change
+view_alert_definition_condition_editor_resource_configuration_tooltip = This condition is
triggered when the resource configuration changes.
+view_alert_definition_for_group = View Group Definition
+view_alert_definition_for_type = View Template
+view_alert_definition_notification_cliScript_editor_anotherUser = Another User
+view_alert_definition_notification_cliScript_editor_existingScript = Existing Script
+view_alert_definition_notification_cliScript_editor_loadFailed = Loading the CLI
Notification Editor Failed.
+view_alert_definition_notification_cliScript_editor_newScriptVersion = Version
+view_alert_definition_notification_cliScript_editor_repository = Repository
+view_alert_definition_notification_cliScript_editor_script = Script
+view_alert_definition_notification_cliScript_editor_selectRepo = Select the repository
where the script should reside
+view_alert_definition_notification_cliScript_editor_selectRepoFirst = Select a repository
first.
+view_alert_definition_notification_cliScript_editor_thisUser = Myself
+view_alert_definition_notification_cliScript_editor_uploadNewScript = Upload New Script
+view_alert_definition_notification_cliScript_editor_verifyAuthentication = Verify
+view_alert_definition_notification_cliScript_editor_whichUser = User To Run The Script
As
+view_alert_definition_notification_editor_delete_confirm = Are you sure you want to
delete the selected alert notifications?
+view_alert_definition_notification_editor_field_configuration = Configuration
+view_alert_definition_notification_editor_field_configuration_loadFailed = Failed to get
notification configuration preview
+view_alert_definition_notification_editor_field_configuration_not_loaded = Unknown
+view_alert_definition_notification_editor_field_sender = Sender
+view_alert_definition_notification_editor_loadFailed = Cannot get alert senders
+view_alert_definition_notification_editor_loadFailed_single = Cannot get alert sender
configuration definition
+view_alert_definition_notification_editor_none_available = No alert senders available
+view_alert_definition_notification_editor_saveFailed = Cannot save the notification
configuration
+view_alert_definition_notification_editor_sender = Notification Sender
+view_alert_definition_notification_editor_title_add = Add Notification
+view_alert_definition_notification_editor_title_edit = Edit Notification
+view_alert_definition_notification_operation_editor_common_operation = Operation
+view_alert_definition_notification_operation_editor_mode_relative = Relative Resource
+view_alert_definition_notification_operation_editor_mode_specific = Specific Resource
+view_alert_definition_notification_operation_editor_mode_this = This Resource
+view_alert_definition_notification_operation_editor_mode_title = Resource Selection Mode
+view_alert_definition_notification_operation_editor_mode_unknown = UNKNOWN OPTION - THIS
IS A BUG
+view_alert_definition_notification_operation_editor_operations_loadFailed = Failed to
load the list of available operations
+view_alert_definition_notification_operation_editor_operations_no_parameters = This
operation does not take any parameters
+view_alert_definition_notification_operation_editor_relative_ancestor = Start Search
From
+view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed = Cannot
get type ancestry
+view_alert_definition_notification_operation_editor_relative_ancestor_root = Root
Ancestor Type
+view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Select
the top of the type hierarchy from which to search its descendant tree for the Filter By
type
+view_alert_definition_notification_operation_editor_relative_descendant = Then Filter By
+view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip =
A specific name to uniquely identify a resource when more than one resource of the
selected type might exist. This is optional if there will only ever be one resource of the
resource type in the selected type hierarchy.
+view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
Cannot get type descendants
+view_alert_definition_notification_operation_editor_relative_descendant_tooltip = The
resource type to search for under the root type defined in the Start Search From
selection.
+view_alert_definition_notification_operation_editor_specific_pick_button = Pick
+view_alert_definition_notification_operation_editor_specific_pick_error_invalid = Please
pick a resource
+view_alert_definition_notification_operation_editor_specific_pick_error_no_operation =
Please pick a resource that has one or more operations
+view_alert_definition_notification_operation_editor_specific_pick_text = Pick a
resource...
+view_alert_definition_notification_operation_editor_specific_resource = Resource
+view_alert_definition_notification_role_editor_loadFailed = Cannot determine current
roles - starting empty
+view_alert_definition_notification_role_editor_restoreFailed = Cannot use current roles -
starting empty
+view_alert_definition_notification_role_editor_saveFailed = Cannot save the selected
roles
+view_alert_definition_notification_user_editor_loadFailed = Cannot determine current
users - starting empty
+view_alert_definition_notification_user_editor_restoreFailed = Cannot use current users -
starting empty
+view_alert_definition_notification_user_editor_saveFailed = Cannot save the selected
users
+view_alert_definition_recovery_editor_disable_when_fired = Disable When Fired
+view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indicates if this
alert will be disabled after it fires. Once disabled, the alert can be manually re-enabled
or a recovery alert can be set up to automatically re-enable it. If this alert is a
recovery alert itself, this setting cannot be turned on.
+view_alert_definition_recovery_editor_loadFailed = Cannot build recovery menu
+view_alert_definition_recovery_editor_none_available = None
+view_alert_definition_recovery_editor_recovery_alert = Recover Alert
+view_alert_definition_recovery_editor_recovery_alert_tooltip = The target alert that will
be recovered (i.e. re-enabled) after this alert triggers. Do not select an alert here if
you are not defining a recovery alert.
+view_alert_definitions_create_failure = Alert definition creation failed
+view_alert_definitions_create_success = Alert definition successfully created
+view_alert_definitions_delete_confirm = Delete the selected alert definition(s)?
+view_alert_definitions_delete_failure = Failed to deleted the selected alert definitions
+view_alert_definitions_delete_success = Successfully deleted {0} alert definitions
+view_alert_definitions_disable_confirm = Disable the selected alert definition(s)?
+view_alert_definitions_disable_failure = Failed to disable the selected alert
definitions
+view_alert_definitions_disable_success = Successfully disabled {0} alert definitions
+view_alert_definitions_enable_confirm = Enable the selected alert definition(s)?
+view_alert_definitions_enable_failure = Failed to enable the selected alert definitions
+view_alert_definitions_enable_success = Successfully enabled {0} alert definitions
+view_alert_definitions_loadFailed = Failed to fetch alert definition data
+view_alert_definitions_loadFailed_single = Failed to fetch data for alert definition with
id {0}
+view_alert_definitions_table_title_group = Group Alert Definitions
+view_alert_definitions_table_title_resource = Resource Alert Definitions
+view_alert_definitions_update_failure = Alert definition update failed
+view_alert_definitions_update_success = Alert definition successfully updated
+view_alert_details_field_ack_at = Acknowledged at
+view_alert_details_field_ack_by = Acknowledged by
+view_alert_details_field_recovery_info = Recovery Info
+view_alert_details_loadFailed = Failed to fetch alert details
+view_alerts_ack_confirm = Acknowledge the selected alert(s)?
+view_alerts_ack_confirm_all = Acknowledge all alerts from this source?
+view_alerts_ack_failure = Failed to acknowledge alerts with id''s: {0}
+view_alerts_ack_failure_all = Failed to acknowledge all alerts from this source
+view_alerts_ack_success = Successfully acknowledged {0} alerts
+view_alerts_delete_confirm = Delete the selected alert(s)?
+view_alerts_delete_confirm_all = Delete all alerts from this source?
+view_alerts_delete_failure = Failed to delete alerts with id''s: {0}
+view_alerts_delete_failure_all = Failed to delete all alerts from this source
+view_alerts_delete_success = Successfully deleted {0} alerts
+view_alerts_field_ack_status = Status
+view_alerts_field_ack_status_ack = Ack ({0})
+view_alerts_field_ack_status_ackHover = Acknowledged by {0} at {1}
+view_alerts_field_ack_status_noAck = No Ack
+view_alerts_field_ack_status_noAckHover = Not yet Acknowledged
+view_alerts_field_ack_subject = Acknowledge Subject
+view_alerts_field_ack_time = Acknowledge Time
+view_alerts_field_condition_text = Condition Text
+view_alerts_field_condition_text_many = Multiple Conditions
+view_alerts_field_condition_text_none = No Conditions
+view_alerts_field_condition_value = Condition Value
+view_alerts_field_created_time = Creation Time
+view_alerts_field_enabled = Enabled
+view_alerts_field_modified_time = Modified Time
+view_alerts_field_name = Name
+view_alerts_field_parent = Parent
+view_alerts_field_priority = Priority
+view_alerts_field_protected = Protected
+view_alerts_field_protected_tooltip = If true, this definition is protected from being
changed by the parent definition. In other words, the parent definition settings will not
override this definition.
+view_alerts_loadFailed = Failed to fetch alerts data
+view_alerts_table_filter_priority = Priority Filter
+view_alerts_table_title_group = Group Alert History
+view_alerts_table_title_resource = Resource Alert History
+view_autoDiscoveryQ_committed = Committed
+view_autoDiscoveryQ_confirmSelect = Also select the platform children?
+view_autoDiscoveryQ_deleted = Deleted
+view_autoDiscoveryQ_field_discoveryTime = Discovery Time
+view_autoDiscoveryQ_field_inventoryStatus = Inventory Status
+view_autoDiscoveryQ_field_key = Resource Key
+view_autoDiscoveryQ_field_name = Resource Name
+view_autoDiscoveryQ_field_parentId = Parent ID
+view_autoDiscoveryQ_ignore = Ignore
+view_autoDiscoveryQ_ignoreFailure = Failed to ignore resources
+view_autoDiscoveryQ_ignoreSuccessful = You have successfully ignored the selected
resources.
+view_autoDiscoveryQ_ignored = Ignored
+view_autoDiscoveryQ_import = Import
+view_autoDiscoveryQ_importFailure = Failed to import resources
+view_autoDiscoveryQ_importSuccessful = You have successfully imported the selected
resources.
+view_autoDiscoveryQ_loadFailure = Failed to load the inventory discovery queue
+view_autoDiscoveryQ_new = New
+view_autoDiscoveryQ_newAndIgnored = New and Ignored
+view_autoDiscoveryQ_noItems = No items to show
+view_autoDiscoveryQ_noperm = (You are not authorized to view the auto-discovery queue)
+view_autoDiscoveryQ_showStatus = Show
+view_autoDiscoveryQ_title = Autodiscovery Queue
+view_autoDiscoveryQ_unignore = Unignore
+view_autoDiscoveryQ_unignoreFailure = Failed to unignore resources
+view_autoDiscoveryQ_unignoreSuccessful = You have successfully unignored the selected
resources.
+view_autoDiscoveryQ_uninventoried = Uninventoried
+view_bundleVersion_loadFailure = Failed to load bundle version data
+view_bundle_bundle = Bundle
+view_bundle_bundleDeployment = Bundle Deployment
+view_bundle_bundleDeployments = Bundle Deployments
+view_bundle_bundleDestinations = Bundle Destinations
+view_bundle_bundleFiles = Bundle Files
+view_bundle_bundleType = Bundle Type
+view_bundle_bundleVersion = Bundle Version
+view_bundle_bundleVersions = Bundle Versions
+view_bundle_bundles = Bundles
+view_bundle_createWizard_bundleDistro = Bundle Distribution
+view_bundle_createWizard_cancelFailure = Failed to fully cancel the creation of bundle
[{0}], version = [{1}] - the bundle may still exist in the database
+view_bundle_createWizard_cancelSuccessful = Canceled the creation of bundle [{0}],
version = [{1}]
+view_bundle_createWizard_clickToUploadRecipe = Click to load a recipe file
+view_bundle_createWizard_createFailure = Failed to create the bundle
+view_bundle_createWizard_createSuccessful = You have successfully created a bundle named
[{0}] with a version of [{1}]
+view_bundle_createWizard_enterRecipe = Please supply a valid recipe
+view_bundle_createWizard_enterUrl = Please enter a valid URL where the bundle
distribution file can be downloaded from
+view_bundle_createWizard_failedToUploadDistroFile = Failed to upload bundle distribution
file
+view_bundle_createWizard_failedToUploadFile = Failed to upload bundle file
+view_bundle_createWizard_loadBundleFileFailure = Cannot obtain bundle file information
from server
+view_bundle_createWizard_noAdditionalFilesNeeded = No additional files need to be
uploaded for this bundle
+view_bundle_createWizard_noBundleTypesAvail = No bundle types are available
+view_bundle_createWizard_noBundleTypesSupported = No bundle types are supported - you
must deploy a valid plugin that supports bundle deployments
+view_bundle_createWizard_provideBundleDistro = Provide a Bundle Distribution
+view_bundle_createWizard_recipeOption = Recipe
+view_bundle_createWizard_title = Create Bundle
+view_bundle_createWizard_uploadInProgress = Upload is in progress... This can take
several minutes for large files
+view_bundle_createWizard_uploadOption = Upload
+view_bundle_createWizard_uploadStepName = Upload Bundle Files
+view_bundle_createWizard_urlOption = URL
+view_bundle_createWizard_windowTitle = Bundle Creation Wizard
+view_bundle_createWizard_youMustChooseOne = You must choose one option in order to create
a bundle!
+view_bundle_deleteConfirm = Are you sure you want to delete this bundle? All versions,
destinations and deployments for this bundle will also be deleted.
+view_bundle_deploy = Deploy
+view_bundle_deployDir = Deploy Directory
+view_bundle_deployWizard_deployStep = Deploy Bundle to Destination Platforms
+view_bundle_deployWizard_deploying = Deploying...
+view_bundle_deployWizard_deploymentCreated = Created Deployment...
+view_bundle_deployWizard_deploymentCreatedDetail = You have created the deployment [{0}]
with the description [{1}]
+view_bundle_deployWizard_deploymentCreatedDetail_concise = You have created the
deployment [{0}]
+view_bundle_deployWizard_deploymentScheduled = Bundle Deployment Scheduled!
+view_bundle_deployWizard_deploymentScheduledDetail = You have scheduled the bundle
deployment [{0}] to the destination group [{1}]
+view_bundle_deployWizard_deploymentScheduledDetail_concise = You have scheduled the
bundle deployment
+view_bundle_deployWizard_destinationCreatedDetail = You have created the destination
[{0}] with the description [{1}]
+view_bundle_deployWizard_destinationCreatedDetail_concise = You have created the
destination [{0}]
+view_bundle_deployWizard_error_1 = Failed to delete new deployment on Cancel
+view_bundle_deployWizard_error_10 = Failed to create destination, it may already exist.
(Note, for an existing destination deploy from the Destination view)
+view_bundle_deployWizard_error_11 = Failed to find defined deployments.
+view_bundle_deployWizard_error_12 = Failed to find defined bundles.
+view_bundle_deployWizard_error_2 = Failed to delete new destination on Cancel
+view_bundle_deployWizard_error_3 = Failed to Schedule Deployment!
+view_bundle_deployWizard_error_4 = Failed to schedule deployment: {0}
+view_bundle_deployWizard_error_5 = Failed to Create Deployment!
+view_bundle_deployWizard_error_6 = Failed to create deployment: {0}
+view_bundle_deployWizard_error_7 = Failed to get deployment name.
+view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down
+view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage
+view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
+view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
+view_bundle_deployWizard_getDestStep = New Destination
+view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)
+view_bundle_deployWizard_getDest_desc = Destination Description
+view_bundle_deployWizard_getDest_name = Destination Name
+view_bundle_deployWizard_getInfoStep = Provide Deployment Information
+view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
+view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description
+view_bundle_deployWizard_getInfo_deploymentName = Deployment Name
+view_bundle_deployWizard_getOptionsStep = Deploy Options
+view_bundle_deployWizard_getOptions_deployLater = Deploy Later
+view_bundle_deployWizard_getOptions_deployNow = Deploy Now
+view_bundle_deployWizard_getOptions_deployTime = Deployment Time
+view_bundle_deployWizard_selectBundleStep = Select Deployment Bundle
+view_bundle_deployWizard_selectBundle_single = Select only a single bundle for
deployment.
+view_bundle_deployWizard_selectVersionStep = Select Deployment Bundle Version
+view_bundle_deployWizard_selectVersion_latest = Latest Version [{0}]
+view_bundle_deployWizard_selectVersion_live = Live Version [{0}]
+view_bundle_deployWizard_selectVersion_select = Select Version from List:
+view_bundle_deployWizard_title = Bundle Deployment Wizard
+view_bundle_deploy_action = Action
+view_bundle_deploy_backButton = Back to Destination
+view_bundle_deploy_clickForError = Click the icon for the error message
+view_bundle_deploy_deleteConfirm = Are you sure you want to delete this bundle
deployment?
+view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
+view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
+view_bundle_deploy_deployedBy = Deployed By
+view_bundle_deploy_deploymentPlatforms = Deployment Platforms
+view_bundle_deploy_installDetails = Install Details
+view_bundle_deploy_loadBundleFailure = Failed to find bundle
+view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments
+view_bundle_deploy_loadFailure = Failed to load bundle deployment
+view_bundle_deploy_name = Deployment Name
+view_bundle_deploy_operatingSystem = Operating System
+view_bundle_deploy_selectARow = Select a row to show installation details
+view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags
+view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags
+view_bundle_deploy_time = Deployment Time
+view_bundle_deployed = Deployed
+view_bundle_deployments = Deployments
+view_bundle_dest_backToBundle = Back to Bundle
+view_bundle_dest_created = Created
+view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle destination?
This only deletes it from the database; all bundle content that was deployed to this
destination on remote machines will remain.
+view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
+view_bundle_dest_deleteSuccessful = You successfully deleted the bundle destination
[{0}]
+view_bundle_dest_deployDir = Deploy Directory
+view_bundle_dest_group = Group
+view_bundle_dest_lastDeployedVersion = Last Deployed Version
+view_bundle_dest_lastDeploymentDate = Last Deployment Date
+view_bundle_dest_lastDeploymentStatus = Last Deployment Status
+view_bundle_dest_loadFailure = Failed to load bundle destinations
+view_bundle_dest_loadFailureVersionInfo = Failed to load bundle destination deployed
version information
+view_bundle_dest_purgeConfirm = This will purge the bundle content from all remote
machines. Are you sure you want to do this?
+view_bundle_dest_purgeFailure = Failed to purge the bundle destination [{0}] from some or
all of the remote machines.
+view_bundle_dest_purgeSuccessful = You successfully purged the bundle destination [{0}]
from all of the remote machines.
+view_bundle_dest_revertConfirm = This will revert all remote machines back to the
previous bundle deployment. Are you sure you want to do this?
+view_bundle_dest_tagUpdateFailure = Failed to update bundle destination tags
+view_bundle_dest_tagUpdateSuccessful = You have successfully updated the bundle
destination tags
+view_bundle_destinations = Destinations
+view_bundle_fileListView_fileSize = File Size
+view_bundle_fileListView_loadFailure = Failed to load bundle file data
+view_bundle_fileListView_md5 = MD5
+view_bundle_fileListView_sha256 = SHA256
+view_bundle_files = Files
+view_bundle_latestVersion = Latest Version
+view_bundle_list_backToAll = Back to All Bundles
+view_bundle_list_deleteConfirm = Are you sure you want to delete the selected bundles?
+view_bundle_list_deleteFailure = Failed to delete the bundle [{0}]
+view_bundle_list_deleteSuccessful = You successfully deleted the bundle [{0}]
+view_bundle_list_deletesFailure = Failed to delete the bundles
+view_bundle_list_deletesSuccessful = You successfully deleted the bundles
+view_bundle_list_destinationsCount = Destinations Count
+view_bundle_list_error1 = Failed to load bundle to deploy [{0}]
+view_bundle_list_error2 = Failed to get a single bundle to deploy [{0}]
+view_bundle_list_error3 = Failed to load bundle
+view_bundle_list_loadFailure = Failed to load the bundle to be deployed [{0}]
+view_bundle_list_loadWithLatestFailure = Failed to load bundle with the latest version
data
+view_bundle_list_singleLoadFailure = Failed to get a single bundle to be deployed [{0}]
+view_bundle_list_tagUpdateFailure = Failed to update bundle tags
+view_bundle_list_tagUpdateSuccessful = You have successfully updated the bundle tags
+view_bundle_list_versionsCount = Versions Count
+view_bundle_purge = Purge
+view_bundle_recipe = Recipe
+view_bundle_resDeployDS_loadFailure = Failed to load bundle resource deployments
+view_bundle_revert = Revert
+view_bundle_revertWizard_confirmStep_confirmation = Reverting Live Deployment to Previous
Deployment. Click "Next" to continue...
+view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment = Failed to find live
deployment; cannot revert
+view_bundle_revertWizard_confirmStep_liveDeployment = Live Deployment
+view_bundle_revertWizard_confirmStep_name = Revert Deployment Confirmation
+view_bundle_revertWizard_confirmStep_noLiveDeployment = No live deployment was found for
the destination [{0}]
+view_bundle_revertWizard_confirmStep_noLiveDeployment_concise = No live deployment was
found for the destination
+view_bundle_revertWizard_confirmStep_noPriorDeployment = The live deployment [{0}] cannot
be reverted because there is no prior deployment for the destination [{1}]
+view_bundle_revertWizard_confirmStep_noPriorDeployment_concise = The live deployment
cannot be reverted because there is no prior deployment
+view_bundle_revertWizard_confirmStep_prevDeployment = Previous Deployment
+view_bundle_revertWizard_getInfoStep_cleanDeploy = Clean Deployment? (this will delete an
old, existing deploy directory prior to starting the revert deployment)
+view_bundle_revertWizard_getInfoStep_getNameFailure = Failed to get revert deployment
name
+view_bundle_revertWizard_getInfoStep_name = Provide Revert Information
+view_bundle_revertWizard_getInfoStep_revertDeployDesc = Revert Deploy Description
+view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT
From]\\n{0}\\n\\n[REVERT To]\\n{1}
+view_bundle_revertWizard_getInfoStep_revertDeployName = Revert Deploy Name
+view_bundle_revertWizard_revertStep_name = Deploy Bundle to Destination Platforms
+view_bundle_revertWizard_revertStep_reverting = Reverting...
+view_bundle_revertWizard_revertStep_scheduled = You have successfully scheduled the
revert deployment!
+view_bundle_revertWizard_revertStep_scheduledDetails = You have successfully scheduled to
revert the bundle deployment [{0}] from resource group [{1}]
+view_bundle_revertWizard_revertStep_scheduledFailure = Failed to schedule revert
deployment!
+view_bundle_revertWizard_title = Bundle Revert
+view_bundle_revertWizard_windowTitle = Bundle Revert Wizard
+view_bundle_tree_loadFailure = Failed to load bundle data
+view_bundle_version_backToBundle = Back to Bundle
+view_bundle_version_bundleVersionTagUpdateFailure = Failed to update bundle version tags
+view_bundle_version_bundleVersionTagUpdateSuccessful = You have successfully updated the
bundle version tags
+view_bundle_version_deleteConfirm = Are you sure you want to delete this bundle version?
+view_bundle_version_deleteFailure = Failed to delete the bundle version [{0}]
+view_bundle_version_deleteSuccessful = You successfully deleted the bundle version [{0}]
+view_bundle_version_loadFailure = Failed to load bundle version
+view_bundle_versions = Versions
+view_configCompare_comparingConfigs = Comparing Configurations
+view_configCompare_configCompare = Configuration Comparison
+view_configEdit_addItem = Add Item to List
+view_configEdit_confirm_1 = Are you sure you want to delete the selected properties from
the set?
+view_configEdit_confirm_2 = Are you sure you want to delete this row?
+view_configEdit_confirm_3 = Are you sure you want to delete the [{0}] selected [{1}]?
+view_configEdit_editRow = Edit Row
+view_configEdit_enterPropName = Enter the name of the property to be added.
+view_configEdit_error_1 = Configuration is not supported by this Resource.
+view_configEdit_error_2 = Connection settings are not supported by this Resource.
+view_configEdit_error_3 = Cannot add property named [{0}]. The property name is already
used in the set.
+view_configEdit_files = Files
+view_configEdit_hideAll = Hide All
+view_configEdit_jumpToSection = Jump to Section
+view_configEdit_msg_1 = Added property [{0}] to the set.
+view_configEdit_msg_2 = Removed properties from the set.
+view_configEdit_msg_3 = [{0} {1}] deleted from list.
+view_configEdit_msg_4 = Item added to list.
+view_configEdit_properties = Properties
+view_configEdit_tooltip_1 = Delete the selected items from the list.
+view_configEdit_tooltip_2 = Add an item to the list.
+view_configEdit_viewRow = View Row
+view_configurationDetails_allPropertiesValid = All configuration properties have valid
values, so the configuration can now be saved.
+view_configurationDetails_configNotUpdatedDueToNoChange = Configuration was not updated,
since the new configuration is equivalent to the current configuration.
+view_configurationDetails_error_updateFailure = Failed to update configuration.
+view_configurationDetails_messageConcise = Configuration updated - current version is
{0}.
+view_configurationDetails_messageDetailed = Configuration updated to version {0} for
Resource [{1}].
+view_configurationDetails_noPermission = You do not have permission to edit this
Resource''s configuration.
+view_configurationDetails_somePropertiesInvalid = The following configuration properties
have invalid values: {0}. The values must be corrected before the configuration can be
saved.
+view_configurationHistoryDetails_error_loadFailure = Unable to load configuration
history.
+view_configurationHistoryList_cannotDeleteCurrent = One of the selected history items
represents the current configuration - you cannot delete it.
+view_configurationHistoryList_cannotDeleteGroupItems = One or more selected configuration
history items are part of a group configuration update. You must purge that parent group
history item before you can delete its individual resource history items.
+view_configurationHistoryList_delete_failure = Failed to delete the configuration history
items.
+view_configurationHistoryList_delete_success = You successfully deleted the selected
configuration history items.
+view_configurationHistoryList_rollback = Rollback
+view_configurationHistoryList_rollback_failure = Failed to rollback the configuration.
The original configuration is still in effect.
+view_configurationHistoryList_rollback_success = You successfully rolled back the
configuration to the selected past configuration.
+view_configurationHistoryList_table_clickStatusIcon = Click the status icon for full
details
+view_configurationHistoryList_table_statusFailure = This configuration update failed
+view_configurationHistoryList_table_statusInprogress = This configuration update is still
in progress
+view_configurationHistoryList_table_statusNochange = No changes were made to this
configuration
+view_configurationHistoryList_table_statusSuccess = This configuration update was
successful
+view_configurationHistoryList_title = Configuration History
+view_connectionSettingsDetails_allPropertiesValid = All connection settings have valid
values, so the settings can now be saved.
+view_connectionSettingsDetails_error_updateFailure = Failed to update connection
settings.
+view_connectionSettingsDetails_messageConcise_updateSuccess = Connection settings update
initiated.
+view_connectionSettingsDetails_messageDetailed_updateSuccess = Connection settings update
initiated for Resource [{0}].
+view_connectionSettingsDetails_noPermission = You do not have permission to edit this
Resource''s connection settings.
+view_connectionSettingsDetails_somePropertiesInvalid = The following connection settings
have invalid values: {0}. The values must be corrected before the settings can be saved.
+view_core_error_1 = New Alerts lookup failed
+view_core_loggedOut = Logged out
+view_core_noRecentAlerts = There are no recent alerts to report
+view_core_recentAlerts = There are [{0}] recent alerts - click to go to the recent alerts
report
+view_core_uncaught = Globally uncaught exception
+view_dashboardManager_deleteFail = Failed to delete dashboard.
+view_dashboardManager_deleted = Successfully deleted dashboard {0}
+view_dashboardManager_error = Failed to save dashboard to server
+view_dashboardManager_saved = Saved dashboard {0} to server
+view_dashboardManager_success = Saved dashboard
+view_dashboard_favorites_error1 = Failed to load favorite Resources.
+view_dashboardsManager_error1 = Failed to add new dashboard
+view_dashboardsManager_message_title_details = <h1>Welcome to
RHQ</h1>\n<p>The RHQ project is an abstraction and plug-in based systems
management suite that provides extensible and integrated systems management for multiple
products and platforms across a set of core features. The project is designed with layered
modules that provide a flexible architecture for deployment. It delivers a core user
interface that delivers audited and historical management across an entire enterprise. A
Server/Agent architecture provides remote management and plugins implement all specific
support for managed products.</p>\n <p>This default dashboard can be edited by
clicking the (edit mode) button above.</p>
+view_dashboards_confirm1 = Are you sure you want to delete
+view_dashboards_portlets_refresh_fail1 = Failed to update interval for portlets that
auto-refresh
+view_dashboards_portlets_refresh_fail2 = Failed to disable reload for portlets that
auto-refresh
+view_dashboards_portlets_refresh_multiple_min = {0} minutes
+view_dashboards_portlets_refresh_none = No Refresh
+view_dashboards_portlets_refresh_one_min = 1 minute
+view_dashboards_portlets_refresh_success1 = Updated interval for portlets that
auto-refresh
+view_dashboards_portlets_refresh_success2 = Stopping reload for portlets that
auto-refresh
+view_dashboards_title = Dashboard
+view_dynagroup_children = DynaGroup Children
+view_dynagroup_compatible = Compatible
+view_dynagroup_definitionAlreadyExists = A group definition already exists with this
name
+view_dynagroup_definitionCreated = You have successfully created a group definition named
[{0}]
+view_dynagroup_definitionLoadFailure = Failed to load group definitions
+view_dynagroup_definitions = DynaGroup Definitions
+view_dynagroup_deleteFailureSelection = Failed to delete the selected group definitions
+view_dynagroup_deleteSuccessfulSelection = You have successfully deleted [{0}] group
definitions
+view_dynagroup_editing = Editing [{0}]
+view_dynagroup_exprBuilder_addExpression = Add Expression
+view_dynagroup_exprBuilder_comparisonType = Comparison Type
+view_dynagroup_exprBuilder_comparisonType_contains = contains
+view_dynagroup_exprBuilder_comparisonType_endsWith = ends with
+view_dynagroup_exprBuilder_comparisonType_equals = equals
+view_dynagroup_exprBuilder_comparisonType_startsWith = starts with
+view_dynagroup_exprBuilder_comparisonType_tooltip = Comparison Type
+view_dynagroup_exprBuilder_definingPlugin = Defining Plugin
+view_dynagroup_exprBuilder_definingPlugin_tooltip = The plugin to search
+view_dynagroup_exprBuilder_expression = Expression
+view_dynagroup_exprBuilder_expressionType = Expression Type
+view_dynagroup_exprBuilder_expressionType_pluginConfig = Plugin Configuration
+view_dynagroup_exprBuilder_expressionType_resource = Resource
+view_dynagroup_exprBuilder_expressionType_resourceCategory = Resource Category
+view_dynagroup_exprBuilder_expressionType_resourceConfig = Resource Configuration
+view_dynagroup_exprBuilder_expressionType_resourceType = Resource Type
+view_dynagroup_exprBuilder_expressionType_tooltip = The type of property this expression
switches on:<br/> <b>Resource</b>: A resource property such as its name
or version<br/> <b>Resource Type</b>: Search for resources of a specific
type<br/> <b>Resource Category</b>: Search for resources by category:
platform, server, service<br/> <b>Trait</b>: Resources that have
selected values for a monitored trait<br/> <b>Plugin Configuration</b>:
Search by the plugin component configuration setting of the component<br/>
<b>Resource Configuration</b>: Search by the configuration setting of the
managed resource
+view_dynagroup_exprBuilder_expressionType_trait = Trait
+view_dynagroup_exprBuilder_expression_tooltip = This is the full expression that is
represented by the selections in the form below. This text will be added to your group
definition expression text when you click the "Add Expression" button.
+view_dynagroup_exprBuilder_groupBy = Group by
+view_dynagroup_exprBuilder_groupBy_tooltip = GroupBy will cause the system to pivot on
the values from the entered expressions creating a separate group for each value. For
example, GroupBy on the cluster name to create a group for each cluster with all cluster
members in it.
+view_dynagroup_exprBuilder_noPlugins = --No plugins--
+view_dynagroup_exprBuilder_noProperties = --No properties--
+view_dynagroup_exprBuilder_noResourceTypes = --No resource types--
+view_dynagroup_exprBuilder_pluginLoadFailure = Cannot get the list of plugins
+view_dynagroup_exprBuilder_propLoadFailure = Cannot get list of properties
+view_dynagroup_exprBuilder_propertyName = Property Name
+view_dynagroup_exprBuilder_propertyName_tooltip = The name of the property to query. This
is defined by the expression type as well as the resource type.
+view_dynagroup_exprBuilder_resTypeLoadFailure = Cannot get list of resource types for
plugin [{0}]
+view_dynagroup_exprBuilder_resource = Resource
+view_dynagroup_exprBuilder_resourceType = Resource Type
+view_dynagroup_exprBuilder_resourceType_tooltip = The type of resource
+view_dynagroup_exprBuilder_resource_child = Child
+view_dynagroup_exprBuilder_resource_grandparent = Grandparent
+view_dynagroup_exprBuilder_resource_greatGrandparent = GreatGrandparent
+view_dynagroup_exprBuilder_resource_greatGreatGrandparent = GreatGreatGrandparent
+view_dynagroup_exprBuilder_resource_parent = Parent
+view_dynagroup_exprBuilder_resource_resource = Resource
+view_dynagroup_exprBuilder_resource_tooltip = Choose the level of the resource you wish
to select. For example, select "parent" will find resources whose parent
resource matches the rest of the expression.
+view_dynagroup_exprBuilder_title = Expression Builder
+view_dynagroup_exprBuilder_unset = Unset
+view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the "=" operator because
of how databases store and query data.
+view_dynagroup_exprBuilder_value_tooltip = The string value for the expression to query
+view_dynagroup_expression = Expression
+view_dynagroup_expressionBuilderIconTooltip = Expression Builder...
+view_dynagroup_expressionSet = Expression Set
+view_dynagroup_lastCalculationTime = Last Calculation Time
+view_dynagroup_loadDefinitionFailure = Failed to load group definition [{0}]
+view_dynagroup_loadDefinitionMissing = There is no group definition with the ID of [{0}]
+view_dynagroup_mixed = Mixed
+view_dynagroup_newGroupDefinition = New Group Definition
+view_dynagroup_nextCalculationTime = Next Calculation Time
+view_dynagroup_permDenied = You do not have permission to view group definitions
+view_dynagroup_recalcFailure = Failed to recalculated this group definition
+view_dynagroup_recalcFailureSelection = Failed to recalculated the selected group
definitions
+view_dynagroup_recalcSuccessful = You have successfully recalculated this group
definition
+view_dynagroup_recalcSuccessfulSelection = You have successfully recalculated [{0}] group
definitions
+view_dynagroup_recalculate = Recalculate
+view_dynagroup_recalculationInterval = Recalculation Interval (ms)
+view_dynagroup_recursive = Recursive
+view_dynagroup_saveAndRecalculate = Save & Recalculate
+view_dynagroup_saveFailure = Failed to save the group definition named [{0}]
+view_dynagroup_saveSuccessful = You have successfully saved the group definition named
[{0}]
+view_dynagroup_singleSaveFailure = An error occurred - there should have been one
created, but instead there were [{0}] created
+view_dynagroup_template_customExpression = Custom Expression...
+view_dynagroup_template_downedResources = All resources currently down
+view_dynagroup_template_jbossas4_clusters = JBossAS 4 - Clusters
+view_dynagroup_template_jbossas4_earClusters = JBossAS 4 - Clustered EARs
+view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - All hosting any version of
"my" app
+view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - All non-secured
+view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - Unique versions
+view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - Clusters
+view_dynagroup_template_platforms = Platform resources in inventory
+view_dynagroup_template_uniqueResourceTypes = Unique resource types in inventory
+view_groupConfigEdit_member = Member
+view_groupConfigEdit_noListProps = List properties are not currently supported for group
configurations.
+view_groupConfigEdit_setAll = Set all values to:
+view_groupConfigEdit_tooltip_1 = Member values differ - click icon to edit them.
+view_groupConfigEdit_unset = Unset
+view_groupConfigEdit_valsDiff = member values differ
+view_groupConfigEdit_valsDiffForProp = Member Values for Property [{0}]
+view_groupCreateWizard_createFailure = Failed to create the resource group
+view_groupCreateWizard_createStepName = Group Settings
+view_groupCreateWizard_createStep_recursive = Recursive
+view_groupCreateWizard_createSuccessful_concise = You have created a new resource group.
[<a href="{0}">View Group</a>]
+view_groupCreateWizard_createSuccessful_full = You have created a new [{0}] resource
group with the name [{1}] that contains [{2}] member resources
+view_groupCreateWizard_membersStepName = Select Members
+view_groupCreateWizard_title = Create Group
+view_groupCreateWizard_windowTitle = Create Group
+view_groupInventoryMembers_button_updateMembership = Update Membership...
+view_groupInventoryMembers_title_updateMembership = Update Membership
+view_group_detail_failLoad = Failed to load group for group with ID [{0}]
+view_group_detail_failLoadComp = Failed to load group composite for group with ID [{0}]
+view_group_detail_failRecursiveChange = Failed to update the recursive setting for group
[{0}]
+view_group_detail_recursiveChange = You successfully changed the recursive setting for
group [{0}]
+view_group_inventory_activity_no_recent_metrics = This group has no recent metrics
+view_group_meas_schedules_title = Group Metric Collection Schedules
+view_group_membership_failFetch = Failed to fetch Resource Group
+view_group_membership_saveFailure = Failed to update membership of group [{0}]
+view_group_membership_saveSuccessful = You have updated the membership of group [{0}]
+view_group_operationScheduleDetails_failedToLoadMembers = Failed to load group member
Resources.
+view_group_operationScheduleDetails_field_execute = Execute
+view_group_operationScheduleDetails_field_haltOnFailure = Halt on Failure?
+view_group_operationScheduleDetails_memberResource = Member Resource
+view_group_operationScheduleDetails_value_parallel = in parallel
+view_group_operationScheduleDetails_value_sequential = in the order specified below (drag
and drop member Resources to change order)
+view_group_pluginConfig_edit_currentGroupProperties = Current Group Properties
+view_group_pluginConfig_edit_invalid = The following connection setting properties have
invalid values and must be corrected before the connection settings can be saved: [{0}]
+view_group_pluginConfig_edit_noperm = You do not have permission to edit this group
connection settings
+view_group_pluginConfig_edit_saveFailure = Failed to initiate group connection setting
update for [{0}] compatible group named [{1}]
+view_group_pluginConfig_edit_saveInitiated_concise = The group connection setting updates
have been initiated
+view_group_pluginConfig_edit_saveInitiated_full = The group connection setting updates
have been initiated for the [{0}] compatible group named [{1}]
+view_group_pluginConfig_edit_saveTooltip = Update the connection settings of all group
members
+view_group_pluginConfig_edit_valid = All connection setting properties have valid values,
so the connection settings can now be saved
+view_group_pluginConfig_members_fetchFailure = Failed to get plugin config update history
for members of group [{0}]
+view_group_pluginConfig_members_fetchFailureConn = Failed to retrieve member connection
settings for [{0}]
+view_group_pluginConfig_members_fetchFailureConnInProgress = A group plugin configuration
update is currently in progress. You must wait until the update is finished before you can
view the group settings.
+view_group_pluginConfig_members_statusDetails = Status Details
+view_group_pluginConfig_members_statusFailure = This configuration update failed for an
unknown reason
+view_group_pluginConfig_members_statusInprogress = This configuration update is still in
progress
+view_group_pluginConfig_members_statusNochange = No changes were made to this
configuration
+view_group_pluginConfig_members_statusSuccess = This configuration update was successful
+view_group_pluginConfig_members_title = Group Connection Settings Member Histories
+view_group_pluginConfig_table_clickStatusIcon = Click the status icon for full details
+view_group_pluginConfig_table_deleteFailure = Failed to delete group plugin config
history
+view_group_pluginConfig_table_deleteSuccessful = You have deleted [{0}] history items
+view_group_pluginConfig_table_failFetch = Failed to get group plugin config history
+view_group_pluginConfig_table_msg1 = View Member History for status of each individual
resource
+view_group_pluginConfig_table_statusDetails = Status Details
+view_group_pluginConfig_table_statusFailure = This group configuration update failed
+view_group_pluginConfig_table_statusInprogress = This group configuration update is still
in progress
+view_group_pluginConfig_table_statusNochange = No changes were made to this group
configuration
+view_group_pluginConfig_table_statusSuccess = This group configuration update was
successful
+view_group_pluginConfig_table_title = Group Connection Settings History
+view_group_pluginConfig_table_viewMemberHistory = View Member History
+view_group_pluginConfig_table_viewSettings = View Settings
+view_group_pluginConfig_view_groupProperties = Group Properties
+view_group_pluginConfig_view_noperm = You do not have permissions to see the connection
settings
+view_group_resConfig_edit_invalid = The following configuration properties have invalid
values and must be corrected before the configuration can be saved: [{0}]
+view_group_resConfig_edit_loadFail = Failed to retrieve member Resource configurations
for [{0}]
+view_group_resConfig_edit_noperm = You do not have permission to edit this group
configuration
+view_group_resConfig_edit_saveFailure = Failed to initiate group configuration update for
[{0}] compatible group named [{1}]
+view_group_resConfig_edit_saveInitiated_concise = The group configuration updates have
been initiated
+view_group_resConfig_edit_saveInitiated_full = The group configuration updates have been
initiated for the [{0}] compatible group named [{1}]
+view_group_resConfig_edit_saveTooltip = Update the configurations of all group members
+view_group_resConfig_edit_valid = All configuration properties have valid values, so the
configuration can now be saved
+view_group_resConfig_members_fetchFailure = Failed to get resource config update history
for members of group [{0}]
+view_group_resConfig_members_fetchFailureConfig = Failed to retrieve member resource
configuration settings for [{0}]
+view_group_resConfig_members_fetchFailureConfigInProgress = A group resource
configuration update is currently in progress. You must wait until the update is finished
before you can view the group settings.
+view_group_resConfig_members_statusDetails = Status Details
+view_group_resConfig_members_statusFailure = This configuration update failed for an
unknown reason
+view_group_resConfig_members_statusInprogress = This configuration update is still in
progress
+view_group_resConfig_members_statusNochange = No changes were made to this configuration
+view_group_resConfig_members_statusSuccess = This configuration update was successful
+view_group_resConfig_members_title = Group Resource Configuration Member Histories
+view_group_resConfig_table_clickStatusIcon = Click the status icon for full details
+view_group_resConfig_table_deleteFailure = Failed to delete group resource config
history
+view_group_resConfig_table_deleteSuccessful = You have deleted [{0}] history items
+view_group_resConfig_table_failFetch = Failed to get group resource config history
+view_group_resConfig_table_msg1 = View Member History for status of each individual
resource
+view_group_resConfig_table_statusDetails = Status Details
+view_group_resConfig_table_statusFailure = This group configuration update failed
+view_group_resConfig_table_statusInprogress = This group configuration update is still in
progress
+view_group_resConfig_table_statusNochange = No changes were made to this group
configuration
+view_group_resConfig_table_statusSuccess = This group configuration update was
successful
+view_group_resConfig_table_title = Group Resource Configuration History
+view_group_resConfig_table_viewMemberHistory = View Member History
+view_group_resConfig_table_viewSettings = View Settings
+view_group_resConfig_view_groupProperties = Group Properties
+view_group_resConfig_view_noperm = You do not have permissions to see the resource
configuration settings
+view_group_summary_compatible = Compatible
+view_group_summary_descUpdateFailure = Failed to change the description of the resource
group with ID [{0}]
+view_group_summary_descUpdateSuccessful = You have changed the description of this
resource group
+view_group_summary_dynamic = Dynamic
+view_group_summary_dynamicNote = Dynamic group names and descriptions are managed, and
therefore are not editable
+view_group_summary_groupDefinition = Group Definition
+view_group_summary_memberCount = Member Count
+view_group_summary_memberType = Member Type
+view_group_summary_mixed = Mixed
+view_group_summary_nameUpdateFailure = Failed to change the name of the resource group
with ID [{0}] - could not change from [{1}] to [{2}]
+view_group_summary_nameUpdateSuccessful = You have changed the name of the resource group
with ID [{0}] from [{1}] to [{2}]
+view_group_summary_recursive = Recursive
+view_helpTop_description = This section provides access to documentation, tutorials,
version, and other helpful information.
+view_help_section_product = Product
+view_help_section_product_about = About
+view_inventory_adq = Discovery Queue
+view_inventory_allGroups = All Groups
+view_inventory_allResources = All Resources
+view_inventory_collectionInterval = Collection Interval
+view_inventory_dynagroupDefs = Dynagroup Definitions
+view_inventory_eventDetails_loadFailed = An error occurred loading the event details
+view_inventory_eventHistory_deleteFailed = Failed to deleted selected events for [{0}]
+view_inventory_eventHistory_deleteSuccessful = You have successfully deleted [{0}] events
for [{1}]
+view_inventory_eventHistory_details = Details
+view_inventory_eventHistory_detailsFilter = Details Filter
+view_inventory_eventHistory_groupEventHistory = Group Event History
+view_inventory_eventHistory_purgeFailed = Failed to purge events for [{0}]
+view_inventory_eventHistory_purgeSuccessful = You have successfully purged [{0}] events
for [{1}]
+view_inventory_eventHistory_resourceEventHistory = Resource Event History
+view_inventory_eventHistory_severity = Severity
+view_inventory_eventHistory_severityFilter = Severity Filter
+view_inventory_eventHistory_sourceFilter = Source Filter
+view_inventory_eventHistory_sourceLocation = Source Location
+view_inventory_eventHistory_timestamp = Timestamp
+view_inventory_groups = Groups
+view_inventory_groups_children = Children
+view_inventory_groups_deleteFailed = Failed to delete the selected resource groups
+view_inventory_groups_deleteSuccessful = You have successfully deleted the selected
resource groups
+view_inventory_groups_descendants = Descendants
+view_inventory_groups_loadFailed = Failed to load group composite data
+view_inventory_groups_resourceGroups = Resource Groups
+view_inventory_mixed = mixed
+view_inventory_platforms = Platforms
+view_inventory_problemGroups = Problem Groups
+view_inventory_resource_loadFailed = Resource with id [{0}] does not exist or is not
accessible
+view_inventory_resources_deleteConfirm = Are you sure you want to delete the selected
resources?
+view_inventory_resources_deleteFailed = Failed to delete the selected resources
+view_inventory_resources_deleteSuccessful = You have successfully deleted the selected
resources
+view_inventory_resources_loadFailed = Failed to load resource composite data
+view_inventory_resources_title = Resources
+view_inventory_resources_title_children = Child Resources
+view_inventory_resources_title_members = Member Resources
+view_inventory_resources_uninventoryConfirm = Are you sure you want to uninventory the
selected resources? Note that if a selected resource still exists, then it will get
rediscovered during its agent''s next discovery scan.
+view_inventory_resources_uninventoryFailed = Failed to uninventory the selected
resources
+view_inventory_resources_uninventorySuccessful = You have successfully uninventoried the
selected resources
+view_inventory_sectionHelp = From this section, newly discovered Resources, inventoried
Resources, and Groups can be viewed and managed.
+view_inventory_servers = Servers
+view_inventory_services = Services
+view_inventory_summary_agent_error1 = Failed to locate agent managing resource id
+view_inventory_summary_agent_error2 = Failed to ping agent managing resource id
+view_inventory_summary_agent_error3 = You do not have permission to view details for this
Agent.
+view_inventory_summary_agent_fullEnpoint = Full Endpoint
+view_inventory_summary_agent_fullEnpoint_err1 = !No remote endpoint associated with this
resource!
+view_inventory_summary_agent_last_title = Last Received Availability Report
+view_inventory_summary_agent_status_title = Agent Communications Status
+view_inventory_summary_agent_title = Agent Managing this Resource
+view_inventory_unavailableServers = Unavailable Servers
+view_leftNav_unknownPage = Unknown page name [{0}] for section [{1}] - URL is invalid.
+view_login_invalidEmail = Invalid e-mail address
+view_login_login = Login
+view_login_logout = Logout
+view_login_noBackend = The backend datasource is unavailable.
+view_login_noLdap = Note: Optional retrieval of ldap details unsuccessful. Manual entry
is required.
+view_login_noUser = The username or password provided does not match our records.
+view_login_prompt = Please Login
+view_login_registerLater = (Cancel - Complete registration later.)
+view_login_registerLdapSuccess = Successfully registered the new LDAP User.
+view_login_registerUser = Register User
+view_login_welcome = Welcome
+view_login_welcomeMsg = Welcome to RHQ! <br/><br/> Enter/update the following
fields to complete your registration process.<br/> Once you click "OK",
you will be logged in.<br/><br/>
+view_measureRange_last = Time Range - Previous
+view_measureRange_simple = Simple...
+view_measureRange_start = Time Range - Start
+view_measureTable_chartMetricValues = Chart Selected Metrics
+view_measureTable_getLive = Get Live Value
+view_measureTable_getLive_failure = Cannot get live values for those metrics. Make sure
the agent is running and the managed resource is up.
+view_measureTable_live_title = Live Data
+view_measure_nan = --no data available--
+view_measurementOob_title = Suspect Metrics
+view_menuBar_logout = Logout
+view_messageCenter_clearAllMessages = Clear All Messages
+view_messageCenter_lastNMessages = Last {0} Messages
+view_messageCenter_maxMessages = Max Messages
+view_messageCenter_messageBarShowDetails = Show Details
+view_messageCenter_messageDetail = Detail
+view_messageCenter_messageSeverity = Severity
+view_messageCenter_messageTime = Time
+view_messageCenter_messageTitle = Message Center
+view_messageCenter_noRecentMessages = No Recent Messages
+view_messageCenter_stackTraceFollows = --- STACK TRACE FOLLOWS ---
+view_metric_traits = Traits
+view_metric_viewTraitHistory = Value History for Trait [{0}]
+view_operationHistoryDetails_dateCompleted = Date Completed
+view_operationHistoryDetails_dateSubmitted = Date Submitted
+view_operationHistoryDetails_error_fetchFailure = Failure loading operation history.
+view_operationHistoryDetails_noResults = This operation does not return any results.
+view_operationHistoryDetails_operation = Operation
+view_operationHistoryDetails_parameters = Parameters
+view_operationHistoryDetails_requestor = Requestor
+view_operationHistoryDetails_results = Results
+view_operationHistoryDetails_status = Status
+view_operationHistoryList_button_forceDelete = Force Delete
+view_operationHistoryList_button_runOperation = Run Operation
+view_operationHistoryList_notYetStarted = not yet started
+view_operationHistoryList_title = Operation History
+view_operationScheduleDetails_enterParametersBelow = Enter parameters below...
+view_operationScheduleDetails_fieldDefault_description = Select an operation to see its
description.
+view_operationScheduleDetails_fieldDefault_parameters = Select an operation to see its
parameters.
+view_operationScheduleDetails_fieldHelp_description = an optional description of this
scheduled operation (e.g. nightly maintenance app server restart)
+view_operationScheduleDetails_fieldHelp_timeout = a time duration - if specified, if the
duration elapses before a scheduled operation execution has completed, the RHQ Server will
timeout the operation and consider it to have failed; note, it is usually not possible to
abort the underlying managed resource operation if it was already initiated
+view_operationScheduleDetails_field_description = Description
+view_operationScheduleDetails_field_parameters = Parameters
+view_operationScheduleDetails_field_timeout = Timeout
+view_operationScheduleDetails_noParameters = This operation does not take any
parameters.
+view_operationScheduleDetails_operationSchedule = Operation Schedule
+view_portlet_autodiscovery_setting_platforms = discovered platforms
+view_portlet_configure_definitionDesc = The configuration settings for the portlet.
+view_portlet_configure_definitionTitle = Portlet Configuration
+view_portlet_configure_needed = Click the Settings button to configure this portlet.
+view_portlet_configure_notNeeded = Configuration is not necessary for this portlet.
+view_portlet_defaultName_autodiscovery = Discovery Queue
+view_portlet_defaultName_favoriteResources = Favorite Resources
+view_portlet_defaultName_groupMetric = Resource Group Metric Graph
+view_portlet_defaultName_group_alerts = Group: Alerts
+view_portlet_defaultName_group_bundles = Group: Bundle Deployments
+view_portlet_defaultName_group_config_updates = Group: Configuration Updates
+view_portlet_defaultName_group_events = Group: Event Counts
+view_portlet_defaultName_group_metrics = Group: Metrics
+view_portlet_defaultName_group_oobs = Group: OOB Conditions
+view_portlet_defaultName_group_operations = Group: Operations
+view_portlet_defaultName_group_pkg_hisory = Group: Package History
+view_portlet_defaultName_inventorySummary = Inventory Summary
+view_portlet_defaultName_mashup = Mashup
+view_portlet_defaultName_message = Message
+view_portlet_defaultName_operations = Recent Operations
+view_portlet_defaultName_platformSummary = Platform Utilization
+view_portlet_defaultName_problemResources = Alerted or Unavailable Resources
+view_portlet_defaultName_recentAlerts = Recent Alerts
+view_portlet_defaultName_recentlyAddedResources = Recently Added Resources
+view_portlet_defaultName_resourceMetric = Resource Metric Graph
+view_portlet_defaultName_resource_alerts = Resource: Alerts
+view_portlet_defaultName_resource_bundles = Resource: Bundle Deployments
+view_portlet_defaultName_resource_config_updates = Resource: Configuration Updates
+view_portlet_defaultName_resource_events = Resource: Event Counts
+view_portlet_defaultName_resource_metrics = Resource: Measurements
+view_portlet_defaultName_resource_oobs = Resource: OOB Metrics
+view_portlet_defaultName_resource_operations = Resource: Operations
+view_portlet_defaultName_resource_pkg_hisory = Resource: Package History
+view_portlet_defaultName_tagCloud = Tag Cloud
+view_portlet_factory_invalidPortlet = This is an obsolete portlet that is no longer
valid. Please delete it.
+view_portlet_graph_configure_metricDefinition_graph = The metric definition id to graph
+view_portlet_graph_configure_resource_graph = The resource to graph
+view_portlet_help_autodiscovery = This portlet allows import or ignore of newly
discovered resources. Imported resources are added to inventory for monitoring and
management. Ignored resources are not imported and are hidden from view unless explicitly
unignored.
+view_portlet_help_bundle_deps = This portlet shows relevant bundle deployments based on
display criteria configured.
+view_portlet_help_config_updates = This portlet displays recent configuration changes
consistent with configuration settings.
+view_portlet_help_eventcounts = This portlet displays Event counts consistent with
display criteria configured.
+view_portlet_help_favoriteResources = This portlet displays the current user''s
favorite resources.
+view_portlet_help_graph = This portlet displays the resource metric graph.
+view_portlet_help_inventorySummary = This portlet displays a short summary of the current
user''s viewable inventory and metric collection rate.
+view_portlet_help_mashup = This portlet displays the returned content of a remote HTTP
request (via an iframe).
+view_portlet_help_message = This portlet displays a static HTML message. The
<i>message</i> property must be configured.
+view_portlet_help_metrics = This portlet graphs relevant recent metric data based on
display criteria configured.
+view_portlet_help_none = There is no help available for this portlet.
+view_portlet_help_oobs = This portlet displays OOB(Out of Bound) metric conditions.
+view_portlet_help_operations = This portlet displays the most recently executed
operations for the current user''s inventory.
+view_portlet_help_operations_criteria = This portlet displays Operations consistent with
display criteria configured.
+view_portlet_help_pkg_history = This portlet shows relevant package history based on
display criteria configured.
+view_portlet_help_platformSummary = This portlet displays utilization data (such as
current CPU and memory usage) for platform resources that are accessible by the current
user.
+view_portlet_help_problemResources = This portlet displays the current user''s
alerted or unavailable resources.
+view_portlet_help_recentAlerts = This portlet displays alerts recently fired on the
current user''s viewable inventory.
+view_portlet_help_recentlyAdded = This portlet displays resources that have recently been
imported into inventory.
+view_portlet_help_scheduledOperations = This portlet displays the next scheduled
operations for the current user''s inventory.
+view_portlet_help_tagCloud = This portlet displays the relative tag counts for the
current user''s inventory.
+view_portlet_inventory_error1 = Failed to retrieve inventory summary
+view_portlet_inventory_tooltip_collapse = Click to hide details for this resource.
+view_portlet_inventory_tooltip_expand = Click to show more details for this resource.
+view_portlet_message_title = The message to display.
+view_portlet_operations_config_completed = completed operations
+view_portlet_operations_config_completed_enable = Whether to enable completed operations
results grouping for dashboard.
+view_portlet_operations_config_completed_maximum = Maximum number of Completed operations
to display.
+view_portlet_operations_config_scheduled_enable = Whether to enable scheduled operations
results grouping for dashboard.
+view_portlet_operations_config_scheduled_maximum = Maximum number of Scheduled operations
to display.
+view_portlet_operations_config_show_last = show Last
+view_portlet_operations_config_show_next = show Next
+view_portlet_operations_disabled = (Results currently disabled. Change settings to enable
results.
+view_portlet_platform_platform_error_1 = Failed to load platform metrics
+view_portlet_platform_type_error_1 = Could not load type data
+view_portlet_problemResources_config_display_maximum = Maximum number of Problem
resources to display.
+view_portlet_problemResources_config_display_range = Show problem resources going back
this many hours.
+view_portlet_problemResources_config_display_range2 = From {0} to {1}
+view_portlet_problemResources_maxDisplaySetting = maximum resources.
+view_portlet_recentAlerts_config_members = Select Members
+view_portlet_recentAlerts_config_priority_label = priority Alerts,
+view_portlet_recentAlerts_config_when = within the past
+view_portlet_recentAlerts_fail_msg = Failed to load resources assigned for alert
filtering.
+view_portlet_recentlyAdded_error1 = Failed to load recently added resources
+view_portlet_recentlyAdded_setting_addedPlatforms = recently added platforms
+view_portlet_results_empty = No results found using specified criteria.
+view_remoteAgentInstall_agentStatus = Agent Status
+view_remoteAgentInstall_agentStatusDefault = -Click Update Status Button-
+view_remoteAgentInstall_buttonFindAgent = Find Agent
+view_remoteAgentInstall_connInfo = Connection Information
+view_remoteAgentInstall_error_1 = Error occurred while trying to find agent install path
+view_remoteAgentInstall_error_2 = Could not find an agent installed when looking in
common locations
+view_remoteAgentInstall_error_3 = Could not find an agent installed at or under [{0}]
+view_remoteAgentInstall_error_4 = Failed to install agent
+view_remoteAgentInstall_error_5 = Failed to start agent
+view_remoteAgentInstall_error_6 = Failed to stop agent
+view_remoteAgentInstall_installAgent = Install Agent
+view_remoteAgentInstall_installInfo = Agent Installation Information
+view_remoteAgentInstall_installPath = Agent Install Path
+view_remoteAgentInstall_owner = Owner
+view_remoteAgentInstall_promptHost = The host where the agent is or will be installed
+view_remoteAgentInstall_promptInstallPath = Where the agent is or will be installed. If
you aren''t sure where an agent is installed, enter a parent directory and click
the ''Find Agent'' button to scan that directory and below. If you enter
an empty path, common locations are searched on the host for an agent install.
+view_remoteAgentInstall_promptPassword = The credentials that are used to authenticate
the user on the host via SSH
+view_remoteAgentInstall_promptPort = The port the SSH server is listening to. If not
specified, the default is 22
+view_remoteAgentInstall_promptUser = The name of the user whose credentials are passed to
the host via SSH
+view_remoteAgentInstall_result = Result
+view_remoteAgentInstall_resultCode = ResultCode
+view_remoteAgentInstall_startAgent = Start Agent
+view_remoteAgentInstall_startAgentResults = Agent start results: [{0}]
+view_remoteAgentInstall_step = Step
+view_remoteAgentInstall_stopAgent = Stop Agent
+view_remoteAgentInstall_stopAgentResults = Agent stop results: [{0}]
+view_remoteAgentInstall_success = Agent installation complete
+view_remoteAgentInstall_updateStatus = Update Status
+view_reportsTop_description = This section provides access to global reports.
+view_reportsTop_title = Reports
+view_reports_alertDefinitions = Alert Definitions
+view_reports_alertDefinitions_parentHover = Click to go to the parent alert definition
+view_reports_alertDefinitions_resTypeLoadError = Cannot get the template resource type -
unable to view the alert template.
+view_reports_inventorySummary_failFetch = Failed to get inventory summary
+view_reports_platforms = Platform Utilization
+view_reports_subsystems = Subsystems
+view_resourceResourceGroupList_error_fetchFailure = Failed to fetch Resource''s
groups.
+view_resourceResourceGroupList_error_updateFailure = Failed to update assigned Resource
groups.
+view_resourceResourceGroupList_message_updateSuccess = Group membership updated for
[{0}].
+view_resource_inventory_activity_changed_by = Changed by
+view_resource_inventory_activity_criteria_no_recent_events = No event counts based off
display criteria.
+view_resource_inventory_activity_no_recent_alerts = No recent alerts
+view_resource_inventory_activity_no_recent_bundle_deploy = No recent bundle deployments
+view_resource_inventory_activity_no_recent_config_history = No configuration change
history
+view_resource_inventory_activity_no_recent_events = No events in the last 24 hours
+view_resource_inventory_activity_no_recent_metrics = This resource has no recent metrics
+view_resource_inventory_activity_no_recent_oob = No OOB conditions found
+view_resource_inventory_activity_no_recent_operations = No recent operation history
+view_resource_inventory_activity_no_recent_pkg_history = No recent package history
+view_resource_inventory_childhistory_createdChild = Created Child
+view_resource_inventory_childhistory_deletedChild = Deleted Child
+view_resource_inventory_childhistory_filterTitle = Past N Days
+view_resource_inventory_childhistory_status_invalidArtifact = Invalid Artifact
+view_resource_inventory_childhistory_status_invalidConfig = Invalid Configuration
+view_resource_monitor_availability_loadFailed = Failed to load availability history
+view_resource_monitor_calltime_average = Average
+view_resource_monitor_calltime_count = Count
+view_resource_monitor_calltime_destination = Call Destination
+view_resource_monitor_calltime_editFailed = Call time data can not be edited
+view_resource_monitor_calltime_loadFailed = Could not load call time data
+view_resource_monitor_calltime_lookupFailed = Could not load resource for call time
+view_resource_monitor_calltime_maximum = Maximum
+view_resource_monitor_calltime_minimum = Minimum
+view_resource_monitor_calltime_title = Call Time Data
+view_resource_monitor_calltime_total = Total
+view_resource_monitor_detailed_graph_label = Detailed Graph
+view_resource_monitor_graph_instructions = Point your mouse to a data point on the chart
+view_resource_monitor_graph_live_tooltip = Click for a live graph of current values
+view_resource_monitor_graphs_loadFailed = Failed to load graph data
+view_resource_monitor_graphs_lookupFailed = Failed to find resource for graph
+view_resource_monitor_graphs_noneAvailable = No graphs available
+view_resource_monitor_schedules_title = Resource Metric Collection Schedules
+view_resource_monitor_table_alerts = Alerts
+view_resource_monitor_table_avg = Average
+view_resource_monitor_table_last = Last
+view_resource_monitor_table_max = Maximum
+view_resource_monitor_table_min = Minimum
+view_resource_title_component_errors_tooltip = Shows managed component errors. Click for
details
+view_resource_title_tagUpdateFailed = Failed to update resource tags
+view_searchBar_defaultPattern = name your pattern
+view_searchBar_error_selectSavedSearch = ''Error selecting saved
search''
+view_searchBar_query = Query
+view_searchBar_resourceGroups = Resource Groups
+view_searchBar_resources = Resources
+view_searchBar_welcomeMessage = search for {0}s
+view_searchGUI_loginStatus = Unable to determine login status, check server status
+view_selector_assigned = Assigned {0}
+view_selector_available = Available {0}
+view_subTab_error_disabled = Cannot select disabled subTab [{0}].
+view_summaryDashboard_resetConfirm = Reset to default summary dashboard (lose local
changes)?
+view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of
Resource with id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of
Resource with id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with
id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_error_traitsLoadFailure = Failed to load traits for {0}.
+view_summaryOverviewForm_field_description = Description
+view_summaryOverviewForm_field_location = Location
+view_summaryOverviewForm_field_name = Name
+view_summaryOverviewForm_field_type = Type
+view_summaryOverviewForm_field_version = Version
+view_summaryOverviewForm_header_summary = Summary
+view_summaryOverviewForm_label_plugin = Plugin:
+view_summaryOverviewForm_label_type = Type:
+view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with
id {0} was changed from [{1}] to [{2}].
+view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0}
was changed from [{1}] to [{2}].
+view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was
changed from [{1}] to [{2}].
+view_summaryOverview_header_detectedErrors = Detected Errors
+view_summaryOverview_title_errorDetailsWindow = Error Details
+view_summaryOverview_tooltip_detectedErrors = Click on the rows to see the error
details.
+view_tableSection_backButton = Back to List
+view_tableSection_error_badId = Can not show detail for [{0}]. Illegal 'id':
[{1}]. Please report this bug
+view_tableSection_error_noId = Table [{0}] record is missing 'id' attribute -
please report this bug.
+view_table_drawFail = Failed to draw Table [{0}].
+view_table_matchingRows = Matching Rows: {0} (selected: {1})
+view_table_totalRows = Total Rows: {0} (selected: {1})
+view_tabs_common_activity = Activity
+view_tabs_common_agent = Agent
+view_tabs_common_alerts = Alerts
+view_tabs_common_availability = Availability
+view_tabs_common_calltime = Calltime
+view_tabs_common_child_history = Child History
+view_tabs_common_child_resources = Child Resources
+view_tabs_common_configuration = Configuration
+view_tabs_common_connectionSettings = Connection Settings
+view_tabs_common_connectionSettingsHistory = Connection Settings History
+view_tabs_common_content = Content
+view_tabs_common_current = Current
+view_tabs_common_dashboard = Dashboard
+view_tabs_common_definitions = Definitions
+view_tabs_common_deployed = Deployed
+view_tabs_common_events = Events
+view_tabs_common_graphs = Graphs
+view_tabs_common_group_members = Group Members
+view_tabs_common_group_membership = Group Membership
+view_tabs_common_groups = Groups
+view_tabs_common_history = History
+view_tabs_common_inventory = Inventory
+view_tabs_common_members = Members
+view_tabs_common_monitoring = Monitoring
+view_tabs_common_new = New
+view_tabs_common_operations = Operations
+view_tabs_common_overview = Overview
+view_tabs_common_schedule = Schedule
+view_tabs_common_schedules = Schedules
+view_tabs_common_subscriptions = Subscriptions
+view_tabs_common_summary = Summary
+view_tabs_common_tables = Tables
+view_tabs_common_timeline = Timeline
+view_tabs_common_traits = Traits
+view_tabs_invalidSubTab = Invalid subtab: {0}
+view_tabs_invalidTab = Invalid tab: {0}
+view_tagCloud_deleteTag = Delete Tag
+view_tagCloud_deleteTagFailure = Failed to delete the tag [{0}]
+view_tagCloud_deleteTagSuccess = You successfully deleted the tag [{0}]
+view_tagCloud_error_fetchFailure = Failed to load tags.
+view_tagCloud_error_tagUsedCount = Tag used {0} times.
+view_tagCloud_title = Tag Cloud
+view_taggedResources_title = Resources
+view_tags_error_1 = Failed to load Tags
+view_tags_tags = Tags
+view_tags_tooltip_1 = Click to remove this Tag
+view_tags_tooltip_2 = Click to edit Tags
+view_tags_tooltip_3 = Enter a Tag in the format: (namespace:)(semantic=)tagname (e.g.
it:env=QA, or owner=John)
+view_testTop_description = This section contains pages for testing various GUI
components.
+view_testTop_title = Test
+view_titleBar_common_addedFav = You have added [{0}] as a favorite
+view_titleBar_common_addedFavFailure = Failed to add [{0}] as a favorite
+view_titleBar_common_clickToAddFav = Click to add this as a favorite
+view_titleBar_common_clickToRemoveFav = Click to remove this as a favorite
+view_titleBar_common_loadTagsFailure = Failed to load the tags for [{0}]
+view_titleBar_common_removedFav = You have removed [{0}] as one of your favorites
+view_titleBar_common_removedFavFailure = Failed to remove [{0}] as one of your favorites
+view_titleBar_common_updateTagsFailure = Failed to update the tags for [{0}]
+view_titleBar_common_updateTagsSuccessful = The tags for [{0}] have been updated
+view_titleBar_group_failInfo = Failed to get general info on group [{0}] with ID [{1}]
+view_titleBar_group_summary_collapsedTooltip = Click to show more details for this group
+view_titleBar_group_summary_expandedTooltip = Click to hide details for this group
+view_tree_common_contextMenu_addChartToDashboard = Add chart to dashboard [{0}]
+view_tree_common_contextMenu_editPluginConfiguration = Edit [{0}] Plugin Configuration
+view_tree_common_contextMenu_editResourceConfiguration = Edit [{0}] Resource
Configuration
+view_tree_common_contextMenu_groupGraph = Group Metric Graph
+view_tree_common_contextMenu_loadFail_children = Failed to load platform manual add
children
+view_tree_common_contextMenu_loadFail_dashboards = Failed to load user dashboards
+view_tree_common_contextMenu_loadFail_group = Failed to load group for context menu
+view_tree_common_contextMenu_loadFailed_dashboard = Failed to load user dashboards
+view_tree_common_contextMenu_loadFailed_manualAddChildren = Failed to load platform
manual add children
+view_tree_common_contextMenu_measurements = Measurements
+view_tree_common_contextMenu_operations = Operations
+view_tree_common_contextMenu_operations_loadFailed = Failure to start wizard for running
operations
+view_tree_common_contextMenu_resourceConfiguration = Resource Configuration
+view_tree_common_contextMenu_resourceGraph = Resource Metric Graph
+view_tree_common_contextMenu_saveChartToDashboardFailure = Failed to save the dashboard
+view_tree_common_contextMenu_saveChartToDashboardSuccessful = You have saved dashboard
[{0}]
+view_tree_common_contextMenu_type_name_label = Type: {0}
+view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group
+view_tree_common_loadFailed_children = Failed to load children for node
+view_tree_common_loadFailed_create = Failed to create view for this node
+view_tree_common_loadFailed_descendants = Failed to load descendants for tree
+view_tree_common_loadFailed_generic = Failed to load data for tree
+view_tree_common_loadFailed_group = Failed to load group with id [{0}]
+view_tree_common_loadFailed_groupTree = Failed to load group tree
+view_tree_common_loadFailed_node = Failed to load data for this node
+view_tree_common_loadFailed_root = Failed to load root for tree
+view_tree_common_loadFailed_selection = Failed to select this node
+view_tree_common_loadFailed_update = Failed to update view for this node
+view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing
group. key: [{0}]
+view_type_parentId = Parent ID
+view_type_resourceTypes = Resource Types
+view_type_typeTreeLoadFailure = Failed to load resource type tree data
+view_upload_alreadyUploaded = File has already been uploaded
+view_upload_bundleDistFile = Distribution File
+view_upload_error_bundleDistFile = Error uploading Bundle Distribution File
+view_upload_error_file = Error uploading file
+view_upload_error_fileName = Error uploading file [{0}]
+view_upload_error_fileName_2 = Error uploading file [{0}], check for invalid file path.
+view_upload_error_packageVersionFile = Error uploading Package Version File
+view_upload_error_results = Error uploading file, unexpected results: [{0}]
+view_upload_inProgress = Can not submit, upload is currently in progress
+view_upload_prompt_1 = Please select a file to upload [{0}]
+view_upload_prompt_2 = File to Upload
+view_upload_success = File successfully uploaded
+view_upload_tooltip_1a = Select a file to upload, then click Upload or Next
+view_upload_tooltip_1b = Select a file to upload, then click Next
+view_upload_tooltip_2 = File upload had previously failed
+view_upload_upload = Upload
+view_upload_uploadFile = UploadFile
+widget_colorPicker_tooltip = Click to select a new color
+widget_durationItem_inputUnitLessThanTargetUnit = Input unit is less than target unit.
+widget_durationItem_unitTypeNotSupported = Unit type [{0}] is not supported by this
DurationItem.
+widget_jobTriggerEditor_fieldHelp_repeatDuration = keep running this operation this many
times or until this amount of time has elapsed
+widget_jobTriggerEditor_fieldHelp_repeatInterval = how often the operation should be
executed
+widget_jobTriggerEditor_fieldHelp_startDelay = start executing the operation after this
amount of time has elapsed
+widget_jobTriggerEditor_field_cronExpression = Cron Expression
+widget_jobTriggerEditor_field_mode = Schedule using
+widget_jobTriggerEditor_field_repeatInterval_later = Repeat every
+widget_jobTriggerEditor_field_repeatInterval_now = Run now and every
+widget_jobTriggerEditor_field_startType = Run
+widget_jobTriggerEditor_message_endTimeMustBeAfterStartTime = End time must be after
start time.
+widget_jobTriggerEditor_message_endTimeMustBeInFuture = End time must be in the future.
+widget_jobTriggerEditor_message_startTimeMustBeInFuture = Start time must be in the
future.
+widget_jobTriggerEditor_tab_examples = Examples
+widget_jobTriggerEditor_tab_format = Format
+widget_jobTriggerEditor_value_calendar = Calendar
+widget_jobTriggerEditor_value_cronExpression = Cron Expression
+widget_jobTriggerEditor_value_for = For
+widget_jobTriggerEditor_value_in = in
+widget_jobTriggerEditor_value_indefinitely = Indefinitely
+widget_jobTriggerEditor_value_later = Later
+widget_jobTriggerEditor_value_laterAndRepeat = Later & Repeat
+widget_jobTriggerEditor_value_now = Now
+widget_jobTriggerEditor_value_nowAndRepeat = Now & Repeat
+widget_jobTriggerEditor_value_on = on
+widget_jobTriggerEditor_value_until = Until
+widget_recordEditor_error_invalidViewPath = Invalid view path: [{0}]
+widget_recordEditor_error_multipleRecords = Multiple records were returned - expected
exactly one.
+widget_recordEditor_error_noRecords = No records were returned - expected exactly one.
+widget_recordEditor_error_operation = Operation failed. An error occurred
+widget_recordEditor_error_operationInvalidValues = Operation failed - one or more fields
have invalid values
+widget_recordEditor_error_permissionCreate = You do not have the permissions required to
create a new [{0}]
+widget_recordEditor_error_unsupportedOperationType = Unsupported operation type: [{0}]
+widget_recordEditor_info_recordCreatedConcise = {0} created.
+widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
+widget_recordEditor_info_recordUpdatedConcise = {0} updated.
+widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
+widget_recordEditor_info_recordsDeletedConcise = {0} {1} deleted.
+widget_recordEditor_info_recordsDeletedDetailed = {0} {1} deleted: {2}.
+widget_recordEditor_label_loading = Loading...
+widget_recordEditor_title_edit = Edit {0} [{1}]
+widget_recordEditor_title_new = Create New {0}
+widget_recordEditor_title_view = View {0} [{1}]
+widget_recordEditor_warn_validation = One or more fields have invalid values. This [{0}]
cannot be saved until these values are corrected
+widget_resourceFactoryWizard_archPrompt = Package Architecture
+widget_resourceFactoryWizard_configTemplatePrompt = Resource Configuration Templates
+widget_resourceFactoryWizard_contentTemplatePrompt = Deployment Time Configuration
Templates
+widget_resourceFactoryWizard_createSubmit = A request to create a resource with the name
of [{0}] has been submitted successfully.
+widget_resourceFactoryWizard_createSubmitType = A request to create a resource of type
[{0}] has been submitted successfully.
+widget_resourceFactoryWizard_createWizardTitle = Create New Resource of Type [{0}]
+widget_resourceFactoryWizard_createWizardWindowTitle = Resource Create Wizard
+widget_resourceFactoryWizard_editConfigStepName = Deployment Options
+widget_resourceFactoryWizard_execute1 = Failed to create a new resource - there is no
package version
+widget_resourceFactoryWizard_execute2 = Failed to create a new resource
+widget_resourceFactoryWizard_failedToDeleteVersion = Failed to delete package version
while canceling a resource create
+widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for new
resource
+widget_resourceFactoryWizard_importFailure = Failed to manually import resource
+widget_resourceFactoryWizard_importSubmitted = A request to import a new resource of type
[{0}] has been submitted
+widget_resourceFactoryWizard_importWizardTitle = Import Resource of Type [{0}]
+widget_resourceFactoryWizard_importWizardWindowTitle = Resource Import Wizard
+widget_resourceFactoryWizard_infoStepName = Resource Information
+widget_resourceFactoryWizard_infoStep_loadFail = Failed to get available Architectures
+widget_resourceFactoryWizard_namePrompt = New Resource Name
+widget_resourceFactoryWizard_templatePrompt = Connection Settings Template
+widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will override
the default timeout for child resource creation (on the RHQ Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
+widget_resourceFactoryWizard_uploadFailure = Failed to upload file
+widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
+widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can
take several minutes to complete for large distribution files.
+widget_resourceFactoryWizard_versionPrompt = Package Version
+widget_resourceSelector_groupCategory = Group Category
+widget_resourceSelector_pleaseSelectMultipleResource = Please select one or more
resources
+widget_resourceSelector_pleaseSelectResource = Please select a resource
+widget_resourceSelector_selectMultipleResources = Select Resources
+widget_resourceSelector_selectResource = Select a Resource
+widget_typeCache_loadFail = Failed to load resource type metadata
+widget_typeTree_badTemplateType = Invalid URL. Unknown template type [{0}]
+widget_typeTree_badTypeId = Invalid URL. Bad resource type ID [{0}]
+widget_typeTree_loadFail = Failed to load resource types
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 6fe9b0b..1c105be 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
@@ -1,8 +1,8 @@
#
# RHQ GUI i18n Messages - Locale: DE
-#
+#
# This file should be UTF-8 encoded.
-#
+#
# Developers: See the following wiki page for how to work with this file:
#
#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
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 aeb5f6a..0e55501 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
@@ -1,1796 +1,1795 @@
-#
-# RHQ GUI i18n Messages - Locale: JA
-#
-# This file should be UTF-8 encoded.
-#
-# Developers: See the following wiki page for how to work with this file:
-#
-#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
-#
-###################################
-common_alert_high = High
-common_alert_low = Low
-common_alert_medium = Medium
-common_buildInfo_gwtVersion = ${gwt.version}
-common_button_ack = 確認
-common_button_ack_all = すべてを確認
-common_button_add = 追加
-common_button_advanced = Advanced...
-common_button_apply = 適用
-common_button_cancel = キャンセル
-common_button_close = 閉じる
-common_button_compare = 比較
-common_button_create_child = 子を作成
-common_button_delete = 削除
-common_button_delete_all = すべてを削除
-common_button_disable = 無効
-common_button_edit = 編集
-common_button_enable = 有効
-common_button_finish = 完了
-common_button_import = インポート
-common_button_new = 新規
-common_button_next = 次へ
-common_button_ok = OK
-common_button_previous = 前へ
-common_button_purgeAll = すべてをパージ
-common_button_refresh = リフレッシュ
-common_button_reset = リセット
-common_button_save = 保存
-common_button_schedule = スケジュール
-common_button_search = 検索
-common_button_set = 設定
-common_button_showDetails = 詳細表示...
-common_button_uninventory = アンインベントリ
-common_calendar_april_short = apr
-common_calendar_august_short = aug
-common_calendar_december_short = dec
-common_calendar_february_short = feb
-common_calendar_january_short = jan
-common_calendar_july_short = jul
-common_calendar_june_short = jun
-common_calendar_march_short = mar
-common_calendar_may_short = may
-common_calendar_november_short = nov
-common_calendar_october_short = oct
-common_calendar_september_short = sept
-common_label_ago = ago
-common_label_all = すべての
-common_label_all_resources = all resources
-common_label_day = day
-common_label_days = days
-common_label_hour = hour
-common_label_hours = hours
-common_label_item = item
-common_label_items = items
-common_label_milliseconds = milliseconds
-common_label_minutes = minutes
-common_label_month = month
-common_label_none = none
-common_label_role = role
-common_label_roles = roles
-common_label_scheduled_operations = scheduled operations
-common_label_seconds = seconds
-common_label_selected_resources = selected resources
-common_label_unlimited = unlimited
-common_label_user = user
-common_label_users = users
-common_label_week = week
-common_label_weeks = weeks
-common_label_yesterday = Yesterday
-common_msg_areYouSure = Are You Sure?
-common_msg_changeAutoDetected = Change auto-detected
-common_msg_deleteConfirm = Are you sure you want to delete the # selected {0}?
-common_msg_emphasizedNotePrefix = NOTE:
-common_msg_loading = Loading...
-common_msg_noItemsToShow = No items to show
-common_msg_notYetImplemented = Not Yet Implemented
-common_msg_see_more = see more...
-common_msg_step_x_of_y = Step {0} of {1}
-common_severity_debug = Debug
-common_severity_error = Error
-common_severity_fatal = Fatal
-common_severity_info = Info
-common_severity_warn = Warn
-common_status_canceled = Canceled
-common_status_deferred = Deferred
-common_status_failed = Failed
-common_status_inprogress = In Progress
-common_status_nochange = No Change
-common_status_partial = Partial
-common_status_success = Success
-common_status_timedOut = Timed Out
-common_status_unknown = Unknown
-common_title_add_column = カラム追加
-common_title_add_portlet = ポートレット追加
-common_title_address = アドレス
-common_title_alert_range = アラートの範囲
-common_title_ancestry = 祖先
-common_title_availability = アベイラビリティ
-common_title_available_resources = 利用可能リソース
-common_title_average_metrics = 毎分の平均メトリックス
-common_title_background = バックグラウンド
-common_title_bundle = バンドル
-common_title_bundles = バンドル
-common_title_category = カテゴリ
-common_title_change_refresh_time = インターバルのリフレッシュ
-common_title_columns = カラム
-common_title_compare_metrics = メトリックスの比較
-common_title_compatibleGroups = 互換グループ
-common_title_compatibleGroups_total = 互換グループの合計
-common_title_component_errors = コンポーネントエラー
-common_title_config_update_status = 更新状態
-common_title_configuration = 構成
-common_title_count = 数
-common_title_custom = カスタム
-common_title_dashboard_name = ダッシュボード名
-common_title_dateCreated = 生成日
-common_title_dateRange = 日付の範囲
-common_title_default = デフォルト
-common_title_description = 説明
-common_title_details = 詳細
-common_title_display = 表示
-common_title_display_name = 表示名
-common_title_duration = 期間
-common_title_edit_mode = 編集モード
-common_title_enabled = 有効?
-common_title_end = 終了
-common_title_error = エラー
-common_title_generalProp = 一般プロパティ
-common_title_group = グループ
-common_title_group_def_total = グループ定義の合計
-common_title_group_member_health = グループメンバーの状態
-common_title_groups = グループ
-common_title_help = ヘルプ
-common_title_host = ホスト
-common_title_icon =
-common_title_id = ID
-common_title_id_parent = 親のID
-common_title_info = 情報
-common_title_inventory = インベントリ
-common_title_inventorySummary = インベントリサマリ
-common_title_lastUpdated = 最終更新
-common_title_lastUpdatedBy = 最終更新(による)
-common_title_ldapGroups = LDAPグループ
-common_title_mashup = マッシュアップ
-common_title_members_reporting = メンバーのリポート
-common_title_message = メッセージ
-common_title_metric = メトリック
-common_title_metric_chart = メトリック図
-common_title_mixedGroups = 混合グループ
-common_title_mixedGroups_total = 混合グループの合計
-common_title_name = 名前
-common_title_new_dashboard = 新規ダッシュボード
-common_title_numeric_metrics = 数値メトリックス
-common_title_numeric_type = 数値型
-common_title_operation_status = オペレーションの状態
-common_title_operations = オペレーション
-common_title_operations_range = オペレーションの範囲
-common_title_over = Over
-common_title_password = パスワード
-common_title_path = パス
-common_title_permissions = パーミッション
-common_title_platform = プラットフォーム
-common_title_platform_total = プラットフォームの合計
-common_title_plugin = プラグイン
-common_title_port = ポート
-common_title_providers = プロバイダ
-common_title_recent_alerts = 最近のアラート
-common_title_recent_bundle_deployments = 最近のバンドルのデプロイ
-common_title_recent_configuration_updates = 最近の構成の更新
-common_title_recent_event_counts = 最近のイベント数
-common_title_recent_measurements = 最近の測定
-common_title_recent_oob_metrics = 最近の境界外のメトリックス
-common_title_recent_operations = 最近のオペレーション
-common_title_recent_pkg_history = 最近のパッケージ履歴
-common_title_recently_added = 最近追加された
-common_title_remove_column = カラムの削除
-common_title_repositories = リポジトリ
-common_title_resource = リソース
-common_title_resourceGroups = リソースグループ
-common_title_resource_group = リソースグループ
-common_title_resource_id = リソースID
-common_title_resource_inventory = リソースインベントリ
-common_title_resource_key = リソースキー
-common_title_resource_name = リソース名
-common_title_resource_type = リソースタイプ
-common_title_resources = リソース
-common_title_results_count = 結果の数
-common_title_results_count_tooltip = 結果の数の表示
-common_title_role = ロール
-common_title_roles = ロール
-common_title_scheduled_operations = スケジュールされたオペレーション
-common_title_search = 検索
-common_title_selected_resources = 選択されたリソース
-common_title_server = サーバー
-common_title_server_total = サーバーの合計
-common_title_service = サービス
-common_title_service_total = サービスの合計
-common_title_settings = 設定
-common_title_show = 表示
-common_title_show_more = 詳細表示...
-common_title_sort_order = ソート順
-common_title_sort_order_tooltip = 結果のソート順を設定
-common_title_start = 開始
-common_title_status = ステータス
-common_title_stop = 停止
-common_title_summary = サマリ
-common_title_tag_cloud = Tag Cloud
-common_title_the = The
-common_title_timestamp = 日付/時間
-common_title_total = 合計
-common_title_type = タイプ
-common_title_units = 単位
-common_title_user = ユーザー
-common_title_users = ユーザー(複数)
-common_title_value = 値
-common_title_version = バージョン
-common_title_view_mode = ビューモード
-common_title_web_address = Webアドレス
-common_title_welcome = ようこそ
-common_unit_days = days
-common_unit_hours = hours
-common_unit_milliseconds = milliseconds
-common_unit_minutes = minutes
-common_unit_months = months
-common_unit_seconds = seconds
-common_unit_times = times
-common_unit_weeks = weeks
-common_unit_years = years
-common_val_for = for
-common_val_n1st = {0}st
-common_val_n2nd = {0}nd
-common_val_n3rd = {0}rd
-common_val_na = N/A
-common_val_never = Never
-common_val_no = No
-common_val_no_lower = no
-common_val_none = None
-common_val_nth = {0}th
-common_val_yes = Yes
-common_val_yes_lower = yes
-dataSource_ContentRepoTree_error_load = Error loading repositories
-dataSource_ContentRepoTree_field_parentId = Parent ID
-dataSource_bundle_loadFailed = Failed to load Bundle data
-dataSource_configurationHistory_clickToSeeError = Double click to see error message...
-dataSource_configurationHistory_currentConfig = This is the current configuration
-dataSource_configurationHistory_dateCompleted = 完了日
-dataSource_configurationHistory_dateSubmitted = 発行日
-dataSource_configurationHistory_error_fetchFailure = Unable to load configuration
history.
-dataSource_configurationHistory_updateType = 更新タイプ
-dataSource_configurationHistory_updateType_group = グループ
-dataSource_configurationHistory_updateType_individual = 個人
-dataSource_definitions_loadFailed = Failed to load metric definitions
-dataSource_measurementOob_error_fetchFailure = Failed to load measurement OOB
information
-dataSource_measurementOob_field_factor = 範囲外係数 (%)
-dataSource_measurementOob_field_formattedBaseband = バンド
-dataSource_measurementOob_field_formattedOutlier = アウトライナ
-dataSource_measurementOob_field_parentName = 親
-dataSource_measurementOob_field_resourceName = リソース
-dataSource_measurementOob_field_scheduleName = メトリック
-dataSource_operationHistory_error_fetchFailure = Failure loading operation histories.
-dataSource_operationHistory_field_createdTime = 生成時刻
-dataSource_operationHistory_field_operationName = オペレーション名
-dataSource_operationHistory_field_startedTime = 開始時刻
-dataSource_operationHistory_field_subject = 要求者
-dataSource_operationSchedule_field_description = ノート
-dataSource_operationSchedule_field_id = スケジュールID
-dataSource_operationSchedule_field_nextFireTime = 次回の実行
-dataSource_operationSchedule_field_operationDisplayName = オペレーション
-dataSource_operationSchedule_field_operationName = オペレーション
-dataSource_operationSchedule_field_subject = オーナー
-dataSource_operationSchedule_field_timeout = タイムアウト (秒)
-dataSource_platforms_field_cpu = CPU
-dataSource_platforms_field_memory = メモリ
-dataSource_platforms_field_swap = スワップ
-dataSource_problemResources_error_fetchFailure = Failed to load Resources with
alerts/unavailability.
-dataSource_problemResources_field_alerts = アラート
-dataSource_problemResources_field_available = 現在のアベイラビリティ
-dataSource_recentOperations_error_fetchFailure = Failed to load recently completed
operations.
-dataSource_recentOperations_field_location = ロケーション
-dataSource_recentOperations_field_operation = オペレーション
-dataSource_recentOperations_field_resource = リソース
-dataSource_recentOperations_field_status = ステータス
-dataSource_recentOperations_field_time = 日付/時刻
-dataSource_resourceErrors_clickStatusIcon = Click the icon for more details
-dataSource_resourceErrors_deleteFailure = Failed to delete resource errors
-dataSource_resourceErrors_deleteSuccess = You have successfully deleted [{0}] resource
error messages.
-dataSource_resourceErrors_error_fetchFailure = Failed to find Resource errors for
Resource with id [{0}].
-dataSource_resourceErrors_field_errorType = エラータイプ
-dataSource_resourceErrors_field_summary = サマリ
-dataSource_resourceErrors_field_timeOccured = 時刻
-dataSource_resourceGroups_loadFailed = Failed to load Resource Groups
-dataSource_resources_field_discoveryTime = 発見時刻
-dataSource_resources_field_importTime = インポート時刻
-dataSource_resources_field_key = キー
-dataSource_resources_field_lastModifiedTime = 最終更新時刻
-dataSource_resources_field_lastModifier = 最終更新者
-dataSource_resources_field_location = 場所
-dataSource_rpc_error_transformRequestFailure = Failure in datasource while processing {0}
request.
-dataSource_rpc_error_unsupportedArrayFilterType = No support for passing array filters of
type {0}.
-dataSource_rpc_error_unsupportedEnumType = Please add an appropriate code block for enum
{0} to RPCDataSource.getEnumArray(Class)
-dataSource_rpc_no = no
-dataSource_rpc_yes = yes
-dataSource_scheduledOperations_error_fetchFailure = Failed to load scheduled operations.
-dataSource_scheduledOperations_field_location = 場所
-dataSource_scheduledOperations_field_operation = オペレーション
-dataSource_scheduledOperations_field_resource = リソース
-dataSource_scheduledOperations_field_time = 日付/時刻
-dataSource_schedules_disableFailure_group = Failed to disable the collection of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_disableFailure_resource = Failed to disable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_disableSuccessful_concise = You have disabled the collection of
[{0}] measurements
-dataSource_schedules_disableSuccessful_full_group = You have disabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The disabled measurements are:
[{2}]
-dataSource_schedules_disableSuccessful_full_resource = You have disabled the collection
of [{0}] measurements for the resource with ID [{1}]. The disabled measurements are:
[{2}]
-dataSource_schedules_enableFailure_group = Failed to enable the collection of [{0}]
metrics for group with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_enableFailure_resource = Failed to enable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_enableSuccessful_concise = You have enabled the collection of [{0}]
measurements
-dataSource_schedules_enableSuccessful_full_group = You have enabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The enabled measurements are:
[{2}]
-dataSource_schedules_enableSuccessful_full_resource = You have enabled the collection of
[{0}] measurements for the resource with ID [{1}]. The enabled measurements are: [{2}]
-dataSource_schedules_field_resourceGroupId = Group ID
-dataSource_schedules_loadFailed = Failed to load metric schedules
-dataSource_schedules_loadFailedContext = Failed to load metric schedules for context
[{0}]
-dataSource_schedules_loadFailedCriteria = Failed to load metric schedules for criteria
[{0}]
-dataSource_schedules_updateFailure_group = Failed to set the collection interval of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
-dataSource_schedules_updateFailure_resource = Failed to set the collection interval of
[{0}] metrics for resource with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
-dataSource_schedules_updateSuccessful_concise = A new collection interval of [{0}]
seconds has been set on [{1}] measurements
-dataSource_schedules_updateSuccessful_full_group = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource group with ID [{2}]. The updated
measurements are: [{3}]
-dataSource_schedules_updateSuccessful_full_resource = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource with ID [{2}]. The updated
measurements are: [{3}]
-dataSource_traits_failFetch = Failed to fetch traits for criteria [{0}].
-dataSource_traits_field_definitionID = Definition ID
-dataSource_traits_field_lastChanged = Last Changed
-dataSource_traits_field_primaryKey = Primary Key
-dataSource_traits_field_trait = Trait
-dataSource_traits_group_field_groupId = Group ID
-dataSource_users_delete = 削除済みユーザー [{0}]
-dataSource_users_deleteFailed = ユーザー [{0}] の削除に失敗しました
-dataSource_users_field_department = 部門
-dataSource_users_field_emailAddress = Eメールアドレス
-dataSource_users_field_factive = ログインは有効?
-dataSource_users_field_firstName = 名前
-dataSource_users_field_id = ID
-dataSource_users_field_lastName = 名字
-dataSource_users_field_ldap = LDAPログイン?
-dataSource_users_field_name = ユーザー名
-dataSource_users_field_password = パスワード
-dataSource_users_field_passwordVerify = パスワードの確認
-dataSource_users_field_phoneNumber = 電話番号
-dataSource_users_invalidEmailAddress = 無効なEメールアドレス
-dataSource_users_passwordsDoNotMatch = パスワードが一致していません
-datasource_roles_field_ldapGroups = LDAPグループ
-datasource_roles_field_permissions = パーミッション
-datasource_roles_field_resourceGroups = リソースグループ
-datasource_roles_field_subjects = サブジェクト
-datasource_templateSchedules_disabled = Disabled collection of selected metric [{0}].
-datasource_templateSchedules_disabled_detailed = Disabled collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
-datasource_templateSchedules_disabled_failed = Failed to disable collection of metric
[{0}] [{1}] by default for ResourceType with id [{2}].
-datasource_templateSchedules_enabled = Enabled collection of selected metric [{0}].
-datasource_templateSchedules_enabled_detailed = Enabled collection of metric [{0}] [{1}]
by default for ResourceType with id [{2}].
-datasource_templateSchedules_enabled_failed = Failed to enable collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
-datasource_templateSchedules_updated = Updated collection intervals of selected metric
[{0}].
-datasource_templateSchedules_updated_detail = Collection interval for metric [{0}] [{1}]
by default for ResourceType with id [{2}] set to [{3}] seconds.
-datasource_templateSchedules_updated_failed = Failed to set collection interval to [{0}]
seconds for metric [{1}] [{2}] by default for ResourceType with id [{3}].
-favorites = お気に入り
-favorites_groups = お気に入りグループ
-favorites_recentlyViewed = 最近閲覧した
-favorites_resources = お気に入りリソース
-group_tree_partialClusterTooltip = {0} out of {1} group members have a
''{2}'' resource
-util_ancestry_parentAncestry = Parent Ancestry for:
-util_disambiguationReportDecorator_pluginSuffix = ({0} plugin)
-util_errorHandler_nullException = exception was null
-util_monitoringRequestCallback_error_checkServerStatusFailure = Unable to determine login
status - check Server status.
-util_rpcManager_activeRequests = {0} Active Requests
-util_userPerm_loadFailGlobal = Failed to load your global permissions - none granted.
-util_userPerm_loadFailGroup = Failed to load your permissions for Resource Group with id
[{0}] - none granted.
-util_userPerm_loadFailResource = Failed to load your permissions for Resource with id
[{0}] - none granted.
-util_userSession_loadFailSubject = UserSessionManager: Failed to load user Subject
-util_userSession_logoutFail = Failed to logout.
-util_widgetsField_unlimited = Unlimited
-view_aboutBox_allRightsReserved = All Rights Reserved.
-view_aboutBox_buildNumber = ビルド番号:
-view_aboutBox_failedToLoad = Failed to load product information.
-view_aboutBox_homepage = ホームページ
-view_aboutBox_jbossByRedHat = JBoss by Red Hat
-view_aboutBox_title = {0}について
-view_aboutBox_version = バージョン:
-view_adminConfig_downloads = ダウンロード
-view_adminConfig_plugins = プラグイン
-view_adminConfig_systemSettings = システム設定
-view_adminConfig_templates = テンプレート
-view_adminContent_contentSources = コンテントソース
-view_adminContent_repositories = リポジトリ
-view_adminRoles_assignedGroups = Assigned Resource Groups
-view_adminRoles_assignedSubjects = Assigned Subjects
-view_adminRoles_failLdap = Failed to determine if LDAP configured - assuming no LDAP.
-view_adminRoles_failLdapGroups = Failed to retrieve available LDAP groups - assuming no
LDAP groups.
-view_adminRoles_failLdapGroupsRole = Failed to load LDAP groups available for role.
-view_adminRoles_failRoles = Failed to fetch roles.
-view_adminRoles_globalPerms = Global Permissions
-view_adminRoles_ldapGroups = LDAP Groups
-view_adminRoles_ldapGroupsReadOnly = LDAP group data is read only
-view_adminRoles_noItems = No items to show
-view_adminRoles_noLdap = The LDAP security integration is not configured. To configure
LDAP, go to <a {0}>{1}</a>.
-view_adminRoles_permissions_autoselecting_configureRead_implied = Autodeselected
CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
-view_adminRoles_permissions_autoselecting_configureWrite_implied = Autoselected
CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
-view_adminRoles_permissions_autoselecting_manageInventory_implied = Autoselected
unselected Resource permissions, since MANAGE_INVENTORY implies all Resource
permissions...
-view_adminRoles_permissions_autoselecting_manageSecurity_implied = Autoselected
unselected permissions, since MANAGE_SECURITY implies all other permissions...
-view_adminRoles_permissions_globalPermissions = Global Permissions
-view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection = {0}
read permission cannot be deselected, unless the {0} write permission, which implies the
read permission, is deselected first.
-view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection = {0}
permission cannot be deselected, unless Manage Inventory, which implies all Resource
permissions, is deselected first.
-view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection = {0}
permission cannot be deselected, unless the Manage Security permission, which implies all
other permissions, is deselected first.
-view_adminRoles_permissions_isAuthorized = Authorized?
-view_adminRoles_permissions_isRead = Read?
-view_adminRoles_permissions_isWrite = Write?
-view_adminRoles_permissions_permDesc_manageBundles = can create, update, or delete
provisioning bundles (viewing is implied for everyone)
-view_adminRoles_permissions_permDesc_manageInventory = has all Resource permissions, as
described below, for all Resources; can create, update, and delete groups; and can import
auto-discovered or manually discovered Resources
-view_adminRoles_permissions_permDesc_manageRepositories = can create, update, or delete
repositories of any user (everyone can create their own repositories), can associate
content sources to repositories.
-view_adminRoles_permissions_permDesc_manageSecurity = can create, update, or delete users
and roles (viewing is implied for everyone)
-view_adminRoles_permissions_permDesc_manageSettings = can modify the RHQ Server
configuration and perform any Server-related functionality
-view_adminRoles_permissions_permReadDesc_configure = view Resource configuration and
Resource configuration revision history
-view_adminRoles_permissions_permReadDesc_control = (IMPLIED) view available operations
and operation execution history
-view_adminRoles_permissions_permReadDesc_createChildResources = (IMPLIED) view child
Resource creation history
-view_adminRoles_permissions_permReadDesc_deleteChildResources = (IMPLIED) view child
Resource deletion history
-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_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
-view_adminRoles_permissions_permWriteDesc_control = execute operations; delete operation
execution history items
-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_manageContent = subscribe to content sources;
install and uninstall packages
-view_adminRoles_permissions_permWriteDesc_manageEvents = delete events
-view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection
schedules
-view_adminRoles_permissions_perm_configure = Configure
-view_adminRoles_permissions_perm_control = Control
-view_adminRoles_permissions_perm_createChildResources = Create Child Resources
-view_adminRoles_permissions_perm_deleteChildResources = Delete Child Resources
-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_manageEvents = Manage Events
-view_adminRoles_permissions_perm_manageInventory = Manage Inventory
-view_adminRoles_permissions_perm_manageMeasurements = Manage Measurements
-view_adminRoles_permissions_perm_manageRepositories = Manage Repositories
-view_adminRoles_permissions_perm_manageSecurity = Manage Security
-view_adminRoles_permissions_perm_manageSettings = Manage Settings
-view_adminRoles_permissions_read = Read:
-view_adminRoles_permissions_readAccessImplied = Read access for the {0} permission is
implied and cannot be disabled.
-view_adminRoles_permissions_resourcePermissions = Resource Permissions
-view_adminRoles_permissions_write = Write:
-view_adminRoles_perms = Permissions
-view_adminRoles_resourcePerms = Resource Permissions
-view_adminRoles_roleAdded = Role [{0}] added.
-view_adminRoles_roleDeleteFailed = Failed to delete role [{0}].
-view_adminRoles_roleDeleted = Role [{0}] deleted.
-view_adminRoles_roleUpdateFailed = Failed to update role [{0}].
-view_adminRoles_roleUpdated = Role [{0}] updated.
-view_adminSecurity_roles = ロール
-view_adminSecurity_users = ユーザー
-view_adminTemplates_disabledAlertTemplates = 無効なアラートテンプレート
-view_adminTemplates_disabledMetricTemplates = 無効なメトリックテンプレート
-view_adminTemplates_editAlertTemplate = アラートテンプレートの編集
-view_adminTemplates_editMetricTemplate = メトリックテンプレートの編集
-view_adminTemplates_enabledAlertTemplates = 有効なアラートテンプレート
-view_adminTemplates_enabledMetricTemplates = 有効なメトリックテンプレート
-view_adminTemplates_platformServices = プラットフォームサービス
-view_adminTemplates_platforms = プラットフォーム
-view_adminTemplates_prompt_disabledAlertTemplates = Number of alert templates that are
created but disabled on this resource type
-view_adminTemplates_prompt_disabledMetricTemplates = Number of metric schedules that are
disabled by default on this resource type
-view_adminTemplates_prompt_enabledAlertTemplates = Number of alert templates that are
enabled on this resource type
-view_adminTemplates_prompt_enabledMetricTemplates = Number of metric schedules that are
enabled by default on this resource type
-view_adminTemplates_servers = サービス
-view_adminTopology_affinityGroups = アフィニティグループ
-view_adminTopology_agents = エージェント
-view_adminTopology_partitionEvents = イベントの分類
-view_adminTopology_remoteAgentInstall = リモートエージェントのインストール
-view_adminTopology_servers = サーバー
-view_adminUsersDetails_dataTypeName = ユーザー
-view_adminUsersList_dataTypeName = ユーザー
-view_adminUsersList_dataTypeNamePlural = ユーザー
-view_admin_administration = 管理
-view_admin_configuration = 構成
-view_admin_content = コンテント
-view_admin_downloads_agentDownload = エージェントのダウンロード
-view_admin_downloads_agent_buildNumber = エージェントビルド
-view_admin_downloads_agent_help = <p> This is the RHQ Agent Update Binary jar file.
The purpose of this jar file is to allow you to install a fresh agent on a machine where
an agent does not yet exist and to allow you to update an agent that is already installed
on a machine. For more details, run this agent download jar with the --help command line
option:<br/> <b>java -jar <agent-download.jar> --help</b>
</p> <h3>Agent Install</h3> <p> <b>java -jar
<agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
-view_admin_downloads_agent_link_label = リンク
-view_admin_downloads_agent_link_value = エージェント {0} ({1}) のダウンロード
-view_admin_downloads_agent_loadError = Cannot get agent version info
-view_admin_downloads_agent_md5 = エージェント MD5
-view_admin_downloads_agent_version = エージェントバージョン
-view_admin_downloads_bundleDownload = バンドルデプロイヤのダウンロード
-view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is for
use by developers and packagers of RHQ bundles. This standalone tool allows you to test
your bundles and their recipes from a console. </p>
-view_admin_downloads_bundle_link_label = Link
-view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
-view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
-view_admin_downloads_cliDownload = コマンドラインクライアントのダウンロード
-view_admin_downloads_cli_buildNumber = CLI Build
-view_admin_downloads_cli_help = <p> This is the Command Line Client tool, otherwise
known as the CLI. It is a standalone tool that runs from within a console and provides a
command line interface to the RHQ Server. You can invoke commands via the CLI as well as
run scripts to perform automated tasks. See the documentation for more information on how
to install and use the CLI. </p>
-view_admin_downloads_cli_link_label = Link
-view_admin_downloads_cli_link_value = Download CLI {0} ({1})
-view_admin_downloads_cli_loadError = Cannot get CLI version info
-view_admin_downloads_cli_md5 = CLI MD5
-view_admin_downloads_cli_version = CLI Version
-view_admin_downloads_connectorsDownload = コネクタのダウンロード
-view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by RHQ. You install connectors into some managed
products so RHQ agents can talk to them. See the documentation for more information.
-view_admin_downloads_connectors_loadError = Cannot get connectors info
-view_admin_downloads_connectors_none = No connectors are available for download
-view_admin_landing =
このセクションにおいて、RHQグローバル設定が管理されます。これはセキュリティ構成、プラグイン設定、RHQサーバーとエージェントの管理を含みます。
-view_admin_measTemplates_title = Template Metric Collection Schedules
-view_admin_measTemplates_updateExisting_title = Update Existing Schedules
-view_admin_measTemplates_updateExisting_tooltip = Check this box to update the collection
schedules for the selected metrics on all existing resources of this type. If this is not
checked, the template schedules will only be applied to new resources of this type that
are added to inventory in the future.
-view_admin_security = セキュリティ
-view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = If this amount of time passes
without hearing from an agent, that quiet agent will be considered down. This value is
specified in minutes.
-view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent Max Quiet Time Allowed
-view_admin_systemSettings_AlertPurge_desc = How old alert history items must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_AlertPurge_name = Delete Alerts Older Than
-view_admin_systemSettings_AvailabilityPurge_desc = How old availability data must be
before being purged from the database. This is specified in days.
-view_admin_systemSettings_AvailabilityPurge_name = Delete Availability Data Older Than
-view_admin_systemSettings_BaseURL_desc = A URL to the server GUI, used mainly within
alert email notifications.
-view_admin_systemSettings_BaseURL_name = GUI Console URL
-view_admin_systemSettings_BaselineDataSet_desc = The amount of past measurement data that
is used to determine a baseline. This is specified in days.
-view_admin_systemSettings_BaselineDataSet_name = Baseline Dataset
-view_admin_systemSettings_BaselineFrequency_desc = The frequency which the
auto-calculation of baselines will be performed. If 0, baseline auto-calculation is
disabled. This is specified in days.
-view_admin_systemSettings_BaselineFrequency_name = Baseline Calculation Frequency
-view_admin_systemSettings_DataMaintenance_desc = How often database maintenance is
performed (for example, vacuuming if using Postgres). This is specified in hours.
-view_admin_systemSettings_DataMaintenance_name = Database Maintenance Period
-view_admin_systemSettings_DataReindex_desc = If enabled, certain database tables will be
re-indexed periodically.
-view_admin_systemSettings_DataReindex_name = Reindex Data Tables Nightly
-view_admin_systemSettings_EnableAgentAutoUpdate_desc = Determines if the server will
allow agents to auto-update themselves. You will not be able to download agent
distributions from the server if this is disabled.
-view_admin_systemSettings_EnableAgentAutoUpdate_name = Enable Agent Auto-Updates
-view_admin_systemSettings_EnableDebugMode_desc = If enabled, the server will enter debug
mode.
-view_admin_systemSettings_EnableDebugMode_name = Enable Debug Mode
-view_admin_systemSettings_EnableExperimentalFeatures_desc = If enabled, any experimental
features that exist in the current product will be available.
-view_admin_systemSettings_EnableExperimentalFeatures_name = Enable Experimental Features
-view_admin_systemSettings_EventPurge_desc = How old event data must be before being
purged from the database. This is specified in days.
-view_admin_systemSettings_EventPurge_name = Delete Events Older Than
-view_admin_systemSettings_JAASProvider_desc = Should LDAP be used to determine user
identity?
-view_admin_systemSettings_JAASProvider_name = Enable LDAP
-view_admin_systemSettings_LDAPBaseDN_desc = The base of the directory tree to search for
usernames and passwords while authenticating users, e.g. ou=People,dc=redhat,dc=com
-view_admin_systemSettings_LDAPBaseDN_name = Search Base
-view_admin_systemSettings_LDAPBindDN_desc = The username to connect to the LDAP server
when querying the LDAP user database. This is typically the full LDAP distinguished name
(DN) of a manager user, e.g. cn=Manager,dc=redhat,dc=com
-view_admin_systemSettings_LDAPBindDN_name = Username
-view_admin_systemSettings_LDAPBindPW_desc = The credentials of the user used to connect
to the LDAP server when querying the LDAP user database.
-view_admin_systemSettings_LDAPBindPW_name = Password
-view_admin_systemSettings_LDAPFilter_desc = Any additional filters to apply when doing
the LDAP search. This is useful if the population to authenticate can be identified via a
given LDAP property, e.g. RHQUser=true
-view_admin_systemSettings_LDAPFilter_name = Search Filter
-view_admin_systemSettings_LDAPGroupFilter_desc = LDAP search filter that must return all
LDAP groups available for authorization. This is used for LDAP group authorization.
-view_admin_systemSettings_LDAPGroupFilter_name = Group Search Filter
-view_admin_systemSettings_LDAPGroupMember_desc = LDAP search filter that is used in
conjunction with the group search filter to determine user authorization. This is used for
LDAP group authorization.
-view_admin_systemSettings_LDAPGroupMember_name = Group Member Filter
-view_admin_systemSettings_LDAPLoginProperty_desc = The LDAP property that contains the
user name. Defaults to "cn". If multiple matches are found, the first entry
found is used.
-view_admin_systemSettings_LDAPLoginProperty_name = Login Property
-view_admin_systemSettings_LDAPProtocol_desc = Should communication with the LDAP server
be done over SSL?
-view_admin_systemSettings_LDAPProtocol_name = SSL
-view_admin_systemSettings_LDAPUrl_desc = URL to the LDAP Server
-view_admin_systemSettings_LDAPUrl_name = LDAP URL
-view_admin_systemSettings_RtDataPurge_desc = How old response time data must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_RtDataPurge_name = Delete Response Time Data Older Than
-view_admin_systemSettings_TraitPurge_desc = How old measurement trait data must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_TraitPurge_name = Delete Measurement Traits Older Than
-view_admin_systemSettings_cannotLoadServerDetails = Cannot load server details
-view_admin_systemSettings_cannotLoadSettings = Cannot obtain the current system settings
-view_admin_systemSettings_fixBeforeSaving = Please fix the invalid values before saving
-view_admin_systemSettings_group_baseline = 自動ベースライン構成プロパティ
-view_admin_systemSettings_group_dataMgr = データマネージャー構成プロパティ
-view_admin_systemSettings_group_general = 全体構成プロパティ
-view_admin_systemSettings_group_ldap = LDAP 構成プロパティ
-view_admin_systemSettings_saveFailure = Failed to save the system settings
-view_admin_systemSettings_savedSettings = You successfully saved the system properties
-view_admin_systemSettings_serverDetails = Server Details
-view_admin_systemSettings_serverDetails_buildNumber = Build Number
-view_admin_systemSettings_serverDetails_currentTable = Current Measurement Raw Table
-view_admin_systemSettings_serverDetails_dbDriverName = Database Driver Name
-view_admin_systemSettings_serverDetails_dbDriverVersion = Database Driver Version
-view_admin_systemSettings_serverDetails_dbName = Database Product Name
-view_admin_systemSettings_serverDetails_dbUrl = Database Connection URL
-view_admin_systemSettings_serverDetails_dbVersion = Database Product Version
-view_admin_systemSettings_serverDetails_installDir = Server Installation Directory
-view_admin_systemSettings_serverDetails_nextRotation = Next Measurement Table Rotation
-view_admin_systemSettings_serverDetails_time = Server Local Time
-view_admin_systemSettings_serverDetails_tz = Server Time Zone
-view_admin_topology = トポロジー
-view_alert_common_tab_conditions = Conditions
-view_alert_common_tab_conditions_expression = Fire alert when
-view_alert_common_tab_conditions_expression_tooltip = Determines if ANY or ALL of the
conditions must evaluate to true in order for the entire condition set to be considered
true.
-view_alert_common_tab_conditions_modal_title = 条件追加
-view_alert_common_tab_conditions_recovery_disabled = This alert caused its alert
definition to be disabled
-view_alert_common_tab_conditions_recovery_enabled = Triggered ''{0}'' to
be re-enabled
-view_alert_common_tab_conditions_text = Condition
-view_alert_common_tab_conditions_type_availability = Availability Change
-view_alert_common_tab_conditions_type_availability_down = Went down
-view_alert_common_tab_conditions_type_availability_up = Came up
-view_alert_common_tab_conditions_type_event = Event Detection
-view_alert_common_tab_conditions_type_event_matching = with event source matching
-view_alert_common_tab_conditions_type_metric_baseline = Metric Value Baseline
-view_alert_common_tab_conditions_type_metric_baseline_verb = of
-view_alert_common_tab_conditions_type_metric_calltime_change = Call Time Value Changes
-view_alert_common_tab_conditions_type_metric_calltime_change_verb = by at least
-view_alert_common_tab_conditions_type_metric_calltime_delta_grows = Grows
-view_alert_common_tab_conditions_type_metric_calltime_delta_other = Changes
-view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = Shrinks
-view_alert_common_tab_conditions_type_metric_calltime_destination = with call destination
matching
-view_alert_common_tab_conditions_type_metric_calltime_threshold = Call Time Value
Threshold
-view_alert_common_tab_conditions_type_metric_change = Metric Value Change
-view_alert_common_tab_conditions_type_metric_threshold = Metric Value Threshold
-view_alert_common_tab_conditions_type_metric_trait_change = Trait Change
-view_alert_common_tab_conditions_type_operation = Operation Execution
-view_alert_common_tab_conditions_type_operation_status = with result status
-view_alert_common_tab_conditions_type_resource_configuration = Resource Configuration
Change
-view_alert_common_tab_conditions_value = Value
-view_alert_common_tab_dampening = Dampening
-view_alert_common_tab_dampening_category_consecutive_count = Consecutive
-view_alert_common_tab_dampening_category_consecutive_count_tooltip = An alert is
triggered once every X occurrences the condition set is true consecutively.
-view_alert_common_tab_dampening_category_duration_count = Time Period
-view_alert_common_tab_dampening_category_duration_count_tooltip = An alert is triggered
once every X occurrences the condition set is true within a given time period.
-view_alert_common_tab_dampening_category_none = None
-view_alert_common_tab_dampening_category_none_tooltip = Dampening is disabled. Every time
the condition set is true, an alert will be triggered.
-view_alert_common_tab_dampening_category_partial_count = Last N Evaluations
-view_alert_common_tab_dampening_category_partial_count_tooltip = An alert is triggered
once every X occurrences the condition set is true during the last N evaluations of the
condition set.
-view_alert_common_tab_dampening_consecutive_occurrences_label = Occurrences
-view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = The number of
times the condition set must be consecutively true before the alert is triggered
-view_alert_common_tab_dampening_duration_occurrences_label = Occurrences
-view_alert_common_tab_dampening_duration_occurrences_label_tooltip = The number of times
the condition set must be true during the given time period before the alert is
triggered.
-view_alert_common_tab_dampening_duration_period_label = Time Period
-view_alert_common_tab_dampening_duration_period_label_tooltip = The time span in which
the condition set will be tested to see if the given number of occurrences are true.
-view_alert_common_tab_dampening_partial_evalatuions_label = Evaluations
-view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = The total number of
times the condition set will be tested to see if the given number of occurrences are
true.
-view_alert_common_tab_dampening_partial_occurrences_label = Occurrences
-view_alert_common_tab_dampening_partial_occurrences_label_tooltip = The number of times
the condition set must be true during the last N evaluations before the alert is
triggered.
-view_alert_common_tab_general = General Properties
-view_alert_common_tab_invalid_condition_category = Invalid condition category - please
report this as a bug: {0}
-view_alert_common_tab_invalid_dampening_category = Invalid dampening category - please
report this as a bug: {0}
-view_alert_common_tab_invalid_time_units = Invalid time units - please report this as a
bug: {0}
-view_alert_common_tab_notifications = Notifications
-view_alert_common_tab_notifications_message = Message
-view_alert_common_tab_notifications_sender = Sender
-view_alert_common_tab_notifications_status = Status
-view_alert_common_tab_recovery = Recovery
-view_alert_definition_condition_editor_avilability_option_down = Goes down
-view_alert_definition_condition_editor_avilability_option_up = Comes up
-view_alert_definition_condition_editor_avilability_tooltip = Specify the availability
state change that will trigger the condition.
-view_alert_definition_condition_editor_avilability_value = Availability
-view_alert_definition_condition_editor_common_avg = Average
-view_alert_definition_condition_editor_common_max = Maximum
-view_alert_definition_condition_editor_common_min = Minimum
-view_alert_definition_condition_editor_delete_confirm = Delete the selected alert
condition(s)?
-view_alert_definition_condition_editor_event_regex = Regular Expression
-view_alert_definition_condition_editor_event_regex_tooltip = If specified, this is a
regular expression that must match a collected event message in order to trigger the
condition.
-view_alert_definition_condition_editor_event_severity = Event Severity
-view_alert_definition_condition_editor_event_severity_debug = Debug
-view_alert_definition_condition_editor_event_severity_error = Error
-view_alert_definition_condition_editor_event_severity_fatal = Fatal
-view_alert_definition_condition_editor_event_severity_info = Info
-view_alert_definition_condition_editor_event_severity_warn = Warn
-view_alert_definition_condition_editor_event_tooltip = Specify the event severity that an
event message must be reported with in order to trigger this condition. If you specify an
optional regular expression, the event message must also match that regular expression in
order for the condition to trigger.
-view_alert_definition_condition_editor_metric_baseline_percentage = Baseline Percentage
-view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = A collected
metric value will trigger this condition when compared to this percentage of the selected
baseline value using the selected comparator
-view_alert_definition_condition_editor_metric_baseline_tooltip = Specify the baseline
value that must be violated to trigger the condition. The value you specify is a
percentage of the given baseline value.
-view_alert_definition_condition_editor_metric_baseline_value = Baseline
-view_alert_definition_condition_editor_metric_calltime_change_percentage = Percentage
Change
-view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip = A
collected calltime value will trigger this condition when it differs by at least this
percentage of the selected calltime limit value
-view_alert_definition_condition_editor_metric_calltime_change_tooltip = Specify the
calltime value that, when changed at least a specified amount, triggers the condition. You
must specify which calltime limit to check (minimum, maximum or average calltime value)
and the percentage of change that must occur.
-view_alert_definition_condition_editor_metric_calltime_common_comparator = Comparator
-view_alert_definition_condition_editor_metric_calltime_common_comparator_changes =
Changes
-view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = Grows
-view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks =
Shrinks
-view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = How a
collected calltime value should be compared to the given calltime limit
-view_alert_definition_condition_editor_metric_calltime_common_limit = Call Time Limit
-view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = The
calltime limit value that is to be compared with the given value
-view_alert_definition_condition_editor_metric_calltime_common_name = Call Time Metric
-view_alert_definition_condition_editor_metric_calltime_common_regex = Regular Expression
-view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip = If
specified, this is a regular expression that must match a call destination in order to
trigger the condition.
-view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Specify the
calltime threshold value that, when violated, triggers the condition. The value you
specify is an absolute value with an optional units specifier. You also must specify which
calltime limit to compare the value with (minimum, maximum or average calltime value).
-view_alert_definition_condition_editor_metric_calltime_threshold_value = Call Time Value
-view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = The
threshold value of the metric that will trigger the condition when compared using the
selected comparator.
-view_alert_definition_condition_editor_metric_change_tooltip = Specify the metric whose
value must change to trigger the condition.
-view_alert_definition_condition_editor_metric_common_definition_not_found = Should have
found metric definition - something is wrong
-view_alert_definition_condition_editor_metric_threshold_comparator = Comparator
-view_alert_definition_condition_editor_metric_threshold_comparator_equal = Equal to
-view_alert_definition_condition_editor_metric_threshold_comparator_greater = Greater
Than
-view_alert_definition_condition_editor_metric_threshold_comparator_less = Less than
-view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = How a
collected metric value should be compared to the given threshold value
-view_alert_definition_condition_editor_metric_threshold_name = Metric
-view_alert_definition_condition_editor_metric_threshold_tooltip = Specify the threshold
value that, when violated, triggers the condition. The value you specify is an absolute
value with an optional units specifier.
-view_alert_definition_condition_editor_metric_threshold_value = Metric Value
-view_alert_definition_condition_editor_metric_threshold_value_tooltip = The threshold
value of the metric that will trigger the condition when compared using the selected
comparator.
-view_alert_definition_condition_editor_metric_trait_change_tooltip = Specify the trait
whose value must change to trigger the condition.
-view_alert_definition_condition_editor_metric_trait_change_value = Trait
-view_alert_definition_condition_editor_operation_status = オペレーションステータス
-view_alert_definition_condition_editor_operation_status_canceled = キャンセル済
-view_alert_definition_condition_editor_operation_status_failure = 失敗
-view_alert_definition_condition_editor_operation_status_inprogress = 処理中
-view_alert_definition_condition_editor_operation_status_success = 成功
-view_alert_definition_condition_editor_operation_tooltip = Specify the result that must
occur when the selected operation is executed in order to trigger the condition.
-view_alert_definition_condition_editor_operation_value = オペレーション
-view_alert_definition_condition_editor_option_availability = Availability Change
-view_alert_definition_condition_editor_option_event = Event Detection
-view_alert_definition_condition_editor_option_label = Condition Type
-view_alert_definition_condition_editor_option_metric_baseline = Measurement Baseline
Threshold
-view_alert_definition_condition_editor_option_metric_calltime_change = Call Time Value
Change
-view_alert_definition_condition_editor_option_metric_calltime_threshold = Call Time Value
Threshold
-view_alert_definition_condition_editor_option_metric_change = Measurement Value Change
-view_alert_definition_condition_editor_option_metric_threshold = Measurement Absolute
Value Threshold
-view_alert_definition_condition_editor_option_metric_trait_change = Trait Value Change
-view_alert_definition_condition_editor_option_operation = Operation Execution
-view_alert_definition_condition_editor_option_resource_configuration = Resource
Configuration Change
-view_alert_definition_condition_editor_resource_configuration_tooltip = This condition is
triggered when the resource configuration changes.
-view_alert_definition_for_group = View Group Definition
-view_alert_definition_for_type = View Template
-view_alert_definition_notification_cliScript_editor_anotherUser = Another User
-view_alert_definition_notification_cliScript_editor_existingScript = Existing Script
-view_alert_definition_notification_cliScript_editor_loadFailed = Loading the CLI
Notification Editor Failed.
-view_alert_definition_notification_cliScript_editor_newScriptVersion = Version
-view_alert_definition_notification_cliScript_editor_repository = Repository
-view_alert_definition_notification_cliScript_editor_script = Script
-view_alert_definition_notification_cliScript_editor_selectRepo = Select the repository
where the script should reside
-view_alert_definition_notification_cliScript_editor_selectRepoFirst = Select a repository
first.
-view_alert_definition_notification_cliScript_editor_thisUser = Myself
-view_alert_definition_notification_cliScript_editor_uploadNewScript = Upload New Script
-view_alert_definition_notification_cliScript_editor_verifyAuthentication = Verify
-view_alert_definition_notification_cliScript_editor_whichUser = User To Run The Script
As
-view_alert_definition_notification_editor_delete_confirm = Are you sure you want to
delete the selected alert notifications?
-view_alert_definition_notification_editor_field_configuration = Configuration
-view_alert_definition_notification_editor_field_configuration_loadFailed = Failed to get
notification configuration preview
-view_alert_definition_notification_editor_field_configuration_not_loaded = Unknown
-view_alert_definition_notification_editor_field_sender = Sender
-view_alert_definition_notification_editor_loadFailed = Cannot get alert senders
-view_alert_definition_notification_editor_loadFailed_single = Cannot get alert sender
configuration definition
-view_alert_definition_notification_editor_none_available = No alert senders available
-view_alert_definition_notification_editor_saveFailed = Cannot save the notification
configuration
-view_alert_definition_notification_editor_sender = Notification Sender
-view_alert_definition_notification_editor_title_add = 通知の追加
-view_alert_definition_notification_editor_title_edit = 通知の編集
-view_alert_definition_notification_operation_editor_common_operation = Operation
-view_alert_definition_notification_operation_editor_mode_relative = Relative Resource
-view_alert_definition_notification_operation_editor_mode_specific = Specific Resource
-view_alert_definition_notification_operation_editor_mode_this = This Resource
-view_alert_definition_notification_operation_editor_mode_title = リソース選択モード
-view_alert_definition_notification_operation_editor_mode_unknown = UNKNOWN OPTION - THIS
IS A BUG
-view_alert_definition_notification_operation_editor_operations_loadFailed = Failed to
load the list of available operations
-view_alert_definition_notification_operation_editor_operations_no_parameters = This
operation does not take any parameters
-view_alert_definition_notification_operation_editor_relative_ancestor = Start Search
From
-view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed = Cannot
get type ancestry
-view_alert_definition_notification_operation_editor_relative_ancestor_root = Root
Ancestor Type
-view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Select
the top of the type hierarchy from which to search its descendant tree for the Filter By
type
-view_alert_definition_notification_operation_editor_relative_descendant = Then Filter By
-view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip =
A specific name to uniquely identify a resource when more than one resource of the
selected type might exist. This is optional if there will only ever be one resource of the
resource type in the selected type hierarchy.
-view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
Cannot get type descendants
-view_alert_definition_notification_operation_editor_relative_descendant_tooltip = The
resource type to search for under the root type defined in the Start Search From
selection.
-view_alert_definition_notification_operation_editor_specific_pick_button = Pick
-view_alert_definition_notification_operation_editor_specific_pick_error_invalid = Please
pick a resource
-view_alert_definition_notification_operation_editor_specific_pick_error_no_operation =
Please pick a resource that has one or more operations
-view_alert_definition_notification_operation_editor_specific_pick_text = Pick a
resource...
-view_alert_definition_notification_operation_editor_specific_resource = Resource
-view_alert_definition_notification_role_editor_loadFailed = Cannot determine current
roles - starting empty
-view_alert_definition_notification_role_editor_restoreFailed = Cannot use current roles -
starting empty
-view_alert_definition_notification_role_editor_saveFailed = Cannot save the selected
roles
-view_alert_definition_notification_user_editor_loadFailed = Cannot determine current
users - starting empty
-view_alert_definition_notification_user_editor_restoreFailed = Cannot use current users -
starting empty
-view_alert_definition_notification_user_editor_saveFailed = Cannot save the selected
users
-view_alert_definition_recovery_editor_disable_when_fired = Disable When Fired
-view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indicates if this
alert will be disabled after it fires. Once disabled, the alert can be manually re-enabled
or a recovery alert can be set up to automatically re-enable it. If this alert is a
recovery alert itself, this setting cannot be turned on.
-view_alert_definition_recovery_editor_loadFailed = Cannot build recovery menu
-view_alert_definition_recovery_editor_none_available = None
-view_alert_definition_recovery_editor_recovery_alert = Recover Alert
-view_alert_definition_recovery_editor_recovery_alert_tooltip = The target alert that will
be recovered (i.e. re-enabled) after this alert triggers. Do not select an alert here if
you are not defining a recovery alert.
-view_alert_definitions_create_failure = Alert definition creation failed
-view_alert_definitions_create_success = Alert definition successfully created
-view_alert_definitions_delete_confirm = Delete the selected alert definition(s)?
-view_alert_definitions_delete_failure = Failed to deleted the selected alert definitions
-view_alert_definitions_delete_success = Successfully deleted {0} alert definitions
-view_alert_definitions_disable_confirm = Disable the selected alert definition(s)?
-view_alert_definitions_disable_failure = Failed to disable the selected alert
definitions
-view_alert_definitions_disable_success = Successfully disabled {0} alert definitions
-view_alert_definitions_enable_confirm = Enable the selected alert definition(s)?
-view_alert_definitions_enable_failure = Failed to enable the selected alert definitions
-view_alert_definitions_enable_success = Successfully enabled {0} alert definitions
-view_alert_definitions_loadFailed = Failed to fetch alert definition data
-view_alert_definitions_loadFailed_single = Failed to fetch data for alert definition with
id {0}
-view_alert_definitions_table_title_group = グループアラート定義
-view_alert_definitions_table_title_resource = リソースアラート定義
-view_alert_definitions_update_failure = Alert definition update failed
-view_alert_definitions_update_success = Alert definition successfully updated
-view_alert_details_field_ack_at = Acknowledged at
-view_alert_details_field_ack_by = Acknowledged by
-view_alert_details_field_recovery_info = Recovery Info
-view_alert_details_loadFailed = Failed to fetch alert details
-view_alerts_ack_confirm = Acknowledge the selected alert(s)?
-view_alerts_ack_confirm_all = Acknowledge all alerts from this source?
-view_alerts_ack_failure = Failed to acknowledge alerts with id''s: {0}
-view_alerts_ack_failure_all = Failed to acknowledge all alerts from this source
-view_alerts_ack_success = Successfully acknowledged {0} alerts
-view_alerts_delete_confirm = Delete the selected alert(s)?
-view_alerts_delete_confirm_all = Delete all alerts from this source?
-view_alerts_delete_failure = Failed to delete alerts with id''s: {0}
-view_alerts_delete_failure_all = Failed to delete all alerts from this source
-view_alerts_delete_success = Successfully deleted {0} alerts
-view_alerts_field_ack_status = ステータス
-view_alerts_field_ack_status_ack = 確認 ({0})
-view_alerts_field_ack_status_ackHover = Acknowledged by {0} at {1}
-view_alerts_field_ack_status_noAck = 未確認
-view_alerts_field_ack_status_noAckHover = Not yet Acknowledged
-view_alerts_field_ack_subject = 確認サブジェクト
-view_alerts_field_ack_time = 確認時刻
-view_alerts_field_condition_text = 条件テキスト
-view_alerts_field_condition_text_many = Multiple Conditions
-view_alerts_field_condition_text_none = No Conditions
-view_alerts_field_condition_value = Condition Value
-view_alerts_field_created_time = 生成時刻
-view_alerts_field_enabled = 有効
-view_alerts_field_modified_time = 修正時刻
-view_alerts_field_name = 名前
-view_alerts_field_parent = 親
-view_alerts_field_priority = 優先度
-view_alerts_field_protected = Protected
-view_alerts_field_protected_tooltip = If true, this definition is protected from being
changed by the parent definition. In other words, the parent definition settings will not
override this definition.
-view_alerts_loadFailed = Failed to fetch alerts data
-view_alerts_table_filter_priority = 優先度フィルター
-view_alerts_table_title_group = グループアラート履歴
-view_alerts_table_title_resource = リソースアラート履歴
-view_autoDiscoveryQ_committed = コミット済み
-view_autoDiscoveryQ_confirmSelect = Also select the platform children?
-view_autoDiscoveryQ_deleted = 削除済み
-view_autoDiscoveryQ_field_discoveryTime = Discovery Time
-view_autoDiscoveryQ_field_inventoryStatus = Inventory Status
-view_autoDiscoveryQ_field_key = Resource Key
-view_autoDiscoveryQ_field_name = Resource Name
-view_autoDiscoveryQ_field_parentId = Parent ID
-view_autoDiscoveryQ_ignore = 無視
-view_autoDiscoveryQ_ignoreFailure = Failed to ignore resources
-view_autoDiscoveryQ_ignoreSuccessful = You have successfully ignored the selected
resources.
-view_autoDiscoveryQ_ignored = 無視済み
-view_autoDiscoveryQ_import = インポート
-view_autoDiscoveryQ_importFailure = Failed to import resources
-view_autoDiscoveryQ_importSuccessful = You have successfully imported the selected
resources.
-view_autoDiscoveryQ_loadFailure = Failed to load the inventory discovery queue
-view_autoDiscoveryQ_new = 新規
-view_autoDiscoveryQ_newAndIgnored = 新規かつ無視済み
-view_autoDiscoveryQ_noItems = No items to show
-view_autoDiscoveryQ_noperm = (You are not authorized to view the auto-discovery queue)
-view_autoDiscoveryQ_showStatus = Show
-view_autoDiscoveryQ_title = 自動リカバリキュー
-view_autoDiscoveryQ_unignore = 無視をしない
-view_autoDiscoveryQ_unignoreFailure = Failed to unignore resources
-view_autoDiscoveryQ_unignoreSuccessful = You have successfully unignored the selected
resources.
-view_autoDiscoveryQ_uninventoried = インベントリ登録をしない
-view_bundleVersion_loadFailure = Failed to load bundle version data
-view_bundle_bundle = バンドル
-view_bundle_bundleDeployment = Bundle Deployment
-view_bundle_bundleDeployments = Bundle Deployments
-view_bundle_bundleDestinations = Bundle Destinations
-view_bundle_bundleFiles = Bundle Files
-view_bundle_bundleType = Bundle Type
-view_bundle_bundleVersion = Bundle Version
-view_bundle_bundleVersions = Bundle Versions
-view_bundle_bundles = バンドル
-view_bundle_createWizard_bundleDistro = Bundle Distribution
-view_bundle_createWizard_cancelFailure = Failed to fully cancel the creation of bundle
[{0}], version = [{1}] - the bundle may still exist in the database
-view_bundle_createWizard_cancelSuccessful = Canceled the creation of bundle [{0}],
version = [{1}]
-view_bundle_createWizard_clickToUploadRecipe = Click to load a recipe file
-view_bundle_createWizard_createFailure = Failed to create the bundle
-view_bundle_createWizard_createSuccessful = You have successfully created a bundle named
[{0}] with a version of [{1}]
-view_bundle_createWizard_enterRecipe = Please supply a valid recipe
-view_bundle_createWizard_enterUrl = Please enter a valid URL where the bundle
distribution file can be downloaded from
-view_bundle_createWizard_failedToUploadDistroFile = Failed to upload bundle distribution
file
-view_bundle_createWizard_failedToUploadFile = Failed to upload bundle file
-view_bundle_createWizard_loadBundleFileFailure = Cannot obtain bundle file information
from server
-view_bundle_createWizard_noAdditionalFilesNeeded = No additional files need to be
uploaded for this bundle
-view_bundle_createWizard_noBundleTypesAvail = No bundle types are available
-view_bundle_createWizard_noBundleTypesSupported = No bundle types are supported - you
must deploy a valid plugin that supports bundle deployments
-view_bundle_createWizard_provideBundleDistro = Provide a Bundle Distribution
-view_bundle_createWizard_recipeOption = Recipe
-view_bundle_createWizard_title = バンドル生成
-view_bundle_createWizard_uploadInProgress = Upload is in progress... This can take
several minutes for large files
-view_bundle_createWizard_uploadOption = Upload
-view_bundle_createWizard_uploadStepName = Upload Bundle Files
-view_bundle_createWizard_urlOption = URL
-view_bundle_createWizard_windowTitle = Bundle Creation Wizard
-view_bundle_createWizard_youMustChooseOne = You must choose one option in order to create
a bundle!
-view_bundle_deleteConfirm = Are you sure you want to delete this bundle? All versions,
destinations and deployments for this bundle will also be deleted.
-view_bundle_deploy = Deploy
-view_bundle_deployDir = Deploy Directory
-view_bundle_deployWizard_deployStep = Deploy Bundle to Destination Platforms
-view_bundle_deployWizard_deploying = Deploying...
-view_bundle_deployWizard_deploymentCreated = Created Deployment...
-view_bundle_deployWizard_deploymentCreatedDetail = You have created the deployment [{0}]
with the description [{1}]
-view_bundle_deployWizard_deploymentCreatedDetail_concise = You have created the
deployment [{0}]
-view_bundle_deployWizard_deploymentScheduled = Bundle Deployment Scheduled!
-view_bundle_deployWizard_deploymentScheduledDetail = You have scheduled the bundle
deployment [{0}] to the destination group [{1}]
-view_bundle_deployWizard_deploymentScheduledDetail_concise = You have scheduled the
bundle deployment
-view_bundle_deployWizard_destinationCreatedDetail = You have created the destination
[{0}] with the description [{1}]
-view_bundle_deployWizard_destinationCreatedDetail_concise = You have created the
destination [{0}]
-view_bundle_deployWizard_error_1 = Failed to delete new deployment on Cancel
-view_bundle_deployWizard_error_10 = Failed to create destination, it may already exist.
(Note, for an existing destination deploy from the Destination view)
-view_bundle_deployWizard_error_11 = Failed to find defined deployments.
-view_bundle_deployWizard_error_12 = Failed to find defined bundles.
-view_bundle_deployWizard_error_2 = Failed to delete new destination on Cancel
-view_bundle_deployWizard_error_3 = Failed to Schedule Deployment!
-view_bundle_deployWizard_error_4 = Failed to schedule deployment: {0}
-view_bundle_deployWizard_error_5 = Failed to Create Deployment!
-view_bundle_deployWizard_error_6 = Failed to create deployment: {0}
-view_bundle_deployWizard_error_7 = Failed to get deployment name.
-view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down
-view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage
-view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
-view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
-view_bundle_deployWizard_getDestStep = New Destination
-view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)
-view_bundle_deployWizard_getDest_desc = Destination Description
-view_bundle_deployWizard_getDest_name = Destination Name
-view_bundle_deployWizard_getInfoStep = Provide Deployment Information
-view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
-view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description
-view_bundle_deployWizard_getInfo_deploymentName = Deployment Name
-view_bundle_deployWizard_getOptionsStep = Deploy Options
-view_bundle_deployWizard_getOptions_deployLater = Deploy Later
-view_bundle_deployWizard_getOptions_deployNow = Deploy Now
-view_bundle_deployWizard_getOptions_deployTime = Deployment Time
-view_bundle_deployWizard_selectBundleStep = Select Deployment Bundle
-view_bundle_deployWizard_selectBundle_single = Select only a single bundle for
deployment.
-view_bundle_deployWizard_selectVersionStep = Select Deployment Bundle Version
-view_bundle_deployWizard_selectVersion_latest = Latest Version [{0}]
-view_bundle_deployWizard_selectVersion_live = Live Version [{0}]
-view_bundle_deployWizard_selectVersion_select = Select Version from List:
-view_bundle_deployWizard_title = バンドルデプロイウィザード
-view_bundle_deploy_action = Action
-view_bundle_deploy_backButton = Back to Destination
-view_bundle_deploy_clickForError = Click the icon for the error message
-view_bundle_deploy_deleteConfirm = Are you sure you want to delete this bundle
deployment?
-view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
-view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
-view_bundle_deploy_deployedBy = Deployed By
-view_bundle_deploy_deploymentPlatforms = Deployment Platforms
-view_bundle_deploy_installDetails = Install Details
-view_bundle_deploy_loadBundleFailure = Failed to find bundle
-view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments
-view_bundle_deploy_loadFailure = Failed to load bundle deployment
-view_bundle_deploy_name = Deployment Name
-view_bundle_deploy_operatingSystem = Operating System
-view_bundle_deploy_selectARow = Select a row to show installation details
-view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags
-view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags
-view_bundle_deploy_time = Deployment Time
-view_bundle_deployed = Deployed
-view_bundle_deployments = Deployments
-view_bundle_dest_backToBundle = Back to Bundle
-view_bundle_dest_created = Created
-view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle destination?
This only deletes it from the database; all bundle content that was deployed to this
destination on remote machines will remain.
-view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
-view_bundle_dest_deleteSuccessful = You successfully deleted the bundle destination
[{0}]
-view_bundle_dest_deployDir = Deploy Directory
-view_bundle_dest_group = Group
-view_bundle_dest_lastDeployedVersion = Last Deployed Version
-view_bundle_dest_lastDeploymentDate = Last Deployment Date
-view_bundle_dest_lastDeploymentStatus = Last Deployment Status
-view_bundle_dest_loadFailure = Failed to load bundle destinations
-view_bundle_dest_loadFailureVersionInfo = Failed to load bundle destination deployed
version information
-view_bundle_dest_purgeConfirm = This will purge the bundle content from all remote
machines. Are you sure you want to do this?
-view_bundle_dest_purgeFailure = Failed to purge the bundle destination [{0}] from some or
all of the remote machines.
-view_bundle_dest_purgeSuccessful = You successfully purged the bundle destination [{0}]
from all of the remote machines.
-view_bundle_dest_revertConfirm = This will revert all remote machines back to the
previous bundle deployment. Are you sure you want to do this?
-view_bundle_dest_tagUpdateFailure = Failed to update bundle destination tags
-view_bundle_dest_tagUpdateSuccessful = You have successfully updated the bundle
destination tags
-view_bundle_destinations = Destinations
-view_bundle_fileListView_fileSize = File Size
-view_bundle_fileListView_loadFailure = Failed to load bundle file data
-view_bundle_fileListView_md5 = MD5
-view_bundle_fileListView_sha256 = SHA256
-view_bundle_files = Files
-view_bundle_latestVersion = 最新バージョン
-view_bundle_list_backToAll = Back to All Bundles
-view_bundle_list_deleteConfirm = Are you sure you want to delete the selected bundles?
-view_bundle_list_deleteFailure = Failed to delete the bundle [{0}]
-view_bundle_list_deleteSuccessful = You successfully deleted the bundle [{0}]
-view_bundle_list_deletesFailure = Failed to delete the bundles
-view_bundle_list_deletesSuccessful = You successfully deleted the bundles
-view_bundle_list_destinationsCount = Destinations Count
-view_bundle_list_error1 = Failed to load bundle to deploy [{0}]
-view_bundle_list_error2 = Failed to get a single bundle to deploy [{0}]
-view_bundle_list_error3 = Failed to load bundle
-view_bundle_list_loadFailure = Failed to load the bundle to be deployed [{0}]
-view_bundle_list_loadWithLatestFailure = Failed to load bundle with the latest version
data
-view_bundle_list_singleLoadFailure = Failed to get a single bundle to be deployed [{0}]
-view_bundle_list_tagUpdateFailure = Failed to update bundle tags
-view_bundle_list_tagUpdateSuccessful = You have successfully updated the bundle tags
-view_bundle_list_versionsCount = Versions Count
-view_bundle_purge = Purge
-view_bundle_recipe = Recipe
-view_bundle_resDeployDS_loadFailure = Failed to load bundle resource deployments
-view_bundle_revert = Revert
-view_bundle_revertWizard_confirmStep_confirmation = Reverting Live Deployment to Previous
Deployment. Click "Next" to continue...
-view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment = Failed to find live
deployment; cannot revert
-view_bundle_revertWizard_confirmStep_liveDeployment = Live Deployment
-view_bundle_revertWizard_confirmStep_name = Revert Deployment Confirmation
-view_bundle_revertWizard_confirmStep_noLiveDeployment = No live deployment was found for
the destination [{0}]
-view_bundle_revertWizard_confirmStep_noLiveDeployment_concise = No live deployment was
found for the destination
-view_bundle_revertWizard_confirmStep_noPriorDeployment = The live deployment [{0}] cannot
be reverted because there is no prior deployment for the destination [{1}]
-view_bundle_revertWizard_confirmStep_noPriorDeployment_concise = The live deployment
cannot be reverted because there is no prior deployment
-view_bundle_revertWizard_confirmStep_prevDeployment = Previous Deployment
-view_bundle_revertWizard_getInfoStep_cleanDeploy = Clean Deployment? (this will delete an
old, existing deploy directory prior to starting the revert deployment)
-view_bundle_revertWizard_getInfoStep_getNameFailure = Failed to get revert deployment
name
-view_bundle_revertWizard_getInfoStep_name = Provide Revert Information
-view_bundle_revertWizard_getInfoStep_revertDeployDesc = Revert Deploy Description
-view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT From]\n{0}\n\n[REVERT
To]\n{1}
-view_bundle_revertWizard_getInfoStep_revertDeployName = Revert Deploy Name
-view_bundle_revertWizard_revertStep_name = Deploy Bundle to Destination Platforms
-view_bundle_revertWizard_revertStep_reverting = Reverting...
-view_bundle_revertWizard_revertStep_scheduled = You have successfully scheduled the
revert deployment!
-view_bundle_revertWizard_revertStep_scheduledDetails = You have successfully scheduled to
revert the bundle deployment [{0}] from resource group [{1}]
-view_bundle_revertWizard_revertStep_scheduledFailure = Failed to schedule revert
deployment!
-view_bundle_revertWizard_title = バンドル取り消し
-view_bundle_revertWizard_windowTitle = バンドル取り消しウィザード
-view_bundle_tree_loadFailure = Failed to load bundle data
-view_bundle_version_backToBundle = Back to Bundle
-view_bundle_version_bundleVersionTagUpdateFailure = Failed to update bundle version tags
-view_bundle_version_bundleVersionTagUpdateSuccessful = You have successfully updated the
bundle version tags
-view_bundle_version_deleteConfirm = Are you sure you want to delete this bundle version?
-view_bundle_version_deleteFailure = Failed to delete the bundle version [{0}]
-view_bundle_version_deleteSuccessful = You successfully deleted the bundle version [{0}]
-view_bundle_version_loadFailure = Failed to load bundle version
-view_bundle_versions = バージョン
-view_configCompare_comparingConfigs = Comparing Configurations
-view_configCompare_configCompare = Configuration Comparison
-view_configEdit_addItem = Add Item to List
-view_configEdit_confirm_1 = Are you sure you want to delete the selected properties from
the set?
-view_configEdit_confirm_2 = Are you sure you want to delete this row?
-view_configEdit_confirm_3 = Are you sure you want to delete the [{0}] selected [{1}]?
-view_configEdit_editRow = Edit Row
-view_configEdit_enterPropName = Enter the name of the property to be added.
-view_configEdit_error_1 = Configuration is not supported by this Resource.
-view_configEdit_error_2 = Connection settings are not supported by this Resource.
-view_configEdit_error_3 = Cannot add property named [{0}]. The property name is already
used in the set.
-view_configEdit_files = Files
-view_configEdit_hideAll = Hide All
-view_configEdit_jumpToSection = セクションへのジャンプ
-view_configEdit_msg_1 = Added property [{0}] to the set.
-view_configEdit_msg_2 = Removed properties from the set.
-view_configEdit_msg_3 = [{0} {1}] deleted from list.
-view_configEdit_msg_4 = Item added to list.
-view_configEdit_properties = Properties
-view_configEdit_tooltip_1 = Delete the selected items from the list.
-view_configEdit_tooltip_2 = Add an item to the list.
-view_configEdit_viewRow = View Row
-view_configurationDetails_allPropertiesValid = All configuration properties have valid
values, so the configuration can now be saved.
-view_configurationDetails_configNotUpdatedDueToNoChange = Configuration was not updated,
since the new configuration is equivalent to the current configuration.
-view_configurationDetails_error_updateFailure = Failed to update configuration.
-view_configurationDetails_messageConcise = Configuration updated - current version is
{0}.
-view_configurationDetails_messageDetailed = Configuration updated to version {0} for
Resource [{1}].
-view_configurationDetails_noPermission = You do not have permission to edit this
Resource''s configuration.
-view_configurationDetails_somePropertiesInvalid = The following configuration properties
have invalid values: {0}. The values must be corrected before the configuration can be
saved.
-view_configurationHistoryDetails_error_loadFailure = Unable to load configuration
history.
-view_configurationHistoryList_cannotDeleteCurrent = One of the selected history items
represents the current configuration - you cannot delete it.
-view_configurationHistoryList_cannotDeleteGroupItems = One or more selected configuration
history items are part of a group configuration update. You must purge that parent group
history item before you can delete its individual resource history items.
-view_configurationHistoryList_delete_failure = Failed to delete the configuration history
items.
-view_configurationHistoryList_delete_success = You successfully deleted the selected
configuration history items.
-view_configurationHistoryList_rollback = Rollback
-view_configurationHistoryList_rollback_failure = Failed to rollback the configuration.
The original configuration is still in effect.
-view_configurationHistoryList_rollback_success = You successfully rolled back the
configuration to the selected past configuration.
-view_configurationHistoryList_table_clickStatusIcon = Click the status icon for full
details
-view_configurationHistoryList_table_statusFailure = This configuration update failed
-view_configurationHistoryList_table_statusInprogress = This configuration update is still
in progress
-view_configurationHistoryList_table_statusNochange = No changes were made to this
configuration
-view_configurationHistoryList_table_statusSuccess = This configuration update was
successful
-view_configurationHistoryList_title = 構成履歴
-view_connectionSettingsDetails_allPropertiesValid = All connection settings have valid
values, so the settings can now be saved.
-view_connectionSettingsDetails_error_updateFailure = Failed to update connection
settings.
-##view_connectionSettingsDetails_messageConcise_updateSuccess = Connection settings
update initiated.
-##view_connectionSettingsDetails_messageDetailed_updateSuccess = Connection settings
update initiated for Resource [{0}].\n
-view_connectionSettingsDetails_noPermission = You do not have permission to edit this
Resource''s connection settings.
-view_connectionSettingsDetails_somePropertiesInvalid = The following connection settings
have invalid values: {0}. The values must be corrected before the settings can be saved.
-view_core_error_1 = New Alerts lookup failed
-view_core_loggedOut = Logged out
-view_core_noRecentAlerts = There are no recent alerts to report
-view_core_recentAlerts = There are [{0}] recent alerts - click to go to the recent alerts
report
-view_core_uncaught = グローバルにキャッチされない例外
-view_dashboardManager_deleteFail = Failed to delete dashboard.
-view_dashboardManager_deleted = Successfully deleted dashboard {0}
-view_dashboardManager_error = Failed to save dashboard to server
-view_dashboardManager_saved = Saved dashboard {0} to server
-view_dashboardManager_success = Saved dashboard
-view_dashboard_favorites_error1 = Failed to load favorite Resources.
-view_dashboardsManager_error1 = Failed to add new dashboard
-view_dashboardsManager_message_title_details =
<h1>RHQへようこそ2</h1>\n<p>RHQプロジェクトは抽象化されたプラグインベースのシステム管理スイートで、複数のプロダクトやプラットフォームに対してコア機能を横断的に適用できる拡張可能で、統合化されたシステム管理を提供します。このプロジェクトはレイヤ化されたモジュールによって設計されていて、デプロイのための柔軟なアーキテクチャを提供します。それは企業全体に対する監査と履歴の管理を提供するコアとなるユーザーインタフェースを導入します。サーバー/エージェントアーキテクチャはリモートでの管理と特定プロダクトのサポートを実現するプラグインを提供します。
</p>\n <p>このデフォルトのダッシュボードは上の「編集モード」ボタンをすることで編集可能です。</p>
-view_dashboards_confirm1 = Are you sure you want to delete
-view_dashboards_portlets_refresh_fail1 = Failed to update interval for portlets that
auto-refresh
-view_dashboards_portlets_refresh_fail2 = Failed to disable reload for portlets that
auto-refresh
-view_dashboards_portlets_refresh_multiple_min = {0} minutes
-view_dashboards_portlets_refresh_none = No Refresh
-view_dashboards_portlets_refresh_one_min = 1 minute
-view_dashboards_portlets_refresh_success1 = Updated interval for portlets that
auto-refresh
-view_dashboards_portlets_refresh_success2 = Stopping reload for portlets that
auto-refresh
-view_dashboards_title = ダッシュボード
-view_dynagroup_children = DynaGroup Children
-view_dynagroup_compatible = Compatible
-view_dynagroup_definitionAlreadyExists = A group definition already exists with this
name
-view_dynagroup_definitionCreated = You have successfully created a group definition named
[{0}]
-view_dynagroup_definitionLoadFailure = Failed to load group definitions
-view_dynagroup_definitions = DynaGroup Definitions
-view_dynagroup_deleteFailureSelection = Failed to delete the selected group definitions
-view_dynagroup_deleteSuccessfulSelection = You have successfully deleted [{0}] group
definitions
-view_dynagroup_editing = Editing [{0}]
-view_dynagroup_exprBuilder_addExpression = Add Expression
-view_dynagroup_exprBuilder_comparisonType = Comparison Type
-view_dynagroup_exprBuilder_comparisonType_contains = contains
-view_dynagroup_exprBuilder_comparisonType_endsWith = ends with
-view_dynagroup_exprBuilder_comparisonType_equals = equals
-view_dynagroup_exprBuilder_comparisonType_startsWith = starts with
-view_dynagroup_exprBuilder_comparisonType_tooltip = Comparison Type
-view_dynagroup_exprBuilder_definingPlugin = Defining Plugin
-view_dynagroup_exprBuilder_definingPlugin_tooltip = The plugin to search
-view_dynagroup_exprBuilder_expression = Expression
-view_dynagroup_exprBuilder_expressionType = Expression Type
-view_dynagroup_exprBuilder_expressionType_pluginConfig = Plugin Configuration
-view_dynagroup_exprBuilder_expressionType_resource = Resource
-view_dynagroup_exprBuilder_expressionType_resourceCategory = Resource Category
-view_dynagroup_exprBuilder_expressionType_resourceConfig = Resource Configuration
-view_dynagroup_exprBuilder_expressionType_resourceType = Resource Type
-view_dynagroup_exprBuilder_expressionType_tooltip = The type of property this expression
switches on:<br/> <b>Resource</b>: A resource property such as its name
or version<br/> <b>Resource Type</b>: Search for resources of a specific
type<br/> <b>Resource Category</b>: Search for resources by category:
platform, server, service<br/> <b>Trait</b>: Resources that have
selected values for a monitored trait<br/> <b>Plugin Configuration</b>:
Search by the plugin component configuration setting of the component<br/>
<b>Resource Configuration</b>: Search by the configuration setting of the
managed resource
-view_dynagroup_exprBuilder_expressionType_trait = Trait
-view_dynagroup_exprBuilder_expression_tooltip = This is the full expression that is
represented by the selections in the form below. This text will be added to your group
definition expression text when you click the "Add Expression" button.
-view_dynagroup_exprBuilder_groupBy = Group by
-view_dynagroup_exprBuilder_groupBy_tooltip = GroupBy will cause the system to pivot on
the values from the entered expressions creating a separate group for each value. For
example, GroupBy on the cluster name to create a group for each cluster with all cluster
members in it.
-view_dynagroup_exprBuilder_noPlugins = --No plugins--
-view_dynagroup_exprBuilder_noProperties = --No properties--
-view_dynagroup_exprBuilder_noResourceTypes = --No resource types--
-view_dynagroup_exprBuilder_pluginLoadFailure = Cannot get the list of plugins
-view_dynagroup_exprBuilder_propLoadFailure = Cannot get list of properties
-view_dynagroup_exprBuilder_propertyName = Property Name
-view_dynagroup_exprBuilder_propertyName_tooltip = The name of the property to query. This
is defined by the expression type as well as the resource type.
-view_dynagroup_exprBuilder_resTypeLoadFailure = Cannot get list of resource types for
plugin [{0}]
-view_dynagroup_exprBuilder_resource = Resource
-view_dynagroup_exprBuilder_resourceType = Resource Type
-view_dynagroup_exprBuilder_resourceType_tooltip = The type of resource
-view_dynagroup_exprBuilder_resource_child = Child
-view_dynagroup_exprBuilder_resource_grandparent = Grandparent
-view_dynagroup_exprBuilder_resource_greatGrandparent = GreatGrandparent
-view_dynagroup_exprBuilder_resource_greatGreatGrandparent = GreatGreatGrandparent
-view_dynagroup_exprBuilder_resource_parent = Parent
-view_dynagroup_exprBuilder_resource_resource = Resource
-view_dynagroup_exprBuilder_resource_tooltip = Choose the level of the resource you wish
to select. For example, select "parent" will find resources whose parent
resource matches the rest of the expression.
-view_dynagroup_exprBuilder_title = Expression Builder
-view_dynagroup_exprBuilder_unset = Unset
-view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the "=" operator because
of how databases store and query data.
-view_dynagroup_exprBuilder_value_tooltip = The string value for the expression to query
-view_dynagroup_expression = Expression
-view_dynagroup_expressionBuilderIconTooltip = Expression Builder...
-view_dynagroup_expressionSet = Expression Set
-view_dynagroup_lastCalculationTime = Last Calculation Time
-view_dynagroup_loadDefinitionFailure = Failed to load group definition [{0}]
-view_dynagroup_loadDefinitionMissing = There is no group definition with the ID of [{0}]
-view_dynagroup_mixed = Mixed
-view_dynagroup_newGroupDefinition = New Group Definition
-view_dynagroup_nextCalculationTime = Next Calculation Time
-view_dynagroup_permDenied = You do not have permission to view group definitions
-view_dynagroup_recalcFailure = Failed to recalculated this group definition
-view_dynagroup_recalcFailureSelection = Failed to recalculated the selected group
definitions
-view_dynagroup_recalcSuccessful = You have successfully recalculated this group
definition
-view_dynagroup_recalcSuccessfulSelection = You have successfully recalculated [{0}] group
definitions
-view_dynagroup_recalculate = Recalculate
-view_dynagroup_recalculationInterval = Recalculation Interval (ms)
-view_dynagroup_recursive = Recursive
-view_dynagroup_saveAndRecalculate = Save & Recalculate
-view_dynagroup_saveFailure = Failed to save the group definition named [{0}]
-view_dynagroup_saveSuccessful = You have successfully saved the group definition named
[{0}]
-view_dynagroup_singleSaveFailure = An error occurred - there should have been one
created, but instead there were [{0}] created
-view_dynagroup_template_customExpression = Custom Expression...
-view_dynagroup_template_downedResources = All resources currently down
-view_dynagroup_template_jbossas4_clusters = JBossAS 4 - Clusters
-view_dynagroup_template_jbossas4_earClusters = JBossAS 4 - Clustered EARs
-view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - All hosting any version of
"my" app
-view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - All non-secured
-view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - Unique versions
-view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - Clusters
-view_dynagroup_template_platforms = Platform resources in inventory
-view_dynagroup_template_uniqueResourceTypes = Unique resource types in inventory
-view_groupConfigEdit_member = Member
-view_groupConfigEdit_noListProps = List properties are not currently supported for group
configurations.
-view_groupConfigEdit_setAll = Set all values to:
-view_groupConfigEdit_tooltip_1 = Member values differ - click icon to edit them.
-view_groupConfigEdit_unset = Unset
-view_groupConfigEdit_valsDiff = member values differ
-view_groupConfigEdit_valsDiffForProp = Member Values for Property [{0}]
-view_groupCreateWizard_createFailure = Failed to create the resource group
-view_groupCreateWizard_createStepName = Group Settings
-view_groupCreateWizard_createStep_recursive = Recursive
-view_groupCreateWizard_createSuccessful_concise = You have created a new resource group.
[<a href="{0}">View Group</a>]
-view_groupCreateWizard_createSuccessful_full = You have created a new [{0}] resource
group with the name [{1}] that contains [{2}] member resources
-view_groupCreateWizard_membersStepName = Select Members
-view_groupCreateWizard_title = グループ生成
-view_groupCreateWizard_windowTitle = グループ生成
-view_groupInventoryMembers_button_updateMembership = Update Membership...
-view_groupInventoryMembers_title_updateMembership = Update Membership
-view_group_detail_failLoad = Failed to load group for group with ID [{0}]
-view_group_detail_failLoadComp = Failed to load group composite for group with ID [{0}]
-view_group_detail_failRecursiveChange = Failed to update the recursive setting for group
[{0}]
-view_group_detail_recursiveChange = You successfully changed the recursive setting for
group [{0}]
-view_group_inventory_activity_no_recent_metrics = This group has no recent metrics
-view_group_meas_schedules_title = Group Metric Collection Schedules
-view_group_membership_failFetch = Failed to fetch Resource Group
-view_group_membership_saveFailure = Failed to update membership of group [{0}]
-view_group_membership_saveSuccessful = You have updated the membership of group [{0}]
-view_group_operationScheduleDetails_failedToLoadMembers = Failed to load group member
Resources.
-view_group_operationScheduleDetails_field_execute = Execute
-view_group_operationScheduleDetails_field_haltOnFailure = Halt on Failure?
-view_group_operationScheduleDetails_memberResource = Member Resource
-view_group_operationScheduleDetails_value_parallel = in parallel
-view_group_operationScheduleDetails_value_sequential = in the order specified below (drag
and drop member Resources to change order)
-view_group_pluginConfig_edit_currentGroupProperties = Current Group Properties
-view_group_pluginConfig_edit_invalid = The following connection setting properties have
invalid values and must be corrected before the connection settings can be saved: [{0}]
-view_group_pluginConfig_edit_noperm = You do not have permission to edit this group
connection settings
-view_group_pluginConfig_edit_saveFailure = Failed to initiate group connection setting
update for [{0}] compatible group named [{1}]
-view_group_pluginConfig_edit_saveInitiated_concise = The group connection setting updates
have been initiated
-view_group_pluginConfig_edit_saveInitiated_full = The group connection setting updates
have been initiated for the [{0}] compatible group named [{1}]
-view_group_pluginConfig_edit_saveTooltip = Update the connection settings of all group
members
-view_group_pluginConfig_edit_valid = All connection setting properties have valid values,
so the connection settings can now be saved
-view_group_pluginConfig_members_fetchFailure = Failed to get plugin config update history
for members of group [{0}]
-view_group_pluginConfig_members_fetchFailureConn = Failed to retrieve member connection
settings for [{0}]
-view_group_pluginConfig_members_fetchFailureConnInProgress = A group plugin configuration
update is currently in progress. You must wait until the update is finished before you can
view the group settings.
-view_group_pluginConfig_members_statusDetails = Status Details
-view_group_pluginConfig_members_statusFailure = This configuration update failed for an
unknown reason
-view_group_pluginConfig_members_statusInprogress = This configuration update is still in
progress
-view_group_pluginConfig_members_statusNochange = No changes were made to this
configuration
-view_group_pluginConfig_members_statusSuccess = This configuration update was successful
-view_group_pluginConfig_members_title = Group Connection Settings Member Histories
-view_group_pluginConfig_table_clickStatusIcon = Click the status icon for full details
-view_group_pluginConfig_table_deleteFailure = Failed to delete group plugin config
history
-view_group_pluginConfig_table_deleteSuccessful = You have deleted [{0}] history items
-view_group_pluginConfig_table_failFetch = Failed to get group plugin config history
-view_group_pluginConfig_table_msg1 = View Member History for status of each individual
resource
-view_group_pluginConfig_table_statusDetails = Status Details
-view_group_pluginConfig_table_statusFailure = This group configuration update failed
-view_group_pluginConfig_table_statusInprogress = This group configuration update is still
in progress
-view_group_pluginConfig_table_statusNochange = No changes were made to this group
configuration
-view_group_pluginConfig_table_statusSuccess = This group configuration update was
successful
-view_group_pluginConfig_table_title = Group Connection Settings History
-view_group_pluginConfig_table_viewMemberHistory = View Member History
-view_group_pluginConfig_table_viewSettings = View Settings
-view_group_pluginConfig_view_groupProperties = Group Properties
-view_group_pluginConfig_view_noperm = You do not have permissions to see the connection
settings
-view_group_resConfig_edit_invalid = The following configuration properties have invalid
values and must be corrected before the configuration can be saved: [{0}]
-view_group_resConfig_edit_loadFail = Failed to retrieve member Resource configurations
for [{0}]
-view_group_resConfig_edit_noperm = You do not have permission to edit this group
configuration
-view_group_resConfig_edit_saveFailure = Failed to initiate group configuration update for
[{0}] compatible group named [{1}]
-view_group_resConfig_edit_saveInitiated_concise = The group configuration updates have
been initiated
-view_group_resConfig_edit_saveInitiated_full = The group configuration updates have been
initiated for the [{0}] compatible group named [{1}]
-view_group_resConfig_edit_saveTooltip = Update the configurations of all group members
-view_group_resConfig_edit_valid = All configuration properties have valid values, so the
configuration can now be saved
-view_group_resConfig_members_fetchFailure = Failed to get resource config update history
for members of group [{0}]
-view_group_resConfig_members_fetchFailureConfig = Failed to retrieve member resource
configuration settings for [{0}]
-view_group_resConfig_members_fetchFailureConfigInProgress = A group resource
configuration update is currently in progress. You must wait until the update is finished
before you can view the group settings.
-view_group_resConfig_members_statusDetails = Status Details
-view_group_resConfig_members_statusFailure = This configuration update failed for an
unknown reason
-view_group_resConfig_members_statusInprogress = This configuration update is still in
progress
-view_group_resConfig_members_statusNochange = No changes were made to this configuration
-view_group_resConfig_members_statusSuccess = This configuration update was successful
-view_group_resConfig_members_title = Group Resource Configuration Member Histories
-view_group_resConfig_table_clickStatusIcon = Click the status icon for full details
-view_group_resConfig_table_deleteFailure = Failed to delete group resource config
history
-view_group_resConfig_table_deleteSuccessful = You have deleted [{0}] history items
-view_group_resConfig_table_failFetch = Failed to get group resource config history
-view_group_resConfig_table_msg1 = View Member History for status of each individual
resource
-view_group_resConfig_table_statusDetails = Status Details
-view_group_resConfig_table_statusFailure = This group configuration update failed
-view_group_resConfig_table_statusInprogress = This group configuration update is still in
progress
-view_group_resConfig_table_statusNochange = No changes were made to this group
configuration
-view_group_resConfig_table_statusSuccess = This group configuration update was
successful
-view_group_resConfig_table_title = Group Resource Configuration History
-view_group_resConfig_table_viewMemberHistory = View Member History
-view_group_resConfig_table_viewSettings = View Settings
-view_group_resConfig_view_groupProperties = Group Properties
-view_group_resConfig_view_noperm = You do not have permissions to see the resource
configuration settings
-view_group_summary_compatible = Compatible
-view_group_summary_descUpdateFailure = Failed to change the description of the resource
group with ID [{0}]
-view_group_summary_descUpdateSuccessful = You have changed the description of this
resource group
-view_group_summary_dynamic = Dynamic
-view_group_summary_dynamicNote = Dynamic group names and descriptions are managed, and
therefore are not editable
-view_group_summary_groupDefinition = Group Definition
-view_group_summary_memberCount = Member Count
-view_group_summary_memberType = Member Type
-view_group_summary_mixed = Mixed
-view_group_summary_nameUpdateFailure = Failed to change the name of the resource group
with ID [{0}] - could not change from [{1}] to [{2}]
-view_group_summary_nameUpdateSuccessful = You have changed the name of the resource group
with ID [{0}] from [{1}] to [{2}]
-view_group_summary_recursive = Recursive
-view_helpTop_description = このセクションはドキュメンテーション、チュートリアル、バージョン、その他のヘルプ情報を提供します。
-view_help_section_product = プロダクト
-view_help_section_product_about = RHQについて
-view_inventory_adq = ディスカバリキュー
-view_inventory_allGroups = すべてのグループ
-view_inventory_allResources = すべてのリソース
-view_inventory_collectionInterval = コレクション間隔
-view_inventory_dynagroupDefs = 動的グループ定義
-view_inventory_eventDetails_loadFailed = An error occurred loading the event details
-view_inventory_eventHistory_deleteFailed = Failed to deleted selected events for [{0}]
-view_inventory_eventHistory_deleteSuccessful = You have successfully deleted [{0}] events
for [{1}]
-view_inventory_eventHistory_details = Details
-view_inventory_eventHistory_detailsFilter = Details Filter
-view_inventory_eventHistory_groupEventHistory = Group Event History
-view_inventory_eventHistory_purgeFailed = Failed to purge events for [{0}]
-view_inventory_eventHistory_purgeSuccessful = You have successfully purged [{0}] events
for [{1}]
-view_inventory_eventHistory_resourceEventHistory = Resource Event History
-view_inventory_eventHistory_severity = Severity
-view_inventory_eventHistory_severityFilter = Severity Filter
-view_inventory_eventHistory_sourceFilter = Source Filter
-view_inventory_eventHistory_sourceLocation = Source Location
-view_inventory_eventHistory_timestamp = Timestamp
-view_inventory_groups = グループ
-view_inventory_groups_children = Children
-view_inventory_groups_deleteFailed = Failed to delete the selected resource groups
-view_inventory_groups_deleteSuccessful = You have successfully deleted the selected
resource groups
-view_inventory_groups_descendants = Descendants
-view_inventory_groups_loadFailed = Failed to load group composite data
-view_inventory_groups_resourceGroups = Resource Groups
-view_inventory_mixed = mixed
-view_inventory_platforms = プラットフォーム
-view_inventory_problemGroups = 問題グループ
-view_inventory_resource_loadFailed = Resource with id [{0}] does not exist or is not
accessible
-view_inventory_resources_deleteConfirm = Are you sure you want to delete the selected
resources?
-view_inventory_resources_deleteFailed = Failed to delete the selected resources
-view_inventory_resources_deleteSuccessful = You have successfully deleted the selected
resources
-view_inventory_resources_loadFailed = Failed to load resource composite data
-view_inventory_resources_title = リソース
-view_inventory_resources_title_children = 子リソース
-view_inventory_resources_title_members = メンバーリソース
-view_inventory_resources_uninventoryConfirm = Are you sure you want to uninventory the
selected resources? Note that if a selected resource still exists, then it will get
rediscovered during its agent''s next discovery scan.
-view_inventory_resources_uninventoryFailed = Failed to uninventory the selected
resources
-view_inventory_resources_uninventorySuccessful = You have successfully uninventoried the
selected resources
-view_inventory_sectionHelp =
このセクションにおいて、新規に発見されたリソース、インベントリに登録されたリソース、グループの表示と管理がおこなわれます。
-view_inventory_servers = サーバー
-view_inventory_services = サービス
-view_inventory_summary_agent_error1 = Failed to locate agent managing resource id
-view_inventory_summary_agent_error2 = Failed to ping agent managing resource id
-view_inventory_summary_agent_error3 = You do not have permission to view details for this
Agent.
-view_inventory_summary_agent_fullEnpoint = Full Endpoint
-view_inventory_summary_agent_fullEnpoint_err1 = !No remote endpoint associated with this
resource!
-view_inventory_summary_agent_last_title = Last Received Availability Report
-view_inventory_summary_agent_status_title = Agent Communications Status
-view_inventory_summary_agent_title = Agent Managing this Resource
-view_inventory_unavailableServers = 利用不能サーバー
-view_leftNav_unknownPage = Unknown page name [{0}] for section [{1}] - URL is invalid.
-view_login_invalidEmail = Invalid e-mail address
-view_login_login = ログイン
-view_login_logout = ログアウト
-view_login_noBackend = The backend datasource is unavailable.
-view_login_noLdap = Note: Optional retrieval of ldap details unsuccessful. Manual entry
is required.
-view_login_noUser = The username or password provided does not match our records.
-view_login_prompt = ログインしてください
-view_login_registerLater = (Cancel - Complete registration later.)
-view_login_registerLdapSuccess = Successfully registered the new LDAP User.
-view_login_registerUser = Register User
-view_login_welcome = ようこそ
-view_login_welcomeMsg = Welcome to RHQ! <br/><br/> Enter/update the following
fields to complete your registration process.<br/> Once you click "OK",
you will be logged in.<br/><br/>
-view_measureRange_last = Time Range - Previous
-view_measureRange_simple = Simple...
-view_measureRange_start = Time Range - Start
-view_measureTable_chartMetricValues = Chart Selected Metrics
-view_measureTable_getLive = Get Live Value
-view_measureTable_getLive_failure = Cannot get live values for those metrics. Make sure
the agent is running and the managed resource is up.
-view_measureTable_live_title = ライブデータ
-view_measure_nan = --no data available--
-view_measurementOob_title = 疑わしいメトリックス
-view_menuBar_logout = ログアウト
-view_messageCenter_clearAllMessages = Clear All Messages
-view_messageCenter_lastNMessages = Last {0} Messages
-view_messageCenter_maxMessages = Max Messages
-view_messageCenter_messageBarShowDetails = Show Details
-view_messageCenter_messageDetail = Detail
-view_messageCenter_messageSeverity = Severity
-view_messageCenter_messageTime = Time
-view_messageCenter_messageTitle = メッセージセンター
-view_messageCenter_noRecentMessages = No Recent Messages
-view_messageCenter_stackTraceFollows = --- STACK TRACE FOLLOWS ---
-view_metric_traits = Traits
-view_metric_viewTraitHistory = Value History for Trait [{0}]
-view_operationHistoryDetails_dateCompleted = 完了日
-view_operationHistoryDetails_dateSubmitted = 発行日
-view_operationHistoryDetails_error_fetchFailure = Failure loading operation history.
-view_operationHistoryDetails_noResults = This operation does not return any results.
-view_operationHistoryDetails_operation = オペレーション
-view_operationHistoryDetails_parameters = パラメータ
-view_operationHistoryDetails_requestor = 要求者
-view_operationHistoryDetails_results = 結果
-view_operationHistoryDetails_status = ステータス
-view_operationHistoryList_button_forceDelete = Force Delete
-view_operationHistoryList_button_runOperation = Run Operation
-view_operationHistoryList_notYetStarted = not yet started
-view_operationHistoryList_title = オペレーション履歴
-view_operationScheduleDetails_enterParametersBelow = Enter parameters below...
-view_operationScheduleDetails_fieldDefault_description = Select an operation to see its
description.
-view_operationScheduleDetails_fieldDefault_parameters = Select an operation to see its
parameters.
-view_operationScheduleDetails_fieldHelp_description = an optional description of this
scheduled operation (e.g. nightly maintenance app server restart)
-view_operationScheduleDetails_fieldHelp_timeout = a time duration - if specified, if the
duration elapses before a scheduled operation execution has completed, the RHQ Server will
timeout the operation and consider it to have failed; note, it is usually not possible to
abort the underlying managed resource operation if it was already initiated
-view_operationScheduleDetails_field_description = 説明
-view_operationScheduleDetails_field_parameters = パラメータ
-view_operationScheduleDetails_field_timeout = タイムアウト
-view_operationScheduleDetails_noParameters = This operation does not take any
parameters.
-view_operationScheduleDetails_operationSchedule = オペレーションスケジュール
-view_portlet_autodiscovery_setting_platforms = discovered platforms
-view_portlet_configure_definitionDesc = The configuration settings for the portlet.
-view_portlet_configure_definitionTitle = Portlet Configuration
-view_portlet_configure_needed = Click the Settings button to configure this portlet.
-view_portlet_configure_notNeeded = Configuration is not necessary for this portlet.
-view_portlet_defaultName_autodiscovery = ディスカバリキュー
-view_portlet_defaultName_favoriteResources = お気に入りリソース
-view_portlet_defaultName_groupMetric = Resource Group Metric Graph
-view_portlet_defaultName_group_alerts = グループ: アラート
-view_portlet_defaultName_group_bundles = グループ: バンドルデプロイ
-view_portlet_defaultName_group_config_updates = グループ: 構成の更新
-view_portlet_defaultName_group_events = グループ: イベント数
-view_portlet_defaultName_group_metrics = グループ: メトリックス
-view_portlet_defaultName_group_oobs = グループ: OOB 条件
-view_portlet_defaultName_group_operations = グループ: オペレーション
-view_portlet_defaultName_group_pkg_hisory = グループ: パッケージ履歴
-view_portlet_defaultName_inventorySummary = インベントリサマリ
-view_portlet_defaultName_mashup = マッシュアップ
-view_portlet_defaultName_message = メッセージ
-view_portlet_defaultName_operations = 最近のオペレーション
-view_portlet_defaultName_platformSummary = プラットフォーム利用率
-view_portlet_defaultName_problemResources = アラートまたは利用できないリソース
-view_portlet_defaultName_recentAlerts = 最近のアラート
-view_portlet_defaultName_recentlyAddedResources = 最近追加されたリソース
-view_portlet_defaultName_resourceMetric = Resource Metric Graph
-view_portlet_defaultName_resource_alerts = リソース: アラート
-view_portlet_defaultName_resource_bundles = リソース: バンドルデプロイ
-view_portlet_defaultName_resource_config_updates = リソース: 構成の更新
-view_portlet_defaultName_resource_events = リソース: イベント数
-view_portlet_defaultName_resource_metrics = リソース: 測定
-view_portlet_defaultName_resource_oobs = リソース: OOB メトリックス
-view_portlet_defaultName_resource_operations = リソース: オペレーション
-view_portlet_defaultName_resource_pkg_hisory = リソース: パッケージ履歴
-view_portlet_defaultName_tagCloud = タグ数
-view_portlet_factory_invalidPortlet = This is an obsolete portlet that is no longer
valid. Please delete it.
-view_portlet_graph_configure_metricDefinition_graph = The metric definition id to graph
-view_portlet_graph_configure_resource_graph = The resource to graph
-view_portlet_help_autodiscovery = This portlet allows import or ignore of newly
discovered resources. Imported resources are added to inventory for monitoring and
management. Ignored resources are not imported and are hidden from view unless explicitly
unignored.
-view_portlet_help_bundle_deps = This portlet shows relevant bundle deployments based on
display criteria configured.
-view_portlet_help_config_updates = This portlet displays recent configuration changes
consistent with configuration settings.
-view_portlet_help_eventcounts = This portlet displays Event counts consistent with
display criteria configured.
-view_portlet_help_favoriteResources = This portlet displays the current user''s
favorite resources.
-view_portlet_help_graph = This portlet displays the resource metric graph.
-view_portlet_help_inventorySummary = This portlet displays a short summary of the current
user''s viewable inventory and metric collection rate.
-view_portlet_help_mashup = This portlet displays the returned content of a remote HTTP
request (via an iframe).
-view_portlet_help_message = This portlet displays a static HTML message. The
<i>message</i> property must be configured.
-view_portlet_help_metrics = This portlet graphs relevant recent metric data based on
display criteria configured.
-view_portlet_help_none = There is no help available for this portlet.
-view_portlet_help_oobs = This portlet displays OOB(Out of Bound) metric conditions.
-view_portlet_help_operations = This portlet displays the most recently executed
operations for the current user''s inventory.
-view_portlet_help_operations_criteria = This portlet displays Operations consistent with
display criteria configured.
-view_portlet_help_pkg_history = This portlet shows relevant package history based on
display criteria configured.
-view_portlet_help_platformSummary = This portlet displays utilization data (such as
current CPU and memory usage) for platform resources that are accessible by the current
user.
-view_portlet_help_problemResources = This portlet displays the current user''s
alerted or unavailable resources.
-view_portlet_help_recentAlerts = This portlet displays alerts recently fired on the
current user''s viewable inventory.
-view_portlet_help_recentlyAdded = This portlet displays resources that have recently been
imported into inventory.
-view_portlet_help_scheduledOperations = This portlet displays the next scheduled
operations for the current user''s inventory.
-view_portlet_help_tagCloud = This portlet displays the relative tag counts for the
current user''s inventory.
-view_portlet_inventory_error1 = Failed to retrieve inventory summary
-view_portlet_inventory_tooltip_collapse = Click to hide details for this resource.
-view_portlet_inventory_tooltip_expand = Click to show more details for this resource.
-view_portlet_message_title = The message to display.
-view_portlet_operations_config_completed = completed operations
-view_portlet_operations_config_completed_enable = Whether to enable completed operations
results grouping for dashboard.
-view_portlet_operations_config_completed_maximum = Maximum number of Completed operations
to display.
-view_portlet_operations_config_scheduled_enable = Whether to enable scheduled operations
results grouping for dashboard.
-view_portlet_operations_config_scheduled_maximum = Maximum number of Scheduled operations
to display.
-view_portlet_operations_config_show_last = show Last
-view_portlet_operations_config_show_next = show Next
-view_portlet_operations_disabled = (Results currently disabled. Change settings to enable
results.
-view_portlet_platform_platform_error_1 = Failed to load platform metrics
-view_portlet_platform_type_error_1 = Could not load type data
-view_portlet_problemResources_config_display_maximum = Maximum number of Problem
resources to display.
-view_portlet_problemResources_config_display_range = Show problem resources going back
this many hours.
-view_portlet_problemResources_config_display_range2 = From {0} to {1}
-view_portlet_problemResources_maxDisplaySetting = maximum resources.
-view_portlet_recentAlerts_config_members = Select Members
-view_portlet_recentAlerts_config_priority_label = priority Alerts,
-view_portlet_recentAlerts_config_when = within the past
-view_portlet_recentAlerts_fail_msg = Failed to load resources assigned for alert
filtering.
-view_portlet_recentlyAdded_error1 = Failed to load recently added resources
-view_portlet_recentlyAdded_setting_addedPlatforms = recently added platforms
-view_portlet_results_empty = 指定されたクライテリアの結果は見つかりません
-view_remoteAgentInstall_agentStatus = エージェントのステータス
-view_remoteAgentInstall_agentStatusDefault = -ステータスの更新ボタンをクリックしてください-
-view_remoteAgentInstall_buttonFindAgent = エージェントの発見
-view_remoteAgentInstall_connInfo = 接続情報
-view_remoteAgentInstall_error_1 = Error occurred while trying to find agent install path
-view_remoteAgentInstall_error_2 = Could not find an agent installed when looking in
common locations
-view_remoteAgentInstall_error_3 = Could not find an agent installed at or under [{0}]
-view_remoteAgentInstall_error_4 = Failed to install agent
-view_remoteAgentInstall_error_5 = Failed to start agent
-view_remoteAgentInstall_error_6 = Failed to stop agent
-view_remoteAgentInstall_installAgent = エージェントのインストール
-view_remoteAgentInstall_installInfo = エージェントのインストール情報
-view_remoteAgentInstall_installPath = エージェントのインストールパス
-view_remoteAgentInstall_owner = オーナー
-view_remoteAgentInstall_promptHost = The host where the agent is or will be installed
-view_remoteAgentInstall_promptInstallPath = Where the agent is or will be installed. If
you aren''t sure where an agent is installed, enter a parent directory and click
the ''Find Agent'' button to scan that directory and below. If you enter
an empty path, common locations are searched on the host for an agent install.
-view_remoteAgentInstall_promptPassword = The credentials that are used to authenticate
the user on the host via SSH
-view_remoteAgentInstall_promptPort = The port the SSH server is listening to. If not
specified, the default is 22
-view_remoteAgentInstall_promptUser = The name of the user whose credentials are passed to
the host via SSH
-view_remoteAgentInstall_result = Result
-view_remoteAgentInstall_resultCode = ResultCode
-view_remoteAgentInstall_startAgent = エージェントの起動
-view_remoteAgentInstall_startAgentResults = Agent start results: [{0}]
-view_remoteAgentInstall_step = ステップ
-view_remoteAgentInstall_stopAgent = エージェントの停止
-view_remoteAgentInstall_stopAgentResults = Agent stop results: [{0}]
-view_remoteAgentInstall_success = Agent installation complete
-view_remoteAgentInstall_updateStatus = スタータスの更新
-view_reportsTop_description = このセクションはグローバルレポートへのアクセスを提供します。
-view_reportsTop_title = レポート
-view_reports_alertDefinitions = アラート定義
-view_reports_alertDefinitions_parentHover = Click to go to the parent alert definition
-view_reports_alertDefinitions_resTypeLoadError = Cannot get the template resource type -
unable to view the alert template.
-view_reports_inventorySummary_failFetch = Failed to get inventory summary
-view_reports_platforms = プラットフォーム利用率
-view_reports_subsystems = サブシステム
-view_resourceResourceGroupList_error_fetchFailure = Failed to fetch Resource''s
groups.
-view_resourceResourceGroupList_error_updateFailure = Failed to update assigned Resource
groups.
-view_resourceResourceGroupList_message_updateSuccess = Group membership updated for
[{0}].
-view_resource_inventory_activity_changed_by = Changed by
-view_resource_inventory_activity_criteria_no_recent_events = 表示クライテリアに基づくイベントはありません
-view_resource_inventory_activity_no_recent_alerts = No recent alerts
-view_resource_inventory_activity_no_recent_bundle_deploy = No recent bundle deployments
-view_resource_inventory_activity_no_recent_config_history = No configuration change
history
-view_resource_inventory_activity_no_recent_events = No events in the last 24 hours
-view_resource_inventory_activity_no_recent_metrics = This resource has no recent metrics
-view_resource_inventory_activity_no_recent_oob = OOBの条件はみつかりません
-view_resource_inventory_activity_no_recent_operations = No recent operation history
-view_resource_inventory_activity_no_recent_pkg_history = No recent package history
-view_resource_inventory_childhistory_createdChild = Created Child
-view_resource_inventory_childhistory_deletedChild = Deleted Child
-view_resource_inventory_childhistory_filterTitle = Past N Days
-view_resource_inventory_childhistory_status_invalidArtifact = Invalid Artifact
-view_resource_inventory_childhistory_status_invalidConfig = Invalid Configuration
-view_resource_monitor_availability_loadFailed = Failed to load availability history
-view_resource_monitor_calltime_average = Average
-view_resource_monitor_calltime_count = Count
-view_resource_monitor_calltime_destination = Call Destination
-view_resource_monitor_calltime_editFailed = Call time data can not be edited
-view_resource_monitor_calltime_loadFailed = Could not load call time data
-view_resource_monitor_calltime_lookupFailed = Could not load resource for call time
-view_resource_monitor_calltime_maximum = Maximum
-view_resource_monitor_calltime_minimum = Minimum
-view_resource_monitor_calltime_title = Call Time Data
-view_resource_monitor_calltime_total = Total
-view_resource_monitor_detailed_graph_label = Detailed Graph
-view_resource_monitor_graph_instructions = Point your mouse to a data point on the chart
-view_resource_monitor_graph_live_tooltip = Click for a live graph of current values
-view_resource_monitor_graphs_loadFailed = Failed to load graph data
-view_resource_monitor_graphs_lookupFailed = Failed to find resource for graph
-view_resource_monitor_graphs_noneAvailable = No graphs available
-view_resource_monitor_schedules_title = Resource Metric Collection Schedules
-view_resource_monitor_table_alerts = アラート
-view_resource_monitor_table_avg = Average
-view_resource_monitor_table_last = Last
-view_resource_monitor_table_max = Maximum
-view_resource_monitor_table_min = Minimum
-view_resource_title_component_errors_tooltip = Shows managed component errors. Click for
details
-view_resource_title_tagUpdateFailed = Failed to update resource tags
-view_searchBar_defaultPattern = name your pattern
-view_searchBar_error_selectSavedSearch = ''Error selecting saved
search''
-view_searchBar_query = Query
-view_searchBar_resourceGroups = リソースグループ
-view_searchBar_resources = リソース
-view_searchBar_welcomeMessage = search for {0}s
-view_searchGUI_loginStatus = Unable to determine login status, check server status
-view_selector_assigned = Assigned {0}
-view_selector_available = Available {0}
-view_subTab_error_disabled = Cannot select disabled subTab [{0}].
-view_summaryDashboard_resetConfirm = Reset to default summary dashboard (lose local
changes)?
-view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of
Resource with id {0} from [{1}] to [{2}].
-view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of
Resource with id {0} from [{1}] to [{2}].
-view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with
id {0} from [{1}] to [{2}].
-view_summaryOverviewForm_error_traitsLoadFailure = Failed to load traits for {0}.
-view_summaryOverviewForm_field_description = 説明
-view_summaryOverviewForm_field_location = 場所
-view_summaryOverviewForm_field_name = 名前
-view_summaryOverviewForm_field_type = タイプ
-view_summaryOverviewForm_field_version = バージョン
-view_summaryOverviewForm_header_summary = サマリ
-view_summaryOverviewForm_label_plugin = プラグイン:
-view_summaryOverviewForm_label_type = タイプ:
-view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with
id {0} was changed from [{1}] to [{2}].
-view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0}
was changed from [{1}] to [{2}].
-view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was
changed from [{1}] to [{2}].
-view_summaryOverview_header_detectedErrors = 検出済みエラー
-view_summaryOverview_title_errorDetailsWindow = エラー詳細
-view_summaryOverview_tooltip_detectedErrors = Click on the rows to see the error
details.
-view_tableSection_backButton = Back to List
-view_tableSection_error_badId = Can not show detail for [{0}]. Illegal 'id':
[{1}]. Please report this bug
-view_tableSection_error_noId = Table [{0}] record is missing 'id' attribute -
please report this bug.
-view_table_drawFail = Failed to draw Table [{0}].
-view_table_matchingRows = 一致した行: {0} (選択済み: {1})
-view_table_totalRows = 合計行: {0} (選択済み: {1})
-view_tabs_common_activity = アクティビティ
-view_tabs_common_agent = エージェント
-view_tabs_common_alerts = アラート
-view_tabs_common_availability = アベイラビリティ
-view_tabs_common_calltime = 呼び出し時間e
-view_tabs_common_child_history = 子の履歴
-view_tabs_common_child_resources = 子リソース
-view_tabs_common_configuration = 構成
-view_tabs_common_connectionSettings = 接続設定
-view_tabs_common_connectionSettingsHistory = 接続設定の履歴
-view_tabs_common_content = コンテント
-view_tabs_common_current = 現在
-view_tabs_common_dashboard = ダッシュボード
-view_tabs_common_definitions = 定義
-view_tabs_common_deployed = デプロイ済み
-view_tabs_common_events = イベント
-view_tabs_common_graphs = グラフ
-view_tabs_common_group_members = グループメンバー
-view_tabs_common_group_membership = グループメンバーシップ
-view_tabs_common_groups = グループ
-view_tabs_common_history = 履歴
-view_tabs_common_inventory = インベントリ
-view_tabs_common_members = メンバー
-view_tabs_common_monitoring = モニタリング
-view_tabs_common_new = 新規
-view_tabs_common_operations = オペレーション
-view_tabs_common_overview = 概要
-view_tabs_common_schedule = スケジュール
-view_tabs_common_schedules = スケジュール
-view_tabs_common_subscriptions = サブスクリプション
-view_tabs_common_summary = サマリ
-view_tabs_common_tables = テーブル
-view_tabs_common_timeline = タイムライン
-view_tabs_common_traits = Traits
-view_tabs_invalidSubTab = Invalid subtab: {0}
-view_tabs_invalidTab = Invalid tab: {0}
-view_tagCloud_deleteTag = Delete Tag
-view_tagCloud_deleteTagFailure = Failed to delete the tag [{0}]
-view_tagCloud_deleteTagSuccess = You successfully deleted the tag [{0}]
-view_tagCloud_error_fetchFailure = Failed to load tags.
-view_tagCloud_error_tagUsedCount = Tag used {0} times.
-view_tagCloud_title = Tag Cloud
-view_taggedResources_title = リソース
-view_tags_error_1 = Failed to load Tags
-view_tags_tags = タグ
-view_tags_tooltip_1 = Click to remove this Tag
-view_tags_tooltip_2 = Click to edit Tags
-view_tags_tooltip_3 = Enter a Tag in the format: (namespace:)(semantic=)tagname (e.g.
it:env=QA, or owner=John)
-view_testTop_description = This section contains pages for testing various GUI
components.
-view_testTop_title = テスト
-view_titleBar_common_addedFav = You have added [{0}] as a favorite
-view_titleBar_common_addedFavFailure = Failed to add [{0}] as a favorite
-view_titleBar_common_clickToAddFav = Click to add this as a favorite
-view_titleBar_common_clickToRemoveFav = Click to remove this as a favorite
-view_titleBar_common_loadTagsFailure = Failed to load the tags for [{0}]
-view_titleBar_common_removedFav = You have removed [{0}] as one of your favorites
-view_titleBar_common_removedFavFailure = Failed to remove [{0}] as one of your favorites
-view_titleBar_common_updateTagsFailure = Failed to update the tags for [{0}]
-view_titleBar_common_updateTagsSuccessful = The tags for [{0}] have been updated
-view_titleBar_group_failInfo = Failed to get general info on group [{0}] with ID [{1}]
-view_titleBar_group_summary_collapsedTooltip = Click to show more details for this group
-view_titleBar_group_summary_expandedTooltip = Click to hide details for this group
-view_tree_common_contextMenu_addChartToDashboard = Add chart to dashboard [{0}]
-view_tree_common_contextMenu_editPluginConfiguration = Edit [{0}] Plugin Configuration
-view_tree_common_contextMenu_editResourceConfiguration = Edit [{0}] Resource
Configuration
-view_tree_common_contextMenu_groupGraph = Group Metric Graph
-view_tree_common_contextMenu_loadFail_children = Failed to load platform manual add
children
-view_tree_common_contextMenu_loadFail_dashboards = Failed to load user dashboards
-view_tree_common_contextMenu_loadFail_group = Failed to load group for context menu
-view_tree_common_contextMenu_loadFailed_dashboard = Failed to load user dashboards
-view_tree_common_contextMenu_loadFailed_manualAddChildren = Failed to load platform
manual add children
-view_tree_common_contextMenu_measurements = Measurements
-view_tree_common_contextMenu_operations = Operations
-view_tree_common_contextMenu_operations_loadFailed = Failure to start wizard for running
operations
-view_tree_common_contextMenu_resourceConfiguration = Resource Configuration
-view_tree_common_contextMenu_resourceGraph = Resource Metric Graph
-view_tree_common_contextMenu_saveChartToDashboardFailure = Failed to save the dashboard
-view_tree_common_contextMenu_saveChartToDashboardSuccessful = You have saved dashboard
[{0}]
-view_tree_common_contextMenu_type_name_label = Type: {0}
-view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group
-view_tree_common_loadFailed_children = Failed to load children for node
-view_tree_common_loadFailed_create = Failed to create view for this node
-view_tree_common_loadFailed_descendants = Failed to load descendants for tree
-view_tree_common_loadFailed_generic = Failed to load data for tree
-view_tree_common_loadFailed_group = Failed to load group with id [{0}]
-view_tree_common_loadFailed_groupTree = Failed to load group tree
-view_tree_common_loadFailed_node = Failed to load data for this node
-view_tree_common_loadFailed_root = Failed to load root for tree
-view_tree_common_loadFailed_selection = Failed to select this node
-view_tree_common_loadFailed_update = Failed to update view for this node
-view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing
group. key: [{0}]
-view_type_parentId = Parent ID
-view_type_resourceTypes = Resource Types
-view_type_typeTreeLoadFailure = Failed to load resource type tree data
-view_upload_alreadyUploaded = File has already been uploaded
-view_upload_bundleDistFile = Distribution File
-view_upload_error_bundleDistFile = Error uploading Bundle Distribution File
-view_upload_error_file = Error uploading file
-view_upload_error_fileName = Error uploading file [{0}]
-view_upload_error_fileName_2 = Error uploading file [{0}], check for invalid file path.
-view_upload_error_packageVersionFile = Error uploading Package Version File
-view_upload_error_results = Error uploading file, unexpected results: [{0}]
-view_upload_inProgress = Can not submit, upload is currently in progress
-view_upload_prompt_1 = Please select a file to upload [{0}]
-view_upload_prompt_2 = File to Upload
-view_upload_success = File successfully uploaded
-view_upload_tooltip_1a = Select a file to upload, then click Upload or Next
-view_upload_tooltip_1b = Select a file to upload, then click Next
-view_upload_tooltip_2 = File upload had previously failed
-view_upload_upload = Upload
-view_upload_uploadFile = UploadFile
-widget_colorPicker_tooltip = Click to select a new color
-widget_durationItem_inputUnitLessThanTargetUnit = Input unit is less than target unit.
-widget_durationItem_unitTypeNotSupported = Unit type [{0}] is not supported by this
DurationItem.
-widget_jobTriggerEditor_fieldHelp_repeatDuration = keep running this operation this many
times or until this amount of time has elapsed
-widget_jobTriggerEditor_fieldHelp_repeatInterval = how often the operation should be
executed
-widget_jobTriggerEditor_fieldHelp_startDelay = start executing the operation after this
amount of time has elapsed
-widget_jobTriggerEditor_field_cronExpression = Cron Expression
-widget_jobTriggerEditor_field_mode = Schedule using
-widget_jobTriggerEditor_field_repeatInterval_later = Repeat every
-widget_jobTriggerEditor_field_repeatInterval_now = Run now and every
-widget_jobTriggerEditor_field_startType = Run
-widget_jobTriggerEditor_message_endTimeMustBeAfterStartTime = End time must be after
start time.
-widget_jobTriggerEditor_message_endTimeMustBeInFuture = End time must be in the future.
-widget_jobTriggerEditor_message_startTimeMustBeInFuture = Start time must be in the
future.
-widget_jobTriggerEditor_tab_examples = Examples
-widget_jobTriggerEditor_tab_format = Format
-widget_jobTriggerEditor_value_calendar = Calendar
-widget_jobTriggerEditor_value_cronExpression = Cron Expression
-widget_jobTriggerEditor_value_for = For
-widget_jobTriggerEditor_value_in = in
-widget_jobTriggerEditor_value_indefinitely = Indefinitely
-widget_jobTriggerEditor_value_later = Later
-widget_jobTriggerEditor_value_laterAndRepeat = Later & Repeat
-widget_jobTriggerEditor_value_now = Now
-widget_jobTriggerEditor_value_nowAndRepeat = Now & Repeat
-widget_jobTriggerEditor_value_on = on
-widget_jobTriggerEditor_value_until = Until
-widget_recordEditor_error_invalidViewPath = Invalid view path: [{0}]
-widget_recordEditor_error_multipleRecords = Multiple records were returned - expected
exactly one.
-widget_recordEditor_error_noRecords = No records were returned - expected exactly one.
-widget_recordEditor_error_operation = Operation failed. An error occurred
-widget_recordEditor_error_operationInvalidValues = Operation failed - one or more fields
have invalid values
-widget_recordEditor_error_permissionCreate = You do not have the permissions required to
create a new [{0}]
-widget_recordEditor_error_unsupportedOperationType = Unsupported operation type: [{0}]
-widget_recordEditor_info_recordCreatedConcise = {0} created.
-widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
-widget_recordEditor_info_recordUpdatedConcise = {0} updated.
-widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
-widget_recordEditor_info_recordsDeletedConcise = {0} {1} deleted.
-widget_recordEditor_info_recordsDeletedDetailed = {0} {1} deleted: {2}.
-widget_recordEditor_label_loading = ロード中...
-widget_recordEditor_title_edit = Edit {0} [{1}]
-widget_recordEditor_title_new = Create New {0}
-widget_recordEditor_title_view = View {0} [{1}]
-widget_recordEditor_warn_validation = One or more fields have invalid values. This [{0}]
cannot be saved until these values are corrected
-widget_resourceFactoryWizard_archPrompt = Package Architecture
-widget_resourceFactoryWizard_configTemplatePrompt = Resource Configuration Templates
-widget_resourceFactoryWizard_contentTemplatePrompt = Deployment Time Configuration
Templates
-widget_resourceFactoryWizard_createSubmit = A request to create a resource with the name
of [{0}] has been submitted successfully.
-widget_resourceFactoryWizard_createSubmitType = A request to create a resource of type
[{0}] has been submitted successfully.
-widget_resourceFactoryWizard_createWizardTitle = Create New Resource of Type [{0}]
-widget_resourceFactoryWizard_createWizardWindowTitle = Resource Create Wizard
-##widget_resourceFactoryWizard_editConfigStepName = Deployment Options
-widget_resourceFactoryWizard_execute1 = Failed to create a new resource - there is no
package version
-widget_resourceFactoryWizard_execute2 = Failed to create a new resource
-widget_resourceFactoryWizard_failedToDeleteVersion = Failed to delete package version
while canceling a resource create
-widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for new
resource
-widget_resourceFactoryWizard_importFailure = Failed to manually import resource
-widget_resourceFactoryWizard_importSubmitted = A request to import a new resource of type
[{0}] has been submitted
-widget_resourceFactoryWizard_importWizardTitle = Import Resource of Type [{0}]
-widget_resourceFactoryWizard_importWizardWindowTitle = Resource Import Wizard
-widget_resourceFactoryWizard_infoStepName = Resource Information
-widget_resourceFactoryWizard_infoStep_loadFail = Failed to get available Architectures
-widget_resourceFactoryWizard_namePrompt = New Resource Name
-widget_resourceFactoryWizard_templatePrompt = Connection Settings Template
-##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the RHQ Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
-widget_resourceFactoryWizard_uploadFailure = Failed to upload file
-widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
-widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can
take several minutes to complete for large distribution files.
-widget_resourceFactoryWizard_versionPrompt = Package Version
-widget_resourceSelector_groupCategory = Group Category
-widget_resourceSelector_pleaseSelectMultipleResource = Please select one or more
resources
-widget_resourceSelector_pleaseSelectResource = Please select a resource
-widget_resourceSelector_selectMultipleResources = Select Resources
-widget_resourceSelector_selectResource = Select a Resource
-widget_typeCache_loadFail = Failed to load resource type metadata
-widget_typeTree_badTemplateType = Invalid URL. Unknown template type [{0}]
-widget_typeTree_badTypeId = Invalid URL. Bad resource type ID [{0}]
-widget_typeTree_loadFail = Failed to load resource types
+#
+# RHQ GUI i18n Messages - Locale: JA
+#
+# This file should be UTF-8 encoded.
+#
+# Developers: See the following wiki page for how to work with this file:
+#
+#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
+#
+###################################
+common_alert_high = High
+common_alert_low = Low
+common_alert_medium = Medium
+common_buildInfo_gwtVersion = ${gwt.version}
+common_button_ack = 確認
+common_button_ack_all = すべてを確認
+common_button_add = 追加
+common_button_advanced = Advanced...
+common_button_apply = 適用
+common_button_cancel = キャンセル
+common_button_close = 閉じる
+common_button_compare = 比較
+common_button_create_child = 子を作成
+common_button_delete = 削除
+common_button_delete_all = すべてを削除
+common_button_disable = 無効
+common_button_edit = 編集
+common_button_enable = 有効
+common_button_finish = 完了
+common_button_import = インポート
+common_button_new = 新規
+common_button_next = 次へ
+common_button_ok = OK
+common_button_previous = 前へ
+common_button_purgeAll = すべてをパージ
+common_button_refresh = リフレッシュ
+common_button_reset = リセット
+common_button_save = 保存
+common_button_schedule = スケジュール
+common_button_search = 検索
+common_button_set = 設定
+common_button_showDetails = 詳細表示...
+common_button_uninventory = アンインベントリ
+common_calendar_april_short = apr
+common_calendar_august_short = aug
+common_calendar_december_short = dec
+common_calendar_february_short = feb
+common_calendar_january_short = jan
+common_calendar_july_short = jul
+common_calendar_june_short = jun
+common_calendar_march_short = mar
+common_calendar_may_short = may
+common_calendar_november_short = nov
+common_calendar_october_short = oct
+common_calendar_september_short = sept
+common_label_ago = ago
+common_label_all = すべての
+common_label_all_resources = all resources
+common_label_day = day
+common_label_days = days
+common_label_hour = hour
+common_label_hours = hours
+common_label_item = item
+common_label_items = items
+common_label_milliseconds = milliseconds
+common_label_minutes = minutes
+common_label_month = month
+common_label_none = none
+common_label_role = role
+common_label_roles = roles
+common_label_scheduled_operations = scheduled operations
+common_label_seconds = seconds
+common_label_selected_resources = selected resources
+common_label_unlimited = unlimited
+common_label_user = user
+common_label_users = users
+common_label_week = week
+common_label_weeks = weeks
+common_label_yesterday = Yesterday
+common_msg_areYouSure = Are You Sure?
+common_msg_changeAutoDetected = Change auto-detected
+common_msg_deleteConfirm = Are you sure you want to delete the # selected {0}?
+common_msg_emphasizedNotePrefix = NOTE:
+common_msg_loading = Loading...
+common_msg_noItemsToShow = No items to show
+common_msg_notYetImplemented = Not Yet Implemented
+common_msg_see_more = see more...
+common_msg_step_x_of_y = Step {0} of {1}
+common_severity_debug = Debug
+common_severity_error = Error
+common_severity_fatal = Fatal
+common_severity_info = Info
+common_severity_warn = Warn
+common_status_canceled = Canceled
+common_status_deferred = Deferred
+common_status_failed = Failed
+common_status_inprogress = In Progress
+common_status_nochange = No Change
+common_status_partial = Partial
+common_status_success = Success
+common_status_timedOut = Timed Out
+common_status_unknown = Unknown
+common_title_add_column = カラム追加
+common_title_add_portlet = ポートレット追加
+common_title_address = アドレス
+common_title_alert_range = アラートの範囲
+common_title_ancestry = 祖先
+common_title_availability = アベイラビリティ
+common_title_available_resources = 利用可能リソース
+common_title_average_metrics = 毎分の平均メトリックス
+common_title_background = バックグラウンド
+common_title_bundle = バンドル
+common_title_bundles = バンドル
+common_title_category = カテゴリ
+common_title_change_refresh_time = インターバルのリフレッシュ
+common_title_columns = カラム
+common_title_compare_metrics = メトリックスの比較
+common_title_compatibleGroups = 互換グループ
+common_title_compatibleGroups_total = 互換グループの合計
+common_title_component_errors = コンポーネントエラー
+common_title_config_update_status = 更新状態
+common_title_configuration = 構成
+common_title_count = 数
+common_title_custom = カスタム
+common_title_dashboard_name = ダッシュボード名
+common_title_dateCreated = 生成日
+common_title_dateRange = 日付の範囲
+common_title_default = デフォルト
+common_title_description = 説明
+common_title_details = 詳細
+common_title_display = 表示
+common_title_display_name = 表示名
+common_title_duration = 期間
+common_title_edit_mode = 編集モード
+common_title_enabled = 有効?
+common_title_end = 終了
+common_title_error = エラー
+common_title_generalProp = 一般プロパティ
+common_title_group = グループ
+common_title_group_def_total = グループ定義の合計
+common_title_group_member_health = グループメンバーの状態
+common_title_groups = グループ
+common_title_help = ヘルプ
+common_title_host = ホスト
+common_title_id = ID
+common_title_id_parent = 親のID
+common_title_info = 情報
+common_title_inventory = インベントリ
+common_title_inventorySummary = インベントリサマリ
+common_title_lastUpdated = 最終更新
+common_title_lastUpdatedBy = 最終更新(による)
+common_title_ldapGroups = LDAPグループ
+common_title_mashup = マッシュアップ
+common_title_members_reporting = メンバーのリポート
+common_title_message = メッセージ
+common_title_metric = メトリック
+common_title_metric_chart = メトリック図
+common_title_mixedGroups = 混合グループ
+common_title_mixedGroups_total = 混合グループの合計
+common_title_name = 名前
+common_title_new_dashboard = 新規ダッシュボード
+common_title_numeric_metrics = 数値メトリックス
+common_title_numeric_type = 数値型
+common_title_operation_status = オペレーションの状態
+common_title_operations = オペレーション
+common_title_operations_range = オペレーションの範囲
+common_title_over = Over
+common_title_password = パスワード
+common_title_path = パス
+common_title_permissions = パーミッション
+common_title_platform = プラットフォーム
+common_title_platform_total = プラットフォームの合計
+common_title_plugin = プラグイン
+common_title_port = ポート
+common_title_providers = プロバイダ
+common_title_recent_alerts = 最近のアラート
+common_title_recent_bundle_deployments = 最近のバンドルのデプロイ
+common_title_recent_configuration_updates = 最近の構成の更新
+common_title_recent_event_counts = 最近のイベント数
+common_title_recent_measurements = 最近の測定
+common_title_recent_oob_metrics = 最近の境界外のメトリックス
+common_title_recent_operations = 最近のオペレーション
+common_title_recent_pkg_history = 最近のパッケージ履歴
+common_title_recently_added = 最近追加された
+common_title_remove_column = カラムの削除
+common_title_repositories = リポジトリ
+common_title_resource = リソース
+common_title_resourceGroups = リソースグループ
+common_title_resource_group = リソースグループ
+common_title_resource_id = リソースID
+common_title_resource_inventory = リソースインベントリ
+common_title_resource_key = リソースキー
+common_title_resource_name = リソース名
+common_title_resource_type = リソースタイプ
+common_title_resources = リソース
+common_title_results_count = 結果の数
+common_title_results_count_tooltip = 結果の数の表示
+common_title_role = ロール
+common_title_roles = ロール
+common_title_scheduled_operations = スケジュールされたオペレーション
+common_title_search = 検索
+common_title_selected_resources = 選択されたリソース
+common_title_server = サーバー
+common_title_server_total = サーバーの合計
+common_title_service = サービス
+common_title_service_total = サービスの合計
+common_title_settings = 設定
+common_title_show = 表示
+common_title_show_more = 詳細表示...
+common_title_sort_order = ソート順
+common_title_sort_order_tooltip = 結果のソート順を設定
+common_title_start = 開始
+common_title_status = ステータス
+common_title_stop = 停止
+common_title_summary = サマリ
+common_title_tag_cloud = Tag Cloud
+common_title_the = The
+common_title_timestamp = 日付/時間
+common_title_total = 合計
+common_title_type = タイプ
+common_title_units = 単位
+common_title_user = ユーザー
+common_title_users = ユーザー(複数)
+common_title_value = 値
+common_title_version = バージョン
+common_title_view_mode = ビューモード
+common_title_web_address = Webアドレス
+common_title_welcome = ようこそ
+common_unit_days = days
+common_unit_hours = hours
+common_unit_milliseconds = milliseconds
+common_unit_minutes = minutes
+common_unit_months = months
+common_unit_seconds = seconds
+common_unit_times = times
+common_unit_weeks = weeks
+common_unit_years = years
+common_val_for = for
+common_val_n1st = {0}st
+common_val_n2nd = {0}nd
+common_val_n3rd = {0}rd
+common_val_na = N/A
+common_val_never = Never
+common_val_no = No
+common_val_no_lower = no
+common_val_none = None
+common_val_nth = {0}th
+common_val_yes = Yes
+common_val_yes_lower = yes
+dataSource_ContentRepoTree_error_load = Error loading repositories
+dataSource_ContentRepoTree_field_parentId = Parent ID
+dataSource_bundle_loadFailed = Failed to load Bundle data
+dataSource_configurationHistory_clickToSeeError = Double click to see error message...
+dataSource_configurationHistory_currentConfig = This is the current configuration
+dataSource_configurationHistory_dateCompleted = 完了日
+dataSource_configurationHistory_dateSubmitted = 発行日
+dataSource_configurationHistory_error_fetchFailure = Unable to load configuration
history.
+dataSource_configurationHistory_updateType = 更新タイプ
+dataSource_configurationHistory_updateType_group = グループ
+dataSource_configurationHistory_updateType_individual = 個人
+dataSource_definitions_loadFailed = Failed to load metric definitions
+dataSource_measurementOob_error_fetchFailure = Failed to load measurement OOB
information
+dataSource_measurementOob_field_factor = 範囲外係数 (%)
+dataSource_measurementOob_field_formattedBaseband = バンド
+dataSource_measurementOob_field_formattedOutlier = アウトライナ
+dataSource_measurementOob_field_parentName = 親
+dataSource_measurementOob_field_resourceName = リソース
+dataSource_measurementOob_field_scheduleName = メトリック
+dataSource_operationHistory_error_fetchFailure = Failure loading operation histories.
+dataSource_operationHistory_field_createdTime = 生成時刻
+dataSource_operationHistory_field_operationName = オペレーション名
+dataSource_operationHistory_field_startedTime = 開始時刻
+dataSource_operationHistory_field_subject = 要求者
+dataSource_operationSchedule_field_description = ノート
+dataSource_operationSchedule_field_id = スケジュールID
+dataSource_operationSchedule_field_nextFireTime = 次回の実行
+dataSource_operationSchedule_field_operationDisplayName = オペレーション
+dataSource_operationSchedule_field_operationName = オペレーション
+dataSource_operationSchedule_field_subject = オーナー
+dataSource_operationSchedule_field_timeout = タイムアウト (秒)
+dataSource_platforms_field_cpu = CPU
+dataSource_platforms_field_memory = メモリ
+dataSource_platforms_field_swap = スワップ
+dataSource_problemResources_error_fetchFailure = Failed to load Resources with
alerts/unavailability.
+dataSource_problemResources_field_alerts = アラート
+dataSource_problemResources_field_available = 現在のアベイラビリティ
+dataSource_recentOperations_error_fetchFailure = Failed to load recently completed
operations.
+dataSource_recentOperations_field_location = ロケーション
+dataSource_recentOperations_field_operation = オペレーション
+dataSource_recentOperations_field_resource = リソース
+dataSource_recentOperations_field_status = ステータス
+dataSource_recentOperations_field_time = 日付/時刻
+dataSource_resourceErrors_clickStatusIcon = Click the icon for more details
+dataSource_resourceErrors_deleteFailure = Failed to delete resource errors
+dataSource_resourceErrors_deleteSuccess = You have successfully deleted [{0}] resource
error messages.
+dataSource_resourceErrors_error_fetchFailure = Failed to find Resource errors for
Resource with id [{0}].
+dataSource_resourceErrors_field_errorType = エラータイプ
+dataSource_resourceErrors_field_summary = サマリ
+dataSource_resourceErrors_field_timeOccured = 時刻
+dataSource_resourceGroups_loadFailed = Failed to load Resource Groups
+dataSource_resources_field_discoveryTime = 発見時刻
+dataSource_resources_field_importTime = インポート時刻
+dataSource_resources_field_key = キー
+dataSource_resources_field_lastModifiedTime = 最終更新時刻
+dataSource_resources_field_lastModifier = 最終更新者
+dataSource_resources_field_location = 場所
+dataSource_rpc_error_transformRequestFailure = Failure in datasource while processing {0}
request.
+dataSource_rpc_error_unsupportedArrayFilterType = No support for passing array filters of
type {0}.
+dataSource_rpc_error_unsupportedEnumType = Please add an appropriate code block for enum
{0} to RPCDataSource.getEnumArray(Class)
+dataSource_rpc_no = no
+dataSource_rpc_yes = yes
+dataSource_scheduledOperations_error_fetchFailure = Failed to load scheduled operations.
+dataSource_scheduledOperations_field_location = 場所
+dataSource_scheduledOperations_field_operation = オペレーション
+dataSource_scheduledOperations_field_resource = リソース
+dataSource_scheduledOperations_field_time = 日付/時刻
+dataSource_schedules_disableFailure_group = Failed to disable the collection of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_disableFailure_resource = Failed to disable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_disableSuccessful_concise = You have disabled the collection of
[{0}] measurements
+dataSource_schedules_disableSuccessful_full_group = You have disabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The disabled measurements are:
[{2}]
+dataSource_schedules_disableSuccessful_full_resource = You have disabled the collection
of [{0}] measurements for the resource with ID [{1}]. The disabled measurements are:
[{2}]
+dataSource_schedules_enableFailure_group = Failed to enable the collection of [{0}]
metrics for group with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_enableFailure_resource = Failed to enable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_enableSuccessful_concise = You have enabled the collection of [{0}]
measurements
+dataSource_schedules_enableSuccessful_full_group = You have enabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The enabled measurements are:
[{2}]
+dataSource_schedules_enableSuccessful_full_resource = You have enabled the collection of
[{0}] measurements for the resource with ID [{1}]. The enabled measurements are: [{2}]
+dataSource_schedules_field_resourceGroupId = Group ID
+dataSource_schedules_loadFailed = Failed to load metric schedules
+dataSource_schedules_loadFailedContext = Failed to load metric schedules for context
[{0}]
+dataSource_schedules_loadFailedCriteria = Failed to load metric schedules for criteria
[{0}]
+dataSource_schedules_updateFailure_group = Failed to set the collection interval of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
+dataSource_schedules_updateFailure_resource = Failed to set the collection interval of
[{0}] metrics for resource with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
+dataSource_schedules_updateSuccessful_concise = A new collection interval of [{0}]
seconds has been set on [{1}] measurements
+dataSource_schedules_updateSuccessful_full_group = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource group with ID [{2}]. The updated
measurements are: [{3}]
+dataSource_schedules_updateSuccessful_full_resource = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource with ID [{2}]. The updated
measurements are: [{3}]
+dataSource_traits_failFetch = Failed to fetch traits for criteria [{0}].
+dataSource_traits_field_definitionID = Definition ID
+dataSource_traits_field_lastChanged = Last Changed
+dataSource_traits_field_primaryKey = Primary Key
+dataSource_traits_field_trait = Trait
+dataSource_traits_group_field_groupId = Group ID
+dataSource_users_delete = 削除済みユーザー [{0}]
+dataSource_users_deleteFailed = ユーザー [{0}] の削除に失敗しました
+dataSource_users_field_department = 部門
+dataSource_users_field_emailAddress = Eメールアドレス
+dataSource_users_field_factive = ログインは有効?
+dataSource_users_field_firstName = 名前
+dataSource_users_field_id = ID
+dataSource_users_field_lastName = 名字
+dataSource_users_field_ldap = LDAPログイン?
+dataSource_users_field_name = ユーザー名
+dataSource_users_field_password = パスワード
+dataSource_users_field_passwordVerify = パスワードの確認
+dataSource_users_field_phoneNumber = 電話番号
+dataSource_users_invalidEmailAddress = 無効なEメールアドレス
+dataSource_users_passwordsDoNotMatch = パスワードが一致していません
+datasource_roles_field_ldapGroups = LDAPグループ
+datasource_roles_field_permissions = パーミッション
+datasource_roles_field_resourceGroups = リソースグループ
+datasource_roles_field_subjects = サブジェクト
+datasource_templateSchedules_disabled = Disabled collection of selected metric [{0}].
+datasource_templateSchedules_disabled_detailed = Disabled collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_disabled_failed = Failed to disable collection of metric
[{0}] [{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_enabled = Enabled collection of selected metric [{0}].
+datasource_templateSchedules_enabled_detailed = Enabled collection of metric [{0}] [{1}]
by default for ResourceType with id [{2}].
+datasource_templateSchedules_enabled_failed = Failed to enable collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_updated = Updated collection intervals of selected metric
[{0}].
+datasource_templateSchedules_updated_detail = Collection interval for metric [{0}] [{1}]
by default for ResourceType with id [{2}] set to [{3}] seconds.
+datasource_templateSchedules_updated_failed = Failed to set collection interval to [{0}]
seconds for metric [{1}] [{2}] by default for ResourceType with id [{3}].
+favorites = お気に入り
+favorites_groups = お気に入りグループ
+favorites_recentlyViewed = 最近閲覧した
+favorites_resources = お気に入りリソース
+group_tree_partialClusterTooltip = {0} out of {1} group members have a
''{2}'' resource
+util_ancestry_parentAncestry = Parent Ancestry for:
+util_disambiguationReportDecorator_pluginSuffix = ({0} plugin)
+util_errorHandler_nullException = exception was null
+util_monitoringRequestCallback_error_checkServerStatusFailure = Unable to determine login
status - check Server status.
+util_rpcManager_activeRequests = {0} Active Requests
+util_userPerm_loadFailGlobal = Failed to load your global permissions - none granted.
+util_userPerm_loadFailGroup = Failed to load your permissions for Resource Group with id
[{0}] - none granted.
+util_userPerm_loadFailResource = Failed to load your permissions for Resource with id
[{0}] - none granted.
+util_userSession_loadFailSubject = UserSessionManager: Failed to load user Subject
+util_userSession_logoutFail = Failed to logout.
+util_widgetsField_unlimited = Unlimited
+view_aboutBox_allRightsReserved = All Rights Reserved.
+view_aboutBox_buildNumber = ビルド番号:
+view_aboutBox_failedToLoad = Failed to load product information.
+view_aboutBox_homepage = ホームページ
+view_aboutBox_jbossByRedHat = JBoss by Red Hat
+view_aboutBox_title = {0}について
+view_aboutBox_version = バージョン:
+view_adminConfig_downloads = ダウンロード
+view_adminConfig_plugins = プラグイン
+view_adminConfig_systemSettings = システム設定
+view_adminConfig_templates = テンプレート
+view_adminContent_contentSources = コンテントソース
+view_adminContent_repositories = リポジトリ
+view_adminRoles_assignedGroups = Assigned Resource Groups
+view_adminRoles_assignedSubjects = Assigned Subjects
+view_adminRoles_failLdap = Failed to determine if LDAP configured - assuming no LDAP.
+view_adminRoles_failLdapGroups = Failed to retrieve available LDAP groups - assuming no
LDAP groups.
+view_adminRoles_failLdapGroupsRole = Failed to load LDAP groups available for role.
+view_adminRoles_failRoles = Failed to fetch roles.
+view_adminRoles_globalPerms = Global Permissions
+view_adminRoles_ldapGroups = LDAP Groups
+view_adminRoles_ldapGroupsReadOnly = LDAP group data is read only
+view_adminRoles_noItems = No items to show
+view_adminRoles_noLdap = The LDAP security integration is not configured. To configure
LDAP, go to <a {0}>{1}</a>.
+view_adminRoles_permissions_autoselecting_configureRead_implied = Autodeselected
CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
+view_adminRoles_permissions_autoselecting_configureWrite_implied = Autoselected
CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
+view_adminRoles_permissions_autoselecting_manageInventory_implied = Autoselected
unselected Resource permissions, since MANAGE_INVENTORY implies all Resource
permissions...
+view_adminRoles_permissions_autoselecting_manageSecurity_implied = Autoselected
unselected permissions, since MANAGE_SECURITY implies all other permissions...
+view_adminRoles_permissions_globalPermissions = Global Permissions
+view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection = {0}
read permission cannot be deselected, unless the {0} write permission, which implies the
read permission, is deselected first.
+view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection = {0}
permission cannot be deselected, unless Manage Inventory, which implies all Resource
permissions, is deselected first.
+view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection = {0}
permission cannot be deselected, unless the Manage Security permission, which implies all
other permissions, is deselected first.
+view_adminRoles_permissions_isAuthorized = Authorized?
+view_adminRoles_permissions_isRead = Read?
+view_adminRoles_permissions_isWrite = Write?
+view_adminRoles_permissions_permDesc_manageBundles = can create, update, or delete
provisioning bundles (viewing is implied for everyone)
+view_adminRoles_permissions_permDesc_manageInventory = has all Resource permissions, as
described below, for all Resources; can create, update, and delete groups; and can import
auto-discovered or manually discovered Resources
+view_adminRoles_permissions_permDesc_manageRepositories = can create, update, or delete
repositories of any user (everyone can create their own repositories), can associate
content sources to repositories.
+view_adminRoles_permissions_permDesc_manageSecurity = can create, update, or delete users
and roles (viewing is implied for everyone)
+view_adminRoles_permissions_permDesc_manageSettings = can modify the RHQ Server
configuration and perform any Server-related functionality
+view_adminRoles_permissions_permReadDesc_configure = view Resource configuration and
Resource configuration revision history
+view_adminRoles_permissions_permReadDesc_control = (IMPLIED) view available operations
and operation execution history
+view_adminRoles_permissions_permReadDesc_createChildResources = (IMPLIED) view child
Resource creation history
+view_adminRoles_permissions_permReadDesc_deleteChildResources = (IMPLIED) view child
Resource deletion history
+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_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
+view_adminRoles_permissions_permWriteDesc_control = execute operations; delete operation
execution history items
+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_manageContent = subscribe to content sources;
install and uninstall packages
+view_adminRoles_permissions_permWriteDesc_manageEvents = delete events
+view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection
schedules
+view_adminRoles_permissions_perm_configure = Configure
+view_adminRoles_permissions_perm_control = Control
+view_adminRoles_permissions_perm_createChildResources = Create Child Resources
+view_adminRoles_permissions_perm_deleteChildResources = Delete Child Resources
+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_manageEvents = Manage Events
+view_adminRoles_permissions_perm_manageInventory = Manage Inventory
+view_adminRoles_permissions_perm_manageMeasurements = Manage Measurements
+view_adminRoles_permissions_perm_manageRepositories = Manage Repositories
+view_adminRoles_permissions_perm_manageSecurity = Manage Security
+view_adminRoles_permissions_perm_manageSettings = Manage Settings
+view_adminRoles_permissions_read = Read:
+view_adminRoles_permissions_readAccessImplied = Read access for the {0} permission is
implied and cannot be disabled.
+view_adminRoles_permissions_resourcePermissions = Resource Permissions
+view_adminRoles_permissions_write = Write:
+view_adminRoles_perms = Permissions
+view_adminRoles_resourcePerms = Resource Permissions
+view_adminRoles_roleAdded = Role [{0}] added.
+view_adminRoles_roleDeleteFailed = Failed to delete role [{0}].
+view_adminRoles_roleDeleted = Role [{0}] deleted.
+view_adminRoles_roleUpdateFailed = Failed to update role [{0}].
+view_adminRoles_roleUpdated = Role [{0}] updated.
+view_adminSecurity_roles = ロール
+view_adminSecurity_users = ユーザー
+view_adminTemplates_disabledAlertTemplates = 無効なアラートテンプレート
+view_adminTemplates_disabledMetricTemplates = 無効なメトリックテンプレート
+view_adminTemplates_editAlertTemplate = アラートテンプレートの編集
+view_adminTemplates_editMetricTemplate = メトリックテンプレートの編集
+view_adminTemplates_enabledAlertTemplates = 有効なアラートテンプレート
+view_adminTemplates_enabledMetricTemplates = 有効なメトリックテンプレート
+view_adminTemplates_platformServices = プラットフォームサービス
+view_adminTemplates_platforms = プラットフォーム
+view_adminTemplates_prompt_disabledAlertTemplates = Number of alert templates that are
created but disabled on this resource type
+view_adminTemplates_prompt_disabledMetricTemplates = Number of metric schedules that are
disabled by default on this resource type
+view_adminTemplates_prompt_enabledAlertTemplates = Number of alert templates that are
enabled on this resource type
+view_adminTemplates_prompt_enabledMetricTemplates = Number of metric schedules that are
enabled by default on this resource type
+view_adminTemplates_servers = サービス
+view_adminTopology_affinityGroups = アフィニティグループ
+view_adminTopology_agents = エージェント
+view_adminTopology_partitionEvents = イベントの分類
+view_adminTopology_remoteAgentInstall = リモートエージェントのインストール
+view_adminTopology_servers = サーバー
+view_adminUsersDetails_dataTypeName = ユーザー
+view_adminUsersList_dataTypeName = ユーザー
+view_adminUsersList_dataTypeNamePlural = ユーザー
+view_admin_administration = 管理
+view_admin_configuration = 構成
+view_admin_content = コンテント
+view_admin_downloads_agentDownload = エージェントのダウンロード
+view_admin_downloads_agent_buildNumber = エージェントビルド
+view_admin_downloads_agent_help = <p> This is the RHQ Agent Update Binary jar file.
The purpose of this jar file is to allow you to install a fresh agent on a machine where
an agent does not yet exist and to allow you to update an agent that is already installed
on a machine. For more details, run this agent download jar with the --help command line
option:<br/> <b>java -jar <agent-download.jar> --help</b>
</p> <h3>Agent Install</h3> <p> <b>java -jar
<agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
+view_admin_downloads_agent_link_label = リンク
+view_admin_downloads_agent_link_value = エージェント {0} ({1}) のダウンロード
+view_admin_downloads_agent_loadError = Cannot get agent version info
+view_admin_downloads_agent_md5 = エージェント MD5
+view_admin_downloads_agent_version = エージェントバージョン
+view_admin_downloads_bundleDownload = バンドルデプロイヤのダウンロード
+view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is for
use by developers and packagers of RHQ bundles. This standalone tool allows you to test
your bundles and their recipes from a console. </p>
+view_admin_downloads_bundle_link_label = Link
+view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
+view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
+view_admin_downloads_cliDownload = コマンドラインクライアントのダウンロード
+view_admin_downloads_cli_buildNumber = CLI Build
+view_admin_downloads_cli_help = <p> This is the Command Line Client tool, otherwise
known as the CLI. It is a standalone tool that runs from within a console and provides a
command line interface to the RHQ Server. You can invoke commands via the CLI as well as
run scripts to perform automated tasks. See the documentation for more information on how
to install and use the CLI. </p>
+view_admin_downloads_cli_link_label = Link
+view_admin_downloads_cli_link_value = Download CLI {0} ({1})
+view_admin_downloads_cli_loadError = Cannot get CLI version info
+view_admin_downloads_cli_md5 = CLI MD5
+view_admin_downloads_cli_version = CLI Version
+view_admin_downloads_connectorsDownload = コネクタのダウンロード
+view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by RHQ. You install connectors into some managed
products so RHQ agents can talk to them. See the documentation for more information.
+view_admin_downloads_connectors_loadError = Cannot get connectors info
+view_admin_downloads_connectors_none = No connectors are available for download
+view_admin_landing =
このセクションにおいて、RHQグローバル設定が管理されます。これはセキュリティ構成、プラグイン設定、RHQサーバーとエージェントの管理を含みます。
+view_admin_measTemplates_title = Template Metric Collection Schedules
+view_admin_measTemplates_updateExisting_title = Update Existing Schedules
+view_admin_measTemplates_updateExisting_tooltip = Check this box to update the collection
schedules for the selected metrics on all existing resources of this type. If this is not
checked, the template schedules will only be applied to new resources of this type that
are added to inventory in the future.
+view_admin_security = セキュリティ
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = If this amount of time passes
without hearing from an agent, that quiet agent will be considered down. This value is
specified in minutes.
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent Max Quiet Time Allowed
+view_admin_systemSettings_AlertPurge_desc = How old alert history items must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_AlertPurge_name = Delete Alerts Older Than
+view_admin_systemSettings_AvailabilityPurge_desc = How old availability data must be
before being purged from the database. This is specified in days.
+view_admin_systemSettings_AvailabilityPurge_name = Delete Availability Data Older Than
+view_admin_systemSettings_BaseURL_desc = A URL to the server GUI, used mainly within
alert email notifications.
+view_admin_systemSettings_BaseURL_name = GUI Console URL
+view_admin_systemSettings_BaselineDataSet_desc = The amount of past measurement data that
is used to determine a baseline. This is specified in days.
+view_admin_systemSettings_BaselineDataSet_name = Baseline Dataset
+view_admin_systemSettings_BaselineFrequency_desc = The frequency which the
auto-calculation of baselines will be performed. If 0, baseline auto-calculation is
disabled. This is specified in days.
+view_admin_systemSettings_BaselineFrequency_name = Baseline Calculation Frequency
+view_admin_systemSettings_DataMaintenance_desc = How often database maintenance is
performed (for example, vacuuming if using Postgres). This is specified in hours.
+view_admin_systemSettings_DataMaintenance_name = Database Maintenance Period
+view_admin_systemSettings_DataReindex_desc = If enabled, certain database tables will be
re-indexed periodically.
+view_admin_systemSettings_DataReindex_name = Reindex Data Tables Nightly
+view_admin_systemSettings_EnableAgentAutoUpdate_desc = Determines if the server will
allow agents to auto-update themselves. You will not be able to download agent
distributions from the server if this is disabled.
+view_admin_systemSettings_EnableAgentAutoUpdate_name = Enable Agent Auto-Updates
+view_admin_systemSettings_EnableDebugMode_desc = If enabled, the server will enter debug
mode.
+view_admin_systemSettings_EnableDebugMode_name = Enable Debug Mode
+view_admin_systemSettings_EnableExperimentalFeatures_desc = If enabled, any experimental
features that exist in the current product will be available.
+view_admin_systemSettings_EnableExperimentalFeatures_name = Enable Experimental Features
+view_admin_systemSettings_EventPurge_desc = How old event data must be before being
purged from the database. This is specified in days.
+view_admin_systemSettings_EventPurge_name = Delete Events Older Than
+view_admin_systemSettings_JAASProvider_desc = Should LDAP be used to determine user
identity?
+view_admin_systemSettings_JAASProvider_name = Enable LDAP
+view_admin_systemSettings_LDAPBaseDN_desc = The base of the directory tree to search for
usernames and passwords while authenticating users, e.g. ou=People,dc=redhat,dc=com
+view_admin_systemSettings_LDAPBaseDN_name = Search Base
+view_admin_systemSettings_LDAPBindDN_desc = The username to connect to the LDAP server
when querying the LDAP user database. This is typically the full LDAP distinguished name
(DN) of a manager user, e.g. cn=Manager,dc=redhat,dc=com
+view_admin_systemSettings_LDAPBindDN_name = Username
+view_admin_systemSettings_LDAPBindPW_desc = The credentials of the user used to connect
to the LDAP server when querying the LDAP user database.
+view_admin_systemSettings_LDAPBindPW_name = Password
+view_admin_systemSettings_LDAPFilter_desc = Any additional filters to apply when doing
the LDAP search. This is useful if the population to authenticate can be identified via a
given LDAP property, e.g. RHQUser=true
+view_admin_systemSettings_LDAPFilter_name = Search Filter
+view_admin_systemSettings_LDAPGroupFilter_desc = LDAP search filter that must return all
LDAP groups available for authorization. This is used for LDAP group authorization.
+view_admin_systemSettings_LDAPGroupFilter_name = Group Search Filter
+view_admin_systemSettings_LDAPGroupMember_desc = LDAP search filter that is used in
conjunction with the group search filter to determine user authorization. This is used for
LDAP group authorization.
+view_admin_systemSettings_LDAPGroupMember_name = Group Member Filter
+view_admin_systemSettings_LDAPLoginProperty_desc = The LDAP property that contains the
user name. Defaults to "cn". If multiple matches are found, the first entry
found is used.
+view_admin_systemSettings_LDAPLoginProperty_name = Login Property
+view_admin_systemSettings_LDAPProtocol_desc = Should communication with the LDAP server
be done over SSL?
+view_admin_systemSettings_LDAPProtocol_name = SSL
+view_admin_systemSettings_LDAPUrl_desc = URL to the LDAP Server
+view_admin_systemSettings_LDAPUrl_name = LDAP URL
+view_admin_systemSettings_RtDataPurge_desc = How old response time data must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_RtDataPurge_name = Delete Response Time Data Older Than
+view_admin_systemSettings_TraitPurge_desc = How old measurement trait data must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_TraitPurge_name = Delete Measurement Traits Older Than
+view_admin_systemSettings_cannotLoadServerDetails = Cannot load server details
+view_admin_systemSettings_cannotLoadSettings = Cannot obtain the current system settings
+view_admin_systemSettings_fixBeforeSaving = Please fix the invalid values before saving
+view_admin_systemSettings_group_baseline = 自動ベースライン構成プロパティ
+view_admin_systemSettings_group_dataMgr = データマネージャー構成プロパティ
+view_admin_systemSettings_group_general = 全体構成プロパティ
+view_admin_systemSettings_group_ldap = LDAP 構成プロパティ
+view_admin_systemSettings_saveFailure = Failed to save the system settings
+view_admin_systemSettings_savedSettings = You successfully saved the system properties
+view_admin_systemSettings_serverDetails = Server Details
+view_admin_systemSettings_serverDetails_buildNumber = Build Number
+view_admin_systemSettings_serverDetails_currentTable = Current Measurement Raw Table
+view_admin_systemSettings_serverDetails_dbDriverName = Database Driver Name
+view_admin_systemSettings_serverDetails_dbDriverVersion = Database Driver Version
+view_admin_systemSettings_serverDetails_dbName = Database Product Name
+view_admin_systemSettings_serverDetails_dbUrl = Database Connection URL
+view_admin_systemSettings_serverDetails_dbVersion = Database Product Version
+view_admin_systemSettings_serverDetails_installDir = Server Installation Directory
+view_admin_systemSettings_serverDetails_nextRotation = Next Measurement Table Rotation
+view_admin_systemSettings_serverDetails_time = Server Local Time
+view_admin_systemSettings_serverDetails_tz = Server Time Zone
+view_admin_topology = トポロジー
+view_alert_common_tab_conditions = Conditions
+view_alert_common_tab_conditions_expression = Fire alert when
+view_alert_common_tab_conditions_expression_tooltip = Determines if ANY or ALL of the
conditions must evaluate to true in order for the entire condition set to be considered
true.
+view_alert_common_tab_conditions_modal_title = 条件追加
+view_alert_common_tab_conditions_recovery_disabled = This alert caused its alert
definition to be disabled
+view_alert_common_tab_conditions_recovery_enabled = Triggered ''{0}'' to
be re-enabled
+view_alert_common_tab_conditions_text = Condition
+view_alert_common_tab_conditions_type_availability = Availability Change
+view_alert_common_tab_conditions_type_availability_down = Went down
+view_alert_common_tab_conditions_type_availability_up = Came up
+view_alert_common_tab_conditions_type_event = Event Detection
+view_alert_common_tab_conditions_type_event_matching = with event source matching
+view_alert_common_tab_conditions_type_metric_baseline = Metric Value Baseline
+view_alert_common_tab_conditions_type_metric_baseline_verb = of
+view_alert_common_tab_conditions_type_metric_calltime_change = Call Time Value Changes
+view_alert_common_tab_conditions_type_metric_calltime_change_verb = by at least
+view_alert_common_tab_conditions_type_metric_calltime_delta_grows = Grows
+view_alert_common_tab_conditions_type_metric_calltime_delta_other = Changes
+view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = Shrinks
+view_alert_common_tab_conditions_type_metric_calltime_destination = with call destination
matching
+view_alert_common_tab_conditions_type_metric_calltime_threshold = Call Time Value
Threshold
+view_alert_common_tab_conditions_type_metric_change = Metric Value Change
+view_alert_common_tab_conditions_type_metric_threshold = Metric Value Threshold
+view_alert_common_tab_conditions_type_metric_trait_change = Trait Change
+view_alert_common_tab_conditions_type_operation = Operation Execution
+view_alert_common_tab_conditions_type_operation_status = with result status
+view_alert_common_tab_conditions_type_resource_configuration = Resource Configuration
Change
+view_alert_common_tab_conditions_value = Value
+view_alert_common_tab_dampening = Dampening
+view_alert_common_tab_dampening_category_consecutive_count = Consecutive
+view_alert_common_tab_dampening_category_consecutive_count_tooltip = An alert is
triggered once every X occurrences the condition set is true consecutively.
+view_alert_common_tab_dampening_category_duration_count = Time Period
+view_alert_common_tab_dampening_category_duration_count_tooltip = An alert is triggered
once every X occurrences the condition set is true within a given time period.
+view_alert_common_tab_dampening_category_none = None
+view_alert_common_tab_dampening_category_none_tooltip = Dampening is disabled. Every time
the condition set is true, an alert will be triggered.
+view_alert_common_tab_dampening_category_partial_count = Last N Evaluations
+view_alert_common_tab_dampening_category_partial_count_tooltip = An alert is triggered
once every X occurrences the condition set is true during the last N evaluations of the
condition set.
+view_alert_common_tab_dampening_consecutive_occurrences_label = Occurrences
+view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = The number of
times the condition set must be consecutively true before the alert is triggered
+view_alert_common_tab_dampening_duration_occurrences_label = Occurrences
+view_alert_common_tab_dampening_duration_occurrences_label_tooltip = The number of times
the condition set must be true during the given time period before the alert is
triggered.
+view_alert_common_tab_dampening_duration_period_label = Time Period
+view_alert_common_tab_dampening_duration_period_label_tooltip = The time span in which
the condition set will be tested to see if the given number of occurrences are true.
+view_alert_common_tab_dampening_partial_evalatuions_label = Evaluations
+view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = The total number of
times the condition set will be tested to see if the given number of occurrences are
true.
+view_alert_common_tab_dampening_partial_occurrences_label = Occurrences
+view_alert_common_tab_dampening_partial_occurrences_label_tooltip = The number of times
the condition set must be true during the last N evaluations before the alert is
triggered.
+view_alert_common_tab_general = General Properties
+view_alert_common_tab_invalid_condition_category = Invalid condition category - please
report this as a bug: {0}
+view_alert_common_tab_invalid_dampening_category = Invalid dampening category - please
report this as a bug: {0}
+view_alert_common_tab_invalid_time_units = Invalid time units - please report this as a
bug: {0}
+view_alert_common_tab_notifications = Notifications
+view_alert_common_tab_notifications_message = Message
+view_alert_common_tab_notifications_sender = Sender
+view_alert_common_tab_notifications_status = Status
+view_alert_common_tab_recovery = Recovery
+view_alert_definition_condition_editor_avilability_option_down = Goes down
+view_alert_definition_condition_editor_avilability_option_up = Comes up
+view_alert_definition_condition_editor_avilability_tooltip = Specify the availability
state change that will trigger the condition.
+view_alert_definition_condition_editor_avilability_value = Availability
+view_alert_definition_condition_editor_common_avg = Average
+view_alert_definition_condition_editor_common_max = Maximum
+view_alert_definition_condition_editor_common_min = Minimum
+view_alert_definition_condition_editor_delete_confirm = Delete the selected alert
condition(s)?
+view_alert_definition_condition_editor_event_regex = Regular Expression
+view_alert_definition_condition_editor_event_regex_tooltip = If specified, this is a
regular expression that must match a collected event message in order to trigger the
condition.
+view_alert_definition_condition_editor_event_severity = Event Severity
+view_alert_definition_condition_editor_event_severity_debug = Debug
+view_alert_definition_condition_editor_event_severity_error = Error
+view_alert_definition_condition_editor_event_severity_fatal = Fatal
+view_alert_definition_condition_editor_event_severity_info = Info
+view_alert_definition_condition_editor_event_severity_warn = Warn
+view_alert_definition_condition_editor_event_tooltip = Specify the event severity that an
event message must be reported with in order to trigger this condition. If you specify an
optional regular expression, the event message must also match that regular expression in
order for the condition to trigger.
+view_alert_definition_condition_editor_metric_baseline_percentage = Baseline Percentage
+view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = A collected
metric value will trigger this condition when compared to this percentage of the selected
baseline value using the selected comparator
+view_alert_definition_condition_editor_metric_baseline_tooltip = Specify the baseline
value that must be violated to trigger the condition. The value you specify is a
percentage of the given baseline value.
+view_alert_definition_condition_editor_metric_baseline_value = Baseline
+view_alert_definition_condition_editor_metric_calltime_change_percentage = Percentage
Change
+view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip = A
collected calltime value will trigger this condition when it differs by at least this
percentage of the selected calltime limit value
+view_alert_definition_condition_editor_metric_calltime_change_tooltip = Specify the
calltime value that, when changed at least a specified amount, triggers the condition. You
must specify which calltime limit to check (minimum, maximum or average calltime value)
and the percentage of change that must occur.
+view_alert_definition_condition_editor_metric_calltime_common_comparator = Comparator
+view_alert_definition_condition_editor_metric_calltime_common_comparator_changes =
Changes
+view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = Grows
+view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks =
Shrinks
+view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = How a
collected calltime value should be compared to the given calltime limit
+view_alert_definition_condition_editor_metric_calltime_common_limit = Call Time Limit
+view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = The
calltime limit value that is to be compared with the given value
+view_alert_definition_condition_editor_metric_calltime_common_name = Call Time Metric
+view_alert_definition_condition_editor_metric_calltime_common_regex = Regular Expression
+view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip = If
specified, this is a regular expression that must match a call destination in order to
trigger the condition.
+view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Specify the
calltime threshold value that, when violated, triggers the condition. The value you
specify is an absolute value with an optional units specifier. You also must specify which
calltime limit to compare the value with (minimum, maximum or average calltime value).
+view_alert_definition_condition_editor_metric_calltime_threshold_value = Call Time Value
+view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = The
threshold value of the metric that will trigger the condition when compared using the
selected comparator.
+view_alert_definition_condition_editor_metric_change_tooltip = Specify the metric whose
value must change to trigger the condition.
+view_alert_definition_condition_editor_metric_common_definition_not_found = Should have
found metric definition - something is wrong
+view_alert_definition_condition_editor_metric_threshold_comparator = Comparator
+view_alert_definition_condition_editor_metric_threshold_comparator_equal = Equal to
+view_alert_definition_condition_editor_metric_threshold_comparator_greater = Greater
Than
+view_alert_definition_condition_editor_metric_threshold_comparator_less = Less than
+view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = How a
collected metric value should be compared to the given threshold value
+view_alert_definition_condition_editor_metric_threshold_name = Metric
+view_alert_definition_condition_editor_metric_threshold_tooltip = Specify the threshold
value that, when violated, triggers the condition. The value you specify is an absolute
value with an optional units specifier.
+view_alert_definition_condition_editor_metric_threshold_value = Metric Value
+view_alert_definition_condition_editor_metric_threshold_value_tooltip = The threshold
value of the metric that will trigger the condition when compared using the selected
comparator.
+view_alert_definition_condition_editor_metric_trait_change_tooltip = Specify the trait
whose value must change to trigger the condition.
+view_alert_definition_condition_editor_metric_trait_change_value = Trait
+view_alert_definition_condition_editor_operation_status = オペレーションステータス
+view_alert_definition_condition_editor_operation_status_canceled = キャンセル済
+view_alert_definition_condition_editor_operation_status_failure = 失敗
+view_alert_definition_condition_editor_operation_status_inprogress = 処理中
+view_alert_definition_condition_editor_operation_status_success = 成功
+view_alert_definition_condition_editor_operation_tooltip = Specify the result that must
occur when the selected operation is executed in order to trigger the condition.
+view_alert_definition_condition_editor_operation_value = オペレーション
+view_alert_definition_condition_editor_option_availability = Availability Change
+view_alert_definition_condition_editor_option_event = Event Detection
+view_alert_definition_condition_editor_option_label = Condition Type
+view_alert_definition_condition_editor_option_metric_baseline = Measurement Baseline
Threshold
+view_alert_definition_condition_editor_option_metric_calltime_change = Call Time Value
Change
+view_alert_definition_condition_editor_option_metric_calltime_threshold = Call Time Value
Threshold
+view_alert_definition_condition_editor_option_metric_change = Measurement Value Change
+view_alert_definition_condition_editor_option_metric_threshold = Measurement Absolute
Value Threshold
+view_alert_definition_condition_editor_option_metric_trait_change = Trait Value Change
+view_alert_definition_condition_editor_option_operation = Operation Execution
+view_alert_definition_condition_editor_option_resource_configuration = Resource
Configuration Change
+view_alert_definition_condition_editor_resource_configuration_tooltip = This condition is
triggered when the resource configuration changes.
+view_alert_definition_for_group = View Group Definition
+view_alert_definition_for_type = View Template
+view_alert_definition_notification_cliScript_editor_anotherUser = Another User
+view_alert_definition_notification_cliScript_editor_existingScript = Existing Script
+view_alert_definition_notification_cliScript_editor_loadFailed = Loading the CLI
Notification Editor Failed.
+view_alert_definition_notification_cliScript_editor_newScriptVersion = Version
+view_alert_definition_notification_cliScript_editor_repository = Repository
+view_alert_definition_notification_cliScript_editor_script = Script
+view_alert_definition_notification_cliScript_editor_selectRepo = Select the repository
where the script should reside
+view_alert_definition_notification_cliScript_editor_selectRepoFirst = Select a repository
first.
+view_alert_definition_notification_cliScript_editor_thisUser = Myself
+view_alert_definition_notification_cliScript_editor_uploadNewScript = Upload New Script
+view_alert_definition_notification_cliScript_editor_verifyAuthentication = Verify
+view_alert_definition_notification_cliScript_editor_whichUser = User To Run The Script
As
+view_alert_definition_notification_editor_delete_confirm = Are you sure you want to
delete the selected alert notifications?
+view_alert_definition_notification_editor_field_configuration = Configuration
+view_alert_definition_notification_editor_field_configuration_loadFailed = Failed to get
notification configuration preview
+view_alert_definition_notification_editor_field_configuration_not_loaded = Unknown
+view_alert_definition_notification_editor_field_sender = Sender
+view_alert_definition_notification_editor_loadFailed = Cannot get alert senders
+view_alert_definition_notification_editor_loadFailed_single = Cannot get alert sender
configuration definition
+view_alert_definition_notification_editor_none_available = No alert senders available
+view_alert_definition_notification_editor_saveFailed = Cannot save the notification
configuration
+view_alert_definition_notification_editor_sender = Notification Sender
+view_alert_definition_notification_editor_title_add = 通知の追加
+view_alert_definition_notification_editor_title_edit = 通知の編集
+view_alert_definition_notification_operation_editor_common_operation = Operation
+view_alert_definition_notification_operation_editor_mode_relative = Relative Resource
+view_alert_definition_notification_operation_editor_mode_specific = Specific Resource
+view_alert_definition_notification_operation_editor_mode_this = This Resource
+view_alert_definition_notification_operation_editor_mode_title = リソース選択モード
+view_alert_definition_notification_operation_editor_mode_unknown = UNKNOWN OPTION - THIS
IS A BUG
+view_alert_definition_notification_operation_editor_operations_loadFailed = Failed to
load the list of available operations
+view_alert_definition_notification_operation_editor_operations_no_parameters = This
operation does not take any parameters
+view_alert_definition_notification_operation_editor_relative_ancestor = Start Search
From
+view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed = Cannot
get type ancestry
+view_alert_definition_notification_operation_editor_relative_ancestor_root = Root
Ancestor Type
+view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Select
the top of the type hierarchy from which to search its descendant tree for the Filter By
type
+view_alert_definition_notification_operation_editor_relative_descendant = Then Filter By
+view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip =
A specific name to uniquely identify a resource when more than one resource of the
selected type might exist. This is optional if there will only ever be one resource of the
resource type in the selected type hierarchy.
+view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
Cannot get type descendants
+view_alert_definition_notification_operation_editor_relative_descendant_tooltip = The
resource type to search for under the root type defined in the Start Search From
selection.
+view_alert_definition_notification_operation_editor_specific_pick_button = Pick
+view_alert_definition_notification_operation_editor_specific_pick_error_invalid = Please
pick a resource
+view_alert_definition_notification_operation_editor_specific_pick_error_no_operation =
Please pick a resource that has one or more operations
+view_alert_definition_notification_operation_editor_specific_pick_text = Pick a
resource...
+view_alert_definition_notification_operation_editor_specific_resource = Resource
+view_alert_definition_notification_role_editor_loadFailed = Cannot determine current
roles - starting empty
+view_alert_definition_notification_role_editor_restoreFailed = Cannot use current roles -
starting empty
+view_alert_definition_notification_role_editor_saveFailed = Cannot save the selected
roles
+view_alert_definition_notification_user_editor_loadFailed = Cannot determine current
users - starting empty
+view_alert_definition_notification_user_editor_restoreFailed = Cannot use current users -
starting empty
+view_alert_definition_notification_user_editor_saveFailed = Cannot save the selected
users
+view_alert_definition_recovery_editor_disable_when_fired = Disable When Fired
+view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indicates if this
alert will be disabled after it fires. Once disabled, the alert can be manually re-enabled
or a recovery alert can be set up to automatically re-enable it. If this alert is a
recovery alert itself, this setting cannot be turned on.
+view_alert_definition_recovery_editor_loadFailed = Cannot build recovery menu
+view_alert_definition_recovery_editor_none_available = None
+view_alert_definition_recovery_editor_recovery_alert = Recover Alert
+view_alert_definition_recovery_editor_recovery_alert_tooltip = The target alert that will
be recovered (i.e. re-enabled) after this alert triggers. Do not select an alert here if
you are not defining a recovery alert.
+view_alert_definitions_create_failure = Alert definition creation failed
+view_alert_definitions_create_success = Alert definition successfully created
+view_alert_definitions_delete_confirm = Delete the selected alert definition(s)?
+view_alert_definitions_delete_failure = Failed to deleted the selected alert definitions
+view_alert_definitions_delete_success = Successfully deleted {0} alert definitions
+view_alert_definitions_disable_confirm = Disable the selected alert definition(s)?
+view_alert_definitions_disable_failure = Failed to disable the selected alert
definitions
+view_alert_definitions_disable_success = Successfully disabled {0} alert definitions
+view_alert_definitions_enable_confirm = Enable the selected alert definition(s)?
+view_alert_definitions_enable_failure = Failed to enable the selected alert definitions
+view_alert_definitions_enable_success = Successfully enabled {0} alert definitions
+view_alert_definitions_loadFailed = Failed to fetch alert definition data
+view_alert_definitions_loadFailed_single = Failed to fetch data for alert definition with
id {0}
+view_alert_definitions_table_title_group = グループアラート定義
+view_alert_definitions_table_title_resource = リソースアラート定義
+view_alert_definitions_update_failure = Alert definition update failed
+view_alert_definitions_update_success = Alert definition successfully updated
+view_alert_details_field_ack_at = Acknowledged at
+view_alert_details_field_ack_by = Acknowledged by
+view_alert_details_field_recovery_info = Recovery Info
+view_alert_details_loadFailed = Failed to fetch alert details
+view_alerts_ack_confirm = Acknowledge the selected alert(s)?
+view_alerts_ack_confirm_all = Acknowledge all alerts from this source?
+view_alerts_ack_failure = Failed to acknowledge alerts with id''s: {0}
+view_alerts_ack_failure_all = Failed to acknowledge all alerts from this source
+view_alerts_ack_success = Successfully acknowledged {0} alerts
+view_alerts_delete_confirm = Delete the selected alert(s)?
+view_alerts_delete_confirm_all = Delete all alerts from this source?
+view_alerts_delete_failure = Failed to delete alerts with id''s: {0}
+view_alerts_delete_failure_all = Failed to delete all alerts from this source
+view_alerts_delete_success = Successfully deleted {0} alerts
+view_alerts_field_ack_status = ステータス
+view_alerts_field_ack_status_ack = 確認 ({0})
+view_alerts_field_ack_status_ackHover = Acknowledged by {0} at {1}
+view_alerts_field_ack_status_noAck = 未確認
+view_alerts_field_ack_status_noAckHover = Not yet Acknowledged
+view_alerts_field_ack_subject = 確認サブジェクト
+view_alerts_field_ack_time = 確認時刻
+view_alerts_field_condition_text = 条件テキスト
+view_alerts_field_condition_text_many = Multiple Conditions
+view_alerts_field_condition_text_none = No Conditions
+view_alerts_field_condition_value = Condition Value
+view_alerts_field_created_time = 生成時刻
+view_alerts_field_enabled = 有効
+view_alerts_field_modified_time = 修正時刻
+view_alerts_field_name = 名前
+view_alerts_field_parent = 親
+view_alerts_field_priority = 優先度
+view_alerts_field_protected = Protected
+view_alerts_field_protected_tooltip = If true, this definition is protected from being
changed by the parent definition. In other words, the parent definition settings will not
override this definition.
+view_alerts_loadFailed = Failed to fetch alerts data
+view_alerts_table_filter_priority = 優先度フィルター
+view_alerts_table_title_group = グループアラート履歴
+view_alerts_table_title_resource = リソースアラート履歴
+view_autoDiscoveryQ_committed = コミット済み
+view_autoDiscoveryQ_confirmSelect = Also select the platform children?
+view_autoDiscoveryQ_deleted = 削除済み
+view_autoDiscoveryQ_field_discoveryTime = Discovery Time
+view_autoDiscoveryQ_field_inventoryStatus = Inventory Status
+view_autoDiscoveryQ_field_key = Resource Key
+view_autoDiscoveryQ_field_name = Resource Name
+view_autoDiscoveryQ_field_parentId = Parent ID
+view_autoDiscoveryQ_ignore = 無視
+view_autoDiscoveryQ_ignoreFailure = Failed to ignore resources
+view_autoDiscoveryQ_ignoreSuccessful = You have successfully ignored the selected
resources.
+view_autoDiscoveryQ_ignored = 無視済み
+view_autoDiscoveryQ_import = インポート
+view_autoDiscoveryQ_importFailure = Failed to import resources
+view_autoDiscoveryQ_importSuccessful = You have successfully imported the selected
resources.
+view_autoDiscoveryQ_loadFailure = Failed to load the inventory discovery queue
+view_autoDiscoveryQ_new = 新規
+view_autoDiscoveryQ_newAndIgnored = 新規かつ無視済み
+view_autoDiscoveryQ_noItems = No items to show
+view_autoDiscoveryQ_noperm = (You are not authorized to view the auto-discovery queue)
+view_autoDiscoveryQ_showStatus = Show
+view_autoDiscoveryQ_title = 自動リカバリキュー
+view_autoDiscoveryQ_unignore = 無視をしない
+view_autoDiscoveryQ_unignoreFailure = Failed to unignore resources
+view_autoDiscoveryQ_unignoreSuccessful = You have successfully unignored the selected
resources.
+view_autoDiscoveryQ_uninventoried = インベントリ登録をしない
+view_bundleVersion_loadFailure = Failed to load bundle version data
+view_bundle_bundle = バンドル
+view_bundle_bundleDeployment = Bundle Deployment
+view_bundle_bundleDeployments = Bundle Deployments
+view_bundle_bundleDestinations = Bundle Destinations
+view_bundle_bundleFiles = Bundle Files
+view_bundle_bundleType = Bundle Type
+view_bundle_bundleVersion = Bundle Version
+view_bundle_bundleVersions = Bundle Versions
+view_bundle_bundles = バンドル
+view_bundle_createWizard_bundleDistro = Bundle Distribution
+view_bundle_createWizard_cancelFailure = Failed to fully cancel the creation of bundle
[{0}], version = [{1}] - the bundle may still exist in the database
+view_bundle_createWizard_cancelSuccessful = Canceled the creation of bundle [{0}],
version = [{1}]
+view_bundle_createWizard_clickToUploadRecipe = Click to load a recipe file
+view_bundle_createWizard_createFailure = Failed to create the bundle
+view_bundle_createWizard_createSuccessful = You have successfully created a bundle named
[{0}] with a version of [{1}]
+view_bundle_createWizard_enterRecipe = Please supply a valid recipe
+view_bundle_createWizard_enterUrl = Please enter a valid URL where the bundle
distribution file can be downloaded from
+view_bundle_createWizard_failedToUploadDistroFile = Failed to upload bundle distribution
file
+view_bundle_createWizard_failedToUploadFile = Failed to upload bundle file
+view_bundle_createWizard_loadBundleFileFailure = Cannot obtain bundle file information
from server
+view_bundle_createWizard_noAdditionalFilesNeeded = No additional files need to be
uploaded for this bundle
+view_bundle_createWizard_noBundleTypesAvail = No bundle types are available
+view_bundle_createWizard_noBundleTypesSupported = No bundle types are supported - you
must deploy a valid plugin that supports bundle deployments
+view_bundle_createWizard_provideBundleDistro = Provide a Bundle Distribution
+view_bundle_createWizard_recipeOption = Recipe
+view_bundle_createWizard_title = バンドル生成
+view_bundle_createWizard_uploadInProgress = Upload is in progress... This can take
several minutes for large files
+view_bundle_createWizard_uploadOption = Upload
+view_bundle_createWizard_uploadStepName = Upload Bundle Files
+view_bundle_createWizard_urlOption = URL
+view_bundle_createWizard_windowTitle = Bundle Creation Wizard
+view_bundle_createWizard_youMustChooseOne = You must choose one option in order to create
a bundle!
+view_bundle_deleteConfirm = Are you sure you want to delete this bundle? All versions,
destinations and deployments for this bundle will also be deleted.
+view_bundle_deploy = Deploy
+view_bundle_deployDir = Deploy Directory
+view_bundle_deployWizard_deployStep = Deploy Bundle to Destination Platforms
+view_bundle_deployWizard_deploying = Deploying...
+view_bundle_deployWizard_deploymentCreated = Created Deployment...
+view_bundle_deployWizard_deploymentCreatedDetail = You have created the deployment [{0}]
with the description [{1}]
+view_bundle_deployWizard_deploymentCreatedDetail_concise = You have created the
deployment [{0}]
+view_bundle_deployWizard_deploymentScheduled = Bundle Deployment Scheduled!
+view_bundle_deployWizard_deploymentScheduledDetail = You have scheduled the bundle
deployment [{0}] to the destination group [{1}]
+view_bundle_deployWizard_deploymentScheduledDetail_concise = You have scheduled the
bundle deployment
+view_bundle_deployWizard_destinationCreatedDetail = You have created the destination
[{0}] with the description [{1}]
+view_bundle_deployWizard_destinationCreatedDetail_concise = You have created the
destination [{0}]
+view_bundle_deployWizard_error_1 = Failed to delete new deployment on Cancel
+view_bundle_deployWizard_error_10 = Failed to create destination, it may already exist.
(Note, for an existing destination deploy from the Destination view)
+view_bundle_deployWizard_error_11 = Failed to find defined deployments.
+view_bundle_deployWizard_error_12 = Failed to find defined bundles.
+view_bundle_deployWizard_error_2 = Failed to delete new destination on Cancel
+view_bundle_deployWizard_error_3 = Failed to Schedule Deployment!
+view_bundle_deployWizard_error_4 = Failed to schedule deployment: {0}
+view_bundle_deployWizard_error_5 = Failed to Create Deployment!
+view_bundle_deployWizard_error_6 = Failed to create deployment: {0}
+view_bundle_deployWizard_error_7 = Failed to get deployment name.
+view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down
+view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage
+view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
+view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
+view_bundle_deployWizard_getDestStep = New Destination
+view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)
+view_bundle_deployWizard_getDest_desc = Destination Description
+view_bundle_deployWizard_getDest_name = Destination Name
+view_bundle_deployWizard_getInfoStep = Provide Deployment Information
+view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
+view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description
+view_bundle_deployWizard_getInfo_deploymentName = Deployment Name
+view_bundle_deployWizard_getOptionsStep = Deploy Options
+view_bundle_deployWizard_getOptions_deployLater = Deploy Later
+view_bundle_deployWizard_getOptions_deployNow = Deploy Now
+view_bundle_deployWizard_getOptions_deployTime = Deployment Time
+view_bundle_deployWizard_selectBundleStep = Select Deployment Bundle
+view_bundle_deployWizard_selectBundle_single = Select only a single bundle for
deployment.
+view_bundle_deployWizard_selectVersionStep = Select Deployment Bundle Version
+view_bundle_deployWizard_selectVersion_latest = Latest Version [{0}]
+view_bundle_deployWizard_selectVersion_live = Live Version [{0}]
+view_bundle_deployWizard_selectVersion_select = Select Version from List:
+view_bundle_deployWizard_title = バンドルデプロイウィザード
+view_bundle_deploy_action = Action
+view_bundle_deploy_backButton = Back to Destination
+view_bundle_deploy_clickForError = Click the icon for the error message
+view_bundle_deploy_deleteConfirm = Are you sure you want to delete this bundle
deployment?
+view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
+view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
+view_bundle_deploy_deployedBy = Deployed By
+view_bundle_deploy_deploymentPlatforms = Deployment Platforms
+view_bundle_deploy_installDetails = Install Details
+view_bundle_deploy_loadBundleFailure = Failed to find bundle
+view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments
+view_bundle_deploy_loadFailure = Failed to load bundle deployment
+view_bundle_deploy_name = Deployment Name
+view_bundle_deploy_operatingSystem = Operating System
+view_bundle_deploy_selectARow = Select a row to show installation details
+view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags
+view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags
+view_bundle_deploy_time = Deployment Time
+view_bundle_deployed = Deployed
+view_bundle_deployments = Deployments
+view_bundle_dest_backToBundle = Back to Bundle
+view_bundle_dest_created = Created
+view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle destination?
This only deletes it from the database; all bundle content that was deployed to this
destination on remote machines will remain.
+view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
+view_bundle_dest_deleteSuccessful = You successfully deleted the bundle destination
[{0}]
+view_bundle_dest_deployDir = Deploy Directory
+view_bundle_dest_group = Group
+view_bundle_dest_lastDeployedVersion = Last Deployed Version
+view_bundle_dest_lastDeploymentDate = Last Deployment Date
+view_bundle_dest_lastDeploymentStatus = Last Deployment Status
+view_bundle_dest_loadFailure = Failed to load bundle destinations
+view_bundle_dest_loadFailureVersionInfo = Failed to load bundle destination deployed
version information
+view_bundle_dest_purgeConfirm = This will purge the bundle content from all remote
machines. Are you sure you want to do this?
+view_bundle_dest_purgeFailure = Failed to purge the bundle destination [{0}] from some or
all of the remote machines.
+view_bundle_dest_purgeSuccessful = You successfully purged the bundle destination [{0}]
from all of the remote machines.
+view_bundle_dest_revertConfirm = This will revert all remote machines back to the
previous bundle deployment. Are you sure you want to do this?
+view_bundle_dest_tagUpdateFailure = Failed to update bundle destination tags
+view_bundle_dest_tagUpdateSuccessful = You have successfully updated the bundle
destination tags
+view_bundle_destinations = Destinations
+view_bundle_fileListView_fileSize = File Size
+view_bundle_fileListView_loadFailure = Failed to load bundle file data
+view_bundle_fileListView_md5 = MD5
+view_bundle_fileListView_sha256 = SHA256
+view_bundle_files = Files
+view_bundle_latestVersion = 最新バージョン
+view_bundle_list_backToAll = Back to All Bundles
+view_bundle_list_deleteConfirm = Are you sure you want to delete the selected bundles?
+view_bundle_list_deleteFailure = Failed to delete the bundle [{0}]
+view_bundle_list_deleteSuccessful = You successfully deleted the bundle [{0}]
+view_bundle_list_deletesFailure = Failed to delete the bundles
+view_bundle_list_deletesSuccessful = You successfully deleted the bundles
+view_bundle_list_destinationsCount = Destinations Count
+view_bundle_list_error1 = Failed to load bundle to deploy [{0}]
+view_bundle_list_error2 = Failed to get a single bundle to deploy [{0}]
+view_bundle_list_error3 = Failed to load bundle
+view_bundle_list_loadFailure = Failed to load the bundle to be deployed [{0}]
+view_bundle_list_loadWithLatestFailure = Failed to load bundle with the latest version
data
+view_bundle_list_singleLoadFailure = Failed to get a single bundle to be deployed [{0}]
+view_bundle_list_tagUpdateFailure = Failed to update bundle tags
+view_bundle_list_tagUpdateSuccessful = You have successfully updated the bundle tags
+view_bundle_list_versionsCount = Versions Count
+view_bundle_purge = Purge
+view_bundle_recipe = Recipe
+view_bundle_resDeployDS_loadFailure = Failed to load bundle resource deployments
+view_bundle_revert = Revert
+view_bundle_revertWizard_confirmStep_confirmation = Reverting Live Deployment to Previous
Deployment. Click "Next" to continue...
+view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment = Failed to find live
deployment; cannot revert
+view_bundle_revertWizard_confirmStep_liveDeployment = Live Deployment
+view_bundle_revertWizard_confirmStep_name = Revert Deployment Confirmation
+view_bundle_revertWizard_confirmStep_noLiveDeployment = No live deployment was found for
the destination [{0}]
+view_bundle_revertWizard_confirmStep_noLiveDeployment_concise = No live deployment was
found for the destination
+view_bundle_revertWizard_confirmStep_noPriorDeployment = The live deployment [{0}] cannot
be reverted because there is no prior deployment for the destination [{1}]
+view_bundle_revertWizard_confirmStep_noPriorDeployment_concise = The live deployment
cannot be reverted because there is no prior deployment
+view_bundle_revertWizard_confirmStep_prevDeployment = Previous Deployment
+view_bundle_revertWizard_getInfoStep_cleanDeploy = Clean Deployment? (this will delete an
old, existing deploy directory prior to starting the revert deployment)
+view_bundle_revertWizard_getInfoStep_getNameFailure = Failed to get revert deployment
name
+view_bundle_revertWizard_getInfoStep_name = Provide Revert Information
+view_bundle_revertWizard_getInfoStep_revertDeployDesc = Revert Deploy Description
+view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT From]\n{0}\n\n[REVERT
To]\n{1}
+view_bundle_revertWizard_getInfoStep_revertDeployName = Revert Deploy Name
+view_bundle_revertWizard_revertStep_name = Deploy Bundle to Destination Platforms
+view_bundle_revertWizard_revertStep_reverting = Reverting...
+view_bundle_revertWizard_revertStep_scheduled = You have successfully scheduled the
revert deployment!
+view_bundle_revertWizard_revertStep_scheduledDetails = You have successfully scheduled to
revert the bundle deployment [{0}] from resource group [{1}]
+view_bundle_revertWizard_revertStep_scheduledFailure = Failed to schedule revert
deployment!
+view_bundle_revertWizard_title = バンドル取り消し
+view_bundle_revertWizard_windowTitle = バンドル取り消しウィザード
+view_bundle_tree_loadFailure = Failed to load bundle data
+view_bundle_version_backToBundle = Back to Bundle
+view_bundle_version_bundleVersionTagUpdateFailure = Failed to update bundle version tags
+view_bundle_version_bundleVersionTagUpdateSuccessful = You have successfully updated the
bundle version tags
+view_bundle_version_deleteConfirm = Are you sure you want to delete this bundle version?
+view_bundle_version_deleteFailure = Failed to delete the bundle version [{0}]
+view_bundle_version_deleteSuccessful = You successfully deleted the bundle version [{0}]
+view_bundle_version_loadFailure = Failed to load bundle version
+view_bundle_versions = バージョン
+view_configCompare_comparingConfigs = Comparing Configurations
+view_configCompare_configCompare = Configuration Comparison
+view_configEdit_addItem = Add Item to List
+view_configEdit_confirm_1 = Are you sure you want to delete the selected properties from
the set?
+view_configEdit_confirm_2 = Are you sure you want to delete this row?
+view_configEdit_confirm_3 = Are you sure you want to delete the [{0}] selected [{1}]?
+view_configEdit_editRow = Edit Row
+view_configEdit_enterPropName = Enter the name of the property to be added.
+view_configEdit_error_1 = Configuration is not supported by this Resource.
+view_configEdit_error_2 = Connection settings are not supported by this Resource.
+view_configEdit_error_3 = Cannot add property named [{0}]. The property name is already
used in the set.
+view_configEdit_files = Files
+view_configEdit_hideAll = Hide All
+view_configEdit_jumpToSection = セクションへのジャンプ
+view_configEdit_msg_1 = Added property [{0}] to the set.
+view_configEdit_msg_2 = Removed properties from the set.
+view_configEdit_msg_3 = [{0} {1}] deleted from list.
+view_configEdit_msg_4 = Item added to list.
+view_configEdit_properties = Properties
+view_configEdit_tooltip_1 = Delete the selected items from the list.
+view_configEdit_tooltip_2 = Add an item to the list.
+view_configEdit_viewRow = View Row
+view_configurationDetails_allPropertiesValid = All configuration properties have valid
values, so the configuration can now be saved.
+view_configurationDetails_configNotUpdatedDueToNoChange = Configuration was not updated,
since the new configuration is equivalent to the current configuration.
+view_configurationDetails_error_updateFailure = Failed to update configuration.
+view_configurationDetails_messageConcise = Configuration updated - current version is
{0}.
+view_configurationDetails_messageDetailed = Configuration updated to version {0} for
Resource [{1}].
+view_configurationDetails_noPermission = You do not have permission to edit this
Resource''s configuration.
+view_configurationDetails_somePropertiesInvalid = The following configuration properties
have invalid values: {0}. The values must be corrected before the configuration can be
saved.
+view_configurationHistoryDetails_error_loadFailure = Unable to load configuration
history.
+view_configurationHistoryList_cannotDeleteCurrent = One of the selected history items
represents the current configuration - you cannot delete it.
+view_configurationHistoryList_cannotDeleteGroupItems = One or more selected configuration
history items are part of a group configuration update. You must purge that parent group
history item before you can delete its individual resource history items.
+view_configurationHistoryList_delete_failure = Failed to delete the configuration history
items.
+view_configurationHistoryList_delete_success = You successfully deleted the selected
configuration history items.
+view_configurationHistoryList_rollback = Rollback
+view_configurationHistoryList_rollback_failure = Failed to rollback the configuration.
The original configuration is still in effect.
+view_configurationHistoryList_rollback_success = You successfully rolled back the
configuration to the selected past configuration.
+view_configurationHistoryList_table_clickStatusIcon = Click the status icon for full
details
+view_configurationHistoryList_table_statusFailure = This configuration update failed
+view_configurationHistoryList_table_statusInprogress = This configuration update is still
in progress
+view_configurationHistoryList_table_statusNochange = No changes were made to this
configuration
+view_configurationHistoryList_table_statusSuccess = This configuration update was
successful
+view_configurationHistoryList_title = 構成履歴
+view_connectionSettingsDetails_allPropertiesValid = All connection settings have valid
values, so the settings can now be saved.
+view_connectionSettingsDetails_error_updateFailure = Failed to update connection
settings.
+##view_connectionSettingsDetails_messageConcise_updateSuccess = Connection settings
update initiated.
+##view_connectionSettingsDetails_messageDetailed_updateSuccess = Connection settings
update initiated for Resource [{0}].\n
+view_connectionSettingsDetails_noPermission = You do not have permission to edit this
Resource''s connection settings.
+view_connectionSettingsDetails_somePropertiesInvalid = The following connection settings
have invalid values: {0}. The values must be corrected before the settings can be saved.
+view_core_error_1 = New Alerts lookup failed
+view_core_loggedOut = Logged out
+view_core_noRecentAlerts = There are no recent alerts to report
+view_core_recentAlerts = There are [{0}] recent alerts - click to go to the recent alerts
report
+view_core_uncaught = グローバルにキャッチされない例外
+view_dashboardManager_deleteFail = Failed to delete dashboard.
+view_dashboardManager_deleted = Successfully deleted dashboard {0}
+view_dashboardManager_error = Failed to save dashboard to server
+view_dashboardManager_saved = Saved dashboard {0} to server
+view_dashboardManager_success = Saved dashboard
+view_dashboard_favorites_error1 = Failed to load favorite Resources.
+view_dashboardsManager_error1 = Failed to add new dashboard
+view_dashboardsManager_message_title_details =
<h1>RHQへようこそ2</h1>\n<p>RHQプロジェクトは抽象化されたプラグインベースのシステム管理スイートで、複数のプロダクトやプラットフォームに対してコア機能を横断的に適用できる拡張可能で、統合化されたシステム管理を提供します。このプロジェクトはレイヤ化されたモジュールによって設計されていて、デプロイのための柔軟なアーキテクチャを提供します。それは企業全体に対する監査と履歴の管理を提供するコアとなるユーザーインタフェースを導入します。サーバー/エージェントアーキテクチャはリモートでの管理と特定プロダクトのサポートを実現するプラグインを提供します。
</p>\n <p>このデフォルトのダッシュボードは上の「編集モード」ボタンをすることで編集可能です。</p>
+view_dashboards_confirm1 = Are you sure you want to delete
+view_dashboards_portlets_refresh_fail1 = Failed to update interval for portlets that
auto-refresh
+view_dashboards_portlets_refresh_fail2 = Failed to disable reload for portlets that
auto-refresh
+view_dashboards_portlets_refresh_multiple_min = {0} minutes
+view_dashboards_portlets_refresh_none = No Refresh
+view_dashboards_portlets_refresh_one_min = 1 minute
+view_dashboards_portlets_refresh_success1 = Updated interval for portlets that
auto-refresh
+view_dashboards_portlets_refresh_success2 = Stopping reload for portlets that
auto-refresh
+view_dashboards_title = ダッシュボード
+view_dynagroup_children = DynaGroup Children
+view_dynagroup_compatible = Compatible
+view_dynagroup_definitionAlreadyExists = A group definition already exists with this
name
+view_dynagroup_definitionCreated = You have successfully created a group definition named
[{0}]
+view_dynagroup_definitionLoadFailure = Failed to load group definitions
+view_dynagroup_definitions = DynaGroup Definitions
+view_dynagroup_deleteFailureSelection = Failed to delete the selected group definitions
+view_dynagroup_deleteSuccessfulSelection = You have successfully deleted [{0}] group
definitions
+view_dynagroup_editing = Editing [{0}]
+view_dynagroup_exprBuilder_addExpression = Add Expression
+view_dynagroup_exprBuilder_comparisonType = Comparison Type
+view_dynagroup_exprBuilder_comparisonType_contains = contains
+view_dynagroup_exprBuilder_comparisonType_endsWith = ends with
+view_dynagroup_exprBuilder_comparisonType_equals = equals
+view_dynagroup_exprBuilder_comparisonType_startsWith = starts with
+view_dynagroup_exprBuilder_comparisonType_tooltip = Comparison Type
+view_dynagroup_exprBuilder_definingPlugin = Defining Plugin
+view_dynagroup_exprBuilder_definingPlugin_tooltip = The plugin to search
+view_dynagroup_exprBuilder_expression = Expression
+view_dynagroup_exprBuilder_expressionType = Expression Type
+view_dynagroup_exprBuilder_expressionType_pluginConfig = Plugin Configuration
+view_dynagroup_exprBuilder_expressionType_resource = Resource
+view_dynagroup_exprBuilder_expressionType_resourceCategory = Resource Category
+view_dynagroup_exprBuilder_expressionType_resourceConfig = Resource Configuration
+view_dynagroup_exprBuilder_expressionType_resourceType = Resource Type
+view_dynagroup_exprBuilder_expressionType_tooltip = The type of property this expression
switches on:<br/> <b>Resource</b>: A resource property such as its name
or version<br/> <b>Resource Type</b>: Search for resources of a specific
type<br/> <b>Resource Category</b>: Search for resources by category:
platform, server, service<br/> <b>Trait</b>: Resources that have
selected values for a monitored trait<br/> <b>Plugin Configuration</b>:
Search by the plugin component configuration setting of the component<br/>
<b>Resource Configuration</b>: Search by the configuration setting of the
managed resource
+view_dynagroup_exprBuilder_expressionType_trait = Trait
+view_dynagroup_exprBuilder_expression_tooltip = This is the full expression that is
represented by the selections in the form below. This text will be added to your group
definition expression text when you click the "Add Expression" button.
+view_dynagroup_exprBuilder_groupBy = Group by
+view_dynagroup_exprBuilder_groupBy_tooltip = GroupBy will cause the system to pivot on
the values from the entered expressions creating a separate group for each value. For
example, GroupBy on the cluster name to create a group for each cluster with all cluster
members in it.
+view_dynagroup_exprBuilder_noPlugins = --No plugins--
+view_dynagroup_exprBuilder_noProperties = --No properties--
+view_dynagroup_exprBuilder_noResourceTypes = --No resource types--
+view_dynagroup_exprBuilder_pluginLoadFailure = Cannot get the list of plugins
+view_dynagroup_exprBuilder_propLoadFailure = Cannot get list of properties
+view_dynagroup_exprBuilder_propertyName = Property Name
+view_dynagroup_exprBuilder_propertyName_tooltip = The name of the property to query. This
is defined by the expression type as well as the resource type.
+view_dynagroup_exprBuilder_resTypeLoadFailure = Cannot get list of resource types for
plugin [{0}]
+view_dynagroup_exprBuilder_resource = Resource
+view_dynagroup_exprBuilder_resourceType = Resource Type
+view_dynagroup_exprBuilder_resourceType_tooltip = The type of resource
+view_dynagroup_exprBuilder_resource_child = Child
+view_dynagroup_exprBuilder_resource_grandparent = Grandparent
+view_dynagroup_exprBuilder_resource_greatGrandparent = GreatGrandparent
+view_dynagroup_exprBuilder_resource_greatGreatGrandparent = GreatGreatGrandparent
+view_dynagroup_exprBuilder_resource_parent = Parent
+view_dynagroup_exprBuilder_resource_resource = Resource
+view_dynagroup_exprBuilder_resource_tooltip = Choose the level of the resource you wish
to select. For example, select "parent" will find resources whose parent
resource matches the rest of the expression.
+view_dynagroup_exprBuilder_title = Expression Builder
+view_dynagroup_exprBuilder_unset = Unset
+view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the "=" operator because
of how databases store and query data.
+view_dynagroup_exprBuilder_value_tooltip = The string value for the expression to query
+view_dynagroup_expression = Expression
+view_dynagroup_expressionBuilderIconTooltip = Expression Builder...
+view_dynagroup_expressionSet = Expression Set
+view_dynagroup_lastCalculationTime = Last Calculation Time
+view_dynagroup_loadDefinitionFailure = Failed to load group definition [{0}]
+view_dynagroup_loadDefinitionMissing = There is no group definition with the ID of [{0}]
+view_dynagroup_mixed = Mixed
+view_dynagroup_newGroupDefinition = New Group Definition
+view_dynagroup_nextCalculationTime = Next Calculation Time
+view_dynagroup_permDenied = You do not have permission to view group definitions
+view_dynagroup_recalcFailure = Failed to recalculated this group definition
+view_dynagroup_recalcFailureSelection = Failed to recalculated the selected group
definitions
+view_dynagroup_recalcSuccessful = You have successfully recalculated this group
definition
+view_dynagroup_recalcSuccessfulSelection = You have successfully recalculated [{0}] group
definitions
+view_dynagroup_recalculate = Recalculate
+view_dynagroup_recalculationInterval = Recalculation Interval (ms)
+view_dynagroup_recursive = Recursive
+view_dynagroup_saveAndRecalculate = Save & Recalculate
+view_dynagroup_saveFailure = Failed to save the group definition named [{0}]
+view_dynagroup_saveSuccessful = You have successfully saved the group definition named
[{0}]
+view_dynagroup_singleSaveFailure = An error occurred - there should have been one
created, but instead there were [{0}] created
+view_dynagroup_template_customExpression = Custom Expression...
+view_dynagroup_template_downedResources = All resources currently down
+view_dynagroup_template_jbossas4_clusters = JBossAS 4 - Clusters
+view_dynagroup_template_jbossas4_earClusters = JBossAS 4 - Clustered EARs
+view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - All hosting any version of
"my" app
+view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - All non-secured
+view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - Unique versions
+view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - Clusters
+view_dynagroup_template_platforms = Platform resources in inventory
+view_dynagroup_template_uniqueResourceTypes = Unique resource types in inventory
+view_groupConfigEdit_member = Member
+view_groupConfigEdit_noListProps = List properties are not currently supported for group
configurations.
+view_groupConfigEdit_setAll = Set all values to:
+view_groupConfigEdit_tooltip_1 = Member values differ - click icon to edit them.
+view_groupConfigEdit_unset = Unset
+view_groupConfigEdit_valsDiff = member values differ
+view_groupConfigEdit_valsDiffForProp = Member Values for Property [{0}]
+view_groupCreateWizard_createFailure = Failed to create the resource group
+view_groupCreateWizard_createStepName = Group Settings
+view_groupCreateWizard_createStep_recursive = Recursive
+view_groupCreateWizard_createSuccessful_concise = You have created a new resource group.
[<a href="{0}">View Group</a>]
+view_groupCreateWizard_createSuccessful_full = You have created a new [{0}] resource
group with the name [{1}] that contains [{2}] member resources
+view_groupCreateWizard_membersStepName = Select Members
+view_groupCreateWizard_title = グループ生成
+view_groupCreateWizard_windowTitle = グループ生成
+view_groupInventoryMembers_button_updateMembership = Update Membership...
+view_groupInventoryMembers_title_updateMembership = Update Membership
+view_group_detail_failLoad = Failed to load group for group with ID [{0}]
+view_group_detail_failLoadComp = Failed to load group composite for group with ID [{0}]
+view_group_detail_failRecursiveChange = Failed to update the recursive setting for group
[{0}]
+view_group_detail_recursiveChange = You successfully changed the recursive setting for
group [{0}]
+view_group_inventory_activity_no_recent_metrics = This group has no recent metrics
+view_group_meas_schedules_title = Group Metric Collection Schedules
+view_group_membership_failFetch = Failed to fetch Resource Group
+view_group_membership_saveFailure = Failed to update membership of group [{0}]
+view_group_membership_saveSuccessful = You have updated the membership of group [{0}]
+view_group_operationScheduleDetails_failedToLoadMembers = Failed to load group member
Resources.
+view_group_operationScheduleDetails_field_execute = Execute
+view_group_operationScheduleDetails_field_haltOnFailure = Halt on Failure?
+view_group_operationScheduleDetails_memberResource = Member Resource
+view_group_operationScheduleDetails_value_parallel = in parallel
+view_group_operationScheduleDetails_value_sequential = in the order specified below (drag
and drop member Resources to change order)
+view_group_pluginConfig_edit_currentGroupProperties = Current Group Properties
+view_group_pluginConfig_edit_invalid = The following connection setting properties have
invalid values and must be corrected before the connection settings can be saved: [{0}]
+view_group_pluginConfig_edit_noperm = You do not have permission to edit this group
connection settings
+view_group_pluginConfig_edit_saveFailure = Failed to initiate group connection setting
update for [{0}] compatible group named [{1}]
+view_group_pluginConfig_edit_saveInitiated_concise = The group connection setting updates
have been initiated
+view_group_pluginConfig_edit_saveInitiated_full = The group connection setting updates
have been initiated for the [{0}] compatible group named [{1}]
+view_group_pluginConfig_edit_saveTooltip = Update the connection settings of all group
members
+view_group_pluginConfig_edit_valid = All connection setting properties have valid values,
so the connection settings can now be saved
+view_group_pluginConfig_members_fetchFailure = Failed to get plugin config update history
for members of group [{0}]
+view_group_pluginConfig_members_fetchFailureConn = Failed to retrieve member connection
settings for [{0}]
+view_group_pluginConfig_members_fetchFailureConnInProgress = A group plugin configuration
update is currently in progress. You must wait until the update is finished before you can
view the group settings.
+view_group_pluginConfig_members_statusDetails = Status Details
+view_group_pluginConfig_members_statusFailure = This configuration update failed for an
unknown reason
+view_group_pluginConfig_members_statusInprogress = This configuration update is still in
progress
+view_group_pluginConfig_members_statusNochange = No changes were made to this
configuration
+view_group_pluginConfig_members_statusSuccess = This configuration update was successful
+view_group_pluginConfig_members_title = Group Connection Settings Member Histories
+view_group_pluginConfig_table_clickStatusIcon = Click the status icon for full details
+view_group_pluginConfig_table_deleteFailure = Failed to delete group plugin config
history
+view_group_pluginConfig_table_deleteSuccessful = You have deleted [{0}] history items
+view_group_pluginConfig_table_failFetch = Failed to get group plugin config history
+view_group_pluginConfig_table_msg1 = View Member History for status of each individual
resource
+view_group_pluginConfig_table_statusDetails = Status Details
+view_group_pluginConfig_table_statusFailure = This group configuration update failed
+view_group_pluginConfig_table_statusInprogress = This group configuration update is still
in progress
+view_group_pluginConfig_table_statusNochange = No changes were made to this group
configuration
+view_group_pluginConfig_table_statusSuccess = This group configuration update was
successful
+view_group_pluginConfig_table_title = Group Connection Settings History
+view_group_pluginConfig_table_viewMemberHistory = View Member History
+view_group_pluginConfig_table_viewSettings = View Settings
+view_group_pluginConfig_view_groupProperties = Group Properties
+view_group_pluginConfig_view_noperm = You do not have permissions to see the connection
settings
+view_group_resConfig_edit_invalid = The following configuration properties have invalid
values and must be corrected before the configuration can be saved: [{0}]
+view_group_resConfig_edit_loadFail = Failed to retrieve member Resource configurations
for [{0}]
+view_group_resConfig_edit_noperm = You do not have permission to edit this group
configuration
+view_group_resConfig_edit_saveFailure = Failed to initiate group configuration update for
[{0}] compatible group named [{1}]
+view_group_resConfig_edit_saveInitiated_concise = The group configuration updates have
been initiated
+view_group_resConfig_edit_saveInitiated_full = The group configuration updates have been
initiated for the [{0}] compatible group named [{1}]
+view_group_resConfig_edit_saveTooltip = Update the configurations of all group members
+view_group_resConfig_edit_valid = All configuration properties have valid values, so the
configuration can now be saved
+view_group_resConfig_members_fetchFailure = Failed to get resource config update history
for members of group [{0}]
+view_group_resConfig_members_fetchFailureConfig = Failed to retrieve member resource
configuration settings for [{0}]
+view_group_resConfig_members_fetchFailureConfigInProgress = A group resource
configuration update is currently in progress. You must wait until the update is finished
before you can view the group settings.
+view_group_resConfig_members_statusDetails = Status Details
+view_group_resConfig_members_statusFailure = This configuration update failed for an
unknown reason
+view_group_resConfig_members_statusInprogress = This configuration update is still in
progress
+view_group_resConfig_members_statusNochange = No changes were made to this configuration
+view_group_resConfig_members_statusSuccess = This configuration update was successful
+view_group_resConfig_members_title = Group Resource Configuration Member Histories
+view_group_resConfig_table_clickStatusIcon = Click the status icon for full details
+view_group_resConfig_table_deleteFailure = Failed to delete group resource config
history
+view_group_resConfig_table_deleteSuccessful = You have deleted [{0}] history items
+view_group_resConfig_table_failFetch = Failed to get group resource config history
+view_group_resConfig_table_msg1 = View Member History for status of each individual
resource
+view_group_resConfig_table_statusDetails = Status Details
+view_group_resConfig_table_statusFailure = This group configuration update failed
+view_group_resConfig_table_statusInprogress = This group configuration update is still in
progress
+view_group_resConfig_table_statusNochange = No changes were made to this group
configuration
+view_group_resConfig_table_statusSuccess = This group configuration update was
successful
+view_group_resConfig_table_title = Group Resource Configuration History
+view_group_resConfig_table_viewMemberHistory = View Member History
+view_group_resConfig_table_viewSettings = View Settings
+view_group_resConfig_view_groupProperties = Group Properties
+view_group_resConfig_view_noperm = You do not have permissions to see the resource
configuration settings
+view_group_summary_compatible = Compatible
+view_group_summary_descUpdateFailure = Failed to change the description of the resource
group with ID [{0}]
+view_group_summary_descUpdateSuccessful = You have changed the description of this
resource group
+view_group_summary_dynamic = Dynamic
+view_group_summary_dynamicNote = Dynamic group names and descriptions are managed, and
therefore are not editable
+view_group_summary_groupDefinition = Group Definition
+view_group_summary_memberCount = Member Count
+view_group_summary_memberType = Member Type
+view_group_summary_mixed = Mixed
+view_group_summary_nameUpdateFailure = Failed to change the name of the resource group
with ID [{0}] - could not change from [{1}] to [{2}]
+view_group_summary_nameUpdateSuccessful = You have changed the name of the resource group
with ID [{0}] from [{1}] to [{2}]
+view_group_summary_recursive = Recursive
+view_helpTop_description = このセクションはドキュメンテーション、チュートリアル、バージョン、その他のヘルプ情報を提供します。
+view_help_section_product = プロダクト
+view_help_section_product_about = RHQについて
+view_inventory_adq = ディスカバリキュー
+view_inventory_allGroups = すべてのグループ
+view_inventory_allResources = すべてのリソース
+view_inventory_collectionInterval = コレクション間隔
+view_inventory_dynagroupDefs = 動的グループ定義
+view_inventory_eventDetails_loadFailed = An error occurred loading the event details
+view_inventory_eventHistory_deleteFailed = Failed to deleted selected events for [{0}]
+view_inventory_eventHistory_deleteSuccessful = You have successfully deleted [{0}] events
for [{1}]
+view_inventory_eventHistory_details = Details
+view_inventory_eventHistory_detailsFilter = Details Filter
+view_inventory_eventHistory_groupEventHistory = Group Event History
+view_inventory_eventHistory_purgeFailed = Failed to purge events for [{0}]
+view_inventory_eventHistory_purgeSuccessful = You have successfully purged [{0}] events
for [{1}]
+view_inventory_eventHistory_resourceEventHistory = Resource Event History
+view_inventory_eventHistory_severity = Severity
+view_inventory_eventHistory_severityFilter = Severity Filter
+view_inventory_eventHistory_sourceFilter = Source Filter
+view_inventory_eventHistory_sourceLocation = Source Location
+view_inventory_eventHistory_timestamp = Timestamp
+view_inventory_groups = グループ
+view_inventory_groups_children = Children
+view_inventory_groups_deleteFailed = Failed to delete the selected resource groups
+view_inventory_groups_deleteSuccessful = You have successfully deleted the selected
resource groups
+view_inventory_groups_descendants = Descendants
+view_inventory_groups_loadFailed = Failed to load group composite data
+view_inventory_groups_resourceGroups = Resource Groups
+view_inventory_mixed = mixed
+view_inventory_platforms = プラットフォーム
+view_inventory_problemGroups = 問題グループ
+view_inventory_resource_loadFailed = Resource with id [{0}] does not exist or is not
accessible
+view_inventory_resources_deleteConfirm = Are you sure you want to delete the selected
resources?
+view_inventory_resources_deleteFailed = Failed to delete the selected resources
+view_inventory_resources_deleteSuccessful = You have successfully deleted the selected
resources
+view_inventory_resources_loadFailed = Failed to load resource composite data
+view_inventory_resources_title = リソース
+view_inventory_resources_title_children = 子リソース
+view_inventory_resources_title_members = メンバーリソース
+view_inventory_resources_uninventoryConfirm = Are you sure you want to uninventory the
selected resources? Note that if a selected resource still exists, then it will get
rediscovered during its agent''s next discovery scan.
+view_inventory_resources_uninventoryFailed = Failed to uninventory the selected
resources
+view_inventory_resources_uninventorySuccessful = You have successfully uninventoried the
selected resources
+view_inventory_sectionHelp =
このセクションにおいて、新規に発見されたリソース、インベントリに登録されたリソース、グループの表示と管理がおこなわれます。
+view_inventory_servers = サーバー
+view_inventory_services = サービス
+view_inventory_summary_agent_error1 = Failed to locate agent managing resource id
+view_inventory_summary_agent_error2 = Failed to ping agent managing resource id
+view_inventory_summary_agent_error3 = You do not have permission to view details for this
Agent.
+view_inventory_summary_agent_fullEnpoint = Full Endpoint
+view_inventory_summary_agent_fullEnpoint_err1 = !No remote endpoint associated with this
resource!
+view_inventory_summary_agent_last_title = Last Received Availability Report
+view_inventory_summary_agent_status_title = Agent Communications Status
+view_inventory_summary_agent_title = Agent Managing this Resource
+view_inventory_unavailableServers = 利用不能サーバー
+view_leftNav_unknownPage = Unknown page name [{0}] for section [{1}] - URL is invalid.
+view_login_invalidEmail = Invalid e-mail address
+view_login_login = ログイン
+view_login_logout = ログアウト
+view_login_noBackend = The backend datasource is unavailable.
+view_login_noLdap = Note: Optional retrieval of ldap details unsuccessful. Manual entry
is required.
+view_login_noUser = The username or password provided does not match our records.
+view_login_prompt = ログインしてください
+view_login_registerLater = (Cancel - Complete registration later.)
+view_login_registerLdapSuccess = Successfully registered the new LDAP User.
+view_login_registerUser = Register User
+view_login_welcome = ようこそ
+view_login_welcomeMsg = Welcome to RHQ! <br/><br/> Enter/update the following
fields to complete your registration process.<br/> Once you click "OK",
you will be logged in.<br/><br/>
+view_measureRange_last = Time Range - Previous
+view_measureRange_simple = Simple...
+view_measureRange_start = Time Range - Start
+view_measureTable_chartMetricValues = Chart Selected Metrics
+view_measureTable_getLive = Get Live Value
+view_measureTable_getLive_failure = Cannot get live values for those metrics. Make sure
the agent is running and the managed resource is up.
+view_measureTable_live_title = ライブデータ
+view_measure_nan = --no data available--
+view_measurementOob_title = 疑わしいメトリックス
+view_menuBar_logout = ログアウト
+view_messageCenter_clearAllMessages = Clear All Messages
+view_messageCenter_lastNMessages = Last {0} Messages
+view_messageCenter_maxMessages = Max Messages
+view_messageCenter_messageBarShowDetails = Show Details
+view_messageCenter_messageDetail = Detail
+view_messageCenter_messageSeverity = Severity
+view_messageCenter_messageTime = Time
+view_messageCenter_messageTitle = メッセージセンター
+view_messageCenter_noRecentMessages = No Recent Messages
+view_messageCenter_stackTraceFollows = --- STACK TRACE FOLLOWS ---
+view_metric_traits = Traits
+view_metric_viewTraitHistory = Value History for Trait [{0}]
+view_operationHistoryDetails_dateCompleted = 完了日
+view_operationHistoryDetails_dateSubmitted = 発行日
+view_operationHistoryDetails_error_fetchFailure = Failure loading operation history.
+view_operationHistoryDetails_noResults = This operation does not return any results.
+view_operationHistoryDetails_operation = オペレーション
+view_operationHistoryDetails_parameters = パラメータ
+view_operationHistoryDetails_requestor = 要求者
+view_operationHistoryDetails_results = 結果
+view_operationHistoryDetails_status = ステータス
+view_operationHistoryList_button_forceDelete = Force Delete
+view_operationHistoryList_button_runOperation = Run Operation
+view_operationHistoryList_notYetStarted = not yet started
+view_operationHistoryList_title = オペレーション履歴
+view_operationScheduleDetails_enterParametersBelow = Enter parameters below...
+view_operationScheduleDetails_fieldDefault_description = Select an operation to see its
description.
+view_operationScheduleDetails_fieldDefault_parameters = Select an operation to see its
parameters.
+view_operationScheduleDetails_fieldHelp_description = an optional description of this
scheduled operation (e.g. nightly maintenance app server restart)
+view_operationScheduleDetails_fieldHelp_timeout = a time duration - if specified, if the
duration elapses before a scheduled operation execution has completed, the RHQ Server will
timeout the operation and consider it to have failed; note, it is usually not possible to
abort the underlying managed resource operation if it was already initiated
+view_operationScheduleDetails_field_description = 説明
+view_operationScheduleDetails_field_parameters = パラメータ
+view_operationScheduleDetails_field_timeout = タイムアウト
+view_operationScheduleDetails_noParameters = This operation does not take any
parameters.
+view_operationScheduleDetails_operationSchedule = オペレーションスケジュール
+view_portlet_autodiscovery_setting_platforms = discovered platforms
+view_portlet_configure_definitionDesc = The configuration settings for the portlet.
+view_portlet_configure_definitionTitle = Portlet Configuration
+view_portlet_configure_needed = Click the Settings button to configure this portlet.
+view_portlet_configure_notNeeded = Configuration is not necessary for this portlet.
+view_portlet_defaultName_autodiscovery = ディスカバリキュー
+view_portlet_defaultName_favoriteResources = お気に入りリソース
+view_portlet_defaultName_groupMetric = Resource Group Metric Graph
+view_portlet_defaultName_group_alerts = グループ: アラート
+view_portlet_defaultName_group_bundles = グループ: バンドルデプロイ
+view_portlet_defaultName_group_config_updates = グループ: 構成の更新
+view_portlet_defaultName_group_events = グループ: イベント数
+view_portlet_defaultName_group_metrics = グループ: メトリックス
+view_portlet_defaultName_group_oobs = グループ: OOB 条件
+view_portlet_defaultName_group_operations = グループ: オペレーション
+view_portlet_defaultName_group_pkg_hisory = グループ: パッケージ履歴
+view_portlet_defaultName_inventorySummary = インベントリサマリ
+view_portlet_defaultName_mashup = マッシュアップ
+view_portlet_defaultName_message = メッセージ
+view_portlet_defaultName_operations = 最近のオペレーション
+view_portlet_defaultName_platformSummary = プラットフォーム利用率
+view_portlet_defaultName_problemResources = アラートまたは利用できないリソース
+view_portlet_defaultName_recentAlerts = 最近のアラート
+view_portlet_defaultName_recentlyAddedResources = 最近追加されたリソース
+view_portlet_defaultName_resourceMetric = Resource Metric Graph
+view_portlet_defaultName_resource_alerts = リソース: アラート
+view_portlet_defaultName_resource_bundles = リソース: バンドルデプロイ
+view_portlet_defaultName_resource_config_updates = リソース: 構成の更新
+view_portlet_defaultName_resource_events = リソース: イベント数
+view_portlet_defaultName_resource_metrics = リソース: 測定
+view_portlet_defaultName_resource_oobs = リソース: OOB メトリックス
+view_portlet_defaultName_resource_operations = リソース: オペレーション
+view_portlet_defaultName_resource_pkg_hisory = リソース: パッケージ履歴
+view_portlet_defaultName_tagCloud = タグ数
+view_portlet_factory_invalidPortlet = This is an obsolete portlet that is no longer
valid. Please delete it.
+view_portlet_graph_configure_metricDefinition_graph = The metric definition id to graph
+view_portlet_graph_configure_resource_graph = The resource to graph
+view_portlet_help_autodiscovery = This portlet allows import or ignore of newly
discovered resources. Imported resources are added to inventory for monitoring and
management. Ignored resources are not imported and are hidden from view unless explicitly
unignored.
+view_portlet_help_bundle_deps = This portlet shows relevant bundle deployments based on
display criteria configured.
+view_portlet_help_config_updates = This portlet displays recent configuration changes
consistent with configuration settings.
+view_portlet_help_eventcounts = This portlet displays Event counts consistent with
display criteria configured.
+view_portlet_help_favoriteResources = This portlet displays the current user''s
favorite resources.
+view_portlet_help_graph = This portlet displays the resource metric graph.
+view_portlet_help_inventorySummary = This portlet displays a short summary of the current
user''s viewable inventory and metric collection rate.
+view_portlet_help_mashup = This portlet displays the returned content of a remote HTTP
request (via an iframe).
+view_portlet_help_message = This portlet displays a static HTML message. The
<i>message</i> property must be configured.
+view_portlet_help_metrics = This portlet graphs relevant recent metric data based on
display criteria configured.
+view_portlet_help_none = There is no help available for this portlet.
+view_portlet_help_oobs = This portlet displays OOB(Out of Bound) metric conditions.
+view_portlet_help_operations = This portlet displays the most recently executed
operations for the current user''s inventory.
+view_portlet_help_operations_criteria = This portlet displays Operations consistent with
display criteria configured.
+view_portlet_help_pkg_history = This portlet shows relevant package history based on
display criteria configured.
+view_portlet_help_platformSummary = This portlet displays utilization data (such as
current CPU and memory usage) for platform resources that are accessible by the current
user.
+view_portlet_help_problemResources = This portlet displays the current user''s
alerted or unavailable resources.
+view_portlet_help_recentAlerts = This portlet displays alerts recently fired on the
current user''s viewable inventory.
+view_portlet_help_recentlyAdded = This portlet displays resources that have recently been
imported into inventory.
+view_portlet_help_scheduledOperations = This portlet displays the next scheduled
operations for the current user''s inventory.
+view_portlet_help_tagCloud = This portlet displays the relative tag counts for the
current user''s inventory.
+view_portlet_inventory_error1 = Failed to retrieve inventory summary
+view_portlet_inventory_tooltip_collapse = Click to hide details for this resource.
+view_portlet_inventory_tooltip_expand = Click to show more details for this resource.
+view_portlet_message_title = The message to display.
+view_portlet_operations_config_completed = completed operations
+view_portlet_operations_config_completed_enable = Whether to enable completed operations
results grouping for dashboard.
+view_portlet_operations_config_completed_maximum = Maximum number of Completed operations
to display.
+view_portlet_operations_config_scheduled_enable = Whether to enable scheduled operations
results grouping for dashboard.
+view_portlet_operations_config_scheduled_maximum = Maximum number of Scheduled operations
to display.
+view_portlet_operations_config_show_last = show Last
+view_portlet_operations_config_show_next = show Next
+view_portlet_operations_disabled = (Results currently disabled. Change settings to enable
results.
+view_portlet_platform_platform_error_1 = Failed to load platform metrics
+view_portlet_platform_type_error_1 = Could not load type data
+view_portlet_problemResources_config_display_maximum = Maximum number of Problem
resources to display.
+view_portlet_problemResources_config_display_range = Show problem resources going back
this many hours.
+view_portlet_problemResources_config_display_range2 = From {0} to {1}
+view_portlet_problemResources_maxDisplaySetting = maximum resources.
+view_portlet_recentAlerts_config_members = Select Members
+view_portlet_recentAlerts_config_priority_label = priority Alerts,
+view_portlet_recentAlerts_config_when = within the past
+view_portlet_recentAlerts_fail_msg = Failed to load resources assigned for alert
filtering.
+view_portlet_recentlyAdded_error1 = Failed to load recently added resources
+view_portlet_recentlyAdded_setting_addedPlatforms = recently added platforms
+view_portlet_results_empty = 指定されたクライテリアの結果は見つかりません
+view_remoteAgentInstall_agentStatus = エージェントのステータス
+view_remoteAgentInstall_agentStatusDefault = -ステータスの更新ボタンをクリックしてください-
+view_remoteAgentInstall_buttonFindAgent = エージェントの発見
+view_remoteAgentInstall_connInfo = 接続情報
+view_remoteAgentInstall_error_1 = Error occurred while trying to find agent install path
+view_remoteAgentInstall_error_2 = Could not find an agent installed when looking in
common locations
+view_remoteAgentInstall_error_3 = Could not find an agent installed at or under [{0}]
+view_remoteAgentInstall_error_4 = Failed to install agent
+view_remoteAgentInstall_error_5 = Failed to start agent
+view_remoteAgentInstall_error_6 = Failed to stop agent
+view_remoteAgentInstall_installAgent = エージェントのインストール
+view_remoteAgentInstall_installInfo = エージェントのインストール情報
+view_remoteAgentInstall_installPath = エージェントのインストールパス
+view_remoteAgentInstall_owner = オーナー
+view_remoteAgentInstall_promptHost = The host where the agent is or will be installed
+view_remoteAgentInstall_promptInstallPath = Where the agent is or will be installed. If
you aren''t sure where an agent is installed, enter a parent directory and click
the ''Find Agent'' button to scan that directory and below. If you enter
an empty path, common locations are searched on the host for an agent install.
+view_remoteAgentInstall_promptPassword = The credentials that are used to authenticate
the user on the host via SSH
+view_remoteAgentInstall_promptPort = The port the SSH server is listening to. If not
specified, the default is 22
+view_remoteAgentInstall_promptUser = The name of the user whose credentials are passed to
the host via SSH
+view_remoteAgentInstall_result = Result
+view_remoteAgentInstall_resultCode = ResultCode
+view_remoteAgentInstall_startAgent = エージェントの起動
+view_remoteAgentInstall_startAgentResults = Agent start results: [{0}]
+view_remoteAgentInstall_step = ステップ
+view_remoteAgentInstall_stopAgent = エージェントの停止
+view_remoteAgentInstall_stopAgentResults = Agent stop results: [{0}]
+view_remoteAgentInstall_success = Agent installation complete
+view_remoteAgentInstall_updateStatus = スタータスの更新
+view_reportsTop_description = このセクションはグローバルレポートへのアクセスを提供します。
+view_reportsTop_title = レポート
+view_reports_alertDefinitions = アラート定義
+view_reports_alertDefinitions_parentHover = Click to go to the parent alert definition
+view_reports_alertDefinitions_resTypeLoadError = Cannot get the template resource type -
unable to view the alert template.
+view_reports_inventorySummary_failFetch = Failed to get inventory summary
+view_reports_platforms = プラットフォーム利用率
+view_reports_subsystems = サブシステム
+view_resourceResourceGroupList_error_fetchFailure = Failed to fetch Resource''s
groups.
+view_resourceResourceGroupList_error_updateFailure = Failed to update assigned Resource
groups.
+view_resourceResourceGroupList_message_updateSuccess = Group membership updated for
[{0}].
+view_resource_inventory_activity_changed_by = Changed by
+view_resource_inventory_activity_criteria_no_recent_events = 表示クライテリアに基づくイベントはありません
+view_resource_inventory_activity_no_recent_alerts = No recent alerts
+view_resource_inventory_activity_no_recent_bundle_deploy = No recent bundle deployments
+view_resource_inventory_activity_no_recent_config_history = No configuration change
history
+view_resource_inventory_activity_no_recent_events = No events in the last 24 hours
+view_resource_inventory_activity_no_recent_metrics = This resource has no recent metrics
+view_resource_inventory_activity_no_recent_oob = OOBの条件はみつかりません
+view_resource_inventory_activity_no_recent_operations = No recent operation history
+view_resource_inventory_activity_no_recent_pkg_history = No recent package history
+view_resource_inventory_childhistory_createdChild = Created Child
+view_resource_inventory_childhistory_deletedChild = Deleted Child
+view_resource_inventory_childhistory_filterTitle = Past N Days
+view_resource_inventory_childhistory_status_invalidArtifact = Invalid Artifact
+view_resource_inventory_childhistory_status_invalidConfig = Invalid Configuration
+view_resource_monitor_availability_loadFailed = Failed to load availability history
+view_resource_monitor_calltime_average = Average
+view_resource_monitor_calltime_count = Count
+view_resource_monitor_calltime_destination = Call Destination
+view_resource_monitor_calltime_editFailed = Call time data can not be edited
+view_resource_monitor_calltime_loadFailed = Could not load call time data
+view_resource_monitor_calltime_lookupFailed = Could not load resource for call time
+view_resource_monitor_calltime_maximum = Maximum
+view_resource_monitor_calltime_minimum = Minimum
+view_resource_monitor_calltime_title = Call Time Data
+view_resource_monitor_calltime_total = Total
+view_resource_monitor_detailed_graph_label = Detailed Graph
+view_resource_monitor_graph_instructions = Point your mouse to a data point on the chart
+view_resource_monitor_graph_live_tooltip = Click for a live graph of current values
+view_resource_monitor_graphs_loadFailed = Failed to load graph data
+view_resource_monitor_graphs_lookupFailed = Failed to find resource for graph
+view_resource_monitor_graphs_noneAvailable = No graphs available
+view_resource_monitor_schedules_title = Resource Metric Collection Schedules
+view_resource_monitor_table_alerts = アラート
+view_resource_monitor_table_avg = Average
+view_resource_monitor_table_last = Last
+view_resource_monitor_table_max = Maximum
+view_resource_monitor_table_min = Minimum
+view_resource_title_component_errors_tooltip = Shows managed component errors. Click for
details
+view_resource_title_tagUpdateFailed = Failed to update resource tags
+view_searchBar_defaultPattern = name your pattern
+view_searchBar_error_selectSavedSearch = ''Error selecting saved
search''
+view_searchBar_query = Query
+view_searchBar_resourceGroups = リソースグループ
+view_searchBar_resources = リソース
+view_searchBar_welcomeMessage = search for {0}s
+view_searchGUI_loginStatus = Unable to determine login status, check server status
+view_selector_assigned = Assigned {0}
+view_selector_available = Available {0}
+view_subTab_error_disabled = Cannot select disabled subTab [{0}].
+view_summaryDashboard_resetConfirm = Reset to default summary dashboard (lose local
changes)?
+view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of
Resource with id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of
Resource with id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with
id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_error_traitsLoadFailure = Failed to load traits for {0}.
+view_summaryOverviewForm_field_description = 説明
+view_summaryOverviewForm_field_location = 場所
+view_summaryOverviewForm_field_name = 名前
+view_summaryOverviewForm_field_type = タイプ
+view_summaryOverviewForm_field_version = バージョン
+view_summaryOverviewForm_header_summary = サマリ
+view_summaryOverviewForm_label_plugin = プラグイン:
+view_summaryOverviewForm_label_type = タイプ:
+view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with
id {0} was changed from [{1}] to [{2}].
+view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0}
was changed from [{1}] to [{2}].
+view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was
changed from [{1}] to [{2}].
+view_summaryOverview_header_detectedErrors = 検出済みエラー
+view_summaryOverview_title_errorDetailsWindow = エラー詳細
+view_summaryOverview_tooltip_detectedErrors = Click on the rows to see the error
details.
+view_tableSection_backButton = Back to List
+view_tableSection_error_badId = Can not show detail for [{0}]. Illegal 'id':
[{1}]. Please report this bug
+view_tableSection_error_noId = Table [{0}] record is missing 'id' attribute -
please report this bug.
+view_table_drawFail = Failed to draw Table [{0}].
+view_table_matchingRows = 一致した行: {0} (選択済み: {1})
+view_table_totalRows = 合計行: {0} (選択済み: {1})
+view_tabs_common_activity = アクティビティ
+view_tabs_common_agent = エージェント
+view_tabs_common_alerts = アラート
+view_tabs_common_availability = アベイラビリティ
+view_tabs_common_calltime = 呼び出し時間e
+view_tabs_common_child_history = 子の履歴
+view_tabs_common_child_resources = 子リソース
+view_tabs_common_configuration = 構成
+view_tabs_common_connectionSettings = 接続設定
+view_tabs_common_connectionSettingsHistory = 接続設定の履歴
+view_tabs_common_content = コンテント
+view_tabs_common_current = 現在
+view_tabs_common_dashboard = ダッシュボード
+view_tabs_common_definitions = 定義
+view_tabs_common_deployed = デプロイ済み
+view_tabs_common_events = イベント
+view_tabs_common_graphs = グラフ
+view_tabs_common_group_members = グループメンバー
+view_tabs_common_group_membership = グループメンバーシップ
+view_tabs_common_groups = グループ
+view_tabs_common_history = 履歴
+view_tabs_common_inventory = インベントリ
+view_tabs_common_members = メンバー
+view_tabs_common_monitoring = モニタリング
+view_tabs_common_new = 新規
+view_tabs_common_operations = オペレーション
+view_tabs_common_overview = 概要
+view_tabs_common_schedule = スケジュール
+view_tabs_common_schedules = スケジュール
+view_tabs_common_subscriptions = サブスクリプション
+view_tabs_common_summary = サマリ
+view_tabs_common_tables = テーブル
+view_tabs_common_timeline = タイムライン
+view_tabs_common_traits = Traits
+view_tabs_invalidSubTab = Invalid subtab: {0}
+view_tabs_invalidTab = Invalid tab: {0}
+view_tagCloud_deleteTag = Delete Tag
+view_tagCloud_deleteTagFailure = Failed to delete the tag [{0}]
+view_tagCloud_deleteTagSuccess = You successfully deleted the tag [{0}]
+view_tagCloud_error_fetchFailure = Failed to load tags.
+view_tagCloud_error_tagUsedCount = Tag used {0} times.
+view_tagCloud_title = Tag Cloud
+view_taggedResources_title = リソース
+view_tags_error_1 = Failed to load Tags
+view_tags_tags = タグ
+view_tags_tooltip_1 = Click to remove this Tag
+view_tags_tooltip_2 = Click to edit Tags
+view_tags_tooltip_3 = Enter a Tag in the format: (namespace:)(semantic=)tagname (e.g.
it:env=QA, or owner=John)
+view_testTop_description = This section contains pages for testing various GUI
components.
+view_testTop_title = テスト
+view_titleBar_common_addedFav = You have added [{0}] as a favorite
+view_titleBar_common_addedFavFailure = Failed to add [{0}] as a favorite
+view_titleBar_common_clickToAddFav = Click to add this as a favorite
+view_titleBar_common_clickToRemoveFav = Click to remove this as a favorite
+view_titleBar_common_loadTagsFailure = Failed to load the tags for [{0}]
+view_titleBar_common_removedFav = You have removed [{0}] as one of your favorites
+view_titleBar_common_removedFavFailure = Failed to remove [{0}] as one of your favorites
+view_titleBar_common_updateTagsFailure = Failed to update the tags for [{0}]
+view_titleBar_common_updateTagsSuccessful = The tags for [{0}] have been updated
+view_titleBar_group_failInfo = Failed to get general info on group [{0}] with ID [{1}]
+view_titleBar_group_summary_collapsedTooltip = Click to show more details for this group
+view_titleBar_group_summary_expandedTooltip = Click to hide details for this group
+view_tree_common_contextMenu_addChartToDashboard = Add chart to dashboard [{0}]
+view_tree_common_contextMenu_editPluginConfiguration = Edit [{0}] Plugin Configuration
+view_tree_common_contextMenu_editResourceConfiguration = Edit [{0}] Resource
Configuration
+view_tree_common_contextMenu_groupGraph = Group Metric Graph
+view_tree_common_contextMenu_loadFail_children = Failed to load platform manual add
children
+view_tree_common_contextMenu_loadFail_dashboards = Failed to load user dashboards
+view_tree_common_contextMenu_loadFail_group = Failed to load group for context menu
+view_tree_common_contextMenu_loadFailed_dashboard = Failed to load user dashboards
+view_tree_common_contextMenu_loadFailed_manualAddChildren = Failed to load platform
manual add children
+view_tree_common_contextMenu_measurements = Measurements
+view_tree_common_contextMenu_operations = Operations
+view_tree_common_contextMenu_operations_loadFailed = Failure to start wizard for running
operations
+view_tree_common_contextMenu_resourceConfiguration = Resource Configuration
+view_tree_common_contextMenu_resourceGraph = Resource Metric Graph
+view_tree_common_contextMenu_saveChartToDashboardFailure = Failed to save the dashboard
+view_tree_common_contextMenu_saveChartToDashboardSuccessful = You have saved dashboard
[{0}]
+view_tree_common_contextMenu_type_name_label = Type: {0}
+view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group
+view_tree_common_loadFailed_children = Failed to load children for node
+view_tree_common_loadFailed_create = Failed to create view for this node
+view_tree_common_loadFailed_descendants = Failed to load descendants for tree
+view_tree_common_loadFailed_generic = Failed to load data for tree
+view_tree_common_loadFailed_group = Failed to load group with id [{0}]
+view_tree_common_loadFailed_groupTree = Failed to load group tree
+view_tree_common_loadFailed_node = Failed to load data for this node
+view_tree_common_loadFailed_root = Failed to load root for tree
+view_tree_common_loadFailed_selection = Failed to select this node
+view_tree_common_loadFailed_update = Failed to update view for this node
+view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing
group. key: [{0}]
+view_type_parentId = Parent ID
+view_type_resourceTypes = Resource Types
+view_type_typeTreeLoadFailure = Failed to load resource type tree data
+view_upload_alreadyUploaded = File has already been uploaded
+view_upload_bundleDistFile = Distribution File
+view_upload_error_bundleDistFile = Error uploading Bundle Distribution File
+view_upload_error_file = Error uploading file
+view_upload_error_fileName = Error uploading file [{0}]
+view_upload_error_fileName_2 = Error uploading file [{0}], check for invalid file path.
+view_upload_error_packageVersionFile = Error uploading Package Version File
+view_upload_error_results = Error uploading file, unexpected results: [{0}]
+view_upload_inProgress = Can not submit, upload is currently in progress
+view_upload_prompt_1 = Please select a file to upload [{0}]
+view_upload_prompt_2 = File to Upload
+view_upload_success = File successfully uploaded
+view_upload_tooltip_1a = Select a file to upload, then click Upload or Next
+view_upload_tooltip_1b = Select a file to upload, then click Next
+view_upload_tooltip_2 = File upload had previously failed
+view_upload_upload = Upload
+view_upload_uploadFile = UploadFile
+widget_colorPicker_tooltip = Click to select a new color
+widget_durationItem_inputUnitLessThanTargetUnit = Input unit is less than target unit.
+widget_durationItem_unitTypeNotSupported = Unit type [{0}] is not supported by this
DurationItem.
+widget_jobTriggerEditor_fieldHelp_repeatDuration = keep running this operation this many
times or until this amount of time has elapsed
+widget_jobTriggerEditor_fieldHelp_repeatInterval = how often the operation should be
executed
+widget_jobTriggerEditor_fieldHelp_startDelay = start executing the operation after this
amount of time has elapsed
+widget_jobTriggerEditor_field_cronExpression = Cron Expression
+widget_jobTriggerEditor_field_mode = Schedule using
+widget_jobTriggerEditor_field_repeatInterval_later = Repeat every
+widget_jobTriggerEditor_field_repeatInterval_now = Run now and every
+widget_jobTriggerEditor_field_startType = Run
+widget_jobTriggerEditor_message_endTimeMustBeAfterStartTime = End time must be after
start time.
+widget_jobTriggerEditor_message_endTimeMustBeInFuture = End time must be in the future.
+widget_jobTriggerEditor_message_startTimeMustBeInFuture = Start time must be in the
future.
+widget_jobTriggerEditor_tab_examples = Examples
+widget_jobTriggerEditor_tab_format = Format
+widget_jobTriggerEditor_value_calendar = Calendar
+widget_jobTriggerEditor_value_cronExpression = Cron Expression
+widget_jobTriggerEditor_value_for = For
+widget_jobTriggerEditor_value_in = in
+widget_jobTriggerEditor_value_indefinitely = Indefinitely
+widget_jobTriggerEditor_value_later = Later
+widget_jobTriggerEditor_value_laterAndRepeat = Later & Repeat
+widget_jobTriggerEditor_value_now = Now
+widget_jobTriggerEditor_value_nowAndRepeat = Now & Repeat
+widget_jobTriggerEditor_value_on = on
+widget_jobTriggerEditor_value_until = Until
+widget_recordEditor_error_invalidViewPath = Invalid view path: [{0}]
+widget_recordEditor_error_multipleRecords = Multiple records were returned - expected
exactly one.
+widget_recordEditor_error_noRecords = No records were returned - expected exactly one.
+widget_recordEditor_error_operation = Operation failed. An error occurred
+widget_recordEditor_error_operationInvalidValues = Operation failed - one or more fields
have invalid values
+widget_recordEditor_error_permissionCreate = You do not have the permissions required to
create a new [{0}]
+widget_recordEditor_error_unsupportedOperationType = Unsupported operation type: [{0}]
+widget_recordEditor_info_recordCreatedConcise = {0} created.
+widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
+widget_recordEditor_info_recordUpdatedConcise = {0} updated.
+widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
+widget_recordEditor_info_recordsDeletedConcise = {0} {1} deleted.
+widget_recordEditor_info_recordsDeletedDetailed = {0} {1} deleted: {2}.
+widget_recordEditor_label_loading = ロード中...
+widget_recordEditor_title_edit = Edit {0} [{1}]
+widget_recordEditor_title_new = Create New {0}
+widget_recordEditor_title_view = View {0} [{1}]
+widget_recordEditor_warn_validation = One or more fields have invalid values. This [{0}]
cannot be saved until these values are corrected
+widget_resourceFactoryWizard_archPrompt = Package Architecture
+widget_resourceFactoryWizard_configTemplatePrompt = Resource Configuration Templates
+widget_resourceFactoryWizard_contentTemplatePrompt = Deployment Time Configuration
Templates
+widget_resourceFactoryWizard_createSubmit = A request to create a resource with the name
of [{0}] has been submitted successfully.
+widget_resourceFactoryWizard_createSubmitType = A request to create a resource of type
[{0}] has been submitted successfully.
+widget_resourceFactoryWizard_createWizardTitle = Create New Resource of Type [{0}]
+widget_resourceFactoryWizard_createWizardWindowTitle = Resource Create Wizard
+##widget_resourceFactoryWizard_editConfigStepName = Deployment Options
+widget_resourceFactoryWizard_execute1 = Failed to create a new resource - there is no
package version
+widget_resourceFactoryWizard_execute2 = Failed to create a new resource
+widget_resourceFactoryWizard_failedToDeleteVersion = Failed to delete package version
while canceling a resource create
+widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for new
resource
+widget_resourceFactoryWizard_importFailure = Failed to manually import resource
+widget_resourceFactoryWizard_importSubmitted = A request to import a new resource of type
[{0}] has been submitted
+widget_resourceFactoryWizard_importWizardTitle = Import Resource of Type [{0}]
+widget_resourceFactoryWizard_importWizardWindowTitle = Resource Import Wizard
+widget_resourceFactoryWizard_infoStepName = Resource Information
+widget_resourceFactoryWizard_infoStep_loadFail = Failed to get available Architectures
+widget_resourceFactoryWizard_namePrompt = New Resource Name
+widget_resourceFactoryWizard_templatePrompt = Connection Settings Template
+##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the RHQ Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
+widget_resourceFactoryWizard_uploadFailure = Failed to upload file
+widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
+widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can
take several minutes to complete for large distribution files.
+widget_resourceFactoryWizard_versionPrompt = Package Version
+widget_resourceSelector_groupCategory = Group Category
+widget_resourceSelector_pleaseSelectMultipleResource = Please select one or more
resources
+widget_resourceSelector_pleaseSelectResource = Please select a resource
+widget_resourceSelector_selectMultipleResources = Select Resources
+widget_resourceSelector_selectResource = Select a Resource
+widget_typeCache_loadFail = Failed to load resource type metadata
+widget_typeTree_badTemplateType = Invalid URL. Unknown template type [{0}]
+widget_typeTree_badTypeId = Invalid URL. Bad resource type ID [{0}]
+widget_typeTree_loadFail = Failed to load resource types
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 c2e1cb0..390db98 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
@@ -1,1921 +1,1912 @@
-#
-# RHQ GUI i18n Messages - Localization: PT
-#
-# Developers: See the following wiki page for how to work with this file:
-#
-#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
-#
-###################################
-
-common_alert_high = Alto
-common_alert_low = Baixo
-common_alert_medium = M\u00E9dio
-common_buildInfo_gwtVersion = ${gwt.version}
-common_button_ack = Confirmar
-common_button_ack_all = Confirmar Todos
-common_button_add = Adicionar
-common_button_advanced = Avan\u00E7ado...
-common_button_apply = Aplicar
-common_button_cancel = Cancelar
-common_button_close = Fechar
-common_button_compare = Comparar
-common_button_create_child = Criar filho
-common_button_delete = Excluir
-common_button_delete_all = Excluir Todos
-common_button_disable = Desabilitar
-common_button_edit = Editar
-common_button_enable = Habilitar
-common_button_finish = Finalizar
-common_button_import = Importar
-common_button_new = Novo
-common_button_next = Pr\u00F3ximo
-common_button_ok = OK
-common_button_previous = Anterior
-common_button_purgeAll = Remover Todos
-common_button_refresh = Atualizar
-common_button_reset = Limpar
-common_button_save = Salvar
-common_button_schedule = Agendar
-common_button_search = Procurar
-common_button_set = Definir
-common_button_showDetails = Mostrar Detalhes...
-common_button_uninventory = Remover do Invent\u00E1rio
-common_calendar_april_short = abr
-common_calendar_august_short = ago
-common_calendar_december_short = dez
-common_calendar_february_short = fev
-common_calendar_january_short = jan
-common_calendar_july_short = jul
-common_calendar_june_short = jun
-common_calendar_march_short = mar
-common_calendar_may_short = mai
-common_calendar_november_short = nov
-common_calendar_october_short = out
-common_calendar_september_short = set
-common_label_ago = ago
-common_label_all = TODOS
-common_label_all_resources = todos os recursos
-common_label_day = dia
-common_label_days = dias
-common_label_hour = hora
-common_label_hours = horas
-common_label_item = item
-common_label_items = itens
-common_label_milliseconds = milisegundos
-common_label_minutes = minutos
-common_label_month = m\u00EAs
-common_label_none = nenhum
-common_label_role = perfil
-common_label_roles = perfis
-common_label_scheduled_operations = opera\u00E7\u00F5es agendadas
-common_label_seconds = segundos
-common_label_selected_resources = recursos selecionados
-common_label_unlimited = ilimitado
-common_label_user = usu\u00E1rio
-common_label_users = usu\u00E1rios
-common_label_week = semana
-common_label_weeks = semanas
-common_label_yesterday = Ontem
-common_msg_areYouSure = Tem certeza?
-common_msg_asyncTimeout = {0}. Isso ocorre porque o servidor est\u00E1 levando muito
tempo para atender esta requisi\u00E7\u00E3o. Favor atentar para o fato de que o servidor
ainda esteja processando sua requisi\u00E7\u00E3o e pode concluir dentro de mais alguns
instantes. Voc\u00EA ainda pode verificar os logs do servidor para identificar se algum
erro anormal ocorreu.
-common_msg_changeAutoDetected = Mudan\u00E7as detectadas automaticamente
-common_msg_deleteConfirm = Tem certeza de que deseja excluir o # selecionado {0}?
-common_msg_emphasizedNotePrefix = NOTA:
-common_msg_loading = Carregando...
-common_msg_noItemsToShow = N\u00E3o existem itens para apresentar
-common_msg_notYetImplemented = N\u00E3o implementado ainda
-common_msg_see_more = Ver detalhes...
-common_msg_step_x_of_y = Passo {0} de {1}
-common_severity_debug = Debug
-common_severity_error = Error
-common_severity_fatal = Fatal
-common_severity_info = Info
-common_severity_warn = Warn
-common_status_canceled = Cancelado
-common_status_deferred = Deferido
-common_status_failed = Falha
-common_status_inprogress = Processando
-common_status_nochange = Sem altera\u00E7\u00E3o
-common_status_partial = Parcial
-common_status_success = Sucesso
-common_status_timedOut = Tempo Esgotado
-common_status_unknown = Desconhecido
-common_title_add_column = Adicionar Coluna
-common_title_add_graph_to_view = Adicionar Gr\u00E1fico ao Monitor de Vis\u00E3o
-common_title_add_portlet = Adicionar Portlet
-common_title_address = Endere\u00E7o
-common_title_alert_range = S\u00E9rie de Alertas
-common_title_ancestry = Ancestral
-common_title_availability = Disponibilidade
-common_title_available_resources = Recursos Dispon\u00EDveis
-common_title_average_metrics = M\u00E9tricas da m\u00E9dia por Minuto
-common_title_background = Fundo (background)
-common_title_bundle = Bundle
-common_title_bundles = Bundles
-common_title_category = Categoria
-common_title_change_refresh_time = Atualizar Intervalo
-common_title_columns = Colunas
-common_title_compare_metrics = Comparar M\u00E9tricas
-common_title_compatibleGroups = Grupos Compat\u00EDveis
-common_title_compatibleGroups_total = Total de Grupos Compat\u00EDveis
-common_title_component_errors = Componentes com erro
-common_title_config_update_status = Atualizar Status
-common_title_configuration = Configura\u00E7\u00E3o
-common_title_count = Quantidade
-common_title_custom = Personalizado
-common_title_dashboard_name = Nome do Painel de Controle
-common_title_dateCreated = Data de Cria\u00E7\u00E3o
-common_title_dateRange = Intervalo de Data
-common_title_default = Padr\u00E3o
-common_title_description = Descri\u00E7\u00E3o
-common_title_details = Detalhes
-common_title_display = Display
-common_title_display_name = Nome do Display
-common_title_duration = Dura\u00E7\u00E3o
-common_title_edit_mode = Modo Edi\u00E7\u00E3o
-common_title_enabled = Habilitado?
-common_title_end = Fim
-common_title_error = Erro
-common_title_favorites = Favoritos
-common_title_generalProp = Propriedades Gerais
-common_title_group = Grupo
-common_title_group_def_total = Total de Defini\u00E7\u00E3o de Grupos
-common_title_group_member_health = Sa\u00FAde do Membro do Grupo
-common_title_groups = Grupos
-common_title_help = Ajuda
-common_title_host = Host
-common_title_icon = \u00EDcone
-common_title_id = ID
-common_title_id_parent = ID do Recurso pai
-common_title_info = Info
-common_title_inventory = Invent\u00E1rio
-common_title_inventorySummary = Sum\u00E1rio do Invent\u00E1rio
-common_title_lastUpdated = \u00DAltima Atualiza\u00E7\u00E3o
-common_title_lastUpdatedBy = \u00DAltima Atualiza\u00E7\u00E3o feita por
-common_title_ldapGroups = Grupos LDAP
-common_title_mashup = Mashup
-common_title_members_reporting = Relat\u00F3rio de Membros
-common_title_message = Mensagem
-common_title_metric = M\u00E9trica
-common_title_metric_chart = Gr\u00E1fico de M\u00E9trica
-common_title_mixedGroups = Grupos Mistos
-common_title_mixedGroups_total = Total de Grupos Mistos
-common_title_name = Nome
-common_title_new_dashboard = Novo Painel de Controle
-common_title_numeric_metrics = M\u00E9tricas Num\u00E9ricas
-common_title_numeric_type = Tipo Num\u00E9rico
-common_title_operation_status = Status da Opera\u00E7\u00E3o
-common_title_operations = Opera\u00E7\u00F5es
-common_title_operations_range = S\u00E9rie de Opera\u00E7\u00F5es
-common_title_over = Execesso
-common_title_password = Senha
-common_title_path = Caminho
-common_title_permissions = Permiss\u00F5es
-common_title_platform = Plataforma
-common_title_platform_total = Total de Plataformas
-common_title_plugin = Plugin
-common_title_port = Porta
-common_title_providers = Provedores
-common_title_recent_alerts = Alertas Recentes
-common_title_recent_bundle_deployments = Recent Bundle Deployments
-common_title_recent_configuration_updates = Configura\u00E7\u00F5es Alteradas
Recentemente
-common_title_recent_event_counts = Totaliza\u00E7\u00E3o de Eventos Recentes
-common_title_recent_measurements = M\u00E9tricas Recentes
-common_title_recent_oob_metrics = M\u00E9tricas fora dos limites Recentes
-common_title_recent_operations = Opera\u00E7\u00F5es Recentes
-common_title_recent_pkg_history = Hist\u00F3rico de Pacotes Recentes
-common_title_recently_added = Recursos Adicionados Recentemente
-common_title_remove_column = Remover Coluna
-common_title_repositories = Reposit\u00F3rios
-common_title_resource = Recursos
-common_title_resourceGroups = Resource Groups
-common_title_resource_group = Grupo de Recursos
-common_title_resource_id = ID do Recurso
-common_title_resource_inventory = Invent\u00E1rio de Recursos
-common_title_resource_key = Chave do Recurso
-common_title_resource_name = Nome do Recurso
-common_title_resource_type = Tipo do Recurso
-common_title_resources = Recursos
-common_title_results_count = Resultado Total
-common_title_results_count_tooltip = Mostra este n\u00FAmero de resultados
-common_title_role = Perfil
-common_title_roles = Perfis
-common_title_scheduled_operations = Opera\u00E7\u00F5es Agendadas
-common_title_search = Procurar
-common_title_selected_resources = Recursos Selecionados
-common_title_server = Servidor
-common_title_server_total = Total de Servidores
-common_title_service = Servi\u00E7o
-common_title_service_total = Total de Servi\u00E7os
-common_title_settings = Configura\u00E7\u00F5es
-common_title_show = Visualizar
-common_title_show_more = Visualizar mais...
-common_title_sort_order = Ordena\u00E7\u00E3o
-common_title_sort_order_tooltip = Define a ordem dos resultados.
-common_title_start = Iniciar
-common_title_status = Status
-common_title_stop = Parar
-common_title_summary = Sum\u00E1rio
-common_title_summary_counts = Sum\u00E1rio de Contagem
-common_title_tag_cloud = Nuvem de Tags
-common_title_the = O
-common_title_timestamp = Data/Hora
-common_title_total = Total
-common_title_type = Tipo
-common_title_units = Unidades
-common_title_user = Usu\u00E1rio
-common_title_users = Usu\u00E1rios
-common_title_value = Valor
-common_title_version = Vers\u00E3o
-common_title_view_mode = Modo vis\u00E3o
-common_title_web_address = Endere\u00E7o Web
-common_title_welcome = Bem Vindo
-common_unit_days = dias
-common_unit_hours = horas
-common_unit_milliseconds = milisegundos
-common_unit_minutes = minutos
-common_unit_months = meses
-common_unit_seconds = segundos
-common_unit_times = vezes
-common_unit_weeks = semanas
-common_unit_years = anos
-common_val_for = para
-common_val_n1st = {0}\u00BA
-common_val_n2nd = {0}\u00BA
-common_val_n3rd = {0}\u00BA
-common_val_na = N/A
-common_val_never = Nunca
-common_val_no = N\u00E3o
-common_val_no_lower = n\u00E3o
-common_val_none = Nenhum
-common_val_nth = {0}\u00BA
-common_val_yes = Sim
-common_val_yes_lower = sim
-
-dataSource_ContentRepoTree_error_load = Erro ao carregar os reposit\u00F3rios
-dataSource_ContentRepoTree_field_parentId = ID pai
-dataSource_bundle_loadFailed = Falha ao carregar os dados do Bundle
-dataSource_configurationHistory_clickToSeeError = Duplo clique para visualizar a
mensagem...
-dataSource_configurationHistory_currentConfig = Esta \u00E9 a configura\u00E7\u00E3o
atual
-dataSource_configurationHistory_dateCompleted = Conclu\u00EDdo em
-dataSource_configurationHistory_dateSubmitted = Submetido em
-dataSource_configurationHistory_error_fetchFailure = N\u00E3o foi poss\u00EDvel carregar
o hist\u00F3rico de configura\u00E7\u00E3o.
-dataSource_configurationHistory_field_createdTime = Criado
-dataSource_configurationHistory_field_id = ID
-dataSource_configurationHistory_field_resource = Recurso
-dataSource_configurationHistory_field_status = Status
-dataSource_configurationHistory_field_subject = Assunto
-dataSource_configurationHistory_updateType = Tipo de atualiza\u00E7\u00E3o
-dataSource_configurationHistory_updateType_group = Grupo
-dataSource_configurationHistory_updateType_individual = Individual
-dataSource_definitions_loadFailed = Falha ao carregar defini\u00E7\u00E3o de
m\u00E9tricas
-dataSource_measurementOob_error_fetchFailure = Falha ao carregar informa\u00E7\u00F5es
das m\u00E9tricas OOB
-dataSource_measurementOob_field_factor = Fator fora da faixa (%)
-dataSource_measurementOob_field_formattedBaseband = Faixa
-dataSource_measurementOob_field_formattedOutlier = Fora de s\u00E9rie
-dataSource_measurementOob_field_parentName = Pai
-dataSource_measurementOob_field_resourceName = Recurso
-dataSource_measurementOob_field_scheduleName = M\u00E9trica
-dataSource_operationHistory_error_fetchFailure = Falha ao carregar o hist\u00F3rico de
opera\u00E7\u00F5es.
-dataSource_operationHistory_field_createdTime = Data de cria\u00E7\u00E3o
-dataSource_operationHistory_field_operationName = Nome da Opera\u00E7\u00E3o
-dataSource_operationHistory_field_startedTime = Iniciado em
-dataSource_operationHistory_field_subject = Solicitante
-dataSource_operationSchedule_field_description = Notas
-dataSource_operationSchedule_field_id = ID do Agendamento
-dataSource_operationSchedule_field_nextFireTime = Pr\u00F3xima execu\u00E7\u00E3o
-dataSource_operationSchedule_field_operationDisplayName = Opera\u00E7\u00E3o
-dataSource_operationSchedule_field_operationName = Opera\u00E7\u00E3o
-dataSource_operationSchedule_field_subject = Propriet\u00E1rio
-dataSource_operationSchedule_field_timeout = Tempo limite (em segundos)
-dataSource_platforms_field_cpu = CPU
-dataSource_platforms_field_memory = Mem\u00F3ria
-dataSource_platforms_field_swap = Swap
-dataSource_problemResources_error_fetchFailure = Falha com carregar Recursos com
alertas/indisponibilidade.
-dataSource_problemResources_field_alerts = Alertas
-dataSource_problemResources_field_available = Disponibilidade Atual
-dataSource_problemResources_field_location = Local
-dataSource_problemResources_field_resource = Recurso
-dataSource_recentOperations_error_fetchFailure = Falha ao carregar a lista de
opera\u00E7\u00F5es finalizadas recentemente.
-dataSource_recentOperations_field_location = Localiza\u00E7\u00E3o
-dataSource_recentOperations_field_operation = Opera\u00E7\u00E3o
-dataSource_recentOperations_field_resource = Recurso
-dataSource_recentOperations_field_status = Status
-dataSource_recentOperations_field_time = Data/Hora
-dataSource_resourceErrors_clickStatusIcon = Clique no \u00EDcone para mais detalhes
-dataSource_resourceErrors_deleteFailure = Falha do excluir mensagens de erros do recurso
-dataSource_resourceErrors_deleteSuccess = Mensagens de erro para o recurso [{0}]
exclu\u00EDdas com sucesso.
-dataSource_resourceErrors_error_fetchFailure = Falha ao procurar por erros para o Recurso
com ID [{0}].
-dataSource_resourceErrors_field_detail = Mensagem detalhada
-dataSource_resourceErrors_field_errorType = Tipo de Erro
-dataSource_resourceErrors_field_summary = Sum\u00E1rio
-dataSource_resourceErrors_field_timeOccured = Tempo
-dataSource_resourceGroups_loadFailed = Falha ao carregar grupos de recurso
-dataSource_resources_field_discoveryTime = Data de Descoberta
-dataSource_resources_field_importTime = Data de Importa\u00E7\u00E3o
-dataSource_resources_field_key = Chave
-dataSource_resources_field_lastModifiedTime = Data da \u00FAltima altera\u00E7\u00E3o
-dataSource_resources_field_lastModifier = \u00DAltima altera\u00E7\u00E3o
-dataSource_resources_field_location = Localiza\u00E7\u00E3o
-dataSource_rpc_error_transformRequestFailure = Ocorreu uma falha na fonte de dados
durante o processamento da requisi\u00E7\u00E3o {0}.
-dataSource_rpc_error_unsupportedArrayFilterType = Sem suporte para o array filters do
tipo {0}.
-dataSource_rpc_error_unsupportedEnumType = Favor adicionar um trecho de c\u00F3digo
apropriado para a enum {0} para RPCDataSource.getEnumArray(Class)
-dataSource_rpc_no = n\u00E3o
-dataSource_rpc_yes = sim
-dataSource_scheduledOperations_error_fetchFailure = Falha ao carregar a lista de
opera\u00E7\u00F5es agendadas
-dataSource_scheduledOperations_field_location = Localiza\u00E7\u00E3o
-dataSource_scheduledOperations_field_operation = Opera\u00E7\u00E3o
-dataSource_scheduledOperations_field_resource = Recurso
-dataSource_scheduledOperations_field_time = Data/Hora
-dataSource_schedules_disableFailure_group = Falha ao desabilitar a coleta de
m\u00E9tricas de [{0}] para o grupo de recursos com ID [{1}]. As m\u00E9tricas eram:
[{2}]
-dataSource_schedules_disableFailure_resource = Falha ao desabilitar a coleta de
m\u00E9tricas de [{0}] para o recurso com ID [{1}]. As m\u00E9tricas eram: [{2}]
-dataSource_schedules_disableSuccessful_concise = Voc\u00EA desabilitou a coleta de
m\u00E9tricas de [{0}]
-dataSource_schedules_disableSuccessful_full_group = Voc\u00EA desabilitou a coleta de
m\u00E9tricas de[{0}] para o grupo de recursos com ID [{1}]. As m\u00E9tricas
desabilitadas s\u00E3o: [{2}]
-dataSource_schedules_disableSuccessful_full_resource = Voc\u00EA desabilitou a coleta de
m\u00E9tricas de[{0}] para o recurso com ID [{1}]. As m\u00E9tricas desabilitadas
s\u00E3o: [{2}]
-dataSource_schedules_enableFailure_group = Falha ao habilitar a coleta de m\u00E9tricas
de [{0}] para o grupo com ID [{1}]. As m\u00E9tricas s\u00E3o: [{2}]
-dataSource_schedules_enableFailure_resource = Falha ao habilitar a coleta de
m\u00E9tricas de [{0}] para o recurso com ID [{1}]. As m\u00E9tricas s\u00E3o: [{2}]
-dataSource_schedules_enableSuccessful_concise = Voce habilitou a coleta de m\u00E9tricas
de [{0}]
-dataSource_schedules_enableSuccessful_full_group = Voc\u00EA habilitou a coleta de
m\u00E9tricas de [{0}] para o grupo de recursos com ID [{1}]. As m\u00E9tricas habilitadas
foram: [{2}]
-dataSource_schedules_enableSuccessful_full_resource = Voc\u00EA habilitou a coleta de
m\u00E9tricas de [{0}] para o recurso com ID [{1}]. As m\u00E9tricas habilitadas foram:
[{2}]
-dataSource_schedules_field_resourceGroupId = ID de Grupo
-dataSource_schedules_loadFailed = Falha ao carregar agendamento de m\u00E9tricas
-dataSource_schedules_loadFailedContext = Falha ao carregar agendamentos de m\u00E9tricas
para o contexto [{0}]
-dataSource_schedules_loadFailedCriteria = Falha ao carregar agendamentos de m\u00E9tricas
com o crit\u00E9io [{0}]
-dataSource_schedules_updateFailure_group = Falha ao configurar o intervalo para coleta de
m\u00E9tricas de [{0}] para o grupo de recursos com ID [{1}]. M\u00E9tricas: [{2}]. O
intervalo de coleta seria de [{3}] segundos.
-dataSource_schedules_updateFailure_resource = Falha ao configurar o intervalo para coleta
de m\u00E9tricas de [{0}] para o recurso com ID [{1}]. M\u00E9tricas: [{2}]. O intervalo
de coleta seria de [{3}] segundos.
-dataSource_schedules_updateSuccessful_concise = Um novo intervalo de coleta de [{0}]
segundos foi configurado para m\u00E9tricas de [{1}]
-dataSource_schedules_updateSuccessful_full_group = Um novo intervalo de coleta de [{0}]
segundos foi configurado para m\u00E9tricas de [{1}] para o grupo de recursos com ID
[{2}]. M\u00E9tricas atualizadas: [{3}]
-dataSource_schedules_updateSuccessful_full_resource = Um novo intervalo de coleta de
[{0}] segundos foi configurado para m\u00E9tricas de [{1}] para o recurso com ID [{2}].
M\u00E9tricas atualizadas: [{3}]
-dataSource_traits_failFetch = Falha ao obter as caracter\u00EDsticas com o
crit\u00E9rio [{0}].
-dataSource_traits_field_definitionID = ID da defini\u00E7\u00E3o
-dataSource_traits_field_lastChanged = \u00DAltima Altera\u00E7\u00E3o
-dataSource_traits_field_primaryKey = Chave Prim\u00E1ria
-dataSource_traits_field_trait = Propriedade
-dataSource_traits_group_field_groupId = ID de Grupo
-dataSource_traits_group_field_memberResource = Recurso Membro
-dataSource_users_delete = Usu\u00E1rio exclu\u00EDdo [{0}]
-dataSource_users_deleteFailed = Falha ao excluir o usu\u00E1rio [{0}]
-dataSource_users_field_department = Departamento
-dataSource_users_field_emailAddress = Endere\u00E7o de Email
-dataSource_users_field_factive = Login Habilitado?
-dataSource_users_field_firstName = Primeiro Nome
-dataSource_users_field_id = ID
-dataSource_users_field_lastName = \u00DAltimo Nome
-dataSource_users_field_ldap = LDAP Login?
-dataSource_users_field_name = Nome do Usu\u00E1rio
-dataSource_users_field_password = Senha
-dataSource_users_field_passwordVerify = Verifique a Senha
-dataSource_users_field_phoneNumber = N\u00FAmero de Telefone
-dataSource_users_invalidEmailAddress = Endere\u00E7o de email inv\u00E1lido.
-dataSource_users_passwordsDoNotMatch = Senhas n\u00E3o conferem.
-
-datasource_roles_field_ldapGroups = Grupos LDAP
-datasource_roles_field_permissions = Permiss\u00F5es
-datasource_roles_field_resourceGroups = Grupos de Recurso
-datasource_roles_field_subjects = Subjects
-datasource_templateSchedules_disabled = Desabilitar a coleta da m\u00E9trica selecionada
[{0}].
-datasource_templateSchedules_disabled_detailed = Desabilitar a coleta da m\u00E9trica
[{0}] [{1}] para o Tipo de Recurso com id [{2}].
-datasource_templateSchedules_disabled_failed = Falha ao desabilitar a coleta da
m\u00E9trica [{0}] [{1}] para o Tipo de Recurso com id [{2}].
-datasource_templateSchedules_enabled = Habilitar a coleta da m\u00E9trica selecionada
[{0}].
-datasource_templateSchedules_enabled_detailed = Enabled collection of metric [{0}] [{1}]
by default for ResourceType with id [{2}].
-datasource_templateSchedules_enabled_failed = Falha ao habilitar a coleta da m\u00E9trica
[{0}] [{1}] para o Tipo de Recurso com id [{2}].
-datasource_templateSchedules_updated = Intervalos de coleta atualizados para a
m\u00E9trica [{0}].
-datasource_templateSchedules_updated_detail = Intervalo de coleta da m\u00E9trica [{0}]
[{1}] para o Tipo de Recurso com id [{2}] configurado para [{3}] segundos.
-datasource_templateSchedules_updated_failed = Falha ao configurar o intervalo de coleta
para [{0}] segundos para a m\u00E9trica [{1}] [{2}] para o Tipo de Recurso com id [{3}].
-
-favorites = Favoritos
-
-favorites_groups = Grupos Favoritos
-favorites_recentlyViewed = Acessados Recentemente
-favorites_resources = Recursos Favoritos
-
-group_tree_partialClusterTooltip = {0} out of {1} group members have a
''{2}'' resource
-
-util_ancestry_parentAncestry = Ancestral para:
-util_errorHandler_nullException = Exce\u00E7\u00E3o nula
-util_monitoringRequestCallback_error_checkServerStatusFailure = Imposs\u00EDvel verificar
o status do login - verifique o status do Servidor.
-util_rpcManager_activeRequests = {0} Requisi\u00E7\u00F5es ativas
-util_userPerm_loadFailGlobal = Falha ao carregar permiss\u00F5es globais - nenhuma
permiss\u00E3o concedida.
-util_userPerm_loadFailGroup = Falha ao carregar suas permiss\u00F5es para o Grupo de
Recursos com id [{0}] - nenhuma permiss\u00E3o concedida.
-util_userPerm_loadFailResource = Falha ao carregar suas permiss\u00F5es para o Recurso
com id [{0}] - nenhuma permiss\u00E3o concedida.
-util_userSession_loadFailSubject = UserSessionManager: Falha ao carregar a credencial do
usu\u00E1rio
-util_userSession_logoutFail = Falha durante o logout.
-util_widgetsField_unlimited = Ilimitado
-
-view_aboutBox_allRightsReserved = Todos os Direitos Reservados.~
-view_aboutBox_buildNumber = N\u00FAmero do Build:~
-view_aboutBox_failedToLoad = Falha ao carregar informa\u00E7oes do produto.~
-view_aboutBox_homepage = P\u00E1gina Inicial~
-view_aboutBox_jbossByRedHat = JBoss by Red Hat~
-view_aboutBox_title = Sobre {0}~
-view_aboutBox_version = Vers\u00E3o:
-view_adminConfig_downloads = Downloads
-view_adminConfig_license = Licen\u00E7a
-view_adminConfig_plugins = Plugins
-view_adminConfig_systemSettings = Propriedades de Sistema
-view_adminConfig_templates = Templates
-view_adminContent_contentSources = Fontes de Conte\u00FAdo
-view_adminContent_repositories = Reposit\u00F3rios
-view_adminRoles_assignedGroups = Grupos de Recursos Associados
-view_adminRoles_assignedSubjects = Perfis Associados
-view_adminRoles_failLdap = Falha ao determinar se o LDAP foi configurado -
assumindo como LDAP n\u00E3o configurado.
-view_adminRoles_failLdapGroups = Falha ao recuperar os grupos dispon\u00EDveis no LDAP -
assumindo como LDAP sem grupos.
-view_adminRoles_failLdapGroupsRole = Falha ao carregar grupos do LDAP dispon\u00EDveis
para o perfil.
-view_adminRoles_failRoles = Falha ao recuperar perfis.
-view_adminRoles_globalPerms = Permiss\u00F5es Globais
-view_adminRoles_ldapGroups = Grupos LDAP
-view_adminRoles_ldapGroupsReadOnly = Informa\u00E7\u00F5es do grupo LDAP com
permiss\u00F5es apenas de leitura
-view_adminRoles_noItems = Sem itens para apresentar
-view_adminRoles_noLdap = A integra\u00E7\u00E3o com o LDAP ainda n\u00E3o foi
configurada. Para configurar o LDAP acesse <a {0}>{1}</a>.
-view_adminRoles_permissions_autoselecting_configureRead_implied = Autodeselected
CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
-view_adminRoles_permissions_autoselecting_configureWrite_implied = Autoselected
CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
-view_adminRoles_permissions_autoselecting_manageInventory_implied = Autoselected
unselected Resource permissions, since MANAGE_INVENTORY implies all Resource
permissions...
-view_adminRoles_permissions_autoselecting_manageSecurity_implied = Autoselected
unselected permissions, since MANAGE_SECURITY implies all other permissions...
-view_adminRoles_permissions_globalPermissions = Permiss\u00F5es Globais
-view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection = {0}
read permission cannot be deselected, unless the {0} write permission, which implies the
read permission, is deselected first.
-view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection = {0}
permission cannot be deselected, unless Manage Inventory, which implies all Resource
permissions, is deselected first.
-view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection = {0}
permission cannot be deselected, unless the Manage Security permission, which implies all
other permissions, is deselected first.
-view_adminRoles_permissions_isAuthorized = Autorizado?
-view_adminRoles_permissions_isRead = Leitura?
-view_adminRoles_permissions_isWrite = Escrita?
-view_adminRoles_permissions_permDesc_manageBundles = can create, update, or delete
provisioning bundles (viewing is implied for everyone)
-view_adminRoles_permissions_permDesc_manageInventory = possui todas as permiss\u00F5es de
Recurso, como descrito abaixo, pode criar, atualizar, excluir grupos e importar Recursos
descobertos automaticamente ou manualmente.
-view_adminRoles_permissions_permDesc_manageRepositories = can create, update, or delete
repositories of any user (everyone can create their own repositories), can associate
content sources to repositories.
-view_adminRoles_permissions_permDesc_manageSecurity = Pode criar, atualizar, ou excluir
usu\u00E1rios e perfis (visualiza\u00E7\u00E3o \u00E9 padr\u00E3o para todos)
-view_adminRoles_permissions_permDesc_manageSettings = pode modificar a
configura\u00E7\u00E3o do RHQ Server e utilizar qualquer funcionalidade relacionada ao
Servidor
-view_adminRoles_permissions_permReadDesc_configure = view Resource configuration and
Resource configuration revision history
-view_adminRoles_permissions_permReadDesc_control = (IMPLIED) view available operations
and operation execution history
-view_adminRoles_permissions_permReadDesc_createChildResources = (IMPLIED) view child
Resource creation history
-view_adminRoles_permissions_permReadDesc_deleteChildResources = (IMPLIED) view child
Resource deletion history
-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_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
-view_adminRoles_permissions_permWriteDesc_control = execute operations; delete operation
execution history items
-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_manageContent = subscribe to content sources;
install and uninstall packages
-view_adminRoles_permissions_permWriteDesc_manageEvents = delete events
-view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection
schedules
-view_adminRoles_permissions_perm_configure = Configurar
-view_adminRoles_permissions_perm_control = Controlar
-view_adminRoles_permissions_perm_createChildResources = Create Child Resources
-view_adminRoles_permissions_perm_deleteChildResources = Delete Child Resources
-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_manageEvents = Gerenciar Eventos
-view_adminRoles_permissions_perm_manageInventory = Gerenciar Invent\u00E1rio
-view_adminRoles_permissions_perm_manageMeasurements = Gerenciar M\u00E9tricas
-view_adminRoles_permissions_perm_manageRepositories = Gerenciar Reposit\u00F3rios
-view_adminRoles_permissions_perm_manageSecurity = Gerenciar Seguran\u00E7a
-view_adminRoles_permissions_perm_manageSettings = Gerenciar Configura\u00E7\u00F5es
-view_adminRoles_permissions_read = Leitura:
-view_adminRoles_permissions_readAccessImplied = Acesso de leitura para a permiss\u00E3o
{0} \u00E9 impl\u00EDcita e n\u00E3o pode ser desabilitada.
-view_adminRoles_permissions_resourcePermissions = Permiss\u00F5es de Recurso
-view_adminRoles_permissions_write = Escrita:
-view_adminRoles_perms = Permiss\u00F5es
-view_adminRoles_resourcePerms = Permiss\u00F5es do Recurso
-view_adminRoles_roleAdded = Perfil [{0}] adicionado.
-view_adminRoles_roleDeleteFailed = Falha ao excluir o perfil [{0}].
-view_adminRoles_roleDeleted = Perfil [{0}] exclu\u00EDdo.
-view_adminRoles_roleExists = O perfil com nome [{0}] j\u00E1 existe.
-view_adminRoles_roleUpdateFailed = Falha ao atualizar o perfil [{0}].
-view_adminRoles_roleUpdated = Perfil [{0}] atualizado.
-view_adminSecurity_roles = Perfis
-view_adminSecurity_users = Usu\u00E1rios
-view_adminTemplates_disabledAlertTemplates = Templates de Alerta Desabilitados
-view_adminTemplates_disabledMetricTemplates = Templates de M\u00E9trica Desabilitados
-view_adminTemplates_editAlertTemplate = Editar Template de Alerta
-view_adminTemplates_editMetricTemplate = Editar Template de M\u00E9trica
-view_adminTemplates_enabledAlertTemplates = Templates de Alerta Habilitados
-view_adminTemplates_enabledMetricTemplates = Templates de M\u00E9trica Habilitados
-view_adminTemplates_platformServices = Servi\u00E7os da Plataforma
-view_adminTemplates_platforms = Plataformas
-view_adminTemplates_prompt_disabledAlertTemplates = N\u00FAmero de templates de alerta
criados mas desabilitados para este tipo de recurso
-view_adminTemplates_prompt_disabledMetricTemplates = N\u00FAmero de coletas de
m\u00E9trica desabilitadas por padr\u00E3o para este tipo de recurso
-view_adminTemplates_prompt_enabledAlertTemplates = N\u00FAmero de templates de alerta
habilitados para este tipo de recurso
-view_adminTemplates_prompt_enabledMetricTemplates = N\u00FAmero de coletas de
m\u00E9trica habilitadas por padr\u00E3o para este tipo de recurso
-view_adminTemplates_servers = Servidores
-view_adminTopology_affinityGroups = Grupos de Afinidade
-view_adminTopology_agents = Agentes
-view_adminTopology_partitionEvents = Eventos na Parti\u00E7\u00E3o
-view_adminTopology_remoteAgentInstall = Instala\u00E7\u00E3o Remota de Agentes
-view_adminTopology_servers = Servidores
-view_adminUsersDetails_dataTypeName = usu\u00E1rio
-view_adminUsersList_dataTypeName = usu\u00E1rio
-view_adminUsersList_dataTypeNamePlural = usu\u00E1rios
-view_admin_administration = Administra\u00E7\u00E3o
-view_admin_configuration = Configura\u00E7\u00E3o
-view_admin_content = Conte\u00FAdo
-view_admin_downloads_agentDownload = Agent Download
-view_admin_downloads_agent_buildNumber = Agent Build
-view_admin_downloads_agent_help = <p> This is the RHQ Agent Update Binary jar file.
The purpose of this jar file is to allow you to install a fresh agent on a machine where
an agent does not yet exist and to allow you to update an agent that is already installed
on a machine. For more details, run this agent download jar with the --help command line
option:<br/> <b>java -jar <agent-download.jar> --help</b>
</p> <h3>Agent Install</h3> <p> <b>java -jar
<agent-download.jar> --install[ = <new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[ = <old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
-view_admin_downloads_agent_link_label = Link
-view_admin_downloads_agent_link_value = Download Agent {0} ({1})
-view_admin_downloads_agent_loadError = Cannot get agent version info
-view_admin_downloads_agent_md5 = Agent MD5
-view_admin_downloads_agent_version = Agent Version
-view_admin_downloads_bundleDownload = Bundle Deployer Download
-view_admin_downloads_bundle_help = <p> view_admin_downloads_bundle_link_label =
Link
-view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
-view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
-view_admin_downloads_cliDownload = Command Line Client Download
-view_admin_downloads_cli_buildNumber = CLI Build
-view_admin_downloads_cli_help = <p> view_admin_downloads_cli_link_label = Link
-view_admin_downloads_cli_link_value = Download CLI {0} ({1})
-view_admin_downloads_cli_loadError = Cannot get CLI version info
-view_admin_downloads_cli_md5 = CLI MD5
-view_admin_downloads_cli_version = CLI Version
-view_admin_downloads_connectorsDownload = Connectors Download
-view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by RHQ. You install connectors into some managed
products so RHQ agents can talk to them. See the documentation for more information.
-view_admin_downloads_connectors_loadError = Cannot get connectors info
-view_admin_downloads_connectors_none = No connectors are available for download
-view_admin_landing = Nesta se\u00E7\u00E3o \u00E9 poss\u00EDvel administrar
propriedades globais do RHQ. Isso inclui configura\u00E7\u00F5es de Seguran\u00E7a,
Plugins, e gerenciamento de servidores RHQ e agentes.
-view_admin_measTemplates_title = Template Metric Collection Schedules
-view_admin_measTemplates_updateExisting_title = Update Existing Schedules
-view_admin_measTemplates_updateExisting_tooltip = Check this box to update the collection
schedules for the selected metrics on all existing resources of this type. If this is not
checked, the template schedules will only be applied to new resources of this type that
are added to inventory in the future.
-view_admin_security = Seguran\u00E7a
-view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = If this amount of time passes
without hearing from an agent, that quiet agent will be considered down. This value is
specified in minutes.
-view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent Max Quiet Time Allowed
-view_admin_systemSettings_AlertPurge_desc = How old alert history items must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_AlertPurge_name = Delete Alerts Older Than
-view_admin_systemSettings_AvailabilityPurge_desc = How old availability data must be
before being purged from the database. This is specified in days.
-view_admin_systemSettings_AvailabilityPurge_name = Delete Availability Data Older Than
-view_admin_systemSettings_BaseURL_desc = A URL to the server GUI, used mainly within
alert email notifications.
-view_admin_systemSettings_BaseURL_name = GUI Console URL
-view_admin_systemSettings_BaselineDataSet_desc = The amount of past measurement data that
is used to determine a baseline. This is specified in days.
-view_admin_systemSettings_BaselineDataSet_name = Baseline Dataset
-view_admin_systemSettings_BaselineFrequency_desc = The frequency which the
auto-calculation of baselines will be performed. If 0, baseline auto-calculation is
disabled. This is specified in days.
-view_admin_systemSettings_BaselineFrequency_name = Baseline Calculation Frequency
-view_admin_systemSettings_DataMaintenance_desc = How often database maintenance is
performed (for example, vacuuming if using Postgres). This is specified in hours.
-view_admin_systemSettings_DataMaintenance_name = Database Maintenance Period
-view_admin_systemSettings_DataReindex_desc = If enabled, certain database tables will be
re-indexed periodically.
-view_admin_systemSettings_DataReindex_name = Reindex Data Tables Nightly
-view_admin_systemSettings_EnableAgentAutoUpdate_desc = Determines if the server will
allow agents to auto-update themselves. You will not be able to download agent
distributions from the server if this is disabled.
-view_admin_systemSettings_EnableAgentAutoUpdate_name = Enable Agent Auto-Updates
-view_admin_systemSettings_EnableDebugMode_desc = If enabled, the server will enter debug
mode.
-view_admin_systemSettings_EnableDebugMode_name = Enable Debug Mode
-view_admin_systemSettings_EnableExperimentalFeatures_desc = If enabled, any experimental
features that exist in the current product will be available.
-view_admin_systemSettings_EnableExperimentalFeatures_name = Enable Experimental Features
-view_admin_systemSettings_EventPurge_desc = How old event data must be before being
purged from the database. This is specified in days.
-view_admin_systemSettings_EventPurge_name = Delete Events Older Than
-view_admin_systemSettings_JAASProvider_desc = Should LDAP be used to determine user
identity?
-view_admin_systemSettings_JAASProvider_name = Enable LDAP
-view_admin_systemSettings_LDAPBaseDN_desc = The base of the directory tree to search for
usernames and passwords while authenticating users, e.g. ou = People,dc = redhat,dc = com
-view_admin_systemSettings_LDAPBaseDN_name = Search Base
-view_admin_systemSettings_LDAPBindDN_desc = The username to connect to the LDAP server
when querying the LDAP user database. This is typically the full LDAP distinguished name
(DN) of a manager user, e.g. cn = Manager,dc = redhat,dc = com
-view_admin_systemSettings_LDAPBindDN_name = Username
-view_admin_systemSettings_LDAPBindPW_desc = The credentials of the user used to connect
to the LDAP server when querying the LDAP user database.
-view_admin_systemSettings_LDAPBindPW_name = Password
-view_admin_systemSettings_LDAPFilter_desc = Any additional filters to apply when doing
the LDAP search. This is useful if the population to authenticate can be identified via a
given LDAP property, e.g. RHQUser = true
-view_admin_systemSettings_LDAPFilter_name = Search Filter
-view_admin_systemSettings_LDAPGroupFilter_desc = LDAP search filter that must return all
LDAP groups available for authorization. This is used for LDAP group authorization.
-view_admin_systemSettings_LDAPGroupFilter_name = Group Search Filter
-view_admin_systemSettings_LDAPGroupMember_desc = LDAP search filter that is used in
conjunction with the group search filter to determine user authorization. This is used for
LDAP group authorization.
-view_admin_systemSettings_LDAPGroupMember_name = Group Member Filter
-view_admin_systemSettings_LDAPLoginProperty_desc = The LDAP property that contains the
user name. Defaults to "cn". If multiple matches are found, the first entry
found is used.
-view_admin_systemSettings_LDAPLoginProperty_name = Login Property
-view_admin_systemSettings_LDAPProtocol_desc = Should communication with the LDAP server
be done over SSL?
-view_admin_systemSettings_LDAPProtocol_name = SSL
-view_admin_systemSettings_LDAPUrl_desc = URL to the LDAP Server
-view_admin_systemSettings_LDAPUrl_name = LDAP URL
-view_admin_systemSettings_RtDataPurge_desc = How old response time data must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_RtDataPurge_name = Delete Response Time Data Older Than
-view_admin_systemSettings_TraitPurge_desc = How old measurement trait data must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_TraitPurge_name = Delete Measurement Traits Older Than
-view_admin_systemSettings_cannotLoadServerDetails = Cannot load server details
-view_admin_systemSettings_cannotLoadSettings = Cannot obtain the current system settings
-view_admin_systemSettings_fixBeforeSaving = Please fix the invalid values before saving
-view_admin_systemSettings_group_baseline = Automatic Baseline Configuration Properties
-view_admin_systemSettings_group_dataMgr = Data Manager Configuration Properties
-view_admin_systemSettings_group_general = General Configuration Properties
-view_admin_systemSettings_group_ldap = LDAP Configuration Properties
-view_admin_systemSettings_saveFailure = Failed to save the system settings
-view_admin_systemSettings_savedSettings = You successfully saved the system properties
-view_admin_systemSettings_serverDetails = Server Details
-view_admin_systemSettings_serverDetails_buildNumber = Build Number
-view_admin_systemSettings_serverDetails_currentTable = Current Measurement Raw Table
-view_admin_systemSettings_serverDetails_dbDriverName = Database Driver Name
-view_admin_systemSettings_serverDetails_dbDriverVersion = Database Driver Version
-view_admin_systemSettings_serverDetails_dbName = Database Product Name
-view_admin_systemSettings_serverDetails_dbUrl = Database Connection URL
-view_admin_systemSettings_serverDetails_dbVersion = Database Product Version
-view_admin_systemSettings_serverDetails_installDir = Server Installation Directory
-view_admin_systemSettings_serverDetails_nextRotation = Next Measurement Table Rotation
-view_admin_systemSettings_serverDetails_time = Server Local Time
-view_admin_systemSettings_serverDetails_tz = Server Time Zone
-view_admin_topology = Topologia
-view_alert_common_tab_conditions = Condi\u00E7\u00F5es
-view_alert_common_tab_conditions_expression = Disparar alerta quando
-view_alert_common_tab_conditions_expression_tooltip = Determina se QUALQUER UMA ou TODAS
as condi\u00E7\u00F5es devem ser satisfeitas para que todo o conjunto de
condi\u00E7\u00F5es seja considerado verdadeiro.
-view_alert_common_tab_conditions_modal_title = Adicionar nova condi\u00E7\u00E3o.
-view_alert_common_tab_conditions_recovery_disabled = Este alerta desativou a sua
defini\u00E7\u00E3o.
-view_alert_common_tab_conditions_recovery_enabled = ''{0}'' disparado
para ser reativado.
-view_alert_common_tab_conditions_text = Condi\u00E7\u00E3o
-view_alert_common_tab_conditions_type_availability = Mudan\u00E7a na Disponibilidade
-view_alert_common_tab_conditions_type_availability_down = Indispon\u00EDvel
-view_alert_common_tab_conditions_type_availability_up = Dispon\u00EDvel
-view_alert_common_tab_conditions_type_event = Detec\u00E7\u00E3o de Envento
-view_alert_common_tab_conditions_type_event_matching = combinando com o evento de origem
-view_alert_common_tab_conditions_type_metric_baseline = Valor da m\u00E9trica excede a
linha de base (baseline)
-view_alert_common_tab_conditions_type_metric_baseline_verb = de
-view_alert_common_tab_conditions_type_metric_calltime_change = Mudan\u00E7a no tempo de
chamada
-view_alert_common_tab_conditions_type_metric_calltime_change_verb = ao menos
-view_alert_common_tab_conditions_type_metric_calltime_delta_grows = Aumento
-view_alert_common_tab_conditions_type_metric_calltime_delta_other = Mudan\u00E7a
-view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = Redu\u00E7\u00E3o
-view_alert_common_tab_conditions_type_metric_calltime_destination = com o destino da
chamada correspondente
-view_alert_common_tab_conditions_type_metric_calltime_threshold = Tempo de chamada excede
o limiar (threshold)
-view_alert_common_tab_conditions_type_metric_change = Mudan\u00E7a no valor da
m\u00E9trica
-view_alert_common_tab_conditions_type_metric_threshold = Valor da M\u00E9trica excede o
limiar (threshold)
-view_alert_common_tab_conditions_type_metric_trait_change = Mudan\u00E7a de
Carater\u00EDstica
-view_alert_common_tab_conditions_type_operation = Execu\u00E7\u00E3o de
Opera\u00E7\u00E3o
-view_alert_common_tab_conditions_type_operation_status = resultado com status
-view_alert_common_tab_conditions_type_resource_configuration = Mudan\u00E7a na
Configura\u00E7\u00E3o do Recurso
-view_alert_common_tab_conditions_value = Valor
-view_alert_common_tab_dampening = Sensibilidade
-view_alert_common_tab_dampening_category_consecutive_count = Consecutivos
-view_alert_common_tab_dampening_category_consecutive_count_tooltip = Um alerta \u00E9
disparado a cada X ocorr\u00EAncias consecutivas em que o conjunto de condi\u00E7\u1E4Des
for satisfeito.
-view_alert_common_tab_dampening_category_duration_count = Per\u00EDodo de Tempo
-view_alert_common_tab_dampening_category_duration_count_tooltip = Um alerta \u00E9
disparado a cada X ocorr\u00EAncias em que o conjunto de condi\u00E7\u00F5es \u00E9
satisfeito dentro de um dado per\u00EDodo de tempo.
-view_alert_common_tab_dampening_category_none = N\u00E3o definido
-view_alert_common_tab_dampening_category_none_tooltip = Sensibilidade desabilitada. Cada
vez que o conjunto de condi\u00E7\u00F5es for satisfeito, um alerta ser\u00E1 disparado.
-view_alert_common_tab_dampening_category_partial_count = \u00DAltimas N
verifica\u00E7\u00F5es
-view_alert_common_tab_dampening_category_partial_count_tooltip = Um alerta \u00E9
disparado a cada X ocorr\u00EAncias em que o conjunto de condi\u00E7\u00F5es \u00E9
satisfeito durante as \u00FAltimas N verifica\u00E7\u00F5es.
-view_alert_common_tab_dampening_consecutive_occurrences_label = Ocorr\u00EAcias
-view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = O n\u00FAmero de
vezes que o conjunto de condi\u00E7\u00F5es deve ser satisfeito antes do alerta ser
disparado.
-view_alert_common_tab_dampening_duration_occurrences_label = Ocorr\u00EAncias
-view_alert_common_tab_dampening_duration_occurrences_label_tooltip = O n\u00FAmero de
vezes que o conjunto de condi\u00E7\u00F5es deve ser satisfeito durante o per\u00EDodo de
tempo definido antes do alerta ser disparado.
-view_alert_common_tab_dampening_duration_period_label = Per\u00EDodo de Tempo
-view_alert_common_tab_dampening_duration_period_label_tooltip = Espa\u00E7o de tempo em
que o conjunto de condi\u00E7\u00F5es ser\u00E1 testado para verificar se o n\u00FAmero de
ocorr\u00EAncias definido \u00E9 satisfeito.
-view_alert_common_tab_dampening_partial_evalatuions_label = Verifica\u00E7\u00F5es
-view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = O total de vezes que
o conjunto de condi\u00E7\u00F5es ser\u00E1 testado para certificar-se de que o
n\u00FAmero de ocorr\u00EAncias definido foi satisfeito.
-view_alert_common_tab_dampening_partial_occurrences_label = Ocorr\u00EAncias
-view_alert_common_tab_dampening_partial_occurrences_label_tooltip = O n\u00FAmero de
vezes que o conjunto de condi\u00E7\u00F5es deve ser satisfeito durante as \u00FAltimas N
verifica\u00E7\u00F5es antes do alerta ser disparado.
-view_alert_common_tab_general = Propriedades Gerais
-view_alert_common_tab_invalid_condition_category = Categoria de condi\u00E7\u00E3o
inv\u00E1lida - favor reportar como um bug: {0}
-view_alert_common_tab_invalid_dampening_category = Categora de sensibilidade
inv\u00E1lida - favor reportar como um bug: {0}
-view_alert_common_tab_invalid_time_units = Unidade de tempo inv\u00E1lida - favor
reportar como um bug: {0}
-view_alert_common_tab_notifications = Notifica\u00E7\u00F5es
-view_alert_common_tab_notifications_all_emails = Todos os Emails
-view_alert_common_tab_notifications_bad_emails = Emails recusados
-view_alert_common_tab_notifications_message = Mensagem
-view_alert_common_tab_notifications_sender = Remetente
-view_alert_common_tab_notifications_status = Status
-view_alert_common_tab_recovery = Recupera\u00E7\u00E3o~
-view_alert_definition_condition_editor_avilability_option_down = INDISPON\u00CDVEL
-view_alert_definition_condition_editor_avilability_option_up = DISPON\u00CDVEL
-view_alert_definition_condition_editor_avilability_tooltip = Especifica a mudan\u00E7a de
estado na disponibilidade do recurso que ir\u00E1 disparar a condi\u00E7\u00E3o.
-view_alert_definition_condition_editor_avilability_value = Disponibilidade
-view_alert_definition_condition_editor_common_avg = M\u00E9dio
-view_alert_definition_condition_editor_common_max = M\u00E1ximo
-view_alert_definition_condition_editor_common_min = M\u00EDnimo
-view_alert_definition_condition_editor_delete_confirm = Delete the selected alert
condition(s)?
-view_alert_definition_condition_editor_event_regex = Express\u00E3o Regular
-view_alert_definition_condition_editor_event_regex_tooltip = Se definida, a
condi\u00E7\u00E3o somente ser\u00E1 disparada caso o evento satisfa\u00E7a a
express\u00E3o.
-view_alert_definition_condition_editor_event_severity = Severidade do Evento
-view_alert_definition_condition_editor_event_severity_debug = Debug
-view_alert_definition_condition_editor_event_severity_error = Error
-view_alert_definition_condition_editor_event_severity_fatal = Fatal
-view_alert_definition_condition_editor_event_severity_info = Info
-view_alert_definition_condition_editor_event_severity_warn = Warn
-view_alert_definition_condition_editor_event_tooltip = Define a severeidade do evento
para disparar a condi\u00E7\u00E3o. Caso seja definida uma express\u00E3o regular, a
condi\u00E7\u00E3o somente ser\u00E1 disparada se o evento satisfazer a express\u00E3o.
-view_alert_definition_condition_editor_metric_baseline_percentage = Percentual da linha
de base
-view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = Valor da
m\u00E9trica coletada usada para disparo da condi\u00E7\u00E3o quando comparado ao valor
da linha de base selecionada
-view_alert_definition_condition_editor_metric_baseline_tooltip = Especifica a linha de
base que, quando violada, dispara a condi\u00E7\u00E3o. O valor especificado \u00E9 o
percentual do valor da linha de base informado.
-view_alert_definition_condition_editor_metric_baseline_value = Linha de base
(<i>baseline</i>)
-view_alert_definition_condition_editor_metric_calltime_change_percentage = Percentual de
Mudan\u00E7a
-view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip = Valor
do tempo de chamada coletado usado para disparar a condi\u00E7\u00E3o quando diferir do
percentual do valor limite do tempo de chamada definido.
-view_alert_definition_condition_editor_metric_calltime_change_tooltip = Especifica o
valor do tempo de chamada que, quanto alterado, dispara a condi\u00E7\u00E3o. \u00C9
necess\u00E1rio especificar o tempo limite para a chamada (m\u00EDnimo, m\u00E1ximo ou
m\u00E9dio) e o percental de mudan\u00E7a que deve ocorrer.
-view_alert_definition_condition_editor_metric_calltime_common_comparator =
Compara\u00E7\u00E3o
-view_alert_definition_condition_editor_metric_calltime_common_comparator_changes =
Mudan\u00E7as
-view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = Ganhos
-view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks =
Redu\u00E7\u00F5es
-view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = Como o
valor do tempo de chamada deve ser comparado ao valor limite
-view_alert_definition_condition_editor_metric_calltime_common_limit = Tempo limite da
chamada
-view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = Tempo de
chamada limite a ser comparado com o valor informado
-view_alert_definition_condition_editor_metric_calltime_common_name = M\u00E9trica do
tempo de chamada
-view_alert_definition_condition_editor_metric_calltime_common_regex = Express\u00E3o
Regular
-view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip = Se
especificada, essa \u00E9 a express\u00E3o regular a ser satisfeita pela chamada para
disparar a condi\u00E7\u00E3o.
-view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Especifica um
tempo limite para a chamada que, quando alcan\u00E7ado, dispara a condi\u00E7\u00E3o. O
valor especificado deve ser absoluto e com uma unidade de medida opcional. \u00C9
necess\u00E1rio especificar o tempo limite da chamada para compar\u00E1-lo ao valor:
m\u00EDnimo, m\u00E1ximo ou m\u00E9dio.
-view_alert_definition_condition_editor_metric_calltime_threshold_value = Valor do tempo
de chamada
-view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = O valor
do limiar (<i>threshold</i>) da m\u00E9trica usado para disparar a
condi\u00E7\u00E3o quando comparado ao mecanismo de compara\u00E7\u00E3o escolhido.
-view_alert_definition_condition_editor_metric_change_tooltip = Especifica a m\u00E9trica
cujo valor deve ser alterado para disparar a condi\u00E7\u00E3o.
-view_alert_definition_condition_editor_metric_common_definition_not_found = Deve existir
uma defini\u00E7\u00E3o para a m\u00E9trica - algo est\u00E1 incorreto
-view_alert_definition_condition_editor_metric_threshold_comparator = Mecanismo de
Compara\u00E7\u00E3o
-view_alert_definition_condition_editor_metric_threshold_comparator_equal = Igual \u00E0
-view_alert_definition_condition_editor_metric_threshold_comparator_greater = Maior que
-view_alert_definition_condition_editor_metric_threshold_comparator_less = Menor que
-view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = Como a
m\u00E9trica coletada deve ser comparada ao threshold estabelecido
-view_alert_definition_condition_editor_metric_threshold_name = M\u00E9trica
-view_alert_definition_condition_editor_metric_threshold_tooltip = Especifica um threshold
que, quando alcan\u00E7ado, dispara a condi\u00E7\u00E3o. O valor especificado deve ser
absoluto e com uma unidade de medida opcional.
-view_alert_definition_condition_editor_metric_threshold_value = Valor da M\u00E9trica
-view_alert_definition_condition_editor_metric_threshold_value_tooltip = Limiar
(threshold) da m\u00E9trica utilizado na compara\u00E7\u00E3o como condi\u00E7\u00E3o de
disparo.
-view_alert_definition_condition_editor_metric_trait_change_tooltip = Specify the trait
whose value must change to trigger the condition.
-view_alert_definition_condition_editor_metric_trait_change_value = Caracter\u00EDstica
-view_alert_definition_condition_editor_operation_status = Status da Opera\u00E7\u00E3o
-view_alert_definition_condition_editor_operation_status_canceled = Cancelada
-view_alert_definition_condition_editor_operation_status_failure = Falha
-view_alert_definition_condition_editor_operation_status_inprogress = Em andamento
-view_alert_definition_condition_editor_operation_status_success = Sucesso
-view_alert_definition_condition_editor_operation_tooltip = Define o resultado esperado
quando a opera\u00E7\u00E3o selecionada for executada para dispararo da
confi\u00E7\u00E3o.
-view_alert_definition_condition_editor_operation_value = Opera\u00E7\u00E3o
-view_alert_definition_condition_editor_option_availability = Mudan\u00E7a de
Disponibilidade
-view_alert_definition_condition_editor_option_event = Detec\u00E7\u00E3o de Evento
-view_alert_definition_condition_editor_option_label = Tipo de Condi\u00E7\u00E3o
-view_alert_definition_condition_editor_option_metric_baseline = Threshold base da
M\u00E9trica
-view_alert_definition_condition_editor_option_metric_calltime_change = Mudan\u00E7a no
tempo de chamada
-view_alert_definition_condition_editor_option_metric_calltime_threshold = Tempo limite da
chamada
-view_alert_definition_condition_editor_option_metric_change = Mudan\u00E7a no valor da
M\u00E9trica
-view_alert_definition_condition_editor_option_metric_threshold = Threshold (valor
absoluto) da M\u00E9trica
-view_alert_definition_condition_editor_option_metric_trait_change = Mudan\u00E7a de
Carcter\u00EDstica
-view_alert_definition_condition_editor_option_operation = Execu\u00E7\u00E3o de
Opera\u00E7\u00E3o
-view_alert_definition_condition_editor_option_resource_configuration = Mudan\u00E7a na
Configura\u00E7\u00E3o do Recurso
-view_alert_definition_condition_editor_resource_configuration_tooltip = Essa
condi\u00E7\u00E3o \u00E9 disparada quando a configura\u00E7\u00E3o do recurso for
alterada.
-view_alert_definition_for_group = Visualizar Defini\u00E7\u00E3o de Grupo
-view_alert_definition_for_type = Visualizar Template
-view_alert_definition_notification_cliScript_editor_anotherUser = Another User
-view_alert_definition_notification_cliScript_editor_existingScript = Existing Script
-view_alert_definition_notification_cliScript_editor_loadFailed = Loading the CLI
Notification Editor Failed.
-view_alert_definition_notification_cliScript_editor_newScriptVersion = Version
-view_alert_definition_notification_cliScript_editor_repository = Repository
-view_alert_definition_notification_cliScript_editor_script = Script
-view_alert_definition_notification_cliScript_editor_selectRepo = Select the repository
where the script should reside
-view_alert_definition_notification_cliScript_editor_selectRepoFirst = Select a repository
first.
-view_alert_definition_notification_cliScript_editor_thisUser = Myself
-view_alert_definition_notification_cliScript_editor_uploadNewScript = Upload New Script
-view_alert_definition_notification_cliScript_editor_verifyAuthentication = Verify
-view_alert_definition_notification_cliScript_editor_whichUser = User To Run The Script
As
-view_alert_definition_notification_editor_delete_confirm = Tem certeza de que deseja
excluir as notifica\u00E7\u00F5es selecionadas?
-view_alert_definition_notification_editor_field_configuration = Configura\u00E7\u00E3o
-view_alert_definition_notification_editor_field_configuration_loadFailed = Falha ao obter
a configura\u00E7\u00E3o
-view_alert_definition_notification_editor_field_configuration_not_loaded = Desconhecido
-view_alert_definition_notification_editor_field_sender = Remetente
-view_alert_definition_notification_editor_loadFailed = N\u00E3o \u00E9 poss\u00EDvel
obter remetentes
-view_alert_definition_notification_editor_loadFailed_single = N\u00E3o \u00E9
poss\u00EDvel obter a configura\u00E7\u00E3o do remetente
-view_alert_definition_notification_editor_none_available = Remetentes n\u00E3o
dispon\u00EDveis
-view_alert_definition_notification_editor_saveFailed = N\u00E3o foi poss\u00EDvel salvar
a configura\u00E7\u00E3o
-view_alert_definition_notification_editor_sender = Remetente da Notifica\u00E7\u00E3o
-view_alert_definition_notification_editor_title_add = Adicionar Notifica\u00E7\u00E3o
-view_alert_definition_notification_editor_title_edit = Editar Notifica\u00E7\u00E3o
-view_alert_definition_notification_operation_editor_common_operation =
Opera\u00E7\u00E3o
-view_alert_definition_notification_operation_editor_mode_relative = Recurso parente
-view_alert_definition_notification_operation_editor_mode_specific = Recurso
Espec\u00EDfico
-view_alert_definition_notification_operation_editor_mode_this = Este Recurso
-view_alert_definition_notification_operation_editor_mode_title = Modo de
Sele\u00E7\u00E3o do Recurso
-view_alert_definition_notification_operation_editor_mode_unknown = OP\u00C7\u00C3O
INV\u00C1LIDA - BUG!
-view_alert_definition_notification_operation_editor_operations_loadFailed = Falha ao
carregar a lista de opera\u00E7\u00F5es dispon\u00EDveis
-view_alert_definition_notification_operation_editor_operations_no_parameters = Esta
opera\u00E7\u00E3o n\u00E3o recebe par\u00E2metros
-view_alert_definition_notification_operation_editor_relative_ancestor = Iniciar a busca a
partir de
-view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed =
N\u00E3o \u00E9 poss\u00EDvel obter a ascend\u00EAncia do tipo
-view_alert_definition_notification_operation_editor_relative_ancestor_root = Tipo do
Ancestral Raiz
-view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Selecione
o topo da hierarquia para buscar a \u00E1rvore de descendentes para Filtro por Tipo
-view_alert_definition_notification_operation_editor_relative_descendant = Ent\u00E3o
procure por
-view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip =
Um nome especifico para identificar unicamente um recurso quando existir mais de um do
mesmo tipo. Isso \u00E9 opcional, se definido, sempre ser\u00E1 um recurso do tipo
slecionda na hierarquia.
-view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
N\u00E3o \u00E9 poss\u00EDvel obter os tipos de descendentes
-view_alert_definition_notification_operation_editor_relative_descendant_tooltip = Tipo do
recurso a ser procurado a baixo do tipo raiz definido na sele\u00E7\u00E3o 'Inicia a
Pesquesa a partir de'.
-view_alert_definition_notification_operation_editor_specific_pick_button = Selecionar
-view_alert_definition_notification_operation_editor_specific_pick_error_invalid = Favor
selecionar um recurso
-view_alert_definition_notification_operation_editor_specific_pick_error_no_operation =
Selecione um recurso que possua um ou mais opera\u00E7\u00F5es
-view_alert_definition_notification_operation_editor_specific_pick_text = Selecione um
recurso...
-view_alert_definition_notification_operation_editor_specific_resource = Recurso
-view_alert_definition_notification_role_editor_loadFailed = N\u00E3o \u00E9 poss\u00EDvel
determinar os perfis atuais - iniciando vazio
-view_alert_definition_notification_role_editor_restoreFailed = N\u00E3o \u00E9
poss\u00EDvel usar os perfis atuais - iniciando vazio
-view_alert_definition_notification_role_editor_saveFailed = N\u00E3o foi poss\u00EDvel
salvar os perfis selecionados
-view_alert_definition_notification_user_editor_loadFailed = N\u00E3o \u00E9 poss\u00EDvel
determinar os usu\u00E1rios atuais - iniciando vazio
-view_alert_definition_notification_user_editor_restoreFailed = N\u00E3o foi poss\u00EDvel
usar os usu\u00E1rios atuais - iniciando vazio
-view_alert_definition_notification_user_editor_saveFailed = N\u00E3o foi poss\u00EDvel
salvar os usu\u00E1rios seleciondados
-view_alert_definition_recovery_editor_disable_when_fired = Desabilitar quando disparado
-view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indica se este alerta
deve ser desabilitado ap\u00F3s ser disparado. Uma vez desabilitado, o alerta pode ser
reativado manualmente ou um alerta de recupera\u00E7\u00E3o pode ser definido para
reativ\u00E1-lo automaticamente. If this alert is a recovery alert itself, this setting
cannot be turned on.
-view_alert_definition_recovery_editor_loadFailed = N\u00E3o foi poss\u00EDvel construir o
menu de recupera\u00E7\u00E3o
-view_alert_definition_recovery_editor_none_available = Nenhum
-view_alert_definition_recovery_editor_recovery_alert = Alerta de Recupera\u00E7\u00E3o
-view_alert_definition_recovery_editor_recovery_alert_tooltip = O Alerta a ser recuperado
(reativado) ap\u00F3s o disparo deste alerta. N\u00E3o selecione um alerta aqui caso
n\u00E3o esteja definindo um alerta de recupera\u00E7\u00E3o.
-view_alert_definitions_create_failure = Falha na cria\u00E7\u00E3o da defini\u00E7\u00E3o
do alerta
-view_alert_definitions_create_success = Defini\u00E7\u00E3o do alerta criada com sucesso
-view_alert_definitions_delete_confirm = Excluir defini\u00E7\u00F5es para o alerta
selecionado?
-view_alert_definitions_delete_failure = Falha aos excluir as defini\u00E7\u00F5es do
alerta selecionado
-view_alert_definitions_delete_success = Defini\u00E7\u00F5es do alerta {0} exclu\u00EDdas
com sucesso
-view_alert_definitions_disable_confirm = Desabilitar as defini\u00E7\u00F5es para o
alerta selecionado?
-view_alert_definitions_disable_failure = Falha ao desabilitar defini\u00E7\u00F5es para o
alerta selecionado
-view_alert_definitions_disable_success = Defini\u00E7\u00F5es do alerta {0} desabilitadas
com sucesso
-view_alert_definitions_enable_confirm = Habilitar a(s) defini\u00E7\u00E3o(\u00F5es) para
o alerta selecionado?
-view_alert_definitions_enable_failure = Falha ao habilitar defini\u00E7\u00F5es para o
alerta selecionado
-view_alert_definitions_enable_success = Defini\u00E7\u00F5es do alerta {0} habilitados
com sucesso
-view_alert_definitions_loadFailed = Falha ao obter a defini\u00E7\u00E3o do alerta
-view_alert_definitions_loadFailed_single = Falha ao obter a defini\u00E7\u00E3o do alerta
com ID {0}
-view_alert_definitions_table_title_group = Defini\u00E7\u00F5es de Alertas para Grupo
-view_alert_definitions_table_title_resource = Defini\u00E7\u00F5es de Alerta para
Recurso
-view_alert_definitions_update_failure = Falha ao atualizar a defini\u00E7\u00E3o do
alerta
-view_alert_definitions_update_success = Defini\u00E7\u00E3o do alerta atualizada com
sucesso
-view_alert_details_breadcrumb = Detalhes
-view_alert_details_field_ack_at = Verificado em
-view_alert_details_field_ack_by = Verificado por
-view_alert_details_field_recovery_info = Informa\u00E7\u00E3o de Recupera\u00E7\u00E3o
-view_alert_details_loadFailed = Falha ao recuperar detalhes do alerta
-view_alerts_ack_confirm = Confirma o(s) alerta(s) selecionado(s)?
-view_alerts_ack_confirm_all = Confirma todos os alertas?
-view_alerts_ack_failure = Falha ao confirmar alertas com os seguintes IDs: {0}
-view_alerts_ack_failure_all = N\u00E3o foi poss\u00EDvel confirmar todos os alertas
-view_alerts_ack_success = Alertas {0} confirmados com sucesso
-view_alerts_delete_confirm = Excluir o(s) alerta(s) selecionado(s)?
-view_alerts_delete_confirm_all = Excluir todos os alertas?
-view_alerts_delete_failure = Falha ao excluir alertas com os seguintes IDs: {0}
-view_alerts_delete_failure_all = N\u00E3o foi poss\u00EDvel excluir os alertas
-view_alerts_delete_success = Alertas {0} exclu\u00EDdos com sucesso
-view_alerts_field_ack_status = Status
-view_alerts_field_ack_status_ack = Ack ({0})
-view_alerts_field_ack_status_ackHover = Acknowledged by {0} at {1}
-view_alerts_field_ack_status_empty = Ainda n\u00E3o verificado
-view_alerts_field_ack_status_filled = {0} verificado em {1}
-view_alerts_field_ack_status_noAck = No Ack
-view_alerts_field_ack_status_noAckHover = Not yet Acknowledged
-view_alerts_field_ack_subject = Assunto da Verifica\u00E7\u00E3o
-view_alerts_field_ack_time = Data de Verifica\u00E7\u00E3o
-view_alerts_field_condition_text = Condi\u00E7\u00E3o
-view_alerts_field_condition_text_many = M\u00FAltiplas condi\u00E7\u00F5es
-view_alerts_field_condition_text_none = Sem condi\u00E7\u00F5es
-view_alerts_field_condition_value = Valor da Condi\u00E7\u00E3o
-view_alerts_field_created_time = Data de Cria\u00E7\u00E3o
-view_alerts_field_enabled = Habilitado
-view_alerts_field_modified_time = Data de Altera\u00E7\u00E3o
-view_alerts_field_name = Nome
-view_alerts_field_parent = Pai
-view_alerts_field_priority = Prioridade
-view_alerts_field_protected = Protegido
-view_alerts_field_protected_tooltip = Se verdadeiro, esta defini\u00E7\u00E3o \u00E9
protegida de altera\u00E7\u00F5es feitas na defini\u00E7\u00E3o pai, ou seja,
altera\u00E7\u00F5es realizadas no pai n\u00E3o sobrescrevem esta defini\u00E7\u00E3o.
-view_alerts_field_resource = Recurso
-view_alerts_loadFailed = Falha ao carregar dados dos alertas
-view_alerts_table_filter_priority = Filtro de Prioridade
-view_alerts_table_title_group = Hist\u00F3rico de Alertas do Grupo
-view_alerts_table_title_resource = Hist\u00F3rico de Alertas do Recurso
-view_autoDiscoveryQ_committed = Committed
-view_autoDiscoveryQ_confirmSelect = Also select the platform children?
-view_autoDiscoveryQ_deleted = Deleted
-view_autoDiscoveryQ_field_discoveryTime = Data e Hora da Descoberta
-view_autoDiscoveryQ_field_inventoryStatus = Status do Invet\u00E1rio
-view_autoDiscoveryQ_field_key = Chave do Recurso
-view_autoDiscoveryQ_field_name = Nome do Recurso
-view_autoDiscoveryQ_field_parentId = ID Pai
-view_autoDiscoveryQ_ignore = Ignorar
-view_autoDiscoveryQ_ignoreFailure = Falha ao ignorar recursos.
-view_autoDiscoveryQ_ignoreSuccessful = Os recursos selecionados foram ignorados com
sucesso.
-view_autoDiscoveryQ_ignored = Ignorado
-view_autoDiscoveryQ_import = Importar
-view_autoDiscoveryQ_importFailure = Falha ao importar recursos
-view_autoDiscoveryQ_importSuccessful = Os recursos selecionados foram importados com
sucesso.
-view_autoDiscoveryQ_loadFailure = Falha ao carregar a fila de descoberta do
invent\u00E1rio
-view_autoDiscoveryQ_new = Novo
-view_autoDiscoveryQ_newAndIgnored = Novo e Ignorado
-view_autoDiscoveryQ_noItems = N\u00E3o h\u00E1 itens a serem mostrados
-view_autoDiscoveryQ_noperm = (Required manage inventory permissions missing. See
Administrator to change)~
-view_autoDiscoveryQ_showStatus = Show
-view_autoDiscoveryQ_title = Fila de Autodescoberta
-view_autoDiscoveryQ_unignore = N\u00E3o ignorar
-view_autoDiscoveryQ_unignoreFailure = Falha ao reimportar os recursos
-view_autoDiscoveryQ_unignoreSuccessful = You have successfully unignored the selected
resources.~
-view_autoDiscoveryQ_uninventoried = Uninventoried
-view_bundleVersion_loadFailure = Failed to load bundle version data~
-view_bundle_bundle = Bundle~
-view_bundle_bundleDeployment = Bundle Deployment~
-view_bundle_bundleDeployments = Bundle Deployments~
-view_bundle_bundleDestinations = Bundle Destinations~
-view_bundle_bundleFiles = Bundle Files~
-view_bundle_bundleType = Bundle Type~
-view_bundle_bundleVersion = Bundle Version~
-view_bundle_bundleVersions = Bundle Versions~
-view_bundle_bundles = Bundles~
-view_bundle_createWizard_bundleDistro = Bundle Distribution~
-view_bundle_createWizard_cancelFailure = Failed to fully cancel the creation of bundle
[{0}], version = [{1}] - the bundle may still exist in the database~
-view_bundle_createWizard_cancelSuccessful = Canceled the creation of bundle [{0}],
version = [{1}]~
-view_bundle_createWizard_clickToUploadRecipe = Click to upload a recipe file~
-view_bundle_createWizard_createFailure = Failed to create the bundle~
-view_bundle_createWizard_createSuccessful = You have successfully created a bundle named
[{0}] with a version of [{1}]~
-view_bundle_createWizard_enterRecipe = Please supply a valid recipe
-view_bundle_createWizard_enterUrl = Please enter a valid URL where the bundle
distribution file can be downloaded from
-view_bundle_createWizard_failedToUploadDistroFile = Failed to upload bundle distribution
file~
-view_bundle_createWizard_failedToUploadFile = Failed to upload bundle file~
-view_bundle_createWizard_loadBundleFileFailure = Cannot obtain bundle file information
from server~
-view_bundle_createWizard_noAdditionalFilesNeeded = No additional files need to be
uploaded for this bundle~
-view_bundle_createWizard_noBundleTypesAvail = No bundle types are available~
-view_bundle_createWizard_noBundleTypesSupported = No bundle types are supported - you
must deploy a valid plugin that supports bundle deployments~
-view_bundle_createWizard_provideBundleDistro = Provide a Bundle Distribution
-view_bundle_createWizard_recipeOption = Recipe~
-view_bundle_createWizard_title = Create Bundle~
-view_bundle_createWizard_uploadInProgress = Upload is in progress... This can take
several minutes for large files~
-view_bundle_createWizard_uploadOption = Upload~
-view_bundle_createWizard_uploadStepName = Provide a Bundle Distribution~
-view_bundle_createWizard_urlOption = URL~
-view_bundle_createWizard_windowTitle = Bundle Creation Wizard~
-view_bundle_createWizard_youMustChooseOne = You must choose one option in order to create
a bundle!
-view_bundle_deleteConfirm = Are you sure you want to delete this bundle? All
versions, destinations and deployments for this bundle will also be deleted.
-view_bundle_deploy = Deploy~
-view_bundle_deployDir = Deploy Directory~
-view_bundle_deployWizard_deployStep = Deploy Bundle to Destination Platforms~
-view_bundle_deployWizard_deploying = Deploying...~
-view_bundle_deployWizard_deploymentCreated = Created Deployment...~
-view_bundle_deployWizard_deploymentCreatedDetail = Created deployment [{0}] description
[{1}]~
-view_bundle_deployWizard_deploymentCreatedDetail_concise = You have created the
deployment [{0}]
-view_bundle_deployWizard_deploymentScheduled = Bundle Deployment Scheduled!~
-view_bundle_deployWizard_deploymentScheduledDetail = Scheduled bundle deployment [{0}]
destination group [{1}]~
-view_bundle_deployWizard_deploymentScheduledDetail_concise = You have scheduled the
bundle deployment
-view_bundle_deployWizard_destinationCreatedDetail = Created destination [{0}] description
[{1}]~
-view_bundle_deployWizard_destinationCreatedDetail_concise = You have created the
destination [{0}]
-view_bundle_deployWizard_error_1 = Failed to delete new deployment on Cancel:
-view_bundle_deployWizard_error_10 = Failed to create destination, it may already exist.
(Note, for an existing destination deploy from the Destination view)~
-view_bundle_deployWizard_error_11 = Failed to find defined deployments.~
-view_bundle_deployWizard_error_12 = Failed to find defined bundles.~
-view_bundle_deployWizard_error_2 = Failed to delete new destination on Cancel:
-view_bundle_deployWizard_error_3 = Failed to Schedule Deployment!~
-view_bundle_deployWizard_error_4 = Failed to schedule deployment: {0}~
-view_bundle_deployWizard_error_5 = Failed to Create Deployment!~
-view_bundle_deployWizard_error_6 = Failed to create deployment: {0}~
-view_bundle_deployWizard_error_7 = Failed to get deployment name.~
-view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down~
-view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage:~
-view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.~
-view_bundle_deployWizard_getConfigStep = Set Deployment Configuration~
-view_bundle_deployWizard_getDestStep = New Destination~
-view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)~
-view_bundle_deployWizard_getDest_desc = Destination Description~
-view_bundle_deployWizard_getDest_name = Destination Name~
-view_bundle_deployWizard_getInfoStep = Provide Deployment Information~
-view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)~
-view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description~
-view_bundle_deployWizard_getInfo_deploymentName = Deployment Name~
-view_bundle_deployWizard_getOptionsStep = Deploy Options~
-view_bundle_deployWizard_getOptions_deployLater = Deploy Later~
-view_bundle_deployWizard_getOptions_deployNow = Deploy Now~
-view_bundle_deployWizard_getOptions_deployTime = Deployment Time~
-view_bundle_deployWizard_selectBundleStep = Select Deployment Bundle~
-view_bundle_deployWizard_selectBundle_single = Select only a single bundle for
deployment.~
-view_bundle_deployWizard_selectVersionStep = Select Deployment Bundle Version~
-view_bundle_deployWizard_selectVersion_latest = Latest Version [{0}]~
-view_bundle_deployWizard_selectVersion_live = Live Version [{0}]~
-view_bundle_deployWizard_selectVersion_select = Select Version from List:~
-view_bundle_deployWizard_title = Bundle Deployment Wizard~
-view_bundle_deploy_action = Action~
-view_bundle_deploy_backButton = Back to Destination~
-view_bundle_deploy_clickForError = Click the icon for the error message
-view_bundle_deploy_deleteConfirm = Are you sure you want to delete this bundle
deployment?
-view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
-view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
-view_bundle_deploy_deployedBy = Deployed By
-view_bundle_deploy_deploymentPlatforms = Deployment Platforms~
-view_bundle_deploy_installDetails = Install Details~
-view_bundle_deploy_loadBundleFailure = Failed to find bundle~
-view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments~
-view_bundle_deploy_loadFailure = Failed to load bundle deployment~
-view_bundle_deploy_name = Deployment Name~
-view_bundle_deploy_operatingSystem = Operating System~
-view_bundle_deploy_selectARow = Select a row to show installation details~
-view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags~
-view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags~
-view_bundle_deploy_time = Deployment Time~
-view_bundle_deployed = Deployed~
-view_bundle_deployments = Deployments~
-view_bundle_dest_backToBundle = Back to Bundle~
-view_bundle_dest_created = Created~
-view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle
destination? This only deletes it from the database; all bundle content that was deployed
to this destination on remote machines will remain.
-view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
-view_bundle_dest_deleteSuccessful = You successfully deleted the bundle destination
[{0}]
-view_bundle_dest_deployDir = Deploy Directory~
-view_bundle_dest_group = Group~
-view_bundle_dest_lastDeployedVersion = Last Deployed Version~
-view_bundle_dest_lastDeploymentDate = Last Deployment Date~
-view_bundle_dest_lastDeploymentStatus = Last Deployment Status~
-view_bundle_dest_loadFailure = Failed to load bundle destinations~
-view_bundle_dest_loadFailureVersionInfo = Failed to load bundle destination deployed
version information~
-view_bundle_dest_purgeConfirm = This will purge the bundle content from all remote
machines. Are you sure you want to do this?
-view_bundle_dest_purgeFailure = Failed to purge the bundle destination [{0}] from some
or all of the remote machines.
-view_bundle_dest_purgeSuccessful = You successfully purged the bundle destination [{0}]
from all of the remote machines.
-view_bundle_dest_revertConfirm = This will revert all remote machines back to the
previous bundle deployment. Are you sure you want to do this?
-view_bundle_dest_tagUpdateFailure = Failed to update bundle destination tags~
-view_bundle_dest_tagUpdateSuccessful = You have successfully updated the bundle
destination tags~
-view_bundle_destinations = Destinations~
-view_bundle_fileListView_fileSize = File Size~
-view_bundle_fileListView_loadFailure = Failed to load bundle file data~
-view_bundle_fileListView_md5 = MD5
-view_bundle_fileListView_sha256 = SHA256
-view_bundle_files = Files~
-view_bundle_latestVersion = Latest Version~
-view_bundle_list_backToAll = Back to All Bundles~
-view_bundle_list_deleteConfirm = Are you sure you want to delete this bundle?~
-view_bundle_list_deleteFailure = Failed to delete the bundle [{0}]~
-view_bundle_list_deleteSuccessful = You successfully deleted the bundle named [{0}]~
-view_bundle_list_deletesFailure = Failed to delete the bundles
-view_bundle_list_deletesSuccessful = You successfully deleted the bundles
-view_bundle_list_destinationsCount = Destinations Count~
-view_bundle_list_error1 = Failed to load bundle to deploy [{0}]~
-view_bundle_list_error2 = Failed to get a single bundle to deploy [{0}]~
-view_bundle_list_error3 = Failed to load bundle~
-view_bundle_list_loadFailure = Failed to load the bundle to be deployed [{0}]~
-view_bundle_list_loadWithLatestFailure = Failed to load bundle with the latest version
data~
-view_bundle_list_singleLoadFailure = Failed to get a single bundle to be deployed [{0}]~
-view_bundle_list_tagUpdateFailure = Failed to update bundle tags~
-view_bundle_list_tagUpdateSuccessful = You have successfully updated the bundle tags~
-view_bundle_list_versionsCount = Versions Count~
-view_bundle_purge = Purge
-view_bundle_recipe = Recipe~
-view_bundle_resDeployDS_loadFailure = Failed to load bundle resource deployments~
-view_bundle_revert = Revert~
-view_bundle_revertWizard_confirmStep_confirmation = Reverting Live Deployment to Previous
Deployment. Click "Next" to continue...~
-view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment = Failed to find live
deployment; cannot revert~
-view_bundle_revertWizard_confirmStep_liveDeployment = Live Deployment~
-view_bundle_revertWizard_confirmStep_name = Revert Deployment Confirmation~
-view_bundle_revertWizard_confirmStep_noLiveDeployment = No live deployment was found for
the destination [{0}]~
-view_bundle_revertWizard_confirmStep_noLiveDeployment_concise = No live deployment was
found for the destination
-view_bundle_revertWizard_confirmStep_noPriorDeployment = The live deployment [{0}] cannot
be reverted because there is no prior deployment for the destination [{1}]~
-view_bundle_revertWizard_confirmStep_noPriorDeployment_concise = The live deployment
cannot be reverted because there is no prior deployment
-view_bundle_revertWizard_confirmStep_prevDeployment = Previous Deployment~
-view_bundle_revertWizard_getInfoStep_cleanDeploy = Clean Deployment? (this will delete an
old, existing deploy directory prior to starting the revert deployment)~
-view_bundle_revertWizard_getInfoStep_getNameFailure = Failed to get revert deployment
name~
-view_bundle_revertWizard_getInfoStep_name = Provide Revert Information~
-view_bundle_revertWizard_getInfoStep_revertDeployDesc = Revert Deploy Description~
-view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT
From]\\n{0}\\n\\n[REVERT To]\\n{1}~
-view_bundle_revertWizard_getInfoStep_revertDeployName = Revert Deploy Name~
-view_bundle_revertWizard_revertStep_name = Deploy Bundle to Destination Platforms~
-view_bundle_revertWizard_revertStep_reverting = Reverting...~
-view_bundle_revertWizard_revertStep_scheduled = You have successfully scheduled the
revert deployment!~
-view_bundle_revertWizard_revertStep_scheduledDetails = You have successfully scheduled to
revert the bundle deployment [{0}] from resource group [{1}]~
-view_bundle_revertWizard_revertStep_scheduledFailure = Failed to schedule revert
deployment!~
-view_bundle_revertWizard_title = Bundle Revert~
-view_bundle_revertWizard_windowTitle = Bundle Revert Wizard~
-view_bundle_tree_loadFailure = Failed to load bundle data~
-view_bundle_version_backToBundle = Back to Bundle~
-view_bundle_version_bundleVersionTagUpdateFailure = Failed to update bundle version
tags~
-view_bundle_version_bundleVersionTagUpdateSuccessful = You have successfully updated the
bundle version tags~
-view_bundle_version_deleteConfirm = Are you sure you want to delete this bundle version?
-view_bundle_version_deleteFailure = Failed to delete the bundle version [{0}]
-view_bundle_version_deleteSuccessful = You successfully deleted the bundle version [{0}]
-view_bundle_version_loadFailure = Failed to load bundle version~
-view_bundle_versions = Versions~
-view_configCompare_comparingConfigs = Comparando Configura\u00E7\u00F5es
-view_configCompare_configCompare = Compara\u00E7\u00E3o de Configura\u00E7\u00F5es
-view_configEdit_addItem = Adicionar Item \u00E0 Lista
-view_configEdit_confirm_1 = Tem certeza de que deseja excluir as propriedades
selecionadas?
-view_configEdit_confirm_2 = Tem certeza de que deseja excluir esta linha?
-view_configEdit_confirm_3 = Tem certeza de que deseja excluir [{0}] selecionado
[{1}]?
-view_configEdit_editRow = Editar Linha de Configura\u00E7\u00E3o
-view_configEdit_enterPropName = Informe o nome da propriedade a ser adicionada.
-view_configEdit_error_1 = Este recurso n\u00E3o suporta Configura\u00E7\u00E3o.
-view_configEdit_error_2 = Este recurso n\u00E3o possui suporte \u00E0
propriedades de conex\u00E3o.
-view_configEdit_error_3 = N\u00E3o f\u00F3 poss\u00EDvel adicionar a propriedade
com nome [{0}]. Nome de propriedade j\u00E1 utilizada neste conjunto.
-view_configEdit_files = Arquivos
-view_configEdit_hideAll = Ocultar todos
-view_configEdit_jumpToSection = Ir direto para a Sele\u00E7\u00E3o
-view_configEdit_msg_1 = Propriedade [{0}] adicionada ao conjunto.
-view_configEdit_msg_2 = Propriedades removidas do conjunto.
-view_configEdit_msg_3 = [{0} {1}] removido da lista.
-view_configEdit_msg_4 = Item adicionado \u00E0 lista.
-view_configEdit_properties = Propriedades
-view_configEdit_tooltip_1 = Remove os itens selecionados da lista.
-view_configEdit_tooltip_2 = Adiciona um item \u00E0 lista.
-view_configEdit_viewRow = View Row
-view_configurationDetails_allPropertiesValid = All configuration properties have valid
values, so the configuration can now be saved.~
-view_configurationDetails_configNotUpdatedDueToNoChange = Configuration was not updated,
since the new configuration is equivalent to the current configuration.
-view_configurationDetails_error_updateFailure = Failed to update configuration.~
-view_configurationDetails_messageConcise = Configuration updated - current version is
{0}.~
-view_configurationDetails_messageDetailed = Configuration updated to version {0} for
Resource [{1}].
-view_configurationDetails_noPermission = You do not have permission to edit this
Resource''s configuration.~
-view_configurationDetails_somePropertiesInvalid = The following configuration properties
have invalid values: {0}. The values must be corrected before the configuration can be
saved.~
-view_configurationHistoryDetails_dialogTitle = Configuration Details~
-view_configurationHistoryDetails_error_loadFailure = Unable to load configuration
history.~
-view_configurationHistoryList_cannotDeleteCurrent = One of the selected history items
represents the current configuration - you cannot delete it.
-view_configurationHistoryList_cannotDeleteGroupItems = One or more selected configuration
history items are part of a group configuration update.
view_configurationHistoryList_delete_failure = Failed to delete the configuration history
items.
-view_configurationHistoryList_delete_success = You successfully deleted the selected
configuration history items.
-view_configurationHistoryList_itemNamePlural = configuration history items
-view_configurationHistoryList_rollback = Rollback
-view_configurationHistoryList_rollback_failure = Failed to rollback the configuration.
The original configuration is still in effect.
-view_configurationHistoryList_rollback_success = You successfully rolled back the
configuration to the selected past configuration.
-view_configurationHistoryList_table_clickStatusIcon = Click the status icon for full
details
-view_configurationHistoryList_table_statusFailure = This configuration update failed
-view_configurationHistoryList_table_statusInprogress = This configuration update is still
in progress
-view_configurationHistoryList_table_statusNochange = No changes were made to this
configuration
-view_configurationHistoryList_table_statusSuccess = This configuration update was
successful
-view_configurationHistoryList_title = Configuration History~
-view_connectionSettingsDetails_allPropertiesValid = All connection settings have valid
values, so the settings can now be saved.~
-view_connectionSettingsDetails_error_updateFailure = Failed to update connection
settings.~
-##view_connectionSettingsDetails_messageConcise_updateSuccess = Connection settings
updated.~
-##view_connectionSettingsDetails_messageDetailed_updateSuccess = Connection settings
updated for Resource [{0}].~
-view_connectionSettingsDetails_noPermission = You do not have permission to edit this
Resource''s connection settings.~
-view_connectionSettingsDetails_somePropertiesInvalid = The following connection settings
have invalid values: {0}. The values must be corrected before the settings can be saved.~
-view_core_error_1 = Falha ao perquisar novos alertas~
-view_core_loggedInAs = Logado como {0}~
-view_core_loggedOut = Logged out~
-view_core_noRecentAlerts = There are no recent alerts to report
-view_core_recentAlerts = [{0}] alertas recentes~
-view_core_uncaught = Exce\u00E7\u00E3o n\u00E3o capturada~
-view_dashboardManager_deleteFail = Failed to delete dashboard.
-view_dashboardManager_deleted = Successfully deleted dashboard {0}~
-view_dashboardManager_error = Failed to save dashboard to server~
-view_dashboardManager_saved = Saved dashboard {0} to server~
-view_dashboardManager_success = Saved dashboard~
-view_dashboard_favorites_error1 = Failed to load favorite Resources.~
-view_dashboardsManager_error1 = Failed to add new dashboard~
-view_dashboardsManager_inventory_title = Inventory Summary~
-view_dashboardsManager_mashup_title = RHQ News~
-view_dashboardsManager_message_title = Welcome To RHQ~
-view_dashboardsManager_message_title_details = <h1>Welcome to
RHQ</h1>\n<p>The RHQ project is an abstraction and plug-in based systems
management suite that provides extensible and integrated systems management for multiple
products and platforms across a set of core features. The project is designed with layered
modules that provide a flexible architecture for deployment. It delivers a core user
interface that delivers audited and historical management across an entire enterprise. A
Server/Agent architecture provides remote management and plugins implement all specific
support for managed products.</p>\n <p>This default dashboard can be edited by
clicking the (edit mode) button above.</p>~
-view_dashboardsManager_tagcloud_title = Tag Cloud~
-view_dashboards_confirm1 = Are you sure you want to delete~
-view_dashboards_portlets_refresh_fail1 = Failed to update interval for portlets that
auto-refresh
-view_dashboards_portlets_refresh_fail2 = Failed to disable reload for portlets that
auto-refresh
-view_dashboards_portlets_refresh_multiple_min = {0} minutes
-view_dashboards_portlets_refresh_none = No Refresh
-view_dashboards_portlets_refresh_one_min = 1 minute
-view_dashboards_portlets_refresh_success1 = Updated interval for portlets that
auto-refresh
-view_dashboards_portlets_refresh_success2 = Stopping reload for portlets that
auto-refresh
-view_dashboards_title = Dashboard~
-view_dynagroup_children = DynaGroup Children~
-view_dynagroup_compatible = Compatible
-view_dynagroup_definitionAlreadyExists = A group definition already exists with this
name~
-view_dynagroup_definitionCreated = You have successfully created a group definition named
[{0}]~
-view_dynagroup_definitionLoadFailure = Failed to load group definitions~
-view_dynagroup_definitions = DynaGroup Definitions~
-view_dynagroup_deleteFailureSelection = Failed to delete the selected group definitions~
-view_dynagroup_deleteSuccessfulSelection = You have successfully deleted [{0}] group
definitions~
-view_dynagroup_editing = Editing [{0}]~
-view_dynagroup_exprBuilder_addExpression = Add Expression
-view_dynagroup_exprBuilder_comparisonType = Comparison Type
-view_dynagroup_exprBuilder_comparisonType_contains = contains
-view_dynagroup_exprBuilder_comparisonType_endsWith = ends with
-view_dynagroup_exprBuilder_comparisonType_equals = equals
-view_dynagroup_exprBuilder_comparisonType_startsWith = starts with
-view_dynagroup_exprBuilder_comparisonType_tooltip = Comparison Type
-view_dynagroup_exprBuilder_definingPlugin = Defining Plugin
-view_dynagroup_exprBuilder_definingPlugin_tooltip = The plugin to search
-view_dynagroup_exprBuilder_expression = Expression
-view_dynagroup_exprBuilder_expressionType = Expression Type
-view_dynagroup_exprBuilder_expressionType_pluginConfig = Plugin Configuration
-view_dynagroup_exprBuilder_expressionType_resource = Resource
-view_dynagroup_exprBuilder_expressionType_resourceCategory = Resource Category
-view_dynagroup_exprBuilder_expressionType_resourceConfig = Resource Configuration
-view_dynagroup_exprBuilder_expressionType_resourceType = Resource Type
-view_dynagroup_exprBuilder_expressionType_tooltip = The type of property this expression
switches on:<br/> <b>Resource</b>: A resource property such as its name
or version<br/> <b>Resource Type</b>: Search for resources of a specific
type<br/> <b>Resource Category</b>: Search for resources by category:
platform, server, service<br/> <b>Trait</b>: Resources that have
selected values for a monitored trait<br/> <b>Plugin Configuration</b>:
Search by the plugin component configuration setting of the component<br/>
<b>Resource Configuration</b>: Search by the configuration setting of the
managed resource
-view_dynagroup_exprBuilder_expressionType_trait = Trait
-view_dynagroup_exprBuilder_expression_tooltip = This is the full expression that is
represented by the selections in the form below. This text will be added to your group
definition expression text when you click the "Add Expression" button.
-view_dynagroup_exprBuilder_groupBy = Group by
-view_dynagroup_exprBuilder_groupBy_tooltip = GroupBy will cause the system to pivot on
the values from the entered expressions creating a separate group for each value. For
example, GroupBy on the cluster name to create a group for each cluster with all cluster
members in it.
-view_dynagroup_exprBuilder_noPlugins = --No plugins--
-view_dynagroup_exprBuilder_noProperties = --No properties--
-view_dynagroup_exprBuilder_noResourceTypes = --No resource types--
-view_dynagroup_exprBuilder_pluginLoadFailure = Cannot get the list of plugins
-view_dynagroup_exprBuilder_propLoadFailure = Cannot get list of properties
-view_dynagroup_exprBuilder_propertyName = Property Name
-view_dynagroup_exprBuilder_propertyName_tooltip = The name of the property to query. This
is defined by the expression type as well as the resource type.
-view_dynagroup_exprBuilder_resTypeLoadFailure = Cannot get list of resource types for
plugin [{0}]
-view_dynagroup_exprBuilder_resource = Resource
-view_dynagroup_exprBuilder_resourceType = Resource Type
-view_dynagroup_exprBuilder_resourceType_tooltip = The type of resource
-view_dynagroup_exprBuilder_resource_child = Child
-view_dynagroup_exprBuilder_resource_grandparent = Grandparent
-view_dynagroup_exprBuilder_resource_greatGrandparent = GreatGrandparent
-view_dynagroup_exprBuilder_resource_greatGreatGrandparent = GreatGreatGrandparent
-view_dynagroup_exprBuilder_resource_parent = Parent
-view_dynagroup_exprBuilder_resource_resource = Resource
-view_dynagroup_exprBuilder_resource_tooltip = Choose the level of the resource you wish
to select. For example, select "parent" will find resources whose parent
resource matches the rest of the expression.
-view_dynagroup_exprBuilder_title = Expression Builder
-view_dynagroup_exprBuilder_unset = Unset
-view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the " = " operator
because of how databases store and query data.
-view_dynagroup_exprBuilder_value_tooltip = The string value for the expression to query
-view_dynagroup_expression = Expression~
-view_dynagroup_expressionBuilderIconTooltip = Expression Builder...
-view_dynagroup_expressionSet = Expression Set~
-view_dynagroup_lastCalculationTime = Last Calculation Time~
-view_dynagroup_loadDefinitionFailure = Failed to load group definition [{0}]~
-view_dynagroup_loadDefinitionMissing = There is no group definition with the ID of
[{0}]~
-view_dynagroup_mixed = Mixed
-view_dynagroup_newGroupDefinition = New Group Definition~
-view_dynagroup_nextCalculationTime = Next Calculation Time~
-view_dynagroup_permDenied = You do not have permission to view group definitions~
-view_dynagroup_permUnknown = Could not determine if you have the proper permissions
- access is denied~
-view_dynagroup_recalcFailure = Failed to recalculated this group definition~
-view_dynagroup_recalcFailureSelection = Failed to recalculated the selected group
definitions~
-view_dynagroup_recalcSuccessful = You have successfully recalculated this group
definition~
-view_dynagroup_recalcSuccessfulSelection = You have successfully recalculated [{0}] group
definitions~
-view_dynagroup_recalculate = Recalculate~
-view_dynagroup_recalculationInterval = Recalculation Interval~
-view_dynagroup_recursive = Recursive~
-view_dynagroup_saveAndRecalculate = Save & Recalculate~
-view_dynagroup_saveFailure = Failed to save the group definition named [{0}]~
-view_dynagroup_saveSuccessful = You have successfully saved the group definition named
[{0}]~
-view_dynagroup_singleSaveFailure = An error occurred - there should have been one
created, but instead there were [{0}] created~
-view_dynagroup_template_customExpression = Custom Expression...
-view_dynagroup_template_downedResources = All resources currently down
-view_dynagroup_template_jbossas4_clusters = JBossAS 4 - Clusters
-view_dynagroup_template_jbossas4_earClusters = JBossAS 4 - Clustered EARs
-view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - All hosting any version of
"my" app
-view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - All non-secured
-view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - Unique versions
-view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - Clusters
-view_dynagroup_template_platforms = Platform resources in inventory
-view_dynagroup_template_uniqueResourceTypes = Unique resource types in inventory
-view_groupConfigEdit_member = Membro
-view_groupConfigEdit_noListProps = Lista de propriedades n\u00E3o suportada atualmente
para configura\u00E7\u00F5es em grupo.
-view_groupConfigEdit_setAll = Atribuir todos os valores \u00E0:
-view_groupConfigEdit_tooltip_1 = Valores dos membros diferem - clique no \u00EDcone para
edit\u00E1-los.
-view_groupConfigEdit_unset = Remover atribui\u00E7\u00E3o
-view_groupConfigEdit_valsDiff = valores dos membros diferem
-view_groupConfigEdit_valsDiffForProp = Valores dos membros para a Propriedade [{0}]
-view_groupCreateWizard_createFailure = Failed to create the resource group~
-view_groupCreateWizard_createStepName = Group Settings~
-view_groupCreateWizard_createStep_recursive = Recursive~
-view_groupCreateWizard_createSuccessful_concise = You have created a new resource group.
[<a href = "{0}">View Group</a>]~
-view_groupCreateWizard_createSuccessful_full = You have created a new [{0}] resource
group with the name [{1}] that contains [{2}] member resources~
-view_groupCreateWizard_membersStepName = Select Members~
-view_groupCreateWizard_title = Create Group~
-view_groupCreateWizard_windowTitle = Create Group~
-view_groupInventoryMembers_button_updateMembership = Update Membership...
-view_groupInventoryMembers_title_updateMembership = Update Membership
-view_group_detail_failLoad = Failed to load group for group with ID [{0}]
-view_group_detail_failLoadComp = Failed to load group composite for group with ID [{0}]
-view_group_detail_failRecursiveChange = Failed to update the recursive setting for group
[{0}]
-view_group_detail_recursiveChange = You successfully changed the recursive setting for
group [{0}]
-view_group_inventory_activity_no_recent_metrics = This group has no recent metrics
-view_group_meas_schedules_title = Group Metric Collection Schedules~
-view_group_membership_failFetch = Failed to fetch Resource Group
-view_group_membership_saveFailure = Failed to update membership of group [{0}]~
-view_group_membership_saveSuccessful = You have updated the membership of group [{0}]~
-view_group_operationScheduleDetails_failedToLoadMembers = Failed to load group member
Resources.
-view_group_operationScheduleDetails_field_execute = Execute
-view_group_operationScheduleDetails_field_haltOnFailure = Halt on Failure?
-view_group_operationScheduleDetails_memberResource = Member Resource
-view_group_operationScheduleDetails_value_parallel = in parallel
-view_group_operationScheduleDetails_value_sequential = in the order specified below (drag
and drop member Resources to change order)
-view_group_pluginConfig_edit_currentGroupProperties = Current Group Properties~
-view_group_pluginConfig_edit_invalid = The following connection setting properties have
invalid values and must be corrected before the connection settings can be saved: [{0}]~
-view_group_pluginConfig_edit_noperm = You do not have permission to edit this group
connection settings~
-view_group_pluginConfig_edit_saveFailure = Failed to initiate group connection setting
update for [{0}] compatible group named [{1}]~
-view_group_pluginConfig_edit_saveInitiated_concise = The group connection setting updates
have been initiated~
-view_group_pluginConfig_edit_saveInitiated_full = The group connection setting updates
have been initiated for the [{0}] compatible group named [{1}]~
-view_group_pluginConfig_edit_saveTooltip = Update the connection settings of all group
members~
-view_group_pluginConfig_edit_valid = All connection setting properties have valid values,
so the connection settings can now be saved~
-view_group_pluginConfig_members_fetchFailure = Failed to get plugin config update history
for members of group [{0}]~
-view_group_pluginConfig_members_fetchFailureConn = Failed to retrieve member connection
settings for [{0}]
-view_group_pluginConfig_members_fetchFailureConnInProgress = A group plugin configuration
update is currently in progress. You must wait until the update is finished before you can
view the group settings.
-view_group_pluginConfig_members_statusDetails = Status Details~
-view_group_pluginConfig_members_statusFailure = This configuration update failed for an
unknown reason~
-view_group_pluginConfig_members_statusInprogress = This configuration update is still in
progress~
-view_group_pluginConfig_members_statusNochange = No changes were made to this
configuration~
-view_group_pluginConfig_members_statusSuccess = This configuration update was
successful~
-view_group_pluginConfig_members_title = Group Connection Settings Member Histories~
-view_group_pluginConfig_table_clickStatusIcon = Click the status icon for full details~
-view_group_pluginConfig_table_deleteFailure = Failed to delete group plugin config
history~
-view_group_pluginConfig_table_deleteSuccessful = You have deleted [{0}] history items~
-view_group_pluginConfig_table_failFetch = Failed to get group plugin config history
-view_group_pluginConfig_table_msg1 = View Member History for status of each individual
resource~
-view_group_pluginConfig_table_statusDetails = Status Details~
-view_group_pluginConfig_table_statusFailure = This group configuration update failed~
-view_group_pluginConfig_table_statusInprogress = This group configuration update is still
in progress~
-view_group_pluginConfig_table_statusNochange = No changes were made to this group
configuration~
-view_group_pluginConfig_table_statusSuccess = This group configuration update was
successful~
-view_group_pluginConfig_table_title = Group Connection Settings History~
-view_group_pluginConfig_table_viewMemberHistory = View Member History~
-view_group_pluginConfig_table_viewSettings = View Settings~
-view_group_pluginConfig_view_groupProperties = Group Properties~
-view_group_pluginConfig_view_noperm = You do not have permissions to see the connection
settings~
-view_group_resConfig_edit_invalid = The following configuration properties have invalid
values and must be corrected before the configuration can be saved: [{0}]~
-view_group_resConfig_edit_loadFail = Failed to retrieve member Resource configurations
for [{0}]
-view_group_resConfig_edit_noperm = You do not have permission to edit this group
configuration~
-view_group_resConfig_edit_saveFailure = Failed to initiate group configuration update for
[{0}] compatible group named [{1}]~
-view_group_resConfig_edit_saveInitiated_concise = The group configuration updates have
been initiated~
-view_group_resConfig_edit_saveInitiated_full = The group configuration updates have been
initiated for the [{0}] compatible group named [{1}]~
-view_group_resConfig_edit_saveTooltip = Update the configurations of all group members~
-view_group_resConfig_edit_valid = All configuration properties have valid values, so the
configuration can now be saved~
-view_group_resConfig_members_fetchFailure = Failed to get resource config update history
for members of group [{0}]
-view_group_resConfig_members_fetchFailureConfig = Failed to retrieve member resource
configuration settings for [{0}]
-view_group_resConfig_members_fetchFailureConfigInProgress = A group resource
configuration update is currently in progress. You must wait until the update is finished
before you can view the group settings.
-view_group_resConfig_members_statusDetails = Status Details
-view_group_resConfig_members_statusFailure = This configuration update failed for an
unknown reason
-view_group_resConfig_members_statusInprogress = This configuration update is still in
progress
-view_group_resConfig_members_statusNochange = No changes were made to this configuration
-view_group_resConfig_members_statusSuccess = This configuration update was successful
-view_group_resConfig_members_title = Group Resource Configuration Member Histories
-view_group_resConfig_table_clickStatusIcon = Click the status icon for full details
-view_group_resConfig_table_deleteFailure = Failed to delete group resource config
history
-view_group_resConfig_table_deleteSuccessful = You have deleted [{0}] history items
-view_group_resConfig_table_failFetch = Failed to get group resource config history
-view_group_resConfig_table_msg1 = View Member History for status of each individual
resource
-view_group_resConfig_table_statusDetails = Status Details
-view_group_resConfig_table_statusFailure = This group configuration update failed
-view_group_resConfig_table_statusInprogress = This group configuration update is still in
progress
-view_group_resConfig_table_statusNochange = No changes were made to this group
configuration
-view_group_resConfig_table_statusSuccess = This group configuration update was
successful
-view_group_resConfig_table_title = Group Resource Configuration History
-view_group_resConfig_table_viewMemberHistory = View Member History
-view_group_resConfig_table_viewSettings = View Settings
-view_group_resConfig_view_groupProperties = Group Properties
-view_group_resConfig_view_noperm = You do not have permissions to see the resource
configuration settings
-view_group_summary_compatible = Compatible
-view_group_summary_descUpdateFailure = Failed to change the description of the resource
group with ID [{0}]~
-view_group_summary_descUpdateSuccessful = You have changed the description of this
resource group~
-view_group_summary_dynamic = Dynamic~
-view_group_summary_dynamicNote = Dynamic group names and descriptions are managed, and
therefore are not editable~
-view_group_summary_groupDefinition = Group Definition~
-view_group_summary_memberCount = Member Count~
-view_group_summary_memberType = Member Type~
-view_group_summary_mixed = Mixed~
-view_group_summary_nameUpdateFailure = Failed to change the name of the resource group
with ID [{0}] - could not change from [{1}] to [{2}]~
-view_group_summary_nameUpdateSuccessful = You have changed the name of the resource group
with ID [{0}] from [{1}] to [{2}]~
-view_group_summary_recursive = Recursive~
-view_helpTop_description = This section provides access to documentation,
tutorials, version, and other helpful information.
-view_help_section_product = Product
-view_help_section_product_about = About
-view_inventory_adq = Discovery Queue~
-view_inventory_allGroups = All Groups~
-view_inventory_allResources = All Resources~
-view_inventory_cannotGetGlobalPerms = Could not determine global permissions - assuming
none.~
-view_inventory_collectionInterval = Collection Interval~
-view_inventory_downServers = Down Servers~
-view_inventory_dynagroupDefs = Dynagroup Definitions~
-view_inventory_eventDetails_loadFailed = An error occurred loading the event details~
-view_inventory_eventHistory_deleteFailed = Failed to deleted selected events for [{0}]~
-view_inventory_eventHistory_deleteSuccessful = You have successfully deleted [{0}] events
for [{1}]~
-view_inventory_eventHistory_details = Details~
-view_inventory_eventHistory_detailsFilter = Details Filter~
-view_inventory_eventHistory_groupEventHistory = Group Event History~
-view_inventory_eventHistory_purgeFailed = Failed to purge events for [{0}]~
-view_inventory_eventHistory_purgeSuccessful = You have successfully purged [{0}] events
for [{1}]~
-view_inventory_eventHistory_resourceEventHistory = Resource Event History~
-view_inventory_eventHistory_severity = Severity~
-view_inventory_eventHistory_severityFilter = Severity Filter~
-view_inventory_eventHistory_sourceFilter = Source Filter~
-view_inventory_eventHistory_sourceLocation = Source Location~
-view_inventory_eventHistory_timestamp = Timestamp~
-view_inventory_groups = Groups~
-view_inventory_groups_children = Children~
-view_inventory_groups_deleteFailed = Failed to delete the selected resource groups~
-view_inventory_groups_deleteSuccessful = You have successfully deleted the selected
resource groups~
-view_inventory_groups_descendants = Descendants~
-view_inventory_groups_loadFailed = Failed to load group composite data~
-view_inventory_groups_resourceGroups = Resource Groups~
-view_inventory_mixed = mixed~
-view_inventory_platforms = Platforms~
-view_inventory_problemGroups = Problem Groups~
-view_inventory_resource_loadFailed = Resource with id [{0}] does not exist or is not
accessible~
-view_inventory_resources_deleteConfirm = Are you sure you want to delete the selected
resources?~
-view_inventory_resources_deleteFailed = Failed to delete the selected resources~
-view_inventory_resources_deleteSuccessful = You have successfully deleted the selected
resources~
-view_inventory_resources_loadFailed = Failed to load resource composite data~
-view_inventory_resources_title = Member Resources~
-view_inventory_resources_title_children = Child Resources~
-view_inventory_resources_title_members = Member Resources~
-view_inventory_resources_uninventoryConfirm = Are you sure you want to uninventory the
selected resources? Note that if a selected resource still exists, then it will get
rediscovered during its agent''s next discovery scan.
-view_inventory_resources_uninventoryFailed = Failed to uninventory the selected
resources
-view_inventory_resources_uninventorySuccessful = You have successfully uninventoried the
selected resources
-view_inventory_sectionHelp = From this section, newly discovered Resources,
inventoried Resources, and Groups can be viewed and managed.~
-view_inventory_servers = Servers~
-view_inventory_services = Services~
-view_inventory_summary_agent_error1 = Failed to locate agent managing resource id~
-view_inventory_summary_agent_error2 = Failed to ping agent managing resource id~
-view_inventory_summary_agent_error3 = You do not have permission to view details for this
Agent.
-view_inventory_summary_agent_fullEnpoint = Full Endpoint~
-view_inventory_summary_agent_fullEnpoint_err1 = !No remote endpoint associated with this
resource!~
-view_inventory_summary_agent_last_title = Last Received Availability Report~
-view_inventory_summary_agent_status_title = Agent Communications Status~
-view_inventory_summary_agent_title = Agent Managing this Resource~
-view_inventory_unavailableServers = Unavailable Servers
-view_leftNav_unknownPage = P\u00E1gina desconhecida [{0}] para a se\u00E7\u00E3o
[{1}] - URL inv\u00E1lida.
-view_login_invalidEmail = Endere\u00E7o de e-mail inv\u00E1lido
-view_login_login = Entrar
-view_login_logout = Sair
-view_login_noBackend = Fonte de Dados indispon\u00EDvel.
-view_login_noLdap = Note: Optional retrieval of ldap details unsuccessful.
Manual entry is required.~
-view_login_noUser = Usu\u00E1rio ou senha inv\u00E1lidos.
-view_login_prompt = Favor efetuar Login
-view_login_registerLater = (Sair - Concluir registro mais tarde.)
-view_login_registerLdapSuccess = Novo usu\u00E1rios do LDAP registrado com sucesso.
-view_login_registerUser = Registrar Usu\u00E1rio
-view_login_welcome = Bem Vindo
-view_login_welcomeMsg = Seja Bem Vindo ao JBoss ON! <br/><br/>
Informe ou altere os seguintes campos para completar o processo de registro.<br/>
Clique em "OK" para acessar o sistema.<br/><br/>
-view_measureRange_day = 1 Dia
-view_measureRange_days = {0} Dias
-view_measureRange_hour = 1 Hora
-view_measureRange_hours = {0} Horas
-view_measureRange_last = \u00DAltimo
-view_measureRange_minutes = {0} Minutos
-view_measureRange_range = Faixa
-view_measureRange_simple = Simples...
-view_measureRange_start = Time Range - Start
-view_measureTable_chartMetricValues = Chart Selected Metrics
-view_measureTable_getLive = Get Live Value
-view_measureTable_getLive_failure = Cannot get live values for those metrics. Make sure
the agent is running and the managed resource is up.
-view_measureTable_live_title = Live Data
-view_measure_nan = --dados indispon\u00EDveis--
-view_measurementOob_title = M\u00E9tricas Suspeitas~
-view_menuBar_help = Ajuda~
-view_menuBar_logout = Sair
-view_messageCenter_button_messages = Mensagens~
-view_messageCenter_clearAllMessages = Clear All Messages
-view_messageCenter_lastNMessages = Last {0} Messages
-view_messageCenter_maxMessages = Max Messages
-view_messageCenter_messageBarShowDetails = Show Details
-view_messageCenter_messageDetail = Detalhe~
-view_messageCenter_messageSeverity = Severidade~
-view_messageCenter_messageTime = Tempo~
-view_messageCenter_messageTitle = Centro de Mensagens~
-view_messageCenter_noRecentMessages = N\u00E3o existem Mensagens Recentes~
-view_messageCenter_stackTraceFollows = --- STACK TRACE FOLLOWS ---
-view_metric_traits = Traits~
-view_metric_viewTraitHistory = Value History for Trait [{0}]~
-view_operationCreateWizard_button_execute = Execute~
-view_operationCreateWizard_button_executeImmediately = Execute Immediately~
-view_operationCreateWizard_error_scheduleOperationFailure = Failed to schedule operation
execution.~
-view_operationCreateWizard_header = Execute {0} on {1}~
-view_operationCreateWizard_message_scheduleOperationSuccess = Schedule operation [{0}]
on Resource [{1}] with cron string [{2}].~
-view_operationCreateWizard_parametersStep_name = Operation Parameters~
-view_operationCreateWizard_parametersStep_noParameters = This operation does not take any
parameters.~
-view_operationCreateWizard_schedulingStep_label_daily = Daily~
-view_operationCreateWizard_schedulingStep_label_dailyAt = Daily At~
-view_operationCreateWizard_schedulingStep_label_date = Date~
-view_operationCreateWizard_schedulingStep_label_dayOfMonth = Day of Month~
-view_operationCreateWizard_schedulingStep_label_dayOfWeek = Day of Week~
-view_operationCreateWizard_schedulingStep_label_endDate = End Date~
-view_operationCreateWizard_schedulingStep_label_everyNMinutes = Every n Minutes~
-view_operationCreateWizard_schedulingStep_label_hourly = Hourly~
-view_operationCreateWizard_schedulingStep_label_hourlyAt = Hourly At~
-view_operationCreateWizard_schedulingStep_label_minuteInterval = Minute Interval~
-view_operationCreateWizard_schedulingStep_label_minuteOfHour = Minute of Hour~
-view_operationCreateWizard_schedulingStep_label_monthly = Monthly~
-view_operationCreateWizard_schedulingStep_label_monthlyOn = Monthly On~
-view_operationCreateWizard_schedulingStep_label_nMinutes = n Minutes~
-view_operationCreateWizard_schedulingStep_label_onceAt = Once At~
-view_operationCreateWizard_schedulingStep_label_recurrence = Recurrence~
-view_operationCreateWizard_schedulingStep_label_recurrenceEnd = Recurrence End~
-view_operationCreateWizard_schedulingStep_label_runAt = Run At~
-view_operationCreateWizard_schedulingStep_label_schedule = Schedule~
-view_operationCreateWizard_schedulingStep_label_start = Start~
-view_operationCreateWizard_schedulingStep_label_startDate = Start Date~
-view_operationCreateWizard_schedulingStep_label_time = Time~
-view_operationCreateWizard_schedulingStep_label_timeOfDay = Time of Day~
-view_operationCreateWizard_schedulingStep_label_timePeriod = Time Period~
-view_operationCreateWizard_schedulingStep_label_weekly = Weekly~
-view_operationCreateWizard_schedulingStep_label_weeklyOn = Weekly On~
-view_operationCreateWizard_schedulingStep_label_willExecuteImmediately = Will execute
immediately~
-view_operationCreateWizard_schedulingStep_name = Schedule~
-view_operationCreateWizard_title = Operation Wizard~
-view_operationHistoryDetails_dateCompleted = Date Completed
-view_operationHistoryDetails_dateSubmitted = Date Submitted
-view_operationHistoryDetails_error_fetchFailure = Failure loading operation history.~
-view_operationHistoryDetails_noResults = This operation does not return any results.
-view_operationHistoryDetails_operation = Operation
-view_operationHistoryDetails_parameters = Parameters
-view_operationHistoryDetails_requestor = Requestor
-view_operationHistoryDetails_results = Results
-view_operationHistoryDetails_status = Status
-view_operationHistoryList_button_forceDelete = Force Delete
-view_operationHistoryList_button_runOperation = Run Operation~
-view_operationHistoryList_notYetStarted = not yet started
-view_operationHistoryList_title = Operation History~
-view_operationScheduleDetails_enterParametersBelow = Enter parameters below...
-view_operationScheduleDetails_fieldDefault_description = Select an operation to see its
description.
-view_operationScheduleDetails_fieldDefault_parameters = Select an operation to see its
parameters.
-view_operationScheduleDetails_fieldHelp_description = an optional description of this
scheduled operation (e.g. nightly maintenance app server restart)
-view_operationScheduleDetails_fieldHelp_timeout = a time duration - if specified, if the
duration elapses before a scheduled operation execution has completed, the RHQ Server will
timeout the operation and consider it to have failed; note, it is usually not possible to
abort the underlying managed resource operation if it was already initiated
-view_operationScheduleDetails_field_description = Description
-view_operationScheduleDetails_field_parameters = Parameters
-view_operationScheduleDetails_field_timeout = Timeout
-view_operationScheduleDetails_noParameters = This operation does not take any
parameters.
-view_operationScheduleDetails_operationSchedule = Operation Schedule
-view_portlet_autodiscovery_config_platform_selection = Number of platforms to display~
-view_portlet_autodiscovery_help_msg = This portlet offers the ability to import newly
discovered resources into the inventory for monitoring and management or to ignore them
from further action.~
-view_portlet_autodiscovery_setting_platforms = discovered platforms
-view_portlet_autodiscovery_title = Discovery Queue~
-view_portlet_configure_definitionDesc = The configuration settings for the portlet.
-view_portlet_configure_definitionTitle = Portlet Configuration
-view_portlet_configure_needed = Click the Settings button to configure this portlet.
-view_portlet_configure_notNeeded = Configuration is not necessary for this portlet.
-view_portlet_defaultName_autodiscovery = Discovery Queue
-view_portlet_defaultName_favoriteResources = Favorite Resources
-view_portlet_defaultName_groupMetric = Resource Group Metric Graph
-view_portlet_defaultName_group_alerts = Group: Alerts
-view_portlet_defaultName_group_bundles = Group: Bundle Deployments
-view_portlet_defaultName_group_config_updates = Group: Configuration Updates
-view_portlet_defaultName_group_events = Group: Event Counts
-view_portlet_defaultName_group_metrics = Group: Metrics
-view_portlet_defaultName_group_oobs = Group: OOB Conditions
-view_portlet_defaultName_group_operations = Group: Operations
-view_portlet_defaultName_group_pkg_hisory = Group: Package History
-view_portlet_defaultName_inventorySummary = Inventory Summary
-view_portlet_defaultName_mashup = Mashup
-view_portlet_defaultName_message = Message
-view_portlet_defaultName_operations = Recent Operations
-view_portlet_defaultName_platformSummary = Platform Utilization
-view_portlet_defaultName_problemResources = Alerted or Unavailable Resources
-view_portlet_defaultName_recentAlerts = Recent Alerts
-view_portlet_defaultName_recentlyAddedResources = Recently Added Resources
-view_portlet_defaultName_resourceMetric = Resource Metric Graph
-view_portlet_defaultName_resource_alerts = Resource: Alerts
-view_portlet_defaultName_resource_bundles = Resource: Bundle Deployments
-view_portlet_defaultName_resource_config_updates = Resource: Configuration Updates
-view_portlet_defaultName_resource_events = Resource: Event Counts
-view_portlet_defaultName_resource_metrics = Resource: Measurements
-view_portlet_defaultName_resource_oobs = Resource: OOB Metrics
-view_portlet_defaultName_resource_operations = Resource: Operations
-view_portlet_defaultName_resource_pkg_hisory = Resource: Package History
-view_portlet_defaultName_tagCloud = Tag Count
-view_portlet_factory_invalidPortlet = This is an obsolete portlet that is no longer
valid. Please delete it.
-view_portlet_favoriteResources_msg = This portlet displays your favorite resources~
-view_portlet_favoriteResources_title = Favorite Resources~
-view_portlet_generic_help = No help available for this portlet~
-view_portlet_generic_unconfigured = No settings available for this portlet~
-view_portlet_graph_configure_metricDefinition_graph = The metric definition id to graph~
-view_portlet_graph_configure_resource_graph = The resource to graph~
-view_portlet_graph_configure_title = Graph Config~
-view_portlet_graph_configure_title_desc = Configuration of the graph portlet~
-view_portlet_graph_help_msg = This Portlet supports the graphing of a resource
metric.~
-view_portlet_graph_help_title = Graph Portlet~
-view_portlet_graph_help_unconfigured = This graph is unconfigured, click the settings
button to configure.~
-view_portlet_graph_title = Resource Graph~
-view_portlet_help_autodiscovery = This portlet allows import or ignore of newly
discovered resources. Imported resources are added to inventory for monitoring and
management. Ignored resources are not imported and are hidden from view unless explicitly
unignored.
-view_portlet_help_bundle_deps = This portlet shows relevant bundle deployments based on
display criteria configured.
-view_portlet_help_config_updates = This portlet displays recent configuration changes
consistent with configuration settings.
-view_portlet_help_eventcounts = This portlet displays Event counts consistent with
display criteria configured.
-view_portlet_help_favoriteResources = This portlet displays the current user''s
favorite resources.
-view_portlet_help_graph = This portlet displays the resource metric graph.
-view_portlet_help_inventorySummary = This portlet displays a short summary of the current
user''s viewable inventory and metric collection rate.
-view_portlet_help_mashup = This portlet displays the returned content of a remote
HTTP request (via an iframe).
-view_portlet_help_message = This portlet displays a static HTML message. The
<i>message</i> property must be configured.
-view_portlet_help_metrics = This portlet graphs relevant recent metric data based
on display criteria configured.
-view_portlet_help_none = There is no help available for this portlet.
-view_portlet_help_oobs = This portlet displays OOB(Out of Bound) metric
conditions.
-view_portlet_help_operations = This portlet displays the most recently executed
operations for the current user''s inventory.
-view_portlet_help_operations_criteria = This portlet displays Operations consistent with
display criteria configured.
-view_portlet_help_pkg_history = This portlet shows relevant package history based on
display criteria configured.
-view_portlet_help_platformSummary = This portlet displays utilization data (such as
current CPU and memory usage) for platform resources that are accessible by the current
user.
-view_portlet_help_problemResources = This portlet displays the current user''s
alerted or unavailable resources.
-view_portlet_help_recentAlerts = This portlet displays alerts recently fired on the
current user''s viewable inventory.
-view_portlet_help_recentlyAdded = This portlet displays resources that have recently been
imported into inventory.
-view_portlet_help_scheduledOperations = This portlet displays the next scheduled
operations for the current user''s inventory.
-view_portlet_help_tagCloud = This portlet displays the relative tag counts for the
current user''s inventory.
-view_portlet_inventory_error1 = Failed to retrieve inventory summary~
-view_portlet_inventory_tooltip_collapse = Click to hide details for this resource.
-view_portlet_inventory_tooltip_expand = Click to show more details for this resource.
-view_portlet_mashup_config_title = MashupPorlet Configuration~
-view_portlet_mashup_config_title_desc = The configuration settings for the mashup
portlet.~
-view_portlet_mashup_help = This portlet can include a web page via an HTTP request
into an iframe on the dashboard.~
-view_portlet_mashup_unconfigured = Page address not yet configured, click the settings
button to setup this portlet.~
-view_portlet_message_config_title = MessagePortlet Configuration~
-view_portlet_message_config_title_desc = The configuration settings for the message
portlet.~
-view_portlet_message_help = This portlet can display an HTML message on the
dashboard.~
-view_portlet_message_title = Message~
-view_portlet_message_unconfigured = Message not yet configured, click the settings button
to setup this portlet.~
-view_portlet_operations_config_completed = completed operations~
-view_portlet_operations_config_completed_enable = Whether to enable completed operations
results grouping for dashboard.~
-view_portlet_operations_config_completed_maximum = Maximum number of Completed operations
to display.~
-view_portlet_operations_config_scheduled_enable = Whether to enable scheduled operations
results grouping for dashboard.~
-view_portlet_operations_config_scheduled_maximum = Maximum number of Scheduled operations
to display.~
-view_portlet_operations_config_show_last = show Last~
-view_portlet_operations_config_show_next = show Next~
-view_portlet_operations_config_title = OperationsPortlet Configuration~
-view_portlet_operations_config_title_desc = The configuration settings for the Operations
portlet.~
-view_portlet_operations_disabled = (Results currently disabled. Change settings to enable
results.~
-view_portlet_operations_help_msg = This portlet displays both operations that have
occurred and are scheduled to occur.~
-view_portlet_platform_help_msg = This portlet displays information about platforms in
inventory.~
-view_portlet_platform_platform_error_1 = Failed to load platform metrics~
-view_portlet_platform_title = Platforms Summary~
-view_portlet_platform_type_error_1 = Could not load type data~
-view_portlet_problemResources_config_display_maximum = Maximum number of Problem
resources to display.
-view_portlet_problemResources_config_display_range = Show problem resources going back
this many hours.
-view_portlet_problemResources_config_display_range2 = From {0} to {1}
-view_portlet_problemResources_maxDisplaySetting = maximum resources.
-view_portlet_problem_resources_config_display_maximum = Maximum number of Problem
resources to display.~
-view_portlet_problem_resources_config_display_range = Show problem resources going back
this many hours.~
-view_portlet_problem_resources_config_display_range2 = From {0} to {1}~
-view_portlet_problem_resources_config_problem_label = problem resources on dashboard.~
-view_portlet_problem_resources_config_title = ProblemResourcesPortlet Configuration~
-view_portlet_problem_resources_config_title_desc = The configuration settings for the
Problem resources portlet.~
-view_portlet_problem_resources_help = This portlet displays resources that have reported
alerts or Down availability.~
-view_portlet_problem_resources_title = Has Alerts or Currently Unavailable~
-view_portlet_recentAlerts_config_members = Select Members~
-view_portlet_recentAlerts_config_priority_label = priority Alerts,~
-view_portlet_recentAlerts_config_when = within the past~
-view_portlet_recentAlerts_fail_msg = Failed to load resources assigned for alert
filtering.
-view_portlet_recentAlerts_help_msg = Displays recent alerts fired on resources visible to
the current user login.~
-view_portlet_recentAlerts_title = Recent Alerts~
-view_portlet_recentlyAdded_approved_platforms = recently approved platforms on
dashboard.~
-view_portlet_recentlyAdded_error1 = Failed to load recently added resources~
-view_portlet_recentlyAdded_help_msg = This portlet displays resources that have recently
been imported into the inventory.~
-view_portlet_recentlyAdded_setting_addedPlatforms = recently added platforms
-view_portlet_recentlyAdded_title = Recently Added Portlet~
-view_portlet_results_empty = No results found using specified criteria.
-view_portlet_tagCloud_help = portlet displays the relative tag counts in the system
visible to the current user.~
-view_portlet_tagCloud_title = TagCloud~
-view_remoteAgentInstall_agentStatus = Status do Agente
-view_remoteAgentInstall_agentStatusDefault = -Pressione o Bot\u00E3o Atualizar Status-
-view_remoteAgentInstall_buttonFindAgent = Procurar Agente
-view_remoteAgentInstall_connInfo = Informa\u00E7\u00E3o de Conex\u00E3o
-view_remoteAgentInstall_error_1 = Ocorreu um erro ao tentar localizar o caminho de
instala\u00E7\u00E3o do agente
-view_remoteAgentInstall_error_2 = N\u00E3o foi poss\u00EDvel encontrar uma
instala\u00E7\u00E3o do agente nos locais comuns
-view_remoteAgentInstall_error_3 = N\u00E3o foi poss\u00EDvel encontar a
instala\u00E7\u00E3o do agente em [{0}]
-view_remoteAgentInstall_error_4 = Falha ao instalar o agente
-view_remoteAgentInstall_error_5 = Falha a iniciar o agente
-view_remoteAgentInstall_error_6 = Falha ao parar o agente
-view_remoteAgentInstall_installAgent = Instalar Agente
-view_remoteAgentInstall_installInfo = Informa\u00E7\u00E3o sobre a instala\u00E7\u00E3o
do Agente
-view_remoteAgentInstall_installPath = Caminho de Instala\u00E7\u00E3o do Agente
-view_remoteAgentInstall_owner = Propriet\u00E1rio
-view_remoteAgentInstall_promptHost = O host onde o agente est\u00E1 ou ser\u00E1
instalado
-view_remoteAgentInstall_promptInstallPath = Onde o agente est\u00E1 ou ser\u00E1
instalado. Caso n\u00E3o tenha certeza onde o agente est\u00E1 instalado, informe um
diret\u00F3rio pai e clique em ''Procurar Agente'' para encontrar o
agente. Caso informe um diret\u00F3rio vazio, a busca pelo agente ser\u00E1 realizada em
locais de instala\u00E7\u00E3o comuns.
-view_remoteAgentInstall_promptPassword = Credenciais usadas para autentica\u00E7\u00E3o
do usu\u00E1rio no host via SSH
-view_remoteAgentInstall_promptPort = Porta onde o servidor SSH escuta. Se n\u00E3o
especificada, o padr\u00E3o \u00E9 22
-view_remoteAgentInstall_promptUser = Nome do usu\u00E1rio informado nas credenciais
passadas ao host via SSH
-view_remoteAgentInstall_result = Resultado
-view_remoteAgentInstall_resultCode = ResultCode
-view_remoteAgentInstall_startAgent = Iniciar Agente
-view_remoteAgentInstall_startAgentResults = resultado da inicializa\u00E7\u00E3o do
Agente: [{0}]
-view_remoteAgentInstall_step = Step
-view_remoteAgentInstall_stopAgent = Parar Agente
-view_remoteAgentInstall_stopAgentResults = resultado do encerramento do Agente: [{0}]
-view_remoteAgentInstall_success = Instala\u00E7\u00E3o do Agente finalizada
-view_remoteAgentInstall_updateStatus = Status da Atualiza\u00E7\u00E3o
-view_reportsTop_description = This section provides access to global reports.~
-view_reportsTop_title = Relat\u00F3rios
-view_reports_alertDefinitions = Defini\u00E7\u00E3o de Alertas~
-view_reports_alertDefinitions_parentHover = Click to go to the parent alert definition
-view_reports_alertDefinitions_resTypeLoadError = Cannot get the template resource type -
unable to view the alert template.
-view_reports_inventorySummary_failFetch = Failed to get inventory summary
-view_reports_platforms = Utiliza\u00E7\u00E3o de Mem\u00F3ria e CPU~
-view_reports_subsystems = Subsistemas~
-view_resourceResourceGroupList_error_fetchFailure = Failed to fetch Resource''s
groups.~
-view_resourceResourceGroupList_error_updateFailure = Failed to update assigned Resource
groups.~
-view_resourceResourceGroupList_message_updateSuccess = Group membership updated for
[{0}].
-view_resource_inventory_activity_changed_by = Changed by
-view_resource_inventory_activity_criteria_no_recent_events = No event counts based off
display criteria.
-view_resource_inventory_activity_no_recent_alerts = No recent alerts
-view_resource_inventory_activity_no_recent_bundle_deploy = No recent bundle deployments
-view_resource_inventory_activity_no_recent_config_history = No configuration change
history
-view_resource_inventory_activity_no_recent_events = No events in the last 24 hours
-view_resource_inventory_activity_no_recent_metrics = This resource has no recent metrics
-view_resource_inventory_activity_no_recent_oob = No OOB conditions found
-view_resource_inventory_activity_no_recent_operations = No recent operation history
-view_resource_inventory_activity_no_recent_pkg_history = No recent package history
-view_resource_inventory_childhistory_createdChild = Created Child
-view_resource_inventory_childhistory_deletedChild = Deleted Child
-view_resource_inventory_childhistory_filterTitle = Past N Days
-view_resource_inventory_childhistory_status_invalidArtifact = Invalid Artifact
-view_resource_inventory_childhistory_status_invalidConfig = Invalid Configuration
-view_resource_monitor_availability_loadFailed = Failed to load availability history~
-view_resource_monitor_calltime_average = Average~
-view_resource_monitor_calltime_count = Count~
-view_resource_monitor_calltime_destination = Call Destination~
-view_resource_monitor_calltime_editFailed = Call time data can not be edited~
-view_resource_monitor_calltime_loadFailed = Could not load call time data~
-view_resource_monitor_calltime_lookupFailed = Could not load resource for call time~
-view_resource_monitor_calltime_maximum = Maximum~
-view_resource_monitor_calltime_minimum = Minimum~
-view_resource_monitor_calltime_title = Call Time Data~
-view_resource_monitor_calltime_total = Total~
-view_resource_monitor_detailed_graph_label = Detailed Graph~
-view_resource_monitor_graph_instructions = Point your mouse to a data point on the
chart~
-view_resource_monitor_graph_live_tooltip = Click for a live graph of current values~
-view_resource_monitor_graphs_loadFailed = Failed to load graph data~
-view_resource_monitor_graphs_lookupFailed = Failed to find resource for graph~
-view_resource_monitor_graphs_noneAvailable = No graphs available~
-view_resource_monitor_schedules_title = Resource Metric Collection Schedules~
-view_resource_monitor_table_alerts = Alerts
-view_resource_monitor_table_avg = Average
-view_resource_monitor_table_last = Last
-view_resource_monitor_table_max = Maximum
-view_resource_monitor_table_min = Minimum
-view_resource_title_component_errors_tooltip = Shows managed component errors. Click for
details~
-view_resource_title_tagUpdateFailed = Failed to update resource tags~
-view_searchBar_defaultPattern = definir nome para o padr\u00E3o
-view_searchBar_error_selectSavedSearch = ''Erro ao selecionar a
pesquisa''
-view_searchBar_query = Pesquisa
-view_searchBar_resourceGroups = Grupos de Recursos
-view_searchBar_resources = Recursos
-view_searchBar_welcomeMessage = procurar por {0}s
-view_searchGUI_loginStatus = Imposs\u00EDvel determinar o status do login, verifique
o status do servidor~
-view_selector_assigned = Associado {0}
-view_selector_available = Dispon\u00EDvel {0}
-view_subTab_error_disabled = N\u00E3o \u00E9 poss\u00EDvel selecionar uma subTab
desabilidada [{0}].
-view_summaryDashboard_resetConfirm = Reset to default summary dashboard (lose local
changes)?
-view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of
Resource with id {0} from [{1}] to [{2}].~
-view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of
Resource with id {0} from [{1}] to [{2}].~
-view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with
id {0} from [{1}] to [{2}].~
-view_summaryOverviewForm_error_traitsLoadFailure = Failed to load traits for {0}.~
-view_summaryOverviewForm_field_description = Description~
-view_summaryOverviewForm_field_location = Location~
-view_summaryOverviewForm_field_name = Name~
-view_summaryOverviewForm_field_parent = Parent~
-view_summaryOverviewForm_field_type = Type~
-view_summaryOverviewForm_field_version = Version~
-view_summaryOverviewForm_header_summary = Summary~
-view_summaryOverviewForm_label_plugin = Plugin:
-view_summaryOverviewForm_label_type = Type:
-view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with
id {0} was changed from [{1}] to [{2}].~
-view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0}
was changed from [{1}] to [{2}].~
-view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was
changed from [{1}] to [{2}].~
-view_summaryOverview_header_detectedErrors = Detected Errors~
-view_summaryOverview_title_errorDetailsWindow = Error Details~
-view_summaryOverview_tooltip_detectedErrors = Click on the rows to see the error
details.~
-view_tableSection_backButton = Voltar \u00E0 Lista
-view_tableSection_error_badId = Can not show detail for [{0}]. Illegal 'id':
[{1}]. Please report this bug~
-view_tableSection_error_noId = Table [{0}] record is missing 'id' attribute -
please report this bug.~
-view_table_drawFail = Failed to draw Table [{0}].
-view_table_matchingRows = Matching Rows: {0} (selected: {1})
-view_table_totalRows = Total de Linhas: {0} (selecionada: {1})
-view_tabs_common_activity = Activity
-view_tabs_common_agent = Agent
-view_tabs_common_alerts = Alerts~
-view_tabs_common_availability = Availability~
-view_tabs_common_calltime = Calltime~
-view_tabs_common_child_history = Child History~
-view_tabs_common_child_resources = Child Resources~
-view_tabs_common_configuration = Configuration~
-view_tabs_common_connectionSettings = Connection Settings~
-view_tabs_common_connectionSettingsHistory = Connection Settings History~
-view_tabs_common_content = Content~
-view_tabs_common_current = Current~
-view_tabs_common_dashboard = Dashboard~
-view_tabs_common_definitions = Definitions~
-view_tabs_common_deployed = Deployed~
-view_tabs_common_events = Events~
-view_tabs_common_graphs = Graphs~
-view_tabs_common_group_members = Group Members
-view_tabs_common_group_membership = Group Membership~
-view_tabs_common_groups = Groups~
-view_tabs_common_history = History~
-view_tabs_common_inventory = Inventory~
-view_tabs_common_members = Members~
-view_tabs_common_monitoring = Monitoring~
-view_tabs_common_new = New~
-view_tabs_common_operations = Operations~
-view_tabs_common_overview = Overview~
-view_tabs_common_schedule = Schedule
-view_tabs_common_scheduled = Scheduled~
-view_tabs_common_schedules = Schedules~
-view_tabs_common_subscriptions = Subscriptions~
-view_tabs_common_summary = Summary~
-view_tabs_common_tables = Tables~
-view_tabs_common_timeline = Timeline~
-view_tabs_common_traits = Traits~
-view_tabs_invalidSubTab = Invalid subtab: {0}
-view_tabs_invalidTab = Invalid tab: {0}
-view_tagCloud_deleteTag = Delete Tag
-view_tagCloud_deleteTagFailure = Failed to delete the tag [{0}]
-view_tagCloud_deleteTagSuccess = You successfully deleted the tag [{0}]
-view_tagCloud_error_fetchFailure = Falha ao carregar etiquetas (tags).~
-view_tagCloud_error_tagUsedCount = Etiqueta (tag) usada {0} vezes.~
-view_tagCloud_title = Nuvem de Tags~
-view_taggedResources_title = Recursos Etiquetados~
-view_tags_error_1 = Failed to load Tags~
-view_tags_tags = Tags~
-view_tags_title = Tags:~
-view_tags_tooltip_1 = Click to remove this Tag~
-view_tags_tooltip_2 = Click to edit Tags~
-view_tags_tooltip_3 = Enter a Tag in the format: (namespace:)(semantic =
)tagname (e.g. it:env = QA, or owner = John)
-view_testTop_description = Esta se\u00E7\u00E3o cont\u00E9m p\u00E1ginas para
realiza\u00E7\u00E3o de testes em v\u00E1rios componentes UI.~
-view_testTop_title = Teste~
-view_titleBar_common_addedFav = You have added [{0}] as a favorite~
-view_titleBar_common_addedFavFailure = Failed to add [{0}] as a favorite~
-view_titleBar_common_clickToAddFav = Click to add this as a favorite~
-view_titleBar_common_clickToRemoveFav = Click to remove this as a favorite~
-view_titleBar_common_loadTagsFailure = Failed to load the tags for [{0}]~
-view_titleBar_common_removedFav = You have removed [{0}] as one of your favorites~
-view_titleBar_common_removedFavFailure = Failed to remove [{0}] as one of your
favorites~
-view_titleBar_common_updateTagsFailure = Failed to update the tags for [{0}]~
-view_titleBar_common_updateTagsSuccessful = The tags for [{0}] have been updated~
-view_titleBar_group_failInfo = Failed to get general info on group [{0}] with ID
[{1}]
-view_titleBar_group_summary_collapsedTooltip = Click to show more details for this group
-view_titleBar_group_summary_expandedTooltip = Click to hide details for this group
-view_tree_common_contextMenu_addChartToDashboard = Add chart to dashboard [{0}]~
-view_tree_common_contextMenu_chart = Chart~
-view_tree_common_contextMenu_editPluginConfiguration = Edit [{0}] Plugin Configuration~
-view_tree_common_contextMenu_editResourceConfiguration = Edit [{0}] Resource
Configuration~
-view_tree_common_contextMenu_groupGraph = Group Metric Graph
-view_tree_common_contextMenu_loadFail_children = Failed to load platform manual add
children
-view_tree_common_contextMenu_loadFail_dashboards = Failed to load user dashboards
-view_tree_common_contextMenu_loadFail_group = Failed to load group for context menu
-view_tree_common_contextMenu_loadFailed_dashboard = Failed to load user dashboards
-view_tree_common_contextMenu_loadFailed_manualAddChildren = Failed to load platform
manual add children~
-view_tree_common_contextMenu_measurements = Measurements~
-view_tree_common_contextMenu_operations = Operations~
-view_tree_common_contextMenu_operations_loadFailed = Failure to start wizard for running
operations~
-view_tree_common_contextMenu_pluginConfiguration = Plugin Configuration~
-view_tree_common_contextMenu_resourceConfiguration = Resource Configuration~
-view_tree_common_contextMenu_resourceGraph = Resource Metric Graph
-view_tree_common_contextMenu_saveChartToDashboardFailure = Failed to save the dashboard~
-view_tree_common_contextMenu_saveChartToDashboardSuccessful = You have saved dashboard
[{0}]~
-view_tree_common_contextMenu_type_name_label = Type: {0}
-view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group
-view_tree_common_loadFailed_children = Failed to load children for node~
-view_tree_common_loadFailed_create = Failed to create view for this node~
-view_tree_common_loadFailed_descendants = Failed to load descendants for tree~
-view_tree_common_loadFailed_generic = Failed to load data for tree~
-view_tree_common_loadFailed_group = Failed to load group with id [{0}]
-view_tree_common_loadFailed_groupTree = Failed to load group tree
-view_tree_common_loadFailed_node = Failed to load data for this node~
-view_tree_common_loadFailed_root = Failed to load root for tree~
-view_tree_common_loadFailed_selection = Failed to select this node~
-view_tree_common_loadFailed_update = Failed to update view for this node~
-view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing
group. key: [{0}]
-view_type_parentId = Parent ID~
-view_type_resourceTypes = Resource Types~
-view_type_typeTreeLoadFailure = Failed to load resource type tree data~
-view_upload_alreadyUploaded = File has already been uploaded~
-view_upload_bundleDistFile = Distribution File~
-view_upload_error_bundleDistFile = Error uploading Bundle Distribution File~
-view_upload_error_file = Error uploading file~
-view_upload_error_fileName = Error uploading file [{0}]~
-view_upload_error_fileName_2 = Error uploading file [{0}], check for invalid file
path.~
-view_upload_error_packageVersionFile = Error uploading Package Version File~
-view_upload_error_results = Error uploading file, unexpected results: [{0}]~
-view_upload_inProgress = Can not submit, upload is currently in progress~
-view_upload_prompt_1 = [{0}] File to Upload~
-view_upload_prompt_2 = File to Upload~
-view_upload_success = File successfully uploaded~
-view_upload_tooltip_1 = Select a file to upload, then click Upload or Next~
-view_upload_tooltip_1a = Select a file to upload, then click Upload or Next
-view_upload_tooltip_1b = Select a file to upload, then click Next
-view_upload_tooltip_2 = File upload had previously failed~
-view_upload_upload = Upload~
-view_upload_uploadFile = UploadFile~
-
-widget_colorPicker_tooltip = Clique para selecionar uma nova cor
-widget_durationItem_inputUnitLessThanTargetUnit = A unidade de entrada \u00E9 menor que a
unidade final.
-widget_durationItem_unitTypeNotSupported = Tipo de unidade [{0}] n\u00E3o suportada por
este Item de Dura\u00E7\u00E3o.
-widget_jobTriggerEditor_fieldHelp_repeatDuration = permanecer executando esta
opera\u00E7\u00E3o por tantas vezes ou at\u00E9 o t\u00E9rmino deste tempo
-widget_jobTriggerEditor_fieldHelp_repeatInterval = qual a frequ\u00EAncia de
execu\u00E7\u00E3o da opera\u00E7\u00E3o
-widget_jobTriggerEditor_fieldHelp_startDelay = iniciar a execu\u00E7\u00E3o da
opera\u00E7\u00E3o ap\u00F3s passar esta quantidade de tempo
-widget_jobTriggerEditor_field_cronExpression = Express\u00E3o da Cron
-widget_jobTriggerEditor_field_mode = Agendar usando
-widget_jobTriggerEditor_field_repeatInterval_later = Sempre repetir
-widget_jobTriggerEditor_field_repeatInterval_now = Executar agora e sempre
-widget_jobTriggerEditor_field_startType = Executar
-widget_jobTriggerEditor_message_endTimeMustBeAfterStartTime = O t\u00E9rmino deve ser
ap\u00F3s o in\u00EDcio.
-widget_jobTriggerEditor_message_endTimeMustBeInFuture = O t\u00E9rmino deve ser no
futuro.
-widget_jobTriggerEditor_message_startTimeMustBeInFuture = O in\u00EDcio deve ser no
futuro.
-widget_jobTriggerEditor_tab_examples = Exemplos
-widget_jobTriggerEditor_tab_format = Formato
-widget_jobTriggerEditor_value_calendar = Calend\u00E1rio
-widget_jobTriggerEditor_value_cronExpression = Express\u00E3o da Cron
-widget_jobTriggerEditor_value_for = Para
-widget_jobTriggerEditor_value_in = em
-widget_jobTriggerEditor_value_indefinitely = Indefinidamente
-widget_jobTriggerEditor_value_later = Mais tarde
-widget_jobTriggerEditor_value_laterAndRepeat = Later & Repeat
-widget_jobTriggerEditor_value_now = Agora
-widget_jobTriggerEditor_value_nowAndRepeat = Agora & Repetir
-widget_jobTriggerEditor_value_on = em
-widget_jobTriggerEditor_value_until = At\u00E9
-widget_recordEditor_error_invalidViewPath = Caminho inv\u00E1lido: [{0}]
-widget_recordEditor_error_multipleRecords = Foram encontrados v\u00E1rios registros - era
esperado apenas um.
-widget_recordEditor_error_noRecords = Nenhum registro encontrado - era esperado
exatamente um.
-widget_recordEditor_error_operation = Falha na Opera\u00E7\u00E3o. Ocorreu um Erro
-widget_recordEditor_error_operationInvalidValues = Falha na Opera\u00E7\u00E3o - um ou
mais campos possuem valores inv\u00E1lidos
-widget_recordEditor_error_permissionCreate = Voc\u00EA n\u00E3o possui permiss\u00E3o
necess\u00E1ria para criar um novo [{0}]
-widget_recordEditor_error_unsupportedOperationType = Tipo de opera\u00E7\u00E3o n\u00E3o
suportada: [{0}]
-widget_recordEditor_info_recordCreatedConcise = {0} criado.
-widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] criado.
-widget_recordEditor_info_recordUpdatedConcise = {0} atualizado.
-widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] atualizado.
-widget_recordEditor_info_recordsDeletedConcise = {0} {1} exclu\u00EDdo.
-widget_recordEditor_info_recordsDeletedDetailed = {0} {1} exclu\u00EDdo: {2}.
-widget_recordEditor_label_loading = Carregar...
-widget_recordEditor_title_edit = Editar {0} [{1}]
-widget_recordEditor_title_new = Criar Novo {0}
-widget_recordEditor_title_view = Visualizar {0} [{1}]
-widget_recordEditor_warn_validation = Um ou mais campos possuem valores inv\u00E1lidos.
Este [{0}] n\u00E3o pode ser salvo at\u00E9 que os valores sejam corrigidos.
-widget_resourceFactoryWizard_archPrompt = Arquitetura do Pacote
-widget_resourceFactoryWizard_configTemplatePrompt = Modelo de Configura\u00E7\u00E3o de
Recurso
-widget_resourceFactoryWizard_contentTemplatePrompt = Modelos de Configura\u00E7\u00E3o do
Tempo de Deploy
-widget_resourceFactoryWizard_createSubmit = A requisi\u00E7\u00E3o para cria\u00E7\u00E3o
de um recurso com nome [{0}] foi submetida com sucesso.
-widget_resourceFactoryWizard_createSubmitType = A requisi\u00E7\u00E3o para
cria\u00E7\u00E3o de um recurso do tipo [{0}] foi submetida com sucesso.
-widget_resourceFactoryWizard_createWizardTitle = Criar novo recurso do tipo [{0}]
-widget_resourceFactoryWizard_createWizardWindowTitle = Assistente para Cria\u00E7\u00E3o
de Recurso
-##widget_resourceFactoryWizard_editConfigStepName = Deployment Options
-widget_resourceFactoryWizard_execute1 = Falha ao criar novo recurso - vers\u00E3o do
pacote inexistente
-widget_resourceFactoryWizard_execute2 = Falha ao criar novo recurso
-widget_resourceFactoryWizard_failedToDeleteVersion = Falha ao excluir a vers\u00E3o do
pacote durante o cancelamento da cria\u00E7\u00E3o do recurso
-widget_resourceFactoryWizard_failedToGetType = Falha ao recuperar o tipo de pacote para o
novo recurso
-widget_resourceFactoryWizard_importFailure = Falha ao importar recursos manualmente
-widget_resourceFactoryWizard_importSubmitted = Uma requisi\u00E7\u00E3o para importar um
novo recurso do tipo [{0}] foi submetida
-widget_resourceFactoryWizard_importWizardTitle = Importar Recursos do Tipo [{0}]
-widget_resourceFactoryWizard_importWizardWindowTitle = Assistente para
Importa\u00E7\u00E3o de Recurso
-widget_resourceFactoryWizard_infoStepName = Informa\u00E7\u00E3o do Recurso
-widget_resourceFactoryWizard_infoStep_loadFail = Falha ao recuperar Arquiteturas
dispon\u00EDveis.
-widget_resourceFactoryWizard_namePrompt = Novo Nome do Recurso
-widget_resourceFactoryWizard_templatePrompt = Modelo de Propriedades para Conex\u00E3o
-##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the RHQ Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
-widget_resourceFactoryWizard_uploadFailure = Falha ao realizar o upload do arquivo
-widget_resourceFactoryWizard_uploadFileStepName = Upload do Arquivo do Recurso
-widget_resourceFactoryWizard_uploadInProgress = Upload em andamento... Esse processo pode
demorar alguns minutos para ser finalizado em caso de arquivos muito grandes.
-widget_resourceFactoryWizard_versionPrompt = Vers\u00E3o do Pacote
-widget_resourceSelector_groupCategory = Categoria do Grupo
-widget_resourceSelector_pleaseSelectMultipleResource = Favor selecionar um ou mais
recursos
-widget_resourceSelector_pleaseSelectResource = Favor selecionar um recurso
-widget_resourceSelector_selectMultipleResources = Selecionar Recursos
-widget_resourceSelector_selectResource = Selecionar um Recurso
-widget_typeCache_loadFail = Falha ao carregar o metadado do tipo de recurso
-widget_typeTree_badTemplateType = URL inv\u00E1lida. Tipo de template desconhecido [{0}]
-widget_typeTree_badTypeId = URL inv\u00E1lida. Tipo de recurso inv\u00E1lido: ID [{0}]
-widget_typeTree_loadFail = Falha ao carregar tipos de recurso
+#
+# RHQ GUI i18n Messages - Localization: PT
+#
+# Developers: See the following wiki page for how to work with this file:
+#
+#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
+#
+###################################
+common_alert_high = Alto
+common_alert_low = Baixo
+common_alert_medium = M\u00E9dio
+common_buildInfo_gwtVersion = ${gwt.version}
+common_button_ack = Confirmar
+common_button_ack_all = Confirmar Todos
+common_button_add = Adicionar
+common_button_advanced = Avan\u00E7ado...
+common_button_apply = Aplicar
+common_button_cancel = Cancelar
+common_button_close = Fechar
+common_button_compare = Comparar
+common_button_create_child = Criar filho
+common_button_delete = Excluir
+common_button_delete_all = Excluir Todos
+common_button_disable = Desabilitar
+common_button_edit = Editar
+common_button_enable = Habilitar
+common_button_finish = Finalizar
+common_button_import = Importar
+common_button_new = Novo
+common_button_next = Pr\u00F3ximo
+common_button_ok = OK
+common_button_previous = Anterior
+common_button_purgeAll = Remover Todos
+common_button_refresh = Atualizar
+common_button_reset = Limpar
+common_button_save = Salvar
+common_button_schedule = Agendar
+common_button_search = Procurar
+common_button_set = Definir
+common_button_showDetails = Mostrar Detalhes...
+common_button_uninventory = Remover do Invent\u00E1rio
+common_calendar_april_short = abr
+common_calendar_august_short = ago
+common_calendar_december_short = dez
+common_calendar_february_short = fev
+common_calendar_january_short = jan
+common_calendar_july_short = jul
+common_calendar_june_short = jun
+common_calendar_march_short = mar
+common_calendar_may_short = mai
+common_calendar_november_short = nov
+common_calendar_october_short = out
+common_calendar_september_short = set
+common_label_ago = ago
+common_label_all = TODOS
+common_label_all_resources = todos os recursos
+common_label_day = dia
+common_label_days = dias
+common_label_hour = hora
+common_label_hours = horas
+common_label_item = item
+common_label_items = itens
+common_label_milliseconds = milisegundos
+common_label_minutes = minutos
+common_label_month = m\u00EAs
+common_label_none = nenhum
+common_label_role = perfil
+common_label_roles = perfis
+common_label_scheduled_operations = opera\u00E7\u00F5es agendadas
+common_label_seconds = segundos
+common_label_selected_resources = recursos selecionados
+common_label_unlimited = ilimitado
+common_label_user = usu\u00E1rio
+common_label_users = usu\u00E1rios
+common_label_week = semana
+common_label_weeks = semanas
+common_label_yesterday = Ontem
+common_msg_areYouSure = Tem certeza?
+common_msg_asyncTimeout = {0}. Isso ocorre porque o servidor est\u00E1 levando muito
tempo para atender esta requisi\u00E7\u00E3o. Favor atentar para o fato de que o servidor
ainda esteja processando sua requisi\u00E7\u00E3o e pode concluir dentro de mais alguns
instantes. Voc\u00EA ainda pode verificar os logs do servidor para identificar se algum
erro anormal ocorreu.
+common_msg_changeAutoDetected = Mudan\u00E7as detectadas automaticamente
+common_msg_deleteConfirm = Tem certeza de que deseja excluir o # selecionado {0}?
+common_msg_emphasizedNotePrefix = NOTA:
+common_msg_loading = Carregando...
+common_msg_noItemsToShow = N\u00E3o existem itens para apresentar
+common_msg_notYetImplemented = N\u00E3o implementado ainda
+common_msg_see_more = Ver detalhes...
+common_msg_step_x_of_y = Passo {0} de {1}
+common_severity_debug = Debug
+common_severity_error = Error
+common_severity_fatal = Fatal
+common_severity_info = Info
+common_severity_warn = Warn
+common_status_canceled = Cancelado
+common_status_deferred = Deferido
+common_status_failed = Falha
+common_status_inprogress = Processando
+common_status_nochange = Sem altera\u00E7\u00E3o
+common_status_partial = Parcial
+common_status_success = Sucesso
+common_status_timedOut = Tempo Esgotado
+common_status_unknown = Desconhecido
+common_title_add_column = Adicionar Coluna
+common_title_add_graph_to_view = Adicionar Gr\u00E1fico ao Monitor de Vis\u00E3o
+common_title_add_portlet = Adicionar Portlet
+common_title_address = Endere\u00E7o
+common_title_alert_range = S\u00E9rie de Alertas
+common_title_ancestry = Ancestral
+common_title_availability = Disponibilidade
+common_title_available_resources = Recursos Dispon\u00EDveis
+common_title_average_metrics = M\u00E9tricas da m\u00E9dia por Minuto
+common_title_background = Fundo (background)
+common_title_bundle = Bundle
+common_title_bundles = Bundles
+common_title_category = Categoria
+common_title_change_refresh_time = Atualizar Intervalo
+common_title_columns = Colunas
+common_title_compare_metrics = Comparar M\u00E9tricas
+common_title_compatibleGroups = Grupos Compat\u00EDveis
+common_title_compatibleGroups_total = Total de Grupos Compat\u00EDveis
+common_title_component_errors = Componentes com erro
+common_title_config_update_status = Atualizar Status
+common_title_configuration = Configura\u00E7\u00E3o
+common_title_count = Quantidade
+common_title_custom = Personalizado
+common_title_dashboard_name = Nome do Painel de Controle
+common_title_dateCreated = Data de Cria\u00E7\u00E3o
+common_title_dateRange = Intervalo de Data
+common_title_default = Padr\u00E3o
+common_title_description = Descri\u00E7\u00E3o
+common_title_details = Detalhes
+common_title_display = Display
+common_title_display_name = Nome do Display
+common_title_duration = Dura\u00E7\u00E3o
+common_title_edit_mode = Modo Edi\u00E7\u00E3o
+common_title_enabled = Habilitado?
+common_title_end = Fim
+common_title_error = Erro
+common_title_favorites = Favoritos
+common_title_generalProp = Propriedades Gerais
+common_title_group = Grupo
+common_title_group_def_total = Total de Defini\u00E7\u00E3o de Grupos
+common_title_group_member_health = Sa\u00FAde do Membro do Grupo
+common_title_groups = Grupos
+common_title_help = Ajuda
+common_title_host = Host
+common_title_icon = \u00EDcone
+common_title_id = ID
+common_title_id_parent = ID do Recurso pai
+common_title_info = Info
+common_title_inventory = Invent\u00E1rio
+common_title_inventorySummary = Sum\u00E1rio do Invent\u00E1rio
+common_title_lastUpdated = \u00DAltima Atualiza\u00E7\u00E3o
+common_title_lastUpdatedBy = \u00DAltima Atualiza\u00E7\u00E3o feita por
+common_title_ldapGroups = Grupos LDAP
+common_title_mashup = Mashup
+common_title_members_reporting = Relat\u00F3rio de Membros
+common_title_message = Mensagem
+common_title_metric = M\u00E9trica
+common_title_metric_chart = Gr\u00E1fico de M\u00E9trica
+common_title_mixedGroups = Grupos Mistos
+common_title_mixedGroups_total = Total de Grupos Mistos
+common_title_name = Nome
+common_title_new_dashboard = Novo Painel de Controle
+common_title_numeric_metrics = M\u00E9tricas Num\u00E9ricas
+common_title_numeric_type = Tipo Num\u00E9rico
+common_title_operation_status = Status da Opera\u00E7\u00E3o
+common_title_operations = Opera\u00E7\u00F5es
+common_title_operations_range = S\u00E9rie de Opera\u00E7\u00F5es
+common_title_over = Execesso
+common_title_password = Senha
+common_title_path = Caminho
+common_title_permissions = Permiss\u00F5es
+common_title_platform = Plataforma
+common_title_platform_total = Total de Plataformas
+common_title_plugin = Plugin
+common_title_port = Porta
+common_title_providers = Provedores
+common_title_recent_alerts = Alertas Recentes
+common_title_recent_bundle_deployments = Recent Bundle Deployments
+common_title_recent_configuration_updates = Configura\u00E7\u00F5es Alteradas
Recentemente
+common_title_recent_event_counts = Totaliza\u00E7\u00E3o de Eventos Recentes
+common_title_recent_measurements = M\u00E9tricas Recentes
+common_title_recent_oob_metrics = M\u00E9tricas fora dos limites Recentes
+common_title_recent_operations = Opera\u00E7\u00F5es Recentes
+common_title_recent_pkg_history = Hist\u00F3rico de Pacotes Recentes
+common_title_recently_added = Recursos Adicionados Recentemente
+common_title_remove_column = Remover Coluna
+common_title_repositories = Reposit\u00F3rios
+common_title_resource = Recursos
+common_title_resourceGroups = Resource Groups
+common_title_resource_group = Grupo de Recursos
+common_title_resource_id = ID do Recurso
+common_title_resource_inventory = Invent\u00E1rio de Recursos
+common_title_resource_key = Chave do Recurso
+common_title_resource_name = Nome do Recurso
+common_title_resource_type = Tipo do Recurso
+common_title_resources = Recursos
+common_title_results_count = Resultado Total
+common_title_results_count_tooltip = Mostra este n\u00FAmero de resultados
+common_title_role = Perfil
+common_title_roles = Perfis
+common_title_scheduled_operations = Opera\u00E7\u00F5es Agendadas
+common_title_search = Procurar
+common_title_selected_resources = Recursos Selecionados
+common_title_server = Servidor
+common_title_server_total = Total de Servidores
+common_title_service = Servi\u00E7o
+common_title_service_total = Total de Servi\u00E7os
+common_title_settings = Configura\u00E7\u00F5es
+common_title_show = Visualizar
+common_title_show_more = Visualizar mais...
+common_title_sort_order = Ordena\u00E7\u00E3o
+common_title_sort_order_tooltip = Define a ordem dos resultados.
+common_title_start = Iniciar
+common_title_status = Status
+common_title_stop = Parar
+common_title_summary = Sum\u00E1rio
+common_title_summary_counts = Sum\u00E1rio de Contagem
+common_title_tag_cloud = Nuvem de Tags
+common_title_the = O
+common_title_timestamp = Data/Hora
+common_title_total = Total
+common_title_type = Tipo
+common_title_units = Unidades
+common_title_user = Usu\u00E1rio
+common_title_users = Usu\u00E1rios
+common_title_value = Valor
+common_title_version = Vers\u00E3o
+common_title_view_mode = Modo vis\u00E3o
+common_title_web_address = Endere\u00E7o Web
+common_title_welcome = Bem Vindo
+common_unit_days = dias
+common_unit_hours = horas
+common_unit_milliseconds = milisegundos
+common_unit_minutes = minutos
+common_unit_months = meses
+common_unit_seconds = segundos
+common_unit_times = vezes
+common_unit_weeks = semanas
+common_unit_years = anos
+common_val_for = para
+common_val_n1st = {0}\u00BA
+common_val_n2nd = {0}\u00BA
+common_val_n3rd = {0}\u00BA
+common_val_na = N/A
+common_val_never = Nunca
+common_val_no = N\u00E3o
+common_val_no_lower = n\u00E3o
+common_val_none = Nenhum
+common_val_nth = {0}\u00BA
+common_val_yes = Sim
+common_val_yes_lower = sim
+dataSource_ContentRepoTree_error_load = Erro ao carregar os reposit\u00F3rios
+dataSource_ContentRepoTree_field_parentId = ID pai
+dataSource_bundle_loadFailed = Falha ao carregar os dados do Bundle
+dataSource_configurationHistory_clickToSeeError = Duplo clique para visualizar a
mensagem...
+dataSource_configurationHistory_currentConfig = Esta \u00E9 a configura\u00E7\u00E3o
atual
+dataSource_configurationHistory_dateCompleted = Conclu\u00EDdo em
+dataSource_configurationHistory_dateSubmitted = Submetido em
+dataSource_configurationHistory_error_fetchFailure = N\u00E3o foi poss\u00EDvel carregar
o hist\u00F3rico de configura\u00E7\u00E3o.
+dataSource_configurationHistory_field_createdTime = Criado
+dataSource_configurationHistory_field_id = ID
+dataSource_configurationHistory_field_resource = Recurso
+dataSource_configurationHistory_field_status = Status
+dataSource_configurationHistory_field_subject = Assunto
+dataSource_configurationHistory_updateType = Tipo de atualiza\u00E7\u00E3o
+dataSource_configurationHistory_updateType_group = Grupo
+dataSource_configurationHistory_updateType_individual = Individual
+dataSource_definitions_loadFailed = Falha ao carregar defini\u00E7\u00E3o de
m\u00E9tricas
+dataSource_measurementOob_error_fetchFailure = Falha ao carregar informa\u00E7\u00F5es
das m\u00E9tricas OOB
+dataSource_measurementOob_field_factor = Fator fora da faixa (%)
+dataSource_measurementOob_field_formattedBaseband = Faixa
+dataSource_measurementOob_field_formattedOutlier = Fora de s\u00E9rie
+dataSource_measurementOob_field_parentName = Pai
+dataSource_measurementOob_field_resourceName = Recurso
+dataSource_measurementOob_field_scheduleName = M\u00E9trica
+dataSource_operationHistory_error_fetchFailure = Falha ao carregar o hist\u00F3rico de
opera\u00E7\u00F5es.
+dataSource_operationHistory_field_createdTime = Data de cria\u00E7\u00E3o
+dataSource_operationHistory_field_operationName = Nome da Opera\u00E7\u00E3o
+dataSource_operationHistory_field_startedTime = Iniciado em
+dataSource_operationHistory_field_subject = Solicitante
+dataSource_operationSchedule_field_description = Notas
+dataSource_operationSchedule_field_id = ID do Agendamento
+dataSource_operationSchedule_field_nextFireTime = Pr\u00F3xima execu\u00E7\u00E3o
+dataSource_operationSchedule_field_operationDisplayName = Opera\u00E7\u00E3o
+dataSource_operationSchedule_field_operationName = Opera\u00E7\u00E3o
+dataSource_operationSchedule_field_subject = Propriet\u00E1rio
+dataSource_operationSchedule_field_timeout = Tempo limite (em segundos)
+dataSource_platforms_field_cpu = CPU
+dataSource_platforms_field_memory = Mem\u00F3ria
+dataSource_platforms_field_swap = Swap
+dataSource_problemResources_error_fetchFailure = Falha com carregar Recursos com
alertas/indisponibilidade.
+dataSource_problemResources_field_alerts = Alertas
+dataSource_problemResources_field_available = Disponibilidade Atual
+dataSource_problemResources_field_location = Local
+dataSource_problemResources_field_resource = Recurso
+dataSource_recentOperations_error_fetchFailure = Falha ao carregar a lista de
opera\u00E7\u00F5es finalizadas recentemente.
+dataSource_recentOperations_field_location = Localiza\u00E7\u00E3o
+dataSource_recentOperations_field_operation = Opera\u00E7\u00E3o
+dataSource_recentOperations_field_resource = Recurso
+dataSource_recentOperations_field_status = Status
+dataSource_recentOperations_field_time = Data/Hora
+dataSource_resourceErrors_clickStatusIcon = Clique no \u00EDcone para mais detalhes
+dataSource_resourceErrors_deleteFailure = Falha do excluir mensagens de erros do recurso
+dataSource_resourceErrors_deleteSuccess = Mensagens de erro para o recurso [{0}]
exclu\u00EDdas com sucesso.
+dataSource_resourceErrors_error_fetchFailure = Falha ao procurar por erros para o Recurso
com ID [{0}].
+dataSource_resourceErrors_field_detail = Mensagem detalhada
+dataSource_resourceErrors_field_errorType = Tipo de Erro
+dataSource_resourceErrors_field_summary = Sum\u00E1rio
+dataSource_resourceErrors_field_timeOccured = Tempo
+dataSource_resourceGroups_loadFailed = Falha ao carregar grupos de recurso
+dataSource_resources_field_discoveryTime = Data de Descoberta
+dataSource_resources_field_importTime = Data de Importa\u00E7\u00E3o
+dataSource_resources_field_key = Chave
+dataSource_resources_field_lastModifiedTime = Data da \u00FAltima altera\u00E7\u00E3o
+dataSource_resources_field_lastModifier = \u00DAltima altera\u00E7\u00E3o
+dataSource_resources_field_location = Localiza\u00E7\u00E3o
+dataSource_rpc_error_transformRequestFailure = Ocorreu uma falha na fonte de dados
durante o processamento da requisi\u00E7\u00E3o {0}.
+dataSource_rpc_error_unsupportedArrayFilterType = Sem suporte para o array filters do
tipo {0}.
+dataSource_rpc_error_unsupportedEnumType = Favor adicionar um trecho de c\u00F3digo
apropriado para a enum {0} para RPCDataSource.getEnumArray(Class)
+dataSource_rpc_no = n\u00E3o
+dataSource_rpc_yes = sim
+dataSource_scheduledOperations_error_fetchFailure = Falha ao carregar a lista de
opera\u00E7\u00F5es agendadas
+dataSource_scheduledOperations_field_location = Localiza\u00E7\u00E3o
+dataSource_scheduledOperations_field_operation = Opera\u00E7\u00E3o
+dataSource_scheduledOperations_field_resource = Recurso
+dataSource_scheduledOperations_field_time = Data/Hora
+dataSource_schedules_disableFailure_group = Falha ao desabilitar a coleta de
m\u00E9tricas de [{0}] para o grupo de recursos com ID [{1}]. As m\u00E9tricas eram:
[{2}]
+dataSource_schedules_disableFailure_resource = Falha ao desabilitar a coleta de
m\u00E9tricas de [{0}] para o recurso com ID [{1}]. As m\u00E9tricas eram: [{2}]
+dataSource_schedules_disableSuccessful_concise = Voc\u00EA desabilitou a coleta de
m\u00E9tricas de [{0}]
+dataSource_schedules_disableSuccessful_full_group = Voc\u00EA desabilitou a coleta de
m\u00E9tricas de[{0}] para o grupo de recursos com ID [{1}]. As m\u00E9tricas
desabilitadas s\u00E3o: [{2}]
+dataSource_schedules_disableSuccessful_full_resource = Voc\u00EA desabilitou a coleta de
m\u00E9tricas de[{0}] para o recurso com ID [{1}]. As m\u00E9tricas desabilitadas
s\u00E3o: [{2}]
+dataSource_schedules_enableFailure_group = Falha ao habilitar a coleta de m\u00E9tricas
de [{0}] para o grupo com ID [{1}]. As m\u00E9tricas s\u00E3o: [{2}]
+dataSource_schedules_enableFailure_resource = Falha ao habilitar a coleta de
m\u00E9tricas de [{0}] para o recurso com ID [{1}]. As m\u00E9tricas s\u00E3o: [{2}]
+dataSource_schedules_enableSuccessful_concise = Voce habilitou a coleta de m\u00E9tricas
de [{0}]
+dataSource_schedules_enableSuccessful_full_group = Voc\u00EA habilitou a coleta de
m\u00E9tricas de [{0}] para o grupo de recursos com ID [{1}]. As m\u00E9tricas habilitadas
foram: [{2}]
+dataSource_schedules_enableSuccessful_full_resource = Voc\u00EA habilitou a coleta de
m\u00E9tricas de [{0}] para o recurso com ID [{1}]. As m\u00E9tricas habilitadas foram:
[{2}]
+dataSource_schedules_field_resourceGroupId = ID de Grupo
+dataSource_schedules_loadFailed = Falha ao carregar agendamento de m\u00E9tricas
+dataSource_schedules_loadFailedContext = Falha ao carregar agendamentos de m\u00E9tricas
para o contexto [{0}]
+dataSource_schedules_loadFailedCriteria = Falha ao carregar agendamentos de m\u00E9tricas
com o crit\u00E9io [{0}]
+dataSource_schedules_updateFailure_group = Falha ao configurar o intervalo para coleta de
m\u00E9tricas de [{0}] para o grupo de recursos com ID [{1}]. M\u00E9tricas: [{2}]. O
intervalo de coleta seria de [{3}] segundos.
+dataSource_schedules_updateFailure_resource = Falha ao configurar o intervalo para coleta
de m\u00E9tricas de [{0}] para o recurso com ID [{1}]. M\u00E9tricas: [{2}]. O intervalo
de coleta seria de [{3}] segundos.
+dataSource_schedules_updateSuccessful_concise = Um novo intervalo de coleta de [{0}]
segundos foi configurado para m\u00E9tricas de [{1}]
+dataSource_schedules_updateSuccessful_full_group = Um novo intervalo de coleta de [{0}]
segundos foi configurado para m\u00E9tricas de [{1}] para o grupo de recursos com ID
[{2}]. M\u00E9tricas atualizadas: [{3}]
+dataSource_schedules_updateSuccessful_full_resource = Um novo intervalo de coleta de
[{0}] segundos foi configurado para m\u00E9tricas de [{1}] para o recurso com ID [{2}].
M\u00E9tricas atualizadas: [{3}]
+dataSource_traits_failFetch = Falha ao obter as caracter\u00EDsticas com o crit\u00E9rio
[{0}].
+dataSource_traits_field_definitionID = ID da defini\u00E7\u00E3o
+dataSource_traits_field_lastChanged = \u00DAltima Altera\u00E7\u00E3o
+dataSource_traits_field_primaryKey = Chave Prim\u00E1ria
+dataSource_traits_field_trait = Propriedade
+dataSource_traits_group_field_groupId = ID de Grupo
+dataSource_traits_group_field_memberResource = Recurso Membro
+dataSource_users_delete = Usu\u00E1rio exclu\u00EDdo [{0}]
+dataSource_users_deleteFailed = Falha ao excluir o usu\u00E1rio [{0}]
+dataSource_users_field_department = Departamento
+dataSource_users_field_emailAddress = Endere\u00E7o de Email
+dataSource_users_field_factive = Login Habilitado?
+dataSource_users_field_firstName = Primeiro Nome
+dataSource_users_field_id = ID
+dataSource_users_field_lastName = \u00DAltimo Nome
+dataSource_users_field_ldap = LDAP Login?
+dataSource_users_field_name = Nome do Usu\u00E1rio
+dataSource_users_field_password = Senha
+dataSource_users_field_passwordVerify = Verifique a Senha
+dataSource_users_field_phoneNumber = N\u00FAmero de Telefone
+dataSource_users_invalidEmailAddress = Endere\u00E7o de email inv\u00E1lido.
+dataSource_users_passwordsDoNotMatch = Senhas n\u00E3o conferem.
+datasource_roles_field_ldapGroups = Grupos LDAP
+datasource_roles_field_permissions = Permiss\u00F5es
+datasource_roles_field_resourceGroups = Grupos de Recurso
+datasource_roles_field_subjects = Subjects
+datasource_templateSchedules_disabled = Desabilitar a coleta da m\u00E9trica selecionada
[{0}].
+datasource_templateSchedules_disabled_detailed = Desabilitar a coleta da m\u00E9trica
[{0}] [{1}] para o Tipo de Recurso com id [{2}].
+datasource_templateSchedules_disabled_failed = Falha ao desabilitar a coleta da
m\u00E9trica [{0}] [{1}] para o Tipo de Recurso com id [{2}].
+datasource_templateSchedules_enabled = Habilitar a coleta da m\u00E9trica selecionada
[{0}].
+datasource_templateSchedules_enabled_detailed = Enabled collection of metric [{0}] [{1}]
by default for ResourceType with id [{2}].
+datasource_templateSchedules_enabled_failed = Falha ao habilitar a coleta da m\u00E9trica
[{0}] [{1}] para o Tipo de Recurso com id [{2}].
+datasource_templateSchedules_updated = Intervalos de coleta atualizados para a
m\u00E9trica [{0}].
+datasource_templateSchedules_updated_detail = Intervalo de coleta da m\u00E9trica [{0}]
[{1}] para o Tipo de Recurso com id [{2}] configurado para [{3}] segundos.
+datasource_templateSchedules_updated_failed = Falha ao configurar o intervalo de coleta
para [{0}] segundos para a m\u00E9trica [{1}] [{2}] para o Tipo de Recurso com id [{3}].
+favorites = Favoritos
+favorites_groups = Grupos Favoritos
+favorites_recentlyViewed = Acessados Recentemente
+favorites_resources = Recursos Favoritos
+group_tree_partialClusterTooltip = {0} out of {1} group members have a
''{2}'' resource
+util_ancestry_parentAncestry = Ancestral para:
+util_errorHandler_nullException = Exce\u00E7\u00E3o nula
+util_monitoringRequestCallback_error_checkServerStatusFailure = Imposs\u00EDvel verificar
o status do login - verifique o status do Servidor.
+util_rpcManager_activeRequests = {0} Requisi\u00E7\u00F5es ativas
+util_userPerm_loadFailGlobal = Falha ao carregar permiss\u00F5es globais - nenhuma
permiss\u00E3o concedida.
+util_userPerm_loadFailGroup = Falha ao carregar suas permiss\u00F5es para o Grupo de
Recursos com id [{0}] - nenhuma permiss\u00E3o concedida.
+util_userPerm_loadFailResource = Falha ao carregar suas permiss\u00F5es para o Recurso
com id [{0}] - nenhuma permiss\u00E3o concedida.
+util_userSession_loadFailSubject = UserSessionManager: Falha ao carregar a credencial do
usu\u00E1rio
+util_userSession_logoutFail = Falha durante o logout.
+util_widgetsField_unlimited = Ilimitado
+view_aboutBox_allRightsReserved = Todos os Direitos Reservados.~
+view_aboutBox_buildNumber = N\u00FAmero do Build:~
+view_aboutBox_failedToLoad = Falha ao carregar informa\u00E7oes do produto.~
+view_aboutBox_homepage = P\u00E1gina Inicial~
+view_aboutBox_jbossByRedHat = JBoss by Red Hat~
+view_aboutBox_title = Sobre {0}~
+view_aboutBox_version = Vers\u00E3o:
+view_adminConfig_downloads = Downloads
+view_adminConfig_license = Licen\u00E7a
+view_adminConfig_plugins = Plugins
+view_adminConfig_systemSettings = Propriedades de Sistema
+view_adminConfig_templates = Templates
+view_adminContent_contentSources = Fontes de Conte\u00FAdo
+view_adminContent_repositories = Reposit\u00F3rios
+view_adminRoles_assignedGroups = Grupos de Recursos Associados
+view_adminRoles_assignedSubjects = Perfis Associados
+view_adminRoles_failLdap = Falha ao determinar se o LDAP foi configurado - assumindo como
LDAP n\u00E3o configurado.
+view_adminRoles_failLdapGroups = Falha ao recuperar os grupos dispon\u00EDveis no LDAP -
assumindo como LDAP sem grupos.
+view_adminRoles_failLdapGroupsRole = Falha ao carregar grupos do LDAP dispon\u00EDveis
para o perfil.
+view_adminRoles_failRoles = Falha ao recuperar perfis.
+view_adminRoles_globalPerms = Permiss\u00F5es Globais
+view_adminRoles_ldapGroups = Grupos LDAP
+view_adminRoles_ldapGroupsReadOnly = Informa\u00E7\u00F5es do grupo LDAP com
permiss\u00F5es apenas de leitura
+view_adminRoles_noItems = Sem itens para apresentar
+view_adminRoles_noLdap = A integra\u00E7\u00E3o com o LDAP ainda n\u00E3o foi
configurada. Para configurar o LDAP acesse <a {0}>{1}</a>.
+view_adminRoles_permissions_autoselecting_configureRead_implied = Autodeselected
CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
+view_adminRoles_permissions_autoselecting_configureWrite_implied = Autoselected
CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
+view_adminRoles_permissions_autoselecting_manageInventory_implied = Autoselected
unselected Resource permissions, since MANAGE_INVENTORY implies all Resource
permissions...
+view_adminRoles_permissions_autoselecting_manageSecurity_implied = Autoselected
unselected permissions, since MANAGE_SECURITY implies all other permissions...
+view_adminRoles_permissions_globalPermissions = Permiss\u00F5es Globais
+view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection = {0}
read permission cannot be deselected, unless the {0} write permission, which implies the
read permission, is deselected first.
+view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection = {0}
permission cannot be deselected, unless Manage Inventory, which implies all Resource
permissions, is deselected first.
+view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection = {0}
permission cannot be deselected, unless the Manage Security permission, which implies all
other permissions, is deselected first.
+view_adminRoles_permissions_isAuthorized = Autorizado?
+view_adminRoles_permissions_isRead = Leitura?
+view_adminRoles_permissions_isWrite = Escrita?
+view_adminRoles_permissions_permDesc_manageBundles = can create, update, or delete
provisioning bundles (viewing is implied for everyone)
+view_adminRoles_permissions_permDesc_manageInventory = possui todas as permiss\u00F5es de
Recurso, como descrito abaixo, pode criar, atualizar, excluir grupos e importar Recursos
descobertos automaticamente ou manualmente.
+view_adminRoles_permissions_permDesc_manageRepositories = can create, update, or delete
repositories of any user (everyone can create their own repositories), can associate
content sources to repositories.
+view_adminRoles_permissions_permDesc_manageSecurity = Pode criar, atualizar, ou excluir
usu\u00E1rios e perfis (visualiza\u00E7\u00E3o \u00E9 padr\u00E3o para todos)
+view_adminRoles_permissions_permDesc_manageSettings = pode modificar a
configura\u00E7\u00E3o do RHQ Server e utilizar qualquer funcionalidade relacionada ao
Servidor
+view_adminRoles_permissions_permReadDesc_configure = view Resource configuration and
Resource configuration revision history
+view_adminRoles_permissions_permReadDesc_control = (IMPLIED) view available operations
and operation execution history
+view_adminRoles_permissions_permReadDesc_createChildResources = (IMPLIED) view child
Resource creation history
+view_adminRoles_permissions_permReadDesc_deleteChildResources = (IMPLIED) view child
Resource deletion history
+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_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
+view_adminRoles_permissions_permWriteDesc_control = execute operations; delete operation
execution history items
+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_manageContent = subscribe to content sources;
install and uninstall packages
+view_adminRoles_permissions_permWriteDesc_manageEvents = delete events
+view_adminRoles_permissions_permWriteDesc_manageMeasurements = update metric collection
schedules
+view_adminRoles_permissions_perm_configure = Configurar
+view_adminRoles_permissions_perm_control = Controlar
+view_adminRoles_permissions_perm_createChildResources = Create Child Resources
+view_adminRoles_permissions_perm_deleteChildResources = Delete Child Resources
+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_manageEvents = Gerenciar Eventos
+view_adminRoles_permissions_perm_manageInventory = Gerenciar Invent\u00E1rio
+view_adminRoles_permissions_perm_manageMeasurements = Gerenciar M\u00E9tricas
+view_adminRoles_permissions_perm_manageRepositories = Gerenciar Reposit\u00F3rios
+view_adminRoles_permissions_perm_manageSecurity = Gerenciar Seguran\u00E7a
+view_adminRoles_permissions_perm_manageSettings = Gerenciar Configura\u00E7\u00F5es
+view_adminRoles_permissions_read = Leitura:
+view_adminRoles_permissions_readAccessImplied = Acesso de leitura para a permiss\u00E3o
{0} \u00E9 impl\u00EDcita e n\u00E3o pode ser desabilitada.
+view_adminRoles_permissions_resourcePermissions = Permiss\u00F5es de Recurso
+view_adminRoles_permissions_write = Escrita:
+view_adminRoles_perms = Permiss\u00F5es
+view_adminRoles_resourcePerms = Permiss\u00F5es do Recurso
+view_adminRoles_roleAdded = Perfil [{0}] adicionado.
+view_adminRoles_roleDeleteFailed = Falha ao excluir o perfil [{0}].
+view_adminRoles_roleDeleted = Perfil [{0}] exclu\u00EDdo.
+view_adminRoles_roleExists = O perfil com nome [{0}] j\u00E1 existe.
+view_adminRoles_roleUpdateFailed = Falha ao atualizar o perfil [{0}].
+view_adminRoles_roleUpdated = Perfil [{0}] atualizado.
+view_adminSecurity_roles = Perfis
+view_adminSecurity_users = Usu\u00E1rios
+view_adminTemplates_disabledAlertTemplates = Templates de Alerta Desabilitados
+view_adminTemplates_disabledMetricTemplates = Templates de M\u00E9trica Desabilitados
+view_adminTemplates_editAlertTemplate = Editar Template de Alerta
+view_adminTemplates_editMetricTemplate = Editar Template de M\u00E9trica
+view_adminTemplates_enabledAlertTemplates = Templates de Alerta Habilitados
+view_adminTemplates_enabledMetricTemplates = Templates de M\u00E9trica Habilitados
+view_adminTemplates_platformServices = Servi\u00E7os da Plataforma
+view_adminTemplates_platforms = Plataformas
+view_adminTemplates_prompt_disabledAlertTemplates = N\u00FAmero de templates de alerta
criados mas desabilitados para este tipo de recurso
+view_adminTemplates_prompt_disabledMetricTemplates = N\u00FAmero de coletas de
m\u00E9trica desabilitadas por padr\u00E3o para este tipo de recurso
+view_adminTemplates_prompt_enabledAlertTemplates = N\u00FAmero de templates de alerta
habilitados para este tipo de recurso
+view_adminTemplates_prompt_enabledMetricTemplates = N\u00FAmero de coletas de
m\u00E9trica habilitadas por padr\u00E3o para este tipo de recurso
+view_adminTemplates_servers = Servidores
+view_adminTopology_affinityGroups = Grupos de Afinidade
+view_adminTopology_agents = Agentes
+view_adminTopology_partitionEvents = Eventos na Parti\u00E7\u00E3o
+view_adminTopology_remoteAgentInstall = Instala\u00E7\u00E3o Remota de Agentes
+view_adminTopology_servers = Servidores
+view_adminUsersDetails_dataTypeName = usu\u00E1rio
+view_adminUsersList_dataTypeName = usu\u00E1rio
+view_adminUsersList_dataTypeNamePlural = usu\u00E1rios
+view_admin_administration = Administra\u00E7\u00E3o
+view_admin_configuration = Configura\u00E7\u00E3o
+view_admin_content = Conte\u00FAdo
+view_admin_downloads_agentDownload = Agent Download
+view_admin_downloads_agent_buildNumber = Agent Build
+view_admin_downloads_agent_help = <p> This is the RHQ Agent Update Binary jar file.
The purpose of this jar file is to allow you to install a fresh agent on a machine where
an agent does not yet exist and to allow you to update an agent that is already installed
on a machine. For more details, run this agent download jar with the --help command line
option:<br/> <b>java -jar <agent-download.jar> --help</b>
</p> <h3>Agent Install</h3> <p> <b>java -jar
<agent-download.jar> --install[ = <new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[ = <old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
+view_admin_downloads_agent_link_label = Link
+view_admin_downloads_agent_link_value = Download Agent {0} ({1})
+view_admin_downloads_agent_loadError = Cannot get agent version info
+view_admin_downloads_agent_md5 = Agent MD5
+view_admin_downloads_agent_version = Agent Version
+view_admin_downloads_bundleDownload = Bundle Deployer Download
+view_admin_downloads_bundle_help = <p> view_admin_downloads_bundle_link_label =
Link
+view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
+view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
+view_admin_downloads_cliDownload = Command Line Client Download
+view_admin_downloads_cli_buildNumber = CLI Build
+view_admin_downloads_cli_help = <p> view_admin_downloads_cli_link_label = Link
+view_admin_downloads_cli_link_value = Download CLI {0} ({1})
+view_admin_downloads_cli_loadError = Cannot get CLI version info
+view_admin_downloads_cli_md5 = CLI MD5
+view_admin_downloads_cli_version = CLI Version
+view_admin_downloads_connectorsDownload = Connectors Download
+view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by RHQ. You install connectors into some managed
products so RHQ agents can talk to them. See the documentation for more information.
+view_admin_downloads_connectors_loadError = Cannot get connectors info
+view_admin_downloads_connectors_none = No connectors are available for download
+view_admin_landing = Nesta se\u00E7\u00E3o \u00E9 poss\u00EDvel administrar propriedades
globais do RHQ. Isso inclui configura\u00E7\u00F5es de Seguran\u00E7a, Plugins, e
gerenciamento de servidores RHQ e agentes.
+view_admin_measTemplates_title = Template Metric Collection Schedules
+view_admin_measTemplates_updateExisting_title = Update Existing Schedules
+view_admin_measTemplates_updateExisting_tooltip = Check this box to update the collection
schedules for the selected metrics on all existing resources of this type. If this is not
checked, the template schedules will only be applied to new resources of this type that
are added to inventory in the future.
+view_admin_security = Seguran\u00E7a
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = If this amount of time passes
without hearing from an agent, that quiet agent will be considered down. This value is
specified in minutes.
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent Max Quiet Time Allowed
+view_admin_systemSettings_AlertPurge_desc = How old alert history items must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_AlertPurge_name = Delete Alerts Older Than
+view_admin_systemSettings_AvailabilityPurge_desc = How old availability data must be
before being purged from the database. This is specified in days.
+view_admin_systemSettings_AvailabilityPurge_name = Delete Availability Data Older Than
+view_admin_systemSettings_BaseURL_desc = A URL to the server GUI, used mainly within
alert email notifications.
+view_admin_systemSettings_BaseURL_name = GUI Console URL
+view_admin_systemSettings_BaselineDataSet_desc = The amount of past measurement data that
is used to determine a baseline. This is specified in days.
+view_admin_systemSettings_BaselineDataSet_name = Baseline Dataset
+view_admin_systemSettings_BaselineFrequency_desc = The frequency which the
auto-calculation of baselines will be performed. If 0, baseline auto-calculation is
disabled. This is specified in days.
+view_admin_systemSettings_BaselineFrequency_name = Baseline Calculation Frequency
+view_admin_systemSettings_DataMaintenance_desc = How often database maintenance is
performed (for example, vacuuming if using Postgres). This is specified in hours.
+view_admin_systemSettings_DataMaintenance_name = Database Maintenance Period
+view_admin_systemSettings_DataReindex_desc = If enabled, certain database tables will be
re-indexed periodically.
+view_admin_systemSettings_DataReindex_name = Reindex Data Tables Nightly
+view_admin_systemSettings_EnableAgentAutoUpdate_desc = Determines if the server will
allow agents to auto-update themselves. You will not be able to download agent
distributions from the server if this is disabled.
+view_admin_systemSettings_EnableAgentAutoUpdate_name = Enable Agent Auto-Updates
+view_admin_systemSettings_EnableDebugMode_desc = If enabled, the server will enter debug
mode.
+view_admin_systemSettings_EnableDebugMode_name = Enable Debug Mode
+view_admin_systemSettings_EnableExperimentalFeatures_desc = If enabled, any experimental
features that exist in the current product will be available.
+view_admin_systemSettings_EnableExperimentalFeatures_name = Enable Experimental Features
+view_admin_systemSettings_EventPurge_desc = How old event data must be before being
purged from the database. This is specified in days.
+view_admin_systemSettings_EventPurge_name = Delete Events Older Than
+view_admin_systemSettings_JAASProvider_desc = Should LDAP be used to determine user
identity?
+view_admin_systemSettings_JAASProvider_name = Enable LDAP
+view_admin_systemSettings_LDAPBaseDN_desc = The base of the directory tree to search for
usernames and passwords while authenticating users, e.g. ou = People,dc = redhat,dc = com
+view_admin_systemSettings_LDAPBaseDN_name = Search Base
+view_admin_systemSettings_LDAPBindDN_desc = The username to connect to the LDAP server
when querying the LDAP user database. This is typically the full LDAP distinguished name
(DN) of a manager user, e.g. cn = Manager,dc = redhat,dc = com
+view_admin_systemSettings_LDAPBindDN_name = Username
+view_admin_systemSettings_LDAPBindPW_desc = The credentials of the user used to connect
to the LDAP server when querying the LDAP user database.
+view_admin_systemSettings_LDAPBindPW_name = Password
+view_admin_systemSettings_LDAPFilter_desc = Any additional filters to apply when doing
the LDAP search. This is useful if the population to authenticate can be identified via a
given LDAP property, e.g. RHQUser = true
+view_admin_systemSettings_LDAPFilter_name = Search Filter
+view_admin_systemSettings_LDAPGroupFilter_desc = LDAP search filter that must return all
LDAP groups available for authorization. This is used for LDAP group authorization.
+view_admin_systemSettings_LDAPGroupFilter_name = Group Search Filter
+view_admin_systemSettings_LDAPGroupMember_desc = LDAP search filter that is used in
conjunction with the group search filter to determine user authorization. This is used for
LDAP group authorization.
+view_admin_systemSettings_LDAPGroupMember_name = Group Member Filter
+view_admin_systemSettings_LDAPLoginProperty_desc = The LDAP property that contains the
user name. Defaults to "cn". If multiple matches are found, the first entry
found is used.
+view_admin_systemSettings_LDAPLoginProperty_name = Login Property
+view_admin_systemSettings_LDAPProtocol_desc = Should communication with the LDAP server
be done over SSL?
+view_admin_systemSettings_LDAPProtocol_name = SSL
+view_admin_systemSettings_LDAPUrl_desc = URL to the LDAP Server
+view_admin_systemSettings_LDAPUrl_name = LDAP URL
+view_admin_systemSettings_RtDataPurge_desc = How old response time data must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_RtDataPurge_name = Delete Response Time Data Older Than
+view_admin_systemSettings_TraitPurge_desc = How old measurement trait data must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_TraitPurge_name = Delete Measurement Traits Older Than
+view_admin_systemSettings_cannotLoadServerDetails = Cannot load server details
+view_admin_systemSettings_cannotLoadSettings = Cannot obtain the current system settings
+view_admin_systemSettings_fixBeforeSaving = Please fix the invalid values before saving
+view_admin_systemSettings_group_baseline = Automatic Baseline Configuration Properties
+view_admin_systemSettings_group_dataMgr = Data Manager Configuration Properties
+view_admin_systemSettings_group_general = General Configuration Properties
+view_admin_systemSettings_group_ldap = LDAP Configuration Properties
+view_admin_systemSettings_saveFailure = Failed to save the system settings
+view_admin_systemSettings_savedSettings = You successfully saved the system properties
+view_admin_systemSettings_serverDetails = Server Details
+view_admin_systemSettings_serverDetails_buildNumber = Build Number
+view_admin_systemSettings_serverDetails_currentTable = Current Measurement Raw Table
+view_admin_systemSettings_serverDetails_dbDriverName = Database Driver Name
+view_admin_systemSettings_serverDetails_dbDriverVersion = Database Driver Version
+view_admin_systemSettings_serverDetails_dbName = Database Product Name
+view_admin_systemSettings_serverDetails_dbUrl = Database Connection URL
+view_admin_systemSettings_serverDetails_dbVersion = Database Product Version
+view_admin_systemSettings_serverDetails_installDir = Server Installation Directory
+view_admin_systemSettings_serverDetails_nextRotation = Next Measurement Table Rotation
+view_admin_systemSettings_serverDetails_time = Server Local Time
+view_admin_systemSettings_serverDetails_tz = Server Time Zone
+view_admin_topology = Topologia
+view_alert_common_tab_conditions = Condi\u00E7\u00F5es
+view_alert_common_tab_conditions_expression = Disparar alerta quando
+view_alert_common_tab_conditions_expression_tooltip = Determina se QUALQUER UMA ou TODAS
as condi\u00E7\u00F5es devem ser satisfeitas para que todo o conjunto de
condi\u00E7\u00F5es seja considerado verdadeiro.
+view_alert_common_tab_conditions_modal_title = Adicionar nova condi\u00E7\u00E3o.
+view_alert_common_tab_conditions_recovery_disabled = Este alerta desativou a sua
defini\u00E7\u00E3o.
+view_alert_common_tab_conditions_recovery_enabled = ''{0}'' disparado
para ser reativado.
+view_alert_common_tab_conditions_text = Condi\u00E7\u00E3o
+view_alert_common_tab_conditions_type_availability = Mudan\u00E7a na Disponibilidade
+view_alert_common_tab_conditions_type_availability_down = Indispon\u00EDvel
+view_alert_common_tab_conditions_type_availability_up = Dispon\u00EDvel
+view_alert_common_tab_conditions_type_event = Detec\u00E7\u00E3o de Envento
+view_alert_common_tab_conditions_type_event_matching = combinando com o evento de origem
+view_alert_common_tab_conditions_type_metric_baseline = Valor da m\u00E9trica excede a
linha de base (baseline)
+view_alert_common_tab_conditions_type_metric_baseline_verb = de
+view_alert_common_tab_conditions_type_metric_calltime_change = Mudan\u00E7a no tempo de
chamada
+view_alert_common_tab_conditions_type_metric_calltime_change_verb = ao menos
+view_alert_common_tab_conditions_type_metric_calltime_delta_grows = Aumento
+view_alert_common_tab_conditions_type_metric_calltime_delta_other = Mudan\u00E7a
+view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = Redu\u00E7\u00E3o
+view_alert_common_tab_conditions_type_metric_calltime_destination = com o destino da
chamada correspondente
+view_alert_common_tab_conditions_type_metric_calltime_threshold = Tempo de chamada excede
o limiar (threshold)
+view_alert_common_tab_conditions_type_metric_change = Mudan\u00E7a no valor da
m\u00E9trica
+view_alert_common_tab_conditions_type_metric_threshold = Valor da M\u00E9trica excede o
limiar (threshold)
+view_alert_common_tab_conditions_type_metric_trait_change = Mudan\u00E7a de
Carater\u00EDstica
+view_alert_common_tab_conditions_type_operation = Execu\u00E7\u00E3o de
Opera\u00E7\u00E3o
+view_alert_common_tab_conditions_type_operation_status = resultado com status
+view_alert_common_tab_conditions_type_resource_configuration = Mudan\u00E7a na
Configura\u00E7\u00E3o do Recurso
+view_alert_common_tab_conditions_value = Valor
+view_alert_common_tab_dampening = Sensibilidade
+view_alert_common_tab_dampening_category_consecutive_count = Consecutivos
+view_alert_common_tab_dampening_category_consecutive_count_tooltip = Um alerta \u00E9
disparado a cada X ocorr\u00EAncias consecutivas em que o conjunto de condi\u00E7\u1E4Des
for satisfeito.
+view_alert_common_tab_dampening_category_duration_count = Per\u00EDodo de Tempo
+view_alert_common_tab_dampening_category_duration_count_tooltip = Um alerta \u00E9
disparado a cada X ocorr\u00EAncias em que o conjunto de condi\u00E7\u00F5es \u00E9
satisfeito dentro de um dado per\u00EDodo de tempo.
+view_alert_common_tab_dampening_category_none = N\u00E3o definido
+view_alert_common_tab_dampening_category_none_tooltip = Sensibilidade desabilitada. Cada
vez que o conjunto de condi\u00E7\u00F5es for satisfeito, um alerta ser\u00E1 disparado.
+view_alert_common_tab_dampening_category_partial_count = \u00DAltimas N
verifica\u00E7\u00F5es
+view_alert_common_tab_dampening_category_partial_count_tooltip = Um alerta \u00E9
disparado a cada X ocorr\u00EAncias em que o conjunto de condi\u00E7\u00F5es \u00E9
satisfeito durante as \u00FAltimas N verifica\u00E7\u00F5es.
+view_alert_common_tab_dampening_consecutive_occurrences_label = Ocorr\u00EAcias
+view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = O n\u00FAmero de
vezes que o conjunto de condi\u00E7\u00F5es deve ser satisfeito antes do alerta ser
disparado.
+view_alert_common_tab_dampening_duration_occurrences_label = Ocorr\u00EAncias
+view_alert_common_tab_dampening_duration_occurrences_label_tooltip = O n\u00FAmero de
vezes que o conjunto de condi\u00E7\u00F5es deve ser satisfeito durante o per\u00EDodo de
tempo definido antes do alerta ser disparado.
+view_alert_common_tab_dampening_duration_period_label = Per\u00EDodo de Tempo
+view_alert_common_tab_dampening_duration_period_label_tooltip = Espa\u00E7o de tempo em
que o conjunto de condi\u00E7\u00F5es ser\u00E1 testado para verificar se o n\u00FAmero de
ocorr\u00EAncias definido \u00E9 satisfeito.
+view_alert_common_tab_dampening_partial_evalatuions_label = Verifica\u00E7\u00F5es
+view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = O total de vezes que
o conjunto de condi\u00E7\u00F5es ser\u00E1 testado para certificar-se de que o
n\u00FAmero de ocorr\u00EAncias definido foi satisfeito.
+view_alert_common_tab_dampening_partial_occurrences_label = Ocorr\u00EAncias
+view_alert_common_tab_dampening_partial_occurrences_label_tooltip = O n\u00FAmero de
vezes que o conjunto de condi\u00E7\u00F5es deve ser satisfeito durante as \u00FAltimas N
verifica\u00E7\u00F5es antes do alerta ser disparado.
+view_alert_common_tab_general = Propriedades Gerais
+view_alert_common_tab_invalid_condition_category = Categoria de condi\u00E7\u00E3o
inv\u00E1lida - favor reportar como um bug: {0}
+view_alert_common_tab_invalid_dampening_category = Categora de sensibilidade
inv\u00E1lida - favor reportar como um bug: {0}
+view_alert_common_tab_invalid_time_units = Unidade de tempo inv\u00E1lida - favor
reportar como um bug: {0}
+view_alert_common_tab_notifications = Notifica\u00E7\u00F5es
+view_alert_common_tab_notifications_all_emails = Todos os Emails
+view_alert_common_tab_notifications_bad_emails = Emails recusados
+view_alert_common_tab_notifications_message = Mensagem
+view_alert_common_tab_notifications_sender = Remetente
+view_alert_common_tab_notifications_status = Status
+view_alert_common_tab_recovery = Recupera\u00E7\u00E3o~
+view_alert_definition_condition_editor_avilability_option_down = INDISPON\u00CDVEL
+view_alert_definition_condition_editor_avilability_option_up = DISPON\u00CDVEL
+view_alert_definition_condition_editor_avilability_tooltip = Especifica a mudan\u00E7a de
estado na disponibilidade do recurso que ir\u00E1 disparar a condi\u00E7\u00E3o.
+view_alert_definition_condition_editor_avilability_value = Disponibilidade
+view_alert_definition_condition_editor_common_avg = M\u00E9dio
+view_alert_definition_condition_editor_common_max = M\u00E1ximo
+view_alert_definition_condition_editor_common_min = M\u00EDnimo
+view_alert_definition_condition_editor_delete_confirm = Delete the selected alert
condition(s)?
+view_alert_definition_condition_editor_event_regex = Express\u00E3o Regular
+view_alert_definition_condition_editor_event_regex_tooltip = Se definida, a
condi\u00E7\u00E3o somente ser\u00E1 disparada caso o evento satisfa\u00E7a a
express\u00E3o.
+view_alert_definition_condition_editor_event_severity = Severidade do Evento
+view_alert_definition_condition_editor_event_severity_debug = Debug
+view_alert_definition_condition_editor_event_severity_error = Error
+view_alert_definition_condition_editor_event_severity_fatal = Fatal
+view_alert_definition_condition_editor_event_severity_info = Info
+view_alert_definition_condition_editor_event_severity_warn = Warn
+view_alert_definition_condition_editor_event_tooltip = Define a severeidade do evento
para disparar a condi\u00E7\u00E3o. Caso seja definida uma express\u00E3o regular, a
condi\u00E7\u00E3o somente ser\u00E1 disparada se o evento satisfazer a express\u00E3o.
+view_alert_definition_condition_editor_metric_baseline_percentage = Percentual da linha
de base
+view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = Valor da
m\u00E9trica coletada usada para disparo da condi\u00E7\u00E3o quando comparado ao valor
da linha de base selecionada
+view_alert_definition_condition_editor_metric_baseline_tooltip = Especifica a linha de
base que, quando violada, dispara a condi\u00E7\u00E3o. O valor especificado \u00E9 o
percentual do valor da linha de base informado.
+view_alert_definition_condition_editor_metric_baseline_value = Linha de base
(<i>baseline</i>)
+view_alert_definition_condition_editor_metric_calltime_change_percentage = Percentual de
Mudan\u00E7a
+view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip = Valor
do tempo de chamada coletado usado para disparar a condi\u00E7\u00E3o quando diferir do
percentual do valor limite do tempo de chamada definido.
+view_alert_definition_condition_editor_metric_calltime_change_tooltip = Especifica o
valor do tempo de chamada que, quanto alterado, dispara a condi\u00E7\u00E3o. \u00C9
necess\u00E1rio especificar o tempo limite para a chamada (m\u00EDnimo, m\u00E1ximo ou
m\u00E9dio) e o percental de mudan\u00E7a que deve ocorrer.
+view_alert_definition_condition_editor_metric_calltime_common_comparator =
Compara\u00E7\u00E3o
+view_alert_definition_condition_editor_metric_calltime_common_comparator_changes =
Mudan\u00E7as
+view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = Ganhos
+view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks =
Redu\u00E7\u00F5es
+view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = Como o
valor do tempo de chamada deve ser comparado ao valor limite
+view_alert_definition_condition_editor_metric_calltime_common_limit = Tempo limite da
chamada
+view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = Tempo de
chamada limite a ser comparado com o valor informado
+view_alert_definition_condition_editor_metric_calltime_common_name = M\u00E9trica do
tempo de chamada
+view_alert_definition_condition_editor_metric_calltime_common_regex = Express\u00E3o
Regular
+view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip = Se
especificada, essa \u00E9 a express\u00E3o regular a ser satisfeita pela chamada para
disparar a condi\u00E7\u00E3o.
+view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Especifica um
tempo limite para a chamada que, quando alcan\u00E7ado, dispara a condi\u00E7\u00E3o. O
valor especificado deve ser absoluto e com uma unidade de medida opcional. \u00C9
necess\u00E1rio especificar o tempo limite da chamada para compar\u00E1-lo ao valor:
m\u00EDnimo, m\u00E1ximo ou m\u00E9dio.
+view_alert_definition_condition_editor_metric_calltime_threshold_value = Valor do tempo
de chamada
+view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = O valor
do limiar (<i>threshold</i>) da m\u00E9trica usado para disparar a
condi\u00E7\u00E3o quando comparado ao mecanismo de compara\u00E7\u00E3o escolhido.
+view_alert_definition_condition_editor_metric_change_tooltip = Especifica a m\u00E9trica
cujo valor deve ser alterado para disparar a condi\u00E7\u00E3o.
+view_alert_definition_condition_editor_metric_common_definition_not_found = Deve existir
uma defini\u00E7\u00E3o para a m\u00E9trica - algo est\u00E1 incorreto
+view_alert_definition_condition_editor_metric_threshold_comparator = Mecanismo de
Compara\u00E7\u00E3o
+view_alert_definition_condition_editor_metric_threshold_comparator_equal = Igual \u00E0
+view_alert_definition_condition_editor_metric_threshold_comparator_greater = Maior que
+view_alert_definition_condition_editor_metric_threshold_comparator_less = Menor que
+view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = Como a
m\u00E9trica coletada deve ser comparada ao threshold estabelecido
+view_alert_definition_condition_editor_metric_threshold_name = M\u00E9trica
+view_alert_definition_condition_editor_metric_threshold_tooltip = Especifica um threshold
que, quando alcan\u00E7ado, dispara a condi\u00E7\u00E3o. O valor especificado deve ser
absoluto e com uma unidade de medida opcional.
+view_alert_definition_condition_editor_metric_threshold_value = Valor da M\u00E9trica
+view_alert_definition_condition_editor_metric_threshold_value_tooltip = Limiar
(threshold) da m\u00E9trica utilizado na compara\u00E7\u00E3o como condi\u00E7\u00E3o de
disparo.
+view_alert_definition_condition_editor_metric_trait_change_tooltip = Specify the trait
whose value must change to trigger the condition.
+view_alert_definition_condition_editor_metric_trait_change_value = Caracter\u00EDstica
+view_alert_definition_condition_editor_operation_status = Status da Opera\u00E7\u00E3o
+view_alert_definition_condition_editor_operation_status_canceled = Cancelada
+view_alert_definition_condition_editor_operation_status_failure = Falha
+view_alert_definition_condition_editor_operation_status_inprogress = Em andamento
+view_alert_definition_condition_editor_operation_status_success = Sucesso
+view_alert_definition_condition_editor_operation_tooltip = Define o resultado esperado
quando a opera\u00E7\u00E3o selecionada for executada para dispararo da
confi\u00E7\u00E3o.
+view_alert_definition_condition_editor_operation_value = Opera\u00E7\u00E3o
+view_alert_definition_condition_editor_option_availability = Mudan\u00E7a de
Disponibilidade
+view_alert_definition_condition_editor_option_event = Detec\u00E7\u00E3o de Evento
+view_alert_definition_condition_editor_option_label = Tipo de Condi\u00E7\u00E3o
+view_alert_definition_condition_editor_option_metric_baseline = Threshold base da
M\u00E9trica
+view_alert_definition_condition_editor_option_metric_calltime_change = Mudan\u00E7a no
tempo de chamada
+view_alert_definition_condition_editor_option_metric_calltime_threshold = Tempo limite da
chamada
+view_alert_definition_condition_editor_option_metric_change = Mudan\u00E7a no valor da
M\u00E9trica
+view_alert_definition_condition_editor_option_metric_threshold = Threshold (valor
absoluto) da M\u00E9trica
+view_alert_definition_condition_editor_option_metric_trait_change = Mudan\u00E7a de
Carcter\u00EDstica
+view_alert_definition_condition_editor_option_operation = Execu\u00E7\u00E3o de
Opera\u00E7\u00E3o
+view_alert_definition_condition_editor_option_resource_configuration = Mudan\u00E7a na
Configura\u00E7\u00E3o do Recurso
+view_alert_definition_condition_editor_resource_configuration_tooltip = Essa
condi\u00E7\u00E3o \u00E9 disparada quando a configura\u00E7\u00E3o do recurso for
alterada.
+view_alert_definition_for_group = Visualizar Defini\u00E7\u00E3o de Grupo
+view_alert_definition_for_type = Visualizar Template
+view_alert_definition_notification_cliScript_editor_anotherUser = Another User
+view_alert_definition_notification_cliScript_editor_existingScript = Existing Script
+view_alert_definition_notification_cliScript_editor_loadFailed = Loading the CLI
Notification Editor Failed.
+view_alert_definition_notification_cliScript_editor_newScriptVersion = Version
+view_alert_definition_notification_cliScript_editor_repository = Repository
+view_alert_definition_notification_cliScript_editor_script = Script
+view_alert_definition_notification_cliScript_editor_selectRepo = Select the repository
where the script should reside
+view_alert_definition_notification_cliScript_editor_selectRepoFirst = Select a repository
first.
+view_alert_definition_notification_cliScript_editor_thisUser = Myself
+view_alert_definition_notification_cliScript_editor_uploadNewScript = Upload New Script
+view_alert_definition_notification_cliScript_editor_verifyAuthentication = Verify
+view_alert_definition_notification_cliScript_editor_whichUser = User To Run The Script
As
+view_alert_definition_notification_editor_delete_confirm = Tem certeza de que deseja
excluir as notifica\u00E7\u00F5es selecionadas?
+view_alert_definition_notification_editor_field_configuration = Configura\u00E7\u00E3o
+view_alert_definition_notification_editor_field_configuration_loadFailed = Falha ao obter
a configura\u00E7\u00E3o
+view_alert_definition_notification_editor_field_configuration_not_loaded = Desconhecido
+view_alert_definition_notification_editor_field_sender = Remetente
+view_alert_definition_notification_editor_loadFailed = N\u00E3o \u00E9 poss\u00EDvel
obter remetentes
+view_alert_definition_notification_editor_loadFailed_single = N\u00E3o \u00E9
poss\u00EDvel obter a configura\u00E7\u00E3o do remetente
+view_alert_definition_notification_editor_none_available = Remetentes n\u00E3o
dispon\u00EDveis
+view_alert_definition_notification_editor_saveFailed = N\u00E3o foi poss\u00EDvel salvar
a configura\u00E7\u00E3o
+view_alert_definition_notification_editor_sender = Remetente da Notifica\u00E7\u00E3o
+view_alert_definition_notification_editor_title_add = Adicionar Notifica\u00E7\u00E3o
+view_alert_definition_notification_editor_title_edit = Editar Notifica\u00E7\u00E3o
+view_alert_definition_notification_operation_editor_common_operation =
Opera\u00E7\u00E3o
+view_alert_definition_notification_operation_editor_mode_relative = Recurso parente
+view_alert_definition_notification_operation_editor_mode_specific = Recurso
Espec\u00EDfico
+view_alert_definition_notification_operation_editor_mode_this = Este Recurso
+view_alert_definition_notification_operation_editor_mode_title = Modo de
Sele\u00E7\u00E3o do Recurso
+view_alert_definition_notification_operation_editor_mode_unknown = OP\u00C7\u00C3O
INV\u00C1LIDA - BUG!
+view_alert_definition_notification_operation_editor_operations_loadFailed = Falha ao
carregar a lista de opera\u00E7\u00F5es dispon\u00EDveis
+view_alert_definition_notification_operation_editor_operations_no_parameters = Esta
opera\u00E7\u00E3o n\u00E3o recebe par\u00E2metros
+view_alert_definition_notification_operation_editor_relative_ancestor = Iniciar a busca a
partir de
+view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed =
N\u00E3o \u00E9 poss\u00EDvel obter a ascend\u00EAncia do tipo
+view_alert_definition_notification_operation_editor_relative_ancestor_root = Tipo do
Ancestral Raiz
+view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Selecione
o topo da hierarquia para buscar a \u00E1rvore de descendentes para Filtro por Tipo
+view_alert_definition_notification_operation_editor_relative_descendant = Ent\u00E3o
procure por
+view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip =
Um nome especifico para identificar unicamente um recurso quando existir mais de um do
mesmo tipo. Isso \u00E9 opcional, se definido, sempre ser\u00E1 um recurso do tipo
slecionda na hierarquia.
+view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
N\u00E3o \u00E9 poss\u00EDvel obter os tipos de descendentes
+view_alert_definition_notification_operation_editor_relative_descendant_tooltip = Tipo do
recurso a ser procurado a baixo do tipo raiz definido na sele\u00E7\u00E3o 'Inicia a
Pesquesa a partir de'.
+view_alert_definition_notification_operation_editor_specific_pick_button = Selecionar
+view_alert_definition_notification_operation_editor_specific_pick_error_invalid = Favor
selecionar um recurso
+view_alert_definition_notification_operation_editor_specific_pick_error_no_operation =
Selecione um recurso que possua um ou mais opera\u00E7\u00F5es
+view_alert_definition_notification_operation_editor_specific_pick_text = Selecione um
recurso...
+view_alert_definition_notification_operation_editor_specific_resource = Recurso
+view_alert_definition_notification_role_editor_loadFailed = N\u00E3o \u00E9 poss\u00EDvel
determinar os perfis atuais - iniciando vazio
+view_alert_definition_notification_role_editor_restoreFailed = N\u00E3o \u00E9
poss\u00EDvel usar os perfis atuais - iniciando vazio
+view_alert_definition_notification_role_editor_saveFailed = N\u00E3o foi poss\u00EDvel
salvar os perfis selecionados
+view_alert_definition_notification_user_editor_loadFailed = N\u00E3o \u00E9 poss\u00EDvel
determinar os usu\u00E1rios atuais - iniciando vazio
+view_alert_definition_notification_user_editor_restoreFailed = N\u00E3o foi poss\u00EDvel
usar os usu\u00E1rios atuais - iniciando vazio
+view_alert_definition_notification_user_editor_saveFailed = N\u00E3o foi poss\u00EDvel
salvar os usu\u00E1rios seleciondados
+view_alert_definition_recovery_editor_disable_when_fired = Desabilitar quando disparado
+view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indica se este alerta
deve ser desabilitado ap\u00F3s ser disparado. Uma vez desabilitado, o alerta pode ser
reativado manualmente ou um alerta de recupera\u00E7\u00E3o pode ser definido para
reativ\u00E1-lo automaticamente. If this alert is a recovery alert itself, this setting
cannot be turned on.
+view_alert_definition_recovery_editor_loadFailed = N\u00E3o foi poss\u00EDvel construir o
menu de recupera\u00E7\u00E3o
+view_alert_definition_recovery_editor_none_available = Nenhum
+view_alert_definition_recovery_editor_recovery_alert = Alerta de Recupera\u00E7\u00E3o
+view_alert_definition_recovery_editor_recovery_alert_tooltip = O Alerta a ser recuperado
(reativado) ap\u00F3s o disparo deste alerta. N\u00E3o selecione um alerta aqui caso
n\u00E3o esteja definindo um alerta de recupera\u00E7\u00E3o.
+view_alert_definitions_create_failure = Falha na cria\u00E7\u00E3o da defini\u00E7\u00E3o
do alerta
+view_alert_definitions_create_success = Defini\u00E7\u00E3o do alerta criada com sucesso
+view_alert_definitions_delete_confirm = Excluir defini\u00E7\u00F5es para o alerta
selecionado?
+view_alert_definitions_delete_failure = Falha aos excluir as defini\u00E7\u00F5es do
alerta selecionado
+view_alert_definitions_delete_success = Defini\u00E7\u00F5es do alerta {0} exclu\u00EDdas
com sucesso
+view_alert_definitions_disable_confirm = Desabilitar as defini\u00E7\u00F5es para o
alerta selecionado?
+view_alert_definitions_disable_failure = Falha ao desabilitar defini\u00E7\u00F5es para o
alerta selecionado
+view_alert_definitions_disable_success = Defini\u00E7\u00F5es do alerta {0} desabilitadas
com sucesso
+view_alert_definitions_enable_confirm = Habilitar a(s) defini\u00E7\u00E3o(\u00F5es) para
o alerta selecionado?
+view_alert_definitions_enable_failure = Falha ao habilitar defini\u00E7\u00F5es para o
alerta selecionado
+view_alert_definitions_enable_success = Defini\u00E7\u00F5es do alerta {0} habilitados
com sucesso
+view_alert_definitions_loadFailed = Falha ao obter a defini\u00E7\u00E3o do alerta
+view_alert_definitions_loadFailed_single = Falha ao obter a defini\u00E7\u00E3o do alerta
com ID {0}
+view_alert_definitions_table_title_group = Defini\u00E7\u00F5es de Alertas para Grupo
+view_alert_definitions_table_title_resource = Defini\u00E7\u00F5es de Alerta para
Recurso
+view_alert_definitions_update_failure = Falha ao atualizar a defini\u00E7\u00E3o do
alerta
+view_alert_definitions_update_success = Defini\u00E7\u00E3o do alerta atualizada com
sucesso
+view_alert_details_breadcrumb = Detalhes
+view_alert_details_field_ack_at = Verificado em
+view_alert_details_field_ack_by = Verificado por
+view_alert_details_field_recovery_info = Informa\u00E7\u00E3o de Recupera\u00E7\u00E3o
+view_alert_details_loadFailed = Falha ao recuperar detalhes do alerta
+view_alerts_ack_confirm = Confirma o(s) alerta(s) selecionado(s)?
+view_alerts_ack_confirm_all = Confirma todos os alertas?
+view_alerts_ack_failure = Falha ao confirmar alertas com os seguintes IDs: {0}
+view_alerts_ack_failure_all = N\u00E3o foi poss\u00EDvel confirmar todos os alertas
+view_alerts_ack_success = Alertas {0} confirmados com sucesso
+view_alerts_delete_confirm = Excluir o(s) alerta(s) selecionado(s)?
+view_alerts_delete_confirm_all = Excluir todos os alertas?
+view_alerts_delete_failure = Falha ao excluir alertas com os seguintes IDs: {0}
+view_alerts_delete_failure_all = N\u00E3o foi poss\u00EDvel excluir os alertas
+view_alerts_delete_success = Alertas {0} exclu\u00EDdos com sucesso
+view_alerts_field_ack_status = Status
+view_alerts_field_ack_status_ack = Ack ({0})
+view_alerts_field_ack_status_ackHover = Acknowledged by {0} at {1}
+view_alerts_field_ack_status_empty = Ainda n\u00E3o verificado
+view_alerts_field_ack_status_filled = {0} verificado em {1}
+view_alerts_field_ack_status_noAck = No Ack
+view_alerts_field_ack_status_noAckHover = Not yet Acknowledged
+view_alerts_field_ack_subject = Assunto da Verifica\u00E7\u00E3o
+view_alerts_field_ack_time = Data de Verifica\u00E7\u00E3o
+view_alerts_field_condition_text = Condi\u00E7\u00E3o
+view_alerts_field_condition_text_many = M\u00FAltiplas condi\u00E7\u00F5es
+view_alerts_field_condition_text_none = Sem condi\u00E7\u00F5es
+view_alerts_field_condition_value = Valor da Condi\u00E7\u00E3o
+view_alerts_field_created_time = Data de Cria\u00E7\u00E3o
+view_alerts_field_enabled = Habilitado
+view_alerts_field_modified_time = Data de Altera\u00E7\u00E3o
+view_alerts_field_name = Nome
+view_alerts_field_parent = Pai
+view_alerts_field_priority = Prioridade
+view_alerts_field_protected = Protegido
+view_alerts_field_protected_tooltip = Se verdadeiro, esta defini\u00E7\u00E3o \u00E9
protegida de altera\u00E7\u00F5es feitas na defini\u00E7\u00E3o pai, ou seja,
altera\u00E7\u00F5es realizadas no pai n\u00E3o sobrescrevem esta defini\u00E7\u00E3o.
+view_alerts_field_resource = Recurso
+view_alerts_loadFailed = Falha ao carregar dados dos alertas
+view_alerts_table_filter_priority = Filtro de Prioridade
+view_alerts_table_title_group = Hist\u00F3rico de Alertas do Grupo
+view_alerts_table_title_resource = Hist\u00F3rico de Alertas do Recurso
+view_autoDiscoveryQ_committed = Committed
+view_autoDiscoveryQ_confirmSelect = Also select the platform children?
+view_autoDiscoveryQ_deleted = Deleted
+view_autoDiscoveryQ_field_discoveryTime = Data e Hora da Descoberta
+view_autoDiscoveryQ_field_inventoryStatus = Status do Invet\u00E1rio
+view_autoDiscoveryQ_field_key = Chave do Recurso
+view_autoDiscoveryQ_field_name = Nome do Recurso
+view_autoDiscoveryQ_field_parentId = ID Pai
+view_autoDiscoveryQ_ignore = Ignorar
+view_autoDiscoveryQ_ignoreFailure = Falha ao ignorar recursos.
+view_autoDiscoveryQ_ignoreSuccessful = Os recursos selecionados foram ignorados com
sucesso.
+view_autoDiscoveryQ_ignored = Ignorado
+view_autoDiscoveryQ_import = Importar
+view_autoDiscoveryQ_importFailure = Falha ao importar recursos
+view_autoDiscoveryQ_importSuccessful = Os recursos selecionados foram importados com
sucesso.
+view_autoDiscoveryQ_loadFailure = Falha ao carregar a fila de descoberta do
invent\u00E1rio
+view_autoDiscoveryQ_new = Novo
+view_autoDiscoveryQ_newAndIgnored = Novo e Ignorado
+view_autoDiscoveryQ_noItems = N\u00E3o h\u00E1 itens a serem mostrados
+view_autoDiscoveryQ_noperm = (Required manage inventory permissions missing. See
Administrator to change)~
+view_autoDiscoveryQ_showStatus = Show
+view_autoDiscoveryQ_title = Fila de Autodescoberta
+view_autoDiscoveryQ_unignore = N\u00E3o ignorar
+view_autoDiscoveryQ_unignoreFailure = Falha ao reimportar os recursos
+view_autoDiscoveryQ_unignoreSuccessful = You have successfully unignored the selected
resources.~
+view_autoDiscoveryQ_uninventoried = Uninventoried
+view_bundleVersion_loadFailure = Failed to load bundle version data~
+view_bundle_bundle = Bundle~
+view_bundle_bundleDeployment = Bundle Deployment~
+view_bundle_bundleDeployments = Bundle Deployments~
+view_bundle_bundleDestinations = Bundle Destinations~
+view_bundle_bundleFiles = Bundle Files~
+view_bundle_bundleType = Bundle Type~
+view_bundle_bundleVersion = Bundle Version~
+view_bundle_bundleVersions = Bundle Versions~
+view_bundle_bundles = Bundles~
+view_bundle_createWizard_bundleDistro = Bundle Distribution~
+view_bundle_createWizard_cancelFailure = Failed to fully cancel the creation of bundle
[{0}], version = [{1}] - the bundle may still exist in the database~
+view_bundle_createWizard_cancelSuccessful = Canceled the creation of bundle [{0}],
version = [{1}]~
+view_bundle_createWizard_clickToUploadRecipe = Click to upload a recipe file~
+view_bundle_createWizard_createFailure = Failed to create the bundle~
+view_bundle_createWizard_createSuccessful = You have successfully created a bundle named
[{0}] with a version of [{1}]~
+view_bundle_createWizard_enterRecipe = Please supply a valid recipe
+view_bundle_createWizard_enterUrl = Please enter a valid URL where the bundle
distribution file can be downloaded from
+view_bundle_createWizard_failedToUploadDistroFile = Failed to upload bundle distribution
file~
+view_bundle_createWizard_failedToUploadFile = Failed to upload bundle file~
+view_bundle_createWizard_loadBundleFileFailure = Cannot obtain bundle file information
from server~
+view_bundle_createWizard_noAdditionalFilesNeeded = No additional files need to be
uploaded for this bundle~
+view_bundle_createWizard_noBundleTypesAvail = No bundle types are available~
+view_bundle_createWizard_noBundleTypesSupported = No bundle types are supported - you
must deploy a valid plugin that supports bundle deployments~
+view_bundle_createWizard_provideBundleDistro = Provide a Bundle Distribution
+view_bundle_createWizard_recipeOption = Recipe~
+view_bundle_createWizard_title = Create Bundle~
+view_bundle_createWizard_uploadInProgress = Upload is in progress... This can take
several minutes for large files~
+view_bundle_createWizard_uploadOption = Upload~
+view_bundle_createWizard_uploadStepName = Provide a Bundle Distribution~
+view_bundle_createWizard_urlOption = URL~
+view_bundle_createWizard_windowTitle = Bundle Creation Wizard~
+view_bundle_createWizard_youMustChooseOne = You must choose one option in order to create
a bundle!
+view_bundle_deleteConfirm = Are you sure you want to delete this bundle? All versions,
destinations and deployments for this bundle will also be deleted.
+view_bundle_deploy = Deploy~
+view_bundle_deployDir = Deploy Directory~
+view_bundle_deployWizard_deployStep = Deploy Bundle to Destination Platforms~
+view_bundle_deployWizard_deploying = Deploying...~
+view_bundle_deployWizard_deploymentCreated = Created Deployment...~
+view_bundle_deployWizard_deploymentCreatedDetail = Created deployment [{0}] description
[{1}]~
+view_bundle_deployWizard_deploymentCreatedDetail_concise = You have created the
deployment [{0}]
+view_bundle_deployWizard_deploymentScheduled = Bundle Deployment Scheduled!~
+view_bundle_deployWizard_deploymentScheduledDetail = Scheduled bundle deployment [{0}]
destination group [{1}]~
+view_bundle_deployWizard_deploymentScheduledDetail_concise = You have scheduled the
bundle deployment
+view_bundle_deployWizard_destinationCreatedDetail = Created destination [{0}] description
[{1}]~
+view_bundle_deployWizard_destinationCreatedDetail_concise = You have created the
destination [{0}]
+view_bundle_deployWizard_error_1 = Failed to delete new deployment on Cancel:
+view_bundle_deployWizard_error_10 = Failed to create destination, it may already exist.
(Note, for an existing destination deploy from the Destination view)~
+view_bundle_deployWizard_error_11 = Failed to find defined deployments.~
+view_bundle_deployWizard_error_12 = Failed to find defined bundles.~
+view_bundle_deployWizard_error_2 = Failed to delete new destination on Cancel:
+view_bundle_deployWizard_error_3 = Failed to Schedule Deployment!~
+view_bundle_deployWizard_error_4 = Failed to schedule deployment: {0}~
+view_bundle_deployWizard_error_5 = Failed to Create Deployment!~
+view_bundle_deployWizard_error_6 = Failed to create deployment: {0}~
+view_bundle_deployWizard_error_7 = Failed to get deployment name.~
+view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down~
+view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage:~
+view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.~
+view_bundle_deployWizard_getConfigStep = Set Deployment Configuration~
+view_bundle_deployWizard_getDestStep = New Destination~
+view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)~
+view_bundle_deployWizard_getDest_desc = Destination Description~
+view_bundle_deployWizard_getDest_name = Destination Name~
+view_bundle_deployWizard_getInfoStep = Provide Deployment Information~
+view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)~
+view_bundle_deployWizard_getInfo_deploymentDesc = Deployment Description~
+view_bundle_deployWizard_getInfo_deploymentName = Deployment Name~
+view_bundle_deployWizard_getOptionsStep = Deploy Options~
+view_bundle_deployWizard_getOptions_deployLater = Deploy Later~
+view_bundle_deployWizard_getOptions_deployNow = Deploy Now~
+view_bundle_deployWizard_getOptions_deployTime = Deployment Time~
+view_bundle_deployWizard_selectBundleStep = Select Deployment Bundle~
+view_bundle_deployWizard_selectBundle_single = Select only a single bundle for
deployment.~
+view_bundle_deployWizard_selectVersionStep = Select Deployment Bundle Version~
+view_bundle_deployWizard_selectVersion_latest = Latest Version [{0}]~
+view_bundle_deployWizard_selectVersion_live = Live Version [{0}]~
+view_bundle_deployWizard_selectVersion_select = Select Version from List:~
+view_bundle_deployWizard_title = Bundle Deployment Wizard~
+view_bundle_deploy_action = Action~
+view_bundle_deploy_backButton = Back to Destination~
+view_bundle_deploy_clickForError = Click the icon for the error message
+view_bundle_deploy_deleteConfirm = Are you sure you want to delete this bundle
deployment?
+view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
+view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
+view_bundle_deploy_deployedBy = Deployed By
+view_bundle_deploy_deploymentPlatforms = Deployment Platforms~
+view_bundle_deploy_installDetails = Install Details~
+view_bundle_deploy_loadBundleFailure = Failed to find bundle~
+view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments~
+view_bundle_deploy_loadFailure = Failed to load bundle deployment~
+view_bundle_deploy_name = Deployment Name~
+view_bundle_deploy_operatingSystem = Operating System~
+view_bundle_deploy_selectARow = Select a row to show installation details~
+view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags~
+view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags~
+view_bundle_deploy_time = Deployment Time~
+view_bundle_deployed = Deployed~
+view_bundle_deployments = Deployments~
+view_bundle_dest_backToBundle = Back to Bundle~
+view_bundle_dest_created = Created~
+view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle destination?
This only deletes it from the database; all bundle content that was deployed to this
destination on remote machines will remain.
+view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
+view_bundle_dest_deleteSuccessful = You successfully deleted the bundle destination
[{0}]
+view_bundle_dest_deployDir = Deploy Directory~
+view_bundle_dest_group = Group~
+view_bundle_dest_lastDeployedVersion = Last Deployed Version~
+view_bundle_dest_lastDeploymentDate = Last Deployment Date~
+view_bundle_dest_lastDeploymentStatus = Last Deployment Status~
+view_bundle_dest_loadFailure = Failed to load bundle destinations~
+view_bundle_dest_loadFailureVersionInfo = Failed to load bundle destination deployed
version information~
+view_bundle_dest_purgeConfirm = This will purge the bundle content from all remote
machines. Are you sure you want to do this?
+view_bundle_dest_purgeFailure = Failed to purge the bundle destination [{0}] from some or
all of the remote machines.
+view_bundle_dest_purgeSuccessful = You successfully purged the bundle destination [{0}]
from all of the remote machines.
+view_bundle_dest_revertConfirm = This will revert all remote machines back to the
previous bundle deployment. Are you sure you want to do this?
+view_bundle_dest_tagUpdateFailure = Failed to update bundle destination tags~
+view_bundle_dest_tagUpdateSuccessful = You have successfully updated the bundle
destination tags~
+view_bundle_destinations = Destinations~
+view_bundle_fileListView_fileSize = File Size~
+view_bundle_fileListView_loadFailure = Failed to load bundle file data~
+view_bundle_fileListView_md5 = MD5
+view_bundle_fileListView_sha256 = SHA256
+view_bundle_files = Files~
+view_bundle_latestVersion = Latest Version~
+view_bundle_list_backToAll = Back to All Bundles~
+view_bundle_list_deleteConfirm = Are you sure you want to delete this bundle?~
+view_bundle_list_deleteFailure = Failed to delete the bundle [{0}]~
+view_bundle_list_deleteSuccessful = You successfully deleted the bundle named [{0}]~
+view_bundle_list_deletesFailure = Failed to delete the bundles
+view_bundle_list_deletesSuccessful = You successfully deleted the bundles
+view_bundle_list_destinationsCount = Destinations Count~
+view_bundle_list_error1 = Failed to load bundle to deploy [{0}]~
+view_bundle_list_error2 = Failed to get a single bundle to deploy [{0}]~
+view_bundle_list_error3 = Failed to load bundle~
+view_bundle_list_loadFailure = Failed to load the bundle to be deployed [{0}]~
+view_bundle_list_loadWithLatestFailure = Failed to load bundle with the latest version
data~
+view_bundle_list_singleLoadFailure = Failed to get a single bundle to be deployed [{0}]~
+view_bundle_list_tagUpdateFailure = Failed to update bundle tags~
+view_bundle_list_tagUpdateSuccessful = You have successfully updated the bundle tags~
+view_bundle_list_versionsCount = Versions Count~
+view_bundle_purge = Purge
+view_bundle_recipe = Recipe~
+view_bundle_resDeployDS_loadFailure = Failed to load bundle resource deployments~
+view_bundle_revert = Revert~
+view_bundle_revertWizard_confirmStep_confirmation = Reverting Live Deployment to Previous
Deployment. Click "Next" to continue...~
+view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment = Failed to find live
deployment; cannot revert~
+view_bundle_revertWizard_confirmStep_liveDeployment = Live Deployment~
+view_bundle_revertWizard_confirmStep_name = Revert Deployment Confirmation~
+view_bundle_revertWizard_confirmStep_noLiveDeployment = No live deployment was found for
the destination [{0}]~
+view_bundle_revertWizard_confirmStep_noLiveDeployment_concise = No live deployment was
found for the destination
+view_bundle_revertWizard_confirmStep_noPriorDeployment = The live deployment [{0}] cannot
be reverted because there is no prior deployment for the destination [{1}]~
+view_bundle_revertWizard_confirmStep_noPriorDeployment_concise = The live deployment
cannot be reverted because there is no prior deployment
+view_bundle_revertWizard_confirmStep_prevDeployment = Previous Deployment~
+view_bundle_revertWizard_getInfoStep_cleanDeploy = Clean Deployment? (this will delete an
old, existing deploy directory prior to starting the revert deployment)~
+view_bundle_revertWizard_getInfoStep_getNameFailure = Failed to get revert deployment
name~
+view_bundle_revertWizard_getInfoStep_name = Provide Revert Information~
+view_bundle_revertWizard_getInfoStep_revertDeployDesc = Revert Deploy Description~
+view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT
From]\\n{0}\\n\\n[REVERT To]\\n{1}~
+view_bundle_revertWizard_getInfoStep_revertDeployName = Revert Deploy Name~
+view_bundle_revertWizard_revertStep_name = Deploy Bundle to Destination Platforms~
+view_bundle_revertWizard_revertStep_reverting = Reverting...~
+view_bundle_revertWizard_revertStep_scheduled = You have successfully scheduled the
revert deployment!~
+view_bundle_revertWizard_revertStep_scheduledDetails = You have successfully scheduled to
revert the bundle deployment [{0}] from resource group [{1}]~
+view_bundle_revertWizard_revertStep_scheduledFailure = Failed to schedule revert
deployment!~
+view_bundle_revertWizard_title = Bundle Revert~
+view_bundle_revertWizard_windowTitle = Bundle Revert Wizard~
+view_bundle_tree_loadFailure = Failed to load bundle data~
+view_bundle_version_backToBundle = Back to Bundle~
+view_bundle_version_bundleVersionTagUpdateFailure = Failed to update bundle version
tags~
+view_bundle_version_bundleVersionTagUpdateSuccessful = You have successfully updated the
bundle version tags~
+view_bundle_version_deleteConfirm = Are you sure you want to delete this bundle version?
+view_bundle_version_deleteFailure = Failed to delete the bundle version [{0}]
+view_bundle_version_deleteSuccessful = You successfully deleted the bundle version [{0}]
+view_bundle_version_loadFailure = Failed to load bundle version~
+view_bundle_versions = Versions~
+view_configCompare_comparingConfigs = Comparando Configura\u00E7\u00F5es
+view_configCompare_configCompare = Compara\u00E7\u00E3o de Configura\u00E7\u00F5es
+view_configEdit_addItem = Adicionar Item \u00E0 Lista
+view_configEdit_confirm_1 = Tem certeza de que deseja excluir as propriedades
selecionadas?
+view_configEdit_confirm_2 = Tem certeza de que deseja excluir esta linha?
+view_configEdit_confirm_3 = Tem certeza de que deseja excluir [{0}] selecionado [{1}]?
+view_configEdit_editRow = Editar Linha de Configura\u00E7\u00E3o
+view_configEdit_enterPropName = Informe o nome da propriedade a ser adicionada.
+view_configEdit_error_1 = Este recurso n\u00E3o suporta Configura\u00E7\u00E3o.
+view_configEdit_error_2 = Este recurso n\u00E3o possui suporte \u00E0 propriedades de
conex\u00E3o.
+view_configEdit_error_3 = N\u00E3o f\u00F3 poss\u00EDvel adicionar a propriedade com nome
[{0}]. Nome de propriedade j\u00E1 utilizada neste conjunto.
+view_configEdit_files = Arquivos
+view_configEdit_hideAll = Ocultar todos
+view_configEdit_jumpToSection = Ir direto para a Sele\u00E7\u00E3o
+view_configEdit_msg_1 = Propriedade [{0}] adicionada ao conjunto.
+view_configEdit_msg_2 = Propriedades removidas do conjunto.
+view_configEdit_msg_3 = [{0} {1}] removido da lista.
+view_configEdit_msg_4 = Item adicionado \u00E0 lista.
+view_configEdit_properties = Propriedades
+view_configEdit_tooltip_1 = Remove os itens selecionados da lista.
+view_configEdit_tooltip_2 = Adiciona um item \u00E0 lista.
+view_configEdit_viewRow = View Row
+view_configurationDetails_allPropertiesValid = All configuration properties have valid
values, so the configuration can now be saved.~
+view_configurationDetails_configNotUpdatedDueToNoChange = Configuration was not updated,
since the new configuration is equivalent to the current configuration.
+view_configurationDetails_error_updateFailure = Failed to update configuration.~
+view_configurationDetails_messageConcise = Configuration updated - current version is
{0}.~
+view_configurationDetails_messageDetailed = Configuration updated to version {0} for
Resource [{1}].
+view_configurationDetails_noPermission = You do not have permission to edit this
Resource''s configuration.~
+view_configurationDetails_somePropertiesInvalid = The following configuration properties
have invalid values: {0}. The values must be corrected before the configuration can be
saved.~
+view_configurationHistoryDetails_dialogTitle = Configuration Details~
+view_configurationHistoryDetails_error_loadFailure = Unable to load configuration
history.~
+view_configurationHistoryList_cannotDeleteCurrent = One of the selected history items
represents the current configuration - you cannot delete it.
+view_configurationHistoryList_cannotDeleteGroupItems = One or more selected configuration
history items are part of a group configuration update.
view_configurationHistoryList_delete_failure = Failed to delete the configuration history
items.
+view_configurationHistoryList_delete_success = You successfully deleted the selected
configuration history items.
+view_configurationHistoryList_itemNamePlural = configuration history items
+view_configurationHistoryList_rollback = Rollback
+view_configurationHistoryList_rollback_failure = Failed to rollback the configuration.
The original configuration is still in effect.
+view_configurationHistoryList_rollback_success = You successfully rolled back the
configuration to the selected past configuration.
+view_configurationHistoryList_table_clickStatusIcon = Click the status icon for full
details
+view_configurationHistoryList_table_statusFailure = This configuration update failed
+view_configurationHistoryList_table_statusInprogress = This configuration update is still
in progress
+view_configurationHistoryList_table_statusNochange = No changes were made to this
configuration
+view_configurationHistoryList_table_statusSuccess = This configuration update was
successful
+view_configurationHistoryList_title = Configuration History~
+view_connectionSettingsDetails_allPropertiesValid = All connection settings have valid
values, so the settings can now be saved.~
+view_connectionSettingsDetails_error_updateFailure = Failed to update connection
settings.~
+##view_connectionSettingsDetails_messageConcise_updateSuccess = Connection settings
updated.~
+##view_connectionSettingsDetails_messageDetailed_updateSuccess = Connection settings
updated for Resource [{0}].~
+view_connectionSettingsDetails_noPermission = You do not have permission to edit this
Resource''s connection settings.~
+view_connectionSettingsDetails_somePropertiesInvalid = The following connection settings
have invalid values: {0}. The values must be corrected before the settings can be saved.~
+view_core_error_1 = Falha ao perquisar novos alertas~
+view_core_loggedInAs = Logado como {0}~
+view_core_loggedOut = Logged out~
+view_core_noRecentAlerts = There are no recent alerts to report
+view_core_recentAlerts = [{0}] alertas recentes~
+view_core_uncaught = Exce\u00E7\u00E3o n\u00E3o capturada~
+view_dashboardManager_deleteFail = Failed to delete dashboard.
+view_dashboardManager_deleted = Successfully deleted dashboard {0}~
+view_dashboardManager_error = Failed to save dashboard to server~
+view_dashboardManager_saved = Saved dashboard {0} to server~
+view_dashboardManager_success = Saved dashboard~
+view_dashboard_favorites_error1 = Failed to load favorite Resources.~
+view_dashboardsManager_error1 = Failed to add new dashboard~
+view_dashboardsManager_inventory_title = Inventory Summary~
+view_dashboardsManager_mashup_title = RHQ News~
+view_dashboardsManager_message_title = Welcome To RHQ~
+view_dashboardsManager_message_title_details = <h1>Welcome to
RHQ</h1>\n<p>The RHQ project is an abstraction and plug-in based systems
management suite that provides extensible and integrated systems management for multiple
products and platforms across a set of core features. The project is designed with layered
modules that provide a flexible architecture for deployment. It delivers a core user
interface that delivers audited and historical management across an entire enterprise. A
Server/Agent architecture provides remote management and plugins implement all specific
support for managed products.</p>\n <p>This default dashboard can be edited by
clicking the (edit mode) button above.</p>~
+view_dashboardsManager_tagcloud_title = Tag Cloud~
+view_dashboards_confirm1 = Are you sure you want to delete~
+view_dashboards_portlets_refresh_fail1 = Failed to update interval for portlets that
auto-refresh
+view_dashboards_portlets_refresh_fail2 = Failed to disable reload for portlets that
auto-refresh
+view_dashboards_portlets_refresh_multiple_min = {0} minutes
+view_dashboards_portlets_refresh_none = No Refresh
+view_dashboards_portlets_refresh_one_min = 1 minute
+view_dashboards_portlets_refresh_success1 = Updated interval for portlets that
auto-refresh
+view_dashboards_portlets_refresh_success2 = Stopping reload for portlets that
auto-refresh
+view_dashboards_title = Dashboard~
+view_dynagroup_children = DynaGroup Children~
+view_dynagroup_compatible = Compatible
+view_dynagroup_definitionAlreadyExists = A group definition already exists with this
name~
+view_dynagroup_definitionCreated = You have successfully created a group definition named
[{0}]~
+view_dynagroup_definitionLoadFailure = Failed to load group definitions~
+view_dynagroup_definitions = DynaGroup Definitions~
+view_dynagroup_deleteFailureSelection = Failed to delete the selected group definitions~
+view_dynagroup_deleteSuccessfulSelection = You have successfully deleted [{0}] group
definitions~
+view_dynagroup_editing = Editing [{0}]~
+view_dynagroup_exprBuilder_addExpression = Add Expression
+view_dynagroup_exprBuilder_comparisonType = Comparison Type
+view_dynagroup_exprBuilder_comparisonType_contains = contains
+view_dynagroup_exprBuilder_comparisonType_endsWith = ends with
+view_dynagroup_exprBuilder_comparisonType_equals = equals
+view_dynagroup_exprBuilder_comparisonType_startsWith = starts with
+view_dynagroup_exprBuilder_comparisonType_tooltip = Comparison Type
+view_dynagroup_exprBuilder_definingPlugin = Defining Plugin
+view_dynagroup_exprBuilder_definingPlugin_tooltip = The plugin to search
+view_dynagroup_exprBuilder_expression = Expression
+view_dynagroup_exprBuilder_expressionType = Expression Type
+view_dynagroup_exprBuilder_expressionType_pluginConfig = Plugin Configuration
+view_dynagroup_exprBuilder_expressionType_resource = Resource
+view_dynagroup_exprBuilder_expressionType_resourceCategory = Resource Category
+view_dynagroup_exprBuilder_expressionType_resourceConfig = Resource Configuration
+view_dynagroup_exprBuilder_expressionType_resourceType = Resource Type
+view_dynagroup_exprBuilder_expressionType_tooltip = The type of property this expression
switches on:<br/> <b>Resource</b>: A resource property such as its name
or version<br/> <b>Resource Type</b>: Search for resources of a specific
type<br/> <b>Resource Category</b>: Search for resources by category:
platform, server, service<br/> <b>Trait</b>: Resources that have
selected values for a monitored trait<br/> <b>Plugin Configuration</b>:
Search by the plugin component configuration setting of the component<br/>
<b>Resource Configuration</b>: Search by the configuration setting of the
managed resource
+view_dynagroup_exprBuilder_expressionType_trait = Trait
+view_dynagroup_exprBuilder_expression_tooltip = This is the full expression that is
represented by the selections in the form below. This text will be added to your group
definition expression text when you click the "Add Expression" button.
+view_dynagroup_exprBuilder_groupBy = Group by
+view_dynagroup_exprBuilder_groupBy_tooltip = GroupBy will cause the system to pivot on
the values from the entered expressions creating a separate group for each value. For
example, GroupBy on the cluster name to create a group for each cluster with all cluster
members in it.
+view_dynagroup_exprBuilder_noPlugins = --No plugins--
+view_dynagroup_exprBuilder_noProperties = --No properties--
+view_dynagroup_exprBuilder_noResourceTypes = --No resource types--
+view_dynagroup_exprBuilder_pluginLoadFailure = Cannot get the list of plugins
+view_dynagroup_exprBuilder_propLoadFailure = Cannot get list of properties
+view_dynagroup_exprBuilder_propertyName = Property Name
+view_dynagroup_exprBuilder_propertyName_tooltip = The name of the property to query. This
is defined by the expression type as well as the resource type.
+view_dynagroup_exprBuilder_resTypeLoadFailure = Cannot get list of resource types for
plugin [{0}]
+view_dynagroup_exprBuilder_resource = Resource
+view_dynagroup_exprBuilder_resourceType = Resource Type
+view_dynagroup_exprBuilder_resourceType_tooltip = The type of resource
+view_dynagroup_exprBuilder_resource_child = Child
+view_dynagroup_exprBuilder_resource_grandparent = Grandparent
+view_dynagroup_exprBuilder_resource_greatGrandparent = GreatGrandparent
+view_dynagroup_exprBuilder_resource_greatGreatGrandparent = GreatGreatGrandparent
+view_dynagroup_exprBuilder_resource_parent = Parent
+view_dynagroup_exprBuilder_resource_resource = Resource
+view_dynagroup_exprBuilder_resource_tooltip = Choose the level of the resource you wish
to select. For example, select "parent" will find resources whose parent
resource matches the rest of the expression.
+view_dynagroup_exprBuilder_title = Expression Builder
+view_dynagroup_exprBuilder_unset = Unset
+view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the " = " operator
because of how databases store and query data.
+view_dynagroup_exprBuilder_value_tooltip = The string value for the expression to query
+view_dynagroup_expression = Expression~
+view_dynagroup_expressionBuilderIconTooltip = Expression Builder...
+view_dynagroup_expressionSet = Expression Set~
+view_dynagroup_lastCalculationTime = Last Calculation Time~
+view_dynagroup_loadDefinitionFailure = Failed to load group definition [{0}]~
+view_dynagroup_loadDefinitionMissing = There is no group definition with the ID of
[{0}]~
+view_dynagroup_mixed = Mixed
+view_dynagroup_newGroupDefinition = New Group Definition~
+view_dynagroup_nextCalculationTime = Next Calculation Time~
+view_dynagroup_permDenied = You do not have permission to view group definitions~
+view_dynagroup_permUnknown = Could not determine if you have the proper permissions -
access is denied~
+view_dynagroup_recalcFailure = Failed to recalculated this group definition~
+view_dynagroup_recalcFailureSelection = Failed to recalculated the selected group
definitions~
+view_dynagroup_recalcSuccessful = You have successfully recalculated this group
definition~
+view_dynagroup_recalcSuccessfulSelection = You have successfully recalculated [{0}] group
definitions~
+view_dynagroup_recalculate = Recalculate~
+view_dynagroup_recalculationInterval = Recalculation Interval~
+view_dynagroup_recursive = Recursive~
+view_dynagroup_saveAndRecalculate = Save & Recalculate~
+view_dynagroup_saveFailure = Failed to save the group definition named [{0}]~
+view_dynagroup_saveSuccessful = You have successfully saved the group definition named
[{0}]~
+view_dynagroup_singleSaveFailure = An error occurred - there should have been one
created, but instead there were [{0}] created~
+view_dynagroup_template_customExpression = Custom Expression...
+view_dynagroup_template_downedResources = All resources currently down
+view_dynagroup_template_jbossas4_clusters = JBossAS 4 - Clusters
+view_dynagroup_template_jbossas4_earClusters = JBossAS 4 - Clustered EARs
+view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - All hosting any version of
"my" app
+view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - All non-secured
+view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - Unique versions
+view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - Clusters
+view_dynagroup_template_platforms = Platform resources in inventory
+view_dynagroup_template_uniqueResourceTypes = Unique resource types in inventory
+view_groupConfigEdit_member = Membro
+view_groupConfigEdit_noListProps = Lista de propriedades n\u00E3o suportada atualmente
para configura\u00E7\u00F5es em grupo.
+view_groupConfigEdit_setAll = Atribuir todos os valores \u00E0:
+view_groupConfigEdit_tooltip_1 = Valores dos membros diferem - clique no \u00EDcone para
edit\u00E1-los.
+view_groupConfigEdit_unset = Remover atribui\u00E7\u00E3o
+view_groupConfigEdit_valsDiff = valores dos membros diferem
+view_groupConfigEdit_valsDiffForProp = Valores dos membros para a Propriedade [{0}]
+view_groupCreateWizard_createFailure = Failed to create the resource group~
+view_groupCreateWizard_createStepName = Group Settings~
+view_groupCreateWizard_createStep_recursive = Recursive~
+view_groupCreateWizard_createSuccessful_concise = You have created a new resource group.
[<a href = "{0}">View Group</a>]~
+view_groupCreateWizard_createSuccessful_full = You have created a new [{0}] resource
group with the name [{1}] that contains [{2}] member resources~
+view_groupCreateWizard_membersStepName = Select Members~
+view_groupCreateWizard_title = Create Group~
+view_groupCreateWizard_windowTitle = Create Group~
+view_groupInventoryMembers_button_updateMembership = Update Membership...
+view_groupInventoryMembers_title_updateMembership = Update Membership
+view_group_detail_failLoad = Failed to load group for group with ID [{0}]
+view_group_detail_failLoadComp = Failed to load group composite for group with ID [{0}]
+view_group_detail_failRecursiveChange = Failed to update the recursive setting for group
[{0}]
+view_group_detail_recursiveChange = You successfully changed the recursive setting for
group [{0}]
+view_group_inventory_activity_no_recent_metrics = This group has no recent metrics
+view_group_meas_schedules_title = Group Metric Collection Schedules~
+view_group_membership_failFetch = Failed to fetch Resource Group
+view_group_membership_saveFailure = Failed to update membership of group [{0}]~
+view_group_membership_saveSuccessful = You have updated the membership of group [{0}]~
+view_group_operationScheduleDetails_failedToLoadMembers = Failed to load group member
Resources.
+view_group_operationScheduleDetails_field_execute = Execute
+view_group_operationScheduleDetails_field_haltOnFailure = Halt on Failure?
+view_group_operationScheduleDetails_memberResource = Member Resource
+view_group_operationScheduleDetails_value_parallel = in parallel
+view_group_operationScheduleDetails_value_sequential = in the order specified below (drag
and drop member Resources to change order)
+view_group_pluginConfig_edit_currentGroupProperties = Current Group Properties~
+view_group_pluginConfig_edit_invalid = The following connection setting properties have
invalid values and must be corrected before the connection settings can be saved: [{0}]~
+view_group_pluginConfig_edit_noperm = You do not have permission to edit this group
connection settings~
+view_group_pluginConfig_edit_saveFailure = Failed to initiate group connection setting
update for [{0}] compatible group named [{1}]~
+view_group_pluginConfig_edit_saveInitiated_concise = The group connection setting updates
have been initiated~
+view_group_pluginConfig_edit_saveInitiated_full = The group connection setting updates
have been initiated for the [{0}] compatible group named [{1}]~
+view_group_pluginConfig_edit_saveTooltip = Update the connection settings of all group
members~
+view_group_pluginConfig_edit_valid = All connection setting properties have valid values,
so the connection settings can now be saved~
+view_group_pluginConfig_members_fetchFailure = Failed to get plugin config update history
for members of group [{0}]~
+view_group_pluginConfig_members_fetchFailureConn = Failed to retrieve member connection
settings for [{0}]
+view_group_pluginConfig_members_fetchFailureConnInProgress = A group plugin configuration
update is currently in progress. You must wait until the update is finished before you can
view the group settings.
+view_group_pluginConfig_members_statusDetails = Status Details~
+view_group_pluginConfig_members_statusFailure = This configuration update failed for an
unknown reason~
+view_group_pluginConfig_members_statusInprogress = This configuration update is still in
progress~
+view_group_pluginConfig_members_statusNochange = No changes were made to this
configuration~
+view_group_pluginConfig_members_statusSuccess = This configuration update was
successful~
+view_group_pluginConfig_members_title = Group Connection Settings Member Histories~
+view_group_pluginConfig_table_clickStatusIcon = Click the status icon for full details~
+view_group_pluginConfig_table_deleteFailure = Failed to delete group plugin config
history~
+view_group_pluginConfig_table_deleteSuccessful = You have deleted [{0}] history items~
+view_group_pluginConfig_table_failFetch = Failed to get group plugin config history
+view_group_pluginConfig_table_msg1 = View Member History for status of each individual
resource~
+view_group_pluginConfig_table_statusDetails = Status Details~
+view_group_pluginConfig_table_statusFailure = This group configuration update failed~
+view_group_pluginConfig_table_statusInprogress = This group configuration update is still
in progress~
+view_group_pluginConfig_table_statusNochange = No changes were made to this group
configuration~
+view_group_pluginConfig_table_statusSuccess = This group configuration update was
successful~
+view_group_pluginConfig_table_title = Group Connection Settings History~
+view_group_pluginConfig_table_viewMemberHistory = View Member History~
+view_group_pluginConfig_table_viewSettings = View Settings~
+view_group_pluginConfig_view_groupProperties = Group Properties~
+view_group_pluginConfig_view_noperm = You do not have permissions to see the connection
settings~
+view_group_resConfig_edit_invalid = The following configuration properties have invalid
values and must be corrected before the configuration can be saved: [{0}]~
+view_group_resConfig_edit_loadFail = Failed to retrieve member Resource configurations
for [{0}]
+view_group_resConfig_edit_noperm = You do not have permission to edit this group
configuration~
+view_group_resConfig_edit_saveFailure = Failed to initiate group configuration update for
[{0}] compatible group named [{1}]~
+view_group_resConfig_edit_saveInitiated_concise = The group configuration updates have
been initiated~
+view_group_resConfig_edit_saveInitiated_full = The group configuration updates have been
initiated for the [{0}] compatible group named [{1}]~
+view_group_resConfig_edit_saveTooltip = Update the configurations of all group members~
+view_group_resConfig_edit_valid = All configuration properties have valid values, so the
configuration can now be saved~
+view_group_resConfig_members_fetchFailure = Failed to get resource config update history
for members of group [{0}]
+view_group_resConfig_members_fetchFailureConfig = Failed to retrieve member resource
configuration settings for [{0}]
+view_group_resConfig_members_fetchFailureConfigInProgress = A group resource
configuration update is currently in progress. You must wait until the update is finished
before you can view the group settings.
+view_group_resConfig_members_statusDetails = Status Details
+view_group_resConfig_members_statusFailure = This configuration update failed for an
unknown reason
+view_group_resConfig_members_statusInprogress = This configuration update is still in
progress
+view_group_resConfig_members_statusNochange = No changes were made to this configuration
+view_group_resConfig_members_statusSuccess = This configuration update was successful
+view_group_resConfig_members_title = Group Resource Configuration Member Histories
+view_group_resConfig_table_clickStatusIcon = Click the status icon for full details
+view_group_resConfig_table_deleteFailure = Failed to delete group resource config
history
+view_group_resConfig_table_deleteSuccessful = You have deleted [{0}] history items
+view_group_resConfig_table_failFetch = Failed to get group resource config history
+view_group_resConfig_table_msg1 = View Member History for status of each individual
resource
+view_group_resConfig_table_statusDetails = Status Details
+view_group_resConfig_table_statusFailure = This group configuration update failed
+view_group_resConfig_table_statusInprogress = This group configuration update is still in
progress
+view_group_resConfig_table_statusNochange = No changes were made to this group
configuration
+view_group_resConfig_table_statusSuccess = This group configuration update was
successful
+view_group_resConfig_table_title = Group Resource Configuration History
+view_group_resConfig_table_viewMemberHistory = View Member History
+view_group_resConfig_table_viewSettings = View Settings
+view_group_resConfig_view_groupProperties = Group Properties
+view_group_resConfig_view_noperm = You do not have permissions to see the resource
configuration settings
+view_group_summary_compatible = Compatible
+view_group_summary_descUpdateFailure = Failed to change the description of the resource
group with ID [{0}]~
+view_group_summary_descUpdateSuccessful = You have changed the description of this
resource group~
+view_group_summary_dynamic = Dynamic~
+view_group_summary_dynamicNote = Dynamic group names and descriptions are managed, and
therefore are not editable~
+view_group_summary_groupDefinition = Group Definition~
+view_group_summary_memberCount = Member Count~
+view_group_summary_memberType = Member Type~
+view_group_summary_mixed = Mixed~
+view_group_summary_nameUpdateFailure = Failed to change the name of the resource group
with ID [{0}] - could not change from [{1}] to [{2}]~
+view_group_summary_nameUpdateSuccessful = You have changed the name of the resource group
with ID [{0}] from [{1}] to [{2}]~
+view_group_summary_recursive = Recursive~
+view_helpTop_description = This section provides access to documentation, tutorials,
version, and other helpful information.
+view_help_section_product = Product
+view_help_section_product_about = About
+view_inventory_adq = Discovery Queue~
+view_inventory_allGroups = All Groups~
+view_inventory_allResources = All Resources~
+view_inventory_cannotGetGlobalPerms = Could not determine global permissions - assuming
none.~
+view_inventory_collectionInterval = Collection Interval~
+view_inventory_downServers = Down Servers~
+view_inventory_dynagroupDefs = Dynagroup Definitions~
+view_inventory_eventDetails_loadFailed = An error occurred loading the event details~
+view_inventory_eventHistory_deleteFailed = Failed to deleted selected events for [{0}]~
+view_inventory_eventHistory_deleteSuccessful = You have successfully deleted [{0}] events
for [{1}]~
+view_inventory_eventHistory_details = Details~
+view_inventory_eventHistory_detailsFilter = Details Filter~
+view_inventory_eventHistory_groupEventHistory = Group Event History~
+view_inventory_eventHistory_purgeFailed = Failed to purge events for [{0}]~
+view_inventory_eventHistory_purgeSuccessful = You have successfully purged [{0}] events
for [{1}]~
+view_inventory_eventHistory_resourceEventHistory = Resource Event History~
+view_inventory_eventHistory_severity = Severity~
+view_inventory_eventHistory_severityFilter = Severity Filter~
+view_inventory_eventHistory_sourceFilter = Source Filter~
+view_inventory_eventHistory_sourceLocation = Source Location~
+view_inventory_eventHistory_timestamp = Timestamp~
+view_inventory_groups = Groups~
+view_inventory_groups_children = Children~
+view_inventory_groups_deleteFailed = Failed to delete the selected resource groups~
+view_inventory_groups_deleteSuccessful = You have successfully deleted the selected
resource groups~
+view_inventory_groups_descendants = Descendants~
+view_inventory_groups_loadFailed = Failed to load group composite data~
+view_inventory_groups_resourceGroups = Resource Groups~
+view_inventory_mixed = mixed~
+view_inventory_platforms = Platforms~
+view_inventory_problemGroups = Problem Groups~
+view_inventory_resource_loadFailed = Resource with id [{0}] does not exist or is not
accessible~
+view_inventory_resources_deleteConfirm = Are you sure you want to delete the selected
resources?~
+view_inventory_resources_deleteFailed = Failed to delete the selected resources~
+view_inventory_resources_deleteSuccessful = You have successfully deleted the selected
resources~
+view_inventory_resources_loadFailed = Failed to load resource composite data~
+view_inventory_resources_title = Member Resources~
+view_inventory_resources_title_children = Child Resources~
+view_inventory_resources_title_members = Member Resources~
+view_inventory_resources_uninventoryConfirm = Are you sure you want to uninventory the
selected resources? Note that if a selected resource still exists, then it will get
rediscovered during its agent''s next discovery scan.
+view_inventory_resources_uninventoryFailed = Failed to uninventory the selected
resources
+view_inventory_resources_uninventorySuccessful = You have successfully uninventoried the
selected resources
+view_inventory_sectionHelp = From this section, newly discovered Resources, inventoried
Resources, and Groups can be viewed and managed.~
+view_inventory_servers = Servers~
+view_inventory_services = Services~
+view_inventory_summary_agent_error1 = Failed to locate agent managing resource id~
+view_inventory_summary_agent_error2 = Failed to ping agent managing resource id~
+view_inventory_summary_agent_error3 = You do not have permission to view details for this
Agent.
+view_inventory_summary_agent_fullEnpoint = Full Endpoint~
+view_inventory_summary_agent_fullEnpoint_err1 = !No remote endpoint associated with this
resource!~
+view_inventory_summary_agent_last_title = Last Received Availability Report~
+view_inventory_summary_agent_status_title = Agent Communications Status~
+view_inventory_summary_agent_title = Agent Managing this Resource~
+view_inventory_unavailableServers = Unavailable Servers
+view_leftNav_unknownPage = P\u00E1gina desconhecida [{0}] para a se\u00E7\u00E3o [{1}] -
URL inv\u00E1lida.
+view_login_invalidEmail = Endere\u00E7o de e-mail inv\u00E1lido
+view_login_login = Entrar
+view_login_logout = Sair
+view_login_noBackend = Fonte de Dados indispon\u00EDvel.
+view_login_noLdap = Note: Optional retrieval of ldap details unsuccessful. Manual entry
is required.~
+view_login_noUser = Usu\u00E1rio ou senha inv\u00E1lidos.
+view_login_prompt = Favor efetuar Login
+view_login_registerLater = (Sair - Concluir registro mais tarde.)
+view_login_registerLdapSuccess = Novo usu\u00E1rios do LDAP registrado com sucesso.
+view_login_registerUser = Registrar Usu\u00E1rio
+view_login_welcome = Bem Vindo
+view_login_welcomeMsg = Seja Bem Vindo ao JBoss ON! <br/><br/> Informe ou
altere os seguintes campos para completar o processo de registro.<br/> Clique em
"OK" para acessar o sistema.<br/><br/>
+view_measureRange_day = 1 Dia
+view_measureRange_days = {0} Dias
+view_measureRange_hour = 1 Hora
+view_measureRange_hours = {0} Horas
+view_measureRange_last = \u00DAltimo
+view_measureRange_minutes = {0} Minutos
+view_measureRange_range = Faixa
+view_measureRange_simple = Simples...
+view_measureRange_start = Time Range - Start
+view_measureTable_chartMetricValues = Chart Selected Metrics
+view_measureTable_getLive = Get Live Value
+view_measureTable_getLive_failure = Cannot get live values for those metrics. Make sure
the agent is running and the managed resource is up.
+view_measureTable_live_title = Live Data
+view_measure_nan = --dados indispon\u00EDveis--
+view_measurementOob_title = M\u00E9tricas Suspeitas~
+view_menuBar_help = Ajuda~
+view_menuBar_logout = Sair
+view_messageCenter_button_messages = Mensagens~
+view_messageCenter_clearAllMessages = Clear All Messages
+view_messageCenter_lastNMessages = Last {0} Messages
+view_messageCenter_maxMessages = Max Messages
+view_messageCenter_messageBarShowDetails = Show Details
+view_messageCenter_messageDetail = Detalhe~
+view_messageCenter_messageSeverity = Severidade~
+view_messageCenter_messageTime = Tempo~
+view_messageCenter_messageTitle = Centro de Mensagens~
+view_messageCenter_noRecentMessages = N\u00E3o existem Mensagens Recentes~
+view_messageCenter_stackTraceFollows = --- STACK TRACE FOLLOWS ---
+view_metric_traits = Traits~
+view_metric_viewTraitHistory = Value History for Trait [{0}]~
+view_operationCreateWizard_button_execute = Execute~
+view_operationCreateWizard_button_executeImmediately = Execute Immediately~
+view_operationCreateWizard_error_scheduleOperationFailure = Failed to schedule operation
execution.~
+view_operationCreateWizard_header = Execute {0} on {1}~
+view_operationCreateWizard_message_scheduleOperationSuccess = Schedule operation [{0}]
on Resource [{1}] with cron string [{2}].~
+view_operationCreateWizard_parametersStep_name = Operation Parameters~
+view_operationCreateWizard_parametersStep_noParameters = This operation does not take any
parameters.~
+view_operationCreateWizard_schedulingStep_label_daily = Daily~
+view_operationCreateWizard_schedulingStep_label_dailyAt = Daily At~
+view_operationCreateWizard_schedulingStep_label_date = Date~
+view_operationCreateWizard_schedulingStep_label_dayOfMonth = Day of Month~
+view_operationCreateWizard_schedulingStep_label_dayOfWeek = Day of Week~
+view_operationCreateWizard_schedulingStep_label_endDate = End Date~
+view_operationCreateWizard_schedulingStep_label_everyNMinutes = Every n Minutes~
+view_operationCreateWizard_schedulingStep_label_hourly = Hourly~
+view_operationCreateWizard_schedulingStep_label_hourlyAt = Hourly At~
+view_operationCreateWizard_schedulingStep_label_minuteInterval = Minute Interval~
+view_operationCreateWizard_schedulingStep_label_minuteOfHour = Minute of Hour~
+view_operationCreateWizard_schedulingStep_label_monthly = Monthly~
+view_operationCreateWizard_schedulingStep_label_monthlyOn = Monthly On~
+view_operationCreateWizard_schedulingStep_label_nMinutes = n Minutes~
+view_operationCreateWizard_schedulingStep_label_onceAt = Once At~
+view_operationCreateWizard_schedulingStep_label_recurrence = Recurrence~
+view_operationCreateWizard_schedulingStep_label_recurrenceEnd = Recurrence End~
+view_operationCreateWizard_schedulingStep_label_runAt = Run At~
+view_operationCreateWizard_schedulingStep_label_schedule = Schedule~
+view_operationCreateWizard_schedulingStep_label_start = Start~
+view_operationCreateWizard_schedulingStep_label_startDate = Start Date~
+view_operationCreateWizard_schedulingStep_label_time = Time~
+view_operationCreateWizard_schedulingStep_label_timeOfDay = Time of Day~
+view_operationCreateWizard_schedulingStep_label_timePeriod = Time Period~
+view_operationCreateWizard_schedulingStep_label_weekly = Weekly~
+view_operationCreateWizard_schedulingStep_label_weeklyOn = Weekly On~
+view_operationCreateWizard_schedulingStep_label_willExecuteImmediately = Will execute
immediately~
+view_operationCreateWizard_schedulingStep_name = Schedule~
+view_operationCreateWizard_title = Operation Wizard~
+view_operationHistoryDetails_dateCompleted = Date Completed
+view_operationHistoryDetails_dateSubmitted = Date Submitted
+view_operationHistoryDetails_error_fetchFailure = Failure loading operation history.~
+view_operationHistoryDetails_noResults = This operation does not return any results.
+view_operationHistoryDetails_operation = Operation
+view_operationHistoryDetails_parameters = Parameters
+view_operationHistoryDetails_requestor = Requestor
+view_operationHistoryDetails_results = Results
+view_operationHistoryDetails_status = Status
+view_operationHistoryList_button_forceDelete = Force Delete
+view_operationHistoryList_button_runOperation = Run Operation~
+view_operationHistoryList_notYetStarted = not yet started
+view_operationHistoryList_title = Operation History~
+view_operationScheduleDetails_enterParametersBelow = Enter parameters below...
+view_operationScheduleDetails_fieldDefault_description = Select an operation to see its
description.
+view_operationScheduleDetails_fieldDefault_parameters = Select an operation to see its
parameters.
+view_operationScheduleDetails_fieldHelp_description = an optional description of this
scheduled operation (e.g. nightly maintenance app server restart)
+view_operationScheduleDetails_fieldHelp_timeout = a time duration - if specified, if the
duration elapses before a scheduled operation execution has completed, the RHQ Server will
timeout the operation and consider it to have failed; note, it is usually not possible to
abort the underlying managed resource operation if it was already initiated
+view_operationScheduleDetails_field_description = Description
+view_operationScheduleDetails_field_parameters = Parameters
+view_operationScheduleDetails_field_timeout = Timeout
+view_operationScheduleDetails_noParameters = This operation does not take any
parameters.
+view_operationScheduleDetails_operationSchedule = Operation Schedule
+view_portlet_autodiscovery_config_platform_selection = Number of platforms to display~
+view_portlet_autodiscovery_help_msg = This portlet offers the ability to import newly
discovered resources into the inventory for monitoring and management or to ignore them
from further action.~
+view_portlet_autodiscovery_setting_platforms = discovered platforms
+view_portlet_autodiscovery_title = Discovery Queue~
+view_portlet_configure_definitionDesc = The configuration settings for the portlet.
+view_portlet_configure_definitionTitle = Portlet Configuration
+view_portlet_configure_needed = Click the Settings button to configure this portlet.
+view_portlet_configure_notNeeded = Configuration is not necessary for this portlet.
+view_portlet_defaultName_autodiscovery = Discovery Queue
+view_portlet_defaultName_favoriteResources = Favorite Resources
+view_portlet_defaultName_groupMetric = Resource Group Metric Graph
+view_portlet_defaultName_group_alerts = Group: Alerts
+view_portlet_defaultName_group_bundles = Group: Bundle Deployments
+view_portlet_defaultName_group_config_updates = Group: Configuration Updates
+view_portlet_defaultName_group_events = Group: Event Counts
+view_portlet_defaultName_group_metrics = Group: Metrics
+view_portlet_defaultName_group_oobs = Group: OOB Conditions
+view_portlet_defaultName_group_operations = Group: Operations
+view_portlet_defaultName_group_pkg_hisory = Group: Package History
+view_portlet_defaultName_inventorySummary = Inventory Summary
+view_portlet_defaultName_mashup = Mashup
+view_portlet_defaultName_message = Message
+view_portlet_defaultName_operations = Recent Operations
+view_portlet_defaultName_platformSummary = Platform Utilization
+view_portlet_defaultName_problemResources = Alerted or Unavailable Resources
+view_portlet_defaultName_recentAlerts = Recent Alerts
+view_portlet_defaultName_recentlyAddedResources = Recently Added Resources
+view_portlet_defaultName_resourceMetric = Resource Metric Graph
+view_portlet_defaultName_resource_alerts = Resource: Alerts
+view_portlet_defaultName_resource_bundles = Resource: Bundle Deployments
+view_portlet_defaultName_resource_config_updates = Resource: Configuration Updates
+view_portlet_defaultName_resource_events = Resource: Event Counts
+view_portlet_defaultName_resource_metrics = Resource: Measurements
+view_portlet_defaultName_resource_oobs = Resource: OOB Metrics
+view_portlet_defaultName_resource_operations = Resource: Operations
+view_portlet_defaultName_resource_pkg_hisory = Resource: Package History
+view_portlet_defaultName_tagCloud = Tag Count
+view_portlet_factory_invalidPortlet = This is an obsolete portlet that is no longer
valid. Please delete it.
+view_portlet_favoriteResources_msg = This portlet displays your favorite resources~
+view_portlet_favoriteResources_title = Favorite Resources~
+view_portlet_generic_help = No help available for this portlet~
+view_portlet_generic_unconfigured = No settings available for this portlet~
+view_portlet_graph_configure_metricDefinition_graph = The metric definition id to graph~
+view_portlet_graph_configure_resource_graph = The resource to graph~
+view_portlet_graph_configure_title = Graph Config~
+view_portlet_graph_configure_title_desc = Configuration of the graph portlet~
+view_portlet_graph_help_msg = This Portlet supports the graphing of a resource metric.~
+view_portlet_graph_help_title = Graph Portlet~
+view_portlet_graph_help_unconfigured = This graph is unconfigured, click the settings
button to configure.~
+view_portlet_graph_title = Resource Graph~
+view_portlet_help_autodiscovery = This portlet allows import or ignore of newly
discovered resources. Imported resources are added to inventory for monitoring and
management. Ignored resources are not imported and are hidden from view unless explicitly
unignored.
+view_portlet_help_bundle_deps = This portlet shows relevant bundle deployments based on
display criteria configured.
+view_portlet_help_config_updates = This portlet displays recent configuration changes
consistent with configuration settings.
+view_portlet_help_eventcounts = This portlet displays Event counts consistent with
display criteria configured.
+view_portlet_help_favoriteResources = This portlet displays the current user''s
favorite resources.
+view_portlet_help_graph = This portlet displays the resource metric graph.
+view_portlet_help_inventorySummary = This portlet displays a short summary of the current
user''s viewable inventory and metric collection rate.
+view_portlet_help_mashup = This portlet displays the returned content of a remote HTTP
request (via an iframe).
+view_portlet_help_message = This portlet displays a static HTML message. The
<i>message</i> property must be configured.
+view_portlet_help_metrics = This portlet graphs relevant recent metric data based on
display criteria configured.
+view_portlet_help_none = There is no help available for this portlet.
+view_portlet_help_oobs = This portlet displays OOB(Out of Bound) metric conditions.
+view_portlet_help_operations = This portlet displays the most recently executed
operations for the current user''s inventory.
+view_portlet_help_operations_criteria = This portlet displays Operations consistent with
display criteria configured.
+view_portlet_help_pkg_history = This portlet shows relevant package history based on
display criteria configured.
+view_portlet_help_platformSummary = This portlet displays utilization data (such as
current CPU and memory usage) for platform resources that are accessible by the current
user.
+view_portlet_help_problemResources = This portlet displays the current user''s
alerted or unavailable resources.
+view_portlet_help_recentAlerts = This portlet displays alerts recently fired on the
current user''s viewable inventory.
+view_portlet_help_recentlyAdded = This portlet displays resources that have recently been
imported into inventory.
+view_portlet_help_scheduledOperations = This portlet displays the next scheduled
operations for the current user''s inventory.
+view_portlet_help_tagCloud = This portlet displays the relative tag counts for the
current user''s inventory.
+view_portlet_inventory_error1 = Failed to retrieve inventory summary~
+view_portlet_inventory_tooltip_collapse = Click to hide details for this resource.
+view_portlet_inventory_tooltip_expand = Click to show more details for this resource.
+view_portlet_mashup_config_title = MashupPorlet Configuration~
+view_portlet_mashup_config_title_desc = The configuration settings for the mashup
portlet.~
+view_portlet_mashup_help = This portlet can include a web page via an HTTP request into
an iframe on the dashboard.~
+view_portlet_mashup_unconfigured = Page address not yet configured, click the settings
button to setup this portlet.~
+view_portlet_message_config_title = MessagePortlet Configuration~
+view_portlet_message_config_title_desc = The configuration settings for the message
portlet.~
+view_portlet_message_help = This portlet can display an HTML message on the dashboard.~
+view_portlet_message_title = Message~
+view_portlet_message_unconfigured = Message not yet configured, click the settings button
to setup this portlet.~
+view_portlet_operations_config_completed = completed operations~
+view_portlet_operations_config_completed_enable = Whether to enable completed operations
results grouping for dashboard.~
+view_portlet_operations_config_completed_maximum = Maximum number of Completed operations
to display.~
+view_portlet_operations_config_scheduled_enable = Whether to enable scheduled operations
results grouping for dashboard.~
+view_portlet_operations_config_scheduled_maximum = Maximum number of Scheduled operations
to display.~
+view_portlet_operations_config_show_last = show Last~
+view_portlet_operations_config_show_next = show Next~
+view_portlet_operations_config_title = OperationsPortlet Configuration~
+view_portlet_operations_config_title_desc = The configuration settings for the Operations
portlet.~
+view_portlet_operations_disabled = (Results currently disabled. Change settings to enable
results.~
+view_portlet_operations_help_msg = This portlet displays both operations that have
occurred and are scheduled to occur.~
+view_portlet_platform_help_msg = This portlet displays information about platforms in
inventory.~
+view_portlet_platform_platform_error_1 = Failed to load platform metrics~
+view_portlet_platform_title = Platforms Summary~
+view_portlet_platform_type_error_1 = Could not load type data~
+view_portlet_problemResources_config_display_maximum = Maximum number of Problem
resources to display.
+view_portlet_problemResources_config_display_range = Show problem resources going back
this many hours.
+view_portlet_problemResources_config_display_range2 = From {0} to {1}
+view_portlet_problemResources_maxDisplaySetting = maximum resources.
+view_portlet_problem_resources_config_display_maximum = Maximum number of Problem
resources to display.~
+view_portlet_problem_resources_config_display_range = Show problem resources going back
this many hours.~
+view_portlet_problem_resources_config_display_range2 = From {0} to {1}~
+view_portlet_problem_resources_config_problem_label = problem resources on dashboard.~
+view_portlet_problem_resources_config_title = ProblemResourcesPortlet Configuration~
+view_portlet_problem_resources_config_title_desc = The configuration settings for the
Problem resources portlet.~
+view_portlet_problem_resources_help = This portlet displays resources that have reported
alerts or Down availability.~
+view_portlet_problem_resources_title = Has Alerts or Currently Unavailable~
+view_portlet_recentAlerts_config_members = Select Members~
+view_portlet_recentAlerts_config_priority_label = priority Alerts,~
+view_portlet_recentAlerts_config_when = within the past~
+view_portlet_recentAlerts_fail_msg = Failed to load resources assigned for alert
filtering.
+view_portlet_recentAlerts_help_msg = Displays recent alerts fired on resources visible to
the current user login.~
+view_portlet_recentAlerts_title = Recent Alerts~
+view_portlet_recentlyAdded_approved_platforms = recently approved platforms on
dashboard.~
+view_portlet_recentlyAdded_error1 = Failed to load recently added resources~
+view_portlet_recentlyAdded_help_msg = This portlet displays resources that have recently
been imported into the inventory.~
+view_portlet_recentlyAdded_setting_addedPlatforms = recently added platforms
+view_portlet_recentlyAdded_title = Recently Added Portlet~
+view_portlet_results_empty = No results found using specified criteria.
+view_portlet_tagCloud_help = portlet displays the relative tag counts in the system
visible to the current user.~
+view_portlet_tagCloud_title = TagCloud~
+view_remoteAgentInstall_agentStatus = Status do Agente
+view_remoteAgentInstall_agentStatusDefault = -Pressione o Bot\u00E3o Atualizar Status-
+view_remoteAgentInstall_buttonFindAgent = Procurar Agente
+view_remoteAgentInstall_connInfo = Informa\u00E7\u00E3o de Conex\u00E3o
+view_remoteAgentInstall_error_1 = Ocorreu um erro ao tentar localizar o caminho de
instala\u00E7\u00E3o do agente
+view_remoteAgentInstall_error_2 = N\u00E3o foi poss\u00EDvel encontrar uma
instala\u00E7\u00E3o do agente nos locais comuns
+view_remoteAgentInstall_error_3 = N\u00E3o foi poss\u00EDvel encontar a
instala\u00E7\u00E3o do agente em [{0}]
+view_remoteAgentInstall_error_4 = Falha ao instalar o agente
+view_remoteAgentInstall_error_5 = Falha a iniciar o agente
+view_remoteAgentInstall_error_6 = Falha ao parar o agente
+view_remoteAgentInstall_installAgent = Instalar Agente
+view_remoteAgentInstall_installInfo = Informa\u00E7\u00E3o sobre a instala\u00E7\u00E3o
do Agente
+view_remoteAgentInstall_installPath = Caminho de Instala\u00E7\u00E3o do Agente
+view_remoteAgentInstall_owner = Propriet\u00E1rio
+view_remoteAgentInstall_promptHost = O host onde o agente est\u00E1 ou ser\u00E1
instalado
+view_remoteAgentInstall_promptInstallPath = Onde o agente est\u00E1 ou ser\u00E1
instalado. Caso n\u00E3o tenha certeza onde o agente est\u00E1 instalado, informe um
diret\u00F3rio pai e clique em ''Procurar Agente'' para encontrar o
agente. Caso informe um diret\u00F3rio vazio, a busca pelo agente ser\u00E1 realizada em
locais de instala\u00E7\u00E3o comuns.
+view_remoteAgentInstall_promptPassword = Credenciais usadas para autentica\u00E7\u00E3o
do usu\u00E1rio no host via SSH
+view_remoteAgentInstall_promptPort = Porta onde o servidor SSH escuta. Se n\u00E3o
especificada, o padr\u00E3o \u00E9 22
+view_remoteAgentInstall_promptUser = Nome do usu\u00E1rio informado nas credenciais
passadas ao host via SSH
+view_remoteAgentInstall_result = Resultado
+view_remoteAgentInstall_resultCode = ResultCode
+view_remoteAgentInstall_startAgent = Iniciar Agente
+view_remoteAgentInstall_startAgentResults = resultado da inicializa\u00E7\u00E3o do
Agente: [{0}]
+view_remoteAgentInstall_step = Step
+view_remoteAgentInstall_stopAgent = Parar Agente
+view_remoteAgentInstall_stopAgentResults = resultado do encerramento do Agente: [{0}]
+view_remoteAgentInstall_success = Instala\u00E7\u00E3o do Agente finalizada
+view_remoteAgentInstall_updateStatus = Status da Atualiza\u00E7\u00E3o
+view_reportsTop_description = This section provides access to global reports.~
+view_reportsTop_title = Relat\u00F3rios
+view_reports_alertDefinitions = Defini\u00E7\u00E3o de Alertas~
+view_reports_alertDefinitions_parentHover = Click to go to the parent alert definition
+view_reports_alertDefinitions_resTypeLoadError = Cannot get the template resource type -
unable to view the alert template.
+view_reports_inventorySummary_failFetch = Failed to get inventory summary
+view_reports_platforms = Utiliza\u00E7\u00E3o de Mem\u00F3ria e CPU~
+view_reports_subsystems = Subsistemas~
+view_resourceResourceGroupList_error_fetchFailure = Failed to fetch Resource''s
groups.~
+view_resourceResourceGroupList_error_updateFailure = Failed to update assigned Resource
groups.~
+view_resourceResourceGroupList_message_updateSuccess = Group membership updated for
[{0}].
+view_resource_inventory_activity_changed_by = Changed by
+view_resource_inventory_activity_criteria_no_recent_events = No event counts based off
display criteria.
+view_resource_inventory_activity_no_recent_alerts = No recent alerts
+view_resource_inventory_activity_no_recent_bundle_deploy = No recent bundle deployments
+view_resource_inventory_activity_no_recent_config_history = No configuration change
history
+view_resource_inventory_activity_no_recent_events = No events in the last 24 hours
+view_resource_inventory_activity_no_recent_metrics = This resource has no recent metrics
+view_resource_inventory_activity_no_recent_oob = No OOB conditions found
+view_resource_inventory_activity_no_recent_operations = No recent operation history
+view_resource_inventory_activity_no_recent_pkg_history = No recent package history
+view_resource_inventory_childhistory_createdChild = Created Child
+view_resource_inventory_childhistory_deletedChild = Deleted Child
+view_resource_inventory_childhistory_filterTitle = Past N Days
+view_resource_inventory_childhistory_status_invalidArtifact = Invalid Artifact
+view_resource_inventory_childhistory_status_invalidConfig = Invalid Configuration
+view_resource_monitor_availability_loadFailed = Failed to load availability history~
+view_resource_monitor_calltime_average = Average~
+view_resource_monitor_calltime_count = Count~
+view_resource_monitor_calltime_destination = Call Destination~
+view_resource_monitor_calltime_editFailed = Call time data can not be edited~
+view_resource_monitor_calltime_loadFailed = Could not load call time data~
+view_resource_monitor_calltime_lookupFailed = Could not load resource for call time~
+view_resource_monitor_calltime_maximum = Maximum~
+view_resource_monitor_calltime_minimum = Minimum~
+view_resource_monitor_calltime_title = Call Time Data~
+view_resource_monitor_calltime_total = Total~
+view_resource_monitor_detailed_graph_label = Detailed Graph~
+view_resource_monitor_graph_instructions = Point your mouse to a data point on the
chart~
+view_resource_monitor_graph_live_tooltip = Click for a live graph of current values~
+view_resource_monitor_graphs_loadFailed = Failed to load graph data~
+view_resource_monitor_graphs_lookupFailed = Failed to find resource for graph~
+view_resource_monitor_graphs_noneAvailable = No graphs available~
+view_resource_monitor_schedules_title = Resource Metric Collection Schedules~
+view_resource_monitor_table_alerts = Alerts
+view_resource_monitor_table_avg = Average
+view_resource_monitor_table_last = Last
+view_resource_monitor_table_max = Maximum
+view_resource_monitor_table_min = Minimum
+view_resource_title_component_errors_tooltip = Shows managed component errors. Click for
details~
+view_resource_title_tagUpdateFailed = Failed to update resource tags~
+view_searchBar_defaultPattern = definir nome para o padr\u00E3o
+view_searchBar_error_selectSavedSearch = ''Erro ao selecionar a
pesquisa''
+view_searchBar_query = Pesquisa
+view_searchBar_resourceGroups = Grupos de Recursos
+view_searchBar_resources = Recursos
+view_searchBar_welcomeMessage = procurar por {0}s
+view_searchGUI_loginStatus = Imposs\u00EDvel determinar o status do login, verifique o
status do servidor~
+view_selector_assigned = Associado {0}
+view_selector_available = Dispon\u00EDvel {0}
+view_subTab_error_disabled = N\u00E3o \u00E9 poss\u00EDvel selecionar uma subTab
desabilidada [{0}].
+view_summaryDashboard_resetConfirm = Reset to default summary dashboard (lose local
changes)?
+view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of
Resource with id {0} from [{1}] to [{2}].~
+view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of
Resource with id {0} from [{1}] to [{2}].~
+view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with
id {0} from [{1}] to [{2}].~
+view_summaryOverviewForm_error_traitsLoadFailure = Failed to load traits for {0}.~
+view_summaryOverviewForm_field_description = Description~
+view_summaryOverviewForm_field_location = Location~
+view_summaryOverviewForm_field_name = Name~
+view_summaryOverviewForm_field_parent = Parent~
+view_summaryOverviewForm_field_type = Type~
+view_summaryOverviewForm_field_version = Version~
+view_summaryOverviewForm_header_summary = Summary~
+view_summaryOverviewForm_label_plugin = Plugin:
+view_summaryOverviewForm_label_type = Type:
+view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with
id {0} was changed from [{1}] to [{2}].~
+view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0}
was changed from [{1}] to [{2}].~
+view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was
changed from [{1}] to [{2}].~
+view_summaryOverview_header_detectedErrors = Detected Errors~
+view_summaryOverview_title_errorDetailsWindow = Error Details~
+view_summaryOverview_tooltip_detectedErrors = Click on the rows to see the error
details.~
+view_tableSection_backButton = Voltar \u00E0 Lista
+view_tableSection_error_badId = Can not show detail for [{0}]. Illegal 'id':
[{1}]. Please report this bug~
+view_tableSection_error_noId = Table [{0}] record is missing 'id' attribute -
please report this bug.~
+view_table_drawFail = Failed to draw Table [{0}].
+view_table_matchingRows = Matching Rows: {0} (selected: {1})
+view_table_totalRows = Total de Linhas: {0} (selecionada: {1})
+view_tabs_common_activity = Activity
+view_tabs_common_agent = Agent
+view_tabs_common_alerts = Alerts~
+view_tabs_common_availability = Availability~
+view_tabs_common_calltime = Calltime~
+view_tabs_common_child_history = Child History~
+view_tabs_common_child_resources = Child Resources~
+view_tabs_common_configuration = Configuration~
+view_tabs_common_connectionSettings = Connection Settings~
+view_tabs_common_connectionSettingsHistory = Connection Settings History~
+view_tabs_common_content = Content~
+view_tabs_common_current = Current~
+view_tabs_common_dashboard = Dashboard~
+view_tabs_common_definitions = Definitions~
+view_tabs_common_deployed = Deployed~
+view_tabs_common_events = Events~
+view_tabs_common_graphs = Graphs~
+view_tabs_common_group_members = Group Members
+view_tabs_common_group_membership = Group Membership~
+view_tabs_common_groups = Groups~
+view_tabs_common_history = History~
+view_tabs_common_inventory = Inventory~
+view_tabs_common_members = Members~
+view_tabs_common_monitoring = Monitoring~
+view_tabs_common_new = New~
+view_tabs_common_operations = Operations~
+view_tabs_common_overview = Overview~
+view_tabs_common_schedule = Schedule
+view_tabs_common_scheduled = Scheduled~
+view_tabs_common_schedules = Schedules~
+view_tabs_common_subscriptions = Subscriptions~
+view_tabs_common_summary = Summary~
+view_tabs_common_tables = Tables~
+view_tabs_common_timeline = Timeline~
+view_tabs_common_traits = Traits~
+view_tabs_invalidSubTab = Invalid subtab: {0}
+view_tabs_invalidTab = Invalid tab: {0}
+view_tagCloud_deleteTag = Delete Tag
+view_tagCloud_deleteTagFailure = Failed to delete the tag [{0}]
+view_tagCloud_deleteTagSuccess = You successfully deleted the tag [{0}]
+view_tagCloud_error_fetchFailure = Falha ao carregar etiquetas (tags).~
+view_tagCloud_error_tagUsedCount = Etiqueta (tag) usada {0} vezes.~
+view_tagCloud_title = Nuvem de Tags~
+view_taggedResources_title = Recursos Etiquetados~
+view_tags_error_1 = Failed to load Tags~
+view_tags_tags = Tags~
+view_tags_title = Tags:~
+view_tags_tooltip_1 = Click to remove this Tag~
+view_tags_tooltip_2 = Click to edit Tags~
+view_tags_tooltip_3 = Enter a Tag in the format: (namespace:)(semantic = )tagname (e.g.
it:env = QA, or owner = John)
+view_testTop_description = Esta se\u00E7\u00E3o cont\u00E9m p\u00E1ginas para
realiza\u00E7\u00E3o de testes em v\u00E1rios componentes UI.~
+view_testTop_title = Teste~
+view_titleBar_common_addedFav = You have added [{0}] as a favorite~
+view_titleBar_common_addedFavFailure = Failed to add [{0}] as a favorite~
+view_titleBar_common_clickToAddFav = Click to add this as a favorite~
+view_titleBar_common_clickToRemoveFav = Click to remove this as a favorite~
+view_titleBar_common_loadTagsFailure = Failed to load the tags for [{0}]~
+view_titleBar_common_removedFav = You have removed [{0}] as one of your favorites~
+view_titleBar_common_removedFavFailure = Failed to remove [{0}] as one of your
favorites~
+view_titleBar_common_updateTagsFailure = Failed to update the tags for [{0}]~
+view_titleBar_common_updateTagsSuccessful = The tags for [{0}] have been updated~
+view_titleBar_group_failInfo = Failed to get general info on group [{0}] with ID [{1}]
+view_titleBar_group_summary_collapsedTooltip = Click to show more details for this group
+view_titleBar_group_summary_expandedTooltip = Click to hide details for this group
+view_tree_common_contextMenu_addChartToDashboard = Add chart to dashboard [{0}]~
+view_tree_common_contextMenu_chart = Chart~
+view_tree_common_contextMenu_editPluginConfiguration = Edit [{0}] Plugin Configuration~
+view_tree_common_contextMenu_editResourceConfiguration = Edit [{0}] Resource
Configuration~
+view_tree_common_contextMenu_groupGraph = Group Metric Graph
+view_tree_common_contextMenu_loadFail_children = Failed to load platform manual add
children
+view_tree_common_contextMenu_loadFail_dashboards = Failed to load user dashboards
+view_tree_common_contextMenu_loadFail_group = Failed to load group for context menu
+view_tree_common_contextMenu_loadFailed_dashboard = Failed to load user dashboards
+view_tree_common_contextMenu_loadFailed_manualAddChildren = Failed to load platform
manual add children~
+view_tree_common_contextMenu_measurements = Measurements~
+view_tree_common_contextMenu_operations = Operations~
+view_tree_common_contextMenu_operations_loadFailed = Failure to start wizard for running
operations~
+view_tree_common_contextMenu_pluginConfiguration = Plugin Configuration~
+view_tree_common_contextMenu_resourceConfiguration = Resource Configuration~
+view_tree_common_contextMenu_resourceGraph = Resource Metric Graph
+view_tree_common_contextMenu_saveChartToDashboardFailure = Failed to save the dashboard~
+view_tree_common_contextMenu_saveChartToDashboardSuccessful = You have saved dashboard
[{0}]~
+view_tree_common_contextMenu_type_name_label = Type: {0}
+view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group
+view_tree_common_loadFailed_children = Failed to load children for node~
+view_tree_common_loadFailed_create = Failed to create view for this node~
+view_tree_common_loadFailed_descendants = Failed to load descendants for tree~
+view_tree_common_loadFailed_generic = Failed to load data for tree~
+view_tree_common_loadFailed_group = Failed to load group with id [{0}]
+view_tree_common_loadFailed_groupTree = Failed to load group tree
+view_tree_common_loadFailed_node = Failed to load data for this node~
+view_tree_common_loadFailed_root = Failed to load root for tree~
+view_tree_common_loadFailed_selection = Failed to select this node~
+view_tree_common_loadFailed_update = Failed to update view for this node~
+view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing
group. key: [{0}]
+view_type_parentId = Parent ID~
+view_type_resourceTypes = Resource Types~
+view_type_typeTreeLoadFailure = Failed to load resource type tree data~
+view_upload_alreadyUploaded = File has already been uploaded~
+view_upload_bundleDistFile = Distribution File~
+view_upload_error_bundleDistFile = Error uploading Bundle Distribution File~
+view_upload_error_file = Error uploading file~
+view_upload_error_fileName = Error uploading file [{0}]~
+view_upload_error_fileName_2 = Error uploading file [{0}], check for invalid file path.~
+view_upload_error_packageVersionFile = Error uploading Package Version File~
+view_upload_error_results = Error uploading file, unexpected results: [{0}]~
+view_upload_inProgress = Can not submit, upload is currently in progress~
+view_upload_prompt_1 = [{0}] File to Upload~
+view_upload_prompt_2 = File to Upload~
+view_upload_success = File successfully uploaded~
+view_upload_tooltip_1 = Select a file to upload, then click Upload or Next~
+view_upload_tooltip_1a = Select a file to upload, then click Upload or Next
+view_upload_tooltip_1b = Select a file to upload, then click Next
+view_upload_tooltip_2 = File upload had previously failed~
+view_upload_upload = Upload~
+view_upload_uploadFile = UploadFile~
+widget_colorPicker_tooltip = Clique para selecionar uma nova cor
+widget_durationItem_inputUnitLessThanTargetUnit = A unidade de entrada \u00E9 menor que a
unidade final.
+widget_durationItem_unitTypeNotSupported = Tipo de unidade [{0}] n\u00E3o suportada por
este Item de Dura\u00E7\u00E3o.
+widget_jobTriggerEditor_fieldHelp_repeatDuration = permanecer executando esta
opera\u00E7\u00E3o por tantas vezes ou at\u00E9 o t\u00E9rmino deste tempo
+widget_jobTriggerEditor_fieldHelp_repeatInterval = qual a frequ\u00EAncia de
execu\u00E7\u00E3o da opera\u00E7\u00E3o
+widget_jobTriggerEditor_fieldHelp_startDelay = iniciar a execu\u00E7\u00E3o da
opera\u00E7\u00E3o ap\u00F3s passar esta quantidade de tempo
+widget_jobTriggerEditor_field_cronExpression = Express\u00E3o da Cron
+widget_jobTriggerEditor_field_mode = Agendar usando
+widget_jobTriggerEditor_field_repeatInterval_later = Sempre repetir
+widget_jobTriggerEditor_field_repeatInterval_now = Executar agora e sempre
+widget_jobTriggerEditor_field_startType = Executar
+widget_jobTriggerEditor_message_endTimeMustBeAfterStartTime = O t\u00E9rmino deve ser
ap\u00F3s o in\u00EDcio.
+widget_jobTriggerEditor_message_endTimeMustBeInFuture = O t\u00E9rmino deve ser no
futuro.
+widget_jobTriggerEditor_message_startTimeMustBeInFuture = O in\u00EDcio deve ser no
futuro.
+widget_jobTriggerEditor_tab_examples = Exemplos
+widget_jobTriggerEditor_tab_format = Formato
+widget_jobTriggerEditor_value_calendar = Calend\u00E1rio
+widget_jobTriggerEditor_value_cronExpression = Express\u00E3o da Cron
+widget_jobTriggerEditor_value_for = Para
+widget_jobTriggerEditor_value_in = em
+widget_jobTriggerEditor_value_indefinitely = Indefinidamente
+widget_jobTriggerEditor_value_later = Mais tarde
+widget_jobTriggerEditor_value_laterAndRepeat = Later & Repeat
+widget_jobTriggerEditor_value_now = Agora
+widget_jobTriggerEditor_value_nowAndRepeat = Agora & Repetir
+widget_jobTriggerEditor_value_on = em
+widget_jobTriggerEditor_value_until = At\u00E9
+widget_recordEditor_error_invalidViewPath = Caminho inv\u00E1lido: [{0}]
+widget_recordEditor_error_multipleRecords = Foram encontrados v\u00E1rios registros - era
esperado apenas um.
+widget_recordEditor_error_noRecords = Nenhum registro encontrado - era esperado
exatamente um.
+widget_recordEditor_error_operation = Falha na Opera\u00E7\u00E3o. Ocorreu um Erro
+widget_recordEditor_error_operationInvalidValues = Falha na Opera\u00E7\u00E3o - um ou
mais campos possuem valores inv\u00E1lidos
+widget_recordEditor_error_permissionCreate = Voc\u00EA n\u00E3o possui permiss\u00E3o
necess\u00E1ria para criar um novo [{0}]
+widget_recordEditor_error_unsupportedOperationType = Tipo de opera\u00E7\u00E3o n\u00E3o
suportada: [{0}]
+widget_recordEditor_info_recordCreatedConcise = {0} criado.
+widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] criado.
+widget_recordEditor_info_recordUpdatedConcise = {0} atualizado.
+widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] atualizado.
+widget_recordEditor_info_recordsDeletedConcise = {0} {1} exclu\u00EDdo.
+widget_recordEditor_info_recordsDeletedDetailed = {0} {1} exclu\u00EDdo: {2}.
+widget_recordEditor_label_loading = Carregar...
+widget_recordEditor_title_edit = Editar {0} [{1}]
+widget_recordEditor_title_new = Criar Novo {0}
+widget_recordEditor_title_view = Visualizar {0} [{1}]
+widget_recordEditor_warn_validation = Um ou mais campos possuem valores inv\u00E1lidos.
Este [{0}] n\u00E3o pode ser salvo at\u00E9 que os valores sejam corrigidos.
+widget_resourceFactoryWizard_archPrompt = Arquitetura do Pacote
+widget_resourceFactoryWizard_configTemplatePrompt = Modelo de Configura\u00E7\u00E3o de
Recurso
+widget_resourceFactoryWizard_contentTemplatePrompt = Modelos de Configura\u00E7\u00E3o do
Tempo de Deploy
+widget_resourceFactoryWizard_createSubmit = A requisi\u00E7\u00E3o para cria\u00E7\u00E3o
de um recurso com nome [{0}] foi submetida com sucesso.
+widget_resourceFactoryWizard_createSubmitType = A requisi\u00E7\u00E3o para
cria\u00E7\u00E3o de um recurso do tipo [{0}] foi submetida com sucesso.
+widget_resourceFactoryWizard_createWizardTitle = Criar novo recurso do tipo [{0}]
+widget_resourceFactoryWizard_createWizardWindowTitle = Assistente para Cria\u00E7\u00E3o
de Recurso
+##widget_resourceFactoryWizard_editConfigStepName = Deployment Options
+widget_resourceFactoryWizard_execute1 = Falha ao criar novo recurso - vers\u00E3o do
pacote inexistente
+widget_resourceFactoryWizard_execute2 = Falha ao criar novo recurso
+widget_resourceFactoryWizard_failedToDeleteVersion = Falha ao excluir a vers\u00E3o do
pacote durante o cancelamento da cria\u00E7\u00E3o do recurso
+widget_resourceFactoryWizard_failedToGetType = Falha ao recuperar o tipo de pacote para o
novo recurso
+widget_resourceFactoryWizard_importFailure = Falha ao importar recursos manualmente
+widget_resourceFactoryWizard_importSubmitted = Uma requisi\u00E7\u00E3o para importar um
novo recurso do tipo [{0}] foi submetida
+widget_resourceFactoryWizard_importWizardTitle = Importar Recursos do Tipo [{0}]
+widget_resourceFactoryWizard_importWizardWindowTitle = Assistente para
Importa\u00E7\u00E3o de Recurso
+widget_resourceFactoryWizard_infoStepName = Informa\u00E7\u00E3o do Recurso
+widget_resourceFactoryWizard_infoStep_loadFail = Falha ao recuperar Arquiteturas
dispon\u00EDveis.
+widget_resourceFactoryWizard_namePrompt = Novo Nome do Recurso
+widget_resourceFactoryWizard_templatePrompt = Modelo de Propriedades para Conex\u00E3o
+##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the RHQ Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
+widget_resourceFactoryWizard_uploadFailure = Falha ao realizar o upload do arquivo
+widget_resourceFactoryWizard_uploadFileStepName = Upload do Arquivo do Recurso
+widget_resourceFactoryWizard_uploadInProgress = Upload em andamento... Esse processo pode
demorar alguns minutos para ser finalizado em caso de arquivos muito grandes.
+widget_resourceFactoryWizard_versionPrompt = Vers\u00E3o do Pacote
+widget_resourceSelector_groupCategory = Categoria do Grupo
+widget_resourceSelector_pleaseSelectMultipleResource = Favor selecionar um ou mais
recursos
+widget_resourceSelector_pleaseSelectResource = Favor selecionar um recurso
+widget_resourceSelector_selectMultipleResources = Selecionar Recursos
+widget_resourceSelector_selectResource = Selecionar um Recurso
+widget_typeCache_loadFail = Falha ao carregar o metadado do tipo de recurso
+widget_typeTree_badTemplateType = URL inv\u00E1lida. Tipo de template desconhecido [{0}]
+widget_typeTree_badTypeId = URL inv\u00E1lida. Tipo de recurso inv\u00E1lido: ID [{0}]
+widget_typeTree_loadFail = Falha ao carregar tipos de recurso
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 9f5b96a..f2993ce 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
@@ -1,1804 +1,1794 @@
-#
-# RHQ GUI i18n Messages - Localization: ZH
-#
-# Developers: See the following wiki page for how to work with this file:
-#
-#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
-#
-###################################
-
-common_alert_high = High
-common_alert_low = Low
-common_alert_medium = Medium
-common_buildInfo_gwtVersion = ${gwt.version}
-common_button_ack = \u786E\u8BA4
-common_button_ack_all = \u786E\u8BA4\u6240\u6709
-common_button_add = \u6DFB\u52A0
-common_button_advanced = \u9AD8\u7EA7...
-common_button_apply = \u63A5\u53D7
-common_button_cancel = \u53D6\u6D88
-common_button_close = \u5173\u95ED
-common_button_compare = \u5BF9\u6BD4
-common_button_create_child = Create Child
-common_button_delete = \u5220\u9664
-common_button_delete_all = \u5220\u9664\u6240\u6709
-common_button_disable = \u7981\u7528
-common_button_edit = \u7F16\u8F91
-common_button_enable = \u542F\u7528
-common_button_finish = \u5B8C\u6210
-common_button_import = \u5BFC\u5165
-common_button_new = \u65B0\u5EFA
-common_button_next = \u4E0B\u4E00\u6B65
-common_button_ok = OK
-common_button_previous = \u4E0A\u4E00\u6B65
-common_button_purgeAll = \u6E05\u9664\u6240\u6709
-common_button_refresh = \u5237\u65B0
-common_button_reset = \u91CD\u7F6E
-common_button_save = \u4FDD\u5B58
-common_button_schedule = \u8BA1\u5212
-common_button_search = \u68C0\u7D22
-common_button_set = Set
-common_button_showDetails = \u67E5\u770B\u8BE6\u60C5...
-common_button_uninventory = Uninventory
-common_calendar_april_short = \u56DB\u6708
-common_calendar_august_short = \u516B\u6708
-common_calendar_december_short = \u5341\u4E8C\u6708
-common_calendar_february_short = \u4E8C\u6708
-common_calendar_january_short = \u4E00\u6708
-common_calendar_july_short = \u4E03\u6708
-common_calendar_june_short = \u516D\u6708
-common_calendar_march_short = \u4E09\u6708
-common_calendar_may_short = \u4E94\u6708
-common_calendar_november_short = \u5341\u4E00\u6708
-common_calendar_october_short = \u5341\u6708
-common_calendar_september_short = \u4E5D\u6708
-common_label_ago = ago
-common_label_all = \u6240\u6709
-common_label_all_resources = \u6240\u6709\u8D44\u6E90
-common_label_day = \u5929
-common_label_days = \u5929
-common_label_hour = \u5C0F\u65F6
-common_label_hours = \u5C0F\u65F6
-common_label_item = \u9879
-common_label_items = \u9879
-common_label_milliseconds = \u6BEB\u79D2
-common_label_minutes = \u5206\u949F
-common_label_month = \u6708
-common_label_none = \u65E0
-common_label_role = \u89D2\u8272
-common_label_roles = \u89D2\u8272
-common_label_scheduled_operations = \u8BA1\u5212\u64CD\u4F5C
-common_label_seconds = \u79D2
-common_label_selected_resources = \u5DF2\u9009\u8D44\u6E90
-common_label_unlimited = \u65E0\u9650\u5236
-common_label_user = \u7528\u6237
-common_label_users = \u7528\u6237
-common_label_week = \u5468
-common_label_weeks = \u5468
-common_label_yesterday = \u6628\u5929
-common_msg_areYouSure = \u4F60\u786E\u5B9A?
-common_msg_asyncTimeout = {0}.
\u56E0\u4E3A\u670D\u52A1\u5668\u54CD\u5E94\u65F6\u95F4\u592A\u957F.
\u8BF7\u6CE8\u610F\u670D\u52A1\u5668\u53EF\u80FD\u4ECD\u5728\u5904\u7406\u60A8\u7684\u8BF7\u6C42\uFF0C\u5E76\u53EF\u80FD\u5728\u77ED\u671F\u5185\u5B8C\u6210.
\u4F60\u53EF\u4EE5\u68C0\u67E5\u670D\u52A1\u5668\u65E5\u5FD7\uFF0C\u67E5\u770B\u662F\u5426\u51FA\u73B0\u4EFB\u4F55\u4E0D\u6B63\u5E38\u7684\u9519\u8BEF.
-common_msg_changeAutoDetected = Change auto-detected
-common_msg_deleteConfirm = \u4F60\u786E\u5B9A\u8981\u5220\u9664# selected {0}?
-common_msg_emphasizedNotePrefix = \u6CE8\u610F:
-common_msg_loading = \u52A0\u8F7D\u4E2D...
-common_msg_noItemsToShow = \u6CA1\u6709\u6761\u76EE\u663E\u793A
-common_msg_notYetImplemented = \u5C1A\u672A\u5B9E\u73B0
-common_msg_see_more = \u67E5\u770B\u66F4\u591A...
-common_msg_step_x_of_y = Step {0} of {1}
-common_severity_debug = Debug
-common_severity_error = Error
-common_severity_fatal = Fatal
-common_severity_info = Info
-common_severity_warn = Warn
-common_status_canceled = Canceled
-common_status_deferred = Deferred
-common_status_failed = Failed
-common_status_inprogress = In Progress
-common_status_nochange = No Change
-common_status_partial = Partial
-common_status_success = Success
-common_status_timedOut = Timed Out
-common_status_unknown = Unknown
-common_title_add_column = \u6DFB\u52A0\u5217
-common_title_add_graph_to_view = \u6DFB\u52A0\u56FE\u5230\u76D1\u89C6\u89C6\u56FE
-common_title_add_portlet = \u6DFB\u52A0Portlet
-common_title_address = \u5730\u5740
-common_title_alert_range = \u544A\u8B66\u8303\u56F4
-common_title_ancestry = \u7956\u5148
-common_title_availability = \u53EF\u7528\u6027
-common_title_available_resources = \u53EF\u7528\u7684\u8D44\u6E90
-common_title_average_metrics = \u5E73\u5747\u6BCF\u5206\u949F\u6307\u6807
-common_title_background = \u80CC\u666F\u8272
-common_title_bundle = Bundle
-common_title_bundles = Bundles
-common_title_category = \u7C7B\u522B
-common_title_change_refresh_time = \u5237\u65B0\u95F4\u9694
-common_title_columns = \u5217
-common_title_compare_metrics = \u6307\u6807\u5BF9\u6BD4
-common_title_compatibleGroups = \u517C\u5BB9\u7EC4
-common_title_compatibleGroups_total = \u6240\u6709\u517C\u5BB9\u7EC4
-common_title_component_errors = \u7EC4\u4EF6\u9519\u8BEF
-common_title_config_update_status = \u66F4\u65B0\u72B6\u6001
-common_title_configuration = \u914D\u7F6E
-common_title_count = \u6570
-common_title_custom = \u81EA\u5B9A\u4E49
-common_title_dashboard_name = \u7EDF\u8BA1\u8868\u76D8\u540D
-common_title_dateCreated = \u521B\u5EFA\u65E5\u671F
-common_title_dateRange = \u65E5\u671F\u8303\u56F4
-common_title_default = \u9ED8\u8BA4
-common_title_description = \u63CF\u8FF0
-common_title_details = \u8BE6\u7EC6
-common_title_display = \u663E\u793A
-common_title_display_name = \u663E\u793A\u540D
-common_title_duration = \u95F4\u9694
-common_title_edit_mode = \u7F16\u8F91\u6A21\u5F0F
-common_title_enabled = \u542F\u7528?
-common_title_end = End
-common_title_error = Error
-common_title_generalProp = \u57FA\u672C\u5C5E\u6027
-common_title_group = \u7EC4
-common_title_group_def_total = \u5B9A\u4E49\u7EC4\u603B\u6570
-common_title_group_member_health = Group Member Health
-common_title_groups = \u7EC4
-common_title_help = \u5E2E\u52A9
-common_title_host = \u4E3B\u673A
-common_title_icon =
-common_title_id = ID
-common_title_id_parent = \u7236ID
-common_title_info = Info
-common_title_inventory = \u6E05\u5355
-common_title_inventorySummary = \u6E05\u5355\u6C47\u603B
-common_title_lastUpdated = \u6700\u8FD1\u66F4\u65B0
-common_title_lastUpdatedBy = \u6700\u8FD1\u66F4\u65B0\u8005
-common_title_ldapGroups = LDAP\u7EC4
-common_title_mashup = Mashup
-common_title_members_reporting = \u7EC4\u62A5\u8868
-common_title_message = \u6D88\u606F
-common_title_metric = Metric
-common_title_metric_chart = Metric\u56FE\u8868
-common_title_mixedGroups = \u6DF7\u5408\u7EC4
-common_title_mixedGroups_total = \u6240\u6709\u6DF7\u5408\u7EC4
-common_title_name = \u540D\u79F0
-common_title_new_dashboard = \u65B0\u5EFA\u7EDF\u8BA1\u8868\u76D8
-common_title_numeric_metrics = \u6570\u5B57\u578B\u6307\u6807
-common_title_numeric_type = \u6570\u5B57\u7C7B\u578B
-common_title_operation_status = \u64CD\u4F5C\u72B6\u6001
-common_title_operations = \u64CD\u4F5C
-common_title_operations_range = \u64CD\u4F5C\u8303\u56F4
-common_title_over = Over
-common_title_password = \u5BC6\u7801
-common_title_path = Path
-common_title_permissions = \u6743\u9650
-common_title_platform = \u5E73\u53F0
-common_title_platform_total = \u6240\u6709\u5E73\u53F0
-common_title_plugin = \u63D2\u4EF6
-common_title_port = \u7AEF\u53E3
-common_title_providers = \u63D0\u4F9B\u8005
-common_title_recent_alerts = \u6700\u8FD1\u544A\u8B66
-common_title_recent_bundle_deployments = \u6700\u8FD1\u53D1\u5E03Bundles
-common_title_recent_configuration_updates = \u6700\u8FD1\u914D\u7F6E\u66F4\u65B0
-common_title_recent_event_counts = \u6700\u8FD1\u4E8B\u4EF6\u6570
-common_title_recent_measurements = Recent Measurements
-common_title_recent_oob_metrics = Recent Out of Bound metrics
-common_title_recent_operations = \u6700\u8FD1\u64CD\u4F5C
-common_title_recent_pkg_history = \u6700\u8FD1\u5386\u53F2\u5305
-common_title_recently_added = \u6700\u8FD1\u6DFB\u52A0
-common_title_remove_column = \u79FB\u9664\u5217
-common_title_repositories = \u5E93
-common_title_resource = \u8D44\u6E90
-common_title_resourceGroups = \u8D44\u6E90\u7EC4
-common_title_resource_group = \u8D44\u6E90\u7EC4
-common_title_resource_id = \u8D44\u6E90ID
-common_title_resource_inventory = \u8D44\u6E90\u6E05\u5355
-common_title_resource_key = \u8D44\u6E90Key
-common_title_resource_name = \u8D44\u6E90\u540D
-common_title_resource_type = \u8D44\u6E90\u7C7B\u578B
-common_title_resources = \u8D44\u6E90
-common_title_results_count = \u7ED3\u679C\u6570\u91CF
-common_title_results_count_tooltip = \u663E\u793A\u7ED3\u679C\u6570\u91CF
-common_title_role = \u89D2\u8272
-common_title_roles = \u89D2\u8272
-common_title_scheduled_operations = \u8BA1\u5212\u64CD\u4F5C
-common_title_search = \u641C\u7D22
-common_title_selected_resources = \u9009\u62E9\u7684\u8D44\u6E90
-common_title_server = \u670D\u52A1\u5668
-common_title_server_total = \u670D\u52A1\u5668\u603B\u6570
-common_title_service = \u670D\u52A1
-common_title_service_total = \u670D\u52A1\u603B\u6570
-common_title_settings = \u8BBE\u7F6E
-common_title_show = \u663E\u793A
-common_title_show_more = \u663E\u793A\u6240\u6709...
-common_title_sort_order = \u6392\u5E8F
-common_title_sort_order_tooltip = \u8BBE\u7F6E\u6392\u5E8F\u65B9\u5F0F.
-common_title_start = \u5F00\u59CB
-common_title_status = \u72B6\u6001
-common_title_stop = \u505C\u6B62
-common_title_summary = \u7EDF\u8BA1
-common_title_tag_cloud = \u6807\u7B7E\u4E91
-common_title_the = The
-common_title_timestamp = \u65E5\u671F/\u65F6\u95F4
-common_title_total = \u603B\u6570
-common_title_type = \u7C7B\u578B
-common_title_units = \u5355\u4F4D
-common_title_user = \u7528\u6237
-common_title_users = \u7528\u6237
-common_title_value = \u503C
-common_title_version = \u7248\u672C
-common_title_view_mode = \u67E5\u770B\u6A21\u5F0F
-common_title_web_address = Web\u5730\u5740
-common_title_welcome = \u6B22\u8FCE
-common_unit_days = \u5929
-common_unit_hours = \u5C0F\u65F6
-common_unit_milliseconds = \u6BEB\u79D2
-common_unit_minutes = \u5206\u949F
-common_unit_months = \u6708
-common_unit_seconds = \u79D2
-common_unit_times = \u6B21
-common_unit_weeks = \u5468
-common_unit_years = \u5E74
-common_val_for = for
-common_val_n1st = {0}st
-common_val_n2nd = {0}nd
-common_val_n3rd = {0}rd
-common_val_na = N/A
-common_val_never = Never
-common_val_no = No
-common_val_no_lower = no
-common_val_none = None
-common_val_nth = {0}th
-common_val_yes = Yes
-common_val_yes_lower = yes
-
-dataSource_ContentRepoTree_error_load = \u52A0\u8F7D\u5E93\u9519\u8BEF
-dataSource_ContentRepoTree_field_parentId = \u7236ID
-dataSource_bundle_loadFailed = \u52A0\u8F7Dbundle\u6570\u636E\u5931\u8D25
-dataSource_configurationHistory_clickToSeeError =
\u53CC\u51FB\u67E5\u770B\u9519\u8BEF...
-dataSource_configurationHistory_currentConfig = \u8FD9\u662F\u5F53\u524D\u914D\u7F6E
-dataSource_configurationHistory_dateCompleted = \u5B8C\u6210\u65E5\u671F
-dataSource_configurationHistory_dateSubmitted = \u63D0\u4EA4\u65E5\u671F
-dataSource_configurationHistory_error_fetchFailure =
\u65E0\u6CD5\u52A0\u8F7D\u5386\u53F2\u914D\u7F6E.
-dataSource_configurationHistory_updateType = \u66F4\u65B0\u7C7B\u578B
-dataSource_configurationHistory_updateType_group = \u7EC4
-dataSource_configurationHistory_updateType_individual = Individual
-dataSource_definitions_loadFailed = \u65E0\u6CD5\u52A0\u8F7D\u6307\u6807\u5B9A\u4E49
-dataSource_measurementOob_error_fetchFailure = \u52A0\u8F7Dmeasurement OOB
information\u5931\u8D25
-dataSource_measurementOob_field_factor = Out of Range Factor (%)
-dataSource_measurementOob_field_formattedBaseband = Band
-dataSource_measurementOob_field_formattedOutlier = Outlier
-dataSource_measurementOob_field_parentName = \u7236
-dataSource_measurementOob_field_resourceName = \u8D44\u6E90
-dataSource_measurementOob_field_scheduleName = \u6307\u6807
-dataSource_operationHistory_error_fetchFailure =
\u52A0\u8F7D\u5386\u53F2\u64CD\u4F5C\u5931\u8D25.
-dataSource_operationHistory_field_createdTime = \u521B\u5EFA\u65F6\u95F4
-dataSource_operationHistory_field_operationName = \u64CD\u4F5C\u540D
-dataSource_operationHistory_field_startedTime = \u5F00\u59CB\u65F6\u95F4
-dataSource_operationHistory_field_subject = Requester
-dataSource_operationSchedule_field_description = \u6CE8\u610F
-dataSource_operationSchedule_field_id = \u8BA1\u5212\u4EFB\u52A1ID
-dataSource_operationSchedule_field_nextFireTime = \u4E0B\u6B21\u89E6\u53D1\u65F6\u95F4
-dataSource_operationSchedule_field_operationDisplayName = \u64CD\u4F5C
-dataSource_operationSchedule_field_operationName = \u64CD\u4F5C
-dataSource_operationSchedule_field_subject = \u6240\u6709\u8005
-dataSource_operationSchedule_field_timeout = \u8D85\u65F6(\u79D2)
-dataSource_platforms_field_cpu = CPU
-dataSource_platforms_field_memory = \u5185\u5B58
-dataSource_platforms_field_swap = \u4EA4\u6362\u533A
-dataSource_problemResources_error_fetchFailure =
\u52A0\u8F7D\u544A\u8B66/\u4E0D\u53EF\u7528\u8D44\u6E90\u5931\u8D25.
-dataSource_problemResources_field_alerts = \u544A\u8B66
-dataSource_problemResources_field_available = \u5F53\u524D\u53EF\u7528\u6027
-dataSource_recentOperations_error_fetchFailure =
\u52A0\u8F7D\u6700\u8FD1\u64CD\u4F5C\u5931\u8D25.
-dataSource_recentOperations_field_location = \u4F4D\u7F6E
-dataSource_recentOperations_field_operation = \u64CD\u4F5C
-dataSource_recentOperations_field_resource = \u8D44\u6E90
-dataSource_recentOperations_field_status = \u72B6\u6001
-dataSource_recentOperations_field_time = \u65E5\u671F/\u65F6\u95F4
-dataSource_resourceErrors_clickStatusIcon =
\u70B9\u51FB\u56FE\u6807\u67E5\u770B\u8BE6\u60C5
-dataSource_resourceErrors_deleteFailure =
\u5220\u9664\u8D44\u6E90\u9519\u8BEF\u5931\u8D25
-dataSource_resourceErrors_deleteSuccess = You have successfully deleted [{0}] resource
error messages.
-dataSource_resourceErrors_error_fetchFailure = Failed to find Resource errors for
Resource with id [{0}].
-dataSource_resourceErrors_field_errorType = \u9519\u8BEF\u7C7B\u578B
-dataSource_resourceErrors_field_summary = \u7EDF\u8BA1
-dataSource_resourceErrors_field_timeOccured = \u65F6\u95F4
-dataSource_resourceGroups_loadFailed = \u52A0\u8F7D\u8D44\u6E90\u7EC4\u5931\u8D25
-dataSource_resources_field_discoveryTime = \u53D1\u73B0\u65F6\u95F4
-dataSource_resources_field_importTime = \u5BFC\u5165\u65F6\u95F4
-dataSource_resources_field_key = Key
-dataSource_resources_field_lastModifiedTime = \u6700\u8FD1\u66F4\u6539\u65F6\u95F4
-dataSource_resources_field_lastModifier = \u6700\u8FD1\u4FEE\u6539\u8005
-dataSource_resources_field_location = \u4F4D\u7F6E
-dataSource_rpc_error_transformRequestFailure = Failure in datasource while processing {0}
request.
-dataSource_rpc_error_unsupportedArrayFilterType = No support for passing array filters of
type {0}.
-dataSource_rpc_error_unsupportedEnumType = Please add an appropriate code block for enum
{0} to RPCDataSource.getEnumArray(Class)
-dataSource_rpc_no = no
-dataSource_rpc_yes = yes
-dataSource_scheduledOperations_error_fetchFailure =
\u65E0\u6CD5\u8F7D\u5165\u8BA1\u5212\u64CD\u4F5C.
-dataSource_scheduledOperations_field_location = \u4F4D\u7F6E
-dataSource_scheduledOperations_field_operation = \u64CD\u4F5C
-dataSource_scheduledOperations_field_resource = \u8D44\u6E90
-dataSource_scheduledOperations_field_time = \u65E5\u671F/\u65F6\u95F4
-dataSource_schedules_disableFailure_group = Failed to disable the collection of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_disableFailure_resource = Failed to disable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_disableSuccessful_concise = You have disabled the collection of
[{0}] measurements
-dataSource_schedules_disableSuccessful_full_group = You have disabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The disabled measurements are:
[{2}]
-dataSource_schedules_disableSuccessful_full_resource = You have disabled the collection
of [{0}] measurements for the resource with ID [{1}]. The disabled measurements are:
[{2}]
-dataSource_schedules_enableFailure_group = Failed to enable the collection of [{0}]
metrics for group with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_enableFailure_resource = Failed to enable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
-dataSource_schedules_enableSuccessful_concise = You have enabled the collection of [{0}]
measurements
-dataSource_schedules_enableSuccessful_full_group = You have enabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The enabled measurements are:
[{2}]
-dataSource_schedules_enableSuccessful_full_resource = You have enabled the collection of
[{0}] measurements for the resource with ID [{1}]. The enabled measurements are: [{2}]
-dataSource_schedules_field_resourceGroupId = \u7EC4ID
-dataSource_schedules_loadFailed =
\u52A0\u8F7D\u6307\u6807\u8BA1\u5212\u4EFB\u52A1\u5931\u8D25
-dataSource_schedules_loadFailedContext = Failed to load metric schedules for context
[{0}]
-dataSource_schedules_loadFailedCriteria = Failed to load metric schedules for criteria
[{0}]
-dataSource_schedules_updateFailure_group = Failed to set the collection interval of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
-dataSource_schedules_updateFailure_resource = Failed to set the collection interval of
[{0}] metrics for resource with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
-dataSource_schedules_updateSuccessful_concise = A new collection interval of [{0}]
seconds has been set on [{1}] measurements
-dataSource_schedules_updateSuccessful_full_group = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource group with ID [{2}]. The updated
measurements are: [{3}]
-dataSource_schedules_updateSuccessful_full_resource = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource with ID [{2}]. The updated
measurements are: [{3}]
-dataSource_traits_failFetch = Failed to fetch traits for criteria [{0}].
-dataSource_traits_field_definitionID = Definition ID
-dataSource_traits_field_lastChanged = \u6700\u8FD1\u66F4\u6539
-dataSource_traits_field_primaryKey = \u4E3B\u952E
-dataSource_traits_field_trait = Trait
-dataSource_traits_group_field_groupId = \u7EC4ID
-dataSource_users_delete = \u5220\u9664\u7528\u6237[{0}]
-dataSource_users_deleteFailed = \u5220\u9664\u7528\u6237[{0}]\u5931\u8D25
-dataSource_users_field_department = \u90E8\u95E8
-dataSource_users_field_emailAddress = Email\u5730\u5740
-dataSource_users_field_factive = \u5141\u8BB8\u767B\u5F55?
-dataSource_users_field_firstName = \u540D
-dataSource_users_field_id = ID
-dataSource_users_field_lastName = \u59D3
-dataSource_users_field_ldap = LDAP\u767B\u5F55?
-dataSource_users_field_name = \u7528\u6237\u540D
-dataSource_users_field_password = \u5BC6\u7801
-dataSource_users_field_passwordVerify = \u786E\u8BA4\u5BC6\u7801
-dataSource_users_field_phoneNumber = \u7535\u8BDD\u53F7\u7801
-dataSource_users_invalidEmailAddress = \u90AE\u7BB1\u5730\u5740\u65E0\u6548.
-dataSource_users_passwordsDoNotMatch = \u5BC6\u7801\u4E0D\u5339\u914D.
-
-datasource_roles_field_ldapGroups = LDAP\u7EC4
-datasource_roles_field_permissions = \u6743\u9650
-datasource_roles_field_resourceGroups = \u8D44\u6E90\u7EC4
-datasource_roles_field_subjects = Subjects
-datasource_templateSchedules_disabled =
\u7981\u7528\u9009\u62E9\u7684\u6307\u6807[{0}]\u91C7\u96C6.
-datasource_templateSchedules_disabled_detailed = Disabled collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
-datasource_templateSchedules_disabled_failed = Failed to disable collection of metric
[{0}] [{1}] by default for ResourceType with id [{2}].
-datasource_templateSchedules_enabled = Enabled collection of selected metric [{0}].
-datasource_templateSchedules_enabled_detailed = Enabled collection of metric [{0}] [{1}]
by default for ResourceType with id [{2}].
-datasource_templateSchedules_enabled_failed = Failed to enable collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
-datasource_templateSchedules_updated = Updated collection intervals of selected metric
[{0}].
-datasource_templateSchedules_updated_detail = Collection interval for metric [{0}] [{1}]
by default for ResourceType with id [{2}] set to [{3}] seconds.
-datasource_templateSchedules_updated_failed = Failed to set collection interval to [{0}]
seconds for metric [{1}] [{2}] by default for ResourceType with id [{3}].
-
-favorites = \u6536\u85CF\u5939
-
-favorites_groups = \u7EC4\u6536\u85CF\u5939
-favorites_recentlyViewed = \u6700\u8FD1\u67E5\u770B
-favorites_resources = \u8D44\u6E90\u6536\u85CF\u5939
-
-group_tree_partialClusterTooltip = \u9664\u53BB
{1},{0}\u7684\u7EC4\u6210\u5458\u62E5\u6709
\u4E00\u4E2A''{2}''\u8D44\u6E90
-
-util_ancestry_parentAncestry = Parent Ancestry for:
-util_errorHandler_nullException = exception was null
-util_monitoringRequestCallback_error_checkServerStatusFailure =
\u65E0\u6CD5\u786E\u5B9A\u767B\u5F55\u72B6\u6001-
\u68C0\u67E5\u670D\u52A1\u5668\u72B6\u6001.
-util_rpcManager_activeRequests = {0}\u6FC0\u6D3B\u7684\u8BF7\u6C42
-util_userPerm_loadFailGlobal = \u65E0\u6CD5\u8F7D\u5165\u5168\u5C40\u6743\u9650-
\u672A\u6388\u6743.
-util_userPerm_loadFailGroup = \u65E0\u6CD5\u8BBF\u95EE\u8D44\u6E90\u7EC4[{0}] -
\u672A\u6388\u6743.
-util_userPerm_loadFailResource = \u65E0\u6CD5\u8BBF\u95EE\u8D44\u6E90[{0}] -
\u672A\u6388\u6743.
-util_userSession_loadFailSubject = UserSessionManager:
\u52A0\u8F7D\u7528\u6237\u4E3B\u9898\u5931\u8D25
-util_userSession_logoutFail = \u6CE8\u9500\u5931\u8D25.
-util_widgetsField_unlimited = \u65E0\u9650\u5236
-
-view_aboutBox_allRightsReserved = All Rights Reserved.
-view_aboutBox_buildNumber = \u4EA7\u54C1\u7F16\u8BD1\u53F7:
-view_aboutBox_failedToLoad = \u52A0\u8F7D\u4EA7\u54C1\u4FE1\u606F\u5931\u8D25.
-view_aboutBox_homepage = \u4E3B\u9875
-view_aboutBox_jbossByRedHat = JBoss by Red Hat
-view_aboutBox_title = \u5173\u4E8E {0}
-view_aboutBox_version = \u7248\u672C:
-view_adminConfig_downloads = \u4E0B\u8F7D
-view_adminConfig_plugins = \u63D2\u4EF6
-view_adminConfig_systemSettings = \u7CFB\u7EDF\u8BBE\u7F6E
-view_adminConfig_templates = \u6A21\u677F
-view_adminContent_contentSources = Content\u6E90
-view_adminContent_repositories = \u5E93
-view_adminRoles_assignedGroups = \u5206\u914D\u7684\u8D44\u6E90\u7EC4
-view_adminRoles_assignedSubjects = \u5206\u914D\u7684\u4E3B\u9898
-view_adminRoles_failLdap = \u65E0\u6CD5\u786E\u5B9ALDAP -
\u5047\u5B9A\u6CA1\u6709LDAP.
-view_adminRoles_failLdapGroups = \u67E5\u8BE2\u6709\u6548LDAP\u7EC4\u5931\u8D25 -
\u5047\u5B9A\u65E0DAP\u7EC4.
-view_adminRoles_failLdapGroupsRole = \u52A0\u8F7DLDAP\u7EC4\u89D2\u8272\u5931\u8D25.
-view_adminRoles_failRoles = \u53D6\u5F97\u89D2\u8272\u5931\u8D25.
-view_adminRoles_globalPerms = \u5168\u5C40\u6388\u6743
-view_adminRoles_ldapGroups = LDAP\u7EC4
-view_adminRoles_ldapGroupsReadOnly = LDAP\u7EC4\u6570\u636E\u4E3A\u53EA\u8BFB
-view_adminRoles_noItems = \u6CA1\u6709\u6761\u76EE\u663E\u793A
-view_adminRoles_noLdap = \u6CA1\u6709\u96C6\u6210LDAP\u5B89\u5168, \u5230<a
{0}>{1}</a>.
-view_adminRoles_permissions_autoselecting_configureRead_implied = Autodeselected
CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
-view_adminRoles_permissions_autoselecting_configureWrite_implied = Autoselected
CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
-view_adminRoles_permissions_autoselecting_manageInventory_implied = Autoselected
unselected Resource permissions, since MANAGE_INVENTORY implies all Resource
permissions...
-view_adminRoles_permissions_autoselecting_manageSecurity_implied = Autoselected
unselected permissions, since MANAGE_SECURITY implies all other permissions...
-view_adminRoles_permissions_globalPermissions = \u5168\u5C40\u6388\u6743
-view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection = {0}
read permission cannot be deselected, unless the {0} write permission, which implies the
read permission, is deselected first.
-view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection = {0}
permission cannot be deselected, unless Manage Inventory, which implies all Resource
permissions, is deselected first.
-view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection = {0}
permission cannot be deselected, unless the Manage Security permission, which implies all
other permissions, is deselected first.
-view_adminRoles_permissions_isAuthorized = \u6388\u6743?
-view_adminRoles_permissions_isRead = \u8BFB?
-view_adminRoles_permissions_isWrite = \u5199?
-view_adminRoles_permissions_permDesc_manageBundles =
\u80FD\u521B\u5EFA,\u66F4\u65B0\u6216\u8005\u5220\u9664\u63D0\u4F9B\u7684bundles(\u4EFB\u4F55\u4EBA\u90FD\u80FD\u67E5\u770B)
-view_adminRoles_permissions_permDesc_manageInventory =
\u62E5\u6709\u6240\u6709\u8D44\u6E90\u6743\u9650, \u5982\u4E0B\u6240\u8FF0,
\u5BF9\u6240\u6709\u8D44\u6E90; \u5177\u6709\u521B\u5EFA, \u66F4\u65B0,
\u5220\u9664\u7EC4;
\u80FD\u5BFC\u5165\u81EA\u52A8\u53D1\u73B0\u6216\u624B\u52A8\u53D1\u73B0\u7684\u8D44\u6E90
-view_adminRoles_permissions_permDesc_manageRepositories = can create, update, or delete
repositories of any user (everyone can create their own repositories), can associate
content sources to repositories.
-view_adminRoles_permissions_permDesc_manageSecurity =
\u80FD\u521B\u5EFA,\u66F4\u65B0,\u6216\u5220\u9664\u7528\u6237\u548C\u89D2\u8272
(\u4EFB\u4F55\u4EBA\u90FD\u6709\u67E5\u770B\u6743\u9650)
-view_adminRoles_permissions_permDesc_manageSettings =
\u80FD\u4FEE\u6539RHQ\u670D\u52A1\u5668\u914D\u7F6E\u800C\u4E14\u80FD\u64CD\u4F5C\u4EFB\u4F55\u76F8\u5173\u7684\u670D\u52A1\u5668\u529F\u80FD
-view_adminRoles_permissions_permReadDesc_configure =
\u67E5\u770B\u8D44\u6E90\u914D\u7F6E\u548C\u8D44\u6E90\u914D\u7F6E\u4FEE\u8BA2\u5386\u53F2
-view_adminRoles_permissions_permReadDesc_control = (IMPLIED)
\u67E5\u770B\u53EF\u7528\u64CD\u4F5C\u548C\u64CD\u4F5C\u6267\u884C\u5386\u53F2
-view_adminRoles_permissions_permReadDesc_createChildResources = (IMPLIED)
\u67E5\u770B\u5B50\u8D44\u6E90\u521B\u5EFA\u5386\u53F2
-view_adminRoles_permissions_permReadDesc_deleteChildResources = (IMPLIED)
\u67E5\u770B\u5B50\u8D44\u6E90\u5220\u9664\u5386\u53F2
-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_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
-view_adminRoles_permissions_permWriteDesc_control = \u6267\u884C\u64CD\u4F5C;
\u5220\u9664\u64CD\u4F5C\u6267\u884C\u5386\u53F2
-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_manageContent = subscribe to content sources;
install and uninstall packages
-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
-view_adminRoles_permissions_perm_control = \u63A7\u5236
-view_adminRoles_permissions_perm_createChildResources = \u521B\u5EFA\u5B50\u8D44\u6E90
-view_adminRoles_permissions_perm_deleteChildResources = \u5220\u9664\u5B50\u8D44\u6E90
-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_manageEvents = \u7BA1\u7406\u4E8B\u4EF6
-view_adminRoles_permissions_perm_manageInventory = \u7BA1\u7406\u6E05\u5355
-view_adminRoles_permissions_perm_manageMeasurements = \u7BA1\u7406\u6307\u6807
-view_adminRoles_permissions_perm_manageRepositories = \u7BA1\u7406\u5E93
-view_adminRoles_permissions_perm_manageSecurity = \u7BA1\u7406\u6743\u9650
-view_adminRoles_permissions_perm_manageSettings = \u7BA1\u7406\u914D\u7F6E
-view_adminRoles_permissions_read = \u8BFB:
-view_adminRoles_permissions_readAccessImplied =
\u9ED8\u8BA4\u6709\u8BBF\u95EE{0}\u7684\u6743\u9650\u800C\u4E14\u65E0\u6CD5\u7981\u7528.
-view_adminRoles_permissions_resourcePermissions = \u8D44\u6E90\u6388\u6743
-view_adminRoles_permissions_write = \u5199:
-view_adminRoles_perms = \u6743\u9650
-view_adminRoles_resourcePerms = \u8D44\u6E90\u6388\u6743
-view_adminRoles_roleAdded = \u89D2\u8272[{0}]\u6DFB\u52A0.
-view_adminRoles_roleDeleteFailed = \u5220\u9664\u89D2\u8272[{0}]\u5931\u8D25.
-view_adminRoles_roleDeleted = \u89D2\u8272[{0}]\u5220\u9664.
-view_adminRoles_roleUpdateFailed = \u4FEE\u6539\u89D2\u8272[{0}]\u5931\u8D25.
-view_adminRoles_roleUpdated = \u89D2\u8272[{0}]\u66F4\u65B0\u4E86.
-view_adminSecurity_roles = \u89D2\u8272
-view_adminSecurity_users = \u7528\u6237
-view_adminTemplates_disabledAlertTemplates = \u7981\u7528\u544A\u8B66\u6A21\u677F
-view_adminTemplates_disabledMetricTemplates = \u7981\u7528\u6307\u6807\u6A21\u677F
-view_adminTemplates_editAlertTemplate = \u7F16\u8F91\u544A\u8B66\u6A21\u677F
-view_adminTemplates_editMetricTemplate = \u7F16\u8F91\u6307\u6807\u6A21\u677F
-view_adminTemplates_enabledAlertTemplates = \u542F\u7528\u544A\u8B66\u6A21\u677F
-view_adminTemplates_enabledMetricTemplates = \u542F\u7528\u6307\u6807\u6A21\u677F
-view_adminTemplates_platformServices = \u5E73\u53F0\u670D\u52A1
-view_adminTemplates_platforms = \u5E73\u53F0
-view_adminTemplates_prompt_disabledAlertTemplates =
\u8FD9\u79CD\u8D44\u6E90\u7C7B\u578B\u521B\u5EFA\u800C\u7981\u7528\u7684\u544A\u8B66\u6A21\u677F\u6570
-view_adminTemplates_prompt_disabledMetricTemplates = Number of metric schedules that are
disabled by default on this resource type
-view_adminTemplates_prompt_enabledAlertTemplates =
\u8FD9\u79CD\u8D44\u6E90\u7C7B\u578B\u542F\u7528\u7684\u544A\u8B66\u6A21\u677F\u6570
-view_adminTemplates_prompt_enabledMetricTemplates = Number of metric schedules that are
enabled by default on this resource type
-view_adminTemplates_servers = \u670D\u52A1\u5668
-view_adminTopology_affinityGroups = \u76F8\u5173\u7EC4
-view_adminTopology_agents = \u4EE3\u7406
-view_adminTopology_partitionEvents = Partition\u4E8B\u4EF6
-view_adminTopology_remoteAgentInstall = \u8FDC\u7A0B\u4EE3\u7406\u5B89\u88C5
-view_adminTopology_servers = \u670D\u52A1\u5668
-view_adminUsersDetails_dataTypeName = user
-view_adminUsersList_dataTypeName = user
-view_adminUsersList_dataTypeNamePlural = users
-view_admin_administration = \u7BA1\u7406
-view_admin_configuration = \u914D\u7F6E
-view_admin_content = Content
-view_admin_downloads_agentDownload = \u4EE3\u7406\u4E0B\u8F7D
-view_admin_downloads_agent_buildNumber = \u4EE3\u7406Build
-view_admin_downloads_agent_help = <p> \u8FD9\u662FRHQ
Agent\u66F4\u65B0\u7684\u4E8C\u8FDB\u5236jar\u6587\u4EF6. The purpose of this jar file is
to allow you to install a fresh agent on a machine where an agent does not yet exist and
to allow you to update an agent that is already installed on a machine. For more details,
run this agent download jar with the --help command line option:<br/> <b>java
-jar <agent-download.jar> --help</b> </p>
<h3>\u4EE3\u7406\u5B89\u88C5</h3> <p> <b>java -jar
<agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>\u4EE3\u7406\u66F4\u65B0</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
-view_admin_downloads_agent_link_label = Link
-view_admin_downloads_agent_link_value = \u4E0B\u8F7D\u4EE3\u7406 {0} ({1})
-view_admin_downloads_agent_loadError =
\u65E0\u6CD5\u83B7\u5F97\u4EE3\u7406\u7248\u672C\u4FE1\u606F
-view_admin_downloads_agent_md5 = \u4EE3\u7406MD5
-view_admin_downloads_agent_version = \u4EE3\u7406\u7248\u672C
-view_admin_downloads_bundleDownload = Bundle\u90E8\u7F72\u5668\u4E0B\u8F7D
-view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is for
use by developers and packagers of RHQ bundles. This standalone tool allows you to test
your bundles and their recipes from a console. </p>
-view_admin_downloads_bundle_link_label = Link
-view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
-view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
-view_admin_downloads_cliDownload = \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF\u4E0B\u8F7D
-view_admin_downloads_cli_buildNumber = CLI Build
-view_admin_downloads_cli_help = <p> This is the Command Line Client tool,
otherwise known as the CLI. It is a standalone tool that runs from within a console and
provides a command line interface to the RHQ Server. You can invoke commands via the CLI
as well as run scripts to perform automated tasks. See the documentation for more
information on how to install and use the CLI. </p>
-view_admin_downloads_cli_link_label = Link
-view_admin_downloads_cli_link_value = \u4E0B\u8F7DCLI {0} ({1})
-view_admin_downloads_cli_loadError = \u65E0\u6CD5\u83B7\u5F97CLI\u7248\u672C\u4FE1\u606F
-view_admin_downloads_cli_md5 = CLI MD5
-view_admin_downloads_cli_version = CLI\u7248\u672C
-view_admin_downloads_connectorsDownload = \u8FDE\u63A5\u5668\u4E0B\u8F7D
-view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by RHQ. You install connectors into some managed
products so RHQ agents can talk to them. See the documentation for more information.
-view_admin_downloads_connectors_loadError = Cannot get connectors info
-view_admin_downloads_connectors_none = No connectors are available for download
-view_admin_landing =
\u8FD9\u91CC\u4F60\u53EF\u4EE5\u7BA1\u7406RHQ\u5168\u5C40\u914D\u7F6E.\u5305\u62EC\u914D\u7F6E\u5B89\u5168,\u5B89\u88C5\u63D2\u4EF6,\u7BA1\u7406RHQ\u670D\u52A1\u5668\u548C\u4EE3\u7406.
-view_admin_measTemplates_title = Template Metric Collection Schedules
-view_admin_measTemplates_updateExisting_title =
\u66F4\u65B0\u5B58\u5728\u7684\u8BA1\u5212\u4EFB\u52A1
-view_admin_measTemplates_updateExisting_tooltip = Check this box to update the collection
schedules for the selected metrics on all existing resources of this type. If this is not
checked, the template schedules will only be applied to new resources of this type that
are added to inventory in the future.
-view_admin_security = \u5B89\u5168
-view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = If this amount of time passes
without hearing from an agent, that quiet agent will be considered down. This value is
specified in minutes.
-view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent Max Quiet Time Allowed
-view_admin_systemSettings_AlertPurge_desc = How old alert history items must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_AlertPurge_name = Delete Alerts Older Than
-view_admin_systemSettings_AvailabilityPurge_desc = How old availability data must be
before being purged from the database. This is specified in days.
-view_admin_systemSettings_AvailabilityPurge_name = Delete Availability Data Older Than
-view_admin_systemSettings_BaseURL_desc = A URL to the server GUI, used mainly within
alert email notifications.
-view_admin_systemSettings_BaseURL_name = GUI Console URL
-view_admin_systemSettings_BaselineDataSet_desc = The amount of past measurement data that
is used to determine a baseline. This is specified in days.
-view_admin_systemSettings_BaselineDataSet_name = Baseline Dataset
-view_admin_systemSettings_BaselineFrequency_desc = The frequency which the
auto-calculation of baselines will be performed. If 0, baseline auto-calculation is
disabled. This is specified in days.
-view_admin_systemSettings_BaselineFrequency_name = Baseline Calculation Frequency
-view_admin_systemSettings_DataMaintenance_desc = How often database maintenance is
performed (for example, vacuuming if using Postgres). This is specified in hours.
-view_admin_systemSettings_DataMaintenance_name =
\u6570\u636E\u5E93\u7EF4\u62A4\u671F\u95F4
-view_admin_systemSettings_DataReindex_desc = If enabled, certain database tables will be
re-indexed periodically.
-view_admin_systemSettings_DataReindex_name = Reindex Data Tables Nightly
-view_admin_systemSettings_EnableAgentAutoUpdate_desc = Determines if the server will
allow agents to auto-update themselves. You will not be able to download agent
distributions from the server if this is disabled.
-view_admin_systemSettings_EnableAgentAutoUpdate_name =
\u542F\u7528\u4EE3\u7406\u81EA\u52A8\u5347\u7EA7
-view_admin_systemSettings_EnableDebugMode_desc =
\u5982\u679C\u542F\u7528,\u670D\u52A1\u5668\u5C06\u8FDB\u5165debug\u6A21\u5F0F.
-view_admin_systemSettings_EnableDebugMode_name = \u542F\u7528Debug\u6A21\u5F0F
-view_admin_systemSettings_EnableExperimentalFeatures_desc = If enabled, any experimental
features that exist in the current product will be available.
-view_admin_systemSettings_EnableExperimentalFeatures_name = Enable Experimental Features
-view_admin_systemSettings_EventPurge_desc = How old event data must be before being
purged from the database. This is specified in days.
-view_admin_systemSettings_EventPurge_name = Delete Events Older Than
-view_admin_systemSettings_JAASProvider_desc = Should LDAP be used to determine user
identity?
-view_admin_systemSettings_JAASProvider_name = \u542F\u7528LDAP
-view_admin_systemSettings_LDAPBaseDN_desc = The base of the directory tree to search for
usernames and passwords while authenticating users, e.g. ou=People,dc=redhat,dc=com
-view_admin_systemSettings_LDAPBaseDN_name = Search Base
-view_admin_systemSettings_LDAPBindDN_desc = The username to connect to the LDAP server
when querying the LDAP user database. This is typically the full LDAP distinguished name
(DN) of a manager user, e.g. cn=Manager,dc=redhat,dc=com
-view_admin_systemSettings_LDAPBindDN_name = \u7528\u6237\u540D
-view_admin_systemSettings_LDAPBindPW_desc = The credentials of the user used to connect
to the LDAP server when querying the LDAP user database.
-view_admin_systemSettings_LDAPBindPW_name = \u5BC6\u7801
-view_admin_systemSettings_LDAPFilter_desc = Any additional filters to apply when doing
the LDAP search. This is useful if the population to authenticate can be identified via a
given LDAP property, e.g. RHQUser=true
-view_admin_systemSettings_LDAPFilter_name = Search Filter
-view_admin_systemSettings_LDAPGroupFilter_desc = LDAP search filter that must return all
LDAP groups available for authorization. This is used for LDAP group authorization.
-view_admin_systemSettings_LDAPGroupFilter_name = Group Search Filter
-view_admin_systemSettings_LDAPGroupMember_desc = LDAP search filter that is used in
conjunction with the group search filter to determine user authorization. This is used for
LDAP group authorization.
-view_admin_systemSettings_LDAPGroupMember_name = Group Member Filter
-view_admin_systemSettings_LDAPLoginProperty_desc = The LDAP property that contains the
user name. Defaults to "cn". If multiple matches are found, the first entry
found is used.
-view_admin_systemSettings_LDAPLoginProperty_name = Login Property
-view_admin_systemSettings_LDAPProtocol_desc = Should communication with the LDAP server
be done over SSL?
-view_admin_systemSettings_LDAPProtocol_name = SSL
-view_admin_systemSettings_LDAPUrl_desc = URL to the LDAP Server
-view_admin_systemSettings_LDAPUrl_name = LDAP URL
-view_admin_systemSettings_RtDataPurge_desc = How old response time data must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_RtDataPurge_name = Delete Response Time Data Older Than
-view_admin_systemSettings_TraitPurge_desc = How old measurement trait data must be before
being purged from the database. This is specified in days.
-view_admin_systemSettings_TraitPurge_name = Delete Measurement Traits Older Than
-view_admin_systemSettings_cannotLoadServerDetails =
\u65E0\u6CD5\u52A0\u8F7D\u670D\u52A1\u5668\u8BE6\u60C5
-view_admin_systemSettings_cannotLoadSettings =
\u65E0\u6CD5\u83B7\u5F97\u5F53\u524D\u7CFB\u7EDF\u914D\u7F6E
-view_admin_systemSettings_fixBeforeSaving =
\u4FDD\u5B58\u524D\u8BF7\u4FEE\u590D\u9519\u8BEF
-view_admin_systemSettings_group_baseline = \u81EA\u52A8Baseline\u914D\u7F6E\u5C5E\u6027
-view_admin_systemSettings_group_dataMgr =
\u6570\u636E\u7BA1\u7406\u5668\u57FA\u672C\u5C5E\u6027
-view_admin_systemSettings_group_general = \u57FA\u672C\u914D\u7F6E\u5C5E\u6027
-view_admin_systemSettings_group_ldap = LDAP\u914D\u7F6E\u5C5E\u6027
-view_admin_systemSettings_saveFailure = \u4FDD\u5B58\u7CFB\u7EDF\u5C5E\u6027\u5931\u8D25
-view_admin_systemSettings_savedSettings =
\u4FDD\u5B58\u7CFB\u7EDF\u5C5E\u6027\u6210\u529F
-view_admin_systemSettings_serverDetails = \u670D\u52A1\u5668\u8BE6\u60C5
-view_admin_systemSettings_serverDetails_buildNumber = Build Number
-view_admin_systemSettings_serverDetails_currentTable = Current Measurement Raw Table
-view_admin_systemSettings_serverDetails_dbDriverName =
\u6570\u636E\u5E93\u9A71\u52A8\u540D
-view_admin_systemSettings_serverDetails_dbDriverVersion =
\u6570\u636E\u5E93\u9A71\u52A8\u7248\u672C
-view_admin_systemSettings_serverDetails_dbName = \u6570\u636E\u5E93\u4EA7\u54C1\u540D
-view_admin_systemSettings_serverDetails_dbUrl = \u6570\u636E\u5E93\u8FDE\u63A5URL
-view_admin_systemSettings_serverDetails_dbVersion =
\u6570\u636E\u5E93\u7248\u672C\u4FE1\u606F
-view_admin_systemSettings_serverDetails_installDir =
\u670D\u52A1\u5668\u5B89\u88C5\u76EE\u5F55
-view_admin_systemSettings_serverDetails_nextRotation = Next Measurement Table Rotation
-view_admin_systemSettings_serverDetails_time =
\u670D\u52A1\u5668\u672C\u5730\u65F6\u95F4
-view_admin_systemSettings_serverDetails_tz = \u670D\u52A1\u5668\u65F6\u533A
-view_admin_topology = \u62D3\u6251
-view_alert_common_tab_conditions = Conditions
-view_alert_common_tab_conditions_expression = \u89E6\u53D1\u4E8B\u4EF6\u5F53
-view_alert_common_tab_conditions_expression_tooltip = Determines if ANY or ALL of the
conditions must evaluate to true in order for the entire condition set to be considered
true.
-view_alert_common_tab_conditions_modal_title = \u6DFB\u52A0\u6761\u4EF6
-view_alert_common_tab_conditions_recovery_disabled = This alert caused its alert
definition to be disabled
-view_alert_common_tab_conditions_recovery_enabled = Triggered ''{0}'' to
be re-enabled
-view_alert_common_tab_conditions_text = \u6761\u4EF6
-view_alert_common_tab_conditions_type_availability = \u53EF\u7528\u6027\u6539\u53D8
-view_alert_common_tab_conditions_type_availability_down = Went down
-view_alert_common_tab_conditions_type_availability_up = Came up
-view_alert_common_tab_conditions_type_event = \u4E8B\u4EF6\u68C0\u6D4B
-view_alert_common_tab_conditions_type_event_matching = with event source matching
-view_alert_common_tab_conditions_type_metric_baseline = \u6307\u6807\u57FA\u51C6
-view_alert_common_tab_conditions_type_metric_baseline_verb = of
-view_alert_common_tab_conditions_type_metric_calltime_change = Call Time Value Changes
-view_alert_common_tab_conditions_type_metric_calltime_change_verb = by at least
-view_alert_common_tab_conditions_type_metric_calltime_delta_grows = Grows
-view_alert_common_tab_conditions_type_metric_calltime_delta_other = Changes
-view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = Shrinks
-view_alert_common_tab_conditions_type_metric_calltime_destination = with call destination
matching
-view_alert_common_tab_conditions_type_metric_calltime_threshold = Call Time Value
Threshold
-view_alert_common_tab_conditions_type_metric_change = Metric Value Change
-view_alert_common_tab_conditions_type_metric_threshold = Metric Value Threshold
-view_alert_common_tab_conditions_type_metric_trait_change = Trait Change
-view_alert_common_tab_conditions_type_operation = \u64CD\u4F5C\u6267\u884C
-view_alert_common_tab_conditions_type_operation_status = with result status
-view_alert_common_tab_conditions_type_resource_configuration = \u8D44\u6E90\u914D\u7F6E
Change
-view_alert_common_tab_conditions_value = Value
-view_alert_common_tab_dampening = Dampening
-view_alert_common_tab_dampening_category_consecutive_count = Consecutive
-view_alert_common_tab_dampening_category_consecutive_count_tooltip = An alert is
triggered once every X occurrences the condition set is true consecutively.
-view_alert_common_tab_dampening_category_duration_count = Time Period
-view_alert_common_tab_dampening_category_duration_count_tooltip = An alert is triggered
once every X occurrences the condition set is true within a given time period.
-view_alert_common_tab_dampening_category_none = None
-view_alert_common_tab_dampening_category_none_tooltip = Dampening is disabled. Every time
the condition set is true, an alert will be triggered.
-view_alert_common_tab_dampening_category_partial_count = Last N Evaluations
-view_alert_common_tab_dampening_category_partial_count_tooltip = An alert is triggered
once every X occurrences the condition set is true during the last N evaluations of the
condition set.
-view_alert_common_tab_dampening_consecutive_occurrences_label = Occurrences
-view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = The number of
times the condition set must be consecutively true before the alert is triggered
-view_alert_common_tab_dampening_duration_occurrences_label = Occurrences
-view_alert_common_tab_dampening_duration_occurrences_label_tooltip = The number of times
the condition set must be true during the given time period before the alert is
triggered.
-view_alert_common_tab_dampening_duration_period_label = \u65F6\u95F4\u6BB5
-view_alert_common_tab_dampening_duration_period_label_tooltip = The time span in which
the condition set will be tested to see if the given number of occurrences are true.
-view_alert_common_tab_dampening_partial_evalatuions_label = \u8BC4\u4F30
-view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = The total number of
times the condition set will be tested to see if the given number of occurrences are
true.
-view_alert_common_tab_dampening_partial_occurrences_label = Occurrences
-view_alert_common_tab_dampening_partial_occurrences_label_tooltip = The number of times
the condition set must be true during the last N evaluations before the alert is
triggered.
-view_alert_common_tab_general = \u57FA\u672C\u5C5E\u6027
-view_alert_common_tab_invalid_condition_category = Invalid condition category - please
report this as a bug: {0}
-view_alert_common_tab_invalid_dampening_category = Invalid dampening category - please
report this as a bug: {0}
-view_alert_common_tab_invalid_time_units = \u65E0\u6548\u65F6\u95F4\u5355\u4F4D -
\u8BF7\u62A5\u544Abug: {0}
-view_alert_common_tab_notifications = \u901A\u77E5
-view_alert_common_tab_notifications_message = \u6D88\u606F
-view_alert_common_tab_notifications_sender = Sender
-view_alert_common_tab_notifications_status = \u72B6\u6001
-view_alert_common_tab_recovery = \u8FD8\u539F
-view_alert_definition_condition_editor_avilability_option_down = Goes down
-view_alert_definition_condition_editor_avilability_option_up = Comes up
-view_alert_definition_condition_editor_avilability_tooltip = Specify the availability
state change that will trigger the condition.
-view_alert_definition_condition_editor_avilability_value = \u53EF\u7528\u6027
-view_alert_definition_condition_editor_common_avg = Average
-view_alert_definition_condition_editor_common_max = Maximum
-view_alert_definition_condition_editor_common_min = Minimum
-view_alert_definition_condition_editor_delete_confirm =
\u5220\u9664\u9009\u5B9A\u7684\u8B66\u62A5\u6761\u4EF6?
-view_alert_definition_condition_editor_event_regex = \u6B63\u5219\u8868\u8FBE\u5F0F
-view_alert_definition_condition_editor_event_regex_tooltip = If specified, this is a
regular expression that must match a collected event message in order to trigger the
condition.
-view_alert_definition_condition_editor_event_severity = Event Severity
-view_alert_definition_condition_editor_event_severity_debug = Debug
-view_alert_definition_condition_editor_event_severity_error = Error
-view_alert_definition_condition_editor_event_severity_fatal = Fatal
-view_alert_definition_condition_editor_event_severity_info = Info
-view_alert_definition_condition_editor_event_severity_warn = Warn
-view_alert_definition_condition_editor_event_tooltip = Specify the event severity that an
event message must be reported with in order to trigger this condition. If you specify an
optional regular expression, the event message must also match that regular expression in
order for the condition to trigger.
-view_alert_definition_condition_editor_metric_baseline_percentage = Baseline Percentage
-view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = A collected
metric value will trigger this condition when compared to this percentage of the selected
baseline value using the selected comparator
-view_alert_definition_condition_editor_metric_baseline_tooltip = Specify the baseline
value that must be violated to trigger the condition. The value you specify is a
percentage of the given baseline value.
-view_alert_definition_condition_editor_metric_baseline_value = Baseline
-view_alert_definition_condition_editor_metric_calltime_change_percentage = Percentage
Change
-view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip = A
collected calltime value will trigger this condition when it differs by at least this
percentage of the selected calltime limit value
-view_alert_definition_condition_editor_metric_calltime_change_tooltip = Specify the
calltime value that, when changed at least a specified amount, triggers the condition. You
must specify which calltime limit to check (minimum, maximum or average calltime value)
and the percentage of change that must occur.
-view_alert_definition_condition_editor_metric_calltime_common_comparator = Comparator
-view_alert_definition_condition_editor_metric_calltime_common_comparator_changes =
Changes
-view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = Grows
-view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks =
Shrinks
-view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = How a
collected calltime value should be compared to the given calltime limit
-view_alert_definition_condition_editor_metric_calltime_common_limit = Call Time Limit
-view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = The
calltime limit value that is to be compared with the given value
-view_alert_definition_condition_editor_metric_calltime_common_name = Call Time Metric
-view_alert_definition_condition_editor_metric_calltime_common_regex =
\u6B63\u5219\u8868\u8FBE\u5F0F
-view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip = If
specified, this is a regular expression that must match a call destination in order to
trigger the condition.
-view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Specify the
calltime threshold value that, when violated, triggers the condition. The value you
specify is an absolute value with an optional units specifier. You also must specify which
calltime limit to compare the value with (minimum, maximum or average calltime value).
-view_alert_definition_condition_editor_metric_calltime_threshold_value = Call Time Value
-view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = The
threshold value of the metric that will trigger the condition when compared using the
selected comparator.
-view_alert_definition_condition_editor_metric_change_tooltip = Specify the metric whose
value must change to trigger the condition.
-view_alert_definition_condition_editor_metric_common_definition_not_found = Should have
found metric definition - something is wrong
-view_alert_definition_condition_editor_metric_threshold_comparator = Comparator
-view_alert_definition_condition_editor_metric_threshold_comparator_equal = \u7B49\u4E8E
-view_alert_definition_condition_editor_metric_threshold_comparator_greater =
\u5927\u4E8E
-view_alert_definition_condition_editor_metric_threshold_comparator_less = \u5C0F\u4E8E
-view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = How a
collected metric value should be compared to the given threshold value
-view_alert_definition_condition_editor_metric_threshold_name = \u6307\u6807
-view_alert_definition_condition_editor_metric_threshold_tooltip = Specify the threshold
value that, when violated, triggers the condition. The value you specify is an absolute
value with an optional units specifier.
-view_alert_definition_condition_editor_metric_threshold_value = \u6307\u6807\u503C
-view_alert_definition_condition_editor_metric_threshold_value_tooltip = The threshold
value of the metric that will trigger the condition when compared using the selected
comparator.
-view_alert_definition_condition_editor_metric_trait_change_tooltip = Specify the trait
whose value must change to trigger the condition.
-view_alert_definition_condition_editor_metric_trait_change_value = Trait
-view_alert_definition_condition_editor_operation_status = \u64CD\u4F5C\u72B6\u6001
-view_alert_definition_condition_editor_operation_status_canceled = Canceled
-view_alert_definition_condition_editor_operation_status_failure = Failure
-view_alert_definition_condition_editor_operation_status_inprogress = \u8FDB\u884C\u4E2D
-view_alert_definition_condition_editor_operation_status_success = Success
-view_alert_definition_condition_editor_operation_tooltip = Specify the result that must
occur when the selected operation is executed in order to trigger the condition.
-view_alert_definition_condition_editor_operation_value = \u64CD\u4F5C
-view_alert_definition_condition_editor_option_availability = Availability Change
-view_alert_definition_condition_editor_option_event = \u4E8B\u4EF6\u68C0\u6D4B
-view_alert_definition_condition_editor_option_label = Condition Type
-view_alert_definition_condition_editor_option_metric_baseline = Measurement Baseline
Threshold
-view_alert_definition_condition_editor_option_metric_calltime_change = Call Time Value
Change
-view_alert_definition_condition_editor_option_metric_calltime_threshold = Call Time Value
Threshold
-view_alert_definition_condition_editor_option_metric_change = Measurement Value Change
-view_alert_definition_condition_editor_option_metric_threshold = Measurement Absolute
Value Threshold
-view_alert_definition_condition_editor_option_metric_trait_change = Trait Value Change
-view_alert_definition_condition_editor_option_operation = Operation Execution
-view_alert_definition_condition_editor_option_resource_configuration =
\u8D44\u6E90\u914D\u7F6E\u6539\u53D8
-view_alert_definition_condition_editor_resource_configuration_tooltip = This condition is
triggered when the resource configuration changes.
-view_alert_definition_for_group = \u67E5\u770B\u7EC4\u5B9A\u4E49
-view_alert_definition_for_type = \u67E5\u770B\u6A21\u677F
-view_alert_definition_notification_cliScript_editor_anotherUser =
\u5176\u4ED6\u7528\u6237
-view_alert_definition_notification_cliScript_editor_existingScript = Existing Script
-view_alert_definition_notification_cliScript_editor_loadFailed = Loading the CLI
Notification Editor Failed.
-view_alert_definition_notification_cliScript_editor_newScriptVersion = Version
-view_alert_definition_notification_cliScript_editor_repository = Repository
-view_alert_definition_notification_cliScript_editor_script = Script
-view_alert_definition_notification_cliScript_editor_selectRepo = Select the repository
where the script should reside
-view_alert_definition_notification_cliScript_editor_selectRepoFirst =
\u9996\u5148\u9009\u62E9\u5E93.
-view_alert_definition_notification_cliScript_editor_thisUser = Myself
-view_alert_definition_notification_cliScript_editor_uploadNewScript =
\u4E0A\u4F20\u65B0\u811A\u672C
-view_alert_definition_notification_cliScript_editor_verifyAuthentication = Verify
-view_alert_definition_notification_cliScript_editor_whichUser = User To Run The Script
As
-view_alert_definition_notification_editor_delete_confirm =
\u4F60\u786E\u5B9A\u8981\u5220\u9664\u9009\u5B9A\u7684\u544A\u8B66\u901A\u77E5?
-view_alert_definition_notification_editor_field_configuration = \u914D\u7F6E
-view_alert_definition_notification_editor_field_configuration_loadFailed = Failed to get
notification configuration preview
-view_alert_definition_notification_editor_field_configuration_not_loaded = Unknown
-view_alert_definition_notification_editor_field_sender = Sender
-view_alert_definition_notification_editor_loadFailed = Cannot get alert senders
-view_alert_definition_notification_editor_loadFailed_single = Cannot get alert sender
configuration definition
-view_alert_definition_notification_editor_none_available = No alert senders available
-view_alert_definition_notification_editor_saveFailed = Cannot save the notification
configuration
-view_alert_definition_notification_editor_sender = \u901A\u77E5\u53D1\u9001\u8005
-view_alert_definition_notification_editor_title_add = \u6DFB\u52A0\u901A\u77E5
-view_alert_definition_notification_editor_title_edit = \u7F16\u8F91\u901A\u77E5
-view_alert_definition_notification_operation_editor_common_operation = \u64CD\u4F5C
-view_alert_definition_notification_operation_editor_mode_relative =
\u76F8\u5173\u8D44\u6E90
-view_alert_definition_notification_operation_editor_mode_specific =
\u6307\u5B9A\u8D44\u6E90
-view_alert_definition_notification_operation_editor_mode_this = \u8FD9\u4E2A\u8D44\u6E90
-view_alert_definition_notification_operation_editor_mode_title =
\u8D44\u6E90\u9009\u62E9\u6A21\u5F0F
-view_alert_definition_notification_operation_editor_mode_unknown = UNKNOWN OPTION - THIS
IS A BUG
-view_alert_definition_notification_operation_editor_operations_loadFailed = Failed to
load the list of available operations
-view_alert_definition_notification_operation_editor_operations_no_parameters = This
operation does not take any parameters
-view_alert_definition_notification_operation_editor_relative_ancestor = Start Search
From
-view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed = Cannot
get type ancestry
-view_alert_definition_notification_operation_editor_relative_ancestor_root = Root
Ancestor Type
-view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Select
the top of the type hierarchy from which to search its descendant tree for the Filter By
type
-view_alert_definition_notification_operation_editor_relative_descendant = Then Filter By
-view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip =
A specific name to uniquely identify a resource when more than one resource of the
selected type might exist. This is optional if there will only ever be one resource of the
resource type in the selected type hierarchy.
-view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
Cannot get type descendants
-view_alert_definition_notification_operation_editor_relative_descendant_tooltip = The
resource type to search for under the root type defined in the Start Search From
selection.
-view_alert_definition_notification_operation_editor_specific_pick_button = Pick
-view_alert_definition_notification_operation_editor_specific_pick_error_invalid = Please
pick a resource
-view_alert_definition_notification_operation_editor_specific_pick_error_no_operation =
Please pick a resource that has one or more operations
-view_alert_definition_notification_operation_editor_specific_pick_text = Pick a
resource...
-view_alert_definition_notification_operation_editor_specific_resource = \u8D44\u6E90
-view_alert_definition_notification_role_editor_loadFailed = Cannot determine current
roles - starting empty
-view_alert_definition_notification_role_editor_restoreFailed = Cannot use current roles -
starting empty
-view_alert_definition_notification_role_editor_saveFailed = Cannot save the selected
roles
-view_alert_definition_notification_user_editor_loadFailed = Cannot determine current
users - starting empty
-view_alert_definition_notification_user_editor_restoreFailed = Cannot use current users -
starting empty
-view_alert_definition_notification_user_editor_saveFailed = Cannot save the selected
users
-view_alert_definition_recovery_editor_disable_when_fired = Disable When Fired
-view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indicates if this
alert will be disabled after it fires. Once disabled, the alert can be manually re-enabled
or a recovery alert can be set up to automatically re-enable it. If this alert is a
recovery alert itself, this setting cannot be turned on.
-view_alert_definition_recovery_editor_loadFailed = Cannot build recovery menu
-view_alert_definition_recovery_editor_none_available = None
-view_alert_definition_recovery_editor_recovery_alert = Recover Alert
-view_alert_definition_recovery_editor_recovery_alert_tooltip = The target alert that will
be recovered (i.e. re-enabled) after this alert triggers. Do not select an alert here if
you are not defining a recovery alert.
-view_alert_definitions_create_failure = Alert definition creation failed
-view_alert_definitions_create_success = Alert definition successfully created
-view_alert_definitions_delete_confirm = Delete the selected alert definition(s)?
-view_alert_definitions_delete_failure = Failed to deleted the selected alert definitions
-view_alert_definitions_delete_success = Successfully deleted {0} alert definitions
-view_alert_definitions_disable_confirm = Disable the selected alert definition(s)?
-view_alert_definitions_disable_failure = Failed to disable the selected alert
definitions
-view_alert_definitions_disable_success = Successfully disabled {0} alert definitions
-view_alert_definitions_enable_confirm = Enable the selected alert definition(s)?
-view_alert_definitions_enable_failure = Failed to enable the selected alert definitions
-view_alert_definitions_enable_success = Successfully enabled {0} alert definitions
-view_alert_definitions_loadFailed = Failed to fetch alert definition data
-view_alert_definitions_loadFailed_single = Failed to fetch data for alert definition with
id {0}
-view_alert_definitions_table_title_group = \u7EC4\u544A\u8B66\u5B9A\u4E49
-view_alert_definitions_table_title_resource = \u7EC4\u544A\u8B66\u5B9A\u4E49
-view_alert_definitions_update_failure = \u544A\u8B66\u5B9A\u4E49\u66F4\u65B0\u5931\u8D25
-view_alert_definitions_update_success = \u544A\u8B66\u5B9A\u4E49\u66F4\u65B0\u6210\u529F
-view_alert_details_field_ack_at = \u786E\u8BA4\u4E8E
-view_alert_details_field_ack_by = \u786E\u8BA4\u8005
-view_alert_details_field_recovery_info = \u8FD8\u539F\u4FE1\u606F
-view_alert_details_loadFailed = \u53D6\u5F97\u544A\u8B66\u8BE6\u60C5\u5931\u8D25
-view_alerts_ack_confirm = Acknowledge the selected alert(s)?
-view_alerts_ack_confirm_all = Acknowledge all alerts from this source?
-view_alerts_ack_failure = Failed to acknowledge alerts with id''s: {0}
-view_alerts_ack_failure_all = Failed to acknowledge all alerts from this source
-view_alerts_ack_success = Successfully acknowledged {0} alerts
-view_alerts_delete_confirm = Delete the selected alert(s)?
-view_alerts_delete_confirm_all = Delete all alerts from this source?
-view_alerts_delete_failure = Failed to delete alerts with id''s: {0}
-view_alerts_delete_failure_all = Failed to delete all alerts from this source
-view_alerts_delete_success = Successfully deleted {0} alerts
-view_alerts_field_ack_status = \u72B6\u6001
-view_alerts_field_ack_status_ack = Ack ({0})
-view_alerts_field_ack_status_ackHover = \u786E\u8BA4\u8005{0}\u4E8E{1}
-view_alerts_field_ack_status_noAck = No Ack
-view_alerts_field_ack_status_noAckHover = \u8FD8\u6CA1\u786E\u8BA4\u7684
-view_alerts_field_ack_subject = Acknowledge Subject
-view_alerts_field_ack_time = \u786E\u8BA4\u65F6\u95F4
-view_alerts_field_condition_text = Condition Text
-view_alerts_field_condition_text_many = Multiple Conditions
-view_alerts_field_condition_text_none = No Conditions
-view_alerts_field_condition_value = Condition Value
-view_alerts_field_created_time = \u4EA7\u751F\u65F6\u95F4
-view_alerts_field_enabled = \u542F\u7528
-view_alerts_field_modified_time = \u4FEE\u6539\u65F6\u95F4
-view_alerts_field_name = Name
-view_alerts_field_parent = \u7236
-view_alerts_field_priority = \u4F18\u5148\u7EA7
-view_alerts_field_protected = Protected
-view_alerts_field_protected_tooltip = If true, this definition is protected from being
changed by the parent definition. In other words, the parent definition settings will not
override this definition.
-view_alerts_loadFailed = Failed to fetch alerts data
-view_alerts_table_filter_priority = \u4F18\u5148\u7EA7\u8FC7\u6EE4
-view_alerts_table_title_group = \u7EC4\u544A\u8B66\u5386\u53F2
-view_alerts_table_title_resource = \u8D44\u6E90\u544A\u8B66\u5386\u53F2
-view_autoDiscoveryQ_committed = Committed
-view_autoDiscoveryQ_confirmSelect = \u662F\u5426\u9009\u4E2D\u5B50\u8282\u70B9\uFF1F
-view_autoDiscoveryQ_deleted = Deleted
-view_autoDiscoveryQ_field_discoveryTime = \u53D1\u73B0\u65F6\u95F4
-view_autoDiscoveryQ_field_inventoryStatus = \u6E05\u5355\u72B6\u6001
-view_autoDiscoveryQ_field_key = \u8D44\u6E90Key
-view_autoDiscoveryQ_field_name = \u8D44\u6E90\u540D\u79F0
-view_autoDiscoveryQ_field_parentId = \u7236ID
-view_autoDiscoveryQ_ignore = \u5FFD\u7565
-view_autoDiscoveryQ_ignoreFailure = Failed to ignore resources
-view_autoDiscoveryQ_ignoreSuccessful = \u6210\u529F\u5FFD\u7565\u9009\u5B9A\u8D44\u6E90.
-view_autoDiscoveryQ_ignored = Ignored
-view_autoDiscoveryQ_import = \u5BFC\u5165
-view_autoDiscoveryQ_importFailure = \u5BFC\u5165\u8D44\u6E90\u5931\u8D25
-view_autoDiscoveryQ_importSuccessful = \u6210\u529F\u5BFC\u5165\u88AB\u9009\u8D44\u6E90.
-view_autoDiscoveryQ_loadFailure =
\u52A0\u8F7D\u8D44\u6E90\u6E05\u5355\u53D1\u73B0\u961F\u5217\u5931\u8D25
-view_autoDiscoveryQ_new = New
-view_autoDiscoveryQ_newAndIgnored = New and Ignored
-view_autoDiscoveryQ_noItems = \u65E0\u6761\u76EE\u663E\u793A
-view_autoDiscoveryQ_noperm =
(\u60A8\u6CA1\u6709\u6743\u9650\u67E5\u770B\u81EA\u52A8\u53D1\u73B0\u961F\u5217)
-view_autoDiscoveryQ_showStatus = \u663E\u793A\u72B6\u6001
-view_autoDiscoveryQ_title = \u81EA\u52A8\u53D1\u73B0\u961F\u5217
-view_autoDiscoveryQ_unignore = Unignore
-view_autoDiscoveryQ_unignoreFailure = Failed to unignore resources
-view_autoDiscoveryQ_unignoreSuccessful =
\u6210\u529F\u4F7F\u9009\u4E2D\u7684\u8D44\u6E90\u751F\u6548.
-view_autoDiscoveryQ_uninventoried = Uninventoried
-view_bundleVersion_loadFailure = Failed to load bundle version data
-view_bundle_bundle = Bundle
-view_bundle_bundleDeployment = Bundle\u53D1\u5E03
-view_bundle_bundleDeployments = Bundle\u53D1\u5E03
-view_bundle_bundleDestinations = Bundle\u76EE\u7684\u5730
-view_bundle_bundleFiles = Bundle\u6587\u4EF6
-view_bundle_bundleType = Bundle\u7C7B\u578B
-view_bundle_bundleVersion = Bundle\u7248\u672C
-view_bundle_bundleVersions = Bundle\u7248\u672C
-view_bundle_bundles = Bundles
-view_bundle_createWizard_bundleDistro = Bundle Distribution
-view_bundle_createWizard_cancelFailure = Failed to fully cancel the creation of bundle
[{0}], version = [{1}] - the bundle may still exist in the database
-view_bundle_createWizard_cancelSuccessful = Canceled the creation of bundle [{0}],
version = [{1}]
-view_bundle_createWizard_clickToUploadRecipe = Click to load a recipe file
-view_bundle_createWizard_createFailure = \u521B\u5EFAbundle\u5931\u8D25
-view_bundle_createWizard_createSuccessful = You have successfully created a bundle named
[{0}] with a version of [{1}]
-view_bundle_createWizard_enterRecipe = Please supply a valid recipe
-view_bundle_createWizard_enterUrl = Please enter a valid URL where the bundle
distribution file can be downloaded from
-view_bundle_createWizard_failedToUploadDistroFile = Failed to upload bundle distribution
file
-view_bundle_createWizard_failedToUploadFile = Failed to upload bundle file
-view_bundle_createWizard_loadBundleFileFailure = Cannot obtain bundle file information
from server
-view_bundle_createWizard_noAdditionalFilesNeeded = No additional files need to be
uploaded for this bundle
-view_bundle_createWizard_noBundleTypesAvail = No bundle types are available
-view_bundle_createWizard_noBundleTypesSupported = No bundle types are supported - you
must deploy a valid plugin that supports bundle deployments
-view_bundle_createWizard_provideBundleDistro = Provide a Bundle Distribution
-view_bundle_createWizard_recipeOption = Recipe
-view_bundle_createWizard_title = \u521B\u5EFABundle
-view_bundle_createWizard_uploadInProgress = Upload is in progress... This can take
several minutes for large files
-view_bundle_createWizard_uploadOption = \u4E0A\u4F20
-view_bundle_createWizard_uploadStepName = Upload Bundle Files
-view_bundle_createWizard_urlOption = URL
-view_bundle_createWizard_windowTitle = Bundle\u521B\u5EFA\u5411\u5BFC
-view_bundle_createWizard_youMustChooseOne = You must choose one option in order to create
a bundle!
-view_bundle_deleteConfirm = \u4F60\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u4E2Abundle?
\u8FD9\u4E2Abundle\u6240\u6709\u7684\u7248\u672C,
\u76EE\u7684\u5730\u548C\u90E8\u7F72\u5C06\u88AB\u5220\u9664.
-view_bundle_deploy = \u53D1\u5E03
-view_bundle_deployDir = \u53D1\u5E03\u76EE\u5F55
-view_bundle_deployWizard_deployStep = \u53D1\u5E03Bundle\u5230\u76EE\u7684\u5E73\u53F0
-view_bundle_deployWizard_deploying = \u53D1\u5E03\u4E2D...
-view_bundle_deployWizard_deploymentCreated = \u521B\u5EFA\u90E8\u7F72...
-view_bundle_deployWizard_deploymentCreatedDetail = You have created the deployment [{0}]
with the description [{1}]
-view_bundle_deployWizard_deploymentCreatedDetail_concise = You have created the
deployment [{0}]
-view_bundle_deployWizard_deploymentScheduled = Bundle Deployment Scheduled!
-view_bundle_deployWizard_deploymentScheduledDetail = You have scheduled the bundle
deployment [{0}] to the destination group [{1}]
-view_bundle_deployWizard_deploymentScheduledDetail_concise = You have scheduled the
bundle deployment
-view_bundle_deployWizard_destinationCreatedDetail = You have created the destination
[{0}] with the description [{1}]
-view_bundle_deployWizard_destinationCreatedDetail_concise = You have created the
destination [{0}]
-view_bundle_deployWizard_error_1 = Failed to delete new deployment on Cancel
-view_bundle_deployWizard_error_10 = Failed to create destination, it may already exist.
(Note, for an existing destination deploy from the Destination view)
-view_bundle_deployWizard_error_11 = Failed to find defined deployments.
-view_bundle_deployWizard_error_12 = Failed to find defined bundles.
-view_bundle_deployWizard_error_2 = Failed to delete new destination on Cancel
-view_bundle_deployWizard_error_3 = Failed to Schedule Deployment!
-view_bundle_deployWizard_error_4 = Failed to schedule deployment: {0}
-view_bundle_deployWizard_error_5 = \u521B\u5EFA\u53D1\u5E03\u5931\u8D25!
-view_bundle_deployWizard_error_6 = \u521B\u5EFA\u53D1\u5E03\u5931\u8D25: {0}
-view_bundle_deployWizard_error_7 = Failed to get deployment name.
-view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down
-view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage
-view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
-view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
-view_bundle_deployWizard_getDestStep = \u65B0\u5EFA\u76EE\u7684\u5730
-view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)
-view_bundle_deployWizard_getDest_desc = \u76EE\u7684\u5730\u63CF\u8FF0
-view_bundle_deployWizard_getDest_name = \u76EE\u7684\u5730\u540D
-view_bundle_deployWizard_getInfoStep = \u63D0\u4F9B\u53D1\u5E03\u4FE1\u606F
-view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
-view_bundle_deployWizard_getInfo_deploymentDesc = \u53D1\u5E03\u63CF\u8FF0
-view_bundle_deployWizard_getInfo_deploymentName = \u53D1\u5E03\u540D\u79F0
-view_bundle_deployWizard_getOptionsStep = \u53D1\u5E03\u9009\u9879
-view_bundle_deployWizard_getOptions_deployLater = \u7A0D\u5019\u53D1\u5E03
-view_bundle_deployWizard_getOptions_deployNow = \u9A6C\u4E0A\u53D1\u5E03
-view_bundle_deployWizard_getOptions_deployTime = \u53D1\u5E03\u65F6\u95F4
-view_bundle_deployWizard_selectBundleStep = Select Deployment Bundle
-view_bundle_deployWizard_selectBundle_single = Select only a single bundle for
deployment.
-view_bundle_deployWizard_selectVersionStep = Select Deployment Bundle Version
-view_bundle_deployWizard_selectVersion_latest = \u6700\u65B0\u7248\u672C [{0}]
-view_bundle_deployWizard_selectVersion_live = Live Version [{0}]
-view_bundle_deployWizard_selectVersion_select = Select Version from List:
-view_bundle_deployWizard_title = Bundle\u53D1\u5E03\u5411\u5BFC
-view_bundle_deploy_action = \u64CD\u4F5C
-view_bundle_deploy_backButton = \u8FD4\u56DE
-view_bundle_deploy_clickForError = Click the icon for the error message
-view_bundle_deploy_deleteConfirm = Are you sure you want to delete this bundle
deployment?
-view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
-view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
-view_bundle_deploy_deployedBy = \u53D1\u5E03\u8005
-view_bundle_deploy_deploymentPlatforms = \u53D1\u5E03\u5E73\u53F0
-view_bundle_deploy_installDetails = \u5B89\u88C5\u7EC6\u8282
-view_bundle_deploy_loadBundleFailure = \u67E5\u627Ebundle\u5931\u8D25
-view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments
-view_bundle_deploy_loadFailure = Failed to load bundle deployment
-view_bundle_deploy_name = \u53D1\u5E03\u540D
-view_bundle_deploy_operatingSystem = \u64CD\u4F5C\u7CFB\u7EDF
-view_bundle_deploy_selectARow = \u9009\u4E2D\u884C\u663E\u793A\u5B89\u88C5\u7EC6\u8282
-view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags
-view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags
-view_bundle_deploy_time = \u53D1\u5E03\u65F6\u95F4
-view_bundle_deployed = \u5DF2\u53D1\u5E03
-view_bundle_deployments = \u53D1\u5E03
-view_bundle_dest_backToBundle = \u8FD4\u56DEBundle
-view_bundle_dest_created = \u5DF2\u521B\u5EFA
-view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle
destination? This only deletes it from the database; all bundle content that was deployed
to this destination on remote machines will remain.
-view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
-view_bundle_dest_deleteSuccessful = You successfully deleted the bundle destination
[{0}]
-view_bundle_dest_deployDir = \u53D1\u5E03\u76EE\u5F55
-view_bundle_dest_group = \u7EC4
-view_bundle_dest_lastDeployedVersion = \u4E0A\u6B21\u53D1\u5E03\u7248\u672C
-view_bundle_dest_lastDeploymentDate = \u4E0A\u6B21\u53D1\u5E03\u65E5\u671F
-view_bundle_dest_lastDeploymentStatus = \u4E0A\u6B21\u53D1\u5E03\u72B6\u6001
-view_bundle_dest_loadFailure = \u52A0\u8F7Dbundle\u76EE\u7684\u5730\u5931\u8D25
-view_bundle_dest_loadFailureVersionInfo = Failed to load bundle destination deployed
version information
-view_bundle_dest_purgeConfirm = This will purge the bundle content from all remote
machines. Are you sure you want to do this?
-view_bundle_dest_purgeFailure = Failed to purge the bundle destination [{0}] from some
or all of the remote machines.
-view_bundle_dest_purgeSuccessful = You successfully purged the bundle destination [{0}]
from all of the remote machines.
-view_bundle_dest_revertConfirm = This will revert all remote machines back to the
previous bundle deployment. Are you sure you want to do this?
-view_bundle_dest_tagUpdateFailure = Failed to update bundle destination tags
-view_bundle_dest_tagUpdateSuccessful = You have successfully updated the bundle
destination tags
-view_bundle_destinations = \u76EE\u7684\u5730
-view_bundle_fileListView_fileSize = \u6587\u4EF6\u5927\u5C0F
-view_bundle_fileListView_loadFailure = \u52A0\u8F7Dbundle\u6587\u4EF6\u5931\u8D25
-view_bundle_fileListView_md5 = MD5
-view_bundle_fileListView_sha256 = SHA256
-view_bundle_files = \u6587\u4EF6
-view_bundle_latestVersion = \u6700\u65B0\u7248\u672C
-view_bundle_list_backToAll = \u8FD4\u56DE\u6240\u6709Bundles
-view_bundle_list_deleteConfirm = Are you sure you want to delete the selected bundles?
-view_bundle_list_deleteFailure = Failed to delete the bundle [{0}]
-view_bundle_list_deleteSuccessful = You successfully deleted the bundle [{0}]
-view_bundle_list_deletesFailure = Failed to delete the bundles
-view_bundle_list_deletesSuccessful = You successfully deleted the bundles
-view_bundle_list_destinationsCount = Destinations Count
-view_bundle_list_error1 = Failed to load bundle to deploy [{0}]
-view_bundle_list_error2 = Failed to get a single bundle to deploy [{0}]
-view_bundle_list_error3 = \u52A0\u8F7Dbundle\u5931\u8D25
-view_bundle_list_loadFailure = Failed to load the bundle to be deployed [{0}]
-view_bundle_list_loadWithLatestFailure = Failed to load bundle with the latest version
data
-view_bundle_list_singleLoadFailure = Failed to get a single bundle to be deployed [{0}]
-view_bundle_list_tagUpdateFailure = \u66F4\u65B0bundle\u6807\u8BB0\u5931\u8D25
-view_bundle_list_tagUpdateSuccessful = You have successfully updated the bundle tags
-view_bundle_list_versionsCount = \u7248\u672C\u6570\u91CF
-view_bundle_purge = \u6E05\u9664
-view_bundle_recipe = Recipe
-view_bundle_resDeployDS_loadFailure = Failed to load bundle resource deployments
-view_bundle_revert = \u8FD8\u539F
-view_bundle_revertWizard_confirmStep_confirmation = Reverting Live Deployment to Previous
Deployment. Click "Next" to continue...
-view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment = Failed to find live
deployment; cannot revert
-view_bundle_revertWizard_confirmStep_liveDeployment = Live Deployment
-view_bundle_revertWizard_confirmStep_name = \u53D1\u5E03\u8FD8\u539F\u786E\u8BA4
-view_bundle_revertWizard_confirmStep_noLiveDeployment = No live deployment was found for
the destination [{0}]
-view_bundle_revertWizard_confirmStep_noLiveDeployment_concise = No live deployment was
found for the destination
-view_bundle_revertWizard_confirmStep_noPriorDeployment = The live deployment [{0}] cannot
be reverted because there is no prior deployment for the destination [{1}]
-view_bundle_revertWizard_confirmStep_noPriorDeployment_concise = The live deployment
cannot be reverted because there is no prior deployment
-view_bundle_revertWizard_confirmStep_prevDeployment = Previous Deployment
-view_bundle_revertWizard_getInfoStep_cleanDeploy = Clean Deployment? (this will delete an
old, existing deploy directory prior to starting the revert deployment)
-view_bundle_revertWizard_getInfoStep_getNameFailure = Failed to get revert deployment
name
-view_bundle_revertWizard_getInfoStep_name = \u63D0\u4F9B\u8FD8\u539F\u4FE1\u606F
-view_bundle_revertWizard_getInfoStep_revertDeployDesc =
\u90E8\u7F72\u8FD8\u539F\u63CF\u8FF0
-view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT
From]\\n{0}\\n\\n[REVERT To]\\n{1}
-view_bundle_revertWizard_getInfoStep_revertDeployName =
\u90E8\u7F72\u8FD8\u539F\u540D\u79F0
-view_bundle_revertWizard_revertStep_name = Deploy Bundle to Destination Platforms
-view_bundle_revertWizard_revertStep_reverting = \u8FD8\u539F\u4E2D...
-view_bundle_revertWizard_revertStep_scheduled = You have successfully scheduled the
revert deployment!
-view_bundle_revertWizard_revertStep_scheduledDetails = You have successfully scheduled to
revert the bundle deployment [{0}] from resource group [{1}]
-view_bundle_revertWizard_revertStep_scheduledFailure = Failed to schedule revert
deployment!
-view_bundle_revertWizard_title = Bundle\u8FD8\u539F
-view_bundle_revertWizard_windowTitle = Bundle\u8FD8\u539F\u5411\u5BFC
-view_bundle_tree_loadFailure = \u52A0\u8F7Dbundle\u6570\u636E\u5931\u8D25
-view_bundle_version_backToBundle = \u8FD4\u56DEBundle
-view_bundle_version_bundleVersionTagUpdateFailure =
\u66F4\u65B0bundle\u7248\u672C\u6807\u8BB0\u5931\u8D25
-view_bundle_version_bundleVersionTagUpdateSuccessful =
\u66F4\u65B0bundle\u7248\u672C\u6807\u8BB0\u6210\u529F
-view_bundle_version_deleteConfirm =
\u4F60\u786E\u5B9A\u8981\u5220\u9664bundle\u7248\u672C?
-view_bundle_version_deleteFailure = \u5220\u9664bundle\u7248\u672C[{0}]\u5931\u8D25
-view_bundle_version_deleteSuccessful = \u5220\u9664bundle\u7248\u672C[{0}]\u6210\u529F
-view_bundle_version_loadFailure = \u52A0\u8F7Dbundle\u7248\u672C\u5931\u8D25
-view_bundle_versions = \u7248\u672C
-view_configCompare_comparingConfigs = \u6BD4\u8F83\u8BBE\u7F6E
-view_configCompare_configCompare = \u914D\u7F6E\u6BD4\u8F83\u7ED3\u679C\u96C6
-view_configEdit_addItem = \u6DFB\u52A0\u6761\u76EE\u81F3\u5217\u8868.
-view_configEdit_confirm_1 =
\u786E\u5B9A\u8981\u4ECE\u96C6\u5408\u4E2D\u5220\u9664\u6307\u5B9A\u7684\u5C5E\u6027?
-view_configEdit_confirm_2 = \u786E\u5B9A\u8981\u5220\u9664\u8BE5\u884C?
-view_configEdit_confirm_3 = \u786E\u5B9A\u8981\u5220\u9664
[{0}]\u9879\u9009\u4E2D\u7684 [{1}]?
-view_configEdit_editRow = \u7F16\u8F91\u884C
-view_configEdit_enterPropName =
\u8F93\u5165\u8981\u6DFB\u52A0\u7684\u5C5E\u6027\u540D\u79F0.
-view_configEdit_error_1 = \u6B64\u8D44\u6E90\u65E0\u6CD5\u914D\u7F6E.
-view_configEdit_error_2 =
\u6B64\u8D44\u6E90\u65E0\u6CD5\u8FDB\u884C\u8FDE\u63A5\u8BBE\u7F6E.
-view_configEdit_error_3 =
\u65E0\u6CD5\u6DFB\u52A0\u540D\u4E3A[{0}]\u7684\u5C5E\u6027.
\u5C5E\u6027\u540D\u5728\u96C6\u5408\u4E2D\u5DF2\u7ECF\u88AB\u4F7F\u7528.
-view_configEdit_files = \u6587\u4EF6
-view_configEdit_hideAll = \u9690\u85CF\u6240\u6709
-view_configEdit_jumpToSection = \u8DF3\u81F3\u6A21\u5757
-view_configEdit_msg_1 = \u589E\u52A0\u5C5E\u6027 [{0}]\u5230\u96C6\u5408.
-view_configEdit_msg_2 =
\u79FB\u9664\u96C6\u5408\u5185\u6240\u6709\u7684\u5C5E\u6027.
-view_configEdit_msg_3 = \u4ECE\u5217\u8868\u4E2D\u5220\u9664[{0}
{1}]\u6210\u529F.
-view_configEdit_msg_4 = \u6DFB\u52A0\u6761\u76EE\u81F3\u5217\u8868.
-view_configEdit_properties = \u5C5E\u6027
-view_configEdit_tooltip_1 =
\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u6761\u76EE.
-view_configEdit_tooltip_2 =
\u6DFB\u52A0\u4E00\u9879\u6761\u76EE\u5230\u5217\u8868.
-view_configEdit_viewRow = \u67E5\u770B\u884C
-view_configurationDetails_allPropertiesValid =
\u6240\u6709\u7684\u914D\u7F6E\u4FE1\u606F\u5DF2\u7ECF\u586B\u5199\u4E86\u6709\u6548\u7684\u503C,
\u73B0\u5728\u4FDD\u5B58\u914D\u7F6E.
-view_configurationDetails_configNotUpdatedDueToNoChange =
\u7531\u4E8E\u65B0\u65E7\u914D\u7F6E\u4E00\u81F4\uFF0C\u6240\u4EE5\u914D\u7F6E\u6CA1\u6709\u66F4\u65B0.
-view_configurationDetails_error_updateFailure = \u66F4\u65B0\u914D\u7F6E\u5931\u8D25.
-view_configurationDetails_messageConcise = \u914D\u7F6E\u66F4\u65B0\u6210\u529F -
\u76EE\u524D\u7248\u672C\u662F {0}.
-view_configurationDetails_messageDetailed = \u8D44\u6E90
[{1}]\u7684\u914D\u7F6E\u7248\u672C\u66F4\u65B0\u5230 {0} .
-view_configurationDetails_noPermission =
\u60A8\u6CA1\u6709\u6743\u9650\u7F16\u8F91\u6B64\u8D44\u6E90\u7684\u914D\u7F6E\u4FE1\u606F.
-view_configurationDetails_somePropertiesInvalid =
\u4E0B\u9762\u7684\u914D\u7F6E\u4FE1\u606F\u586B\u5199\u4E86\u975E\u6CD5\u7684\u503C: {0}.
\u5FC5\u987B\u4FEE\u6539\u6B64\u4FE1\u606F\u4EE5\u4FBF\u4FDD\u5B58\u6B64\u914D\u7F6E.
-view_configurationHistoryDetails_error_loadFailure =
\u65E0\u6CD5\u52A0\u8F7D\u5386\u53F2\u914D\u7F6E.
-view_configurationHistoryList_cannotDeleteCurrent =
\u9009\u4E2D\u7684\u5386\u53F2\u914D\u7F6E\u4E2D\u7684\u4E00\u9879\u662F\u73B0\u6709\u751F\u6548\u7684\u914D\u7F6E
- \u4F60\u4E0D\u80FD\u5220\u9664\u5B83.
-view_configurationHistoryList_cannotDeleteGroupItems =
\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u4E2D\u7684\u5386\u53F2\u914D\u7F6E\u9879\u662F\u67D0\u4E2A\u7EC4\u914D\u7F6E\u7684\u4E00\u90E8\u5206\u3002
\u5728\u5220\u9664\u5355\u4E2A\u7684\u5386\u53F2\u914D\u7F6E\u4FE1\u606F\u4E4B\u524D\uFF0C\u5FC5\u987B\u5148\u5220\u9664
\u4E0A\u4E00\u7EA7\u7684\u5386\u53F2\u7EC4\u914D\u7F6E.
-view_configurationHistoryList_delete_failure =
\u5220\u9664\u5386\u53F2\u914D\u7F6E\u9879\u5931\u8D25
-view_configurationHistoryList_delete_success =
\u60A8\u6210\u529F\u7684\u5220\u9664\u4E86\u9009\u4E2D\u7684\u5386\u53F2\u914D\u7F6E\u9879.
-view_configurationHistoryList_rollback = \u56DE\u6EDA
-view_configurationHistoryList_rollback_failure = \u56DE\u6EDA\u914D\u7F6E\u5931\u8D25.
\u539F\u6765\u7684\u914D\u7F6E\u4F9D\u7136\u751F\u6548.
-view_configurationHistoryList_rollback_success =
\u60A8\u6210\u529F\u7684\u5C06\u8BE5\u914D\u7F6E\u56DE\u6EDA\u5230\u9009\u4E2D\u7684\u5386\u53F2\u914D\u7F6E.
-view_configurationHistoryList_table_clickStatusIcon =
\u70B9\u51FB\u72B6\u6001\u6309\u94AE\u83B7\u53D6\u8BE6\u7EC6\u7684\u4FE1\u606F
-view_configurationHistoryList_table_statusFailure =
\u6B64\u914D\u7F6E\u66F4\u65B0\u5931\u8D25
-view_configurationHistoryList_table_statusInprogress =
\u66F4\u65B0\u6B64\u914D\u7F6E\u7684\u64CD\u4F5C\u6B63\u5728\u8FDB\u884C\u4E2D
-view_configurationHistoryList_table_statusNochange =
\u6CA1\u6709\u5BF9\u6B64\u914D\u7F6E\u505A\u4EFB\u4F55\u4FEE\u6539
-view_configurationHistoryList_table_statusSuccess =
\u6B64\u914D\u7F6E\u6210\u529F\u66F4\u65B0
-view_configurationHistoryList_title = \u5386\u53F2\u914D\u7F6E
-view_connectionSettingsDetails_allPropertiesValid =
\u6240\u6709\u8FDE\u63A5\u8BBE\u7F6E\u7684\u914D\u7F6E\u5DF2\u7ECF\u586B\u5199\u4E86\u6709\u6548\u7684\u503C,\u73B0\u5728\u53EF\u4EE5\u4FDD\u5B58\u8BBE\u7F6E.
-view_connectionSettingsDetails_error_updateFailure =
\u66F4\u65B0\u8FDE\u63A5\u8BBE\u7F6E\u5931\u8D25.
-##view_connectionSettingsDetails_messageConcise_updateSuccess =
\u8FDE\u63A5\u8BBE\u7F6E\u5DF2\u66F4\u65B0.
-##view_connectionSettingsDetails_messageDetailed_updateSuccess = \u8D44\u6E90
[{0}]\u7684\u8FDE\u63A5\u8BBE\u7F6E\u5DF2\u7ECF\u66F4\u65B0.
-view_connectionSettingsDetails_noPermission =
\u60A8\u6CA1\u6709\u6743\u9650\u7F16\u8F91\u6B64\u8D44\u6E90\u7684\u8FDE\u63A5\u8BBE\u7F6E.
-view_connectionSettingsDetails_somePropertiesInvalid =
\u4E0B\u9762\u7684\u8FDE\u63A5\u8BBE\u7F6E\u4FE1\u606F\u586B\u5199\u4E86\u975E\u6CD5\u7684\u503C:
{0}.
\u5FC5\u987B\u4FEE\u6539\u6B64\u4FE1\u606F\u4EE5\u4FBF\u4FDD\u5B58\u6B64\u8BBE\u7F6E.
-view_core_error_1 = \u67E5\u627E\u65B0\u544A\u8B66\u4FE1\u606F\u5931\u8D25
-view_core_loggedOut = \u9000\u51FA\u767B\u5F55
-view_core_noRecentAlerts =
\u6CA1\u6709\u65B0\u4EA7\u751F\u7684\u544A\u8B66\u4FE1\u606F
-view_core_recentAlerts = \u65B0\u4EA7\u751F [{0}] \u6761\u544A\u8B66 -
\u70B9\u51FB\u8DF3\u8F6C\u5230\u65B0\u544A\u8B66\u62A5\u8868\u754C\u9762
-view_core_uncaught = \u5168\u5C40\u672A\u6355\u6349\u7684\u5F02\u5E38
-view_dashboardManager_deleteFail = \u5220\u9664\u7EDF\u8BA1\u8868\u76D8\u5931\u8D25.
-view_dashboardManager_deleted = \u6210\u529F\u5220\u9664\u7EDF\u8BA1\u8868\u76D8{0}
-view_dashboardManager_error = \u4FDD\u5B58\u7EDF\u8BA1\u8868\u76D8\u5931\u8D25
-view_dashboardManager_saved = \u4FDD\u5B58\u7EDF\u8BA1\u8868\u76D8{0}
-view_dashboardManager_success = \u6210\u529F\u4FDD\u5B58\u7EDF\u8BA1\u8868\u76D8
-view_dashboard_favorites_error1 = \u52A0\u8F7D\u5E38\u7528\u8D44\u6E90\u5931\u8D25.
-view_dashboardsManager_error1 = \u6DFB\u52A0\u65B0\u7EDF\u8BA1\u8868\u76D8\u5931\u8D25
-view_dashboardsManager_message_title_details =
<h1>\u6B22\u8FCE\u4F7F\u7528RHQ</h1>\n<p>RHQ\u9879\u76EE\u662F\u4E00\u4E2A\u62BD\u8C61\u7684\u3001\u57FA\u4E8E\u63D2\u4EF6\u7684\u7CFB\u7EDF\u7BA1\u7406\u5957\u4EF6\u3002\u901A\u8FC7\u4E00\u7CFB\u5217\u6838\u5FC3\u529F\u80FD\u63D0\u4F9B\u591A\u4EA7\u54C1\u548C\u5E73\u53F0\u7684\u53EF\u6269\u5C55\u7684\u96C6\u6210\u7BA1\u7406.
\u672C\u9879\u76EE\u5206\u5C42\u6A21\u5757\u5177\u6709\u7075\u6D3B\u53D1\u5E03\u67B6\u6784.
\u5B83\u63D0\u4F9B\u4E86\u4E00\u4E2A\u6838\u5FC3\u7528\u6237\u754C\u9762\u4F9B\u8DE8\u6574\u4E2A\u4F01\u4E1A\u7684\u5BA1\u8BA1\u548C\u5386\u53F2\u7BA1\u7406.
\u670D\u52A1\u5668/\u4EE3\u7406\u67B6\u6784\u63D0\u4F9B\u8FDC\u7A0B\u7BA1\u7406,\u63D2\u4EF6\u63D0\u4F9B\u7279\u5B9A\u4EA7\u54C1\u7684\u7BA1\u7406\u652F\u6301.</p>\n
<p>\u901A\u8FC7\u5355\u51FB(\u7F16\u8F91\u6A21\u5F0F)\u6309\u94AE\u53EF\u4EE5\u7F16\u8F91\u9ED8\u8BA4\u7EDF\u8BA1\u8868\u76D8.</p>
-view_dashboards_confirm1 = \u60A8\u786E\u5B9A\u8981\u5220\u9664\uFF1F
-view_dashboards_portlets_refresh_fail1 =
\u4FEE\u6539portlets\u81EA\u52A8\u5237\u65B0\u7684\u95F4\u9694\u65F6\u95F4\u5931\u8D25
-view_dashboards_portlets_refresh_fail2 =
\u505C\u7528portlets\u81EA\u52A8\u5237\u65B0\u7684\u91CD\u8F7D\u5931\u8D25
-view_dashboards_portlets_refresh_multiple_min = {0} \u5206\u949F
-view_dashboards_portlets_refresh_none = \u65E0\u5237\u65B0
-view_dashboards_portlets_refresh_one_min = 1 \u5206\u652F
-view_dashboards_portlets_refresh_success1 =
\u6210\u529F\u4FEE\u6539portlets\u81EA\u52A8\u5237\u65B0\u7684\u95F4\u9694\u65F6\u95F4
-view_dashboards_portlets_refresh_success2 =
\u6210\u529F\u505C\u7528portlets\u81EA\u52A8\u5237\u65B0\u7684\u91CD\u8F7D
-view_dashboards_title = \u7EDF\u8BA1\u8868\u76D8
-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
-view_dynagroup_definitionCreated =
\u60A8\u6210\u529F\u7684\u521B\u5EFA\u540D\u79F0\u4E3A[{0}]\u7684\u7EC4\u5B9A\u4E49
-view_dynagroup_definitionLoadFailure =
\u52A0\u8F7D\u6240\u6709\u7684\u7EC4\u5B9A\u4E49\u5931\u8D25
-view_dynagroup_definitions = \u52A8\u6001\u7EC4\u5B9A\u4E49
-view_dynagroup_deleteFailureSelection =
\u5220\u9664\u9009\u4E2D\u7684\u7EC4\u5B9A\u4E49\u5931\u8D25
-view_dynagroup_deleteSuccessfulSelection = \u6210\u529F\u7684\u5220\u9664
[{0}]\u7EC4\u5B9A\u4E49
-view_dynagroup_editing = \u7F16\u8F91 [{0}]
-view_dynagroup_exprBuilder_addExpression = \u6DFB\u52A0\u8868\u8FBE\u5F0F
-view_dynagroup_exprBuilder_comparisonType = \u5BF9\u6BD4\u7C7B\u578B
-view_dynagroup_exprBuilder_comparisonType_contains = \u5305\u542B
-view_dynagroup_exprBuilder_comparisonType_endsWith = ends with
-view_dynagroup_exprBuilder_comparisonType_equals = \u76F8\u7B49
-view_dynagroup_exprBuilder_comparisonType_startsWith = starts with
-view_dynagroup_exprBuilder_comparisonType_tooltip = \u5BF9\u6BD4\u7C7B\u578B
-view_dynagroup_exprBuilder_definingPlugin = \u5B9A\u4E49\u63D2\u4EF6
-view_dynagroup_exprBuilder_definingPlugin_tooltip = \u67E5\u627E\u63D2\u4EF6
-view_dynagroup_exprBuilder_expression = \u8868\u8FBE\u5F0F
-view_dynagroup_exprBuilder_expressionType = \u8868\u8FBE\u5F0F\u7C7B\u578B
-view_dynagroup_exprBuilder_expressionType_pluginConfig = \u63D2\u4EF6\u914D\u7F6E
-view_dynagroup_exprBuilder_expressionType_resource = \u8D44\u6E90
-view_dynagroup_exprBuilder_expressionType_resourceCategory = \u8D44\u6E90\u79CD\u7C7B
-view_dynagroup_exprBuilder_expressionType_resourceConfig = \u8D44\u6E90\u914D\u7F6E
-view_dynagroup_exprBuilder_expressionType_resourceType = \u8D44\u6E90\u7C7B\u578B
-view_dynagroup_exprBuilder_expressionType_tooltip =
\u6B64\u8868\u8FBE\u5F0F\u6307\u5B9A\u8868\u8FBE\u5F0F\u7684\u5C5E\u6027\u7C7B\u578B:<br/>
<b>\u8D44\u6E90</b>:
\u8D44\u6E90\u5C5E\u6027\uFF1A\u6BD4\u5982\u540D\u79F0\u548C\u7248\u672C<br/>
<b>\u8D44\u6E90\u7C7B\u578B</b>:
\u641C\u5BFB\u6307\u5B9A\u7C7B\u578B\u7684\u8D44\u6E90<br/>
<b>\u8D44\u6E90\u7C7B\u522B</b>:
\u6309\u7167\u7C7B\u522B\u67E5\u627E\u8D44\u6E90: \u5E73\u53F0, \u670D\u52A1\u5668,
\u670D\u52A1<br/> <b>\u7279\u5F81</b>:
\u5B58\u5728\u76D1\u63A7\u70B9\u7684\u8D44\u6E90<br/>
<b>\u63D2\u4EF6\u914D\u7F6E</b>:
\u6309\u7167\u63D2\u4EF6\u7EC4\u4EF6\u548C\u7EC4\u4EF6\u7684\u914D\u7F6E\u8BBE\u7F6E\u67E5\u8BE2<br/>
<b>\u8D44\u6E90\u914D\u7F6E</b>:
\u6309\u7167\u88AB\u7BA1\u8D44\u6E90\u7684\u914D\u7F6E\u8BBE\u7F6E\u67E5\u8BE2
-view_dynagroup_exprBuilder_expressionType_trait = \u7279\u5F81
-view_dynagroup_exprBuilder_expression_tooltip = This is the full expression that is
represented by the selections in the form below. This text will be added to your group
definition expression text when you click the "Add Expression" button.
-view_dynagroup_exprBuilder_groupBy = \u5206\u7EC4
-view_dynagroup_exprBuilder_groupBy_tooltip = GroupBy will cause the system to pivot on
the values from the entered expressions creating a separate group for each value. For
example, GroupBy on the cluster name to create a group for each cluster with all cluster
members in it.
-view_dynagroup_exprBuilder_noPlugins = --\u65E0\u63D2\u4EF6--
-view_dynagroup_exprBuilder_noProperties = -\u65E0\u5C5E\u6027--
-view_dynagroup_exprBuilder_noResourceTypes = --\u65E0\u8D44\u6E90\u7C7B\u578B--
-view_dynagroup_exprBuilder_pluginLoadFailure =
\u65E0\u6CD5\u83B7\u53D6\u63D2\u4EF6\u5217\u8868
-view_dynagroup_exprBuilder_propLoadFailure =
\u65E0\u6CD5\u83B7\u53D6\u5C5E\u6027\u5217\u8868
-view_dynagroup_exprBuilder_propertyName = \u5C5E\u6027\u540D\u79F0
-view_dynagroup_exprBuilder_propertyName_tooltip =
\u7528\u4E8E\u67E5\u8BE2\u7684\u5C5E\u6027\u540D\u79F0.
\u8FD9\u662F\u7531\u8868\u8FBE\u5F0F\u7C7B\u578B\u548C\u8D44\u6E90\u7C7B\u578B\u51B3\u5B9A\u7684.
-view_dynagroup_exprBuilder_resTypeLoadFailure =
\u65E0\u6CD5\u83B7\u53D6\u63D2\u4EF6[{0}]\u7684\u8D44\u6E90\u7C7B\u578B\u5217\u8868
-view_dynagroup_exprBuilder_resource = \u8D44\u6E90
-view_dynagroup_exprBuilder_resourceType = \u8D44\u6E90\u7C7B\u578B
-view_dynagroup_exprBuilder_resourceType_tooltip = \u8D44\u6E90\u7C7B\u578B
-view_dynagroup_exprBuilder_resource_child = Child
-view_dynagroup_exprBuilder_resource_grandparent = Grandparent
-view_dynagroup_exprBuilder_resource_greatGrandparent = GreatGrandparent
-view_dynagroup_exprBuilder_resource_greatGreatGrandparent = GreatGreatGrandparent
-view_dynagroup_exprBuilder_resource_parent = Parent
-view_dynagroup_exprBuilder_resource_resource = Resource
-view_dynagroup_exprBuilder_resource_tooltip =
\u9009\u62E9\u8981\u67E5\u8BE2\u8D44\u6E90\u6240\u5728\u7684\u5C42\u7EA7. \u4F8B\u5982,
\u9009\u4E2D
"parent"\u4F1A\u67E5\u8BE2\u51FA\u7236\u8D44\u6E90\u7684\u6EE1\u8DB3\u5269\u4F59\u8868\u8FBE\u5F0F\u7684\u8D44\u6E90.
-view_dynagroup_exprBuilder_title = \u8868\u8FBE\u5F0F\u7F16\u8BD1
-view_dynagroup_exprBuilder_unset = \u6062\u590D\u8BBE\u7F6E
-view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the "=" operator because
of how databases store and query data.
-view_dynagroup_exprBuilder_value_tooltip =
\u67E5\u8BE2\u8868\u8FBE\u5F0F\u5B57\u7B26\u4E32\u7684\u503C
-view_dynagroup_expression = \u8868\u8FBE\u5F0F
-view_dynagroup_expressionBuilderIconTooltip = \u8868\u8FBE\u5F0F\u7F16\u8BD1\u4E2D...
-view_dynagroup_expressionSet = \u8868\u8FBE\u5F0F\u7EC4
-view_dynagroup_lastCalculationTime = \u4E0A\u6B21\u8BA1\u7B97\u6301\u7EED\u65F6\u95F4
-view_dynagroup_loadDefinitionFailure = \u52A0\u8F7D\u7EC4\u5B9A\u4E49 [{0}]\u5931\u8D25
-view_dynagroup_loadDefinitionMissing = \u6CA1\u6709ID\u662F[{0}]\u7684\u7EC4\u5B9A\u4E49
-view_dynagroup_mixed = Mixed
-view_dynagroup_newGroupDefinition = \u65B0\u5EFA\u7EC4\u5B9A\u4E49
-view_dynagroup_nextCalculationTime = \u4E0B\u6B21\u8BA1\u7B97\u6301\u7EED\u65F6\u95F4
-view_dynagroup_permDenied =
\u60A8\u6CA1\u6709\u67E5\u770B\u7EC4\u5B9A\u4E49\u7684\u6743\u9650
-view_dynagroup_recalcFailure = \u91CD\u7B97\u7EC4\u5B9A\u4E49\u5931\u8D25
-view_dynagroup_recalcFailureSelection = Failed to recalculated the selected group
definitions
-view_dynagroup_recalcSuccessful = \u7EC4\u5B9A\u4E49\u5DF2\u7ECF\u91CD\u65B0\u8BA1\u7B97
-view_dynagroup_recalcSuccessfulSelection = You have successfully recalculated [{0}] group
definitions
-view_dynagroup_recalculate = \u91CD\u7B97
-view_dynagroup_recalculationInterval = \u91CD\u7B97\u95F4\u9694 (ms)
-view_dynagroup_recursive = \u9012\u5F52
-view_dynagroup_saveAndRecalculate = \u4FDD\u5B58&\u91CD\u7B97
-view_dynagroup_saveFailure =
\u4FDD\u5B58\u540D\u79F0\u4E3A[{0}]\u7684\u7EC4\u5B9A\u4E49\u5931\u8D25
-view_dynagroup_saveSuccessful =
\u60A8\u6210\u529F\u7684\u4FDD\u5B58\u4E86\u540D\u79F0\u4E3A[{0}]\u7684\u7EC4\u5B9A\u4E49
-view_dynagroup_singleSaveFailure = \u62A5\u9519\u4E86 -
\u6B63\u5E38\u5E94\u8BE5\u53EA\u521B\u5EFA\u5355\u4E2A\u7EC4\u5B9A\u4E49,
\u4F46\u662F\u5374\u521B\u5EFA\u4E86[{0}]\u4E2A.
-view_dynagroup_template_customExpression = Custom Expression...
-view_dynagroup_template_downedResources = All resources currently down
-view_dynagroup_template_jbossas4_clusters = JBossAS 4 - \u96C6\u7FA4
-view_dynagroup_template_jbossas4_earClusters = JBossAS 4 - Clustered EARs
-view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - All hosting any version of
"my" app
-view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - All non-secured
-view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - Unique versions
-view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - \u96C6\u7FA4
-view_dynagroup_template_platforms = Platform resources in inventory
-view_dynagroup_template_uniqueResourceTypes = Unique resource types in inventory
-view_groupConfigEdit_member = \u6210\u5458
-view_groupConfigEdit_noListProps =
\u7EC4\u914D\u7F6E\u76EE\u524D\u4E0D\u652F\u6301\u67E5\u770B\u5C5E\u6027\u4FE1\u606F.
-view_groupConfigEdit_setAll = \u8BBE\u7F6E\u6240\u6709\u7684\u503C\u5230:
-view_groupConfigEdit_tooltip_1 = \u6210\u5458\u503C\u6709\u5DEE\u5F02 -
\u70B9\u51FB\u6309\u94AE\u7F16\u8F91.
-view_groupConfigEdit_unset = \u56DE\u6EDA
-view_groupConfigEdit_valsDiff = \u6210\u5458\u503C\u6709\u5DEE\u5F02
-view_groupConfigEdit_valsDiffForProp = \u5C5E\u6027 [{0}]\u7684\u6210\u5458\u503C
-view_groupCreateWizard_createFailure = \u521B\u5EFA\u8D44\u6E90\u7EC4\u5931\u8D25
-view_groupCreateWizard_createStepName = \u7EC4\u8BBE\u7F6E
-view_groupCreateWizard_createStep_recursive = \u9012\u5F52
-view_groupCreateWizard_createSuccessful_concise =
\u6210\u529F\u7684\u521B\u5EFA\u4E86\u8D44\u6E90\u7EC4. [<a
href="{0}">\u67E5\u770B\u7EC4</a>]
-view_groupCreateWizard_createSuccessful_full =
\u6210\u529F\u7684\u521B\u5EFA\u540D\u79F0\u662F [{1}]\u5305\u542B
[{2}]\u4E2A\u8D44\u6E90\u6210\u5458\u7684[{0}]\u8D44\u6E90\u7EC4
-view_groupCreateWizard_membersStepName = \u9009\u62E9\u6210\u5458
-view_groupCreateWizard_title = \u521B\u5EFA\u7EC4
-view_groupCreateWizard_windowTitle = \u521B\u5EFA\u7EC4
-view_groupInventoryMembers_button_updateMembership =
\u66F4\u65B0\u6210\u5458\u5173\u7CFB\u4E2D...
-view_groupInventoryMembers_title_updateMembership = \u66F4\u65B0\u6210\u5458\u5173\u7CFB
-view_group_detail_failLoad =
\u52A0\u8F7D\u7EC4ID\u4E3A[{0}]\u7684\u7EC4\u4FE1\u606F\u5931\u8D25
-view_group_detail_failLoadComp =
\u52A0\u8F7D\u7EC4ID\u4E3A[{0}]\u7684\u6DF7\u5408\u7EC4\u4FE1\u606F\u5931\u8D25
-view_group_detail_failRecursiveChange =
\u4FEE\u6539\u7EC4[{0}]\u7684\u9012\u5F52\u8BBE\u7F6E\u5931\u8D25
-view_group_detail_recursiveChange =
\u6210\u529F\u7684\u4FEE\u6539\u7EC4[{0}]\u7684\u9012\u5F52\u8BBE\u7F6E
-view_group_inventory_activity_no_recent_metrics =
\u6B64\u7EC4\u6CA1\u6709\u6700\u65B0\u516C\u544A
-view_group_meas_schedules_title = Group Metric Collection Schedules
-view_group_membership_failFetch = \u83B7\u53D6\u8D44\u6E90\u7EC4\u5931\u8D25
-view_group_membership_saveFailure =
\u4FEE\u6539[{0}]\u7684\u7EC4\u6210\u5458\u5173\u7CFB\u5931\u8D25
-view_group_membership_saveSuccessful =
\u6210\u529F\u7684\u4FEE\u6539[{0}]\u7684\u7EC4\u6210\u5458\u5173\u7CFB
-view_group_operationScheduleDetails_failedToLoadMembers =
\u52A0\u8F7D\u7EC4\u6210\u5458\u4FE1\u606F\u5931\u8D25.
-view_group_operationScheduleDetails_field_execute = \u6267\u884C
-view_group_operationScheduleDetails_field_haltOnFailure =
\u5931\u8D25\u65F6\u505C\u6B62?
-view_group_operationScheduleDetails_memberResource = \u6210\u5458\u4FE1\u606F
-view_group_operationScheduleDetails_value_parallel =
\u91C7\u53D6\u5E76\u884C\u7684\u65B9\u5F0F
-view_group_operationScheduleDetails_value_sequential =
\u6309\u7167\u5982\u4E0B\u7684\u987A\u5E8F
(\u6DFB\u52A0\u6216\u8005\u5220\u9664\u6210\u5458\u4EE5\u4FEE\u6539\u987A\u5E8F)
-view_group_pluginConfig_edit_currentGroupProperties = \u7EC4\u5F53\u524D\u5C5E\u6027
-view_group_pluginConfig_edit_invalid = The following connection setting properties have
invalid values and must be corrected before the connection settings can be saved: [{0}]
-view_group_pluginConfig_edit_noperm =
\u60A8\u6CA1\u6709\u6743\u9650\u7F16\u8F91\u6B64\u7EC4\u8FDE\u63A5\u8BBE\u7F6E
-view_group_pluginConfig_edit_saveFailure = Failed to initiate group connection setting
update for [{0}] compatible group named [{1}]
-view_group_pluginConfig_edit_saveInitiated_concise =
\u7EC4\u8FDE\u63A5\u8BBE\u7F6E\u66F4\u65B0\u5DF2\u7ECF\u521D\u59CB\u5316
-view_group_pluginConfig_edit_saveInitiated_full = The group connection setting updates
have been initiated for the [{0}] compatible group named [{1}]
-view_group_pluginConfig_edit_saveTooltip =
\u66F4\u65B0\u6240\u6709\u7684\u7EC4\u6210\u5458\u8FDE\u63A5\u8BBE\u7F6E
-view_group_pluginConfig_edit_valid = All connection setting properties have valid values,
so the connection settings can now be saved
-view_group_pluginConfig_members_fetchFailure =
\u83B7\u53D6[{0}]\u7EC4\u6210\u5458\u7684\u63D2\u4EF6\u914D\u7F6E\u66F4\u65B0\u5386\u53F2\u5931\u8D25
-view_group_pluginConfig_members_fetchFailureConn =
\u68C0\u7D22[{0}]\u7684\u6210\u5458\u8FDE\u63A5\u8BBE\u7F6E\u5931\u8D25
-view_group_pluginConfig_members_fetchFailureConnInProgress =
\u5F53\u524D\u5DF2\u5B58\u5728\u7EC4\u63D2\u4EF6\u914D\u7F6E\u66F4\u65B0\u8FDB\u7A0B .
\u5728\u67E5\u770B\u7EC4\u8BBE\u7F6E\u4E4B\u524D\u9700\u8981\u7B49\u5F85\u66F4\u65B0\u5B8C\u6210.
-view_group_pluginConfig_members_statusDetails = \u8BE6\u7EC6\u72B6\u6001
-view_group_pluginConfig_members_statusFailure =
\u672A\u77E5\u9519\u8BEF\uFF0C\u914D\u7F6E\u4FEE\u6539\u5931\u8D25
-view_group_pluginConfig_members_statusInprogress =
\u6B63\u5728\u4FEE\u6539\u914D\u7F6E\u4E2D
-view_group_pluginConfig_members_statusNochange =
\u6CA1\u6709\u5BF9\u914D\u7F6E\u505A\u4EFB\u4F55\u4FEE\u6539
-view_group_pluginConfig_members_statusSuccess = \u4FEE\u6539\u914D\u7F6E\u6210\u529F
-view_group_pluginConfig_members_title =
\u7EC4\u6210\u5458\u8FDE\u63A5\u8BBE\u7F6E\u5386\u53F2
-view_group_pluginConfig_table_clickStatusIcon =
\u70B9\u51FB\u72B6\u6001\u6309\u94AE\u83B7\u53D6\u8BE6\u7EC6\u4FE1\u606F
-view_group_pluginConfig_table_deleteFailure =
\u5220\u9664\u7EC4\u63D2\u4EF6\u914D\u7F6E\u5386\u53F2\u5931\u8D25
-view_group_pluginConfig_table_deleteSuccessful = \u60A8\u5220\u9664\u4E86 [{0}]
\u5386\u53F2\u9879
-view_group_pluginConfig_table_failFetch =
\u83B7\u53D6\u7EC4\u63D2\u4EF6\u914D\u7F6E\u5386\u53F2\u5931\u8D25
-view_group_pluginConfig_table_msg1 =
\u67E5\u770B\u5355\u72EC\u8D44\u6E90\u7684\u6210\u5458\u5386\u53F2\u72B6\u6001
-view_group_pluginConfig_table_statusDetails = \u8BE6\u7EC6\u72B6\u6001
-view_group_pluginConfig_table_statusFailure =
\u4FEE\u6539\u6B64\u7EC4\u914D\u7F6E\u5931\u8D25
-view_group_pluginConfig_table_statusInprogress = \u7EC4\u914D\u7F6E\u66F4\u65B0\u4E2D
-view_group_pluginConfig_table_statusNochange =
\u6CA1\u6709\u5BF9\u6B64\u7EC4\u914D\u7F6E\u505A\u4EFB\u4F55\u4FEE\u6539
-view_group_pluginConfig_table_statusSuccess = \u7EC4\u914D\u7F6E\u66F4\u65B0\u6210\u529F
-view_group_pluginConfig_table_title = \u5386\u53F2\u8FDE\u63A5\u8BBE\u7F6E\u7EC4
-view_group_pluginConfig_table_viewMemberHistory = \u67E5\u770B\u5386\u53F2\u6210\u5458
-view_group_pluginConfig_table_viewSettings = \u67E5\u770B\u8BBE\u7F6E
-view_group_pluginConfig_view_groupProperties = \u7EC4\u5C5E\u6027
-view_group_pluginConfig_view_noperm =
\u60A8\u6CA1\u6709\u67E5\u770B\u8FDE\u63A5\u8BBE\u7F6E\u7684\u6743\u9650
-view_group_resConfig_edit_invalid =
\u4E0B\u9762\u7684\u5C5E\u6027\u914D\u7F6E\u586B\u5199\u4E86\u65E0\u6548\u7684\u503C
,\u63D0\u4EA4\u4E4B\u524D\u8BF7\u4FEE\u6539: [{0}]
-view_group_resConfig_edit_loadFail =
\u68C0\u7D22[{0}]\u7684\u6210\u5458\u8D44\u6E90\u914D\u7F6E\u5931\u8D25
-view_group_resConfig_edit_noperm =
\u60A8\u6CA1\u6709\u6743\u9650\u7F16\u8F91\u7EC4\u914D\u7F6E
-view_group_resConfig_edit_saveFailure =
\u521D\u59CB\u5316\u8D44\u6E90\u7C7B\u578B[{0}],\u540D\u79F0\u4E3A[{1}]\u7684\u517C\u5BB9\u7EC4\u7EC4\u914D\u7F6E\u66F4\u65B0\u5931\u8D25
-view_group_resConfig_edit_saveInitiated_concise =
\u521D\u59CB\u5316\u7EC4\u914D\u7F6E\u66F4\u65B0\u5B8C\u6210
-view_group_resConfig_edit_saveInitiated_full =
\u6210\u529F\u521D\u59CB\u5316\u8D44\u6E90\u7C7B\u578B[{0}],\u540D\u79F0\u4E3A[{1}]\u7684\u517C\u5BB9\u7EC4\u7EC4\u914D\u7F6E\u66F4\u65B0
-view_group_resConfig_edit_saveTooltip =
\u4FEE\u6539\u6240\u6709\u7684\u7EC4\u6210\u5458\u914D\u7F6E
-view_group_resConfig_edit_valid =
\u6240\u6709\u7684\u5C5E\u6027\u914D\u7F6E\u5747\u6709\u6548,\u53EF\u4EE5\u63D0\u4EA4\u4FDD\u5B58
-view_group_resConfig_members_fetchFailure =
\u83B7\u53D6\u8D44\u6E90\u7EC4[{0}]\u7684\u6210\u5458\u914D\u7F6E\u4FEE\u6539\u5386\u53F2\u8BB0\u5F55\u5931\u8D25
-view_group_resConfig_members_fetchFailureConfig = \u6062\u590D\u8D44\u6E90\u6210\u5458
[{0}]\u7684\u914D\u7F6E\u8BBE\u7F6E
-view_group_resConfig_members_fetchFailureConfigInProgress =
\u6B64\u8D44\u6E90\u7EC4\u914D\u7F6E\u7684\u6B63\u5728\u4FEE\u6539\u4E2D\uFF0C\u5982\u679C\u8981\u67E5\u770B\u7EC4\u8BBE\u7F6E\uFF0C\u9700\u8981\u7B49\u5F85\u6B64\u4FEE\u6539\u5168\u90E8\u5B8C\u6210.
-view_group_resConfig_members_statusDetails = \u8BE6\u7EC6\u72B6\u6001
-view_group_resConfig_members_statusFailure =
\u672A\u77E5\u9519\u8BEF\uFF0C\u4FEE\u6539\u914D\u7F6E\u5931\u8D25
-view_group_resConfig_members_statusInprogress =
\u6B63\u4FEE\u6539\u6B64\u914D\u7F6E\u4E2D
-view_group_resConfig_members_statusNochange =
\u6CA1\u6709\u5BF9\u6B64\u914D\u7F6E\u505A\u4EFB\u4F55\u4FEE\u6539
-view_group_resConfig_members_statusSuccess =
\u6210\u529F\u7684\u4FEE\u6539\u6B64\u914D\u7F6E
-view_group_resConfig_members_title =
\u8D44\u6E90\u7EC4\u914D\u7F6E\u5386\u53F2\u6210\u5458
-view_group_resConfig_table_clickStatusIcon =
\u70B9\u51FB\u72B6\u6001\u6309\u94AE\u83B7\u53D6\u8BE6\u7EC6\u4FE1\u606F
-view_group_resConfig_table_deleteFailure =
\u5220\u9664\u5386\u53F2\u8D44\u6E90\u7EC4\u914D\u7F6E\u5931\u8D25
-view_group_resConfig_table_deleteSuccessful = \u6210\u529F\u5220\u9664 [{0}]
\u5386\u53F2\u9879
-view_group_resConfig_table_failFetch =
\u83B7\u53D6\u8D44\u6E90\u7EC4\u5386\u53F2\u914D\u7F6E\u5931\u8D25
-view_group_resConfig_table_msg1 =
\u67E5\u770B\u6BCF\u4E2A\u5355\u72EC\u8D44\u6E90\u7684\u6210\u5458\u5386\u53F2\u72B6\u6001
-view_group_resConfig_table_statusDetails = \u8BE6\u7EC6\u72B6\u6001
-view_group_resConfig_table_statusFailure = \u7EC4\u914D\u7F6E\u4FEE\u6539\u5931\u8D25
-view_group_resConfig_table_statusInprogress =
\u6B64\u7EC4\u914D\u7F6E\u7684\u4FEE\u6539\u6B63\u5728\u8FDB\u884C\u4E2D
-view_group_resConfig_table_statusNochange =
\u6CA1\u6709\u5BF9\u6B64\u7EC4\u914D\u7F6E\u505A\u4EFB\u4F55\u4FEE\u6539
-view_group_resConfig_table_statusSuccess = \u6210\u529F\u4FEE\u6539\u7EC4\u914D\u7F6E
-view_group_resConfig_table_title = \u5386\u53F2\u8D44\u6E90\u7EC4\u914D\u7F6E
-view_group_resConfig_table_viewMemberHistory = \u67E5\u770B\u5386\u53F2\u6210\u5458
-view_group_resConfig_table_viewSettings = \u67E5\u770B\u8BBE\u7F6E
-view_group_resConfig_view_groupProperties = \u7EC4\u5C5E\u6027
-view_group_resConfig_view_noperm =
\u60A8\u6CA1\u6709\u6743\u9650\u67E5\u770B\u8D44\u6E90\u914D\u7F6E\u8BBE\u7F6E
-view_group_summary_compatible = \u517C\u5BB9\u7684
-view_group_summary_descUpdateFailure =
\u4FEE\u6539ID\u4E3A[{0}]\u7684\u8D44\u6E90\u7EC4\u63CF\u8FF0\u4FE1\u606F\u5931\u8D25
-view_group_summary_descUpdateSuccessful =
\u6210\u529F\u4FEE\u6539\u6B64\u8D44\u6E90\u7EC4\u7684\u63CF\u8FF0
-view_group_summary_dynamic = \u52A8\u6001
-view_group_summary_dynamicNote =
\u52A8\u6001\u7EC4\u7684\u540D\u79F0\u548C\u63CF\u8FF0\u662F\u7BA1\u7406\u5C5E\u6027,\u6240\u4EE5\u4E0D\u80FD\u4FEE\u6539
-view_group_summary_groupDefinition = \u7EC4\u5B9A\u4E49
-view_group_summary_memberCount = \u6210\u5458\u6570
-view_group_summary_memberType = \u6210\u5458\u7C7B\u578B
-view_group_summary_mixed = \u6DF7\u5408
-view_group_summary_nameUpdateFailure = Failed to change the name of the resource group
with ID [{0}] - could not change from [{1}] to [{2}]
-view_group_summary_nameUpdateSuccessful = You have changed the name of the resource group
with ID [{0}] from [{1}] to [{2}]
-view_group_summary_recursive = \u9012\u5F52
-view_helpTop_description =
\u8BE5\u90E8\u5206\u5185\u5BB9\u63D0\u4F9B\u4E86\u4EA7\u54C1\u6587\u6863, \u6559\u7A0B,
\u7248\u672C\u53F7\u548C\u5176\u4ED6\u6709\u7528\u7684\u4FE1\u606F.
-view_help_section_product = \u4EA7\u54C1\u5E2E\u52A9
-view_help_section_product_about = \u5173\u4E8E\u4EA7\u54C1\u5E2E\u52A9
-view_inventory_adq = Discovery Queue
-view_inventory_allGroups = \u6240\u6709\u7EC4
-view_inventory_allResources = \u6240\u6709\u8D44\u6E90
-view_inventory_collectionInterval = \u641C\u96C6\u95F4\u9694
-view_inventory_dynagroupDefs = \u52A8\u6001\u7EC4\u5B9A\u4E49
-view_inventory_eventDetails_loadFailed =
\u52A0\u8F7D\u4E8B\u4EF6\u8BE6\u60C5\u5931\u8D25
-view_inventory_eventHistory_deleteFailed = Failed to deleted selected events for [{0}]
-view_inventory_eventHistory_deleteSuccessful = You have successfully deleted [{0}] events
for [{1}]
-view_inventory_eventHistory_details = \u8BE6\u60C5
-view_inventory_eventHistory_detailsFilter = \u8BE6\u60C5\u8FC7\u6EE4
-view_inventory_eventHistory_groupEventHistory = \u7EC4\u5386\u53F2\u4E8B\u4EF6
-view_inventory_eventHistory_purgeFailed =
\u4E3A[{0}]\u79FB\u9664\u4E8B\u4EF6\u5931\u8D25
-view_inventory_eventHistory_purgeSuccessful =
\u6210\u529F\u5220\u9664[{0}]\u4E2A\u4E8B\u4EF6\u4E3A[{1}]
-view_inventory_eventHistory_resourceEventHistory = \u8D44\u6E90\u5386\u53F2\u4E8B\u4EF6
-view_inventory_eventHistory_severity = \u4E25\u91CD\u7EA7\u522B
-view_inventory_eventHistory_severityFilter = \u4E25\u91CD\u7EA7\u8FC7\u6EE4
-view_inventory_eventHistory_sourceFilter = Source\u8FC7\u6EE4
-view_inventory_eventHistory_sourceLocation = Source\u4F4D\u7F6E
-view_inventory_eventHistory_timestamp = \u65F6\u95F4\u6233
-view_inventory_groups = \u7EC4
-view_inventory_groups_children = \u5B50\u7EC4
-view_inventory_groups_deleteFailed =
\u5220\u9664\u6307\u5B9A\u7684\u8D44\u6E90\u7EC4\u5931\u8D25
-view_inventory_groups_deleteSuccessful =
\u6210\u529F\u7684\u5220\u9664\u6307\u5B9A\u7684\u8D44\u6E90\u7EC4
-view_inventory_groups_descendants = \u540E\u4EE3\u7EC4
-view_inventory_groups_loadFailed =
\u52A0\u8F7D\u7EC4\u7EC4\u5408\u6570\u636E\u5931\u8D25
-view_inventory_groups_resourceGroups = \u8D44\u6E90\u7EC4
-view_inventory_mixed = \u6DF7\u5408
-view_inventory_platforms = \u5E73\u53F0
-view_inventory_problemGroups = \u95EE\u9898\u7EC4
-view_inventory_resource_loadFailed = id\u4E3A
[{0}]\u7684\u8D44\u6E90\u4E0D\u5B58\u5728\u6216\u8005\u4E0D\u53EF\u8FBE
-view_inventory_resources_deleteConfirm =
\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u8D44\u6E90\uFF1F
-view_inventory_resources_deleteFailed =
\u5220\u9664\u6307\u5B9A\u7684\u8D44\u6E90\u5931\u8D25
-view_inventory_resources_deleteSuccessful =
\u6210\u529F\u7684\u5220\u9664\u6307\u5B9A\u7684\u8D44\u6E90
-view_inventory_resources_loadFailed =
\u52A0\u8F7D\u8D44\u6E90\u7EC4\u5408\u6570\u636E\u5931\u8D25
-view_inventory_resources_title = Resources
-view_inventory_resources_title_children = \u5B50\u8D44\u6E90
-view_inventory_resources_title_members = \u6210\u5458\u8D44\u6E90
-view_inventory_resources_uninventoryConfirm =
\u786E\u5B9A\u628A\u9009\u4E2D\u7684\u8D44\u6E90\u4ECE\u6E05\u5355\u4E2D\u5220\u9664?
\u6CE8\u610F\uFF1A\u5982\u679C\u67D0\u4E2A\u9009\u4E2D\u7684\u8D44\u6E90\u4F9D\u7136\u5B58\u5728,
\u5219\u7CFB\u7EDF\u4F1A\u5728\u6B64\u8D44\u6E90\u7684\u5BA2\u6237\u7AEF\u7A0B\u5E8F\u4E0B\u6B21\u63A2\u7D22\u626B\u63CF\u65F6\u91CD\u65B0\u52A0\u8F7D\u6B64\u8D44\u6E90.
-view_inventory_resources_uninventoryFailed =
\u4ECE\u6E05\u5355\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u8D44\u6E90\u5931\u8D25
-view_inventory_resources_uninventorySuccessful =
\u6210\u529F\u4ECE\u6E05\u5355\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u8D44\u6E90
-view_inventory_sectionHelp =
\u6B64\u6A21\u5757\u53EF\u4EE5\u67E5\u770B\u548C\u7BA1\u7406\u65B0\u53D1\u73B0\u7684\u8D44\u6E90,\u5206\u7C7B\u7684\u8D44\u6E90\u548C\u7EC4.
-view_inventory_servers = \u670D\u52A1\u5668
-view_inventory_services = \u670D\u52A1
-view_inventory_summary_agent_error1 =
\u67E5\u627E\u5BA2\u6237\u7AEF\u7BA1\u7406\u7684\u8D44\u6E90id\u5931\u8D25
-view_inventory_summary_agent_error2 =
\u5BA2\u6237\u7AEF\u7BA1\u7406\u7684\u8D44\u6E90ping\u4E0D\u901A
-view_inventory_summary_agent_error3 =
\u6CA1\u6709\u6743\u9650\u67E5\u770B\u6B64\u5BA2\u6237\u7AEF\u7684\u8BE6\u7EC6\u4FE1\u606F.
-view_inventory_summary_agent_fullEnpoint = Full Endpoint
-view_inventory_summary_agent_fullEnpoint_err1 = !No remote endpoint associated with this
resource!
-view_inventory_summary_agent_last_title =
\u6700\u540E\u63A5\u6536\u5230\u7684\u53EF\u7528\u4FE1\u606F\u62A5\u544A
-view_inventory_summary_agent_status_title = \u5BA2\u6237\u7AEF\u901A\u4FE1\u72B6\u6001
-view_inventory_summary_agent_title = \u5BA2\u6237\u7AEF\u7BA1\u7406\u6B64\u8D44\u6E90
-view_inventory_unavailableServers = \u4E0D\u53EF\u7528\u7684\u670D\u52A1
-view_leftNav_unknownPage =
\u6A21\u5757[{1}]\u4E0B\u672A\u77E5\u7684\u9875\u9762[{0}] - \u94FE\u63A5\u65E0\u6548.
-view_login_invalidEmail = \u65E0\u6548\u7684\u90AE\u7BB1\u5730\u5740
-view_login_login = \u767B\u5F55
-view_login_logout = \u6CE8\u9500
-view_login_noBackend = \u540E\u7AEF\u6570\u636E\u4E0D\u53EF\u8FBE.
-view_login_noLdap = \u63D0\u793A:
\u83B7\u53D6\u53EF\u9009\u7684ldap\u4FE1\u606F\u5931\u8D25.
\u9700\u8981\u624B\u5DE5\u8F93\u5165.
-view_login_noUser =
\u7528\u6237\u540D\u6216\u8005\u5BC6\u7801\u4E0D\u5339\u914D.
-view_login_prompt = \u8BF7\u767B\u5F55
-view_login_registerLater = (\u53D6\u6D88 - \u7A0D\u540E\u5B8C\u6210\u6CE8\u518C.)
-view_login_registerLdapSuccess = \u6210\u529F\u6CE8\u518C\u65B0\u7684LDAP\u7528\u6237.
-view_login_registerUser = \u7528\u6237\u6CE8\u518C
-view_login_welcome = \u6B22\u8FCE
-view_login_welcomeMsg = \u6B22\u8FCE\u6765\u5230 RHQ! <br/><br/>
\u8F93\u5165\u6216\u8005\u4FEE\u6539\u4E0B\u9762\u7684\u4FE1\u606F\uFF0C\u4EE5\u5B8C\u6210\u6CE8\u518C<br/>
\u70B9\u51FB"OK",
\u5C31\u53EF\u4EE5\u767B\u5F55\u7CFB\u7EDF.<br/><br/>
-view_measureRange_last = \u65F6\u95F4\u8303\u56F4 - \u5148\u524D\u7684
-view_measureRange_simple = \u4E00\u822C...
-view_measureRange_start = \u65F6\u95F4\u8303\u56F4 - \u8D77\u59CB
-view_measureTable_chartMetricValues = Chart Selected Metrics
-view_measureTable_getLive = Get Live Value
-view_measureTable_getLive_failure = Cannot get live values for those metrics. Make sure
the agent is running and the managed resource is up.
-view_measureTable_live_title = \u52A8\u6001\u6570\u636E
-view_measure_nan = --\u65E0\u6570\u636E--
-view_measurementOob_title = Suspect Metrics
-view_menuBar_logout = \u6CE8\u9500
-view_messageCenter_clearAllMessages = \u6E05\u9664\u6240\u6709\u7684\u6D88\u606F
-view_messageCenter_lastNMessages = \u6700\u540E {0} \u6761\u4FE1\u606F
-view_messageCenter_maxMessages = \u6700\u5927\u6D88\u606F\u91CF
-view_messageCenter_messageBarShowDetails = \u663E\u793A\u5185\u5BB9
-view_messageCenter_messageDetail = \u8BE6\u7EC6\u5185\u5BB9
-view_messageCenter_messageSeverity = \u91CD\u8981\u7EA7\u522B
-view_messageCenter_messageTime = \u65F6\u95F4
-view_messageCenter_messageTitle = \u6D88\u606F\u4E2D\u5FC3
-view_messageCenter_noRecentMessages = \u65E0\u8FD1\u671F\u6D88\u606F
-view_messageCenter_stackTraceFollows = --- \u540E\u9762\u662F\u5F02\u5E38\u4FE1\u606F
---
-view_metric_traits = Traits
-view_metric_viewTraitHistory = Value History for Trait [{0}]
-view_operationHistoryDetails_dateCompleted = Date Completed
-view_operationHistoryDetails_dateSubmitted = Date Submitted
-view_operationHistoryDetails_error_fetchFailure =
\u52A0\u8F7D\u64CD\u4F5C\u5386\u53F2\u5931\u8D25.
-view_operationHistoryDetails_noResults =
\u6B64\u64CD\u4F5C\u6CA1\u6709\u4EFB\u4F55\u8FD4\u56DE.
-view_operationHistoryDetails_operation = \u64CD\u4F5C
-view_operationHistoryDetails_parameters = \u53C2\u6570
-view_operationHistoryDetails_requestor = \u8BF7\u6C42
-view_operationHistoryDetails_results = \u7ED3\u679C
-view_operationHistoryDetails_status = \u72B6\u6001
-view_operationHistoryList_button_forceDelete = \u5F3A\u5236\u5220\u9664
-view_operationHistoryList_button_runOperation = \u6267\u884C\u64CD\u4F5C
-view_operationHistoryList_notYetStarted = \u8FD8\u672A\u5F00\u59CB
-view_operationHistoryList_title = \u64CD\u4F5C\u5386\u53F2
-view_operationScheduleDetails_enterParametersBelow =
\u8F93\u5165\u4E0B\u9762\u7684\u53C2\u6570...
-view_operationScheduleDetails_fieldDefault_description =
\u9009\u62E9\u64CD\u4F5C\u67E5\u770B\u63CF\u8FF0.
-view_operationScheduleDetails_fieldDefault_parameters =
\u9009\u62E9\u64CD\u4F5C\u67E5\u770B\u6240\u9700\u7684\u53C2\u6570.
-view_operationScheduleDetails_fieldHelp_description =
\u6B64\u8C03\u5EA6\u64CD\u4F5C\u7684\u53EF\u9009\u63CF\u8FF0 (e.g.
\u6BCF\u591C\u7EF4\u62A4\u5E94\u7528\u670D\u52A1\u91CD\u542F)
-view_operationScheduleDetails_fieldHelp_timeout = \u64CD\u4F5C\u6301\u7EED\u65F6\u95F4 -
\u5982\u679C\u6307\u5B9A,
\u5E76\u4E14\u8D85\u8FC7\u4E86\u6307\u5B9A\u7684\u65F6\u95F4\u64CD\u4F5C\u6CA1\u6709\u5B8C\u6210,
RHQ
\u670D\u52A1\u5224\u5B9A\u6B64\u64CD\u4F5C\u8D85\u65F6\u5E76\u4E14\u6807\u4E3A\u5931\u8D25;
\u63D0\u793A, \u901A\u5E38
\u4E0D\u53EF\u80FD\u7EC8\u6B62\u5DF2\u7ECF\u5F00\u59CB\u8FD0\u884C\u7684\u540E\u53F0\u8D44\u6E90\u7BA1\u7406\u7684\u64CD\u4F5C.
-view_operationScheduleDetails_field_description = \u63CF\u8FF0
-view_operationScheduleDetails_field_parameters = \u53C2\u6570
-view_operationScheduleDetails_field_timeout = \u8D85\u65F6
-view_operationScheduleDetails_noParameters =
\u6B64\u64CD\u4F5C\u4E0D\u9700\u8981\u4EFB\u4F55\u53C2\u6570.
-view_operationScheduleDetails_operationSchedule = \u64CD\u4F5C\u8BA1\u5212
-view_portlet_autodiscovery_setting_platforms = \u5E73\u53F0\u7ED3\u679C\u96C6
-view_portlet_configure_definitionDesc = portlet\u914D\u7F6E\u8BBE\u7F6E\u63CF\u8FF0.
-view_portlet_configure_definitionTitle = Portlet\u914D\u7F6E
-view_portlet_configure_needed =
\u70B9\u51FB\u8BBE\u7F6E\u6309\u94AE\u914D\u7F6Eportlet.
-view_portlet_configure_notNeeded = \u6B64 portlet\u65E0\u9700\u914D\u7F6E.
-view_portlet_defaultName_autodiscovery = \u63A2\u7D22\u961F\u5217
-view_portlet_defaultName_favoriteResources = \u5E38\u7528\u8D44\u6E90
-view_portlet_defaultName_groupMetric = \u516C\u7528\u8D44\u6E90\u7EC4\u56FE\u6807
-view_portlet_defaultName_group_alerts = \u7EC4: \u544A\u8B66
-view_portlet_defaultName_group_bundles = \u7EC4: \u7C7B\u53D1\u5E03
-view_portlet_defaultName_group_config_updates = \u7EC4: \u914D\u7F6E\u66F4\u65B0
-view_portlet_defaultName_group_events = \u7EC4: \u4E8B\u4EF6\u7EDF\u8BA1
-view_portlet_defaultName_group_metrics = \u7EC4: Metrics
-view_portlet_defaultName_group_oobs = \u7EC4: OOB\u72B6\u6001
-view_portlet_defaultName_group_operations = \u7EC4: \u64CD\u4F5C\u96C6
-view_portlet_defaultName_group_pkg_hisory = \u7EC4: \u5386\u53F2\u6570\u636E\u5305
-view_portlet_defaultName_inventorySummary = \u6E05\u5355\u6982\u8981
-view_portlet_defaultName_mashup = Mashup
-view_portlet_defaultName_message = \u4FE1\u606F
-view_portlet_defaultName_operations = \u8FD1\u671F\u64CD\u4F5C
-view_portlet_defaultName_platformSummary = \u5E73\u53F0\u5229\u7528\u7387
-view_portlet_defaultName_problemResources =
\u544A\u8B66\u6216\u8005\u4E0D\u53EF\u7528\u7684\u8D44\u6E90
-view_portlet_defaultName_recentAlerts = \u65B0\u544A\u8B66
-view_portlet_defaultName_recentlyAddedResources = \u65B0\u6DFB\u52A0\u8D44\u6E90
-view_portlet_defaultName_resourceMetric = \u516C\u7528\u8D44\u6E90\u56FE\u6807
-view_portlet_defaultName_resource_alerts = \u8D44\u6E90: \u544A\u8B66
-view_portlet_defaultName_resource_bundles = \u8D44\u6E90: \u7C7B\u53D1\u5E03
-view_portlet_defaultName_resource_config_updates = \u8D44\u6E90:
\u914D\u7F6E\u66F4\u65B0
-view_portlet_defaultName_resource_events = \u8D44\u6E90: \u4E8B\u4EF6\u7EDF\u8BA1
-view_portlet_defaultName_resource_metrics = \u8D44\u6E90: \u5C5E\u6027
-view_portlet_defaultName_resource_oobs = \u8D44\u6E90: OOB Metrics
-view_portlet_defaultName_resource_operations = \u8D44\u6E90: \u64CD\u4F5C
-view_portlet_defaultName_resource_pkg_hisory = \u8D44\u6E90:
\u5386\u53F2\u6570\u636E\u5305
-view_portlet_defaultName_tagCloud = \u6807\u7B7E\u4E91
-view_portlet_factory_invalidPortlet =
\u8FD9\u662F\u4E00\u4E2A\u9648\u65E7\u5E76\u4E14\u5DF2\u7ECF\u5931\u6548\u7684portlet.
\u8BF7\u5220\u9664.
-view_portlet_graph_configure_metricDefinition_graph = The metric definition id to graph
-view_portlet_graph_configure_resource_graph = The resource to graph
-view_portlet_help_autodiscovery = \u6B64portlet\u5141\u8BB8\u5BFC\u5165
\u6216\u8005\u5931\u6548\u65B0\u53D1\u73B0\u7684\u8D44\u6E90.
\u5BFC\u5165\u7684\u8D44\u6E90\u5C06\u4F1A\u6DFB\u52A0\u81F3\u76D1\u63A7\u548C\u7BA1\u7406\u6E05\u5355\u4E2D\uFF0C\u5931\u6548\u7684\u8D44\u6E90\u5C06\u4E0D\u4F1A\u88AB\u5BFC\u5165\u5E76\u4E14
\u662F\u4E0D\u53EF\u89C1\u7684\uFF0C\u9664\u975E\u660E\u786E\u6307\u5B9A\u4E0D\u53EF\u5931\u6548.
-view_portlet_help_bundle_deps =
\u6B64portlet\u5C55\u793A\u57FA\u4E8E\u6807\u51C6\u914D\u7F6E\u663E\u793A\u7684\u76F8\u5173\u53D1\u5E03\u7C7B.
-view_portlet_help_config_updates =
\u6B64portlet\u5C55\u793A\u4E0E\u914D\u7F6E\u8BBE\u7F6E\u517C\u5BB9\u7684\u6700\u65B0\u7684\u914D\u7F6E\u4FEE\u6539.
-view_portlet_help_eventcounts = This portlet displays Event counts consistent with
display criteria configured.
-view_portlet_help_favoriteResources = This portlet displays the current user''s
favorite resources.
-view_portlet_help_graph = This portlet displays the resource metric graph.
-view_portlet_help_inventorySummary = This portlet displays a short summary of the current
user''s viewable inventory and metric collection rate.
-view_portlet_help_mashup = This portlet displays the returned content of a remote
HTTP request (via an iframe).
-view_portlet_help_message = This portlet displays a static HTML message. The
<i>message</i> property must be configured.
-view_portlet_help_metrics = This portlet graphs relevant recent metric data based
on display criteria configured.
-view_portlet_help_none = \u8FD9\u4E2Aportlet\u6CA1\u6709\u5E2E\u52A9.
-view_portlet_help_oobs = This portlet displays OOB(Out of Bound) metric
conditions.
-view_portlet_help_operations = This portlet displays the most recently executed
operations for the current user''s inventory.
-view_portlet_help_operations_criteria = This portlet displays Operations consistent with
display criteria configured.
-view_portlet_help_pkg_history = This portlet shows relevant package history based on
display criteria configured.
-view_portlet_help_platformSummary = This portlet displays utilization data (such as
current CPU and memory usage) for platform resources that are accessible by the current
user.
-view_portlet_help_problemResources = This portlet displays the current user''s
alerted or unavailable resources.
-view_portlet_help_recentAlerts = This portlet displays alerts recently fired on the
current user''s viewable inventory.
-view_portlet_help_recentlyAdded = This portlet displays resources that have recently been
imported into inventory.
-view_portlet_help_scheduledOperations = This portlet displays the next scheduled
operations for the current user''s inventory.
-view_portlet_help_tagCloud = This portlet displays the relative tag counts for the
current user''s inventory.
-view_portlet_inventory_error1 = Failed to retrieve inventory summary
-view_portlet_inventory_tooltip_collapse = Click to hide details for this resource.
-view_portlet_inventory_tooltip_expand = Click to show more details for this resource.
-view_portlet_message_title = \u663E\u793A\u4FE1\u606F.
-view_portlet_operations_config_completed = \u5DF2\u5B8C\u6210\u7684\u64CD\u4F5C
-view_portlet_operations_config_completed_enable =
\u662F\u5426\u5BF9\u7EDF\u8BA1\u8868\u76D8\u7684\u5DF2\u5B8C\u6210\u64CD\u4F5C\u7684\u7ED3\u679C\u5206\u7EC4.
-view_portlet_operations_config_completed_maximum =
\u80FD\u5C55\u793A\u7684\u5DF2\u5B8C\u6210\u64CD\u4F5C\u7684\u6700\u5927\u6570.
-view_portlet_operations_config_scheduled_enable =
\u662F\u5426\u5BF9\u7EDF\u8BA1\u8868\u76D8\u7684\u8C03\u5EA6\u4E2D\u64CD\u4F5C\u7684\u7ED3\u679C\u5206\u7EC4.
-view_portlet_operations_config_scheduled_maximum =
\u80FD\u5C55\u793A\u7684\u8C03\u5EA6\u64CD\u4F5C\u7684\u6700\u5927\u6570.
-view_portlet_operations_config_show_last = show last
-view_portlet_operations_config_show_next = show next
-view_portlet_operations_disabled =
(\u76EE\u524D\u7ED3\u679C\u96C6\u7981\u7528.\u4FEE\u6539\u8BBE\u7F6E\u4F7F\u5176\u751F\u6548.
-view_portlet_platform_platform_error_1 =
\u52A0\u8F7D\u5E73\u53F0\u6307\u6807\u5931\u8D25
-view_portlet_platform_type_error_1 = \u65E0\u6CD5\u52A0\u8F7D\u7C7B\u578B\u6570\u636E
-view_portlet_problemResources_config_display_maximum =
\u80FD\u5C55\u793A\u7684\u95EE\u9898\u8D44\u6E90\u7684\u6700\u5927\u6570.
-view_portlet_problemResources_config_display_range =
\u663E\u793A\u6570\u5C0F\u65F6\u5185\u6062\u590D\u6B63\u5E38\u7684\u95EE\u9898\u8D44\u6E90.
-view_portlet_problemResources_config_display_range2 = \u4ECE {0} \u5230 {1}
-view_portlet_problemResources_maxDisplaySetting = \u8D44\u6E90\u6700\u5927\u6570.
-view_portlet_recentAlerts_config_members = \u9009\u62E9\u6210\u5458
-view_portlet_recentAlerts_config_priority_label = \u4E4B\u524D\u7684\u544A\u8B66,
-view_portlet_recentAlerts_config_when = \u5728\u8FC7\u53BB
-view_portlet_recentAlerts_fail_msg =
\u52A0\u8F7D\u544A\u8B66\u8FC7\u6EE4\u7684\u6307\u5B9A\u8D44\u6E90\u5931\u8D25.
-view_portlet_recentlyAdded_error1 =
\u52A0\u8F7D\u6700\u65B0\u6DFB\u52A0\u7684\u8D44\u6E90\u5931\u8D25
-view_portlet_recentlyAdded_setting_addedPlatforms = \u65B0\u6DFB\u52A0\u5E73\u53F0
-view_portlet_results_empty =
\u4F7F\u7528\u6307\u5B9A\u7684\u6807\u51C6\u65E0\u7ED3\u679C\u8FD4\u56DE.
-view_remoteAgentInstall_agentStatus = \u4EE3\u7406\u72B6\u6001
-view_remoteAgentInstall_agentStatusDefault =
-\u5355\u51FB\u66F4\u65B0\u72B6\u6001\u6309\u94AE-
-view_remoteAgentInstall_buttonFindAgent = \u67E5\u627E\u4EE3\u7406
-view_remoteAgentInstall_connInfo = \u8FDE\u63A5\u4FE1\u606F
-view_remoteAgentInstall_error_1 =
\u67E5\u627E\u4EE3\u7406\u5B89\u88C5\u8DEF\u5F84\u65F6\u53D1\u751F\u9519\u8BEF
-view_remoteAgentInstall_error_2 =
\u65E0\u6CD5\u5728\u901A\u5E38\u4F4D\u7F6E\u53D1\u73B0\u5B89\u88C5\u7684\u4EE3\u7406
-view_remoteAgentInstall_error_3 =
\u65E0\u6CD5\u770B\u5230\u5728[{0}]\u4E2D\u5B89\u88C5\u4E86\u4EE3\u7406
-view_remoteAgentInstall_error_4 = \u5B89\u88C5\u4EE3\u7406\u5931\u8D25
-view_remoteAgentInstall_error_5 = \u542F\u52A8\u4EE3\u7406\u5931\u8D25
-view_remoteAgentInstall_error_6 = \u505C\u6B62\u4EE3\u7406\u5931\u8D25
-view_remoteAgentInstall_installAgent = \u5B89\u88C5\u4EE3\u7406
-view_remoteAgentInstall_installInfo = \u4EE3\u7406\u5B89\u88C5\u4FE1\u606F
-view_remoteAgentInstall_installPath = \u4EE3\u7406\u5B89\u88C5\u8DEF\u5F84
-view_remoteAgentInstall_owner = \u6240\u6709\u8005
-view_remoteAgentInstall_promptHost = The host where the agent is or will be installed
-view_remoteAgentInstall_promptInstallPath = Where the agent is or will be installed. If
you aren''t sure where an agent is installed, enter a parent directory and click
the ''Find Agent'' button to scan that directory and below. If you enter
an empty path, common locations are searched on the host for an agent install.
-view_remoteAgentInstall_promptPassword = The credentials that are used to authenticate
the user on the host via SSH
-view_remoteAgentInstall_promptPort = The port the SSH server is listening to. If not
specified, the default is 22
-view_remoteAgentInstall_promptUser = The name of the user whose credentials are passed to
the host via SSH
-view_remoteAgentInstall_result = \u7ED3\u679C
-view_remoteAgentInstall_resultCode = ResultCode
-view_remoteAgentInstall_startAgent = \u542F\u52A8\u4EE3\u7406
-view_remoteAgentInstall_startAgentResults = \u4EE3\u7406\u542F\u52A8\u7ED3\u679C: [{0}]
-view_remoteAgentInstall_step = Step
-view_remoteAgentInstall_stopAgent = \u505C\u6B62\u4EE3\u7406
-view_remoteAgentInstall_stopAgentResults = \u4EE3\u7406\u505C\u6B62\u7ED3\u679C: [{0}]
-view_remoteAgentInstall_success = \u4EE3\u7406\u5B89\u88C5\u5B8C\u6210
-view_remoteAgentInstall_updateStatus = \u66F4\u65B0\u72B6\u6001
-view_reportsTop_description =
\u8BE5\u90E8\u5206\u5185\u5BB9\u63D0\u4F9B\u4E86\u5168\u5C40\u62A5\u8868\u7684\u5165\u53E3.
-view_reportsTop_title = \u62A5\u8868
-view_reports_alertDefinitions = \u544A\u8B66\u5B9A\u4E49
-view_reports_alertDefinitions_parentHover =
\u70B9\u51FB\u5230\u7236\u7EA7\u544A\u8B66\u83DC\u5355
-view_reports_alertDefinitions_resTypeLoadError =
\u65E0\u6CD5\u83B7\u53D6\u8D44\u6E90\u6A21\u677F\u7C7B\u578B -
\u65E0\u6CD5\u67E5\u770B\u544A\u8B66\u6A21\u677F.
-view_reports_inventorySummary_failFetch =
\u83B7\u53D6\u7EDF\u8BA1\u6E05\u5355\u5931\u8D25
-view_reports_platforms = \u5E73\u53F0\u4F7F\u7528\u7387\u62A5\u8868
-view_reports_subsystems = \u5B50\u7CFB\u7EDF\u62A5\u8868
-view_resourceResourceGroupList_error_fetchFailure =
\u83B7\u53D6\u8D44\u6E90\u7EC4\u4FE1\u606F\u5931\u8D25.
-view_resourceResourceGroupList_error_updateFailure =
\u66F4\u65B0\u6307\u5B9A\u7684\u8D44\u6E90\u7EC4\u5931\u8D25.
-view_resourceResourceGroupList_message_updateSuccess =
[{0}]\u7684\u7EC4\u6210\u5458\u5DF2\u7ECF\u66F4\u65B0.
-view_resource_inventory_activity_changed_by = Changed by
-view_resource_inventory_activity_criteria_no_recent_events = No event counts based off
display criteria.
-view_resource_inventory_activity_no_recent_alerts = \u65E0\u6700\u65B0\u544A\u8B66
-view_resource_inventory_activity_no_recent_bundle_deploy = No recent bundle deployments
-view_resource_inventory_activity_no_recent_config_history = No configuration change
history
-view_resource_inventory_activity_no_recent_events = No events in the last 24 hours
-view_resource_inventory_activity_no_recent_metrics = This resource has no recent metrics
-view_resource_inventory_activity_no_recent_oob = No OOB conditions found
-view_resource_inventory_activity_no_recent_operations =
\u6CA1\u6709\u6700\u65B0\u64CD\u4F5C\u5386\u53F2
-view_resource_inventory_activity_no_recent_pkg_history =
\u6CA1\u6709\u6700\u65B0\u5305\u5386\u53F2
-view_resource_inventory_childhistory_createdChild = Created Child
-view_resource_inventory_childhistory_deletedChild = Deleted Child
-view_resource_inventory_childhistory_filterTitle = Past N Days
-view_resource_inventory_childhistory_status_invalidArtifact = Invalid Artifact
-view_resource_inventory_childhistory_status_invalidConfig = \u65E0\u6548\u914D\u7F6E
-view_resource_monitor_availability_loadFailed =
\u52A0\u8F7D\u53EF\u7528\u6027\u5386\u53F2\u8BB0\u5F55\u5931\u8D25
-view_resource_monitor_calltime_average = Average
-view_resource_monitor_calltime_count = Count
-view_resource_monitor_calltime_destination = Call Destination
-view_resource_monitor_calltime_editFailed = Call time data can not be edited
-view_resource_monitor_calltime_loadFailed = Could not load call time data
-view_resource_monitor_calltime_lookupFailed = Could not load resource for call time
-view_resource_monitor_calltime_maximum = Maximum
-view_resource_monitor_calltime_minimum = Minimum
-view_resource_monitor_calltime_title = Call Time Data
-view_resource_monitor_calltime_total = Total
-view_resource_monitor_detailed_graph_label = Detailed Graph
-view_resource_monitor_graph_instructions = Point your mouse to a data point on the chart
-view_resource_monitor_graph_live_tooltip = Click for a live graph of current values
-view_resource_monitor_graphs_loadFailed =
\u52A0\u8F7D\u7ED8\u56FE\u6570\u636E\u5931\u8D25
-view_resource_monitor_graphs_lookupFailed = Failed to find resource for graph
-view_resource_monitor_graphs_noneAvailable = No graphs available
-view_resource_monitor_schedules_title = Resource Metric Collection Schedules
-view_resource_monitor_table_alerts = Alerts
-view_resource_monitor_table_avg = Average
-view_resource_monitor_table_last = Last
-view_resource_monitor_table_max = Maximum
-view_resource_monitor_table_min = Minimum
-view_resource_title_component_errors_tooltip = Shows managed component errors. Click for
details
-view_resource_title_tagUpdateFailed = Failed to update resource tags
-view_searchBar_defaultPattern = \u5B9A\u4E49\u81EA\u5DF1\u7684\u6837\u5F0F
-view_searchBar_error_selectSavedSearch =
''\u9009\u62E9\u4FDD\u5B58\u7684\u641C\u7D22\u65F6\u51FA\u9519''
-view_searchBar_query = \u67E5\u8BE2
-view_searchBar_resourceGroups = \u8D44\u6E90\u7EC4
-view_searchBar_resources = \u8D44\u6E90
-view_searchBar_welcomeMessage = \u641C\u7D22\u4E86{0}\u79D2
-view_searchGUI_loginStatus =
\u65E0\u6CD5\u786E\u5B9A\u767B\u5F55\u72B6\u6001\uFF0C\u8BF7\u68C0\u67E5\u670D\u52A1
-view_selector_assigned = \u6307\u5B9A\u7684 {0}
-view_selector_available = \u53EF\u7528\u7684 {0}
-view_subTab_error_disabled = \u65E0\u6CD5\u9009\u4E2D\u7981\u7528\u7684\u5B50\u8868
[{0}].
-view_summaryDashboard_resetConfirm =
\u6062\u590D\u5230\u9ED8\u8BA4\u7684\u7EDF\u8BA1\u56FE\u8868
(\u653E\u5F03\u4E4B\u524D\u4FDD\u5B58\u7684\u4FE1\u606F)?
-view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of
Resource with id {0} from [{1}] to [{2}].
-view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of
Resource with id {0} from [{1}] to [{2}].
-view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with
id {0} from [{1}] to [{2}].
-view_summaryOverviewForm_error_traitsLoadFailure = \u52A0\u8F7D
{0}\u7684\u5C5E\u6027\u4FE1\u606F\u5931\u8D25.
-view_summaryOverviewForm_field_description = \u63CF\u8FF0
-view_summaryOverviewForm_field_location = \u4F4D\u7F6E
-view_summaryOverviewForm_field_name = \u5B57\u6BB5\u540D
-view_summaryOverviewForm_field_type = \u7C7B\u578B
-view_summaryOverviewForm_field_version = \u7248\u672C\u53F7
-view_summaryOverviewForm_header_summary = \u7EDF\u8BA1
-view_summaryOverviewForm_label_plugin = \u63D2\u4EF6\u6807\u7B7E:
-view_summaryOverviewForm_label_type = \u6807\u7B7E\u7C7B\u578B:
-view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with
id {0} was changed from [{1}] to [{2}].
-view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0}
was changed from [{1}] to [{2}].
-view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was
changed from [{1}] to [{2}].
-view_summaryOverview_header_detectedErrors = \u5DF2\u68C0\u6D4B\u5230\u7684\u9519\u8BEF
-view_summaryOverview_title_errorDetailsWindow = \u9519\u8BEF\u8BE6\u7EC6
-view_summaryOverview_tooltip_detectedErrors =
\u70B9\u51FB\u5BF9\u5E94\u7684\u884C\u67E5\u770B\u9519\u8BEF\u4FE1\u606F.
-view_tableSection_backButton = \u8FD4\u56DE\u5217\u8868
-view_tableSection_error_badId = \u65E0\u6CD5\u5C55\u793A
[{0}]\u7684\u8BE6\u7EC6\u4FE1\u606F. \u65E0\u6548\u7684 'id': [{1}].
\u8BF7\u62A5\u544A\u6B64BUG
-view_tableSection_error_noId = \u8868\u5355 [{0}]
\u8BB0\u5F55\u7F3A\u5C11'id'\u5C5E\u6027 - \u8BF7\u62A5\u544A\u6B64BUG.
-view_table_drawFail = \u751F\u6210\u8868\u683C[{0}]\u5931\u8D25.
-view_table_matchingRows = \u5339\u914D\u7684\u884C: {0} (\u9009\u4E2D: {1})
-view_table_totalRows = \u6240\u6709\u7684\u884C: {0} (\u9009\u4E2D: {1})
-view_tabs_common_activity = \u6D3B\u52A8
-view_tabs_common_agent = \u4EE3\u7406
-view_tabs_common_alerts = \u544A\u8B66
-view_tabs_common_availability = \u53EF\u7528\u6027
-view_tabs_common_calltime = Calltime
-view_tabs_common_child_history = \u5B50\u5386\u53F2
-view_tabs_common_child_resources = \u5B50\u8D44\u6E90
-view_tabs_common_configuration = \u914D\u7F6E
-view_tabs_common_connectionSettings = \u8FDE\u63A5\u8BBE\u7F6E
-view_tabs_common_connectionSettingsHistory = \u5386\u53F2\u8FDE\u63A5\u8BBE\u7F6E
-view_tabs_common_content = \u5185\u5BB9
-view_tabs_common_current = \u5F53\u524D
-view_tabs_common_dashboard = \u7EDF\u8BA1\u8868\u76D8
-view_tabs_common_definitions = \u5B9A\u4E49
-view_tabs_common_deployed = \u5DF2\u53D1\u5E03
-view_tabs_common_events = \u4E8B\u4EF6
-view_tabs_common_graphs = Graphs
-view_tabs_common_group_members = \u7EC4\u5458
-view_tabs_common_group_membership = \u7EC4\u6210\u5458\u5173\u7CFB
-view_tabs_common_groups = Groups
-view_tabs_common_history = \u5386\u53F2
-view_tabs_common_inventory = \u6E05\u5355
-view_tabs_common_members = Members
-view_tabs_common_monitoring = \u76D1\u63A7
-view_tabs_common_new = new
-view_tabs_common_operations = \u64CD\u4F5C
-view_tabs_common_overview = \u6982\u89C8
-view_tabs_common_schedule = \u8C03\u5EA6
-view_tabs_common_schedules = Schedules
-view_tabs_common_subscriptions = \u8FD0\u884C\u673A\u5236
-view_tabs_common_summary = \u6982\u8981
-view_tabs_common_tables = Tables
-view_tabs_common_timeline = \u65F6\u95F4\u8F74
-view_tabs_common_traits = Traits
-view_tabs_invalidSubTab = \u65E0\u6548\u7684\u5B50\u8868: {0}
-view_tabs_invalidTab = \u65E0\u6548\u7684\u8868: {0}
-view_tagCloud_deleteTag = \u5220\u9664\u6807\u7B7E
-view_tagCloud_deleteTagFailure = \u5220\u9664\u6807\u7B7E [{0}] \u5931\u8D25
-view_tagCloud_deleteTagSuccess = \u6210\u529F\u7684\u5220\u9664\u4E86\u6807\u7B7E [{0}]
-view_tagCloud_error_fetchFailure = \u52A0\u8F7D\u6807\u7B7E\u5931\u8D25.
-view_tagCloud_error_tagUsedCount = \u6807\u7B7E\u4F7F\u7528 {0} \u6B21.
-view_tagCloud_title = \u6807\u7B7E\u96C6
-view_taggedResources_title = \u8D44\u6E90
-view_tags_error_1 = \u52A0\u8F7D\u6807\u7B7E\u5931\u8D25
-view_tags_tags = \u6807\u7B7E
-view_tags_tooltip_1 = \u5220\u9664\u6807\u7B7E
-view_tags_tooltip_2 = \u7F16\u8F91\u6807\u7B7E
-view_tags_tooltip_3 =
\u8F93\u5165\u6309\u7167\u4EE5\u4E0B\u683C\u5F0F\u7684\u6807\u7B7E:
(namespace:)(semantic=)tagname (e.g. it:env=QA, or owner=John)
-view_testTop_description =
\u8FD9\u90E8\u5206\u9875\u9762\u7528\u4E8E\u6D4B\u8BD5\u5404\u79CDGUI\u7EC4\u4EF6.
-view_testTop_title = \u6D4B\u8BD5
-view_titleBar_common_addedFav = \u6DFB\u52A0 [{0}]\u5230\u5E38\u7528\u83DC\u5355
-view_titleBar_common_addedFavFailure =
\u6DFB\u52A0[{0}]\u5230\u6536\u85CF\u5939\u5931\u8D25
-view_titleBar_common_clickToAddFav = \u6DFB\u52A0\u5230\u6536\u85CF\u5939
-view_titleBar_common_clickToRemoveFav = \u5355\u51FB\u79FB\u51FA\u6536\u85CF\u5939
-view_titleBar_common_loadTagsFailure = \u4E3A[{0}]\u52A0\u8F7D\u6807\u7B7E\u5931\u8D25
-view_titleBar_common_removedFav = \u79FB\u52A8[{0}]\u5230\u5E38\u7528\u83DC\u5355
-view_titleBar_common_removedFavFailure =
\u79FB\u52A8[{0}]\u5230\u5E38\u7528\u83DC\u5355\u5931\u8D25
-view_titleBar_common_updateTagsFailure = \u4E3A[{0}]\u66F4\u65B0\u6807\u7B7E\u5931\u8D25
-view_titleBar_common_updateTagsSuccessful =
[{0}]\u7684\u6807\u7B7E\u5DF2\u7ECF\u66F4\u65B0
-view_titleBar_group_failInfo = Failed to get general info on group [{0}] with ID
[{1}]
-view_titleBar_group_summary_collapsedTooltip =
\u70B9\u51FB\u67E5\u770B\u6B64\u7EC4\u7684\u66F4\u591A\u4FE1\u606F
-view_titleBar_group_summary_expandedTooltip =
\u70B9\u51FB\u9690\u85CF\u6B64\u7EC4\u7684\u66F4\u591A\u4FE1\u606F
-view_tree_common_contextMenu_addChartToDashboard =
\u6DFB\u52A0\u56FE\u5230\u7EDF\u8BA1\u8868\u76D8[{0}]
-view_tree_common_contextMenu_editPluginConfiguration =
\u7F16\u8F91[{0}]\u63D2\u4EF6\u914D\u7F6E
-view_tree_common_contextMenu_editResourceConfiguration =
\u7F16\u8F91[{0}]\u8D44\u6E90\u914D\u7F6E
-view_tree_common_contextMenu_groupGraph = Group Metric Graph
-view_tree_common_contextMenu_loadFail_children = Failed to load platform manual add
children
-view_tree_common_contextMenu_loadFail_dashboards =
\u52A0\u8F7D\u7528\u6237\u7EDF\u8BA1\u8868\u76D8\u5931\u8D25
-view_tree_common_contextMenu_loadFail_group = \u52A0\u8F7Dgroup for context
menu\u5931\u8D25
-view_tree_common_contextMenu_loadFailed_dashboard =
\u52A0\u8F7D\u7528\u6237\u7EDF\u8BA1\u8868\u76D8\u5931\u8D25
-view_tree_common_contextMenu_loadFailed_manualAddChildren = \u52A0\u8F7Dplatform manual
add children\u5931\u8D25
-view_tree_common_contextMenu_measurements = Measurements
-view_tree_common_contextMenu_operations = \u64CD\u4F5C
-view_tree_common_contextMenu_operations_loadFailed = Failure to start wizard for running
operations
-view_tree_common_contextMenu_resourceConfiguration = \u8D44\u6E90\u914D\u7F6E
-view_tree_common_contextMenu_resourceGraph = Resource Metric Graph
-view_tree_common_contextMenu_saveChartToDashboardFailure =
\u4FDD\u5B58\u7EDF\u8BA1\u8868\u76D8\u5931\u8D25
-view_tree_common_contextMenu_saveChartToDashboardSuccessful =
\u6210\u529F\u4FDD\u5B58\u7EDF\u8BA1\u8868\u76D8 [{0}]
-view_tree_common_contextMenu_type_name_label = Type: {0}
-view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group
-view_tree_common_loadFailed_children = \u52A0\u8F7D\u5B50\u8282\u70B9\u5931\u8D25
-view_tree_common_loadFailed_create = Failed to create view for this node
-view_tree_common_loadFailed_descendants = Failed to load descendants for tree
-view_tree_common_loadFailed_generic = \u52A0\u8F7D\u6811\u5931\u8D25
-view_tree_common_loadFailed_group = \u52A0\u8F7Did\u4E3A[{0}]\u7684\u7EC4\u5931\u8D25
-view_tree_common_loadFailed_groupTree = \u52A0\u8F7D\u7EC4\u6811\u5931\u8D25
-view_tree_common_loadFailed_node =
\u52A0\u8F7D\u8FD9\u4E2A\u8282\u70B9\u6570\u636E\u5931\u8D25
-view_tree_common_loadFailed_root = \u52A0\u8F7D\u6811\u6839\u8282\u70B9\u5931\u8D25
-view_tree_common_loadFailed_selection = Failed to select this node
-view_tree_common_loadFailed_update = Failed to update view for this node
-view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing
group. key: [{0}]
-view_type_parentId = \u7236ID
-view_type_resourceTypes = \u8D44\u6E90\u7C7B\u578B
-view_type_typeTreeLoadFailure = \u52A0\u8F7D\u8D44\u6E90\u7C7B\u578B\u6811\u5931\u8D25
-view_upload_alreadyUploaded = \u6587\u4EF6\u5DF2\u7ECF\u4E0A\u4F20
-view_upload_bundleDistFile = \u5206\u7C7B\u6587\u4EF6
-view_upload_error_bundleDistFile = \u4E0A\u4F20\u5206\u7C7B\u6587\u4EF6\u5931\u8D25
-view_upload_error_file = \u4E0A\u4F20\u6587\u4EF6\u51FA\u73B0\u9519\u8BEF
-view_upload_error_fileName = \u4E0A\u4F20\u6587\u4EF6 [{0}]\u51FA\u73B0\u9519\u8BEF
-view_upload_error_fileName_2 = \u4E0A\u4F20\u6587\u4EF6 [{0}]\u51FA\u73B0\u9519\u8BEF,
\u68C0\u67E5\u6587\u4EF6\u8DEF\u5F84.
-view_upload_error_packageVersionFile =
\u4E0A\u4F20\u5305\u7248\u672C\u6587\u4EF6\u51FA\u73B0\u9519\u8BEF
-view_upload_error_results = \u4E0A\u4F20\u6587\u4EF6\u5931\u8D25,
\u65E0\u6CD5\u9884\u6599\u7684\u7ED3\u679C: [{0}]
-view_upload_inProgress = \u65E0\u6CD5\u63D0\u4EA4,
\u6587\u4EF6\u4E0A\u4F20\u6B63\u5728\u8FDB\u884C
-view_upload_prompt_1 =
\u8BF7\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u4E0A\u4F20[{0}]
-view_upload_prompt_2 = \u8981\u4E0A\u4F20\u7684\u6587\u4EF6
-view_upload_success = \u6587\u4EF6\u4E0A\u4F20\u6210\u529F
-view_upload_tooltip_1a =
\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u4E0A\u4F20,\u7136\u540E\u70B9\u51FBUpload\u6216\u8005Next
-view_upload_tooltip_1b = \u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u4E0A\u4F20,
\u7136\u540E\u70B9\u51FB Next
-view_upload_tooltip_2 = \u6587\u4EF6\u4E0A\u4F20
\u524D\u53D1\u751F\u9519\u8BEF
-view_upload_upload = \u4E0A\u4F20
-view_upload_uploadFile = \u4E0A\u4F20\u6587\u4EF6
-
-widget_colorPicker_tooltip = \u9009\u62E9\u989C\u8272
-widget_durationItem_inputUnitLessThanTargetUnit =
\u8F93\u5165\u5355\u4F4D\u662F\u5C0F\u4E8E\u76EE\u6807\u5355\u4F4D.
-widget_durationItem_unitTypeNotSupported =
\u5355\u4F4D\u7C7B\u578B[{0}]\u4E0D\u88ABDurationItem\u652F\u6301.
-widget_jobTriggerEditor_fieldHelp_repeatDuration = keep running this operation this many
times or until this amount of time has elapsed
-widget_jobTriggerEditor_fieldHelp_repeatInterval = \u591A\u4E45\u6267\u884C\u64CD\u4F5C
-widget_jobTriggerEditor_fieldHelp_startDelay = \u6267\u884C\u64CD\u4F5C\u5EF6\u65F6
-widget_jobTriggerEditor_field_cronExpression = Cron\u8868\u8FBE\u5F0F
-widget_jobTriggerEditor_field_mode = Schedule using
-widget_jobTriggerEditor_field_repeatInterval_later = \u91CD\u590D\u6BCF
-widget_jobTriggerEditor_field_repeatInterval_now = Run now and every
-widget_jobTriggerEditor_field_startType = Run
-widget_jobTriggerEditor_message_endTimeMustBeAfterStartTime =
\u7ED3\u675F\u65F6\u95F4\u5FC5\u987B\u665A\u4E8E\u5F00\u59CB\u65F6\u95F4.
-widget_jobTriggerEditor_message_endTimeMustBeInFuture =
\u7ED3\u675F\u65F6\u95F4\u5FC5\u987B\u662F\u672A\u6765\u65F6\u95F4.
-widget_jobTriggerEditor_message_startTimeMustBeInFuture =
\u5F00\u59CB\u65F6\u95F4\u5FC5\u987B\u662F\u672A\u6765\u65F6\u95F4.
-widget_jobTriggerEditor_tab_examples = \u4F8B\u5B50
-widget_jobTriggerEditor_tab_format = \u683C\u5F0F
-widget_jobTriggerEditor_value_calendar = \u65E5\u5386
-widget_jobTriggerEditor_value_cronExpression = Cron\u8868\u8FBE\u5F0F
-widget_jobTriggerEditor_value_for = For
-widget_jobTriggerEditor_value_in = in
-widget_jobTriggerEditor_value_indefinitely = Indefinitely
-widget_jobTriggerEditor_value_later = Later
-widget_jobTriggerEditor_value_laterAndRepeat = Later & Repeat
-widget_jobTriggerEditor_value_now = Now
-widget_jobTriggerEditor_value_nowAndRepeat = Now & Repeat
-widget_jobTriggerEditor_value_on = on
-widget_jobTriggerEditor_value_until = \u76F4\u5230
-widget_recordEditor_error_invalidViewPath = \u67E5\u770B\u8DEF\u5F84\u65E0\u6548: [{0}]
-widget_recordEditor_error_multipleRecords = \u591A\u6761\u8BB0\u5F55\u8FD4\u56DE-
\u9884\u671F\u53EA\u6709\u4E00\u4E2A.
-widget_recordEditor_error_noRecords = \u65E0\u8BB0\u5F55\u8FD4\u56DE -
\u9884\u671F\u6709\u4E00\u6761.
-widget_recordEditor_error_operation =
\u64CD\u4F5C\u5931\u8D25.\u6709\u9519\u8BEF\u53D1\u751F
-widget_recordEditor_error_operationInvalidValues =
\u64CD\u4F5C\u5931\u8D25-\u4E00\u4E2A\u6216\u591A\u4E2A\u5B57\u6BB5\u7684\u503C\u65E0\u6548
-widget_recordEditor_error_permissionCreate =
\u4F60\u6CA1\u6709\u521B\u5EFA\u65B0[{0}]\u7684\u6743\u9650
-widget_recordEditor_error_unsupportedOperationType =
\u4E0D\u652F\u6301\u7684\u64CD\u4F5C\u7C7B\u578B: [{0}]
-widget_recordEditor_info_recordCreatedConcise = {0} created.
-widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
-widget_recordEditor_info_recordUpdatedConcise = {0} updated.
-widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
-widget_recordEditor_info_recordsDeletedConcise = {0} {1} deleted.
-widget_recordEditor_info_recordsDeletedDetailed = {0} {1} deleted: {2}.
-widget_recordEditor_label_loading = \u52A0\u8F7D\u4E2D...
-widget_recordEditor_title_edit = \u7F16\u8F91{0} [{1}]
-widget_recordEditor_title_new = \u65B0\u5EFA{0}
-widget_recordEditor_title_view = \u67E5\u770B{0} [{1}]
-widget_recordEditor_warn_validation =
\u4E00\u4E2A\u6216\u591A\u4E2A\u5B57\u6BB5\u7684\u503C\u65E0\u6548.
\u53EA\u6709\u5B57\u6BB5\u6709\u6548\u65F6\uFF0C[{0}]\u624D\u80FD\u4FDD\u5B58
-widget_resourceFactoryWizard_archPrompt = \u5305\u67B6\u6784
-widget_resourceFactoryWizard_configTemplatePrompt = \u8D44\u6E90\u914D\u7F6E\u6A21\u677F
-widget_resourceFactoryWizard_contentTemplatePrompt =
\u53D1\u5E03\u65F6\u95F4\u914D\u7F6E\u6A21\u677F
-widget_resourceFactoryWizard_createSubmit = \u521B\u5EFA\u8D44\u6E90[{0}]\u6210\u529F.
-widget_resourceFactoryWizard_createSubmitType =
\u521B\u5EFA\u7C7B\u578B[{0}]\u7684\u8D44\u6E90\u8BF7\u6C42\u63D0\u4EA4\u6210\u529F.
-widget_resourceFactoryWizard_createWizardTitle =
\u521B\u5EFA\u7C7B\u578B[{0}]\u7684\u65B0\u8D44\u6E90
-widget_resourceFactoryWizard_createWizardWindowTitle =
\u8D44\u6E90\u521B\u5EFA\u5411\u5BFC
-##widget_resourceFactoryWizard_editConfigStepName = Deployment Options
-widget_resourceFactoryWizard_execute1 = \u521B\u5EFA\u8D44\u6E90\u5931\u8D25 -
\u6CA1\u6709\u5305\u7248\u672C
-widget_resourceFactoryWizard_execute2 = \u521B\u5EFA\u8D44\u6E90\u5931\u8D25
-widget_resourceFactoryWizard_failedToDeleteVersion =
\u53D6\u6D88\u521B\u5EFA\u8D44\u6E90\u65F6\u65E0\u6CD5\u5220\u9664\u5305\u7684\u7248\u672C
-widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for new
resource
-widget_resourceFactoryWizard_importFailure =
\u624B\u5DE5\u5BFC\u5165\u8D44\u6E90\u5931\u8D25
-widget_resourceFactoryWizard_importSubmitted =
\u5BFC\u5165\u7C7B\u578B[{0}]\u7684\u65B0\u8D44\u6E90\u8BF7\u6C42\u5DF2\u88AB\u63D0\u4EA4
-widget_resourceFactoryWizard_importWizardTitle =
\u5BFC\u5165\u7C7B\u578B[{0}]\u7684\u8D44\u6E90
-widget_resourceFactoryWizard_importWizardWindowTitle =
\u5BFC\u5165\u8D44\u6E90\u5411\u5BFC
-widget_resourceFactoryWizard_infoStepName = \u8D44\u6E90\u6D88\u606F
-widget_resourceFactoryWizard_infoStep_loadFail = \u65E0\u6CD5\u53D6\u5F97\u67B6\u6784
-widget_resourceFactoryWizard_namePrompt = \u65B0\u8D44\u6E90\u540D
-widget_resourceFactoryWizard_templatePrompt = \u8FDE\u63A5\u8BBE\u7F6E\u6A21\u677F
-##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the RHQ Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
-widget_resourceFactoryWizard_uploadFailure = \u4E0A\u4F20\u6587\u4EF6\u5931\u8D25
-widget_resourceFactoryWizard_uploadFileStepName =
\u4E0A\u4F20\u8D44\u6E90Content\u6587\u4EF6
-widget_resourceFactoryWizard_uploadInProgress = \u6B63\u5728\u4E0A\u4F20\u4E2D...
\u5927\u7684\u53D1\u5E03\u6587\u4EF6\u9700\u8981\u6D88\u8017\u6570\u5206\u949F\u5B8C\u6210.
-widget_resourceFactoryWizard_versionPrompt = \u5305\u7248\u672C
-widget_resourceSelector_groupCategory = \u7EC4\u7C7B\u522B
-widget_resourceSelector_pleaseSelectMultipleResource =
\u8BF7\u9009\u62E9\u4E00\u4E2A\u6216\u591A\u4E2A\u8D44\u6E90
-widget_resourceSelector_pleaseSelectResource = \u8BF7\u9009\u62E9\u8D44\u6E90
-widget_resourceSelector_selectMultipleResources = \u9009\u62E9\u8D44\u6E90
-widget_resourceSelector_selectResource = \u9009\u62E9\u8D44\u6E90
-widget_typeCache_loadFail =
\u65E0\u6CD5\u52A0\u8F7D\u8D44\u6E90\u7C7B\u578B\u7684\u5143\u6570\u636E
-widget_typeTree_badTemplateType = \u65E0\u6548\u7684URL.
\u672A\u77E5\u6A21\u677F\u7C7B\u578B[{0}]
-widget_typeTree_badTypeId = \u65E0\u6548URL. \u9519\u8BEF\u8D44\u6E90\u7C7B\u578BID
[{0}]
-widget_typeTree_loadFail = \u52A0\u8F7D\u8D44\u6E90\u7C7B\u578B\u5931\u8D25
+#
+# RHQ GUI i18n Messages - Localization: ZH
+#
+# Developers: See the following wiki page for how to work with this file:
+#
+#
http://rhq-project.org/display/RHQ/Working+with+the+Resource+Bundles
+#
+###################################
+common_alert_high = High
+common_alert_low = Low
+common_alert_medium = Medium
+common_buildInfo_gwtVersion = ${gwt.version}
+common_button_ack = \u786E\u8BA4
+common_button_ack_all = \u786E\u8BA4\u6240\u6709
+common_button_add = \u6DFB\u52A0
+common_button_advanced = \u9AD8\u7EA7...
+common_button_apply = \u63A5\u53D7
+common_button_cancel = \u53D6\u6D88
+common_button_close = \u5173\u95ED
+common_button_compare = \u5BF9\u6BD4
+common_button_create_child = Create Child
+common_button_delete = \u5220\u9664
+common_button_delete_all = \u5220\u9664\u6240\u6709
+common_button_disable = \u7981\u7528
+common_button_edit = \u7F16\u8F91
+common_button_enable = \u542F\u7528
+common_button_finish = \u5B8C\u6210
+common_button_import = \u5BFC\u5165
+common_button_new = \u65B0\u5EFA
+common_button_next = \u4E0B\u4E00\u6B65
+common_button_ok = OK
+common_button_previous = \u4E0A\u4E00\u6B65
+common_button_purgeAll = \u6E05\u9664\u6240\u6709
+common_button_refresh = \u5237\u65B0
+common_button_reset = \u91CD\u7F6E
+common_button_save = \u4FDD\u5B58
+common_button_schedule = \u8BA1\u5212
+common_button_search = \u68C0\u7D22
+common_button_set = Set
+common_button_showDetails = \u67E5\u770B\u8BE6\u60C5...
+common_button_uninventory = Uninventory
+common_calendar_april_short = \u56DB\u6708
+common_calendar_august_short = \u516B\u6708
+common_calendar_december_short = \u5341\u4E8C\u6708
+common_calendar_february_short = \u4E8C\u6708
+common_calendar_january_short = \u4E00\u6708
+common_calendar_july_short = \u4E03\u6708
+common_calendar_june_short = \u516D\u6708
+common_calendar_march_short = \u4E09\u6708
+common_calendar_may_short = \u4E94\u6708
+common_calendar_november_short = \u5341\u4E00\u6708
+common_calendar_october_short = \u5341\u6708
+common_calendar_september_short = \u4E5D\u6708
+common_label_ago = ago
+common_label_all = \u6240\u6709
+common_label_all_resources = \u6240\u6709\u8D44\u6E90
+common_label_day = \u5929
+common_label_days = \u5929
+common_label_hour = \u5C0F\u65F6
+common_label_hours = \u5C0F\u65F6
+common_label_item = \u9879
+common_label_items = \u9879
+common_label_milliseconds = \u6BEB\u79D2
+common_label_minutes = \u5206\u949F
+common_label_month = \u6708
+common_label_none = \u65E0
+common_label_role = \u89D2\u8272
+common_label_roles = \u89D2\u8272
+common_label_scheduled_operations = \u8BA1\u5212\u64CD\u4F5C
+common_label_seconds = \u79D2
+common_label_selected_resources = \u5DF2\u9009\u8D44\u6E90
+common_label_unlimited = \u65E0\u9650\u5236
+common_label_user = \u7528\u6237
+common_label_users = \u7528\u6237
+common_label_week = \u5468
+common_label_weeks = \u5468
+common_label_yesterday = \u6628\u5929
+common_msg_areYouSure = \u4F60\u786E\u5B9A?
+common_msg_asyncTimeout = {0}.
\u56E0\u4E3A\u670D\u52A1\u5668\u54CD\u5E94\u65F6\u95F4\u592A\u957F.
\u8BF7\u6CE8\u610F\u670D\u52A1\u5668\u53EF\u80FD\u4ECD\u5728\u5904\u7406\u60A8\u7684\u8BF7\u6C42\uFF0C\u5E76\u53EF\u80FD\u5728\u77ED\u671F\u5185\u5B8C\u6210.
\u4F60\u53EF\u4EE5\u68C0\u67E5\u670D\u52A1\u5668\u65E5\u5FD7\uFF0C\u67E5\u770B\u662F\u5426\u51FA\u73B0\u4EFB\u4F55\u4E0D\u6B63\u5E38\u7684\u9519\u8BEF.
+common_msg_changeAutoDetected = Change auto-detected
+common_msg_deleteConfirm = \u4F60\u786E\u5B9A\u8981\u5220\u9664# selected {0}?
+common_msg_emphasizedNotePrefix = \u6CE8\u610F:
+common_msg_loading = \u52A0\u8F7D\u4E2D...
+common_msg_noItemsToShow = \u6CA1\u6709\u6761\u76EE\u663E\u793A
+common_msg_notYetImplemented = \u5C1A\u672A\u5B9E\u73B0
+common_msg_see_more = \u67E5\u770B\u66F4\u591A...
+common_msg_step_x_of_y = Step {0} of {1}
+common_severity_debug = Debug
+common_severity_error = Error
+common_severity_fatal = Fatal
+common_severity_info = Info
+common_severity_warn = Warn
+common_status_canceled = Canceled
+common_status_deferred = Deferred
+common_status_failed = Failed
+common_status_inprogress = In Progress
+common_status_nochange = No Change
+common_status_partial = Partial
+common_status_success = Success
+common_status_timedOut = Timed Out
+common_status_unknown = Unknown
+common_title_add_column = \u6DFB\u52A0\u5217
+common_title_add_graph_to_view = \u6DFB\u52A0\u56FE\u5230\u76D1\u89C6\u89C6\u56FE
+common_title_add_portlet = \u6DFB\u52A0Portlet
+common_title_address = \u5730\u5740
+common_title_alert_range = \u544A\u8B66\u8303\u56F4
+common_title_ancestry = \u7956\u5148
+common_title_availability = \u53EF\u7528\u6027
+common_title_available_resources = \u53EF\u7528\u7684\u8D44\u6E90
+common_title_average_metrics = \u5E73\u5747\u6BCF\u5206\u949F\u6307\u6807
+common_title_background = \u80CC\u666F\u8272
+common_title_bundle = Bundle
+common_title_bundles = Bundles
+common_title_category = \u7C7B\u522B
+common_title_change_refresh_time = \u5237\u65B0\u95F4\u9694
+common_title_columns = \u5217
+common_title_compare_metrics = \u6307\u6807\u5BF9\u6BD4
+common_title_compatibleGroups = \u517C\u5BB9\u7EC4
+common_title_compatibleGroups_total = \u6240\u6709\u517C\u5BB9\u7EC4
+common_title_component_errors = \u7EC4\u4EF6\u9519\u8BEF
+common_title_config_update_status = \u66F4\u65B0\u72B6\u6001
+common_title_configuration = \u914D\u7F6E
+common_title_count = \u6570
+common_title_custom = \u81EA\u5B9A\u4E49
+common_title_dashboard_name = \u7EDF\u8BA1\u8868\u76D8\u540D
+common_title_dateCreated = \u521B\u5EFA\u65E5\u671F
+common_title_dateRange = \u65E5\u671F\u8303\u56F4
+common_title_default = \u9ED8\u8BA4
+common_title_description = \u63CF\u8FF0
+common_title_details = \u8BE6\u7EC6
+common_title_display = \u663E\u793A
+common_title_display_name = \u663E\u793A\u540D
+common_title_duration = \u95F4\u9694
+common_title_edit_mode = \u7F16\u8F91\u6A21\u5F0F
+common_title_enabled = \u542F\u7528?
+common_title_end = End
+common_title_error = Error
+common_title_generalProp = \u57FA\u672C\u5C5E\u6027
+common_title_group = \u7EC4
+common_title_group_def_total = \u5B9A\u4E49\u7EC4\u603B\u6570
+common_title_group_member_health = Group Member Health
+common_title_groups = \u7EC4
+common_title_help = \u5E2E\u52A9
+common_title_host = \u4E3B\u673A
+common_title_id = ID
+common_title_id_parent = \u7236ID
+common_title_info = Info
+common_title_inventory = \u6E05\u5355
+common_title_inventorySummary = \u6E05\u5355\u6C47\u603B
+common_title_lastUpdated = \u6700\u8FD1\u66F4\u65B0
+common_title_lastUpdatedBy = \u6700\u8FD1\u66F4\u65B0\u8005
+common_title_ldapGroups = LDAP\u7EC4
+common_title_mashup = Mashup
+common_title_members_reporting = \u7EC4\u62A5\u8868
+common_title_message = \u6D88\u606F
+common_title_metric = Metric
+common_title_metric_chart = Metric\u56FE\u8868
+common_title_mixedGroups = \u6DF7\u5408\u7EC4
+common_title_mixedGroups_total = \u6240\u6709\u6DF7\u5408\u7EC4
+common_title_name = \u540D\u79F0
+common_title_new_dashboard = \u65B0\u5EFA\u7EDF\u8BA1\u8868\u76D8
+common_title_numeric_metrics = \u6570\u5B57\u578B\u6307\u6807
+common_title_numeric_type = \u6570\u5B57\u7C7B\u578B
+common_title_operation_status = \u64CD\u4F5C\u72B6\u6001
+common_title_operations = \u64CD\u4F5C
+common_title_operations_range = \u64CD\u4F5C\u8303\u56F4
+common_title_over = Over
+common_title_password = \u5BC6\u7801
+common_title_path = Path
+common_title_permissions = \u6743\u9650
+common_title_platform = \u5E73\u53F0
+common_title_platform_total = \u6240\u6709\u5E73\u53F0
+common_title_plugin = \u63D2\u4EF6
+common_title_port = \u7AEF\u53E3
+common_title_providers = \u63D0\u4F9B\u8005
+common_title_recent_alerts = \u6700\u8FD1\u544A\u8B66
+common_title_recent_bundle_deployments = \u6700\u8FD1\u53D1\u5E03Bundles
+common_title_recent_configuration_updates = \u6700\u8FD1\u914D\u7F6E\u66F4\u65B0
+common_title_recent_event_counts = \u6700\u8FD1\u4E8B\u4EF6\u6570
+common_title_recent_measurements = Recent Measurements
+common_title_recent_oob_metrics = Recent Out of Bound metrics
+common_title_recent_operations = \u6700\u8FD1\u64CD\u4F5C
+common_title_recent_pkg_history = \u6700\u8FD1\u5386\u53F2\u5305
+common_title_recently_added = \u6700\u8FD1\u6DFB\u52A0
+common_title_remove_column = \u79FB\u9664\u5217
+common_title_repositories = \u5E93
+common_title_resource = \u8D44\u6E90
+common_title_resourceGroups = \u8D44\u6E90\u7EC4
+common_title_resource_group = \u8D44\u6E90\u7EC4
+common_title_resource_id = \u8D44\u6E90ID
+common_title_resource_inventory = \u8D44\u6E90\u6E05\u5355
+common_title_resource_key = \u8D44\u6E90Key
+common_title_resource_name = \u8D44\u6E90\u540D
+common_title_resource_type = \u8D44\u6E90\u7C7B\u578B
+common_title_resources = \u8D44\u6E90
+common_title_results_count = \u7ED3\u679C\u6570\u91CF
+common_title_results_count_tooltip = \u663E\u793A\u7ED3\u679C\u6570\u91CF
+common_title_role = \u89D2\u8272
+common_title_roles = \u89D2\u8272
+common_title_scheduled_operations = \u8BA1\u5212\u64CD\u4F5C
+common_title_search = \u641C\u7D22
+common_title_selected_resources = \u9009\u62E9\u7684\u8D44\u6E90
+common_title_server = \u670D\u52A1\u5668
+common_title_server_total = \u670D\u52A1\u5668\u603B\u6570
+common_title_service = \u670D\u52A1
+common_title_service_total = \u670D\u52A1\u603B\u6570
+common_title_settings = \u8BBE\u7F6E
+common_title_show = \u663E\u793A
+common_title_show_more = \u663E\u793A\u6240\u6709...
+common_title_sort_order = \u6392\u5E8F
+common_title_sort_order_tooltip = \u8BBE\u7F6E\u6392\u5E8F\u65B9\u5F0F.
+common_title_start = \u5F00\u59CB
+common_title_status = \u72B6\u6001
+common_title_stop = \u505C\u6B62
+common_title_summary = \u7EDF\u8BA1
+common_title_tag_cloud = \u6807\u7B7E\u4E91
+common_title_the = The
+common_title_timestamp = \u65E5\u671F/\u65F6\u95F4
+common_title_total = \u603B\u6570
+common_title_type = \u7C7B\u578B
+common_title_units = \u5355\u4F4D
+common_title_user = \u7528\u6237
+common_title_users = \u7528\u6237
+common_title_value = \u503C
+common_title_version = \u7248\u672C
+common_title_view_mode = \u67E5\u770B\u6A21\u5F0F
+common_title_web_address = Web\u5730\u5740
+common_title_welcome = \u6B22\u8FCE
+common_unit_days = \u5929
+common_unit_hours = \u5C0F\u65F6
+common_unit_milliseconds = \u6BEB\u79D2
+common_unit_minutes = \u5206\u949F
+common_unit_months = \u6708
+common_unit_seconds = \u79D2
+common_unit_times = \u6B21
+common_unit_weeks = \u5468
+common_unit_years = \u5E74
+common_val_for = for
+common_val_n1st = {0}st
+common_val_n2nd = {0}nd
+common_val_n3rd = {0}rd
+common_val_na = N/A
+common_val_never = Never
+common_val_no = No
+common_val_no_lower = no
+common_val_none = None
+common_val_nth = {0}th
+common_val_yes = Yes
+common_val_yes_lower = yes
+dataSource_ContentRepoTree_error_load = \u52A0\u8F7D\u5E93\u9519\u8BEF
+dataSource_ContentRepoTree_field_parentId = \u7236ID
+dataSource_bundle_loadFailed = \u52A0\u8F7Dbundle\u6570\u636E\u5931\u8D25
+dataSource_configurationHistory_clickToSeeError =
\u53CC\u51FB\u67E5\u770B\u9519\u8BEF...
+dataSource_configurationHistory_currentConfig = \u8FD9\u662F\u5F53\u524D\u914D\u7F6E
+dataSource_configurationHistory_dateCompleted = \u5B8C\u6210\u65E5\u671F
+dataSource_configurationHistory_dateSubmitted = \u63D0\u4EA4\u65E5\u671F
+dataSource_configurationHistory_error_fetchFailure =
\u65E0\u6CD5\u52A0\u8F7D\u5386\u53F2\u914D\u7F6E.
+dataSource_configurationHistory_updateType = \u66F4\u65B0\u7C7B\u578B
+dataSource_configurationHistory_updateType_group = \u7EC4
+dataSource_configurationHistory_updateType_individual = Individual
+dataSource_definitions_loadFailed = \u65E0\u6CD5\u52A0\u8F7D\u6307\u6807\u5B9A\u4E49
+dataSource_measurementOob_error_fetchFailure = \u52A0\u8F7Dmeasurement OOB
information\u5931\u8D25
+dataSource_measurementOob_field_factor = Out of Range Factor (%)
+dataSource_measurementOob_field_formattedBaseband = Band
+dataSource_measurementOob_field_formattedOutlier = Outlier
+dataSource_measurementOob_field_parentName = \u7236
+dataSource_measurementOob_field_resourceName = \u8D44\u6E90
+dataSource_measurementOob_field_scheduleName = \u6307\u6807
+dataSource_operationHistory_error_fetchFailure =
\u52A0\u8F7D\u5386\u53F2\u64CD\u4F5C\u5931\u8D25.
+dataSource_operationHistory_field_createdTime = \u521B\u5EFA\u65F6\u95F4
+dataSource_operationHistory_field_operationName = \u64CD\u4F5C\u540D
+dataSource_operationHistory_field_startedTime = \u5F00\u59CB\u65F6\u95F4
+dataSource_operationHistory_field_subject = Requester
+dataSource_operationSchedule_field_description = \u6CE8\u610F
+dataSource_operationSchedule_field_id = \u8BA1\u5212\u4EFB\u52A1ID
+dataSource_operationSchedule_field_nextFireTime = \u4E0B\u6B21\u89E6\u53D1\u65F6\u95F4
+dataSource_operationSchedule_field_operationDisplayName = \u64CD\u4F5C
+dataSource_operationSchedule_field_operationName = \u64CD\u4F5C
+dataSource_operationSchedule_field_subject = \u6240\u6709\u8005
+dataSource_operationSchedule_field_timeout = \u8D85\u65F6(\u79D2)
+dataSource_platforms_field_cpu = CPU
+dataSource_platforms_field_memory = \u5185\u5B58
+dataSource_platforms_field_swap = \u4EA4\u6362\u533A
+dataSource_problemResources_error_fetchFailure =
\u52A0\u8F7D\u544A\u8B66/\u4E0D\u53EF\u7528\u8D44\u6E90\u5931\u8D25.
+dataSource_problemResources_field_alerts = \u544A\u8B66
+dataSource_problemResources_field_available = \u5F53\u524D\u53EF\u7528\u6027
+dataSource_recentOperations_error_fetchFailure =
\u52A0\u8F7D\u6700\u8FD1\u64CD\u4F5C\u5931\u8D25.
+dataSource_recentOperations_field_location = \u4F4D\u7F6E
+dataSource_recentOperations_field_operation = \u64CD\u4F5C
+dataSource_recentOperations_field_resource = \u8D44\u6E90
+dataSource_recentOperations_field_status = \u72B6\u6001
+dataSource_recentOperations_field_time = \u65E5\u671F/\u65F6\u95F4
+dataSource_resourceErrors_clickStatusIcon =
\u70B9\u51FB\u56FE\u6807\u67E5\u770B\u8BE6\u60C5
+dataSource_resourceErrors_deleteFailure =
\u5220\u9664\u8D44\u6E90\u9519\u8BEF\u5931\u8D25
+dataSource_resourceErrors_deleteSuccess = You have successfully deleted [{0}] resource
error messages.
+dataSource_resourceErrors_error_fetchFailure = Failed to find Resource errors for
Resource with id [{0}].
+dataSource_resourceErrors_field_errorType = \u9519\u8BEF\u7C7B\u578B
+dataSource_resourceErrors_field_summary = \u7EDF\u8BA1
+dataSource_resourceErrors_field_timeOccured = \u65F6\u95F4
+dataSource_resourceGroups_loadFailed = \u52A0\u8F7D\u8D44\u6E90\u7EC4\u5931\u8D25
+dataSource_resources_field_discoveryTime = \u53D1\u73B0\u65F6\u95F4
+dataSource_resources_field_importTime = \u5BFC\u5165\u65F6\u95F4
+dataSource_resources_field_key = Key
+dataSource_resources_field_lastModifiedTime = \u6700\u8FD1\u66F4\u6539\u65F6\u95F4
+dataSource_resources_field_lastModifier = \u6700\u8FD1\u4FEE\u6539\u8005
+dataSource_resources_field_location = \u4F4D\u7F6E
+dataSource_rpc_error_transformRequestFailure = Failure in datasource while processing {0}
request.
+dataSource_rpc_error_unsupportedArrayFilterType = No support for passing array filters of
type {0}.
+dataSource_rpc_error_unsupportedEnumType = Please add an appropriate code block for enum
{0} to RPCDataSource.getEnumArray(Class)
+dataSource_rpc_no = no
+dataSource_rpc_yes = yes
+dataSource_scheduledOperations_error_fetchFailure =
\u65E0\u6CD5\u8F7D\u5165\u8BA1\u5212\u64CD\u4F5C.
+dataSource_scheduledOperations_field_location = \u4F4D\u7F6E
+dataSource_scheduledOperations_field_operation = \u64CD\u4F5C
+dataSource_scheduledOperations_field_resource = \u8D44\u6E90
+dataSource_scheduledOperations_field_time = \u65E5\u671F/\u65F6\u95F4
+dataSource_schedules_disableFailure_group = Failed to disable the collection of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_disableFailure_resource = Failed to disable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_disableSuccessful_concise = You have disabled the collection of
[{0}] measurements
+dataSource_schedules_disableSuccessful_full_group = You have disabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The disabled measurements are:
[{2}]
+dataSource_schedules_disableSuccessful_full_resource = You have disabled the collection
of [{0}] measurements for the resource with ID [{1}]. The disabled measurements are:
[{2}]
+dataSource_schedules_enableFailure_group = Failed to enable the collection of [{0}]
metrics for group with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_enableFailure_resource = Failed to enable the collection of [{0}]
metrics for resource with ID [{1}]. The metrics were: [{2}]
+dataSource_schedules_enableSuccessful_concise = You have enabled the collection of [{0}]
measurements
+dataSource_schedules_enableSuccessful_full_group = You have enabled the collection of
[{0}] measurements for the resource group with ID [{1}]. The enabled measurements are:
[{2}]
+dataSource_schedules_enableSuccessful_full_resource = You have enabled the collection of
[{0}] measurements for the resource with ID [{1}]. The enabled measurements are: [{2}]
+dataSource_schedules_field_resourceGroupId = \u7EC4ID
+dataSource_schedules_loadFailed =
\u52A0\u8F7D\u6307\u6807\u8BA1\u5212\u4EFB\u52A1\u5931\u8D25
+dataSource_schedules_loadFailedContext = Failed to load metric schedules for context
[{0}]
+dataSource_schedules_loadFailedCriteria = Failed to load metric schedules for criteria
[{0}]
+dataSource_schedules_updateFailure_group = Failed to set the collection interval of [{0}]
metrics for resource group with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
+dataSource_schedules_updateFailure_resource = Failed to set the collection interval of
[{0}] metrics for resource with ID [{1}]. The metrics were: [{2}]. The collection interval
was to be [{3}] seconds.
+dataSource_schedules_updateSuccessful_concise = A new collection interval of [{0}]
seconds has been set on [{1}] measurements
+dataSource_schedules_updateSuccessful_full_group = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource group with ID [{2}]. The updated
measurements are: [{3}]
+dataSource_schedules_updateSuccessful_full_resource = A new collection interval of [{0}]
seconds has been set on [{1}] measurements for resource with ID [{2}]. The updated
measurements are: [{3}]
+dataSource_traits_failFetch = Failed to fetch traits for criteria [{0}].
+dataSource_traits_field_definitionID = Definition ID
+dataSource_traits_field_lastChanged = \u6700\u8FD1\u66F4\u6539
+dataSource_traits_field_primaryKey = \u4E3B\u952E
+dataSource_traits_field_trait = Trait
+dataSource_traits_group_field_groupId = \u7EC4ID
+dataSource_users_delete = \u5220\u9664\u7528\u6237[{0}]
+dataSource_users_deleteFailed = \u5220\u9664\u7528\u6237[{0}]\u5931\u8D25
+dataSource_users_field_department = \u90E8\u95E8
+dataSource_users_field_emailAddress = Email\u5730\u5740
+dataSource_users_field_factive = \u5141\u8BB8\u767B\u5F55?
+dataSource_users_field_firstName = \u540D
+dataSource_users_field_id = ID
+dataSource_users_field_lastName = \u59D3
+dataSource_users_field_ldap = LDAP\u767B\u5F55?
+dataSource_users_field_name = \u7528\u6237\u540D
+dataSource_users_field_password = \u5BC6\u7801
+dataSource_users_field_passwordVerify = \u786E\u8BA4\u5BC6\u7801
+dataSource_users_field_phoneNumber = \u7535\u8BDD\u53F7\u7801
+dataSource_users_invalidEmailAddress = \u90AE\u7BB1\u5730\u5740\u65E0\u6548.
+dataSource_users_passwordsDoNotMatch = \u5BC6\u7801\u4E0D\u5339\u914D.
+datasource_roles_field_ldapGroups = LDAP\u7EC4
+datasource_roles_field_permissions = \u6743\u9650
+datasource_roles_field_resourceGroups = \u8D44\u6E90\u7EC4
+datasource_roles_field_subjects = Subjects
+datasource_templateSchedules_disabled =
\u7981\u7528\u9009\u62E9\u7684\u6307\u6807[{0}]\u91C7\u96C6.
+datasource_templateSchedules_disabled_detailed = Disabled collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_disabled_failed = Failed to disable collection of metric
[{0}] [{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_enabled = Enabled collection of selected metric [{0}].
+datasource_templateSchedules_enabled_detailed = Enabled collection of metric [{0}] [{1}]
by default for ResourceType with id [{2}].
+datasource_templateSchedules_enabled_failed = Failed to enable collection of metric [{0}]
[{1}] by default for ResourceType with id [{2}].
+datasource_templateSchedules_updated = Updated collection intervals of selected metric
[{0}].
+datasource_templateSchedules_updated_detail = Collection interval for metric [{0}] [{1}]
by default for ResourceType with id [{2}] set to [{3}] seconds.
+datasource_templateSchedules_updated_failed = Failed to set collection interval to [{0}]
seconds for metric [{1}] [{2}] by default for ResourceType with id [{3}].
+favorites = \u6536\u85CF\u5939
+favorites_groups = \u7EC4\u6536\u85CF\u5939
+favorites_recentlyViewed = \u6700\u8FD1\u67E5\u770B
+favorites_resources = \u8D44\u6E90\u6536\u85CF\u5939
+group_tree_partialClusterTooltip = \u9664\u53BB
{1},{0}\u7684\u7EC4\u6210\u5458\u62E5\u6709
\u4E00\u4E2A''{2}''\u8D44\u6E90
+util_ancestry_parentAncestry = Parent Ancestry for:
+util_errorHandler_nullException = exception was null
+util_monitoringRequestCallback_error_checkServerStatusFailure =
\u65E0\u6CD5\u786E\u5B9A\u767B\u5F55\u72B6\u6001-
\u68C0\u67E5\u670D\u52A1\u5668\u72B6\u6001.
+util_rpcManager_activeRequests = {0}\u6FC0\u6D3B\u7684\u8BF7\u6C42
+util_userPerm_loadFailGlobal = \u65E0\u6CD5\u8F7D\u5165\u5168\u5C40\u6743\u9650-
\u672A\u6388\u6743.
+util_userPerm_loadFailGroup = \u65E0\u6CD5\u8BBF\u95EE\u8D44\u6E90\u7EC4[{0}] -
\u672A\u6388\u6743.
+util_userPerm_loadFailResource = \u65E0\u6CD5\u8BBF\u95EE\u8D44\u6E90[{0}] -
\u672A\u6388\u6743.
+util_userSession_loadFailSubject = UserSessionManager:
\u52A0\u8F7D\u7528\u6237\u4E3B\u9898\u5931\u8D25
+util_userSession_logoutFail = \u6CE8\u9500\u5931\u8D25.
+util_widgetsField_unlimited = \u65E0\u9650\u5236
+view_aboutBox_allRightsReserved = All Rights Reserved.
+view_aboutBox_buildNumber = \u4EA7\u54C1\u7F16\u8BD1\u53F7:
+view_aboutBox_failedToLoad = \u52A0\u8F7D\u4EA7\u54C1\u4FE1\u606F\u5931\u8D25.
+view_aboutBox_homepage = \u4E3B\u9875
+view_aboutBox_jbossByRedHat = JBoss by Red Hat
+view_aboutBox_title = \u5173\u4E8E {0}
+view_aboutBox_version = \u7248\u672C:
+view_adminConfig_downloads = \u4E0B\u8F7D
+view_adminConfig_plugins = \u63D2\u4EF6
+view_adminConfig_systemSettings = \u7CFB\u7EDF\u8BBE\u7F6E
+view_adminConfig_templates = \u6A21\u677F
+view_adminContent_contentSources = Content\u6E90
+view_adminContent_repositories = \u5E93
+view_adminRoles_assignedGroups = \u5206\u914D\u7684\u8D44\u6E90\u7EC4
+view_adminRoles_assignedSubjects = \u5206\u914D\u7684\u4E3B\u9898
+view_adminRoles_failLdap = \u65E0\u6CD5\u786E\u5B9ALDAP - \u5047\u5B9A\u6CA1\u6709LDAP.
+view_adminRoles_failLdapGroups = \u67E5\u8BE2\u6709\u6548LDAP\u7EC4\u5931\u8D25 -
\u5047\u5B9A\u65E0DAP\u7EC4.
+view_adminRoles_failLdapGroupsRole = \u52A0\u8F7DLDAP\u7EC4\u89D2\u8272\u5931\u8D25.
+view_adminRoles_failRoles = \u53D6\u5F97\u89D2\u8272\u5931\u8D25.
+view_adminRoles_globalPerms = \u5168\u5C40\u6388\u6743
+view_adminRoles_ldapGroups = LDAP\u7EC4
+view_adminRoles_ldapGroupsReadOnly = LDAP\u7EC4\u6570\u636E\u4E3A\u53EA\u8BFB
+view_adminRoles_noItems = \u6CA1\u6709\u6761\u76EE\u663E\u793A
+view_adminRoles_noLdap = \u6CA1\u6709\u96C6\u6210LDAP\u5B89\u5168, \u5230<a
{0}>{1}</a>.
+view_adminRoles_permissions_autoselecting_configureRead_implied = Autodeselected
CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
+view_adminRoles_permissions_autoselecting_configureWrite_implied = Autoselected
CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
+view_adminRoles_permissions_autoselecting_manageInventory_implied = Autoselected
unselected Resource permissions, since MANAGE_INVENTORY implies all Resource
permissions...
+view_adminRoles_permissions_autoselecting_manageSecurity_implied = Autoselected
unselected permissions, since MANAGE_SECURITY implies all other permissions...
+view_adminRoles_permissions_globalPermissions = \u5168\u5C40\u6388\u6743
+view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection = {0}
read permission cannot be deselected, unless the {0} write permission, which implies the
read permission, is deselected first.
+view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection = {0}
permission cannot be deselected, unless Manage Inventory, which implies all Resource
permissions, is deselected first.
+view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection = {0}
permission cannot be deselected, unless the Manage Security permission, which implies all
other permissions, is deselected first.
+view_adminRoles_permissions_isAuthorized = \u6388\u6743?
+view_adminRoles_permissions_isRead = \u8BFB?
+view_adminRoles_permissions_isWrite = \u5199?
+view_adminRoles_permissions_permDesc_manageBundles =
\u80FD\u521B\u5EFA,\u66F4\u65B0\u6216\u8005\u5220\u9664\u63D0\u4F9B\u7684bundles(\u4EFB\u4F55\u4EBA\u90FD\u80FD\u67E5\u770B)
+view_adminRoles_permissions_permDesc_manageInventory =
\u62E5\u6709\u6240\u6709\u8D44\u6E90\u6743\u9650, \u5982\u4E0B\u6240\u8FF0,
\u5BF9\u6240\u6709\u8D44\u6E90; \u5177\u6709\u521B\u5EFA, \u66F4\u65B0,
\u5220\u9664\u7EC4;
\u80FD\u5BFC\u5165\u81EA\u52A8\u53D1\u73B0\u6216\u624B\u52A8\u53D1\u73B0\u7684\u8D44\u6E90
+view_adminRoles_permissions_permDesc_manageRepositories = can create, update, or delete
repositories of any user (everyone can create their own repositories), can associate
content sources to repositories.
+view_adminRoles_permissions_permDesc_manageSecurity =
\u80FD\u521B\u5EFA,\u66F4\u65B0,\u6216\u5220\u9664\u7528\u6237\u548C\u89D2\u8272
(\u4EFB\u4F55\u4EBA\u90FD\u6709\u67E5\u770B\u6743\u9650)
+view_adminRoles_permissions_permDesc_manageSettings =
\u80FD\u4FEE\u6539RHQ\u670D\u52A1\u5668\u914D\u7F6E\u800C\u4E14\u80FD\u64CD\u4F5C\u4EFB\u4F55\u76F8\u5173\u7684\u670D\u52A1\u5668\u529F\u80FD
+view_adminRoles_permissions_permReadDesc_configure =
\u67E5\u770B\u8D44\u6E90\u914D\u7F6E\u548C\u8D44\u6E90\u914D\u7F6E\u4FEE\u8BA2\u5386\u53F2
+view_adminRoles_permissions_permReadDesc_control = (IMPLIED)
\u67E5\u770B\u53EF\u7528\u64CD\u4F5C\u548C\u64CD\u4F5C\u6267\u884C\u5386\u53F2
+view_adminRoles_permissions_permReadDesc_createChildResources = (IMPLIED)
\u67E5\u770B\u5B50\u8D44\u6E90\u521B\u5EFA\u5386\u53F2
+view_adminRoles_permissions_permReadDesc_deleteChildResources = (IMPLIED)
\u67E5\u770B\u5B50\u8D44\u6E90\u5220\u9664\u5386\u53F2
+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_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
+view_adminRoles_permissions_permWriteDesc_control = \u6267\u884C\u64CD\u4F5C;
\u5220\u9664\u64CD\u4F5C\u6267\u884C\u5386\u53F2
+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_manageContent = subscribe to content sources;
install and uninstall packages
+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
+view_adminRoles_permissions_perm_control = \u63A7\u5236
+view_adminRoles_permissions_perm_createChildResources = \u521B\u5EFA\u5B50\u8D44\u6E90
+view_adminRoles_permissions_perm_deleteChildResources = \u5220\u9664\u5B50\u8D44\u6E90
+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_manageEvents = \u7BA1\u7406\u4E8B\u4EF6
+view_adminRoles_permissions_perm_manageInventory = \u7BA1\u7406\u6E05\u5355
+view_adminRoles_permissions_perm_manageMeasurements = \u7BA1\u7406\u6307\u6807
+view_adminRoles_permissions_perm_manageRepositories = \u7BA1\u7406\u5E93
+view_adminRoles_permissions_perm_manageSecurity = \u7BA1\u7406\u6743\u9650
+view_adminRoles_permissions_perm_manageSettings = \u7BA1\u7406\u914D\u7F6E
+view_adminRoles_permissions_read = \u8BFB:
+view_adminRoles_permissions_readAccessImplied =
\u9ED8\u8BA4\u6709\u8BBF\u95EE{0}\u7684\u6743\u9650\u800C\u4E14\u65E0\u6CD5\u7981\u7528.
+view_adminRoles_permissions_resourcePermissions = \u8D44\u6E90\u6388\u6743
+view_adminRoles_permissions_write = \u5199:
+view_adminRoles_perms = \u6743\u9650
+view_adminRoles_resourcePerms = \u8D44\u6E90\u6388\u6743
+view_adminRoles_roleAdded = \u89D2\u8272[{0}]\u6DFB\u52A0.
+view_adminRoles_roleDeleteFailed = \u5220\u9664\u89D2\u8272[{0}]\u5931\u8D25.
+view_adminRoles_roleDeleted = \u89D2\u8272[{0}]\u5220\u9664.
+view_adminRoles_roleUpdateFailed = \u4FEE\u6539\u89D2\u8272[{0}]\u5931\u8D25.
+view_adminRoles_roleUpdated = \u89D2\u8272[{0}]\u66F4\u65B0\u4E86.
+view_adminSecurity_roles = \u89D2\u8272
+view_adminSecurity_users = \u7528\u6237
+view_adminTemplates_disabledAlertTemplates = \u7981\u7528\u544A\u8B66\u6A21\u677F
+view_adminTemplates_disabledMetricTemplates = \u7981\u7528\u6307\u6807\u6A21\u677F
+view_adminTemplates_editAlertTemplate = \u7F16\u8F91\u544A\u8B66\u6A21\u677F
+view_adminTemplates_editMetricTemplate = \u7F16\u8F91\u6307\u6807\u6A21\u677F
+view_adminTemplates_enabledAlertTemplates = \u542F\u7528\u544A\u8B66\u6A21\u677F
+view_adminTemplates_enabledMetricTemplates = \u542F\u7528\u6307\u6807\u6A21\u677F
+view_adminTemplates_platformServices = \u5E73\u53F0\u670D\u52A1
+view_adminTemplates_platforms = \u5E73\u53F0
+view_adminTemplates_prompt_disabledAlertTemplates =
\u8FD9\u79CD\u8D44\u6E90\u7C7B\u578B\u521B\u5EFA\u800C\u7981\u7528\u7684\u544A\u8B66\u6A21\u677F\u6570
+view_adminTemplates_prompt_disabledMetricTemplates = Number of metric schedules that are
disabled by default on this resource type
+view_adminTemplates_prompt_enabledAlertTemplates =
\u8FD9\u79CD\u8D44\u6E90\u7C7B\u578B\u542F\u7528\u7684\u544A\u8B66\u6A21\u677F\u6570
+view_adminTemplates_prompt_enabledMetricTemplates = Number of metric schedules that are
enabled by default on this resource type
+view_adminTemplates_servers = \u670D\u52A1\u5668
+view_adminTopology_affinityGroups = \u76F8\u5173\u7EC4
+view_adminTopology_agents = \u4EE3\u7406
+view_adminTopology_partitionEvents = Partition\u4E8B\u4EF6
+view_adminTopology_remoteAgentInstall = \u8FDC\u7A0B\u4EE3\u7406\u5B89\u88C5
+view_adminTopology_servers = \u670D\u52A1\u5668
+view_adminUsersDetails_dataTypeName = user
+view_adminUsersList_dataTypeName = user
+view_adminUsersList_dataTypeNamePlural = users
+view_admin_administration = \u7BA1\u7406
+view_admin_configuration = \u914D\u7F6E
+view_admin_content = Content
+view_admin_downloads_agentDownload = \u4EE3\u7406\u4E0B\u8F7D
+view_admin_downloads_agent_buildNumber = \u4EE3\u7406Build
+view_admin_downloads_agent_help = <p> \u8FD9\u662FRHQ
Agent\u66F4\u65B0\u7684\u4E8C\u8FDB\u5236jar\u6587\u4EF6. The purpose of this jar file is
to allow you to install a fresh agent on a machine where an agent does not yet exist and
to allow you to update an agent that is already installed on a machine. For more details,
run this agent download jar with the --help command line option:<br/> <b>java
-jar <agent-download.jar> --help</b> </p>
<h3>\u4EE3\u7406\u5B89\u88C5</h3> <p> <b>java -jar
<agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>\u4EE3\u7406\u66F4\u65B0</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
+view_admin_downloads_agent_link_label = Link
+view_admin_downloads_agent_link_value = \u4E0B\u8F7D\u4EE3\u7406 {0} ({1})
+view_admin_downloads_agent_loadError =
\u65E0\u6CD5\u83B7\u5F97\u4EE3\u7406\u7248\u672C\u4FE1\u606F
+view_admin_downloads_agent_md5 = \u4EE3\u7406MD5
+view_admin_downloads_agent_version = \u4EE3\u7406\u7248\u672C
+view_admin_downloads_bundleDownload = Bundle\u90E8\u7F72\u5668\u4E0B\u8F7D
+view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is for
use by developers and packagers of RHQ bundles. This standalone tool allows you to test
your bundles and their recipes from a console. </p>
+view_admin_downloads_bundle_link_label = Link
+view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
+view_admin_downloads_bundle_loadError = Cannot get bundle deployer info
+view_admin_downloads_cliDownload = \u547D\u4EE4\u884C\u5BA2\u6237\u7AEF\u4E0B\u8F7D
+view_admin_downloads_cli_buildNumber = CLI Build
+view_admin_downloads_cli_help = <p> This is the Command Line Client tool, otherwise
known as the CLI. It is a standalone tool that runs from within a console and provides a
command line interface to the RHQ Server. You can invoke commands via the CLI as well as
run scripts to perform automated tasks. See the documentation for more information on how
to install and use the CLI. </p>
+view_admin_downloads_cli_link_label = Link
+view_admin_downloads_cli_link_value = \u4E0B\u8F7DCLI {0} ({1})
+view_admin_downloads_cli_loadError = \u65E0\u6CD5\u83B7\u5F97CLI\u7248\u672C\u4FE1\u606F
+view_admin_downloads_cli_md5 = CLI MD5
+view_admin_downloads_cli_version = CLI\u7248\u672C
+view_admin_downloads_connectorsDownload = \u8FDE\u63A5\u5668\u4E0B\u8F7D
+view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by RHQ. You install connectors into some managed
products so RHQ agents can talk to them. See the documentation for more information.
+view_admin_downloads_connectors_loadError = Cannot get connectors info
+view_admin_downloads_connectors_none = No connectors are available for download
+view_admin_landing =
\u8FD9\u91CC\u4F60\u53EF\u4EE5\u7BA1\u7406RHQ\u5168\u5C40\u914D\u7F6E.\u5305\u62EC\u914D\u7F6E\u5B89\u5168,\u5B89\u88C5\u63D2\u4EF6,\u7BA1\u7406RHQ\u670D\u52A1\u5668\u548C\u4EE3\u7406.
+view_admin_measTemplates_title = Template Metric Collection Schedules
+view_admin_measTemplates_updateExisting_title =
\u66F4\u65B0\u5B58\u5728\u7684\u8BA1\u5212\u4EFB\u52A1
+view_admin_measTemplates_updateExisting_tooltip = Check this box to update the collection
schedules for the selected metrics on all existing resources of this type. If this is not
checked, the template schedules will only be applied to new resources of this type that
are added to inventory in the future.
+view_admin_security = \u5B89\u5168
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc = If this amount of time passes
without hearing from an agent, that quiet agent will be considered down. This value is
specified in minutes.
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_name = Agent Max Quiet Time Allowed
+view_admin_systemSettings_AlertPurge_desc = How old alert history items must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_AlertPurge_name = Delete Alerts Older Than
+view_admin_systemSettings_AvailabilityPurge_desc = How old availability data must be
before being purged from the database. This is specified in days.
+view_admin_systemSettings_AvailabilityPurge_name = Delete Availability Data Older Than
+view_admin_systemSettings_BaseURL_desc = A URL to the server GUI, used mainly within
alert email notifications.
+view_admin_systemSettings_BaseURL_name = GUI Console URL
+view_admin_systemSettings_BaselineDataSet_desc = The amount of past measurement data that
is used to determine a baseline. This is specified in days.
+view_admin_systemSettings_BaselineDataSet_name = Baseline Dataset
+view_admin_systemSettings_BaselineFrequency_desc = The frequency which the
auto-calculation of baselines will be performed. If 0, baseline auto-calculation is
disabled. This is specified in days.
+view_admin_systemSettings_BaselineFrequency_name = Baseline Calculation Frequency
+view_admin_systemSettings_DataMaintenance_desc = How often database maintenance is
performed (for example, vacuuming if using Postgres). This is specified in hours.
+view_admin_systemSettings_DataMaintenance_name =
\u6570\u636E\u5E93\u7EF4\u62A4\u671F\u95F4
+view_admin_systemSettings_DataReindex_desc = If enabled, certain database tables will be
re-indexed periodically.
+view_admin_systemSettings_DataReindex_name = Reindex Data Tables Nightly
+view_admin_systemSettings_EnableAgentAutoUpdate_desc = Determines if the server will
allow agents to auto-update themselves. You will not be able to download agent
distributions from the server if this is disabled.
+view_admin_systemSettings_EnableAgentAutoUpdate_name =
\u542F\u7528\u4EE3\u7406\u81EA\u52A8\u5347\u7EA7
+view_admin_systemSettings_EnableDebugMode_desc =
\u5982\u679C\u542F\u7528,\u670D\u52A1\u5668\u5C06\u8FDB\u5165debug\u6A21\u5F0F.
+view_admin_systemSettings_EnableDebugMode_name = \u542F\u7528Debug\u6A21\u5F0F
+view_admin_systemSettings_EnableExperimentalFeatures_desc = If enabled, any experimental
features that exist in the current product will be available.
+view_admin_systemSettings_EnableExperimentalFeatures_name = Enable Experimental Features
+view_admin_systemSettings_EventPurge_desc = How old event data must be before being
purged from the database. This is specified in days.
+view_admin_systemSettings_EventPurge_name = Delete Events Older Than
+view_admin_systemSettings_JAASProvider_desc = Should LDAP be used to determine user
identity?
+view_admin_systemSettings_JAASProvider_name = \u542F\u7528LDAP
+view_admin_systemSettings_LDAPBaseDN_desc = The base of the directory tree to search for
usernames and passwords while authenticating users, e.g. ou=People,dc=redhat,dc=com
+view_admin_systemSettings_LDAPBaseDN_name = Search Base
+view_admin_systemSettings_LDAPBindDN_desc = The username to connect to the LDAP server
when querying the LDAP user database. This is typically the full LDAP distinguished name
(DN) of a manager user, e.g. cn=Manager,dc=redhat,dc=com
+view_admin_systemSettings_LDAPBindDN_name = \u7528\u6237\u540D
+view_admin_systemSettings_LDAPBindPW_desc = The credentials of the user used to connect
to the LDAP server when querying the LDAP user database.
+view_admin_systemSettings_LDAPBindPW_name = \u5BC6\u7801
+view_admin_systemSettings_LDAPFilter_desc = Any additional filters to apply when doing
the LDAP search. This is useful if the population to authenticate can be identified via a
given LDAP property, e.g. RHQUser=true
+view_admin_systemSettings_LDAPFilter_name = Search Filter
+view_admin_systemSettings_LDAPGroupFilter_desc = LDAP search filter that must return all
LDAP groups available for authorization. This is used for LDAP group authorization.
+view_admin_systemSettings_LDAPGroupFilter_name = Group Search Filter
+view_admin_systemSettings_LDAPGroupMember_desc = LDAP search filter that is used in
conjunction with the group search filter to determine user authorization. This is used for
LDAP group authorization.
+view_admin_systemSettings_LDAPGroupMember_name = Group Member Filter
+view_admin_systemSettings_LDAPLoginProperty_desc = The LDAP property that contains the
user name. Defaults to "cn". If multiple matches are found, the first entry
found is used.
+view_admin_systemSettings_LDAPLoginProperty_name = Login Property
+view_admin_systemSettings_LDAPProtocol_desc = Should communication with the LDAP server
be done over SSL?
+view_admin_systemSettings_LDAPProtocol_name = SSL
+view_admin_systemSettings_LDAPUrl_desc = URL to the LDAP Server
+view_admin_systemSettings_LDAPUrl_name = LDAP URL
+view_admin_systemSettings_RtDataPurge_desc = How old response time data must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_RtDataPurge_name = Delete Response Time Data Older Than
+view_admin_systemSettings_TraitPurge_desc = How old measurement trait data must be before
being purged from the database. This is specified in days.
+view_admin_systemSettings_TraitPurge_name = Delete Measurement Traits Older Than
+view_admin_systemSettings_cannotLoadServerDetails =
\u65E0\u6CD5\u52A0\u8F7D\u670D\u52A1\u5668\u8BE6\u60C5
+view_admin_systemSettings_cannotLoadSettings =
\u65E0\u6CD5\u83B7\u5F97\u5F53\u524D\u7CFB\u7EDF\u914D\u7F6E
+view_admin_systemSettings_fixBeforeSaving =
\u4FDD\u5B58\u524D\u8BF7\u4FEE\u590D\u9519\u8BEF
+view_admin_systemSettings_group_baseline = \u81EA\u52A8Baseline\u914D\u7F6E\u5C5E\u6027
+view_admin_systemSettings_group_dataMgr =
\u6570\u636E\u7BA1\u7406\u5668\u57FA\u672C\u5C5E\u6027
+view_admin_systemSettings_group_general = \u57FA\u672C\u914D\u7F6E\u5C5E\u6027
+view_admin_systemSettings_group_ldap = LDAP\u914D\u7F6E\u5C5E\u6027
+view_admin_systemSettings_saveFailure = \u4FDD\u5B58\u7CFB\u7EDF\u5C5E\u6027\u5931\u8D25
+view_admin_systemSettings_savedSettings =
\u4FDD\u5B58\u7CFB\u7EDF\u5C5E\u6027\u6210\u529F
+view_admin_systemSettings_serverDetails = \u670D\u52A1\u5668\u8BE6\u60C5
+view_admin_systemSettings_serverDetails_buildNumber = Build Number
+view_admin_systemSettings_serverDetails_currentTable = Current Measurement Raw Table
+view_admin_systemSettings_serverDetails_dbDriverName =
\u6570\u636E\u5E93\u9A71\u52A8\u540D
+view_admin_systemSettings_serverDetails_dbDriverVersion =
\u6570\u636E\u5E93\u9A71\u52A8\u7248\u672C
+view_admin_systemSettings_serverDetails_dbName = \u6570\u636E\u5E93\u4EA7\u54C1\u540D
+view_admin_systemSettings_serverDetails_dbUrl = \u6570\u636E\u5E93\u8FDE\u63A5URL
+view_admin_systemSettings_serverDetails_dbVersion =
\u6570\u636E\u5E93\u7248\u672C\u4FE1\u606F
+view_admin_systemSettings_serverDetails_installDir =
\u670D\u52A1\u5668\u5B89\u88C5\u76EE\u5F55
+view_admin_systemSettings_serverDetails_nextRotation = Next Measurement Table Rotation
+view_admin_systemSettings_serverDetails_time =
\u670D\u52A1\u5668\u672C\u5730\u65F6\u95F4
+view_admin_systemSettings_serverDetails_tz = \u670D\u52A1\u5668\u65F6\u533A
+view_admin_topology = \u62D3\u6251
+view_alert_common_tab_conditions = Conditions
+view_alert_common_tab_conditions_expression = \u89E6\u53D1\u4E8B\u4EF6\u5F53
+view_alert_common_tab_conditions_expression_tooltip = Determines if ANY or ALL of the
conditions must evaluate to true in order for the entire condition set to be considered
true.
+view_alert_common_tab_conditions_modal_title = \u6DFB\u52A0\u6761\u4EF6
+view_alert_common_tab_conditions_recovery_disabled = This alert caused its alert
definition to be disabled
+view_alert_common_tab_conditions_recovery_enabled = Triggered ''{0}'' to
be re-enabled
+view_alert_common_tab_conditions_text = \u6761\u4EF6
+view_alert_common_tab_conditions_type_availability = \u53EF\u7528\u6027\u6539\u53D8
+view_alert_common_tab_conditions_type_availability_down = Went down
+view_alert_common_tab_conditions_type_availability_up = Came up
+view_alert_common_tab_conditions_type_event = \u4E8B\u4EF6\u68C0\u6D4B
+view_alert_common_tab_conditions_type_event_matching = with event source matching
+view_alert_common_tab_conditions_type_metric_baseline = \u6307\u6807\u57FA\u51C6
+view_alert_common_tab_conditions_type_metric_baseline_verb = of
+view_alert_common_tab_conditions_type_metric_calltime_change = Call Time Value Changes
+view_alert_common_tab_conditions_type_metric_calltime_change_verb = by at least
+view_alert_common_tab_conditions_type_metric_calltime_delta_grows = Grows
+view_alert_common_tab_conditions_type_metric_calltime_delta_other = Changes
+view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks = Shrinks
+view_alert_common_tab_conditions_type_metric_calltime_destination = with call destination
matching
+view_alert_common_tab_conditions_type_metric_calltime_threshold = Call Time Value
Threshold
+view_alert_common_tab_conditions_type_metric_change = Metric Value Change
+view_alert_common_tab_conditions_type_metric_threshold = Metric Value Threshold
+view_alert_common_tab_conditions_type_metric_trait_change = Trait Change
+view_alert_common_tab_conditions_type_operation = \u64CD\u4F5C\u6267\u884C
+view_alert_common_tab_conditions_type_operation_status = with result status
+view_alert_common_tab_conditions_type_resource_configuration = \u8D44\u6E90\u914D\u7F6E
Change
+view_alert_common_tab_conditions_value = Value
+view_alert_common_tab_dampening = Dampening
+view_alert_common_tab_dampening_category_consecutive_count = Consecutive
+view_alert_common_tab_dampening_category_consecutive_count_tooltip = An alert is
triggered once every X occurrences the condition set is true consecutively.
+view_alert_common_tab_dampening_category_duration_count = Time Period
+view_alert_common_tab_dampening_category_duration_count_tooltip = An alert is triggered
once every X occurrences the condition set is true within a given time period.
+view_alert_common_tab_dampening_category_none = None
+view_alert_common_tab_dampening_category_none_tooltip = Dampening is disabled. Every time
the condition set is true, an alert will be triggered.
+view_alert_common_tab_dampening_category_partial_count = Last N Evaluations
+view_alert_common_tab_dampening_category_partial_count_tooltip = An alert is triggered
once every X occurrences the condition set is true during the last N evaluations of the
condition set.
+view_alert_common_tab_dampening_consecutive_occurrences_label = Occurrences
+view_alert_common_tab_dampening_consecutive_occurrences_label_tooltip = The number of
times the condition set must be consecutively true before the alert is triggered
+view_alert_common_tab_dampening_duration_occurrences_label = Occurrences
+view_alert_common_tab_dampening_duration_occurrences_label_tooltip = The number of times
the condition set must be true during the given time period before the alert is
triggered.
+view_alert_common_tab_dampening_duration_period_label = \u65F6\u95F4\u6BB5
+view_alert_common_tab_dampening_duration_period_label_tooltip = The time span in which
the condition set will be tested to see if the given number of occurrences are true.
+view_alert_common_tab_dampening_partial_evalatuions_label = \u8BC4\u4F30
+view_alert_common_tab_dampening_partial_evalatuions_label_tooltip = The total number of
times the condition set will be tested to see if the given number of occurrences are
true.
+view_alert_common_tab_dampening_partial_occurrences_label = Occurrences
+view_alert_common_tab_dampening_partial_occurrences_label_tooltip = The number of times
the condition set must be true during the last N evaluations before the alert is
triggered.
+view_alert_common_tab_general = \u57FA\u672C\u5C5E\u6027
+view_alert_common_tab_invalid_condition_category = Invalid condition category - please
report this as a bug: {0}
+view_alert_common_tab_invalid_dampening_category = Invalid dampening category - please
report this as a bug: {0}
+view_alert_common_tab_invalid_time_units = \u65E0\u6548\u65F6\u95F4\u5355\u4F4D -
\u8BF7\u62A5\u544Abug: {0}
+view_alert_common_tab_notifications = \u901A\u77E5
+view_alert_common_tab_notifications_message = \u6D88\u606F
+view_alert_common_tab_notifications_sender = Sender
+view_alert_common_tab_notifications_status = \u72B6\u6001
+view_alert_common_tab_recovery = \u8FD8\u539F
+view_alert_definition_condition_editor_avilability_option_down = Goes down
+view_alert_definition_condition_editor_avilability_option_up = Comes up
+view_alert_definition_condition_editor_avilability_tooltip = Specify the availability
state change that will trigger the condition.
+view_alert_definition_condition_editor_avilability_value = \u53EF\u7528\u6027
+view_alert_definition_condition_editor_common_avg = Average
+view_alert_definition_condition_editor_common_max = Maximum
+view_alert_definition_condition_editor_common_min = Minimum
+view_alert_definition_condition_editor_delete_confirm =
\u5220\u9664\u9009\u5B9A\u7684\u8B66\u62A5\u6761\u4EF6?
+view_alert_definition_condition_editor_event_regex = \u6B63\u5219\u8868\u8FBE\u5F0F
+view_alert_definition_condition_editor_event_regex_tooltip = If specified, this is a
regular expression that must match a collected event message in order to trigger the
condition.
+view_alert_definition_condition_editor_event_severity = Event Severity
+view_alert_definition_condition_editor_event_severity_debug = Debug
+view_alert_definition_condition_editor_event_severity_error = Error
+view_alert_definition_condition_editor_event_severity_fatal = Fatal
+view_alert_definition_condition_editor_event_severity_info = Info
+view_alert_definition_condition_editor_event_severity_warn = Warn
+view_alert_definition_condition_editor_event_tooltip = Specify the event severity that an
event message must be reported with in order to trigger this condition. If you specify an
optional regular expression, the event message must also match that regular expression in
order for the condition to trigger.
+view_alert_definition_condition_editor_metric_baseline_percentage = Baseline Percentage
+view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = A collected
metric value will trigger this condition when compared to this percentage of the selected
baseline value using the selected comparator
+view_alert_definition_condition_editor_metric_baseline_tooltip = Specify the baseline
value that must be violated to trigger the condition. The value you specify is a
percentage of the given baseline value.
+view_alert_definition_condition_editor_metric_baseline_value = Baseline
+view_alert_definition_condition_editor_metric_calltime_change_percentage = Percentage
Change
+view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip = A
collected calltime value will trigger this condition when it differs by at least this
percentage of the selected calltime limit value
+view_alert_definition_condition_editor_metric_calltime_change_tooltip = Specify the
calltime value that, when changed at least a specified amount, triggers the condition. You
must specify which calltime limit to check (minimum, maximum or average calltime value)
and the percentage of change that must occur.
+view_alert_definition_condition_editor_metric_calltime_common_comparator = Comparator
+view_alert_definition_condition_editor_metric_calltime_common_comparator_changes =
Changes
+view_alert_definition_condition_editor_metric_calltime_common_comparator_grows = Grows
+view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks =
Shrinks
+view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = How a
collected calltime value should be compared to the given calltime limit
+view_alert_definition_condition_editor_metric_calltime_common_limit = Call Time Limit
+view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = The
calltime limit value that is to be compared with the given value
+view_alert_definition_condition_editor_metric_calltime_common_name = Call Time Metric
+view_alert_definition_condition_editor_metric_calltime_common_regex =
\u6B63\u5219\u8868\u8FBE\u5F0F
+view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip = If
specified, this is a regular expression that must match a call destination in order to
trigger the condition.
+view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Specify the
calltime threshold value that, when violated, triggers the condition. The value you
specify is an absolute value with an optional units specifier. You also must specify which
calltime limit to compare the value with (minimum, maximum or average calltime value).
+view_alert_definition_condition_editor_metric_calltime_threshold_value = Call Time Value
+view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = The
threshold value of the metric that will trigger the condition when compared using the
selected comparator.
+view_alert_definition_condition_editor_metric_change_tooltip = Specify the metric whose
value must change to trigger the condition.
+view_alert_definition_condition_editor_metric_common_definition_not_found = Should have
found metric definition - something is wrong
+view_alert_definition_condition_editor_metric_threshold_comparator = Comparator
+view_alert_definition_condition_editor_metric_threshold_comparator_equal = \u7B49\u4E8E
+view_alert_definition_condition_editor_metric_threshold_comparator_greater =
\u5927\u4E8E
+view_alert_definition_condition_editor_metric_threshold_comparator_less = \u5C0F\u4E8E
+view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = How a
collected metric value should be compared to the given threshold value
+view_alert_definition_condition_editor_metric_threshold_name = \u6307\u6807
+view_alert_definition_condition_editor_metric_threshold_tooltip = Specify the threshold
value that, when violated, triggers the condition. The value you specify is an absolute
value with an optional units specifier.
+view_alert_definition_condition_editor_metric_threshold_value = \u6307\u6807\u503C
+view_alert_definition_condition_editor_metric_threshold_value_tooltip = The threshold
value of the metric that will trigger the condition when compared using the selected
comparator.
+view_alert_definition_condition_editor_metric_trait_change_tooltip = Specify the trait
whose value must change to trigger the condition.
+view_alert_definition_condition_editor_metric_trait_change_value = Trait
+view_alert_definition_condition_editor_operation_status = \u64CD\u4F5C\u72B6\u6001
+view_alert_definition_condition_editor_operation_status_canceled = Canceled
+view_alert_definition_condition_editor_operation_status_failure = Failure
+view_alert_definition_condition_editor_operation_status_inprogress = \u8FDB\u884C\u4E2D
+view_alert_definition_condition_editor_operation_status_success = Success
+view_alert_definition_condition_editor_operation_tooltip = Specify the result that must
occur when the selected operation is executed in order to trigger the condition.
+view_alert_definition_condition_editor_operation_value = \u64CD\u4F5C
+view_alert_definition_condition_editor_option_availability = Availability Change
+view_alert_definition_condition_editor_option_event = \u4E8B\u4EF6\u68C0\u6D4B
+view_alert_definition_condition_editor_option_label = Condition Type
+view_alert_definition_condition_editor_option_metric_baseline = Measurement Baseline
Threshold
+view_alert_definition_condition_editor_option_metric_calltime_change = Call Time Value
Change
+view_alert_definition_condition_editor_option_metric_calltime_threshold = Call Time Value
Threshold
+view_alert_definition_condition_editor_option_metric_change = Measurement Value Change
+view_alert_definition_condition_editor_option_metric_threshold = Measurement Absolute
Value Threshold
+view_alert_definition_condition_editor_option_metric_trait_change = Trait Value Change
+view_alert_definition_condition_editor_option_operation = Operation Execution
+view_alert_definition_condition_editor_option_resource_configuration =
\u8D44\u6E90\u914D\u7F6E\u6539\u53D8
+view_alert_definition_condition_editor_resource_configuration_tooltip = This condition is
triggered when the resource configuration changes.
+view_alert_definition_for_group = \u67E5\u770B\u7EC4\u5B9A\u4E49
+view_alert_definition_for_type = \u67E5\u770B\u6A21\u677F
+view_alert_definition_notification_cliScript_editor_anotherUser =
\u5176\u4ED6\u7528\u6237
+view_alert_definition_notification_cliScript_editor_existingScript = Existing Script
+view_alert_definition_notification_cliScript_editor_loadFailed = Loading the CLI
Notification Editor Failed.
+view_alert_definition_notification_cliScript_editor_newScriptVersion = Version
+view_alert_definition_notification_cliScript_editor_repository = Repository
+view_alert_definition_notification_cliScript_editor_script = Script
+view_alert_definition_notification_cliScript_editor_selectRepo = Select the repository
where the script should reside
+view_alert_definition_notification_cliScript_editor_selectRepoFirst =
\u9996\u5148\u9009\u62E9\u5E93.
+view_alert_definition_notification_cliScript_editor_thisUser = Myself
+view_alert_definition_notification_cliScript_editor_uploadNewScript =
\u4E0A\u4F20\u65B0\u811A\u672C
+view_alert_definition_notification_cliScript_editor_verifyAuthentication = Verify
+view_alert_definition_notification_cliScript_editor_whichUser = User To Run The Script
As
+view_alert_definition_notification_editor_delete_confirm =
\u4F60\u786E\u5B9A\u8981\u5220\u9664\u9009\u5B9A\u7684\u544A\u8B66\u901A\u77E5?
+view_alert_definition_notification_editor_field_configuration = \u914D\u7F6E
+view_alert_definition_notification_editor_field_configuration_loadFailed = Failed to get
notification configuration preview
+view_alert_definition_notification_editor_field_configuration_not_loaded = Unknown
+view_alert_definition_notification_editor_field_sender = Sender
+view_alert_definition_notification_editor_loadFailed = Cannot get alert senders
+view_alert_definition_notification_editor_loadFailed_single = Cannot get alert sender
configuration definition
+view_alert_definition_notification_editor_none_available = No alert senders available
+view_alert_definition_notification_editor_saveFailed = Cannot save the notification
configuration
+view_alert_definition_notification_editor_sender = \u901A\u77E5\u53D1\u9001\u8005
+view_alert_definition_notification_editor_title_add = \u6DFB\u52A0\u901A\u77E5
+view_alert_definition_notification_editor_title_edit = \u7F16\u8F91\u901A\u77E5
+view_alert_definition_notification_operation_editor_common_operation = \u64CD\u4F5C
+view_alert_definition_notification_operation_editor_mode_relative =
\u76F8\u5173\u8D44\u6E90
+view_alert_definition_notification_operation_editor_mode_specific =
\u6307\u5B9A\u8D44\u6E90
+view_alert_definition_notification_operation_editor_mode_this = \u8FD9\u4E2A\u8D44\u6E90
+view_alert_definition_notification_operation_editor_mode_title =
\u8D44\u6E90\u9009\u62E9\u6A21\u5F0F
+view_alert_definition_notification_operation_editor_mode_unknown = UNKNOWN OPTION - THIS
IS A BUG
+view_alert_definition_notification_operation_editor_operations_loadFailed = Failed to
load the list of available operations
+view_alert_definition_notification_operation_editor_operations_no_parameters = This
operation does not take any parameters
+view_alert_definition_notification_operation_editor_relative_ancestor = Start Search
From
+view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed = Cannot
get type ancestry
+view_alert_definition_notification_operation_editor_relative_ancestor_root = Root
Ancestor Type
+view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Select
the top of the type hierarchy from which to search its descendant tree for the Filter By
type
+view_alert_definition_notification_operation_editor_relative_descendant = Then Filter By
+view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip =
A specific name to uniquely identify a resource when more than one resource of the
selected type might exist. This is optional if there will only ever be one resource of the
resource type in the selected type hierarchy.
+view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
Cannot get type descendants
+view_alert_definition_notification_operation_editor_relative_descendant_tooltip = The
resource type to search for under the root type defined in the Start Search From
selection.
+view_alert_definition_notification_operation_editor_specific_pick_button = Pick
+view_alert_definition_notification_operation_editor_specific_pick_error_invalid = Please
pick a resource
+view_alert_definition_notification_operation_editor_specific_pick_error_no_operation =
Please pick a resource that has one or more operations
+view_alert_definition_notification_operation_editor_specific_pick_text = Pick a
resource...
+view_alert_definition_notification_operation_editor_specific_resource = \u8D44\u6E90
+view_alert_definition_notification_role_editor_loadFailed = Cannot determine current
roles - starting empty
+view_alert_definition_notification_role_editor_restoreFailed = Cannot use current roles -
starting empty
+view_alert_definition_notification_role_editor_saveFailed = Cannot save the selected
roles
+view_alert_definition_notification_user_editor_loadFailed = Cannot determine current
users - starting empty
+view_alert_definition_notification_user_editor_restoreFailed = Cannot use current users -
starting empty
+view_alert_definition_notification_user_editor_saveFailed = Cannot save the selected
users
+view_alert_definition_recovery_editor_disable_when_fired = Disable When Fired
+view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indicates if this
alert will be disabled after it fires. Once disabled, the alert can be manually re-enabled
or a recovery alert can be set up to automatically re-enable it. If this alert is a
recovery alert itself, this setting cannot be turned on.
+view_alert_definition_recovery_editor_loadFailed = Cannot build recovery menu
+view_alert_definition_recovery_editor_none_available = None
+view_alert_definition_recovery_editor_recovery_alert = Recover Alert
+view_alert_definition_recovery_editor_recovery_alert_tooltip = The target alert that will
be recovered (i.e. re-enabled) after this alert triggers. Do not select an alert here if
you are not defining a recovery alert.
+view_alert_definitions_create_failure = Alert definition creation failed
+view_alert_definitions_create_success = Alert definition successfully created
+view_alert_definitions_delete_confirm = Delete the selected alert definition(s)?
+view_alert_definitions_delete_failure = Failed to deleted the selected alert definitions
+view_alert_definitions_delete_success = Successfully deleted {0} alert definitions
+view_alert_definitions_disable_confirm = Disable the selected alert definition(s)?
+view_alert_definitions_disable_failure = Failed to disable the selected alert
definitions
+view_alert_definitions_disable_success = Successfully disabled {0} alert definitions
+view_alert_definitions_enable_confirm = Enable the selected alert definition(s)?
+view_alert_definitions_enable_failure = Failed to enable the selected alert definitions
+view_alert_definitions_enable_success = Successfully enabled {0} alert definitions
+view_alert_definitions_loadFailed = Failed to fetch alert definition data
+view_alert_definitions_loadFailed_single = Failed to fetch data for alert definition with
id {0}
+view_alert_definitions_table_title_group = \u7EC4\u544A\u8B66\u5B9A\u4E49
+view_alert_definitions_table_title_resource = \u7EC4\u544A\u8B66\u5B9A\u4E49
+view_alert_definitions_update_failure = \u544A\u8B66\u5B9A\u4E49\u66F4\u65B0\u5931\u8D25
+view_alert_definitions_update_success = \u544A\u8B66\u5B9A\u4E49\u66F4\u65B0\u6210\u529F
+view_alert_details_field_ack_at = \u786E\u8BA4\u4E8E
+view_alert_details_field_ack_by = \u786E\u8BA4\u8005
+view_alert_details_field_recovery_info = \u8FD8\u539F\u4FE1\u606F
+view_alert_details_loadFailed = \u53D6\u5F97\u544A\u8B66\u8BE6\u60C5\u5931\u8D25
+view_alerts_ack_confirm = Acknowledge the selected alert(s)?
+view_alerts_ack_confirm_all = Acknowledge all alerts from this source?
+view_alerts_ack_failure = Failed to acknowledge alerts with id''s: {0}
+view_alerts_ack_failure_all = Failed to acknowledge all alerts from this source
+view_alerts_ack_success = Successfully acknowledged {0} alerts
+view_alerts_delete_confirm = Delete the selected alert(s)?
+view_alerts_delete_confirm_all = Delete all alerts from this source?
+view_alerts_delete_failure = Failed to delete alerts with id''s: {0}
+view_alerts_delete_failure_all = Failed to delete all alerts from this source
+view_alerts_delete_success = Successfully deleted {0} alerts
+view_alerts_field_ack_status = \u72B6\u6001
+view_alerts_field_ack_status_ack = Ack ({0})
+view_alerts_field_ack_status_ackHover = \u786E\u8BA4\u8005{0}\u4E8E{1}
+view_alerts_field_ack_status_noAck = No Ack
+view_alerts_field_ack_status_noAckHover = \u8FD8\u6CA1\u786E\u8BA4\u7684
+view_alerts_field_ack_subject = Acknowledge Subject
+view_alerts_field_ack_time = \u786E\u8BA4\u65F6\u95F4
+view_alerts_field_condition_text = Condition Text
+view_alerts_field_condition_text_many = Multiple Conditions
+view_alerts_field_condition_text_none = No Conditions
+view_alerts_field_condition_value = Condition Value
+view_alerts_field_created_time = \u4EA7\u751F\u65F6\u95F4
+view_alerts_field_enabled = \u542F\u7528
+view_alerts_field_modified_time = \u4FEE\u6539\u65F6\u95F4
+view_alerts_field_name = Name
+view_alerts_field_parent = \u7236
+view_alerts_field_priority = \u4F18\u5148\u7EA7
+view_alerts_field_protected = Protected
+view_alerts_field_protected_tooltip = If true, this definition is protected from being
changed by the parent definition. In other words, the parent definition settings will not
override this definition.
+view_alerts_loadFailed = Failed to fetch alerts data
+view_alerts_table_filter_priority = \u4F18\u5148\u7EA7\u8FC7\u6EE4
+view_alerts_table_title_group = \u7EC4\u544A\u8B66\u5386\u53F2
+view_alerts_table_title_resource = \u8D44\u6E90\u544A\u8B66\u5386\u53F2
+view_autoDiscoveryQ_committed = Committed
+view_autoDiscoveryQ_confirmSelect = \u662F\u5426\u9009\u4E2D\u5B50\u8282\u70B9\uFF1F
+view_autoDiscoveryQ_deleted = Deleted
+view_autoDiscoveryQ_field_discoveryTime = \u53D1\u73B0\u65F6\u95F4
+view_autoDiscoveryQ_field_inventoryStatus = \u6E05\u5355\u72B6\u6001
+view_autoDiscoveryQ_field_key = \u8D44\u6E90Key
+view_autoDiscoveryQ_field_name = \u8D44\u6E90\u540D\u79F0
+view_autoDiscoveryQ_field_parentId = \u7236ID
+view_autoDiscoveryQ_ignore = \u5FFD\u7565
+view_autoDiscoveryQ_ignoreFailure = Failed to ignore resources
+view_autoDiscoveryQ_ignoreSuccessful = \u6210\u529F\u5FFD\u7565\u9009\u5B9A\u8D44\u6E90.
+view_autoDiscoveryQ_ignored = Ignored
+view_autoDiscoveryQ_import = \u5BFC\u5165
+view_autoDiscoveryQ_importFailure = \u5BFC\u5165\u8D44\u6E90\u5931\u8D25
+view_autoDiscoveryQ_importSuccessful = \u6210\u529F\u5BFC\u5165\u88AB\u9009\u8D44\u6E90.
+view_autoDiscoveryQ_loadFailure =
\u52A0\u8F7D\u8D44\u6E90\u6E05\u5355\u53D1\u73B0\u961F\u5217\u5931\u8D25
+view_autoDiscoveryQ_new = New
+view_autoDiscoveryQ_newAndIgnored = New and Ignored
+view_autoDiscoveryQ_noItems = \u65E0\u6761\u76EE\u663E\u793A
+view_autoDiscoveryQ_noperm =
(\u60A8\u6CA1\u6709\u6743\u9650\u67E5\u770B\u81EA\u52A8\u53D1\u73B0\u961F\u5217)
+view_autoDiscoveryQ_showStatus = \u663E\u793A\u72B6\u6001
+view_autoDiscoveryQ_title = \u81EA\u52A8\u53D1\u73B0\u961F\u5217
+view_autoDiscoveryQ_unignore = Unignore
+view_autoDiscoveryQ_unignoreFailure = Failed to unignore resources
+view_autoDiscoveryQ_unignoreSuccessful =
\u6210\u529F\u4F7F\u9009\u4E2D\u7684\u8D44\u6E90\u751F\u6548.
+view_autoDiscoveryQ_uninventoried = Uninventoried
+view_bundleVersion_loadFailure = Failed to load bundle version data
+view_bundle_bundle = Bundle
+view_bundle_bundleDeployment = Bundle\u53D1\u5E03
+view_bundle_bundleDeployments = Bundle\u53D1\u5E03
+view_bundle_bundleDestinations = Bundle\u76EE\u7684\u5730
+view_bundle_bundleFiles = Bundle\u6587\u4EF6
+view_bundle_bundleType = Bundle\u7C7B\u578B
+view_bundle_bundleVersion = Bundle\u7248\u672C
+view_bundle_bundleVersions = Bundle\u7248\u672C
+view_bundle_bundles = Bundles
+view_bundle_createWizard_bundleDistro = Bundle Distribution
+view_bundle_createWizard_cancelFailure = Failed to fully cancel the creation of bundle
[{0}], version = [{1}] - the bundle may still exist in the database
+view_bundle_createWizard_cancelSuccessful = Canceled the creation of bundle [{0}],
version = [{1}]
+view_bundle_createWizard_clickToUploadRecipe = Click to load a recipe file
+view_bundle_createWizard_createFailure = \u521B\u5EFAbundle\u5931\u8D25
+view_bundle_createWizard_createSuccessful = You have successfully created a bundle named
[{0}] with a version of [{1}]
+view_bundle_createWizard_enterRecipe = Please supply a valid recipe
+view_bundle_createWizard_enterUrl = Please enter a valid URL where the bundle
distribution file can be downloaded from
+view_bundle_createWizard_failedToUploadDistroFile = Failed to upload bundle distribution
file
+view_bundle_createWizard_failedToUploadFile = Failed to upload bundle file
+view_bundle_createWizard_loadBundleFileFailure = Cannot obtain bundle file information
from server
+view_bundle_createWizard_noAdditionalFilesNeeded = No additional files need to be
uploaded for this bundle
+view_bundle_createWizard_noBundleTypesAvail = No bundle types are available
+view_bundle_createWizard_noBundleTypesSupported = No bundle types are supported - you
must deploy a valid plugin that supports bundle deployments
+view_bundle_createWizard_provideBundleDistro = Provide a Bundle Distribution
+view_bundle_createWizard_recipeOption = Recipe
+view_bundle_createWizard_title = \u521B\u5EFABundle
+view_bundle_createWizard_uploadInProgress = Upload is in progress... This can take
several minutes for large files
+view_bundle_createWizard_uploadOption = \u4E0A\u4F20
+view_bundle_createWizard_uploadStepName = Upload Bundle Files
+view_bundle_createWizard_urlOption = URL
+view_bundle_createWizard_windowTitle = Bundle\u521B\u5EFA\u5411\u5BFC
+view_bundle_createWizard_youMustChooseOne = You must choose one option in order to create
a bundle!
+view_bundle_deleteConfirm = \u4F60\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u4E2Abundle?
\u8FD9\u4E2Abundle\u6240\u6709\u7684\u7248\u672C,
\u76EE\u7684\u5730\u548C\u90E8\u7F72\u5C06\u88AB\u5220\u9664.
+view_bundle_deploy = \u53D1\u5E03
+view_bundle_deployDir = \u53D1\u5E03\u76EE\u5F55
+view_bundle_deployWizard_deployStep = \u53D1\u5E03Bundle\u5230\u76EE\u7684\u5E73\u53F0
+view_bundle_deployWizard_deploying = \u53D1\u5E03\u4E2D...
+view_bundle_deployWizard_deploymentCreated = \u521B\u5EFA\u90E8\u7F72...
+view_bundle_deployWizard_deploymentCreatedDetail = You have created the deployment [{0}]
with the description [{1}]
+view_bundle_deployWizard_deploymentCreatedDetail_concise = You have created the
deployment [{0}]
+view_bundle_deployWizard_deploymentScheduled = Bundle Deployment Scheduled!
+view_bundle_deployWizard_deploymentScheduledDetail = You have scheduled the bundle
deployment [{0}] to the destination group [{1}]
+view_bundle_deployWizard_deploymentScheduledDetail_concise = You have scheduled the
bundle deployment
+view_bundle_deployWizard_destinationCreatedDetail = You have created the destination
[{0}] with the description [{1}]
+view_bundle_deployWizard_destinationCreatedDetail_concise = You have created the
destination [{0}]
+view_bundle_deployWizard_error_1 = Failed to delete new deployment on Cancel
+view_bundle_deployWizard_error_10 = Failed to create destination, it may already exist.
(Note, for an existing destination deploy from the Destination view)
+view_bundle_deployWizard_error_11 = Failed to find defined deployments.
+view_bundle_deployWizard_error_12 = Failed to find defined bundles.
+view_bundle_deployWizard_error_2 = Failed to delete new destination on Cancel
+view_bundle_deployWizard_error_3 = Failed to Schedule Deployment!
+view_bundle_deployWizard_error_4 = Failed to schedule deployment: {0}
+view_bundle_deployWizard_error_5 = \u521B\u5EFA\u53D1\u5E03\u5931\u8D25!
+view_bundle_deployWizard_error_6 = \u521B\u5EFA\u53D1\u5E03\u5931\u8D25: {0}
+view_bundle_deployWizard_error_7 = Failed to get deployment name.
+view_bundle_deployWizard_error_8 = You must select a valid resource group from the drop
down
+view_bundle_deployWizard_error_9 = Failed to delete new destination in nextPage
+view_bundle_deployWizard_getConfigSkip = No configuration needed for this bundle
version.
+view_bundle_deployWizard_getConfigStep = Set Deployment Configuration
+view_bundle_deployWizard_getDestStep = \u65B0\u5EFA\u76EE\u7684\u5730
+view_bundle_deployWizard_getDest_deployDir = Root Deployment Directory (on destination
platforms)
+view_bundle_deployWizard_getDest_desc = \u76EE\u7684\u5730\u63CF\u8FF0
+view_bundle_deployWizard_getDest_name = \u76EE\u7684\u5730\u540D
+view_bundle_deployWizard_getInfoStep = \u63D0\u4F9B\u53D1\u5E03\u4FE1\u606F
+view_bundle_deployWizard_getInfo_clean = Clean Deployment? (wipe deploy directory on
destination platform)
+view_bundle_deployWizard_getInfo_deploymentDesc = \u53D1\u5E03\u63CF\u8FF0
+view_bundle_deployWizard_getInfo_deploymentName = \u53D1\u5E03\u540D\u79F0
+view_bundle_deployWizard_getOptionsStep = \u53D1\u5E03\u9009\u9879
+view_bundle_deployWizard_getOptions_deployLater = \u7A0D\u5019\u53D1\u5E03
+view_bundle_deployWizard_getOptions_deployNow = \u9A6C\u4E0A\u53D1\u5E03
+view_bundle_deployWizard_getOptions_deployTime = \u53D1\u5E03\u65F6\u95F4
+view_bundle_deployWizard_selectBundleStep = Select Deployment Bundle
+view_bundle_deployWizard_selectBundle_single = Select only a single bundle for
deployment.
+view_bundle_deployWizard_selectVersionStep = Select Deployment Bundle Version
+view_bundle_deployWizard_selectVersion_latest = \u6700\u65B0\u7248\u672C [{0}]
+view_bundle_deployWizard_selectVersion_live = Live Version [{0}]
+view_bundle_deployWizard_selectVersion_select = Select Version from List:
+view_bundle_deployWizard_title = Bundle\u53D1\u5E03\u5411\u5BFC
+view_bundle_deploy_action = \u64CD\u4F5C
+view_bundle_deploy_backButton = \u8FD4\u56DE
+view_bundle_deploy_clickForError = Click the icon for the error message
+view_bundle_deploy_deleteConfirm = Are you sure you want to delete this bundle
deployment?
+view_bundle_deploy_deleteFailure = Failed to delete the bundle deployment [{0}]
+view_bundle_deploy_deleteSuccessful = You successfully deleted the bundle deployment
[{0}]
+view_bundle_deploy_deployedBy = \u53D1\u5E03\u8005
+view_bundle_deploy_deploymentPlatforms = \u53D1\u5E03\u5E73\u53F0
+view_bundle_deploy_installDetails = \u5B89\u88C5\u7EC6\u8282
+view_bundle_deploy_loadBundleFailure = \u67E5\u627Ebundle\u5931\u8D25
+view_bundle_deploy_loadDeployFailure = Failed to load bundle deployments
+view_bundle_deploy_loadFailure = Failed to load bundle deployment
+view_bundle_deploy_name = \u53D1\u5E03\u540D
+view_bundle_deploy_operatingSystem = \u64CD\u4F5C\u7CFB\u7EDF
+view_bundle_deploy_selectARow = \u9009\u4E2D\u884C\u663E\u793A\u5B89\u88C5\u7EC6\u8282
+view_bundle_deploy_tagUpdateFailure = Failed to update bundle deployment tags
+view_bundle_deploy_tagUpdateSuccessful = You have successfully updated the bundle
deployment tags
+view_bundle_deploy_time = \u53D1\u5E03\u65F6\u95F4
+view_bundle_deployed = \u5DF2\u53D1\u5E03
+view_bundle_deployments = \u53D1\u5E03
+view_bundle_dest_backToBundle = \u8FD4\u56DEBundle
+view_bundle_dest_created = \u5DF2\u521B\u5EFA
+view_bundle_dest_deleteConfirm = Are you sure you want to delete this bundle destination?
This only deletes it from the database; all bundle content that was deployed to this
destination on remote machines will remain.
+view_bundle_dest_deleteFailure = Failed to delete the bundle destination [{0}]
+view_bundle_dest_deleteSuccessful = You successfully deleted the bundle destination
[{0}]
+view_bundle_dest_deployDir = \u53D1\u5E03\u76EE\u5F55
+view_bundle_dest_group = \u7EC4
+view_bundle_dest_lastDeployedVersion = \u4E0A\u6B21\u53D1\u5E03\u7248\u672C
+view_bundle_dest_lastDeploymentDate = \u4E0A\u6B21\u53D1\u5E03\u65E5\u671F
+view_bundle_dest_lastDeploymentStatus = \u4E0A\u6B21\u53D1\u5E03\u72B6\u6001
+view_bundle_dest_loadFailure = \u52A0\u8F7Dbundle\u76EE\u7684\u5730\u5931\u8D25
+view_bundle_dest_loadFailureVersionInfo = Failed to load bundle destination deployed
version information
+view_bundle_dest_purgeConfirm = This will purge the bundle content from all remote
machines. Are you sure you want to do this?
+view_bundle_dest_purgeFailure = Failed to purge the bundle destination [{0}] from some or
all of the remote machines.
+view_bundle_dest_purgeSuccessful = You successfully purged the bundle destination [{0}]
from all of the remote machines.
+view_bundle_dest_revertConfirm = This will revert all remote machines back to the
previous bundle deployment. Are you sure you want to do this?
+view_bundle_dest_tagUpdateFailure = Failed to update bundle destination tags
+view_bundle_dest_tagUpdateSuccessful = You have successfully updated the bundle
destination tags
+view_bundle_destinations = \u76EE\u7684\u5730
+view_bundle_fileListView_fileSize = \u6587\u4EF6\u5927\u5C0F
+view_bundle_fileListView_loadFailure = \u52A0\u8F7Dbundle\u6587\u4EF6\u5931\u8D25
+view_bundle_fileListView_md5 = MD5
+view_bundle_fileListView_sha256 = SHA256
+view_bundle_files = \u6587\u4EF6
+view_bundle_latestVersion = \u6700\u65B0\u7248\u672C
+view_bundle_list_backToAll = \u8FD4\u56DE\u6240\u6709Bundles
+view_bundle_list_deleteConfirm = Are you sure you want to delete the selected bundles?
+view_bundle_list_deleteFailure = Failed to delete the bundle [{0}]
+view_bundle_list_deleteSuccessful = You successfully deleted the bundle [{0}]
+view_bundle_list_deletesFailure = Failed to delete the bundles
+view_bundle_list_deletesSuccessful = You successfully deleted the bundles
+view_bundle_list_destinationsCount = Destinations Count
+view_bundle_list_error1 = Failed to load bundle to deploy [{0}]
+view_bundle_list_error2 = Failed to get a single bundle to deploy [{0}]
+view_bundle_list_error3 = \u52A0\u8F7Dbundle\u5931\u8D25
+view_bundle_list_loadFailure = Failed to load the bundle to be deployed [{0}]
+view_bundle_list_loadWithLatestFailure = Failed to load bundle with the latest version
data
+view_bundle_list_singleLoadFailure = Failed to get a single bundle to be deployed [{0}]
+view_bundle_list_tagUpdateFailure = \u66F4\u65B0bundle\u6807\u8BB0\u5931\u8D25
+view_bundle_list_tagUpdateSuccessful = You have successfully updated the bundle tags
+view_bundle_list_versionsCount = \u7248\u672C\u6570\u91CF
+view_bundle_purge = \u6E05\u9664
+view_bundle_recipe = Recipe
+view_bundle_resDeployDS_loadFailure = Failed to load bundle resource deployments
+view_bundle_revert = \u8FD8\u539F
+view_bundle_revertWizard_confirmStep_confirmation = Reverting Live Deployment to Previous
Deployment. Click "Next" to continue...
+view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment = Failed to find live
deployment; cannot revert
+view_bundle_revertWizard_confirmStep_liveDeployment = Live Deployment
+view_bundle_revertWizard_confirmStep_name = \u53D1\u5E03\u8FD8\u539F\u786E\u8BA4
+view_bundle_revertWizard_confirmStep_noLiveDeployment = No live deployment was found for
the destination [{0}]
+view_bundle_revertWizard_confirmStep_noLiveDeployment_concise = No live deployment was
found for the destination
+view_bundle_revertWizard_confirmStep_noPriorDeployment = The live deployment [{0}] cannot
be reverted because there is no prior deployment for the destination [{1}]
+view_bundle_revertWizard_confirmStep_noPriorDeployment_concise = The live deployment
cannot be reverted because there is no prior deployment
+view_bundle_revertWizard_confirmStep_prevDeployment = Previous Deployment
+view_bundle_revertWizard_getInfoStep_cleanDeploy = Clean Deployment? (this will delete an
old, existing deploy directory prior to starting the revert deployment)
+view_bundle_revertWizard_getInfoStep_getNameFailure = Failed to get revert deployment
name
+view_bundle_revertWizard_getInfoStep_name = \u63D0\u4F9B\u8FD8\u539F\u4FE1\u606F
+view_bundle_revertWizard_getInfoStep_revertDeployDesc =
\u90E8\u7F72\u8FD8\u539F\u63CF\u8FF0
+view_bundle_revertWizard_getInfoStep_revertDeployDescFull = [REVERT
From]\\n{0}\\n\\n[REVERT To]\\n{1}
+view_bundle_revertWizard_getInfoStep_revertDeployName =
\u90E8\u7F72\u8FD8\u539F\u540D\u79F0
+view_bundle_revertWizard_revertStep_name = Deploy Bundle to Destination Platforms
+view_bundle_revertWizard_revertStep_reverting = \u8FD8\u539F\u4E2D...
+view_bundle_revertWizard_revertStep_scheduled = You have successfully scheduled the
revert deployment!
+view_bundle_revertWizard_revertStep_scheduledDetails = You have successfully scheduled to
revert the bundle deployment [{0}] from resource group [{1}]
+view_bundle_revertWizard_revertStep_scheduledFailure = Failed to schedule revert
deployment!
+view_bundle_revertWizard_title = Bundle\u8FD8\u539F
+view_bundle_revertWizard_windowTitle = Bundle\u8FD8\u539F\u5411\u5BFC
+view_bundle_tree_loadFailure = \u52A0\u8F7Dbundle\u6570\u636E\u5931\u8D25
+view_bundle_version_backToBundle = \u8FD4\u56DEBundle
+view_bundle_version_bundleVersionTagUpdateFailure =
\u66F4\u65B0bundle\u7248\u672C\u6807\u8BB0\u5931\u8D25
+view_bundle_version_bundleVersionTagUpdateSuccessful =
\u66F4\u65B0bundle\u7248\u672C\u6807\u8BB0\u6210\u529F
+view_bundle_version_deleteConfirm =
\u4F60\u786E\u5B9A\u8981\u5220\u9664bundle\u7248\u672C?
+view_bundle_version_deleteFailure = \u5220\u9664bundle\u7248\u672C[{0}]\u5931\u8D25
+view_bundle_version_deleteSuccessful = \u5220\u9664bundle\u7248\u672C[{0}]\u6210\u529F
+view_bundle_version_loadFailure = \u52A0\u8F7Dbundle\u7248\u672C\u5931\u8D25
+view_bundle_versions = \u7248\u672C
+view_configCompare_comparingConfigs = \u6BD4\u8F83\u8BBE\u7F6E
+view_configCompare_configCompare = \u914D\u7F6E\u6BD4\u8F83\u7ED3\u679C\u96C6
+view_configEdit_addItem = \u6DFB\u52A0\u6761\u76EE\u81F3\u5217\u8868.
+view_configEdit_confirm_1 =
\u786E\u5B9A\u8981\u4ECE\u96C6\u5408\u4E2D\u5220\u9664\u6307\u5B9A\u7684\u5C5E\u6027?
+view_configEdit_confirm_2 = \u786E\u5B9A\u8981\u5220\u9664\u8BE5\u884C?
+view_configEdit_confirm_3 = \u786E\u5B9A\u8981\u5220\u9664 [{0}]\u9879\u9009\u4E2D\u7684
[{1}]?
+view_configEdit_editRow = \u7F16\u8F91\u884C
+view_configEdit_enterPropName =
\u8F93\u5165\u8981\u6DFB\u52A0\u7684\u5C5E\u6027\u540D\u79F0.
+view_configEdit_error_1 = \u6B64\u8D44\u6E90\u65E0\u6CD5\u914D\u7F6E.
+view_configEdit_error_2 =
\u6B64\u8D44\u6E90\u65E0\u6CD5\u8FDB\u884C\u8FDE\u63A5\u8BBE\u7F6E.
+view_configEdit_error_3 = \u65E0\u6CD5\u6DFB\u52A0\u540D\u4E3A[{0}]\u7684\u5C5E\u6027.
\u5C5E\u6027\u540D\u5728\u96C6\u5408\u4E2D\u5DF2\u7ECF\u88AB\u4F7F\u7528.
+view_configEdit_files = \u6587\u4EF6
+view_configEdit_hideAll = \u9690\u85CF\u6240\u6709
+view_configEdit_jumpToSection = \u8DF3\u81F3\u6A21\u5757
+view_configEdit_msg_1 = \u589E\u52A0\u5C5E\u6027 [{0}]\u5230\u96C6\u5408.
+view_configEdit_msg_2 = \u79FB\u9664\u96C6\u5408\u5185\u6240\u6709\u7684\u5C5E\u6027.
+view_configEdit_msg_3 = \u4ECE\u5217\u8868\u4E2D\u5220\u9664[{0} {1}]\u6210\u529F.
+view_configEdit_msg_4 = \u6DFB\u52A0\u6761\u76EE\u81F3\u5217\u8868.
+view_configEdit_properties = \u5C5E\u6027
+view_configEdit_tooltip_1 =
\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u6761\u76EE.
+view_configEdit_tooltip_2 = \u6DFB\u52A0\u4E00\u9879\u6761\u76EE\u5230\u5217\u8868.
+view_configEdit_viewRow = \u67E5\u770B\u884C
+view_configurationDetails_allPropertiesValid =
\u6240\u6709\u7684\u914D\u7F6E\u4FE1\u606F\u5DF2\u7ECF\u586B\u5199\u4E86\u6709\u6548\u7684\u503C,
\u73B0\u5728\u4FDD\u5B58\u914D\u7F6E.
+view_configurationDetails_configNotUpdatedDueToNoChange =
\u7531\u4E8E\u65B0\u65E7\u914D\u7F6E\u4E00\u81F4\uFF0C\u6240\u4EE5\u914D\u7F6E\u6CA1\u6709\u66F4\u65B0.
+view_configurationDetails_error_updateFailure = \u66F4\u65B0\u914D\u7F6E\u5931\u8D25.
+view_configurationDetails_messageConcise = \u914D\u7F6E\u66F4\u65B0\u6210\u529F -
\u76EE\u524D\u7248\u672C\u662F {0}.
+view_configurationDetails_messageDetailed = \u8D44\u6E90
[{1}]\u7684\u914D\u7F6E\u7248\u672C\u66F4\u65B0\u5230 {0} .
+view_configurationDetails_noPermission =
\u60A8\u6CA1\u6709\u6743\u9650\u7F16\u8F91\u6B64\u8D44\u6E90\u7684\u914D\u7F6E\u4FE1\u606F.
+view_configurationDetails_somePropertiesInvalid =
\u4E0B\u9762\u7684\u914D\u7F6E\u4FE1\u606F\u586B\u5199\u4E86\u975E\u6CD5\u7684\u503C: {0}.
\u5FC5\u987B\u4FEE\u6539\u6B64\u4FE1\u606F\u4EE5\u4FBF\u4FDD\u5B58\u6B64\u914D\u7F6E.
+view_configurationHistoryDetails_error_loadFailure =
\u65E0\u6CD5\u52A0\u8F7D\u5386\u53F2\u914D\u7F6E.
+view_configurationHistoryList_cannotDeleteCurrent =
\u9009\u4E2D\u7684\u5386\u53F2\u914D\u7F6E\u4E2D\u7684\u4E00\u9879\u662F\u73B0\u6709\u751F\u6548\u7684\u914D\u7F6E
- \u4F60\u4E0D\u80FD\u5220\u9664\u5B83.
+view_configurationHistoryList_cannotDeleteGroupItems =
\u4E00\u4E2A\u6216\u591A\u4E2A\u9009\u4E2D\u7684\u5386\u53F2\u914D\u7F6E\u9879\u662F\u67D0\u4E2A\u7EC4\u914D\u7F6E\u7684\u4E00\u90E8\u5206\u3002
\u5728\u5220\u9664\u5355\u4E2A\u7684\u5386\u53F2\u914D\u7F6E\u4FE1\u606F\u4E4B\u524D\uFF0C\u5FC5\u987B\u5148\u5220\u9664
\u4E0A\u4E00\u7EA7\u7684\u5386\u53F2\u7EC4\u914D\u7F6E.
+view_configurationHistoryList_delete_failure =
\u5220\u9664\u5386\u53F2\u914D\u7F6E\u9879\u5931\u8D25
+view_configurationHistoryList_delete_success =
\u60A8\u6210\u529F\u7684\u5220\u9664\u4E86\u9009\u4E2D\u7684\u5386\u53F2\u914D\u7F6E\u9879.
+view_configurationHistoryList_rollback = \u56DE\u6EDA
+view_configurationHistoryList_rollback_failure = \u56DE\u6EDA\u914D\u7F6E\u5931\u8D25.
\u539F\u6765\u7684\u914D\u7F6E\u4F9D\u7136\u751F\u6548.
+view_configurationHistoryList_rollback_success =
\u60A8\u6210\u529F\u7684\u5C06\u8BE5\u914D\u7F6E\u56DE\u6EDA\u5230\u9009\u4E2D\u7684\u5386\u53F2\u914D\u7F6E.
+view_configurationHistoryList_table_clickStatusIcon =
\u70B9\u51FB\u72B6\u6001\u6309\u94AE\u83B7\u53D6\u8BE6\u7EC6\u7684\u4FE1\u606F
+view_configurationHistoryList_table_statusFailure =
\u6B64\u914D\u7F6E\u66F4\u65B0\u5931\u8D25
+view_configurationHistoryList_table_statusInprogress =
\u66F4\u65B0\u6B64\u914D\u7F6E\u7684\u64CD\u4F5C\u6B63\u5728\u8FDB\u884C\u4E2D
+view_configurationHistoryList_table_statusNochange =
\u6CA1\u6709\u5BF9\u6B64\u914D\u7F6E\u505A\u4EFB\u4F55\u4FEE\u6539
+view_configurationHistoryList_table_statusSuccess =
\u6B64\u914D\u7F6E\u6210\u529F\u66F4\u65B0
+view_configurationHistoryList_title = \u5386\u53F2\u914D\u7F6E
+view_connectionSettingsDetails_allPropertiesValid =
\u6240\u6709\u8FDE\u63A5\u8BBE\u7F6E\u7684\u914D\u7F6E\u5DF2\u7ECF\u586B\u5199\u4E86\u6709\u6548\u7684\u503C,\u73B0\u5728\u53EF\u4EE5\u4FDD\u5B58\u8BBE\u7F6E.
+view_connectionSettingsDetails_error_updateFailure =
\u66F4\u65B0\u8FDE\u63A5\u8BBE\u7F6E\u5931\u8D25.
+##view_connectionSettingsDetails_messageConcise_updateSuccess =
\u8FDE\u63A5\u8BBE\u7F6E\u5DF2\u66F4\u65B0.
+##view_connectionSettingsDetails_messageDetailed_updateSuccess = \u8D44\u6E90
[{0}]\u7684\u8FDE\u63A5\u8BBE\u7F6E\u5DF2\u7ECF\u66F4\u65B0.
+view_connectionSettingsDetails_noPermission =
\u60A8\u6CA1\u6709\u6743\u9650\u7F16\u8F91\u6B64\u8D44\u6E90\u7684\u8FDE\u63A5\u8BBE\u7F6E.
+view_connectionSettingsDetails_somePropertiesInvalid =
\u4E0B\u9762\u7684\u8FDE\u63A5\u8BBE\u7F6E\u4FE1\u606F\u586B\u5199\u4E86\u975E\u6CD5\u7684\u503C:
{0}.
\u5FC5\u987B\u4FEE\u6539\u6B64\u4FE1\u606F\u4EE5\u4FBF\u4FDD\u5B58\u6B64\u8BBE\u7F6E.
+view_core_error_1 = \u67E5\u627E\u65B0\u544A\u8B66\u4FE1\u606F\u5931\u8D25
+view_core_loggedOut = \u9000\u51FA\u767B\u5F55
+view_core_noRecentAlerts = \u6CA1\u6709\u65B0\u4EA7\u751F\u7684\u544A\u8B66\u4FE1\u606F
+view_core_recentAlerts = \u65B0\u4EA7\u751F [{0}] \u6761\u544A\u8B66 -
\u70B9\u51FB\u8DF3\u8F6C\u5230\u65B0\u544A\u8B66\u62A5\u8868\u754C\u9762
+view_core_uncaught = \u5168\u5C40\u672A\u6355\u6349\u7684\u5F02\u5E38
+view_dashboardManager_deleteFail = \u5220\u9664\u7EDF\u8BA1\u8868\u76D8\u5931\u8D25.
+view_dashboardManager_deleted = \u6210\u529F\u5220\u9664\u7EDF\u8BA1\u8868\u76D8{0}
+view_dashboardManager_error = \u4FDD\u5B58\u7EDF\u8BA1\u8868\u76D8\u5931\u8D25
+view_dashboardManager_saved = \u4FDD\u5B58\u7EDF\u8BA1\u8868\u76D8{0}
+view_dashboardManager_success = \u6210\u529F\u4FDD\u5B58\u7EDF\u8BA1\u8868\u76D8
+view_dashboard_favorites_error1 = \u52A0\u8F7D\u5E38\u7528\u8D44\u6E90\u5931\u8D25.
+view_dashboardsManager_error1 = \u6DFB\u52A0\u65B0\u7EDF\u8BA1\u8868\u76D8\u5931\u8D25
+view_dashboardsManager_message_title_details =
<h1>\u6B22\u8FCE\u4F7F\u7528RHQ</h1>\n<p>RHQ\u9879\u76EE\u662F\u4E00\u4E2A\u62BD\u8C61\u7684\u3001\u57FA\u4E8E\u63D2\u4EF6\u7684\u7CFB\u7EDF\u7BA1\u7406\u5957\u4EF6\u3002\u901A\u8FC7\u4E00\u7CFB\u5217\u6838\u5FC3\u529F\u80FD\u63D0\u4F9B\u591A\u4EA7\u54C1\u548C\u5E73\u53F0\u7684\u53EF\u6269\u5C55\u7684\u96C6\u6210\u7BA1\u7406.
\u672C\u9879\u76EE\u5206\u5C42\u6A21\u5757\u5177\u6709\u7075\u6D3B\u53D1\u5E03\u67B6\u6784.
\u5B83\u63D0\u4F9B\u4E86\u4E00\u4E2A\u6838\u5FC3\u7528\u6237\u754C\u9762\u4F9B\u8DE8\u6574\u4E2A\u4F01\u4E1A\u7684\u5BA1\u8BA1\u548C\u5386\u53F2\u7BA1\u7406.
\u670D\u52A1\u5668/\u4EE3\u7406\u67B6\u6784\u63D0\u4F9B\u8FDC\u7A0B\u7BA1\u7406,\u63D2\u4EF6\u63D0\u4F9B\u7279\u5B9A\u4EA7\u54C1\u7684\u7BA1\u7406\u652F\u6301.</p>\n
<p>\u901A\u8FC7\u5355\u51FB(\u7F16\u8F91\u6A21\u5F0F)\u6309\u94AE\u53EF\u4EE5\u7F16\u8F91\u9ED8\u8BA4\u7EDF\u8BA1\u8868\u76D8.</p>
+view_dashboards_confirm1 = \u60A8\u786E\u5B9A\u8981\u5220\u9664\uFF1F
+view_dashboards_portlets_refresh_fail1 =
\u4FEE\u6539portlets\u81EA\u52A8\u5237\u65B0\u7684\u95F4\u9694\u65F6\u95F4\u5931\u8D25
+view_dashboards_portlets_refresh_fail2 =
\u505C\u7528portlets\u81EA\u52A8\u5237\u65B0\u7684\u91CD\u8F7D\u5931\u8D25
+view_dashboards_portlets_refresh_multiple_min = {0} \u5206\u949F
+view_dashboards_portlets_refresh_none = \u65E0\u5237\u65B0
+view_dashboards_portlets_refresh_one_min = 1 \u5206\u652F
+view_dashboards_portlets_refresh_success1 =
\u6210\u529F\u4FEE\u6539portlets\u81EA\u52A8\u5237\u65B0\u7684\u95F4\u9694\u65F6\u95F4
+view_dashboards_portlets_refresh_success2 =
\u6210\u529F\u505C\u7528portlets\u81EA\u52A8\u5237\u65B0\u7684\u91CD\u8F7D
+view_dashboards_title = \u7EDF\u8BA1\u8868\u76D8
+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
+view_dynagroup_definitionCreated =
\u60A8\u6210\u529F\u7684\u521B\u5EFA\u540D\u79F0\u4E3A[{0}]\u7684\u7EC4\u5B9A\u4E49
+view_dynagroup_definitionLoadFailure =
\u52A0\u8F7D\u6240\u6709\u7684\u7EC4\u5B9A\u4E49\u5931\u8D25
+view_dynagroup_definitions = \u52A8\u6001\u7EC4\u5B9A\u4E49
+view_dynagroup_deleteFailureSelection =
\u5220\u9664\u9009\u4E2D\u7684\u7EC4\u5B9A\u4E49\u5931\u8D25
+view_dynagroup_deleteSuccessfulSelection = \u6210\u529F\u7684\u5220\u9664
[{0}]\u7EC4\u5B9A\u4E49
+view_dynagroup_editing = \u7F16\u8F91 [{0}]
+view_dynagroup_exprBuilder_addExpression = \u6DFB\u52A0\u8868\u8FBE\u5F0F
+view_dynagroup_exprBuilder_comparisonType = \u5BF9\u6BD4\u7C7B\u578B
+view_dynagroup_exprBuilder_comparisonType_contains = \u5305\u542B
+view_dynagroup_exprBuilder_comparisonType_endsWith = ends with
+view_dynagroup_exprBuilder_comparisonType_equals = \u76F8\u7B49
+view_dynagroup_exprBuilder_comparisonType_startsWith = starts with
+view_dynagroup_exprBuilder_comparisonType_tooltip = \u5BF9\u6BD4\u7C7B\u578B
+view_dynagroup_exprBuilder_definingPlugin = \u5B9A\u4E49\u63D2\u4EF6
+view_dynagroup_exprBuilder_definingPlugin_tooltip = \u67E5\u627E\u63D2\u4EF6
+view_dynagroup_exprBuilder_expression = \u8868\u8FBE\u5F0F
+view_dynagroup_exprBuilder_expressionType = \u8868\u8FBE\u5F0F\u7C7B\u578B
+view_dynagroup_exprBuilder_expressionType_pluginConfig = \u63D2\u4EF6\u914D\u7F6E
+view_dynagroup_exprBuilder_expressionType_resource = \u8D44\u6E90
+view_dynagroup_exprBuilder_expressionType_resourceCategory = \u8D44\u6E90\u79CD\u7C7B
+view_dynagroup_exprBuilder_expressionType_resourceConfig = \u8D44\u6E90\u914D\u7F6E
+view_dynagroup_exprBuilder_expressionType_resourceType = \u8D44\u6E90\u7C7B\u578B
+view_dynagroup_exprBuilder_expressionType_tooltip =
\u6B64\u8868\u8FBE\u5F0F\u6307\u5B9A\u8868\u8FBE\u5F0F\u7684\u5C5E\u6027\u7C7B\u578B:<br/>
<b>\u8D44\u6E90</b>:
\u8D44\u6E90\u5C5E\u6027\uFF1A\u6BD4\u5982\u540D\u79F0\u548C\u7248\u672C<br/>
<b>\u8D44\u6E90\u7C7B\u578B</b>:
\u641C\u5BFB\u6307\u5B9A\u7C7B\u578B\u7684\u8D44\u6E90<br/>
<b>\u8D44\u6E90\u7C7B\u522B</b>:
\u6309\u7167\u7C7B\u522B\u67E5\u627E\u8D44\u6E90: \u5E73\u53F0, \u670D\u52A1\u5668,
\u670D\u52A1<br/> <b>\u7279\u5F81</b>:
\u5B58\u5728\u76D1\u63A7\u70B9\u7684\u8D44\u6E90<br/>
<b>\u63D2\u4EF6\u914D\u7F6E</b>:
\u6309\u7167\u63D2\u4EF6\u7EC4\u4EF6\u548C\u7EC4\u4EF6\u7684\u914D\u7F6E\u8BBE\u7F6E\u67E5\u8BE2<br/>
<b>\u8D44\u6E90\u914D\u7F6E</b>:
\u6309\u7167\u88AB\u7BA1\u8D44\u6E90\u7684\u914D\u7F6E\u8BBE\u7F6E\u67E5\u8BE2
+view_dynagroup_exprBuilder_expressionType_trait = \u7279\u5F81
+view_dynagroup_exprBuilder_expression_tooltip = This is the full expression that is
represented by the selections in the form below. This text will be added to your group
definition expression text when you click the "Add Expression" button.
+view_dynagroup_exprBuilder_groupBy = \u5206\u7EC4
+view_dynagroup_exprBuilder_groupBy_tooltip = GroupBy will cause the system to pivot on
the values from the entered expressions creating a separate group for each value. For
example, GroupBy on the cluster name to create a group for each cluster with all cluster
members in it.
+view_dynagroup_exprBuilder_noPlugins = --\u65E0\u63D2\u4EF6--
+view_dynagroup_exprBuilder_noProperties = -\u65E0\u5C5E\u6027--
+view_dynagroup_exprBuilder_noResourceTypes = --\u65E0\u8D44\u6E90\u7C7B\u578B--
+view_dynagroup_exprBuilder_pluginLoadFailure =
\u65E0\u6CD5\u83B7\u53D6\u63D2\u4EF6\u5217\u8868
+view_dynagroup_exprBuilder_propLoadFailure =
\u65E0\u6CD5\u83B7\u53D6\u5C5E\u6027\u5217\u8868
+view_dynagroup_exprBuilder_propertyName = \u5C5E\u6027\u540D\u79F0
+view_dynagroup_exprBuilder_propertyName_tooltip =
\u7528\u4E8E\u67E5\u8BE2\u7684\u5C5E\u6027\u540D\u79F0.
\u8FD9\u662F\u7531\u8868\u8FBE\u5F0F\u7C7B\u578B\u548C\u8D44\u6E90\u7C7B\u578B\u51B3\u5B9A\u7684.
+view_dynagroup_exprBuilder_resTypeLoadFailure =
\u65E0\u6CD5\u83B7\u53D6\u63D2\u4EF6[{0}]\u7684\u8D44\u6E90\u7C7B\u578B\u5217\u8868
+view_dynagroup_exprBuilder_resource = \u8D44\u6E90
+view_dynagroup_exprBuilder_resourceType = \u8D44\u6E90\u7C7B\u578B
+view_dynagroup_exprBuilder_resourceType_tooltip = \u8D44\u6E90\u7C7B\u578B
+view_dynagroup_exprBuilder_resource_child = Child
+view_dynagroup_exprBuilder_resource_grandparent = Grandparent
+view_dynagroup_exprBuilder_resource_greatGrandparent = GreatGrandparent
+view_dynagroup_exprBuilder_resource_greatGreatGrandparent = GreatGreatGrandparent
+view_dynagroup_exprBuilder_resource_parent = Parent
+view_dynagroup_exprBuilder_resource_resource = Resource
+view_dynagroup_exprBuilder_resource_tooltip =
\u9009\u62E9\u8981\u67E5\u8BE2\u8D44\u6E90\u6240\u5728\u7684\u5C42\u7EA7. \u4F8B\u5982,
\u9009\u4E2D
"parent"\u4F1A\u67E5\u8BE2\u51FA\u7236\u8D44\u6E90\u7684\u6EE1\u8DB3\u5269\u4F59\u8868\u8FBE\u5F0F\u7684\u8D44\u6E90.
+view_dynagroup_exprBuilder_title = \u8868\u8FBE\u5F0F\u7F16\u8BD1
+view_dynagroup_exprBuilder_unset = \u6062\u590D\u8BBE\u7F6E
+view_dynagroup_exprBuilder_unset_tooltip = Unset will find all of the values that have a
null value in the database. This is not possible using the "=" operator because
of how databases store and query data.
+view_dynagroup_exprBuilder_value_tooltip =
\u67E5\u8BE2\u8868\u8FBE\u5F0F\u5B57\u7B26\u4E32\u7684\u503C
+view_dynagroup_expression = \u8868\u8FBE\u5F0F
+view_dynagroup_expressionBuilderIconTooltip = \u8868\u8FBE\u5F0F\u7F16\u8BD1\u4E2D...
+view_dynagroup_expressionSet = \u8868\u8FBE\u5F0F\u7EC4
+view_dynagroup_lastCalculationTime = \u4E0A\u6B21\u8BA1\u7B97\u6301\u7EED\u65F6\u95F4
+view_dynagroup_loadDefinitionFailure = \u52A0\u8F7D\u7EC4\u5B9A\u4E49 [{0}]\u5931\u8D25
+view_dynagroup_loadDefinitionMissing = \u6CA1\u6709ID\u662F[{0}]\u7684\u7EC4\u5B9A\u4E49
+view_dynagroup_mixed = Mixed
+view_dynagroup_newGroupDefinition = \u65B0\u5EFA\u7EC4\u5B9A\u4E49
+view_dynagroup_nextCalculationTime = \u4E0B\u6B21\u8BA1\u7B97\u6301\u7EED\u65F6\u95F4
+view_dynagroup_permDenied =
\u60A8\u6CA1\u6709\u67E5\u770B\u7EC4\u5B9A\u4E49\u7684\u6743\u9650
+view_dynagroup_recalcFailure = \u91CD\u7B97\u7EC4\u5B9A\u4E49\u5931\u8D25
+view_dynagroup_recalcFailureSelection = Failed to recalculated the selected group
definitions
+view_dynagroup_recalcSuccessful = \u7EC4\u5B9A\u4E49\u5DF2\u7ECF\u91CD\u65B0\u8BA1\u7B97
+view_dynagroup_recalcSuccessfulSelection = You have successfully recalculated [{0}] group
definitions
+view_dynagroup_recalculate = \u91CD\u7B97
+view_dynagroup_recalculationInterval = \u91CD\u7B97\u95F4\u9694 (ms)
+view_dynagroup_recursive = \u9012\u5F52
+view_dynagroup_saveAndRecalculate = \u4FDD\u5B58&\u91CD\u7B97
+view_dynagroup_saveFailure =
\u4FDD\u5B58\u540D\u79F0\u4E3A[{0}]\u7684\u7EC4\u5B9A\u4E49\u5931\u8D25
+view_dynagroup_saveSuccessful =
\u60A8\u6210\u529F\u7684\u4FDD\u5B58\u4E86\u540D\u79F0\u4E3A[{0}]\u7684\u7EC4\u5B9A\u4E49
+view_dynagroup_singleSaveFailure = \u62A5\u9519\u4E86 -
\u6B63\u5E38\u5E94\u8BE5\u53EA\u521B\u5EFA\u5355\u4E2A\u7EC4\u5B9A\u4E49,
\u4F46\u662F\u5374\u521B\u5EFA\u4E86[{0}]\u4E2A.
+view_dynagroup_template_customExpression = Custom Expression...
+view_dynagroup_template_downedResources = All resources currently down
+view_dynagroup_template_jbossas4_clusters = JBossAS 4 - \u96C6\u7FA4
+view_dynagroup_template_jbossas4_earClusters = JBossAS 4 - Clustered EARs
+view_dynagroup_template_jbossas4_hostingApp = JBossAS 4 - All hosting any version of
"my" app
+view_dynagroup_template_jbossas4_nonsecured = JBossAS 4 - All non-secured
+view_dynagroup_template_jbossas4_uniqueVersions = JBossAS 4 - Unique versions
+view_dynagroup_template_jbossas5_clusters = JBossAS 5/6 - \u96C6\u7FA4
+view_dynagroup_template_platforms = Platform resources in inventory
+view_dynagroup_template_uniqueResourceTypes = Unique resource types in inventory
+view_groupConfigEdit_member = \u6210\u5458
+view_groupConfigEdit_noListProps =
\u7EC4\u914D\u7F6E\u76EE\u524D\u4E0D\u652F\u6301\u67E5\u770B\u5C5E\u6027\u4FE1\u606F.
+view_groupConfigEdit_setAll = \u8BBE\u7F6E\u6240\u6709\u7684\u503C\u5230:
+view_groupConfigEdit_tooltip_1 = \u6210\u5458\u503C\u6709\u5DEE\u5F02 -
\u70B9\u51FB\u6309\u94AE\u7F16\u8F91.
+view_groupConfigEdit_unset = \u56DE\u6EDA
+view_groupConfigEdit_valsDiff = \u6210\u5458\u503C\u6709\u5DEE\u5F02
+view_groupConfigEdit_valsDiffForProp = \u5C5E\u6027 [{0}]\u7684\u6210\u5458\u503C
+view_groupCreateWizard_createFailure = \u521B\u5EFA\u8D44\u6E90\u7EC4\u5931\u8D25
+view_groupCreateWizard_createStepName = \u7EC4\u8BBE\u7F6E
+view_groupCreateWizard_createStep_recursive = \u9012\u5F52
+view_groupCreateWizard_createSuccessful_concise =
\u6210\u529F\u7684\u521B\u5EFA\u4E86\u8D44\u6E90\u7EC4. [<a
href="{0}">\u67E5\u770B\u7EC4</a>]
+view_groupCreateWizard_createSuccessful_full =
\u6210\u529F\u7684\u521B\u5EFA\u540D\u79F0\u662F [{1}]\u5305\u542B
[{2}]\u4E2A\u8D44\u6E90\u6210\u5458\u7684[{0}]\u8D44\u6E90\u7EC4
+view_groupCreateWizard_membersStepName = \u9009\u62E9\u6210\u5458
+view_groupCreateWizard_title = \u521B\u5EFA\u7EC4
+view_groupCreateWizard_windowTitle = \u521B\u5EFA\u7EC4
+view_groupInventoryMembers_button_updateMembership =
\u66F4\u65B0\u6210\u5458\u5173\u7CFB\u4E2D...
+view_groupInventoryMembers_title_updateMembership = \u66F4\u65B0\u6210\u5458\u5173\u7CFB
+view_group_detail_failLoad =
\u52A0\u8F7D\u7EC4ID\u4E3A[{0}]\u7684\u7EC4\u4FE1\u606F\u5931\u8D25
+view_group_detail_failLoadComp =
\u52A0\u8F7D\u7EC4ID\u4E3A[{0}]\u7684\u6DF7\u5408\u7EC4\u4FE1\u606F\u5931\u8D25
+view_group_detail_failRecursiveChange =
\u4FEE\u6539\u7EC4[{0}]\u7684\u9012\u5F52\u8BBE\u7F6E\u5931\u8D25
+view_group_detail_recursiveChange =
\u6210\u529F\u7684\u4FEE\u6539\u7EC4[{0}]\u7684\u9012\u5F52\u8BBE\u7F6E
+view_group_inventory_activity_no_recent_metrics =
\u6B64\u7EC4\u6CA1\u6709\u6700\u65B0\u516C\u544A
+view_group_meas_schedules_title = Group Metric Collection Schedules
+view_group_membership_failFetch = \u83B7\u53D6\u8D44\u6E90\u7EC4\u5931\u8D25
+view_group_membership_saveFailure =
\u4FEE\u6539[{0}]\u7684\u7EC4\u6210\u5458\u5173\u7CFB\u5931\u8D25
+view_group_membership_saveSuccessful =
\u6210\u529F\u7684\u4FEE\u6539[{0}]\u7684\u7EC4\u6210\u5458\u5173\u7CFB
+view_group_operationScheduleDetails_failedToLoadMembers =
\u52A0\u8F7D\u7EC4\u6210\u5458\u4FE1\u606F\u5931\u8D25.
+view_group_operationScheduleDetails_field_execute = \u6267\u884C
+view_group_operationScheduleDetails_field_haltOnFailure =
\u5931\u8D25\u65F6\u505C\u6B62?
+view_group_operationScheduleDetails_memberResource = \u6210\u5458\u4FE1\u606F
+view_group_operationScheduleDetails_value_parallel =
\u91C7\u53D6\u5E76\u884C\u7684\u65B9\u5F0F
+view_group_operationScheduleDetails_value_sequential =
\u6309\u7167\u5982\u4E0B\u7684\u987A\u5E8F
(\u6DFB\u52A0\u6216\u8005\u5220\u9664\u6210\u5458\u4EE5\u4FEE\u6539\u987A\u5E8F)
+view_group_pluginConfig_edit_currentGroupProperties = \u7EC4\u5F53\u524D\u5C5E\u6027
+view_group_pluginConfig_edit_invalid = The following connection setting properties have
invalid values and must be corrected before the connection settings can be saved: [{0}]
+view_group_pluginConfig_edit_noperm =
\u60A8\u6CA1\u6709\u6743\u9650\u7F16\u8F91\u6B64\u7EC4\u8FDE\u63A5\u8BBE\u7F6E
+view_group_pluginConfig_edit_saveFailure = Failed to initiate group connection setting
update for [{0}] compatible group named [{1}]
+view_group_pluginConfig_edit_saveInitiated_concise =
\u7EC4\u8FDE\u63A5\u8BBE\u7F6E\u66F4\u65B0\u5DF2\u7ECF\u521D\u59CB\u5316
+view_group_pluginConfig_edit_saveInitiated_full = The group connection setting updates
have been initiated for the [{0}] compatible group named [{1}]
+view_group_pluginConfig_edit_saveTooltip =
\u66F4\u65B0\u6240\u6709\u7684\u7EC4\u6210\u5458\u8FDE\u63A5\u8BBE\u7F6E
+view_group_pluginConfig_edit_valid = All connection setting properties have valid values,
so the connection settings can now be saved
+view_group_pluginConfig_members_fetchFailure =
\u83B7\u53D6[{0}]\u7EC4\u6210\u5458\u7684\u63D2\u4EF6\u914D\u7F6E\u66F4\u65B0\u5386\u53F2\u5931\u8D25
+view_group_pluginConfig_members_fetchFailureConn =
\u68C0\u7D22[{0}]\u7684\u6210\u5458\u8FDE\u63A5\u8BBE\u7F6E\u5931\u8D25
+view_group_pluginConfig_members_fetchFailureConnInProgress =
\u5F53\u524D\u5DF2\u5B58\u5728\u7EC4\u63D2\u4EF6\u914D\u7F6E\u66F4\u65B0\u8FDB\u7A0B .
\u5728\u67E5\u770B\u7EC4\u8BBE\u7F6E\u4E4B\u524D\u9700\u8981\u7B49\u5F85\u66F4\u65B0\u5B8C\u6210.
+view_group_pluginConfig_members_statusDetails = \u8BE6\u7EC6\u72B6\u6001
+view_group_pluginConfig_members_statusFailure =
\u672A\u77E5\u9519\u8BEF\uFF0C\u914D\u7F6E\u4FEE\u6539\u5931\u8D25
+view_group_pluginConfig_members_statusInprogress =
\u6B63\u5728\u4FEE\u6539\u914D\u7F6E\u4E2D
+view_group_pluginConfig_members_statusNochange =
\u6CA1\u6709\u5BF9\u914D\u7F6E\u505A\u4EFB\u4F55\u4FEE\u6539
+view_group_pluginConfig_members_statusSuccess = \u4FEE\u6539\u914D\u7F6E\u6210\u529F
+view_group_pluginConfig_members_title =
\u7EC4\u6210\u5458\u8FDE\u63A5\u8BBE\u7F6E\u5386\u53F2
+view_group_pluginConfig_table_clickStatusIcon =
\u70B9\u51FB\u72B6\u6001\u6309\u94AE\u83B7\u53D6\u8BE6\u7EC6\u4FE1\u606F
+view_group_pluginConfig_table_deleteFailure =
\u5220\u9664\u7EC4\u63D2\u4EF6\u914D\u7F6E\u5386\u53F2\u5931\u8D25
+view_group_pluginConfig_table_deleteSuccessful = \u60A8\u5220\u9664\u4E86 [{0}]
\u5386\u53F2\u9879
+view_group_pluginConfig_table_failFetch =
\u83B7\u53D6\u7EC4\u63D2\u4EF6\u914D\u7F6E\u5386\u53F2\u5931\u8D25
+view_group_pluginConfig_table_msg1 =
\u67E5\u770B\u5355\u72EC\u8D44\u6E90\u7684\u6210\u5458\u5386\u53F2\u72B6\u6001
+view_group_pluginConfig_table_statusDetails = \u8BE6\u7EC6\u72B6\u6001
+view_group_pluginConfig_table_statusFailure =
\u4FEE\u6539\u6B64\u7EC4\u914D\u7F6E\u5931\u8D25
+view_group_pluginConfig_table_statusInprogress = \u7EC4\u914D\u7F6E\u66F4\u65B0\u4E2D
+view_group_pluginConfig_table_statusNochange =
\u6CA1\u6709\u5BF9\u6B64\u7EC4\u914D\u7F6E\u505A\u4EFB\u4F55\u4FEE\u6539
+view_group_pluginConfig_table_statusSuccess = \u7EC4\u914D\u7F6E\u66F4\u65B0\u6210\u529F
+view_group_pluginConfig_table_title = \u5386\u53F2\u8FDE\u63A5\u8BBE\u7F6E\u7EC4
+view_group_pluginConfig_table_viewMemberHistory = \u67E5\u770B\u5386\u53F2\u6210\u5458
+view_group_pluginConfig_table_viewSettings = \u67E5\u770B\u8BBE\u7F6E
+view_group_pluginConfig_view_groupProperties = \u7EC4\u5C5E\u6027
+view_group_pluginConfig_view_noperm =
\u60A8\u6CA1\u6709\u67E5\u770B\u8FDE\u63A5\u8BBE\u7F6E\u7684\u6743\u9650
+view_group_resConfig_edit_invalid =
\u4E0B\u9762\u7684\u5C5E\u6027\u914D\u7F6E\u586B\u5199\u4E86\u65E0\u6548\u7684\u503C
,\u63D0\u4EA4\u4E4B\u524D\u8BF7\u4FEE\u6539: [{0}]
+view_group_resConfig_edit_loadFail =
\u68C0\u7D22[{0}]\u7684\u6210\u5458\u8D44\u6E90\u914D\u7F6E\u5931\u8D25
+view_group_resConfig_edit_noperm =
\u60A8\u6CA1\u6709\u6743\u9650\u7F16\u8F91\u7EC4\u914D\u7F6E
+view_group_resConfig_edit_saveFailure =
\u521D\u59CB\u5316\u8D44\u6E90\u7C7B\u578B[{0}],\u540D\u79F0\u4E3A[{1}]\u7684\u517C\u5BB9\u7EC4\u7EC4\u914D\u7F6E\u66F4\u65B0\u5931\u8D25
+view_group_resConfig_edit_saveInitiated_concise =
\u521D\u59CB\u5316\u7EC4\u914D\u7F6E\u66F4\u65B0\u5B8C\u6210
+view_group_resConfig_edit_saveInitiated_full =
\u6210\u529F\u521D\u59CB\u5316\u8D44\u6E90\u7C7B\u578B[{0}],\u540D\u79F0\u4E3A[{1}]\u7684\u517C\u5BB9\u7EC4\u7EC4\u914D\u7F6E\u66F4\u65B0
+view_group_resConfig_edit_saveTooltip =
\u4FEE\u6539\u6240\u6709\u7684\u7EC4\u6210\u5458\u914D\u7F6E
+view_group_resConfig_edit_valid =
\u6240\u6709\u7684\u5C5E\u6027\u914D\u7F6E\u5747\u6709\u6548,\u53EF\u4EE5\u63D0\u4EA4\u4FDD\u5B58
+view_group_resConfig_members_fetchFailure =
\u83B7\u53D6\u8D44\u6E90\u7EC4[{0}]\u7684\u6210\u5458\u914D\u7F6E\u4FEE\u6539\u5386\u53F2\u8BB0\u5F55\u5931\u8D25
+view_group_resConfig_members_fetchFailureConfig = \u6062\u590D\u8D44\u6E90\u6210\u5458
[{0}]\u7684\u914D\u7F6E\u8BBE\u7F6E
+view_group_resConfig_members_fetchFailureConfigInProgress =
\u6B64\u8D44\u6E90\u7EC4\u914D\u7F6E\u7684\u6B63\u5728\u4FEE\u6539\u4E2D\uFF0C\u5982\u679C\u8981\u67E5\u770B\u7EC4\u8BBE\u7F6E\uFF0C\u9700\u8981\u7B49\u5F85\u6B64\u4FEE\u6539\u5168\u90E8\u5B8C\u6210.
+view_group_resConfig_members_statusDetails = \u8BE6\u7EC6\u72B6\u6001
+view_group_resConfig_members_statusFailure =
\u672A\u77E5\u9519\u8BEF\uFF0C\u4FEE\u6539\u914D\u7F6E\u5931\u8D25
+view_group_resConfig_members_statusInprogress =
\u6B63\u4FEE\u6539\u6B64\u914D\u7F6E\u4E2D
+view_group_resConfig_members_statusNochange =
\u6CA1\u6709\u5BF9\u6B64\u914D\u7F6E\u505A\u4EFB\u4F55\u4FEE\u6539
+view_group_resConfig_members_statusSuccess =
\u6210\u529F\u7684\u4FEE\u6539\u6B64\u914D\u7F6E
+view_group_resConfig_members_title =
\u8D44\u6E90\u7EC4\u914D\u7F6E\u5386\u53F2\u6210\u5458
+view_group_resConfig_table_clickStatusIcon =
\u70B9\u51FB\u72B6\u6001\u6309\u94AE\u83B7\u53D6\u8BE6\u7EC6\u4FE1\u606F
+view_group_resConfig_table_deleteFailure =
\u5220\u9664\u5386\u53F2\u8D44\u6E90\u7EC4\u914D\u7F6E\u5931\u8D25
+view_group_resConfig_table_deleteSuccessful = \u6210\u529F\u5220\u9664 [{0}]
\u5386\u53F2\u9879
+view_group_resConfig_table_failFetch =
\u83B7\u53D6\u8D44\u6E90\u7EC4\u5386\u53F2\u914D\u7F6E\u5931\u8D25
+view_group_resConfig_table_msg1 =
\u67E5\u770B\u6BCF\u4E2A\u5355\u72EC\u8D44\u6E90\u7684\u6210\u5458\u5386\u53F2\u72B6\u6001
+view_group_resConfig_table_statusDetails = \u8BE6\u7EC6\u72B6\u6001
+view_group_resConfig_table_statusFailure = \u7EC4\u914D\u7F6E\u4FEE\u6539\u5931\u8D25
+view_group_resConfig_table_statusInprogress =
\u6B64\u7EC4\u914D\u7F6E\u7684\u4FEE\u6539\u6B63\u5728\u8FDB\u884C\u4E2D
+view_group_resConfig_table_statusNochange =
\u6CA1\u6709\u5BF9\u6B64\u7EC4\u914D\u7F6E\u505A\u4EFB\u4F55\u4FEE\u6539
+view_group_resConfig_table_statusSuccess = \u6210\u529F\u4FEE\u6539\u7EC4\u914D\u7F6E
+view_group_resConfig_table_title = \u5386\u53F2\u8D44\u6E90\u7EC4\u914D\u7F6E
+view_group_resConfig_table_viewMemberHistory = \u67E5\u770B\u5386\u53F2\u6210\u5458
+view_group_resConfig_table_viewSettings = \u67E5\u770B\u8BBE\u7F6E
+view_group_resConfig_view_groupProperties = \u7EC4\u5C5E\u6027
+view_group_resConfig_view_noperm =
\u60A8\u6CA1\u6709\u6743\u9650\u67E5\u770B\u8D44\u6E90\u914D\u7F6E\u8BBE\u7F6E
+view_group_summary_compatible = \u517C\u5BB9\u7684
+view_group_summary_descUpdateFailure =
\u4FEE\u6539ID\u4E3A[{0}]\u7684\u8D44\u6E90\u7EC4\u63CF\u8FF0\u4FE1\u606F\u5931\u8D25
+view_group_summary_descUpdateSuccessful =
\u6210\u529F\u4FEE\u6539\u6B64\u8D44\u6E90\u7EC4\u7684\u63CF\u8FF0
+view_group_summary_dynamic = \u52A8\u6001
+view_group_summary_dynamicNote =
\u52A8\u6001\u7EC4\u7684\u540D\u79F0\u548C\u63CF\u8FF0\u662F\u7BA1\u7406\u5C5E\u6027,\u6240\u4EE5\u4E0D\u80FD\u4FEE\u6539
+view_group_summary_groupDefinition = \u7EC4\u5B9A\u4E49
+view_group_summary_memberCount = \u6210\u5458\u6570
+view_group_summary_memberType = \u6210\u5458\u7C7B\u578B
+view_group_summary_mixed = \u6DF7\u5408
+view_group_summary_nameUpdateFailure = Failed to change the name of the resource group
with ID [{0}] - could not change from [{1}] to [{2}]
+view_group_summary_nameUpdateSuccessful = You have changed the name of the resource group
with ID [{0}] from [{1}] to [{2}]
+view_group_summary_recursive = \u9012\u5F52
+view_helpTop_description =
\u8BE5\u90E8\u5206\u5185\u5BB9\u63D0\u4F9B\u4E86\u4EA7\u54C1\u6587\u6863, \u6559\u7A0B,
\u7248\u672C\u53F7\u548C\u5176\u4ED6\u6709\u7528\u7684\u4FE1\u606F.
+view_help_section_product = \u4EA7\u54C1\u5E2E\u52A9
+view_help_section_product_about = \u5173\u4E8E\u4EA7\u54C1\u5E2E\u52A9
+view_inventory_adq = Discovery Queue
+view_inventory_allGroups = \u6240\u6709\u7EC4
+view_inventory_allResources = \u6240\u6709\u8D44\u6E90
+view_inventory_collectionInterval = \u641C\u96C6\u95F4\u9694
+view_inventory_dynagroupDefs = \u52A8\u6001\u7EC4\u5B9A\u4E49
+view_inventory_eventDetails_loadFailed =
\u52A0\u8F7D\u4E8B\u4EF6\u8BE6\u60C5\u5931\u8D25
+view_inventory_eventHistory_deleteFailed = Failed to deleted selected events for [{0}]
+view_inventory_eventHistory_deleteSuccessful = You have successfully deleted [{0}] events
for [{1}]
+view_inventory_eventHistory_details = \u8BE6\u60C5
+view_inventory_eventHistory_detailsFilter = \u8BE6\u60C5\u8FC7\u6EE4
+view_inventory_eventHistory_groupEventHistory = \u7EC4\u5386\u53F2\u4E8B\u4EF6
+view_inventory_eventHistory_purgeFailed =
\u4E3A[{0}]\u79FB\u9664\u4E8B\u4EF6\u5931\u8D25
+view_inventory_eventHistory_purgeSuccessful =
\u6210\u529F\u5220\u9664[{0}]\u4E2A\u4E8B\u4EF6\u4E3A[{1}]
+view_inventory_eventHistory_resourceEventHistory = \u8D44\u6E90\u5386\u53F2\u4E8B\u4EF6
+view_inventory_eventHistory_severity = \u4E25\u91CD\u7EA7\u522B
+view_inventory_eventHistory_severityFilter = \u4E25\u91CD\u7EA7\u8FC7\u6EE4
+view_inventory_eventHistory_sourceFilter = Source\u8FC7\u6EE4
+view_inventory_eventHistory_sourceLocation = Source\u4F4D\u7F6E
+view_inventory_eventHistory_timestamp = \u65F6\u95F4\u6233
+view_inventory_groups = \u7EC4
+view_inventory_groups_children = \u5B50\u7EC4
+view_inventory_groups_deleteFailed =
\u5220\u9664\u6307\u5B9A\u7684\u8D44\u6E90\u7EC4\u5931\u8D25
+view_inventory_groups_deleteSuccessful =
\u6210\u529F\u7684\u5220\u9664\u6307\u5B9A\u7684\u8D44\u6E90\u7EC4
+view_inventory_groups_descendants = \u540E\u4EE3\u7EC4
+view_inventory_groups_loadFailed =
\u52A0\u8F7D\u7EC4\u7EC4\u5408\u6570\u636E\u5931\u8D25
+view_inventory_groups_resourceGroups = \u8D44\u6E90\u7EC4
+view_inventory_mixed = \u6DF7\u5408
+view_inventory_platforms = \u5E73\u53F0
+view_inventory_problemGroups = \u95EE\u9898\u7EC4
+view_inventory_resource_loadFailed = id\u4E3A
[{0}]\u7684\u8D44\u6E90\u4E0D\u5B58\u5728\u6216\u8005\u4E0D\u53EF\u8FBE
+view_inventory_resources_deleteConfirm =
\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684\u8D44\u6E90\uFF1F
+view_inventory_resources_deleteFailed =
\u5220\u9664\u6307\u5B9A\u7684\u8D44\u6E90\u5931\u8D25
+view_inventory_resources_deleteSuccessful =
\u6210\u529F\u7684\u5220\u9664\u6307\u5B9A\u7684\u8D44\u6E90
+view_inventory_resources_loadFailed =
\u52A0\u8F7D\u8D44\u6E90\u7EC4\u5408\u6570\u636E\u5931\u8D25
+view_inventory_resources_title = Resources
+view_inventory_resources_title_children = \u5B50\u8D44\u6E90
+view_inventory_resources_title_members = \u6210\u5458\u8D44\u6E90
+view_inventory_resources_uninventoryConfirm =
\u786E\u5B9A\u628A\u9009\u4E2D\u7684\u8D44\u6E90\u4ECE\u6E05\u5355\u4E2D\u5220\u9664?
\u6CE8\u610F\uFF1A\u5982\u679C\u67D0\u4E2A\u9009\u4E2D\u7684\u8D44\u6E90\u4F9D\u7136\u5B58\u5728,
\u5219\u7CFB\u7EDF\u4F1A\u5728\u6B64\u8D44\u6E90\u7684\u5BA2\u6237\u7AEF\u7A0B\u5E8F\u4E0B\u6B21\u63A2\u7D22\u626B\u63CF\u65F6\u91CD\u65B0\u52A0\u8F7D\u6B64\u8D44\u6E90.
+view_inventory_resources_uninventoryFailed =
\u4ECE\u6E05\u5355\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u8D44\u6E90\u5931\u8D25
+view_inventory_resources_uninventorySuccessful =
\u6210\u529F\u4ECE\u6E05\u5355\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u8D44\u6E90
+view_inventory_sectionHelp =
\u6B64\u6A21\u5757\u53EF\u4EE5\u67E5\u770B\u548C\u7BA1\u7406\u65B0\u53D1\u73B0\u7684\u8D44\u6E90,\u5206\u7C7B\u7684\u8D44\u6E90\u548C\u7EC4.
+view_inventory_servers = \u670D\u52A1\u5668
+view_inventory_services = \u670D\u52A1
+view_inventory_summary_agent_error1 =
\u67E5\u627E\u5BA2\u6237\u7AEF\u7BA1\u7406\u7684\u8D44\u6E90id\u5931\u8D25
+view_inventory_summary_agent_error2 =
\u5BA2\u6237\u7AEF\u7BA1\u7406\u7684\u8D44\u6E90ping\u4E0D\u901A
+view_inventory_summary_agent_error3 =
\u6CA1\u6709\u6743\u9650\u67E5\u770B\u6B64\u5BA2\u6237\u7AEF\u7684\u8BE6\u7EC6\u4FE1\u606F.
+view_inventory_summary_agent_fullEnpoint = Full Endpoint
+view_inventory_summary_agent_fullEnpoint_err1 = !No remote endpoint associated with this
resource!
+view_inventory_summary_agent_last_title =
\u6700\u540E\u63A5\u6536\u5230\u7684\u53EF\u7528\u4FE1\u606F\u62A5\u544A
+view_inventory_summary_agent_status_title = \u5BA2\u6237\u7AEF\u901A\u4FE1\u72B6\u6001
+view_inventory_summary_agent_title = \u5BA2\u6237\u7AEF\u7BA1\u7406\u6B64\u8D44\u6E90
+view_inventory_unavailableServers = \u4E0D\u53EF\u7528\u7684\u670D\u52A1
+view_leftNav_unknownPage = \u6A21\u5757[{1}]\u4E0B\u672A\u77E5\u7684\u9875\u9762[{0}] -
\u94FE\u63A5\u65E0\u6548.
+view_login_invalidEmail = \u65E0\u6548\u7684\u90AE\u7BB1\u5730\u5740
+view_login_login = \u767B\u5F55
+view_login_logout = \u6CE8\u9500
+view_login_noBackend = \u540E\u7AEF\u6570\u636E\u4E0D\u53EF\u8FBE.
+view_login_noLdap = \u63D0\u793A:
\u83B7\u53D6\u53EF\u9009\u7684ldap\u4FE1\u606F\u5931\u8D25.
\u9700\u8981\u624B\u5DE5\u8F93\u5165.
+view_login_noUser = \u7528\u6237\u540D\u6216\u8005\u5BC6\u7801\u4E0D\u5339\u914D.
+view_login_prompt = \u8BF7\u767B\u5F55
+view_login_registerLater = (\u53D6\u6D88 - \u7A0D\u540E\u5B8C\u6210\u6CE8\u518C.)
+view_login_registerLdapSuccess = \u6210\u529F\u6CE8\u518C\u65B0\u7684LDAP\u7528\u6237.
+view_login_registerUser = \u7528\u6237\u6CE8\u518C
+view_login_welcome = \u6B22\u8FCE
+view_login_welcomeMsg = \u6B22\u8FCE\u6765\u5230 RHQ! <br/><br/>
\u8F93\u5165\u6216\u8005\u4FEE\u6539\u4E0B\u9762\u7684\u4FE1\u606F\uFF0C\u4EE5\u5B8C\u6210\u6CE8\u518C<br/>
\u70B9\u51FB"OK",
\u5C31\u53EF\u4EE5\u767B\u5F55\u7CFB\u7EDF.<br/><br/>
+view_measureRange_last = \u65F6\u95F4\u8303\u56F4 - \u5148\u524D\u7684
+view_measureRange_simple = \u4E00\u822C...
+view_measureRange_start = \u65F6\u95F4\u8303\u56F4 - \u8D77\u59CB
+view_measureTable_chartMetricValues = Chart Selected Metrics
+view_measureTable_getLive = Get Live Value
+view_measureTable_getLive_failure = Cannot get live values for those metrics. Make sure
the agent is running and the managed resource is up.
+view_measureTable_live_title = \u52A8\u6001\u6570\u636E
+view_measure_nan = --\u65E0\u6570\u636E--
+view_measurementOob_title = Suspect Metrics
+view_menuBar_logout = \u6CE8\u9500
+view_messageCenter_clearAllMessages = \u6E05\u9664\u6240\u6709\u7684\u6D88\u606F
+view_messageCenter_lastNMessages = \u6700\u540E {0} \u6761\u4FE1\u606F
+view_messageCenter_maxMessages = \u6700\u5927\u6D88\u606F\u91CF
+view_messageCenter_messageBarShowDetails = \u663E\u793A\u5185\u5BB9
+view_messageCenter_messageDetail = \u8BE6\u7EC6\u5185\u5BB9
+view_messageCenter_messageSeverity = \u91CD\u8981\u7EA7\u522B
+view_messageCenter_messageTime = \u65F6\u95F4
+view_messageCenter_messageTitle = \u6D88\u606F\u4E2D\u5FC3
+view_messageCenter_noRecentMessages = \u65E0\u8FD1\u671F\u6D88\u606F
+view_messageCenter_stackTraceFollows = --- \u540E\u9762\u662F\u5F02\u5E38\u4FE1\u606F
---
+view_metric_traits = Traits
+view_metric_viewTraitHistory = Value History for Trait [{0}]
+view_operationHistoryDetails_dateCompleted = Date Completed
+view_operationHistoryDetails_dateSubmitted = Date Submitted
+view_operationHistoryDetails_error_fetchFailure =
\u52A0\u8F7D\u64CD\u4F5C\u5386\u53F2\u5931\u8D25.
+view_operationHistoryDetails_noResults =
\u6B64\u64CD\u4F5C\u6CA1\u6709\u4EFB\u4F55\u8FD4\u56DE.
+view_operationHistoryDetails_operation = \u64CD\u4F5C
+view_operationHistoryDetails_parameters = \u53C2\u6570
+view_operationHistoryDetails_requestor = \u8BF7\u6C42
+view_operationHistoryDetails_results = \u7ED3\u679C
+view_operationHistoryDetails_status = \u72B6\u6001
+view_operationHistoryList_button_forceDelete = \u5F3A\u5236\u5220\u9664
+view_operationHistoryList_button_runOperation = \u6267\u884C\u64CD\u4F5C
+view_operationHistoryList_notYetStarted = \u8FD8\u672A\u5F00\u59CB
+view_operationHistoryList_title = \u64CD\u4F5C\u5386\u53F2
+view_operationScheduleDetails_enterParametersBelow =
\u8F93\u5165\u4E0B\u9762\u7684\u53C2\u6570...
+view_operationScheduleDetails_fieldDefault_description =
\u9009\u62E9\u64CD\u4F5C\u67E5\u770B\u63CF\u8FF0.
+view_operationScheduleDetails_fieldDefault_parameters =
\u9009\u62E9\u64CD\u4F5C\u67E5\u770B\u6240\u9700\u7684\u53C2\u6570.
+view_operationScheduleDetails_fieldHelp_description =
\u6B64\u8C03\u5EA6\u64CD\u4F5C\u7684\u53EF\u9009\u63CF\u8FF0 (e.g.
\u6BCF\u591C\u7EF4\u62A4\u5E94\u7528\u670D\u52A1\u91CD\u542F)
+view_operationScheduleDetails_fieldHelp_timeout = \u64CD\u4F5C\u6301\u7EED\u65F6\u95F4 -
\u5982\u679C\u6307\u5B9A,
\u5E76\u4E14\u8D85\u8FC7\u4E86\u6307\u5B9A\u7684\u65F6\u95F4\u64CD\u4F5C\u6CA1\u6709\u5B8C\u6210,
RHQ
\u670D\u52A1\u5224\u5B9A\u6B64\u64CD\u4F5C\u8D85\u65F6\u5E76\u4E14\u6807\u4E3A\u5931\u8D25;
\u63D0\u793A, \u901A\u5E38
\u4E0D\u53EF\u80FD\u7EC8\u6B62\u5DF2\u7ECF\u5F00\u59CB\u8FD0\u884C\u7684\u540E\u53F0\u8D44\u6E90\u7BA1\u7406\u7684\u64CD\u4F5C.
+view_operationScheduleDetails_field_description = \u63CF\u8FF0
+view_operationScheduleDetails_field_parameters = \u53C2\u6570
+view_operationScheduleDetails_field_timeout = \u8D85\u65F6
+view_operationScheduleDetails_noParameters =
\u6B64\u64CD\u4F5C\u4E0D\u9700\u8981\u4EFB\u4F55\u53C2\u6570.
+view_operationScheduleDetails_operationSchedule = \u64CD\u4F5C\u8BA1\u5212
+view_portlet_autodiscovery_setting_platforms = \u5E73\u53F0\u7ED3\u679C\u96C6
+view_portlet_configure_definitionDesc = portlet\u914D\u7F6E\u8BBE\u7F6E\u63CF\u8FF0.
+view_portlet_configure_definitionTitle = Portlet\u914D\u7F6E
+view_portlet_configure_needed = \u70B9\u51FB\u8BBE\u7F6E\u6309\u94AE\u914D\u7F6Eportlet.
+view_portlet_configure_notNeeded = \u6B64 portlet\u65E0\u9700\u914D\u7F6E.
+view_portlet_defaultName_autodiscovery = \u63A2\u7D22\u961F\u5217
+view_portlet_defaultName_favoriteResources = \u5E38\u7528\u8D44\u6E90
+view_portlet_defaultName_groupMetric = \u516C\u7528\u8D44\u6E90\u7EC4\u56FE\u6807
+view_portlet_defaultName_group_alerts = \u7EC4: \u544A\u8B66
+view_portlet_defaultName_group_bundles = \u7EC4: \u7C7B\u53D1\u5E03
+view_portlet_defaultName_group_config_updates = \u7EC4: \u914D\u7F6E\u66F4\u65B0
+view_portlet_defaultName_group_events = \u7EC4: \u4E8B\u4EF6\u7EDF\u8BA1
+view_portlet_defaultName_group_metrics = \u7EC4: Metrics
+view_portlet_defaultName_group_oobs = \u7EC4: OOB\u72B6\u6001
+view_portlet_defaultName_group_operations = \u7EC4: \u64CD\u4F5C\u96C6
+view_portlet_defaultName_group_pkg_hisory = \u7EC4: \u5386\u53F2\u6570\u636E\u5305
+view_portlet_defaultName_inventorySummary = \u6E05\u5355\u6982\u8981
+view_portlet_defaultName_mashup = Mashup
+view_portlet_defaultName_message = \u4FE1\u606F
+view_portlet_defaultName_operations = \u8FD1\u671F\u64CD\u4F5C
+view_portlet_defaultName_platformSummary = \u5E73\u53F0\u5229\u7528\u7387
+view_portlet_defaultName_problemResources =
\u544A\u8B66\u6216\u8005\u4E0D\u53EF\u7528\u7684\u8D44\u6E90
+view_portlet_defaultName_recentAlerts = \u65B0\u544A\u8B66
+view_portlet_defaultName_recentlyAddedResources = \u65B0\u6DFB\u52A0\u8D44\u6E90
+view_portlet_defaultName_resourceMetric = \u516C\u7528\u8D44\u6E90\u56FE\u6807
+view_portlet_defaultName_resource_alerts = \u8D44\u6E90: \u544A\u8B66
+view_portlet_defaultName_resource_bundles = \u8D44\u6E90: \u7C7B\u53D1\u5E03
+view_portlet_defaultName_resource_config_updates = \u8D44\u6E90:
\u914D\u7F6E\u66F4\u65B0
+view_portlet_defaultName_resource_events = \u8D44\u6E90: \u4E8B\u4EF6\u7EDF\u8BA1
+view_portlet_defaultName_resource_metrics = \u8D44\u6E90: \u5C5E\u6027
+view_portlet_defaultName_resource_oobs = \u8D44\u6E90: OOB Metrics
+view_portlet_defaultName_resource_operations = \u8D44\u6E90: \u64CD\u4F5C
+view_portlet_defaultName_resource_pkg_hisory = \u8D44\u6E90:
\u5386\u53F2\u6570\u636E\u5305
+view_portlet_defaultName_tagCloud = \u6807\u7B7E\u4E91
+view_portlet_factory_invalidPortlet =
\u8FD9\u662F\u4E00\u4E2A\u9648\u65E7\u5E76\u4E14\u5DF2\u7ECF\u5931\u6548\u7684portlet.
\u8BF7\u5220\u9664.
+view_portlet_graph_configure_metricDefinition_graph = The metric definition id to graph
+view_portlet_graph_configure_resource_graph = The resource to graph
+view_portlet_help_autodiscovery = \u6B64portlet\u5141\u8BB8\u5BFC\u5165
\u6216\u8005\u5931\u6548\u65B0\u53D1\u73B0\u7684\u8D44\u6E90.
\u5BFC\u5165\u7684\u8D44\u6E90\u5C06\u4F1A\u6DFB\u52A0\u81F3\u76D1\u63A7\u548C\u7BA1\u7406\u6E05\u5355\u4E2D\uFF0C\u5931\u6548\u7684\u8D44\u6E90\u5C06\u4E0D\u4F1A\u88AB\u5BFC\u5165\u5E76\u4E14
\u662F\u4E0D\u53EF\u89C1\u7684\uFF0C\u9664\u975E\u660E\u786E\u6307\u5B9A\u4E0D\u53EF\u5931\u6548.
+view_portlet_help_bundle_deps =
\u6B64portlet\u5C55\u793A\u57FA\u4E8E\u6807\u51C6\u914D\u7F6E\u663E\u793A\u7684\u76F8\u5173\u53D1\u5E03\u7C7B.
+view_portlet_help_config_updates =
\u6B64portlet\u5C55\u793A\u4E0E\u914D\u7F6E\u8BBE\u7F6E\u517C\u5BB9\u7684\u6700\u65B0\u7684\u914D\u7F6E\u4FEE\u6539.
+view_portlet_help_eventcounts = This portlet displays Event counts consistent with
display criteria configured.
+view_portlet_help_favoriteResources = This portlet displays the current user''s
favorite resources.
+view_portlet_help_graph = This portlet displays the resource metric graph.
+view_portlet_help_inventorySummary = This portlet displays a short summary of the current
user''s viewable inventory and metric collection rate.
+view_portlet_help_mashup = This portlet displays the returned content of a remote HTTP
request (via an iframe).
+view_portlet_help_message = This portlet displays a static HTML message. The
<i>message</i> property must be configured.
+view_portlet_help_metrics = This portlet graphs relevant recent metric data based on
display criteria configured.
+view_portlet_help_none = \u8FD9\u4E2Aportlet\u6CA1\u6709\u5E2E\u52A9.
+view_portlet_help_oobs = This portlet displays OOB(Out of Bound) metric conditions.
+view_portlet_help_operations = This portlet displays the most recently executed
operations for the current user''s inventory.
+view_portlet_help_operations_criteria = This portlet displays Operations consistent with
display criteria configured.
+view_portlet_help_pkg_history = This portlet shows relevant package history based on
display criteria configured.
+view_portlet_help_platformSummary = This portlet displays utilization data (such as
current CPU and memory usage) for platform resources that are accessible by the current
user.
+view_portlet_help_problemResources = This portlet displays the current user''s
alerted or unavailable resources.
+view_portlet_help_recentAlerts = This portlet displays alerts recently fired on the
current user''s viewable inventory.
+view_portlet_help_recentlyAdded = This portlet displays resources that have recently been
imported into inventory.
+view_portlet_help_scheduledOperations = This portlet displays the next scheduled
operations for the current user''s inventory.
+view_portlet_help_tagCloud = This portlet displays the relative tag counts for the
current user''s inventory.
+view_portlet_inventory_error1 = Failed to retrieve inventory summary
+view_portlet_inventory_tooltip_collapse = Click to hide details for this resource.
+view_portlet_inventory_tooltip_expand = Click to show more details for this resource.
+view_portlet_message_title = \u663E\u793A\u4FE1\u606F.
+view_portlet_operations_config_completed = \u5DF2\u5B8C\u6210\u7684\u64CD\u4F5C
+view_portlet_operations_config_completed_enable =
\u662F\u5426\u5BF9\u7EDF\u8BA1\u8868\u76D8\u7684\u5DF2\u5B8C\u6210\u64CD\u4F5C\u7684\u7ED3\u679C\u5206\u7EC4.
+view_portlet_operations_config_completed_maximum =
\u80FD\u5C55\u793A\u7684\u5DF2\u5B8C\u6210\u64CD\u4F5C\u7684\u6700\u5927\u6570.
+view_portlet_operations_config_scheduled_enable =
\u662F\u5426\u5BF9\u7EDF\u8BA1\u8868\u76D8\u7684\u8C03\u5EA6\u4E2D\u64CD\u4F5C\u7684\u7ED3\u679C\u5206\u7EC4.
+view_portlet_operations_config_scheduled_maximum =
\u80FD\u5C55\u793A\u7684\u8C03\u5EA6\u64CD\u4F5C\u7684\u6700\u5927\u6570.
+view_portlet_operations_config_show_last = show last
+view_portlet_operations_config_show_next = show next
+view_portlet_operations_disabled =
(\u76EE\u524D\u7ED3\u679C\u96C6\u7981\u7528.\u4FEE\u6539\u8BBE\u7F6E\u4F7F\u5176\u751F\u6548.
+view_portlet_platform_platform_error_1 =
\u52A0\u8F7D\u5E73\u53F0\u6307\u6807\u5931\u8D25
+view_portlet_platform_type_error_1 = \u65E0\u6CD5\u52A0\u8F7D\u7C7B\u578B\u6570\u636E
+view_portlet_problemResources_config_display_maximum =
\u80FD\u5C55\u793A\u7684\u95EE\u9898\u8D44\u6E90\u7684\u6700\u5927\u6570.
+view_portlet_problemResources_config_display_range =
\u663E\u793A\u6570\u5C0F\u65F6\u5185\u6062\u590D\u6B63\u5E38\u7684\u95EE\u9898\u8D44\u6E90.
+view_portlet_problemResources_config_display_range2 = \u4ECE {0} \u5230 {1}
+view_portlet_problemResources_maxDisplaySetting = \u8D44\u6E90\u6700\u5927\u6570.
+view_portlet_recentAlerts_config_members = \u9009\u62E9\u6210\u5458
+view_portlet_recentAlerts_config_priority_label = \u4E4B\u524D\u7684\u544A\u8B66,
+view_portlet_recentAlerts_config_when = \u5728\u8FC7\u53BB
+view_portlet_recentAlerts_fail_msg =
\u52A0\u8F7D\u544A\u8B66\u8FC7\u6EE4\u7684\u6307\u5B9A\u8D44\u6E90\u5931\u8D25.
+view_portlet_recentlyAdded_error1 =
\u52A0\u8F7D\u6700\u65B0\u6DFB\u52A0\u7684\u8D44\u6E90\u5931\u8D25
+view_portlet_recentlyAdded_setting_addedPlatforms = \u65B0\u6DFB\u52A0\u5E73\u53F0
+view_portlet_results_empty =
\u4F7F\u7528\u6307\u5B9A\u7684\u6807\u51C6\u65E0\u7ED3\u679C\u8FD4\u56DE.
+view_remoteAgentInstall_agentStatus = \u4EE3\u7406\u72B6\u6001
+view_remoteAgentInstall_agentStatusDefault =
-\u5355\u51FB\u66F4\u65B0\u72B6\u6001\u6309\u94AE-
+view_remoteAgentInstall_buttonFindAgent = \u67E5\u627E\u4EE3\u7406
+view_remoteAgentInstall_connInfo = \u8FDE\u63A5\u4FE1\u606F
+view_remoteAgentInstall_error_1 =
\u67E5\u627E\u4EE3\u7406\u5B89\u88C5\u8DEF\u5F84\u65F6\u53D1\u751F\u9519\u8BEF
+view_remoteAgentInstall_error_2 =
\u65E0\u6CD5\u5728\u901A\u5E38\u4F4D\u7F6E\u53D1\u73B0\u5B89\u88C5\u7684\u4EE3\u7406
+view_remoteAgentInstall_error_3 =
\u65E0\u6CD5\u770B\u5230\u5728[{0}]\u4E2D\u5B89\u88C5\u4E86\u4EE3\u7406
+view_remoteAgentInstall_error_4 = \u5B89\u88C5\u4EE3\u7406\u5931\u8D25
+view_remoteAgentInstall_error_5 = \u542F\u52A8\u4EE3\u7406\u5931\u8D25
+view_remoteAgentInstall_error_6 = \u505C\u6B62\u4EE3\u7406\u5931\u8D25
+view_remoteAgentInstall_installAgent = \u5B89\u88C5\u4EE3\u7406
+view_remoteAgentInstall_installInfo = \u4EE3\u7406\u5B89\u88C5\u4FE1\u606F
+view_remoteAgentInstall_installPath = \u4EE3\u7406\u5B89\u88C5\u8DEF\u5F84
+view_remoteAgentInstall_owner = \u6240\u6709\u8005
+view_remoteAgentInstall_promptHost = The host where the agent is or will be installed
+view_remoteAgentInstall_promptInstallPath = Where the agent is or will be installed. If
you aren''t sure where an agent is installed, enter a parent directory and click
the ''Find Agent'' button to scan that directory and below. If you enter
an empty path, common locations are searched on the host for an agent install.
+view_remoteAgentInstall_promptPassword = The credentials that are used to authenticate
the user on the host via SSH
+view_remoteAgentInstall_promptPort = The port the SSH server is listening to. If not
specified, the default is 22
+view_remoteAgentInstall_promptUser = The name of the user whose credentials are passed to
the host via SSH
+view_remoteAgentInstall_result = \u7ED3\u679C
+view_remoteAgentInstall_resultCode = ResultCode
+view_remoteAgentInstall_startAgent = \u542F\u52A8\u4EE3\u7406
+view_remoteAgentInstall_startAgentResults = \u4EE3\u7406\u542F\u52A8\u7ED3\u679C: [{0}]
+view_remoteAgentInstall_step = Step
+view_remoteAgentInstall_stopAgent = \u505C\u6B62\u4EE3\u7406
+view_remoteAgentInstall_stopAgentResults = \u4EE3\u7406\u505C\u6B62\u7ED3\u679C: [{0}]
+view_remoteAgentInstall_success = \u4EE3\u7406\u5B89\u88C5\u5B8C\u6210
+view_remoteAgentInstall_updateStatus = \u66F4\u65B0\u72B6\u6001
+view_reportsTop_description =
\u8BE5\u90E8\u5206\u5185\u5BB9\u63D0\u4F9B\u4E86\u5168\u5C40\u62A5\u8868\u7684\u5165\u53E3.
+view_reportsTop_title = \u62A5\u8868
+view_reports_alertDefinitions = \u544A\u8B66\u5B9A\u4E49
+view_reports_alertDefinitions_parentHover =
\u70B9\u51FB\u5230\u7236\u7EA7\u544A\u8B66\u83DC\u5355
+view_reports_alertDefinitions_resTypeLoadError =
\u65E0\u6CD5\u83B7\u53D6\u8D44\u6E90\u6A21\u677F\u7C7B\u578B -
\u65E0\u6CD5\u67E5\u770B\u544A\u8B66\u6A21\u677F.
+view_reports_inventorySummary_failFetch =
\u83B7\u53D6\u7EDF\u8BA1\u6E05\u5355\u5931\u8D25
+view_reports_platforms = \u5E73\u53F0\u4F7F\u7528\u7387\u62A5\u8868
+view_reports_subsystems = \u5B50\u7CFB\u7EDF\u62A5\u8868
+view_resourceResourceGroupList_error_fetchFailure =
\u83B7\u53D6\u8D44\u6E90\u7EC4\u4FE1\u606F\u5931\u8D25.
+view_resourceResourceGroupList_error_updateFailure =
\u66F4\u65B0\u6307\u5B9A\u7684\u8D44\u6E90\u7EC4\u5931\u8D25.
+view_resourceResourceGroupList_message_updateSuccess =
[{0}]\u7684\u7EC4\u6210\u5458\u5DF2\u7ECF\u66F4\u65B0.
+view_resource_inventory_activity_changed_by = Changed by
+view_resource_inventory_activity_criteria_no_recent_events = No event counts based off
display criteria.
+view_resource_inventory_activity_no_recent_alerts = \u65E0\u6700\u65B0\u544A\u8B66
+view_resource_inventory_activity_no_recent_bundle_deploy = No recent bundle deployments
+view_resource_inventory_activity_no_recent_config_history = No configuration change
history
+view_resource_inventory_activity_no_recent_events = No events in the last 24 hours
+view_resource_inventory_activity_no_recent_metrics = This resource has no recent metrics
+view_resource_inventory_activity_no_recent_oob = No OOB conditions found
+view_resource_inventory_activity_no_recent_operations =
\u6CA1\u6709\u6700\u65B0\u64CD\u4F5C\u5386\u53F2
+view_resource_inventory_activity_no_recent_pkg_history =
\u6CA1\u6709\u6700\u65B0\u5305\u5386\u53F2
+view_resource_inventory_childhistory_createdChild = Created Child
+view_resource_inventory_childhistory_deletedChild = Deleted Child
+view_resource_inventory_childhistory_filterTitle = Past N Days
+view_resource_inventory_childhistory_status_invalidArtifact = Invalid Artifact
+view_resource_inventory_childhistory_status_invalidConfig = \u65E0\u6548\u914D\u7F6E
+view_resource_monitor_availability_loadFailed =
\u52A0\u8F7D\u53EF\u7528\u6027\u5386\u53F2\u8BB0\u5F55\u5931\u8D25
+view_resource_monitor_calltime_average = Average
+view_resource_monitor_calltime_count = Count
+view_resource_monitor_calltime_destination = Call Destination
+view_resource_monitor_calltime_editFailed = Call time data can not be edited
+view_resource_monitor_calltime_loadFailed = Could not load call time data
+view_resource_monitor_calltime_lookupFailed = Could not load resource for call time
+view_resource_monitor_calltime_maximum = Maximum
+view_resource_monitor_calltime_minimum = Minimum
+view_resource_monitor_calltime_title = Call Time Data
+view_resource_monitor_calltime_total = Total
+view_resource_monitor_detailed_graph_label = Detailed Graph
+view_resource_monitor_graph_instructions = Point your mouse to a data point on the chart
+view_resource_monitor_graph_live_tooltip = Click for a live graph of current values
+view_resource_monitor_graphs_loadFailed =
\u52A0\u8F7D\u7ED8\u56FE\u6570\u636E\u5931\u8D25
+view_resource_monitor_graphs_lookupFailed = Failed to find resource for graph
+view_resource_monitor_graphs_noneAvailable = No graphs available
+view_resource_monitor_schedules_title = Resource Metric Collection Schedules
+view_resource_monitor_table_alerts = Alerts
+view_resource_monitor_table_avg = Average
+view_resource_monitor_table_last = Last
+view_resource_monitor_table_max = Maximum
+view_resource_monitor_table_min = Minimum
+view_resource_title_component_errors_tooltip = Shows managed component errors. Click for
details
+view_resource_title_tagUpdateFailed = Failed to update resource tags
+view_searchBar_defaultPattern = \u5B9A\u4E49\u81EA\u5DF1\u7684\u6837\u5F0F
+view_searchBar_error_selectSavedSearch =
''\u9009\u62E9\u4FDD\u5B58\u7684\u641C\u7D22\u65F6\u51FA\u9519''
+view_searchBar_query = \u67E5\u8BE2
+view_searchBar_resourceGroups = \u8D44\u6E90\u7EC4
+view_searchBar_resources = \u8D44\u6E90
+view_searchBar_welcomeMessage = \u641C\u7D22\u4E86{0}\u79D2
+view_searchGUI_loginStatus =
\u65E0\u6CD5\u786E\u5B9A\u767B\u5F55\u72B6\u6001\uFF0C\u8BF7\u68C0\u67E5\u670D\u52A1
+view_selector_assigned = \u6307\u5B9A\u7684 {0}
+view_selector_available = \u53EF\u7528\u7684 {0}
+view_subTab_error_disabled = \u65E0\u6CD5\u9009\u4E2D\u7981\u7528\u7684\u5B50\u8868
[{0}].
+view_summaryDashboard_resetConfirm =
\u6062\u590D\u5230\u9ED8\u8BA4\u7684\u7EDF\u8BA1\u56FE\u8868
(\u653E\u5F03\u4E4B\u524D\u4FDD\u5B58\u7684\u4FE1\u606F)?
+view_summaryOverviewForm_error_descriptionChangeFailure = Failed to change description of
Resource with id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_error_locationChangeFailure = Failed to change location of
Resource with id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_error_nameChangeFailure = Failed to change name of Resource with
id {0} from [{1}] to [{2}].
+view_summaryOverviewForm_error_traitsLoadFailure = \u52A0\u8F7D
{0}\u7684\u5C5E\u6027\u4FE1\u606F\u5931\u8D25.
+view_summaryOverviewForm_field_description = \u63CF\u8FF0
+view_summaryOverviewForm_field_location = \u4F4D\u7F6E
+view_summaryOverviewForm_field_name = \u5B57\u6BB5\u540D
+view_summaryOverviewForm_field_type = \u7C7B\u578B
+view_summaryOverviewForm_field_version = \u7248\u672C\u53F7
+view_summaryOverviewForm_header_summary = \u7EDF\u8BA1
+view_summaryOverviewForm_label_plugin = \u63D2\u4EF6\u6807\u7B7E:
+view_summaryOverviewForm_label_type = \u6807\u7B7E\u7C7B\u578B:
+view_summaryOverviewForm_message_descriptionChangeSuccess = Description of Resource with
id {0} was changed from [{1}] to [{2}].
+view_summaryOverviewForm_message_locationChangeSuccess = Location of Resource with id {0}
was changed from [{1}] to [{2}].
+view_summaryOverviewForm_message_nameChangeSuccess = Name of Resource with id {0} was
changed from [{1}] to [{2}].
+view_summaryOverview_header_detectedErrors = \u5DF2\u68C0\u6D4B\u5230\u7684\u9519\u8BEF
+view_summaryOverview_title_errorDetailsWindow = \u9519\u8BEF\u8BE6\u7EC6
+view_summaryOverview_tooltip_detectedErrors =
\u70B9\u51FB\u5BF9\u5E94\u7684\u884C\u67E5\u770B\u9519\u8BEF\u4FE1\u606F.
+view_tableSection_backButton = \u8FD4\u56DE\u5217\u8868
+view_tableSection_error_badId = \u65E0\u6CD5\u5C55\u793A
[{0}]\u7684\u8BE6\u7EC6\u4FE1\u606F. \u65E0\u6548\u7684 'id': [{1}].
\u8BF7\u62A5\u544A\u6B64BUG
+view_tableSection_error_noId = \u8868\u5355 [{0}]
\u8BB0\u5F55\u7F3A\u5C11'id'\u5C5E\u6027 - \u8BF7\u62A5\u544A\u6B64BUG.
+view_table_drawFail = \u751F\u6210\u8868\u683C[{0}]\u5931\u8D25.
+view_table_matchingRows = \u5339\u914D\u7684\u884C: {0} (\u9009\u4E2D: {1})
+view_table_totalRows = \u6240\u6709\u7684\u884C: {0} (\u9009\u4E2D: {1})
+view_tabs_common_activity = \u6D3B\u52A8
+view_tabs_common_agent = \u4EE3\u7406
+view_tabs_common_alerts = \u544A\u8B66
+view_tabs_common_availability = \u53EF\u7528\u6027
+view_tabs_common_calltime = Calltime
+view_tabs_common_child_history = \u5B50\u5386\u53F2
+view_tabs_common_child_resources = \u5B50\u8D44\u6E90
+view_tabs_common_configuration = \u914D\u7F6E
+view_tabs_common_connectionSettings = \u8FDE\u63A5\u8BBE\u7F6E
+view_tabs_common_connectionSettingsHistory = \u5386\u53F2\u8FDE\u63A5\u8BBE\u7F6E
+view_tabs_common_content = \u5185\u5BB9
+view_tabs_common_current = \u5F53\u524D
+view_tabs_common_dashboard = \u7EDF\u8BA1\u8868\u76D8
+view_tabs_common_definitions = \u5B9A\u4E49
+view_tabs_common_deployed = \u5DF2\u53D1\u5E03
+view_tabs_common_events = \u4E8B\u4EF6
+view_tabs_common_graphs = Graphs
+view_tabs_common_group_members = \u7EC4\u5458
+view_tabs_common_group_membership = \u7EC4\u6210\u5458\u5173\u7CFB
+view_tabs_common_groups = Groups
+view_tabs_common_history = \u5386\u53F2
+view_tabs_common_inventory = \u6E05\u5355
+view_tabs_common_members = Members
+view_tabs_common_monitoring = \u76D1\u63A7
+view_tabs_common_new = new
+view_tabs_common_operations = \u64CD\u4F5C
+view_tabs_common_overview = \u6982\u89C8
+view_tabs_common_schedule = \u8C03\u5EA6
+view_tabs_common_schedules = Schedules
+view_tabs_common_subscriptions = \u8FD0\u884C\u673A\u5236
+view_tabs_common_summary = \u6982\u8981
+view_tabs_common_tables = Tables
+view_tabs_common_timeline = \u65F6\u95F4\u8F74
+view_tabs_common_traits = Traits
+view_tabs_invalidSubTab = \u65E0\u6548\u7684\u5B50\u8868: {0}
+view_tabs_invalidTab = \u65E0\u6548\u7684\u8868: {0}
+view_tagCloud_deleteTag = \u5220\u9664\u6807\u7B7E
+view_tagCloud_deleteTagFailure = \u5220\u9664\u6807\u7B7E [{0}] \u5931\u8D25
+view_tagCloud_deleteTagSuccess = \u6210\u529F\u7684\u5220\u9664\u4E86\u6807\u7B7E [{0}]
+view_tagCloud_error_fetchFailure = \u52A0\u8F7D\u6807\u7B7E\u5931\u8D25.
+view_tagCloud_error_tagUsedCount = \u6807\u7B7E\u4F7F\u7528 {0} \u6B21.
+view_tagCloud_title = \u6807\u7B7E\u96C6
+view_taggedResources_title = \u8D44\u6E90
+view_tags_error_1 = \u52A0\u8F7D\u6807\u7B7E\u5931\u8D25
+view_tags_tags = \u6807\u7B7E
+view_tags_tooltip_1 = \u5220\u9664\u6807\u7B7E
+view_tags_tooltip_2 = \u7F16\u8F91\u6807\u7B7E
+view_tags_tooltip_3 = \u8F93\u5165\u6309\u7167\u4EE5\u4E0B\u683C\u5F0F\u7684\u6807\u7B7E:
(namespace:)(semantic=)tagname (e.g. it:env=QA, or owner=John)
+view_testTop_description =
\u8FD9\u90E8\u5206\u9875\u9762\u7528\u4E8E\u6D4B\u8BD5\u5404\u79CDGUI\u7EC4\u4EF6.
+view_testTop_title = \u6D4B\u8BD5
+view_titleBar_common_addedFav = \u6DFB\u52A0 [{0}]\u5230\u5E38\u7528\u83DC\u5355
+view_titleBar_common_addedFavFailure =
\u6DFB\u52A0[{0}]\u5230\u6536\u85CF\u5939\u5931\u8D25
+view_titleBar_common_clickToAddFav = \u6DFB\u52A0\u5230\u6536\u85CF\u5939
+view_titleBar_common_clickToRemoveFav = \u5355\u51FB\u79FB\u51FA\u6536\u85CF\u5939
+view_titleBar_common_loadTagsFailure = \u4E3A[{0}]\u52A0\u8F7D\u6807\u7B7E\u5931\u8D25
+view_titleBar_common_removedFav = \u79FB\u52A8[{0}]\u5230\u5E38\u7528\u83DC\u5355
+view_titleBar_common_removedFavFailure =
\u79FB\u52A8[{0}]\u5230\u5E38\u7528\u83DC\u5355\u5931\u8D25
+view_titleBar_common_updateTagsFailure = \u4E3A[{0}]\u66F4\u65B0\u6807\u7B7E\u5931\u8D25
+view_titleBar_common_updateTagsSuccessful =
[{0}]\u7684\u6807\u7B7E\u5DF2\u7ECF\u66F4\u65B0
+view_titleBar_group_failInfo = Failed to get general info on group [{0}] with ID [{1}]
+view_titleBar_group_summary_collapsedTooltip =
\u70B9\u51FB\u67E5\u770B\u6B64\u7EC4\u7684\u66F4\u591A\u4FE1\u606F
+view_titleBar_group_summary_expandedTooltip =
\u70B9\u51FB\u9690\u85CF\u6B64\u7EC4\u7684\u66F4\u591A\u4FE1\u606F
+view_tree_common_contextMenu_addChartToDashboard =
\u6DFB\u52A0\u56FE\u5230\u7EDF\u8BA1\u8868\u76D8[{0}]
+view_tree_common_contextMenu_editPluginConfiguration =
\u7F16\u8F91[{0}]\u63D2\u4EF6\u914D\u7F6E
+view_tree_common_contextMenu_editResourceConfiguration =
\u7F16\u8F91[{0}]\u8D44\u6E90\u914D\u7F6E
+view_tree_common_contextMenu_groupGraph = Group Metric Graph
+view_tree_common_contextMenu_loadFail_children = Failed to load platform manual add
children
+view_tree_common_contextMenu_loadFail_dashboards =
\u52A0\u8F7D\u7528\u6237\u7EDF\u8BA1\u8868\u76D8\u5931\u8D25
+view_tree_common_contextMenu_loadFail_group = \u52A0\u8F7Dgroup for context
menu\u5931\u8D25
+view_tree_common_contextMenu_loadFailed_dashboard =
\u52A0\u8F7D\u7528\u6237\u7EDF\u8BA1\u8868\u76D8\u5931\u8D25
+view_tree_common_contextMenu_loadFailed_manualAddChildren = \u52A0\u8F7Dplatform manual
add children\u5931\u8D25
+view_tree_common_contextMenu_measurements = Measurements
+view_tree_common_contextMenu_operations = \u64CD\u4F5C
+view_tree_common_contextMenu_operations_loadFailed = Failure to start wizard for running
operations
+view_tree_common_contextMenu_resourceConfiguration = \u8D44\u6E90\u914D\u7F6E
+view_tree_common_contextMenu_resourceGraph = Resource Metric Graph
+view_tree_common_contextMenu_saveChartToDashboardFailure =
\u4FDD\u5B58\u7EDF\u8BA1\u8868\u76D8\u5931\u8D25
+view_tree_common_contextMenu_saveChartToDashboardSuccessful =
\u6210\u529F\u4FDD\u5B58\u7EDF\u8BA1\u8868\u76D8 [{0}]
+view_tree_common_contextMenu_type_name_label = Type: {0}
+view_tree_common_createFailed_autoCluster = Failed to create or update autocluster
backing group
+view_tree_common_loadFailed_children = \u52A0\u8F7D\u5B50\u8282\u70B9\u5931\u8D25
+view_tree_common_loadFailed_create = Failed to create view for this node
+view_tree_common_loadFailed_descendants = Failed to load descendants for tree
+view_tree_common_loadFailed_generic = \u52A0\u8F7D\u6811\u5931\u8D25
+view_tree_common_loadFailed_group = \u52A0\u8F7Did\u4E3A[{0}]\u7684\u7EC4\u5931\u8D25
+view_tree_common_loadFailed_groupTree = \u52A0\u8F7D\u7EC4\u6811\u5931\u8D25
+view_tree_common_loadFailed_node =
\u52A0\u8F7D\u8FD9\u4E2A\u8282\u70B9\u6570\u636E\u5931\u8D25
+view_tree_common_loadFailed_root = \u52A0\u8F7D\u6811\u6839\u8282\u70B9\u5931\u8D25
+view_tree_common_loadFailed_selection = Failed to select this node
+view_tree_common_loadFailed_update = Failed to update view for this node
+view_tree_group_error_updateAutoCluster = Failed to create or update autocluster backing
group. key: [{0}]
+view_type_parentId = \u7236ID
+view_type_resourceTypes = \u8D44\u6E90\u7C7B\u578B
+view_type_typeTreeLoadFailure = \u52A0\u8F7D\u8D44\u6E90\u7C7B\u578B\u6811\u5931\u8D25
+view_upload_alreadyUploaded = \u6587\u4EF6\u5DF2\u7ECF\u4E0A\u4F20
+view_upload_bundleDistFile = \u5206\u7C7B\u6587\u4EF6
+view_upload_error_bundleDistFile = \u4E0A\u4F20\u5206\u7C7B\u6587\u4EF6\u5931\u8D25
+view_upload_error_file = \u4E0A\u4F20\u6587\u4EF6\u51FA\u73B0\u9519\u8BEF
+view_upload_error_fileName = \u4E0A\u4F20\u6587\u4EF6 [{0}]\u51FA\u73B0\u9519\u8BEF
+view_upload_error_fileName_2 = \u4E0A\u4F20\u6587\u4EF6 [{0}]\u51FA\u73B0\u9519\u8BEF,
\u68C0\u67E5\u6587\u4EF6\u8DEF\u5F84.
+view_upload_error_packageVersionFile =
\u4E0A\u4F20\u5305\u7248\u672C\u6587\u4EF6\u51FA\u73B0\u9519\u8BEF
+view_upload_error_results = \u4E0A\u4F20\u6587\u4EF6\u5931\u8D25,
\u65E0\u6CD5\u9884\u6599\u7684\u7ED3\u679C: [{0}]
+view_upload_inProgress = \u65E0\u6CD5\u63D0\u4EA4,
\u6587\u4EF6\u4E0A\u4F20\u6B63\u5728\u8FDB\u884C
+view_upload_prompt_1 = \u8BF7\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u4E0A\u4F20[{0}]
+view_upload_prompt_2 = \u8981\u4E0A\u4F20\u7684\u6587\u4EF6
+view_upload_success = \u6587\u4EF6\u4E0A\u4F20\u6210\u529F
+view_upload_tooltip_1a =
\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u4E0A\u4F20,\u7136\u540E\u70B9\u51FBUpload\u6216\u8005Next
+view_upload_tooltip_1b = \u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u4E0A\u4F20,
\u7136\u540E\u70B9\u51FB Next
+view_upload_tooltip_2 = \u6587\u4EF6\u4E0A\u4F20 \u524D\u53D1\u751F\u9519\u8BEF
+view_upload_upload = \u4E0A\u4F20
+view_upload_uploadFile = \u4E0A\u4F20\u6587\u4EF6
+widget_colorPicker_tooltip = \u9009\u62E9\u989C\u8272
+widget_durationItem_inputUnitLessThanTargetUnit =
\u8F93\u5165\u5355\u4F4D\u662F\u5C0F\u4E8E\u76EE\u6807\u5355\u4F4D.
+widget_durationItem_unitTypeNotSupported =
\u5355\u4F4D\u7C7B\u578B[{0}]\u4E0D\u88ABDurationItem\u652F\u6301.
+widget_jobTriggerEditor_fieldHelp_repeatDuration = keep running this operation this many
times or until this amount of time has elapsed
+widget_jobTriggerEditor_fieldHelp_repeatInterval = \u591A\u4E45\u6267\u884C\u64CD\u4F5C
+widget_jobTriggerEditor_fieldHelp_startDelay = \u6267\u884C\u64CD\u4F5C\u5EF6\u65F6
+widget_jobTriggerEditor_field_cronExpression = Cron\u8868\u8FBE\u5F0F
+widget_jobTriggerEditor_field_mode = Schedule using
+widget_jobTriggerEditor_field_repeatInterval_later = \u91CD\u590D\u6BCF
+widget_jobTriggerEditor_field_repeatInterval_now = Run now and every
+widget_jobTriggerEditor_field_startType = Run
+widget_jobTriggerEditor_message_endTimeMustBeAfterStartTime =
\u7ED3\u675F\u65F6\u95F4\u5FC5\u987B\u665A\u4E8E\u5F00\u59CB\u65F6\u95F4.
+widget_jobTriggerEditor_message_endTimeMustBeInFuture =
\u7ED3\u675F\u65F6\u95F4\u5FC5\u987B\u662F\u672A\u6765\u65F6\u95F4.
+widget_jobTriggerEditor_message_startTimeMustBeInFuture =
\u5F00\u59CB\u65F6\u95F4\u5FC5\u987B\u662F\u672A\u6765\u65F6\u95F4.
+widget_jobTriggerEditor_tab_examples = \u4F8B\u5B50
+widget_jobTriggerEditor_tab_format = \u683C\u5F0F
+widget_jobTriggerEditor_value_calendar = \u65E5\u5386
+widget_jobTriggerEditor_value_cronExpression = Cron\u8868\u8FBE\u5F0F
+widget_jobTriggerEditor_value_for = For
+widget_jobTriggerEditor_value_in = in
+widget_jobTriggerEditor_value_indefinitely = Indefinitely
+widget_jobTriggerEditor_value_later = Later
+widget_jobTriggerEditor_value_laterAndRepeat = Later & Repeat
+widget_jobTriggerEditor_value_now = Now
+widget_jobTriggerEditor_value_nowAndRepeat = Now & Repeat
+widget_jobTriggerEditor_value_on = on
+widget_jobTriggerEditor_value_until = \u76F4\u5230
+widget_recordEditor_error_invalidViewPath = \u67E5\u770B\u8DEF\u5F84\u65E0\u6548: [{0}]
+widget_recordEditor_error_multipleRecords = \u591A\u6761\u8BB0\u5F55\u8FD4\u56DE-
\u9884\u671F\u53EA\u6709\u4E00\u4E2A.
+widget_recordEditor_error_noRecords = \u65E0\u8BB0\u5F55\u8FD4\u56DE -
\u9884\u671F\u6709\u4E00\u6761.
+widget_recordEditor_error_operation =
\u64CD\u4F5C\u5931\u8D25.\u6709\u9519\u8BEF\u53D1\u751F
+widget_recordEditor_error_operationInvalidValues =
\u64CD\u4F5C\u5931\u8D25-\u4E00\u4E2A\u6216\u591A\u4E2A\u5B57\u6BB5\u7684\u503C\u65E0\u6548
+widget_recordEditor_error_permissionCreate =
\u4F60\u6CA1\u6709\u521B\u5EFA\u65B0[{0}]\u7684\u6743\u9650
+widget_recordEditor_error_unsupportedOperationType =
\u4E0D\u652F\u6301\u7684\u64CD\u4F5C\u7C7B\u578B: [{0}]
+widget_recordEditor_info_recordCreatedConcise = {0} created.
+widget_recordEditor_info_recordCreatedDetailed = {0} [{1}] created.
+widget_recordEditor_info_recordUpdatedConcise = {0} updated.
+widget_recordEditor_info_recordUpdatedDetailed = {0} [{1}] updated.
+widget_recordEditor_info_recordsDeletedConcise = {0} {1} deleted.
+widget_recordEditor_info_recordsDeletedDetailed = {0} {1} deleted: {2}.
+widget_recordEditor_label_loading = \u52A0\u8F7D\u4E2D...
+widget_recordEditor_title_edit = \u7F16\u8F91{0} [{1}]
+widget_recordEditor_title_new = \u65B0\u5EFA{0}
+widget_recordEditor_title_view = \u67E5\u770B{0} [{1}]
+widget_recordEditor_warn_validation =
\u4E00\u4E2A\u6216\u591A\u4E2A\u5B57\u6BB5\u7684\u503C\u65E0\u6548.
\u53EA\u6709\u5B57\u6BB5\u6709\u6548\u65F6\uFF0C[{0}]\u624D\u80FD\u4FDD\u5B58
+widget_resourceFactoryWizard_archPrompt = \u5305\u67B6\u6784
+widget_resourceFactoryWizard_configTemplatePrompt = \u8D44\u6E90\u914D\u7F6E\u6A21\u677F
+widget_resourceFactoryWizard_contentTemplatePrompt =
\u53D1\u5E03\u65F6\u95F4\u914D\u7F6E\u6A21\u677F
+widget_resourceFactoryWizard_createSubmit = \u521B\u5EFA\u8D44\u6E90[{0}]\u6210\u529F.
+widget_resourceFactoryWizard_createSubmitType =
\u521B\u5EFA\u7C7B\u578B[{0}]\u7684\u8D44\u6E90\u8BF7\u6C42\u63D0\u4EA4\u6210\u529F.
+widget_resourceFactoryWizard_createWizardTitle =
\u521B\u5EFA\u7C7B\u578B[{0}]\u7684\u65B0\u8D44\u6E90
+widget_resourceFactoryWizard_createWizardWindowTitle =
\u8D44\u6E90\u521B\u5EFA\u5411\u5BFC
+##widget_resourceFactoryWizard_editConfigStepName = Deployment Options
+widget_resourceFactoryWizard_execute1 = \u521B\u5EFA\u8D44\u6E90\u5931\u8D25 -
\u6CA1\u6709\u5305\u7248\u672C
+widget_resourceFactoryWizard_execute2 = \u521B\u5EFA\u8D44\u6E90\u5931\u8D25
+widget_resourceFactoryWizard_failedToDeleteVersion =
\u53D6\u6D88\u521B\u5EFA\u8D44\u6E90\u65F6\u65E0\u6CD5\u5220\u9664\u5305\u7684\u7248\u672C
+widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for new
resource
+widget_resourceFactoryWizard_importFailure =
\u624B\u5DE5\u5BFC\u5165\u8D44\u6E90\u5931\u8D25
+widget_resourceFactoryWizard_importSubmitted =
\u5BFC\u5165\u7C7B\u578B[{0}]\u7684\u65B0\u8D44\u6E90\u8BF7\u6C42\u5DF2\u88AB\u63D0\u4EA4
+widget_resourceFactoryWizard_importWizardTitle =
\u5BFC\u5165\u7C7B\u578B[{0}]\u7684\u8D44\u6E90
+widget_resourceFactoryWizard_importWizardWindowTitle =
\u5BFC\u5165\u8D44\u6E90\u5411\u5BFC
+widget_resourceFactoryWizard_infoStepName = \u8D44\u6E90\u6D88\u606F
+widget_resourceFactoryWizard_infoStep_loadFail = \u65E0\u6CD5\u53D6\u5F97\u67B6\u6784
+widget_resourceFactoryWizard_namePrompt = \u65B0\u8D44\u6E90\u540D
+widget_resourceFactoryWizard_templatePrompt = \u8FDE\u63A5\u8BBE\u7F6E\u6A21\u677F
+##widget_resourceFactoryWizard_timeoutHelp = A timeout duration. If specified will
override the default timeout for child resource creation (on the RHQ Agent). Useful for
particularly long create actions, like deployment of a large application. Usually used if
a previous attempt suffered a timeout failure.
+widget_resourceFactoryWizard_uploadFailure = \u4E0A\u4F20\u6587\u4EF6\u5931\u8D25
+widget_resourceFactoryWizard_uploadFileStepName =
\u4E0A\u4F20\u8D44\u6E90Content\u6587\u4EF6
+widget_resourceFactoryWizard_uploadInProgress = \u6B63\u5728\u4E0A\u4F20\u4E2D...
\u5927\u7684\u53D1\u5E03\u6587\u4EF6\u9700\u8981\u6D88\u8017\u6570\u5206\u949F\u5B8C\u6210.
+widget_resourceFactoryWizard_versionPrompt = \u5305\u7248\u672C
+widget_resourceSelector_groupCategory = \u7EC4\u7C7B\u522B
+widget_resourceSelector_pleaseSelectMultipleResource =
\u8BF7\u9009\u62E9\u4E00\u4E2A\u6216\u591A\u4E2A\u8D44\u6E90
+widget_resourceSelector_pleaseSelectResource = \u8BF7\u9009\u62E9\u8D44\u6E90
+widget_resourceSelector_selectMultipleResources = \u9009\u62E9\u8D44\u6E90
+widget_resourceSelector_selectResource = \u9009\u62E9\u8D44\u6E90
+widget_typeCache_loadFail =
\u65E0\u6CD5\u52A0\u8F7D\u8D44\u6E90\u7C7B\u578B\u7684\u5143\u6570\u636E
+widget_typeTree_badTemplateType = \u65E0\u6548\u7684URL.
\u672A\u77E5\u6A21\u677F\u7C7B\u578B[{0}]
+widget_typeTree_badTypeId = \u65E0\u6548URL. \u9519\u8BEF\u8D44\u6E90\u7C7B\u578BID
[{0}]
+widget_typeTree_loadFail = \u52A0\u8F7D\u8D44\u6E90\u7C7B\u578B\u5931\u8D25
commit 1a35c4bfd48fb7bd1c60831af44a08e74d5009ce
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Tue Jun 7 11:18:20 2011 -0400
a recent commit disabled the compilation of webservice module's test classes. tell
eclipse to ignore all webservice test classes now.
diff --git a/.classpath b/.classpath
index 2ca408f..566c57d 100644
--- a/.classpath
+++ b/.classpath
@@ -163,7 +163,6 @@
<classpathentry kind="src"
path="modules/enterprise/server/client-api/src/main/java"/>
<classpathentry kind="src"
path="modules/enterprise/remoting/client-api/src/main/java"/>
<classpathentry kind="src"
path="modules/enterprise/remoting/webservices/src/main/java"/>
- <classpathentry kind="src"
path="modules/enterprise/remoting/webservices/src/test/java"/>
<classpathentry kind="src"
path="modules/enterprise/remoting/cli/src/main/java"/>
<classpathentry kind="src"
path="modules/enterprise/remoting/cli/src/test/java"/>
<classpathentry kind="src"
path="modules/enterprise/server/sars/agent-sar/src/main/java"/>
commit 0c4b48b4531511ecd73309ed966b823164d0252b
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Mon Jun 6 16:23:40 2011 -0500
Added more items to git ignore to prevent massive list of changes after building GUI
projects.
diff --git a/.gitignore b/.gitignore
index b10fd3d..92d8d5e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,6 @@ dev-container
dev-agent
antlr-generated/
*.tokens
+modules/enterprise/gui/portal-war/build/classes/*
+modules/enterprise/gui/coregui/build/classes/*
+modules/enterprise/gui/content_http-war/build/classes/*
commit 7ec84d637cb242713cfdefebbaa0100b92357057
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Jun 7 21:01:52 2011 +0200
Runtime name is optional for now.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 81b702f..7851d73 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -239,7 +239,7 @@
<content name="file" category="deployable"
isCreationType="true" description="Deployments on this domain">
<configuration>
<c:group name="deployment" displayName="Deployment
Options">
- <c:simple-property name="runtimeName"
required="true"/>
+ <c:simple-property name="runtimeName"
required="false"/>
</c:group>
</configuration>
</content>
commit 37f293f248ebd6a3e9c09ea7b7658902444826a0
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Jun 7 13:37:28 2011 +0200
BZ 708327 Deploy a domain deployment to a server group.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 779e733..a51a96a 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
import org.rhq.core.domain.measurement.AvailabilityType;
@@ -361,11 +362,13 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
}
else {
+/*
List<PROPERTY_VALUE> address = step1.getAddress();
Operation step3 = new Operation("deploy",address);
cop.addStep(step3);
+*/
- resourceKey = addressToPath(address);
+ resourceKey = addressToPath(step1.getAddress());
}
JsonNode result = connection.executeRaw(cop);
@@ -465,6 +468,20 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
operation = new Operation(op,address,props);
} else if (what.equals("domain")) {
operation = new Operation(op,Collections.<PROPERTY_VALUE>emptyList());
+ } else if (what.equals("domain-deployment")) {
+ if (op.equals("promote")) {
+ String serverGroup =
parameters.getSimpleValue("server-group","-not set-");
+ PropertySimple simple = parameters.getSimple("enabled");
+ Boolean enabled = false;
+ if (simple!=null && simple.getBooleanValue()!=null)
+ enabled= simple.getBooleanValue();
+ address.add(new PROPERTY_VALUE("server-group",serverGroup));
+ String resourceKey = context.getResourceKey();
+ resourceKey =
resourceKey.substring(resourceKey.indexOf("=")+1);
+ address.add(new PROPERTY_VALUE("deployment", resourceKey));
+ operation = new
Operation("add",address,"enabled",enabled);
+
+ }
}
OperationResult operationResult = new OperationResult();
@@ -479,7 +496,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
}
}
else {
- operationResult.setErrorMessage("No valid operation was given");
+ operationResult.setErrorMessage("No valid operation was given for input
[" + name + "]");
}
// TODO throw an exception if the operation failed?
return operationResult;
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 6aa6dd5..81b702f 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -226,6 +226,16 @@
<c:simple-property name="path"
default="deployment" readOnly="true"/>
</plugin-configuration>
+ <operation name="domain-deployment:promote"
displayName="Deploy to Server-Group" description="Deploy this deployment to
a server group">
+ <parameters>
+ <c:simple-property name="server-group"
required="true" description="Server group to deploy to"
type="string"/>
+ <c:simple-property name="enabled"
required="true" default="true" description="Should the deployment
be enabled on the server group?" type="boolean"/>
+ </parameters>
+ <results>
+ <c:simple-property name="result"
description="Outcome of the delete server operation"/>
+ </results>
+ </operation>
+
<content name="file" category="deployable"
isCreationType="true" description="Deployments on this domain">
<configuration>
<c:group name="deployment" displayName="Deployment
Options">
commit 0d7b698a5ecf597aef64044513069916f3792c3c
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Jun 7 13:33:50 2011 +0200
Improve the help message
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/standaloneContainer/Command.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/standaloneContainer/Command.java
index aa91e22..c992000 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/standaloneContainer/Command.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/standaloneContainer/Command.java
@@ -36,7 +36,7 @@ public enum Command {
FIND("find", "r | t | rt <name>", 2,
"Searches a (r)esource, resource (t)ype or resources of (rt)ype. Use * as
wildcard.\n"
+ " Will set $r for the last resource shown."), HELP("h",
"", 0, "Shows this help"), //
- INVOKE("i", "operation [params]", 1, "Triggers running an
operation. If operation is '-list' it shows available operations"), //
+ INVOKE("i", "operation [params]", 1, "Triggers running an
operation. If operation is '-list' it shows available operations.\n Parameters are
given as key=value; key-value-pairs are separated by ||"), //
MEASURE("m", "datatype property+", 1, "Triggers getting
metric values. All need to be of the same data type. If datatype is '-list' it
shows the defined metrics"), //
NATIVE("n", "e | d | s", 1, "Enables/disables native system
or shows native status"), //
QUIT("quit", "", 0, "Terminates the application"), //
commit c307a316af845e110627703f7952a4fd048ea41c
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Jun 6 21:30:22 2011 -0400
BZ 644328 - add unit tests to show resource type bundle config upgrades work
diff --git
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdateResourceTypeSubsystemTest.java
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdateResourceTypeSubsystemTest.java
index 0d70634..246ca59 100644
---
a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdateResourceTypeSubsystemTest.java
+++
b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdateResourceTypeSubsystemTest.java
@@ -19,22 +19,23 @@
package org.rhq.enterprise.server.resource.metadata.test;
import java.util.Set;
-import java.util.UUID;
import javax.persistence.EntityManager;
import javax.transaction.Status;
-import org.jetbrains.annotations.NotNull;
-import org.rhq.core.domain.auth.Subject;
-import org.rhq.core.domain.criteria.ResourceCriteria;
-import org.rhq.core.domain.resource.InventoryStatus;
-import org.rhq.core.domain.resource.Resource;
-import org.rhq.enterprise.server.util.LookupUtil;
import org.testng.annotations.Test;
+import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
+import
org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory;
+import
org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory.Context;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.measurement.DisplayType;
import org.rhq.core.domain.measurement.MeasurementDefinition;
+import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.enterprise.server.util.LookupUtil;
/**
* Note, plugins are registered in new transactions. For tests, this means
@@ -48,6 +49,86 @@ public class UpdateResourceTypeSubsystemTest extends
UpdateSubsytemTestBase {
}
/**
+ * Tests updating bundle-target config
+ */
+ @Test
+ public void testResourceTypeBundleTarget() throws Exception {
+ try {
+ // register the plugin - it has a platform with child server that is a bundle
target
+ registerPlugin("updateResourceTypeBundleTarget-v1.xml");
+ ResourceType platform1 = getResourceType("myPlatform1");
+ getTransactionManager().begin();
+ EntityManager em = getEntityManager();
+ platform1 = em.find(ResourceType.class, platform1.getId());
+
+ assert platform1.getResourceTypeBundleConfiguration() == null :
"platform should not be a bundle target";
+ Set<ResourceType> servers1 = platform1.getChildResourceTypes();
+
+ assert servers1.size() == 1 : "must only have one child server under the
test platform";
+ ResourceType server1 = servers1.iterator().next();
+ ResourceTypeBundleConfiguration bundleConfig1 =
server1.getResourceTypeBundleConfiguration();
+ assert bundleConfig1 != null : "server should have been a bundle
target";
+
+ Set<BundleDestinationBaseDirectory> baseDirs1 =
bundleConfig1.getBundleDestinationBaseDirectory();
+ assert baseDirs1.size() == 2 : "should have been 2 bundle dest base
dirs: " + baseDirs1;
+
+ for (BundleDestinationBaseDirectory baseDir : baseDirs1) {
+ if (baseDir.getName().equals("firstDestBaseDir")) {
+ assert baseDir.getValueContext() == Context.pluginConfiguration :
"bad context: " + baseDir;
+ assert baseDir.getValueName().equals("prop1") : "bad
value" + baseDir;
+ } else if (baseDir.getName().equals("secondDestBaseDir")) {
+ assert baseDir.getValueContext() == Context.fileSystem : "bad
context: " + baseDir;
+ assert baseDir.getValueName().equals("/") : "bad
value" + baseDir;
+ } else {
+ assert false : "wrong dest base dir was retrieved: " +
baseDir;
+ }
+ }
+
+ getTransactionManager().rollback();
+
+ // now upgrade the plugin - the bundle config will have changed in the
server
+ registerPlugin("updateResourceTypeBundleTarget-v2.xml");
+ ResourceType platform2 = getResourceType("myPlatform1");
+ getTransactionManager().begin();
+ em = getEntityManager();
+ platform2 = em.find(ResourceType.class, platform2.getId());
+
+ assert platform1.getResourceTypeBundleConfiguration() == null :
"platform should not be a bundle target";
+ Set<ResourceType> servers2 = platform2.getChildResourceTypes();
+
+ assert servers2.size() == 1 : "Expected to find 1 server";
+ ResourceType server2 = servers2.iterator().next();
+ ResourceTypeBundleConfiguration bundleConfig2 =
server2.getResourceTypeBundleConfiguration();
+ assert bundleConfig2 != null : "server should have been a bundle
target";
+
+ Set<BundleDestinationBaseDirectory> baseDirs2 =
bundleConfig2.getBundleDestinationBaseDirectory();
+ assert baseDirs2.size() == 1 : "should have been 1 bundle dest base dir:
" + baseDirs2;
+
+ BundleDestinationBaseDirectory baseDir = baseDirs2.iterator().next();
+ assert baseDir.getName().equals("thirdDestBaseDir");
+ assert baseDir.getValueContext() == Context.resourceConfiguration : "bad
context: " + baseDir;
+ assert baseDir.getValueName().equals("resourceProp1") : "bad
value" + baseDir;
+
+ // make sure the old bundle config was deleted when we upgraded and overwrite
it with the new config
+ assert null == em.find(Configuration.class,
bundleConfig1.getBundleConfiguration().getId()) : "The configuration "
+ + bundleConfig1 + " should have been deleted";
+
+ getTransactionManager().rollback();
+
+ } finally {
+ if (Status.STATUS_NO_TRANSACTION != getTransactionManager().getStatus()) {
+ getTransactionManager().rollback();
+ }
+ try {
+ cleanupTest();
+ } catch (Exception e) {
+ System.out.println("CANNOT CLEAN UP TEST: " +
this.getClass().getSimpleName()
+ + ".testResourceTypeBundleTarget");
+ }
+ }
+ }
+
+ /**
* See if deletion of a resource type just works
*
* @throws Exception on error
@@ -146,7 +227,7 @@ public class UpdateResourceTypeSubsystemTest extends
UpdateSubsytemTestBase {
resourceManager.createResource(overlord, platformResource, -1);
getTransactionManager().begin();
- EntityManager em = getEntityManager();
+ EntityManager em = getEntityManager();
platform1 = em.find(ResourceType.class, platform1.getId());
assert platform1 != null : "I did not find myPlatform";
@@ -199,7 +280,8 @@ public class UpdateResourceTypeSubsystemTest extends
UpdateSubsytemTestBase {
assert platform2ChildResources.size() == 2 : "Expected 2 direct child
services of platform in v2";
boolean foundMovedResource = false;
for (Resource childResource : platform2ChildResources) {
- assert childResource.getChildResources().isEmpty() : "Expected child
Resource " + childResource + " to have no children";
+ assert childResource.getChildResources().isEmpty() : "Expected child
Resource " + childResource
+ + " to have no children";
if (childResource.getResourceKey().equals("foo-nestedOne")) {
foundMovedResource = true;
}
@@ -214,7 +296,7 @@ public class UpdateResourceTypeSubsystemTest extends
UpdateSubsytemTestBase {
Set<MeasurementDefinition> defs3 =
type.getMetricDefinitions();
MeasurementDefinition three = defs3.iterator().next();
assert three.getDisplayName().equals("Three") :
"Expected the nestedOne to have a metric withDisplayName Three in v2, but it was
"
- + three.getDisplayName();
+ + three.getDisplayName();
assert three.getDisplayType() == DisplayType.SUMMARY : "Expected
three to be SUMMARY in v2";
/*
@@ -223,12 +305,12 @@ public class UpdateResourceTypeSubsystemTest extends
UpdateSubsytemTestBase {
* latter is a different story. We probably should cascade that
anyway.
*/
assert three.getId() == definitionId : "Expected the id of
'Three' to be " + definitionId
- + ", but it was " + three.getId() + " in
v2";
+ + ", but it was " + three.getId() + " in
v2";
} else if (typeName.equals("service1")) {
// check that the nested service is gone
Set<ResourceType> childrenOfService =
type.getChildResourceTypes();
assert childrenOfService.size() == 0 : "No children of
'service1' expected in v2, but found: "
- + childrenOfService.size();
+ + childrenOfService.size();
} else {
assert true == false : "We found an unknown type with name
" + typeName;
}
diff --git
a/modules/enterprise/server/jar/src/test/resources/test/metadata/resource-type/updateResourceTypeBundleTarget-v1.xml
b/modules/enterprise/server/jar/src/test/resources/test/metadata/resource-type/updateResourceTypeBundleTarget-v1.xml
new file mode 100644
index 0000000..aa29ffd
--- /dev/null
+++
b/modules/enterprise/server/jar/src/test/resources/test/metadata/resource-type/updateResourceTypeBundleTarget-v1.xml
@@ -0,0 +1,27 @@
+<plugin name="ResourceMetaDataManagerBeanTest" displayName="Mock"
package="org.rhq.plugins.mock.jboss"
+ version="1.0"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="urn:xmlns:rhq-plugin"
+ xmlns:c="urn:xmlns:rhq-configuration">
+
+ <platform name="myPlatform1">
+ <server name="myTestServer1">
+ <plugin-configuration>
+ <c:simple-property name="prop1" />
+ </plugin-configuration>
+ <resource-configuration>
+ <c:simple-property name="resourceProp1" />
+ </resource-configuration>
+ <bundle-target>
+ <destination-base-dir name="firstDestBaseDir">
+ <value-context>pluginConfiguration</value-context>
+ <value-name>prop1</value-name>
+ </destination-base-dir>
+ <destination-base-dir name="secondDestBaseDir">
+ <value-context>fileSystem</value-context>
+ <value-name>/</value-name>
+ </destination-base-dir>
+ </bundle-target>
+ </server>
+ </platform>
+</plugin>
diff --git
a/modules/enterprise/server/jar/src/test/resources/test/metadata/resource-type/updateResourceTypeBundleTarget-v2.xml
b/modules/enterprise/server/jar/src/test/resources/test/metadata/resource-type/updateResourceTypeBundleTarget-v2.xml
new file mode 100644
index 0000000..c4f11ad
--- /dev/null
+++
b/modules/enterprise/server/jar/src/test/resources/test/metadata/resource-type/updateResourceTypeBundleTarget-v2.xml
@@ -0,0 +1,23 @@
+<plugin name="ResourceMetaDataManagerBeanTest" displayName="Mock"
package="org.rhq.plugins.mock.jboss"
+ version="1.0"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="urn:xmlns:rhq-plugin"
+ xmlns:c="urn:xmlns:rhq-configuration">
+
+ <platform name="myPlatform1">
+ <server name="myTestServer1">
+ <plugin-configuration>
+ <c:simple-property name="prop1" />
+ </plugin-configuration>
+ <resource-configuration>
+ <c:simple-property name="resourceProp1" />
+ </resource-configuration>
+ <bundle-target>
+ <destination-base-dir name="thirdDestBaseDir">
+ <value-context>resourceConfiguration</value-context>
+ <value-name>resourceProp1</value-name>
+ </destination-base-dir>
+ </bundle-target>
+ </server>
+ </platform>
+</plugin>
commit d888bfe2a211a21a4eeeb2730fa5821044fcfb58
Merge: e89ac0c 718ebd7
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Jun 6 17:20:36 2011 -0400
Merge commit 'origin/master' into nonplatform-bundles2
commit e89ac0c42707a22f1ae1a171936ac7077d29082c
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Jun 6 17:20:23 2011 -0400
BZ 644328 - add bundle configuration to agent plugin descriptor, and server-side
processing to persist it
diff --git
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
index 686b16b..c75111b 100644
---
a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
+++
b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
@@ -34,6 +34,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.rhq.core.clientapi.descriptor.plugin.Bundle;
+import org.rhq.core.clientapi.descriptor.plugin.BundleTargetDescriptor;
import org.rhq.core.clientapi.descriptor.plugin.ContentDescriptor;
import org.rhq.core.clientapi.descriptor.plugin.EventDescriptor;
import org.rhq.core.clientapi.descriptor.plugin.MetricDescriptor;
@@ -49,7 +50,10 @@ import org.rhq.core.clientapi.descriptor.plugin.RunsInsideType;
import org.rhq.core.clientapi.descriptor.plugin.ServerDescriptor;
import org.rhq.core.clientapi.descriptor.plugin.ServiceDescriptor;
import org.rhq.core.clientapi.descriptor.plugin.SubCategoryDescriptor;
+import
org.rhq.core.clientapi.descriptor.plugin.BundleTargetDescriptor.DestinationBaseDir;
import org.rhq.core.domain.bundle.BundleType;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
+import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.event.EventDefinition;
import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.resource.ClassLoaderType;
@@ -442,6 +446,7 @@ public class PluginMetadataParser {
// 8) Artifacts
// 9) Child subcategories
// 10) Bundle Type
+ // 11) Bundle Configuration (for types that are targets for bundle deployments)
String classLoaderTypeString = resourceDescriptor.getClassLoader();
if (classLoaderTypeString == null) {
@@ -527,6 +532,22 @@ public class PluginMetadataParser {
resourceType.setBundleType(new BundleType(typeName, resourceType));
}
+ BundleTargetDescriptor bundleTarget = resourceDescriptor.getBundleTarget();
+ if (bundleTarget != null) {
+ List<DestinationBaseDir> destBaseDirs =
bundleTarget.getDestinationBaseDir();
+ if (destBaseDirs != null && destBaseDirs.size() > 0) {
+ Configuration c = new Configuration();
+ ResourceTypeBundleConfiguration bundleConfiguration = new
ResourceTypeBundleConfiguration(c);
+ for (DestinationBaseDir destBaseDir : destBaseDirs) {
+ String name = destBaseDir.getName();
+ String valueContext = destBaseDir.getValueContext();
+ String valueName = destBaseDir.getValueName();
+ bundleConfiguration.addBundleDestinationBaseDirectory(name,
valueContext, valueName);
+ }
+
resourceType.setResourceTypeBundleConfiguration(bundleConfiguration);
+ }
+ }
+
} catch (InvalidPluginDescriptorException e) {
// TODO: Should we be storing these for viewing in server? Breaking
deployment? What?
throw e;
diff --git
a/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/MetadataManagerTest.java
b/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/MetadataManagerTest.java
index 2df1e43..488d673 100644
---
a/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/MetadataManagerTest.java
+++
b/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/MetadataManagerTest.java
@@ -36,6 +36,9 @@ import org.testng.annotations.Test;
import org.rhq.core.clientapi.agent.metadata.PluginMetadataManager;
import org.rhq.core.clientapi.descriptor.DescriptorPackages;
import org.rhq.core.clientapi.descriptor.plugin.PluginDescriptor;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
+import
org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory;
+import
org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory.Context;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.ConfigurationTemplate;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionList;
@@ -213,7 +216,8 @@ public class MetadataManagerTest {
assert bravo.getEnumeratedValues().size() == 4;
assert bravo.getEnumeratedValues().get(0).getName().equals("First Option
Name");
assert
bravo.getEnumeratedValues().get(0).getValue().equals("FirstOptionValue");
- assert
bravo.getEnumeratedValues().get(0).getValue().equals(def.getDefaultTemplate().getConfiguration().getSimpleValue("bravo",
null));
+ assert bravo.getEnumeratedValues().get(0).getValue().equals(
+ def.getDefaultTemplate().getConfiguration().getSimpleValue("bravo",
null));
assert def.getPropertyDefinitionSimple("charlie").getType() ==
PropertySimpleType.BOOLEAN;
assert def.getPropertyDefinitionSimple("delta").getType() ==
PropertySimpleType.INTEGER;
@@ -253,6 +257,25 @@ public class MetadataManagerTest {
assert t.getConfiguration().getSimple("delta").getIntegerValue() ==
42;
assert serverType.getBundleType() == null : "bundle should not be defined
for type: " + serverType;
+
+ // ensure the bundle target metadata is correct
+ ResourceTypeBundleConfiguration bundleTargetConfig =
serverType.getResourceTypeBundleConfiguration();
+ assert bundleTargetConfig != null;
+ Set<ResourceTypeBundleConfiguration.BundleDestinationBaseDirectory> set =
bundleTargetConfig
+ .getBundleDestinationBaseDirectory();
+ assert set.size() == 2;
+ for (BundleDestinationBaseDirectory bdbd : set) {
+ if (bdbd.getName().equals("basedir1")) {
+ assert bdbd.getValueContext() == Context.pluginConfiguration : bdbd;
+ assert bdbd.getValueName().equals("alpha") : bdbd;
+ } else if (bdbd.getName().equals("basedir2")) {
+ assert bdbd.getValueContext() == Context.resourceConfiguration : bdbd;
+ assert bdbd.getValueName().equals("resourceAlpha") : bdbd;
+ } else {
+ assert false : "Bad bundle target name: " + bdbd;
+ }
+ }
+
}
private void outputType(ResourceType type, int depth) {
diff --git a/modules/core/client-api/src/test/resources/metadata-manager-test-1.xml
b/modules/core/client-api/src/test/resources/metadata-manager-test-1.xml
index bcdf81d..fbb1afd 100644
--- a/modules/core/client-api/src/test/resources/metadata-manager-test-1.xml
+++ b/modules/core/client-api/src/test/resources/metadata-manager-test-1.xml
@@ -77,6 +77,16 @@
</c:group>
</resource-configuration>
+ <bundle-target>
+ <destination-base-dir name="basedir1">
+ <value-context>pluginConfiguration</value-context>
+ <value-name>alpha</value-name>
+ </destination-base-dir>
+ <destination-base-dir name="basedir2">
+ <value-context>resourceConfiguration</value-context>
+ <value-name>resourceAlpha</value-name>
+ </destination-base-dir>
+ </bundle-target>
<service name="Service B" description="Service B
Description" class="ServiceBClass"
discovery="ServiceBDiscoveryClass">
<metric property="foo" displayName="Foo"/>
diff --git a/modules/core/dbutils/pom.xml b/modules/core/dbutils/pom.xml
index 800cb87..c4c6a6a 100644
--- a/modules/core/dbutils/pom.xml
+++ b/modules/core/dbutils/pom.xml
@@ -22,7 +22,7 @@
<properties>
<scm.module.path>modules/core/dbutils/</scm.module.path>
- <db.schema.version>2.107</db.schema.version>
+ <db.schema.version>2.108</db.schema.version>
</properties>
<dependencies>
diff --git a/modules/core/dbutils/src/main/scripts/dbsetup/inventory-schema.xml
b/modules/core/dbutils/src/main/scripts/dbsetup/inventory-schema.xml
index 7b85143..81882af 100644
--- a/modules/core/dbutils/src/main/scripts/dbsetup/inventory-schema.xml
+++ b/modules/core/dbutils/src/main/scripts/dbsetup/inventory-schema.xml
@@ -25,6 +25,7 @@
-->
<column name="PLUGIN_CONFIG_DEF_ID" type="INTEGER"
references="RHQ_CONFIG_DEF(ID)"/>
<column name="RES_CONFIG_DEF_ID" type="INTEGER"
references="RHQ_CONFIG_DEF(ID)"/>
+ <column name="BUNDLE_CONFIG_ID" type="INTEGER"
references="RHQ_CONFIG"/>
<index name="RHQ_RES_TYPE_IDX_PLG_NAME" unique="true">
<field ref="NAME"/>
diff --git a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
index 1e7fffe..c7aa1a6 100644
--- a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
+++ b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
@@ -3389,6 +3389,19 @@
<schemaSpec version="2.107">
<schema-createSequence name="RHQ_OPERATION_SCHEDULE_ID_SEQ"
initial="10001"/>
</schemaSpec>
+
+ <schemaSpec version="2.108">
+ <schema-addColumn table="RHQ_RESOURCE_TYPE"
column="BUNDLE_CONFIG_ID" columnType="INTEGER" />
+ <schema-directSQL>
+ <statement desc="Creating RHQ_RESOURCE_TYPE foreign key
relation to RHQ_CONFIG for bundle config">
+ ALTER TABLE RHQ_RESOURCE_TYPE
+ ADD CONSTRAINT RHQ_RT_BUNDLE_CONFIG_ID_FK
+ FOREIGN KEY (BUNDLE_CONFIG_ID)
+ REFERENCES RHQ_CONFIG (ID)
+ </statement>
+ </schema-directSQL>
+ </schemaSpec>
+
</dbupgrade>
</target>
</project>
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/ResourceTypeBundleConfiguration.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/ResourceTypeBundleConfiguration.java
new file mode 100644
index 0000000..dba31e7
--- /dev/null
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/ResourceTypeBundleConfiguration.java
@@ -0,0 +1,261 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2009 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.core.domain.bundle;
+
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.configuration.PropertyMap;
+import org.rhq.core.domain.configuration.PropertySimple;
+
+/**
+ * If a resource type can be a target for bundle deployment, it will define some metadata
values inside this configuration object.
+ * We store these in a Configuration to support extensibility in the future. Stored in
this configuration object will be things like
+ * the bundle destination base directory definitions (the base locations where bundles
can be deployed for resources that
+ * are of the given type). Rather than expect users of this object to know the internal
properties stored in the config, this
+ * object has strongly-typed methods to extract the properties into more easily
consumable POJOs, such as
+ * {@link #getBundleDestinationBaseDirectory()} and {@link
#addBundleDestinationBaseDirectory(String, String)}.
+ *
+ * @author John Mazzitelli
+ */
+public class ResourceTypeBundleConfiguration implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ private static final String BUNDLE_DEST_BASE_DIR_LIST_NAME =
"bundleDestBaseDirsList";
+ private static final String BUNDLE_DEST_BASE_DIR_LIST_ITEM_NAME =
"bundleDestBaseDirsListItem";
+ private static final String BUNDLE_DEST_BASE_DIR_NAME_NAME = "name";
+ private static final String BUNDLE_DEST_BASE_DIR_VALUE_CONTEXT_NAME =
"valueContext";
+ private static final String BUNDLE_DEST_BASE_DIR_VALUE_NAME_NAME =
"valueName";
+
+ // this is the actual bundle configuration - see ResourceType.bundleConfiguration
+ private Configuration bundleConfiguration;
+
+ public ResourceTypeBundleConfiguration() {
+ this.bundleConfiguration = null;
+ }
+
+ public ResourceTypeBundleConfiguration(Configuration bundleConfiguration) {
+ this.bundleConfiguration = bundleConfiguration;
+ }
+
+ /**
+ * Returns the actual, raw configuration. Callers should rarely want to use this -
use the more
+ * strongly typed methods such as {@link #getBundleDestinationBaseDirectory()}.
+ *
+ * @return the raw bundle configuration object
+ */
+ public Configuration getBundleConfiguration() {
+ return this.bundleConfiguration;
+ }
+
+ public void setBundleConfiguration(Configuration bundleConfiguration) {
+ this.bundleConfiguration = bundleConfiguration;
+ }
+
+ /**
+ * Returns the different destination base directories that can be the target for a
bundle deployment.
+ * If this bundle configuration doesn't have any base directories, null is
returned (though this
+ * should never happen if the bundle configuration has been fully prepared for a
resource type).
+ *
+ * @return the set of destination base directories that can be targets for bundle
deployments
+ */
+ public Set<BundleDestinationBaseDirectory> getBundleDestinationBaseDirectory()
{
+ if (this.bundleConfiguration == null) {
+ return null;
+ }
+
+ PropertyList propertyList =
this.bundleConfiguration.getList(BUNDLE_DEST_BASE_DIR_LIST_NAME);
+ if (propertyList == null) {
+ return null;
+ }
+
+ List<Property> list = propertyList.getList();
+ if (list.size() == 0) {
+ return null;
+ }
+
+ Set<BundleDestinationBaseDirectory> retVal = new
HashSet<BundleDestinationBaseDirectory>(list.size());
+ for (Property listItem : list) {
+ PropertyMap map = (PropertyMap) listItem;
+ String name = map.getSimpleValue(BUNDLE_DEST_BASE_DIR_NAME_NAME, null);
+ String valueContext =
map.getSimpleValue(BUNDLE_DEST_BASE_DIR_VALUE_CONTEXT_NAME, null);
+ String valueName = map.getSimpleValue(BUNDLE_DEST_BASE_DIR_VALUE_NAME_NAME,
null);
+ BundleDestinationBaseDirectory bdbd = new
BundleDestinationBaseDirectory(name, valueContext, valueName);
+ retVal.add(bdbd);
+ }
+
+ return retVal;
+ }
+
+ /**
+ * Adds a destination base directory that can be used as a target for a bundle
deployment.
+ *
+ * @param name the name of this bundle destination base directory (must not be
<code>null</code>)
+ * @param valueContext indicates where the value's name can be looked up and
found. This
+ * must be the string form of one of the enums found
+ * in {@link BundleDestinationBaseDirectory.Context}
+ * @param valueName the name of the property found in the given context where the
value
+ * of the base directory is
+ */
+ public void addBundleDestinationBaseDirectory(String name, String valueContext,
String valueName) {
+ if (this.bundleConfiguration == null) {
+ throw new NullPointerException("bundleConfiguration == null");
+ }
+
+ // we create this just to make sure the context and value are valid. An exception
will be thrown if they are not.
+ BundleDestinationBaseDirectory destBaseDir = new
BundleDestinationBaseDirectory(name, valueContext, valueName);
+
+ PropertyList propertyList =
this.bundleConfiguration.getList(BUNDLE_DEST_BASE_DIR_LIST_NAME);
+ if (propertyList == null) {
+ propertyList = new PropertyList(BUNDLE_DEST_BASE_DIR_LIST_NAME);
+ this.bundleConfiguration.put(propertyList);
+ }
+
+ PropertySimple nameProp = new PropertySimple(BUNDLE_DEST_BASE_DIR_NAME_NAME,
destBaseDir.getName());
+ PropertySimple valueContextProp = new
PropertySimple(BUNDLE_DEST_BASE_DIR_VALUE_CONTEXT_NAME, destBaseDir
+ .getValueContext().name());
+ PropertySimple valueNameProp = new
PropertySimple(BUNDLE_DEST_BASE_DIR_VALUE_NAME_NAME, destBaseDir
+ .getValueName());
+ PropertyMap map = new PropertyMap(BUNDLE_DEST_BASE_DIR_LIST_ITEM_NAME);
+ map.put(nameProp);
+ map.put(valueContextProp);
+ map.put(valueNameProp);
+ propertyList.add(map);
+ return;
+ }
+
+ @Override
+ public int hashCode() {
+ return ((bundleConfiguration == null) ? 0 : bundleConfiguration.hashCode());
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof ResourceTypeBundleConfiguration)) {
+ return false;
+ }
+ ResourceTypeBundleConfiguration other = (ResourceTypeBundleConfiguration) obj;
+ if (this.bundleConfiguration == null) {
+ if (other.bundleConfiguration != null) {
+ return false;
+ }
+ } else if (!this.bundleConfiguration.equals(other.bundleConfiguration)) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Defines where bundles can be deployed on a resource that is of our resource type.
+ */
+ public static class BundleDestinationBaseDirectory implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Defines the different places where we can lookup the named value that contains
+ * the actual location of the destination base directory.
+ * The names of these enum constants match the valid values that the agent
+ * plugin XML schema accepts, to allow for easy translation from the XML
+ * to this Java representation.
+ */
+ public enum Context {
+ /** the value is to be found in the resource's plugin configuration */
+ pluginConfiguration,
+
+ /** the value is to be found in the resource's resource configuration */
+ resourceConfiguration,
+
+ /** the value is to be found as a measurement trait */
+ measurementTrait,
+
+ /** the value is a hardcoded location on the file system - usually the root
"/" directory */
+ fileSystem
+ };
+
+ private final String name;
+ private final Context valueContext;
+ private final String valueName;
+
+ public BundleDestinationBaseDirectory(String name, String valueContext, String
valueName) {
+ if (name == null) {
+ throw new NullPointerException("name == null");
+ }
+ this.name = name;
+ this.valueContext = Context.valueOf(valueContext); // will throw an exception
if its not valid, which is what we want
+ this.valueName = valueName;
+ }
+
+ /**
+ * @return the name of this bundle destination base directory (will not be
<code>null</code>)
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @return indicates where the {@link #getValueName() value's name} can be
looked up
+ * and found. This must be one of the enums found in {@link
BundleDestinationBaseDirectory.Context}
+ */
+ public Context getValueContext() {
+ return valueContext;
+ }
+
+ /**
+ * @return the name of the property found in the given {@link #getValueContext()
context}
+ * where the value of the base directory is
+ */
+ public String getValueName() {
+ return valueName;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("BundleDestinationBaseDirectory
[name=").append(name).append(", valueContext=").append(
+ valueContext).append(",
valueName=").append(valueName).append("]");
+ return builder.toString();
+ }
+
+ @Override
+ public int hashCode() {
+ return this.name.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof BundleDestinationBaseDirectory)) {
+ return false;
+ }
+ BundleDestinationBaseDirectory other = (BundleDestinationBaseDirectory) obj;
+ return this.name.equals(other.name);
+ }
+ }
+}
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
index 0562890..288be78 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java
@@ -59,6 +59,8 @@ import javax.persistence.Transient;
import javax.xml.bind.annotation.XmlTransient;
import org.rhq.core.domain.bundle.BundleType;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
+import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.event.EventDefinition;
@@ -391,6 +393,13 @@ public class ResourceType implements Serializable,
Comparable<ResourceType> {
@OneToOne(mappedBy = "resourceType", fetch = FetchType.LAZY, cascade =
CascadeType.ALL, optional = true)
private BundleType bundleType;
+ // note that this is mapped to a Configuration entity, which is what it really is.
However, our getter/setter
+ // only provides access to this via ResourceTypeBundleConfiguration to encapsulate
the innards of this implementation
+ // detail, exposing only the more strongly typed methods to obtain bundle-related
config properties
+ @JoinColumn(name = "BUNDLE_CONFIG_ID", nullable = true)
+ @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = true)
+ private Configuration bundleConfiguration;
+
@Transient
private transient String helpText;
@@ -650,6 +659,22 @@ public class ResourceType implements Serializable,
Comparable<ResourceType> {
this.resourceConfigurationDefinition = resourceConfigurationDefinition;
}
+ public ResourceTypeBundleConfiguration getResourceTypeBundleConfiguration() {
+ if (this.bundleConfiguration == null) {
+ return null;
+ } else {
+ return new ResourceTypeBundleConfiguration(bundleConfiguration);
+ }
+ }
+
+ public void setResourceTypeBundleConfiguration(ResourceTypeBundleConfiguration rtbc)
{
+ if (rtbc == null) {
+ this.bundleConfiguration = null;
+ } else {
+ this.bundleConfiguration = rtbc.getBundleConfiguration();
+ }
+ }
+
@XmlTransient
public Set<MeasurementDefinition> getMetricDefinitions() {
return metricDefinitions;
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceTypeManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceTypeManagerBean.java
index f153c81..877c831 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceTypeManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceTypeManagerBean.java
@@ -393,9 +393,10 @@ public class ResourceTypeManagerBean implements
ResourceTypeManagerLocal, Resour
public Map<Integer, ResourceTypeTemplateCountComposite>
getTemplateCountCompositeMap() {
Query templateCountQuery =
entityManager.createNamedQuery(ResourceType.FIND_ALL_TEMPLATE_COUNT_COMPOSITES);
-
+
@SuppressWarnings("unchecked")
- List<ResourceTypeTemplateCountComposite> results =
(List<ResourceTypeTemplateCountComposite>) templateCountQuery.getResultList();
+ List<ResourceTypeTemplateCountComposite> results =
(List<ResourceTypeTemplateCountComposite>) templateCountQuery
+ .getResultList();
for (ResourceTypeTemplateCountComposite result : results) {
ResourceType type = result.getType();
@@ -425,6 +426,7 @@ public class ResourceTypeManagerBean implements
ResourceTypeManagerLocal, Resour
}
private void scrubType(ResourceType type) {
+ type.setResourceTypeBundleConfiguration(null);
type.setBundleType(null);
type.setChildResourceTypes(null);
type.setChildSubCategories(null);
@@ -455,16 +457,14 @@ public class ResourceTypeManagerBean implements
ResourceTypeManagerLocal, Resour
@SuppressWarnings("unchecked")
public List<Integer> getResourceTypeIdsByPlugin(String plugin) {
- return entityManager.createNamedQuery(ResourceType.QUERY_FIND_IDS_BY_PLUGIN)
- .setParameter("plugin", plugin)
+ return
entityManager.createNamedQuery(ResourceType.QUERY_FIND_IDS_BY_PLUGIN).setParameter("plugin",
plugin)
.getResultList();
}
@Override
public Integer getResourceTypeCountByPlugin(String plugin) {
- return (Integer)
entityManager.createNamedQuery(ResourceType.QUERY_FIND_COUNT_BY_PLUGIN)
- .setParameter("plugin", plugin)
- .getSingleResult();
+ return (Integer)
entityManager.createNamedQuery(ResourceType.QUERY_FIND_COUNT_BY_PLUGIN).setParameter("plugin",
+ plugin).getSingleResult();
}
@SuppressWarnings("unchecked")
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBean.java
index d264bd8..e4f0ef5 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ContentMetadataManagerBean.java
@@ -17,6 +17,7 @@ import org.apache.commons.logging.LogFactory;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.bundle.Bundle;
import org.rhq.core.domain.bundle.BundleType;
+import org.rhq.core.domain.bundle.ResourceTypeBundleConfiguration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.criteria.BundleCriteria;
@@ -69,6 +70,29 @@ public class ContentMetadataManagerBean implements
ContentMetadataManagerLocal {
existingType.setBundleType(null);
}
+ // set the bundle configuration if the new type is a potential bundle deployment
target
+ ResourceTypeBundleConfiguration newBundleConfiguration =
newType.getResourceTypeBundleConfiguration();
+ if (newBundleConfiguration != null) {
+ ResourceTypeBundleConfiguration existingBundleConfiguration = existingType
+ .getResourceTypeBundleConfiguration();
+ if (existingBundleConfiguration == null) {
+ // the new type has now become a bundle target where the old type was
not
+ existingType.setResourceTypeBundleConfiguration(newBundleConfiguration);
+ } else {
+ // the old type was already a bundle target, we need to merge the new
bundle config with the existing old one
+ if (!existingBundleConfiguration.equals(newBundleConfiguration)) {
+
entityMgr.remove(existingBundleConfiguration.getBundleConfiguration());
+ entityMgr.persist(newBundleConfiguration.getBundleConfiguration());
+
existingType.setResourceTypeBundleConfiguration(newBundleConfiguration);
+ }
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("Removing bundle configuration");
+ }
+ existingType.setResourceTypeBundleConfiguration(null);
+ }
+
// Easy case: If there are no package definitions in the new type, null out any
in the existing and return
if (newType.getPackageTypes().isEmpty()) {
if (log.isDebugEnabled()) {
@@ -86,8 +110,8 @@ public class ContentMetadataManagerBean implements
ContentMetadataManagerLocal {
// Easy case: If the existing type did not have any package definitions, simply
use the new type defs and return
if (existingType.getPackageTypes().isEmpty()) {
if (log.isDebugEnabled()) {
- log.debug(existingType + " previously did not define any package
types. Adding " +
- newType.getPackageTypes());
+ log.debug(existingType + " previously did not define any package
types. Adding "
+ + newType.getPackageTypes());
}
for (PackageType newPackageType : newType.getPackageTypes()) {
newPackageType.setResourceType(existingType);
@@ -123,8 +147,7 @@ public class ContentMetadataManagerBean implements
ContentMetadataManagerLocal {
}
for (PackageType mergedPackageType : mergedPackageTypes) {
- updatePackageConfigurations(mergedPackageType,
- newPackageTypeDefinitions.get(mergedPackageType.getName()));
+ updatePackageConfigurations(mergedPackageType,
newPackageTypeDefinitions.get(mergedPackageType.getName()));
mergedPackageType.update(newPackageTypeDefinitions.get(mergedPackageType.getName()));
entityMgr.merge(mergedPackageType);
}
@@ -154,8 +177,7 @@ public class ContentMetadataManagerBean implements
ContentMetadataManagerLocal {
} else {
// update existing
ConfigurationDefinition existingDefinition =
existingType.getDeploymentConfigurationDefinition();
-
configurationMetadataMgr.updateConfigurationDefinition(newConfigurationDefinition,
- existingDefinition);
+
configurationMetadataMgr.updateConfigurationDefinition(newConfigurationDefinition,
existingDefinition);
}
} else {
// newDefinition == null
@@ -170,24 +192,24 @@ public class ContentMetadataManagerBean implements
ContentMetadataManagerLocal {
// altogether removed from the code base?
//
// jsanda - 11/3/2010
-// newConfigurationDefinition = newType.getPackageExtraPropertiesDefinition();
-// if (newConfigurationDefinition != null) {
-// if (existingType.getPackageExtraPropertiesDefinition() == null) {
-// // everything new
-// entityMgr.persist(newConfigurationDefinition);
-//
existingType.setPackageExtraPropertiesDefinition(newConfigurationDefinition);
-// } else {
-// // update existing
-// ConfigurationDefinition existingDefinition =
existingType.getPackageExtraPropertiesDefinition();
-//
configurationMetadataMgr.updateConfigurationDefinition(newConfigurationDefinition,
-// existingDefinition);
-// }
-// } else {
-// // newDefinition == null
-// if (existingType.getPackageExtraPropertiesDefinition() != null) {
-// existingType.setPackageExtraPropertiesDefinition(null);
-// }
-// }
+ // newConfigurationDefinition =
newType.getPackageExtraPropertiesDefinition();
+ // if (newConfigurationDefinition != null) {
+ // if (existingType.getPackageExtraPropertiesDefinition() == null) {
+ // // everything new
+ // entityMgr.persist(newConfigurationDefinition);
+ //
existingType.setPackageExtraPropertiesDefinition(newConfigurationDefinition);
+ // } else {
+ // // update existing
+ // ConfigurationDefinition existingDefinition =
existingType.getPackageExtraPropertiesDefinition();
+ //
configurationMetadataMgr.updateConfigurationDefinition(newConfigurationDefinition,
+ // existingDefinition);
+ // }
+ // } else {
+ // // newDefinition == null
+ // if (existingType.getPackageExtraPropertiesDefinition() != null) {
+ // existingType.setPackageExtraPropertiesDefinition(null);
+ // }
+ // }
}
@Override
commit 5e45e16a5e7d2ce42c38b9389127da558dc68fcb
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Jun 2 10:33:11 2011 -0400
BZ 644328 - support agent plugin metadata for bundle-target
diff --git a/modules/core/client-api/src/main/resources/rhq-plugin.xsd
b/modules/core/client-api/src/main/resources/rhq-plugin.xsd
index 79c519e..c06b949 100644
--- a/modules/core/client-api/src/main/resources/rhq-plugin.xsd
+++ b/modules/core/client-api/src/main/resources/rhq-plugin.xsd
@@ -440,7 +440,6 @@
</xs:restriction>
</xs:simpleType>
-
<!-- == Operation ================================================== -->
<xs:element name="operation">
@@ -488,6 +487,60 @@
</xs:complexType>
</xs:element>
+ <!-- == Bundle Target ================================================== -->
+
+ <xs:element name="bundle-target">
+ <xs:annotation>
+ <xs:appinfo>
+ <jaxb:class name="BundleTargetDescriptor"/>
+ </xs:appinfo>
+ <xs:documentation>
+ If defined, the resource can be used as a target for bundle deployment.
+ The child elements describe where, under the resource, bundles can be
deployed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="destination-base-dir"
maxOccurs="unbounded" minOccurs="1">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation>
+ Defines where a bundle can be deployed under the resource.
+ You must define one destination base directory, but may
define more.
+ Each destination base directory's value is obtained
from a particular context
+ (e.g. in the resource's plugin configuration or its
resource configuration).
+ Within that context, the base directory value is obtained
by looking up the named value in the given context.
+ For example, if the value-name is "install.dir"
and the value-context is "pluginConfiguration",
+ then the destination base directory value is obtained by
getting the "install.dir" property value
+ found in the resource's plugin configuration.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="value-context">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration
value="pluginConfiguration"></xs:enumeration>
+ <xs:enumeration
value="resourceConfiguration"></xs:enumeration>
+ <xs:enumeration
value="measurementTrait"></xs:enumeration>
+ <xs:enumeration
value="fileSystem"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="value-name"
type="xs:string"></xs:element>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string"
use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The name given to identify this particular destination
base directory.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
<!-- BASE RESOURCE -->
<xs:element name="resource" type="rhq:resource">
@@ -500,7 +553,6 @@
</xs:keyref>
</xs:element>
-
<xs:complexType name="resource" abstract="true">
<xs:annotation>
<xs:appinfo>
@@ -561,6 +613,7 @@
<xs:element ref="rhq:event" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="rhq:content" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="resource-configuration"
type="config:configuration" minOccurs="0"/>
+ <xs:element ref="rhq:bundle-target" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="rhq:help" minOccurs="0"
maxOccurs="1" />
</xs:sequence>
<xs:attribute name="name" use="required"
type="xs:string"/>
@@ -643,7 +696,6 @@
<xs:attribute name="type" type="xs:string"/>
</xs:complexType>
-
<!-- PLATFORM -->
<xs:element name="platform" type="rhq:platform">
@@ -835,7 +887,6 @@
<xs:attribute name="description" type="xs:string"/>
</xs:complexType>
-
<xs:element name="help">
<xs:complexType mixed="true">
<xs:sequence>
@@ -844,7 +895,6 @@
</xs:complexType>
</xs:element>
-
<xs:element name="version">
<xs:annotation>
<xs:documentation>Tags an model element as applicable to a specific set of
version ranges.</xs:documentation>
@@ -863,7 +913,6 @@
</xs:complexType>
</xs:element>
-
<xs:complexType name="processScan">
<xs:annotation>
<xs:appinfo>
@@ -889,7 +938,6 @@
</xs:attribute>
</xs:complexType>
-
<xs:simpleType name="classNameType">
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
@@ -900,8 +948,6 @@
</xs:restriction>
</xs:simpleType>
-
-
<xs:complexType name="runsInsideType">
<xs:sequence>
<xs:element name="parent-resource-type"
type="rhq:parentResourceType" minOccurs="1"
maxOccurs="unbounded">
@@ -909,7 +955,6 @@
</xs:sequence>
</xs:complexType>
-
<xs:complexType name="parentResourceType">
<xs:attribute name="name" type="xs:string"
use="required"/>
<xs:attribute name="plugin" type="xs:string"
use="required"/>
@@ -960,5 +1005,5 @@
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
-
+
</xs:schema>
diff --git a/modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml
index abe6cc7..3c56aa4 100644
--- a/modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml
@@ -31,6 +31,14 @@
</results>
</operation>
'>
+ <!ENTITY bundleTarget '
+ <bundle-target>
+ <destination-base-dir name="Root File System">
+ <value-context>fileSystem</value-context>
+ <value-name>/</value-name>
+ </destination-base-dir>
+ </bundle-target>
+'>
<!ENTITY metrics '
<metric displayName="Hostname"
property="Trait.hostname"
@@ -248,6 +256,8 @@
<c:simple-property name="EstimatedSize"
units="kilobytes"/>
</configuration>
</content>
+
+ &bundleTarget;
</platform>
@@ -343,6 +353,8 @@
</content>
-->
+ &bundleTarget;
+
</platform>
<platform name="Solaris"
@@ -360,6 +372,7 @@
&platformCpu;
&metrics;
&syslogEventDefinition;
+ &bundleTarget;
</platform>
@@ -372,6 +385,7 @@
&nativeMetrics;
&platformCpu;
&metrics;
+ &bundleTarget;
</platform>
<platform name="AIX"
@@ -383,6 +397,7 @@
&nativeMetrics;
&platformCpu;
&metrics;
+ &bundleTarget;
</platform>
<platform name="FreeBSD"
@@ -394,6 +409,7 @@
&nativeMetrics;
&platformCpu;
&metrics;
+ &bundleTarget;
</platform>
<platform name="Mac OS X"
@@ -410,6 +426,7 @@
&platformCpu;
&metrics;
&syslogEventDefinition;
+ &bundleTarget;
</platform>
<platform name="Java"
@@ -419,6 +436,7 @@
&platformSubcategories;
&platformOperations;
&metrics;
+ &bundleTarget;
</platform>
<service name="Network Adapter"
discovery="NetworkAdapterDiscoveryComponent"
class="NetworkAdapterComponent">
commit f89377c912c1e18beaf1972e1b356dfeea6d2e01
Merge: 8c3c91b 3c3dae0
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Jun 1 14:16:41 2011 +0200
Merge branch 'master' into as7plugin
commit 8c3c91b3f8ec9bf187f77dd2ba1e5e67d6572eaa
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Jun 1 14:13:49 2011 +0200
BZ 708956 - (re)implement configuration reading
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
index 93f4c6e..f66cefd 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
@@ -18,6 +18,8 @@
*/
package org.rhq.modules.plugins.jbossas7;
+import java.io.IOException;
+import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -27,6 +29,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
+import org.omg.CORBA.portable.ValueInputStream;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
@@ -39,247 +42,265 @@ import
org.rhq.core.domain.configuration.definition.PropertyDefinition;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionList;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionMap;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
+import org.rhq.core.domain.configuration.definition.PropertyGroupDefinition;
import org.rhq.core.domain.configuration.definition.PropertySimpleType;
import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
+import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+import org.rhq.modules.plugins.jbossas7.json.ReadAttribute;
+import org.rhq.modules.plugins.jbossas7.json.ReadChildrenResources;
import org.rhq.modules.plugins.jbossas7.json.ReadResource;
+import org.rhq.modules.plugins.jbossas7.json.Result;
public class ConfigurationDelegate implements ConfigurationFacet {
+ private static final String SUB_PATH = "_subPath";
+
final Log log = LogFactory.getLog(this.getClass());
+
private List<PROPERTY_VALUE> address;
private ASConnection connection;
private ConfigurationDefinition configurationDefinition;
+ /**
+ * Create a new configuration delegate, that reads the attributes for the resource at
address.
+ * @param configDef Configuration definition for the configuration
+ * @param connection asConnection to use
+ * @param address address of the resource.
+ */
public ConfigurationDelegate(ConfigurationDefinition configDef,ASConnection
connection, List<PROPERTY_VALUE> address) {
this.configurationDefinition = configDef;
this.connection = connection;
this.address = address;
}
+ /**
+ * Trigger loading of a configuration by talking to the remote resource.
+ * @return The initialized configuration
+ * @throws Exception If anything goes wrong.
+ */
public Configuration loadResourceConfiguration() throws Exception {
+ Configuration config = new Configuration();
- Operation op = new ReadResource(address); // TODO set recursive flag? --> try
to narrow it down
+ /*
+ * Grouped definitions get a special treatment, as they may have a special
property
+ * that will be evaluated to look at a child resource or a special attribute or
such
+ */
+ List<PropertyGroupDefinition> gdef =
configurationDefinition.getGroupDefinitions();
+ for (PropertyGroupDefinition pgDef : gdef) {
+ handleGroup(config,pgDef);
+ }
+ /*
+ * Now handle the non-grouped properties
+ */
+ List<PropertyDefinition> nonGroupdedDefs =
configurationDefinition.getNonGroupedProperties();
+ Operation op = new ReadResource(address);
op.addAdditionalProperty("recursive", "true");
- JsonNode json = connection.executeRaw(op);
+ handleProperties(config,nonGroupdedDefs,op);
+
+ return config;
+ }
+
+ /**
+ * Handle a set of grouped properties. The name of the group tells us how to deal
with it:
+ * <ul>
+ * <li>attribute: read the passed attribute of the resource</li>
+ * <li>children: read the children of the given child-type</li>
+ * </ul>
+ * @param config Configuration to return
+ * @param groupDefinition Definition of this group
+ * @throws Exception If anything goes wrong
+ */
+ private void handleGroup(Configuration config, PropertyGroupDefinition
groupDefinition) throws Exception{
+ Operation operation = null;
+ String groupName = groupDefinition.getName();
+ if (groupName.startsWith("attribute:")) {
+ String attr = groupName.substring("attribute:".length());
+ operation = new ReadAttribute(address,attr);
+ }
+ else if (groupName.startsWith("children:")) {
+ String type = groupName.substring("children:".length());
+ operation = new ReadChildrenResources(address,type);
+ operation.addAdditionalProperty("recursive", "true");
+ }
+ else {
+ throw new IllegalArgumentException("Unknown operation in group name
[" + groupName + "]");
+ }
+ List<PropertyDefinition> listedDefs =
configurationDefinition.getPropertiesInGroup(groupName);
+ handleProperties(config,listedDefs,operation);
+
+ }
- Configuration ret = new Configuration();
- ObjectMapper mapper = new ObjectMapper();
- Set<Map.Entry<String, PropertyDefinition>> entrySet =
configurationDefinition.getPropertyDefinitions().entrySet();
- for (Map.Entry<String, PropertyDefinition> propDefEntry : entrySet) {
- PropertyDefinition propDef = propDefEntry.getValue();
- JsonNode sub = json.findValue(propDef.getName());
- if (sub == null) {
+ private void handleProperties(Configuration config, List<PropertyDefinition>
definitions, Operation op) throws Exception {
+ if (definitions.size()==0)
+ return;
+
+ Result operationResult = connection.execute(op);
+ if (!operationResult.isSuccess()) {
+ throw new IOException("Operation " + op + " failed: " +
operationResult.getFailureDescription());
+ }
+
+
+ if (operationResult.getResult() instanceof List) {
+ PropertyList propertyList = handlePropertyList((PropertyDefinitionList)
definitions.get(0),operationResult.getResult());
+
+ if (propertyList!=null)
+ config.put(propertyList);
+ return;
+ }
+
+ Map<String,Object> results = (Map<String, Object>)
operationResult.getResult();
+
+
+ for (PropertyDefinition propDef :definitions ) {
+ String propertyName = propDef.getName();
+/*
+ if (!results.containsKey(propertyName)) {
log.warn(
- "No value for property [" + propDef.getName() + "]
found - check the descriptor (may be valid, \n"+
+ "No value for property [" + propertyName + "]
found - check the descriptor (may be valid, \n"+
"as some attributes are different in domain vs
standalone mode");
continue;
}
+*/
+ Object valueObject = results.get(propertyName);
+
if (propDef instanceof PropertyDefinitionSimple) {
- PropertySimple propertySimple;
-
- if (sub != null) {
- // Property is non-null -> return it.
- propertySimple = new PropertySimple(propDef.getName(),
sub.getValueAsText());
- ret.put(propertySimple);
- } else {
- // property is null? Check if it is required
- if (propDef.isRequired()) {
- String defaultValue = ((PropertyDefinitionSimple)
propDef).getDefaultValue();
- propertySimple = new PropertySimple(propDef.getName(),
defaultValue);
- ret.put(propertySimple);
- }
- }
- } else if (propDef instanceof PropertyDefinitionList) {
- PropertyList propertyList = new PropertyList(propDef.getName());
- PropertyDefinition memberDefinition = ((PropertyDefinitionList)
propDef).getMemberDefinition();
- if (memberDefinition == null) {
- if (sub.isObject()) {
- Iterator<String> fields = sub.getFieldNames();
- while (fields.hasNext()) {
- String fieldName = fields.next();
- JsonNode subNode = sub.get(fieldName);
- PropertySimple propertySimple = new
PropertySimple(propDef.getName(), fieldName);
- propertyList.add(propertySimple);
- }
- } else {
- System.out.println("===Sub not object==="); // TODO
evaluate this branch again
- Iterator<JsonNode> values = sub.getElements();
- while (values.hasNext()) {
- JsonNode node = values.next();
- String value = node.getTextValue();
- PropertySimple propertySimple = new
PropertySimple(propDef.getName(), value);
- propertyList.add(propertySimple);
- }
- }
- } else if (memberDefinition instanceof PropertyDefinitionMap) {
- PropertySimple propertySimple;
-
- if (sub.isArray()) {
- Iterator<JsonNode> entries = sub.getElements();
- while (entries.hasNext()) {
- JsonNode entry = entries.next(); // -> one row in the list
i.e. one map
-
- // Distinguish here?
-
- PropertyMap map = new PropertyMap(
- memberDefinition.getName()); // TODO : name from def
or 'entryKey' ?
- Iterator<JsonNode> fields = entry.getElements(); //
TODO loop over fields from map and not from json
- while (fields.hasNext()) {
- JsonNode field = fields.next();
- if (field.isObject()) {
- // TODO only works for tuples at the moment - migrate
to some different kind of parsing!
- PROPERTY_VALUE prop = mapper.readValue(field,
PROPERTY_VALUE.class);
- // now need to find the names of the properties
- List<PropertyDefinition> defList =
((PropertyDefinitionMap) memberDefinition).getSummaryPropertyDefinitions();
- if (defList.isEmpty())
- throw new IllegalArgumentException(
- "Map " +
memberDefinition.getName() + " has no members");
- String key = defList.get(0).getName();
- String value = prop.getKey();
- propertySimple = new PropertySimple(key, value);
- map.put(propertySimple);
- if (defList.size() > 1) {
- key = defList.get(1).getName();
- value = prop.getValue();
- propertySimple = new PropertySimple(key, value);
- map.put(propertySimple);
-
- }
- } else { // TODO reached?
- String key = field.getValueAsText();
- if (key.equals(
- "PROPERTY_VALUE")) { // TODO this
may change in the future in the AS implementation
- JsonNode pv = entry.findValue(key);
- String k = pv.toString();
- String v = pv.getValueAsText();
- propertySimple = new PropertySimple(k, v);
- map.put(propertySimple);
-
- } else {
- JsonNode value = entry.findValue(key);
- if (value != null) {
- propertySimple = new PropertySimple(key,
value.getValueAsText());
- map.put(propertySimple);
- }
-
- }
- }
- }
- propertyList.add(map);
- }
- } else if (sub.isObject()) {
- Iterator<String> keys = sub.getFieldNames();
- while (keys.hasNext()) {
- String entryKey = keys.next();
-
- JsonNode node = sub.findPath(entryKey);
- PropertyMap map = new PropertyMap(
- memberDefinition.getName()); // TODO : name from def
or 'entryKey' ?
- if (node.isObject()) {
- Iterator<String> fields = node.getFieldNames(); //
TODO loop over fields from map and not from json
- while (fields.hasNext()) {
- String key = fields.next();
-
- propertySimple = new PropertySimple(key,
node.findValue(key).getValueAsText());
- map.put(propertySimple);
- }
- propertyList.add(map);
- } else if (sub.isNull()) {
- List<PropertyDefinition> defList =
((PropertyDefinitionMap) memberDefinition).getSummaryPropertyDefinitions();
- String key = defList.get(0).getName();
- propertySimple = new PropertySimple(key, entryKey);
- map.put(propertySimple);
- }
- }
-
- }
- } else if (memberDefinition instanceof PropertyDefinitionSimple) {
- String name = memberDefinition.getName();
- Iterator<JsonNode> keys = sub.getElements();
- while (keys.hasNext()) {
- JsonNode entry = keys.next();
-
- PropertySimple propertySimple = new PropertySimple(name,
entry.getTextValue());
- propertyList.add(propertySimple);
- }
- }
- ret.put(propertyList);
- } // end List of ..
+
+ PropertySimple value = handlePropertySimple((PropertyDefinitionSimple)
propDef, valueObject);
+ if (value!=null)
+ config.put(value);
+ }
+
+ else if (propDef instanceof PropertyDefinitionList) {
+ PropertyList propertyList = handlePropertyList((PropertyDefinitionList)
propDef,valueObject);
+
+ if (propertyList!=null)
+ config.put(propertyList);
+ }
else if (propDef instanceof PropertyDefinitionMap) {
- PropertyDefinitionMap mapDef = (PropertyDefinitionMap) propDef;
- PropertyMap pm = new PropertyMap(mapDef.getName());
-
- Map<String, PropertyDefinition> memberDefMap =
mapDef.getPropertyDefinitions();
- for (Map.Entry<String, PropertyDefinition> maEntry :
memberDefMap.entrySet()) {
- JsonNode valueNode = json.findValue(maEntry.getKey());
- Property p;
- if (maEntry.getValue() instanceof PropertyDefinitionSimple) {
- p = putProperty(valueNode, maEntry.getValue());
- pm.put(p);
- } else if (maEntry.getValue() instanceof PropertyDefinitionMap) { //
TODO make this recursive?
-
- PropertyDefinitionMap pdm = (PropertyDefinitionMap)
maEntry.getValue();
- Map<String, PropertyDefinition> mmDefMap =
pdm.getPropertyDefinitions();
- for (Map.Entry<String, PropertyDefinition> mmDefEntry :
mmDefMap.entrySet()) {
- if (valueNode != null) {
- JsonNode node2 =
valueNode.findValue(mmDefEntry.getKey());
- System.err.println("Map not yet implemented " +
node2.toString());
- } else
- System.err.println("Value node was null ");
- }
- } else { // PropDefList
- System.err.println("List not yet implemented");
- }
-
-// pm.put(p);
- }
- ret.put(pm);
+ PropertyMap propertyMap = handlePropertyMap((PropertyDefinitionMap)
propDef,valueObject);
+
+ if (propertyMap!=null)
+ config.put(propertyMap);
+ }
+ }
+ }
+
+ PropertySimple handlePropertySimple(PropertyDefinitionSimple propDef, Object
valueObject) {
+ PropertySimple propertySimple;
+
+ String name = propDef.getName();
+ if (valueObject != null) {
+ // Property is non-null -> return it.
+ propertySimple = new PropertySimple(name, valueObject);
+ } else {
+ // property is null? Check if it is required
+ if (propDef.isRequired()) {
+ String defaultValue = ((PropertyDefinitionSimple)
propDef).getDefaultValue();
+ propertySimple = new PropertySimple(name, defaultValue);
+ }
+ else { // Not required and null -> return null
+ propertySimple = new PropertySimple(name,null);
}
}
+ return propertySimple;
- return ret;
}
- PropertySimple putProperty(JsonNode value, PropertyDefinition def) {
- String name = def.getName();
- PropertySimple ps;
+ /**
+ * Handle a Map of ...
+ * @param propDef Definition of the map
+ * @param valueObject the objects to put into the map
+ * @return the populated map
+ */
+ PropertyMap handlePropertyMap(PropertyDefinitionMap propDef, Object valueObject) {
+ PropertyMap propertyMap = new PropertyMap(propDef.getName());
+
+ Map<String, PropertyDefinition> memberDefMap =
propDef.getPropertyDefinitions();
+ Map<String,Object> objects = (Map<String, Object>) valueObject;
+ for (Map.Entry<String, PropertyDefinition> maEntry :
memberDefMap.entrySet()) {
+ String key = maEntry.getKey();
+ // special case: if the key is "*", we just pick the first element
+ Object o ;
+ if (key.equals("*"))
+ o = objects.entrySet().iterator().next().getValue();
+ else
+ o = objects.get(key);
+ Property property;
+ PropertyDefinition value = maEntry.getValue();
+ if (value instanceof PropertyDefinitionSimple)
+ property = handlePropertySimple((PropertyDefinitionSimple) value,o);
+ else if (value instanceof PropertyDefinitionList)
+ property = handlePropertyList((PropertyDefinitionList) value,o);
+ else if (value instanceof PropertyDefinitionMap)
+ property = handlePropertyMap((PropertyDefinitionMap) value,o);
+ else
+ throw new IllegalArgumentException("Unknown property type in map
property [" + propDef.getName() +"]");
+
+ if (property!=null)
+ propertyMap.put(property);
+ else
+ System.out.println("Property " + key + " was null");
- if (value == null) {
- if (def instanceof PropertyDefinitionSimple) {
- PropertyDefinitionSimple pds = (PropertyDefinitionSimple) def;
- return new PropertySimple(name, pds.getDefaultValue());
- } else
- return new PropertySimple(name, null);
}
- PropertySimpleType type = ((PropertyDefinitionSimple) def).getType();
-
- switch (type) {
- case BOOLEAN:
- ps = new PropertySimple(name, value.getBooleanValue());
- break;
- case FLOAT:
- case DOUBLE:
- ps = new PropertySimple(name, value.getDoubleValue());
- break;
- case INTEGER:
- ps = new PropertySimple(name, value.getIntValue());
- break;
- case LONG:
- ps = new PropertySimple(name, value.getLongValue());
- break;
- default:
- ps = new PropertySimple(name, value.getTextValue());
+
+ return propertyMap;
+ }
+
+ /**
+ * Handle a List of ...
+ * @param propDef Definition of this list
+ * @param valueObject The objects to put into the list
+ * @return the property that describes the list.
+ */
+ PropertyList handlePropertyList(PropertyDefinitionList propDef,Object valueObject) {
+ String propertyName = propDef.getName();
+ PropertyList propertyList = new PropertyList(propertyName);
+ PropertyDefinition memberDefinition = propDef.getMemberDefinition();
+ if (memberDefinition==null)
+ throw new IllegalArgumentException("Member definition for property
[" + propertyName + "] was null");
+
+ if (valueObject==null) {
+// System.out.println("vo null");
+ return null;
}
- return ps;
+ Collection<Object> objects;
+ if (valueObject instanceof List)
+ objects = (List<Object>) valueObject;
+ else /*if (valueObject instanceof Map)*/ {
+ objects = ((Map)valueObject).values();
+ }
+
+ if (memberDefinition instanceof PropertyDefinitionSimple) {
+ for (Object obj : objects) {
+ PropertySimple property = handlePropertySimple((PropertyDefinitionSimple)
memberDefinition,
+ obj);
+ if (property!=null)
+ propertyList.add(property);
+ }
+ }
+ else if (memberDefinition instanceof PropertyDefinitionMap) {
+ for (Object obj : objects) {
+ Map<String,Object> map = (Map<String, Object>) obj;
+
+ PropertyMap propertyMap = handlePropertyMap(
+ (PropertyDefinitionMap) propDef.getMemberDefinition(),map);
+ if (propertyMap!=null)
+ propertyList.add(propertyMap);
+ }
+ }
+ // TODO List of lists ?
+ return propertyList;
}
+
+
public void updateResourceConfiguration(ConfigurationUpdateReport report) {
Configuration conf = report.getConfiguration();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenNames.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenNames.java
index 23d10bb..e521e83 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenNames.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenNames.java
@@ -21,7 +21,7 @@ package org.rhq.modules.plugins.jbossas7.json;
import java.util.List;
/**
- * Operation that reads children of a given type from an address
+ * Operation that reads names of children of a given type from an address
* @author Heiko W. Rupp
*/
public class ReadChildrenNames extends Operation {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenResources.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenResources.java
new file mode 100644
index 0000000..543c15b
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenResources.java
@@ -0,0 +1,37 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import java.util.List;
+
+/**
+ * Operation that reads children of a given type from an address
+ * @author Heiko W. Rupp
+ */
+public class ReadChildrenResources extends Operation {
+
+ /**
+ * Read children names of a given type below a given address
+ * @param address Address to look at e.g. /profile/default/subsystem/messaging
+ * @param childType e.g. queue
+ */
+ public ReadChildrenResources(List<PROPERTY_VALUE> address, String childType) {
+
super("read-children-resources",address,"child-type",childType);
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 45fa342..6aa6dd5 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -274,15 +274,24 @@
<resource-configuration>
- <c:list-property name="schema-locations"
displayName="Schema locations">
- <c:map-property name="location">
- <c:simple-property name="urn"
readOnly="true"/>
- <c:simple-property name="location"
readOnly="true"/>
- </c:map-property>
- </c:list-property>
- <c:list-property name="extension" displayName="Installed
extensions">
- <c:simple-property name="name"
readOnly="true"/>
- </c:list-property>
+
+ <c:group name="attribute:schema-locations">
+
+ <c:list-property name="schema-locations"
displayName="Schema locations">
+ <c:map-property name="*">
+ <c:simple-property name="*"
readOnly="true" displayName="Schema name"/>
+ </c:map-property>
+ </c:list-property>
+ </c:group>
+
+ <c:group name="children:extension" displayName="Installed
extensions">
+
+ <c:list-property name="extension"
displayName="Installed extensions">
+ <c:map-property name="*"
displayName="Name">
+ <c:simple-property name="module"
displayName="Module name"/>
+ </c:map-property>
+ </c:list-property>
+ </c:group>
</resource-configuration>
@@ -649,13 +658,13 @@
<c:simple-property name="bean-validation-enabled"
required="true" type="boolean" readOnly="true"
description="Specify whether bean validation is
enabled"/>
<c:simple-property name="archive-validation-enabled"
type="boolean" readOnly="true" description="Enabling the
validation"/>
- <c:simple-property name="archive-validation-fail-on-error"
type="boolean" readOnly="true" default="true"
+ <c:simple-property name="archive-validation-fail-on-error"
type="boolean" readOnly="true" defaultValue="true"
description="Should an archive validation error
report fail the deployment. Default: true"/>
- <c:simple-property name="archive-validation-fail-on-warn"
type="boolean" readOnly="true" default="false"
+ <c:simple-property name="archive-validation-fail-on-warn"
type="boolean" readOnly="true" defaultValue="false"
description="Should an archive validation warning
report fail the deployment. Default: false"/>
- <c:simple-property name="cached-connection-manager-debug"
type="boolean" readOnly="true" default="false"
+ <c:simple-property name="cached-connection-manager-debug"
type="boolean" readOnly="true" defaultValue="false"
description="enable/disable debug information logging
for cached connection manager"/>
- <c:simple-property name="cached-connection-manager-error"
type="boolean" readOnly="true" default="false"
+ <c:simple-property name="cached-connection-manager-error"
type="boolean" readOnly="true" defaultValue="false"
description="enable/disable error information logging
for cached connection manager"/>
</resource-configuration>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationTest.java
index afd6a7f..6f3a260 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationTest.java
@@ -18,6 +18,9 @@
*/
package org.rhq.modules.plugins.jbossas7;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
import java.net.URL;
import java.util.List;
import java.util.Map;
@@ -51,6 +54,7 @@ import
org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
import org.rhq.core.domain.configuration.definition.PropertySimpleType;
import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.Result;
/**
* Tests loading and writing configurations
@@ -76,7 +80,7 @@ public class ConfigurationTest {
definition.put(new PropertyDefinitionSimple("access-log",
"Access-Log", false,
PropertySimpleType.STRING));
definition.put(new PropertyDefinitionSimple("rewrite",
"Rewrite", false,
- PropertySimpleType.STRING));
+ PropertySimpleType.BOOLEAN));
definition.put(new PropertyDefinitionSimple("notThere",
"NotThere", false,
PropertySimpleType.STRING));
@@ -86,7 +90,7 @@ public class ConfigurationTest {
String resultString = " {\"outcome\" : \"success\",
\"result\" : {\"alias\" :
[\"example.com\",\"example2.com\"],"+
- " \"access-log\" : null, \"rewrite\" : null},
\"compensating-operation\" : null}";
+ " \"access-log\" : \"my.log\",
\"rewrite\" : true}, \"compensating-operation\" : null}";
ObjectMapper mapper = new ObjectMapper();
ComplexResult result = mapper.readValue(resultString,ComplexResult.class);
@@ -102,7 +106,27 @@ public class ConfigurationTest {
PropertyList aliases = (PropertyList) config.get("alias");
List<Property> list = aliases.getList();
assert list.size()==2;
- assert config.get("notThere")==null;
+ int count=2;
+ for (Property p: list) {
+ PropertySimple ps = (PropertySimple) p;
+ if (ps.getStringValue().equals("example.com"))
+ count--;
+ if (ps.getStringValue().equals("example2.com"))
+ count--;
+ }
+ assert count==0 : "Did not find all needed aliases";
+
+ Property notThere = config.get("notThere");
+ assert notThere !=null;
+ assert ((PropertySimple)notThere).getStringValue()==null;
+
+ PropertySimple property = (PropertySimple) config.get("rewrite");
+ assert property!=null;
+ assert property.getBooleanValue();
+
+ property = (PropertySimple) config.get("access-log");
+ assert property!=null && property.getStringValue()!=null;
+ assert property.getStringValue().equals("my.log");
}
public void test2() throws Exception {
@@ -247,10 +271,165 @@ public class ConfigurationTest {
assert
((PropertySimple)map2.get("multicast-port")).getIntegerValue()==18447;
}
}
+ }
+
+
+ public void test4() throws Exception {
+
+ String resultString = loadJsonFromFile("extensions.json");
+
+ ConfigurationDefinition definition = loadDescriptor("test4");
+
+ ObjectMapper mapper = new ObjectMapper();
+ Result result = mapper.readValue(resultString,Result.class);
+ JsonNode json = mapper.valueToTree(result);
+
+ FakeConnection connection = new FakeConnection();
+ connection.setContent(json);
+
+ ConfigurationDelegate delegate = new
ConfigurationDelegate(definition,connection,null);
+ Configuration config = delegate.loadResourceConfiguration();
+
+ assert config != null;
+ PropertyList extensions = (PropertyList) config.get("extension");
+ assert extensions !=null;
+ List<Property> extensionList = extensions.getList();
+ assert extensionList.size()==22 : "Expected 22 extensions, got " +
extensionList.size();
+ PropertyMap propertyMap = (PropertyMap) extensionList.get(0);
+ assert propertyMap != null;
+ PropertyMap starMap = (PropertyMap) propertyMap.get("*");
+ assert starMap!=null;
+ PropertySimple module = (PropertySimple) starMap.get("module");
+ assert module!=null : "Module was null, but should not";
+ String stringValue = module.getStringValue();
+ assert stringValue!=null : "module property has no value";
+ assert stringValue.equals("org.jboss.as.arquillian.service");
+
}
+ public void test5() throws Exception {
+
+ String resultString = loadJsonFromFile("schema-locations.json");
+
+ ConfigurationDefinition definition = loadDescriptor("test5");
+ ObjectMapper mapper = new ObjectMapper();
+ ComplexResult result = mapper.readValue(resultString,ComplexResult.class);
+ JsonNode json = mapper.valueToTree(result);
+
+ FakeConnection connection = new FakeConnection();
+ connection.setContent(json);
+
+ ConfigurationDelegate delegate = new
ConfigurationDelegate(definition,connection,null);
+ Configuration config = delegate.loadResourceConfiguration();
+
+ assert config != null;
+ PropertyList locations = (PropertyList)
config.get("schema-locations");
+ assert locations!=null;
+ List<Property> list = locations.getList();
+ assert list.size()==21 : "List does not contain 21 entries, but " +
list.size();
+ PropertyMap propertyMap = (PropertyMap) list.get(0);
+ assert propertyMap !=null;
+ Map<String,Property> map = propertyMap.getMap();
+ assert map.size()==1;
+ PropertySimple urnProp = (PropertySimple) map.get("*");
+ String stringValue = urnProp.getStringValue();
+ assert stringValue!=null : "Location property has no value";
+ assert stringValue.endsWith(".xsd");
+
+ }
+
+ public void test6() throws Exception {
+
+ String resultString = loadJsonFromFile("loopback.json");
+
+ ConfigurationDefinition definition = loadDescriptor("test6and7");
+
+ ObjectMapper mapper = new ObjectMapper();
+ ComplexResult result = mapper.readValue(resultString,ComplexResult.class);
+ JsonNode json = mapper.valueToTree(result);
+
+ FakeConnection connection = new FakeConnection();
+ connection.setContent(json);
+
+ ConfigurationDelegate delegate = new
ConfigurationDelegate(definition,connection,null);
+ Configuration config = delegate.loadResourceConfiguration();
+
+ assert config != null;
+ PropertySimple nameProperty = (PropertySimple) config.get("name");
+ assert nameProperty !=null;
+ String stringValue = nameProperty.getStringValue();
+ assert stringValue!=null;
+ assert stringValue.equals("default");
+
+ Property criteria = config.get("criteria");
+ assert criteria !=null;
+ PropertySimple critProp = (PropertySimple) criteria;
+ stringValue = critProp.getStringValue();
+ assert stringValue!=null;
+
+ }
+
+ public void test7() throws Exception {
+
+ String resultString = loadJsonFromFile("interfaces.json");
+
+ ConfigurationDefinition definition = loadDescriptor("test6and7");
+
+ ObjectMapper mapper = new ObjectMapper();
+ ComplexResult result = mapper.readValue(resultString,ComplexResult.class);
+ JsonNode json = mapper.valueToTree(result);
+
+ FakeConnection connection = new FakeConnection();
+ connection.setContent(json);
+
+ ConfigurationDelegate delegate = new
ConfigurationDelegate(definition,connection,null);
+ Configuration config = delegate.loadResourceConfiguration();
+
+ assert config != null;
+ PropertySimple nameProperty = (PropertySimple) config.get("name");
+ assert nameProperty !=null;
+ String stringValue = nameProperty.getStringValue();
+ assert stringValue!=null;
+ assert stringValue.equals("public");
+
+ Property criteria = config.get("criteria");
+ assert criteria !=null;
+ PropertySimple critProp = (PropertySimple) criteria;
+ stringValue = critProp.getStringValue();
+ assert stringValue!=null;
+ assert stringValue.equals("any-ipv4-address");
+
+ }
+
+ public void test8() throws Exception {
+
+ String resultString = loadJsonFromFile("connector.json");
+
+ ConfigurationDefinition definition = loadDescriptor("test8");
+
+ ObjectMapper mapper = new ObjectMapper();
+ ComplexResult result = mapper.readValue(resultString,ComplexResult.class);
+ JsonNode json = mapper.valueToTree(result);
+
+ FakeConnection connection = new FakeConnection();
+ connection.setContent(json);
+
+ ConfigurationDelegate delegate = new
ConfigurationDelegate(definition,connection,null);
+ Configuration config = delegate.loadResourceConfiguration();
+ assert config!=null;
+ assert config.getAllProperties().size()==8 : "Did not find 8 properties, but
" + config.getAllProperties().size();
+ Property prop = config.get("bean-validation-enabled");
+ assert prop != null;
+ PropertySimple ps = (PropertySimple) prop;
+ assert ps.getBooleanValue();
+ prop = config.get("cached-connection-manager-error");
+ assert prop!=null;
+ ps = (PropertySimple) prop;
+ assert ps.getBooleanValue()==false;
+
+ }
@BeforeSuite
private void loadPluginDescriptor() throws Exception {
@@ -291,6 +470,22 @@ public class ConfigurationTest {
return null;
}
+ private String loadJsonFromFile(String fileName) throws Exception {
+ InputStream inputStream =
this.getClass().getClassLoader().getResourceAsStream(fileName);
+ BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
+ try {
+ StringBuilder builder = new StringBuilder();
+ String line;
+ while ((line = reader.readLine()) != null) {
+ builder.append(line);
+ }
+ return builder.toString();
+ }
+ finally {
+ reader.close();
+ }
+ }
+
/**
diff --git a/modules/plugins/jboss-as-7/src/test/resources/complexInterface.json
b/modules/plugins/jboss-as-7/src/test/resources/complexInterface.json
new file mode 100644
index 0000000..bd048db
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/test/resources/complexInterface.json
@@ -0,0 +1,14 @@
+{
+ "outcome" : "success",
+ "result" : {
+ "name" : "complex",
+ "criteria" : [ {
+ "any" : [ {
+ "subnet-match" : "192.168.0.0/16"
+ }, "public-address" ]
+ }, {
+ "not" : [ "site-local-address" ]
+ }, "up", "multicast" ]
+ },
+ "compensating-operation" : null
+}
\ No newline at end of file
diff --git a/modules/plugins/jboss-as-7/src/test/resources/connector.json
b/modules/plugins/jboss-as-7/src/test/resources/connector.json
new file mode 100644
index 0000000..78d6850
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/test/resources/connector.json
@@ -0,0 +1,10 @@
+{
+ "outcome" : "success",
+ "result" : {
+ "default-workmanager-short-running-thread-pool" :
"jca-short-running",
+ "default-workmanager-long-running-thread-pool" :
"jca-long-running",
+ "bean-validation-enabled" : true,
+ "archive-validation-enabled" : true
+ },
+ "compensating-operation" : null
+}
\ No newline at end of file
diff --git a/modules/plugins/jboss-as-7/src/test/resources/domain-result.json
b/modules/plugins/jboss-as-7/src/test/resources/domain-result.json
new file mode 100644
index 0000000..9312a97
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/test/resources/domain-result.json
@@ -0,0 +1,2113 @@
+{
+ "outcome" : "success",
+ "result" : {
+ "host" : {
+ "local" : {
+ "name" : "local",
+ "namespaces" : [ {
+ "xsi" : "http://www.w3.org/2001/XMLSchema-instance"
+ } ],
+ "schema-locations" : [ {
+ "urn:jboss:domain:1.0" : "jboss_7_0.xsd"
+ } ],
+ "extension" : null,
+ "system-property" : null,
+ "path" : null,
+ "management" : {
+ "security-realms" : {
+ "security-realm" : null
+ },
+ "connections" : {
+ "connection" : null
+ }
+ },
+ "management-interface" : {
+ "native-interface" : {
+ "interface" : "public",
+ "port" : 9999
+ },
+ "http-interface" : {
+ "interface" : "public",
+ "port" : 9990
+ }
+ },
+ "server-config" : {
+ "server-one" : {
+ "path" : null,
+ "system-property" : null,
+ "interface" : null,
+ "jvm" : {
+ "default" : {
+ "type" : null,
+ "agent-lib" : null,
+ "agent-path" : null,
+ "env-classpath-ignored" : null,
+ "environment-variables" : null,
+ "heap-size" : null,
+ "max-heap-size" : null,
+ "java-agent" : null,
+ "java-home" : null,
+ "jvm-options" : null,
+ "permgen-size" : null,
+ "max-permgen-size" : null,
+ "stack-size" : null
+ }
+ },
+ "socket-binding-group" : null,
+ "socket-binding-port-offset" : null,
+ "name" : "server-one",
+ "group" : "main-server-group",
+ "auto-start" : true
+ },
+ "server-two" : {
+ "path" : null,
+ "system-property" : null,
+ "interface" : null,
+ "jvm" : {
+ "default" : {
+ "type" : null,
+ "agent-lib" : null,
+ "agent-path" : null,
+ "env-classpath-ignored" : null,
+ "environment-variables" : null,
+ "heap-size" : "64m",
+ "max-heap-size" : "256m",
+ "java-agent" : null,
+ "java-home" : null,
+ "jvm-options" : null,
+ "permgen-size" : null,
+ "max-permgen-size" : null,
+ "stack-size" : null
+ }
+ },
+ "socket-binding-group" : "standard-sockets",
+ "socket-binding-port-offset" : 150,
+ "name" : "server-two",
+ "group" : "main-server-group",
+ "auto-start" : true
+ },
+ "server-three" : {
+ "path" : null,
+ "system-property" : null,
+ "interface" : null,
+ "jvm" : null,
+ "socket-binding-group" : "standard-sockets",
+ "socket-binding-port-offset" : 250,
+ "name" : "server-three",
+ "group" : "other-server-group",
+ "auto-start" : false
+ }
+ },
+ "domain-controller" : {
+ "local" : {
+ }
+ },
+ "interface" : {
+ "loopback" : {
+ "name" : "loopback",
+ "criteria" : [ {
+ "inet-address" : "127.0.0.1"
+ } ]
+ },
+ "public" : {
+ "name" : "public",
+ "criteria" : "any-ipv4-address"
+ }
+ },
+ "jvm" : {
+ "default" : {
+ "type" : null,
+ "agent-lib" : null,
+ "agent-path" : null,
+ "env-classpath-ignored" : null,
+ "environment-variables" : null,
+ "heap-size" : "64m",
+ "max-heap-size" : "128m",
+ "java-agent" : null,
+ "java-home" : null,
+ "jvm-options" : null,
+ "permgen-size" : null,
+ "max-permgen-size" : null,
+ "stack-size" : null
+ }
+ },
+ "server" : {
+ "server-one" : {
+ "namespaces" : [ {
+ "xsi" : "http://www.w3.org/2001/XMLSchema-instance"
+ } ],
+ "schema-locations" : [ {
+ "urn:jboss:domain:1.0" : "jboss_7_0.xsd"
+ }, {
+ "urn:jboss:domain:arquillian:1.0" :
"jboss-arquillian.xsd"
+ }, {
+ "urn:jboss:domain:connector:1.0" :
"jboss-connector.xsd"
+ }, {
+ "urn:jboss:domain:datasources:1.0" :
"jboss-datasources.xsd"
+ }, {
+ "urn:jboss:domain:ejb3:1.0" : "jboss-ejb3.xsd"
+ }, {
+ "urn:jboss:domain:ee:1.0" : "jboss-ee.xsd"
+ }, {
+ "urn:jboss:domain:jaxrs:1.0" : "jboss-jaxrs.xsd"
+ }, {
+ "urn:jboss:domain:jmx:1.0" : "jboss-jmx.xsd"
+ }, {
+ "urn:jboss:domain:jpa:1.0" : "jboss-jpa.xsd"
+ }, {
+ "urn:jboss:domain:messaging:1.0" :
"jboss-messaging.xsd"
+ }, {
+ "urn:jboss:domain:naming:1.0" : "jboss-naming.xsd"
+ }, {
+ "urn:jboss:domain:osgi:1.0" : "jboss-osgi.xsd"
+ }, {
+ "urn:jboss:domain:remoting:1.0" : "jboss-remoting.xsd"
+ }, {
+ "urn:jboss:domain:resourceadapters:1.0" :
"jboss-resource-adapters.xsd"
+ }, {
+ "urn:jboss:domain:sar:1.0" : "jboss-sar.xsd"
+ }, {
+ "urn:jboss:domain:threads:1.0" : "jboss-threads.xsd"
+ }, {
+ "urn:jboss:domain:transactions:1.0" : "jboss-txn.xsd"
+ }, {
+ "urn:jboss:domain:web:1.0" : "jboss-web.xsd"
+ }, {
+ "urn:jboss:domain:security:1.0" : "jboss-security.xsd"
+ }, {
+ "urn:jboss:domain:webservices:1.0" :
"jboss-webservices.xsd"
+ }, {
+ "urn:jboss:domain:weld:1.0" : "jboss-weld.xsd"
+ } ],
+ "name" : "server-one",
+ "management" : {
+ "security-realms" : {
+ "security-realm" : null
+ },
+ "connections" : {
+ "connection" : null
+ }
+ },
+ "management-interface" : null,
+ "profile-name" : null,
+ "extension" : {
+ "org.jboss.as.arquillian.service" : {
+ "module" : "org.jboss.as.arquillian.service"
+ },
+ "org.jboss.as.connector" : {
+ "module" : "org.jboss.as.connector"
+ },
+ "org.jboss.as.jmx" : {
+ "module" : "org.jboss.as.jmx"
+ },
+ "org.jboss.as.jpa" : {
+ "module" : "org.jboss.as.jpa"
+ },
+ "org.jboss.as.logging" : {
+ "module" : "org.jboss.as.logging"
+ },
+ "org.jboss.as.ee" : {
+ "module" : "org.jboss.as.ee"
+ },
+ "org.jboss.as.ejb3" : {
+ "module" : "org.jboss.as.ejb3"
+ },
+ "org.jboss.as.jaxrs" : {
+ "module" : "org.jboss.as.jaxrs"
+ },
+ "org.jboss.as.messaging" : {
+ "module" : "org.jboss.as.messaging"
+ },
+ "org.jboss.as.naming" : {
+ "module" : "org.jboss.as.naming"
+ },
+ "org.jboss.as.osgi" : {
+ "module" : "org.jboss.as.osgi"
+ },
+ "org.jboss.as.remoting" : {
+ "module" : "org.jboss.as.remoting"
+ },
+ "org.jboss.as.sar" : {
+ "module" : "org.jboss.as.sar"
+ },
+ "org.jboss.as.security" : {
+ "module" : "org.jboss.as.security"
+ },
+ "org.jboss.as.threads" : {
+ "module" : "org.jboss.as.threads"
+ },
+ "org.jboss.as.transactions" : {
+ "module" : "org.jboss.as.transactions"
+ },
+ "org.jboss.as.web" : {
+ "module" : "org.jboss.as.web"
+ },
+ "org.jboss.as.weld" : {
+ "module" : "org.jboss.as.weld"
+ },
+ "org.jboss.as.webservices" : {
+ "module" : "org.jboss.as.webservices"
+ }
+ },
+ "system-property" : {
+ "java.net.preferIPv4Stack" : {
+ "value" : "true"
+ }
+ },
+ "path" : null,
+ "subsystem" : {
+ "logging" : {
+ "logger" : {
+ },
+ "async-handler" : {
+ },
+ "console-handler" : {
+ "CONSOLE" : {
+ "autoflush" : true,
+ "encoding" : null,
+ "formatter" : "%d{HH:mm:ss,SSS} %-5p [%c] (%t)
%s%E%n",
+ "level" : "INFO",
+ "queue-length" : null
+ }
+ },
+ "file-handler" : {
+ },
+ "periodic-rotating-file-handler" : {
+ "FILE" : {
+ "autoflush" : true,
+ "encoding" : null,
+ "formatter" : "%d{HH:mm:ss,SSS} %-5p [%c] (%t)
%s%E%n",
+ "level" : "INFO",
+ "file" : {
+ "path" : "server.log",
+ "relative-to" : "jboss.server.log.dir"
+ },
+ "suffix" : ".yyyy-MM-dd"
+ }
+ },
+ "size-rotating-file-handler" : {
+ },
+ "root-logger" : {
+ "level" : "INFO",
+ "handlers" : [ "CONSOLE", "FILE" ]
+ }
+ },
+ "threads" : {
+ "bounded-queue-thread-pool" : {
+ "jca-short-running" : {
+ "name" : "jca-short-running",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ },
+ "blocking" : true,
+ "allow-core-timeout" : false,
+ "queue-length" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "core-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ }
+ },
+ "jca-long-running" : {
+ "name" : "jca-long-running",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ },
+ "blocking" : true,
+ "allow-core-timeout" : false,
+ "queue-length" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "core-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ }
+ },
+ "ejb3-async" : {
+ "name" : "ejb3-async",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ },
+ "blocking" : true,
+ "allow-core-timeout" : false,
+ "queue-length" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "core-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ }
+ }
+ },
+ "queueless-thread-pool" : {
+ },
+ "scheduled-thread-pool" : {
+ "remoting" : {
+ "name" : "remoting",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ }
+ }
+ },
+ "thread-factory" : {
+ },
+ "unbounded-queue-thread-pool" : {
+ }
+ },
+ "arquillian" : {
+ },
+ "ee" : null,
+ "ejb3" : {
+ },
+ "naming" : {
+ },
+ "security" : {
+ "security-domain" : {
+ "other" : {
+ "authentication" : [ {
+ "code" : "UsersRoles",
+ "flag" : "required"
+ } ]
+ }
+ }
+ },
+ "transactions" : {
+ "core-environment" : {
+ "process-id" : {
+ "uuid" : "uuid"
+ },
+ "node-identifier" : null,
+ "relative-to" : null,
+ "path" : null
+ },
+ "recovery-environment" : {
+ "socket-binding" : "txn-recovery-environment",
+ "status-socket-binding" : "txn-status-manager"
+ },
+ "coordinator-environment" : {
+ "enable-statistics" : null,
+ "default-timeout" : null
+ },
+ "object-store" : {
+ "relative-to" : null,
+ "path" : null
+ }
+ },
+ "remoting" : {
+ "thread-pool" : "remoting",
+ "connector" : {
+ }
+ },
+ "jmx" : {
+ "server-binding" : "jmx-connector-server",
+ "registry-binding" : "jmx-connector-registry"
+ },
+ "jpa" : {
+ "default-datasource" : ""
+ },
+ "sar" : {
+ },
+ "weld" : {
+ },
+ "connector" : {
+ "default-workmanager-short-running-thread-pool" :
"jca-short-running",
+ "default-workmanager-long-running-thread-pool" :
"jca-long-running",
+ "bean-validation-enabled" : true,
+ "archive-validation-enabled" : true
+ },
+ "datasources" : {
+ "data-source" : {
+ "java:/H2DS" : {
+ "connection-url" :
"jdbc:h2:mem:test;DB_CLOSE_DELAY=-1",
+ "jndi-name" : "java:/H2DS",
+ "driver-name" : "h2",
+ "pool-name" : "H2DS",
+ "use-java-context" : true,
+ "enabled" : true,
+ "pool-prefill" : false,
+ "pool-use-strict-min" : false,
+ "user-name" : "sa",
+ "password" : "sa",
+ "background-validation" : false,
+ "use-fast-fail" : false,
+ "validate-on-match" : false
+ }
+ },
+ "xa-data-source" : null,
+ "jdbc-driver" : {
+ "h2" : {
+ "driver-name" : "h2",
+ "driver-module-name" : "com.h2database.h2",
+ "driver-xa-datasource-class-name" :
"org.h2.jdbcx.JdbcDataSource"
+ }
+ }
+ },
+ "resource-adapters" : {
+ "resource-adapter" : null
+ },
+ "osgi" : {
+ "activation" : "lazy",
+ "configuration" : {
+ "pid" :
"org.apache.felix.webconsole.internal.servlet.OsgiManager",
+ "configuration_properties" : {
+ "manager.root" : "jboss-osgi"
+ }
+ },
+ "properties" : {
+ "org.jboss.osgi.system.modules" :
"org.apache.commons.logging,\n
org.apache.log4j,\n
org.jboss.as.osgi,\n
org.slf4j,",
+ "org.osgi.framework.system.packages.extra" :
"org.apache.commons.logging;version=1.1.1,\n
org.apache.log4j;version=1.2,\n
org.jboss.as.osgi.service;version=7.0,\n
org.jboss.osgi.deployment.interceptor;version=1.0,\n
org.jboss.osgi.spi.capability;version=1.0,\n
org.jboss.osgi.spi.util;version=1.0,\n
org.jboss.osgi.testing;version=1.0,\n
org.jboss.osgi.vfs;version=1.0,\n
org.slf4j;version=1.5.10,",
+ "org.osgi.framework.startlevel.beginning" : "1"
+ },
+ "modules" : {
+ "javaee.api" : null,
+ "org.jboss.as.arquillian.aggregate" : null,
+ "org.jboss.logging" : null,
+ "org.apache.aries.util" : null,
+ "org.jboss.osgi.webconsole" : null,
+ "org.osgi.compendium" : null,
+ "org.apache.felix.log" : {
+ "start" : "1"
+ },
+ "org.jboss.osgi.logging" : {
+ "start" : "1"
+ },
+ "org.apache.aries.jmx" : {
+ "start" : "2"
+ },
+ "org.apache.felix.configadmin" : {
+ "start" : "2"
+ },
+ "org.apache.felix.eventadmin" : {
+ "start" : "2"
+ },
+ "org.apache.felix.metatype" : {
+ "start" : "2"
+ },
+ "org.apache.felix.webconsole" : {
+ "start" : "2"
+ },
+ "org.jboss.as.osgi.configadmin" : {
+ "start" : "2"
+ },
+ "org.jboss.osgi.jmx" : {
+ "start" : "2"
+ },
+ "org.jboss.osgi.http" : {
+ "start" : "2"
+ },
+ "org.jboss.osgi.blueprint" : {
+ "start" : "3"
+ },
+ "org.jboss.osgi.webapp" : {
+ "start" : "3"
+ },
+ "org.jboss.osgi.xerces" : {
+ "start" : "3"
+ }
+ }
+ },
+ "messaging" : {
+ "acceptor" : {
+ "in-vm" : {
+ "type" : "InVM",
+ "server-id" : 0,
+ "param" : null
+ },
+ "netty" : {
+ "type" : "Remote",
+ "socket-binding" : "messaging",
+ "param" : null
+ },
+ "netty-throughput" : {
+ "type" : "Remote",
+ "socket-binding" : "messaging-throughput",
+ "param" : [ {
+ "batch-delay" : "50"
+ }, {
+ "direct-deliver" : "false"
+ } ]
+ }
+ },
+ "address-setting" : {
+ "#" : {
+ "dead-letter-address" : "jms.queue.DLQ",
+ "expiry-address" : "jms.queue.ExpiryQueue",
+ "redelivery-delay" : "0",
+ "max-size-bytes" : "10485760",
+ "message-counter-history-day-limit" : "10",
+ "address-full-policy" : "BLOCK"
+ }
+ },
+ "connector" : {
+ "in-vm" : {
+ "type" : "InVM",
+ "server-id" : 0,
+ "param" : null
+ },
+ "netty" : {
+ "type" : "Remote",
+ "socket-binding" : "messaging",
+ "param" : null
+ },
+ "netty-throughput" : {
+ "type" : "Remote",
+ "socket-binding" : "messaging-throughput",
+ "param" : [ {
+ "batch-delay" : "50"
+ } ]
+ }
+ },
+ "journal-min-files" : "2",
+ "journal-type" : "NIO",
+ "journal-file-size" : "102400",
+ "persistence-enabled" : false,
+ "security-setting" : {
+ "#" : {
+ "guest" : {
+ "send" : true,
+ "consume" : true,
+ "createDurableQueue" : false,
+ "deleteDurableQueue" : false,
+ "createNonDurableQueue" : true,
+ "deleteNonDurableQueue" : true,
+ "manage" : false
+ }
+ }
+ },
+ "queue" : null
+ },
+ "jaxrs" : {
+ },
+ "jms" : {
+ "connection-factory" : {
+ "InVmConnectionFactory" : {
+ "connector" : {
+ "in-vm" : {
+ "backup-connector-name" : "netty"
+ }
+ },
+ "entries" : [ "java:/ConnectionFactory" ]
+ },
+ "RemoteConnectionFactory" : {
+ "connector" : {
+ "netty" : {
+ "backup-connector-name" : "in-vm"
+ }
+ },
+ "entries" : [ "RemoteConnectionFactory" ]
+ }
+ },
+ "queue" : {
+ "testQueue" : {
+ "entries" : [ "queue/test" ]
+ }
+ },
+ "topic" : {
+ "testTopic" : {
+ "entries" : [ "topic/test" ]
+ }
+ }
+ },
+ "web" : {
+ "configuration" : null,
+ "connector" : {
+ "http" : {
+ "protocol" : "HTTP/1.1",
+ "socket-binding" : "http",
+ "scheme" : "http",
+ "virtual-server" : null,
+ "ssl" : null
+ }
+ },
+ "virtual-server" : {
+ "localhost" : {
+ "alias" : [ "example.com" ],
+ "access-log" : null,
+ "rewrite" : null,
+ "default-web-module" : null,
+ "enable-welcome-root" : false
+ }
+ }
+ },
+ "webservices" : {
+ "modify-wsdl-address" : true,
+ "wsdl-host" : "localhost",
+ "endpoint" : {
+ }
+ }
+ },
+ "interface" : {
+ "loopback" : {
+ "name" : "loopback",
+ "criteria" : [ {
+ "inet-address" : "127.0.0.1"
+ } ]
+ },
+ "external" : {
+ "name" : "external",
+ "criteria" : "any-ipv4-address"
+ },
+ "public" : {
+ "name" : "public",
+ "criteria" : "any-ipv4-address"
+ }
+ },
+ "socket-binding-group" : {
+ "standard-sockets" : {
+ "name" : "standard-sockets",
+ "default-interface" : "external",
+ "port-offset" : 0,
+ "socket-binding" : {
+ "jmx-connector-registry" : {
+ "name" : "jmx-connector-registry",
+ "interface" : null,
+ "port" : 1090,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "jmx-connector-server" : {
+ "name" : "jmx-connector-server",
+ "interface" : null,
+ "port" : 1091,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "jndi" : {
+ "name" : "jndi",
+ "interface" : null,
+ "port" : 1099,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "http" : {
+ "name" : "http",
+ "interface" : null,
+ "port" : 8080,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "https" : {
+ "name" : "https",
+ "interface" : null,
+ "port" : 8447,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "osgi-http" : {
+ "name" : "osgi-http",
+ "interface" : null,
+ "port" : 8090,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "remoting" : {
+ "name" : "remoting",
+ "interface" : null,
+ "port" : 4447,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "txn-recovery-environment" : {
+ "name" : "txn-recovery-environment",
+ "interface" : null,
+ "port" : 4712,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "txn-status-manager" : {
+ "name" : "txn-status-manager",
+ "interface" : null,
+ "port" : 4713,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "messaging" : {
+ "name" : "messaging",
+ "interface" : null,
+ "port" : 5445,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "messaging-throughput" : {
+ "name" : "messaging-throughput",
+ "interface" : null,
+ "port" : 5455,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ }
+ }
+ }
+ },
+ "deployment" : null
+ },
+ "server-two" : {
+ "namespaces" : [ {
+ "xsi" : "http://www.w3.org/2001/XMLSchema-instance"
+ } ],
+ "schema-locations" : [ {
+ "urn:jboss:domain:1.0" : "jboss_7_0.xsd"
+ }, {
+ "urn:jboss:domain:arquillian:1.0" :
"jboss-arquillian.xsd"
+ }, {
+ "urn:jboss:domain:connector:1.0" :
"jboss-connector.xsd"
+ }, {
+ "urn:jboss:domain:datasources:1.0" :
"jboss-datasources.xsd"
+ }, {
+ "urn:jboss:domain:ejb3:1.0" : "jboss-ejb3.xsd"
+ }, {
+ "urn:jboss:domain:ee:1.0" : "jboss-ee.xsd"
+ }, {
+ "urn:jboss:domain:jaxrs:1.0" : "jboss-jaxrs.xsd"
+ }, {
+ "urn:jboss:domain:jmx:1.0" : "jboss-jmx.xsd"
+ }, {
+ "urn:jboss:domain:jpa:1.0" : "jboss-jpa.xsd"
+ }, {
+ "urn:jboss:domain:messaging:1.0" :
"jboss-messaging.xsd"
+ }, {
+ "urn:jboss:domain:naming:1.0" : "jboss-naming.xsd"
+ }, {
+ "urn:jboss:domain:osgi:1.0" : "jboss-osgi.xsd"
+ }, {
+ "urn:jboss:domain:remoting:1.0" : "jboss-remoting.xsd"
+ }, {
+ "urn:jboss:domain:resourceadapters:1.0" :
"jboss-resource-adapters.xsd"
+ }, {
+ "urn:jboss:domain:sar:1.0" : "jboss-sar.xsd"
+ }, {
+ "urn:jboss:domain:threads:1.0" : "jboss-threads.xsd"
+ }, {
+ "urn:jboss:domain:transactions:1.0" : "jboss-txn.xsd"
+ }, {
+ "urn:jboss:domain:web:1.0" : "jboss-web.xsd"
+ }, {
+ "urn:jboss:domain:security:1.0" : "jboss-security.xsd"
+ }, {
+ "urn:jboss:domain:webservices:1.0" :
"jboss-webservices.xsd"
+ }, {
+ "urn:jboss:domain:weld:1.0" : "jboss-weld.xsd"
+ } ],
+ "name" : "server-two",
+ "management" : {
+ "security-realms" : {
+ "security-realm" : null
+ },
+ "connections" : {
+ "connection" : null
+ }
+ },
+ "management-interface" : null,
+ "profile-name" : null,
+ "extension" : {
+ "org.jboss.as.arquillian.service" : {
+ "module" : "org.jboss.as.arquillian.service"
+ },
+ "org.jboss.as.connector" : {
+ "module" : "org.jboss.as.connector"
+ },
+ "org.jboss.as.jmx" : {
+ "module" : "org.jboss.as.jmx"
+ },
+ "org.jboss.as.jpa" : {
+ "module" : "org.jboss.as.jpa"
+ },
+ "org.jboss.as.logging" : {
+ "module" : "org.jboss.as.logging"
+ },
+ "org.jboss.as.ee" : {
+ "module" : "org.jboss.as.ee"
+ },
+ "org.jboss.as.ejb3" : {
+ "module" : "org.jboss.as.ejb3"
+ },
+ "org.jboss.as.jaxrs" : {
+ "module" : "org.jboss.as.jaxrs"
+ },
+ "org.jboss.as.messaging" : {
+ "module" : "org.jboss.as.messaging"
+ },
+ "org.jboss.as.naming" : {
+ "module" : "org.jboss.as.naming"
+ },
+ "org.jboss.as.osgi" : {
+ "module" : "org.jboss.as.osgi"
+ },
+ "org.jboss.as.remoting" : {
+ "module" : "org.jboss.as.remoting"
+ },
+ "org.jboss.as.sar" : {
+ "module" : "org.jboss.as.sar"
+ },
+ "org.jboss.as.security" : {
+ "module" : "org.jboss.as.security"
+ },
+ "org.jboss.as.threads" : {
+ "module" : "org.jboss.as.threads"
+ },
+ "org.jboss.as.transactions" : {
+ "module" : "org.jboss.as.transactions"
+ },
+ "org.jboss.as.web" : {
+ "module" : "org.jboss.as.web"
+ },
+ "org.jboss.as.weld" : {
+ "module" : "org.jboss.as.weld"
+ },
+ "org.jboss.as.webservices" : {
+ "module" : "org.jboss.as.webservices"
+ }
+ },
+ "system-property" : {
+ "java.net.preferIPv4Stack" : {
+ "value" : "true"
+ }
+ },
+ "path" : null,
+ "subsystem" : {
+ "logging" : {
+ "logger" : {
+ },
+ "async-handler" : {
+ },
+ "console-handler" : {
+ "CONSOLE" : {
+ "autoflush" : true,
+ "encoding" : null,
+ "formatter" : "%d{HH:mm:ss,SSS} %-5p [%c] (%t)
%s%E%n",
+ "level" : "INFO",
+ "queue-length" : null
+ }
+ },
+ "file-handler" : {
+ },
+ "periodic-rotating-file-handler" : {
+ "FILE" : {
+ "autoflush" : true,
+ "encoding" : null,
+ "formatter" : "%d{HH:mm:ss,SSS} %-5p [%c] (%t)
%s%E%n",
+ "level" : "INFO",
+ "file" : {
+ "path" : "server.log",
+ "relative-to" : "jboss.server.log.dir"
+ },
+ "suffix" : ".yyyy-MM-dd"
+ }
+ },
+ "size-rotating-file-handler" : {
+ },
+ "root-logger" : {
+ "level" : "INFO",
+ "handlers" : [ "CONSOLE", "FILE" ]
+ }
+ },
+ "threads" : {
+ "bounded-queue-thread-pool" : {
+ "jca-short-running" : {
+ "name" : "jca-short-running",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ },
+ "blocking" : true,
+ "allow-core-timeout" : false,
+ "queue-length" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "core-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ }
+ },
+ "jca-long-running" : {
+ "name" : "jca-long-running",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ },
+ "blocking" : true,
+ "allow-core-timeout" : false,
+ "queue-length" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "core-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ }
+ },
+ "ejb3-async" : {
+ "name" : "ejb3-async",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ },
+ "blocking" : true,
+ "allow-core-timeout" : false,
+ "queue-length" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "core-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ }
+ }
+ },
+ "queueless-thread-pool" : {
+ },
+ "scheduled-thread-pool" : {
+ "remoting" : {
+ "name" : "remoting",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ }
+ }
+ },
+ "thread-factory" : {
+ },
+ "unbounded-queue-thread-pool" : {
+ }
+ },
+ "arquillian" : {
+ },
+ "ee" : null,
+ "ejb3" : {
+ },
+ "naming" : {
+ },
+ "security" : {
+ "security-domain" : {
+ "other" : {
+ "authentication" : [ {
+ "code" : "UsersRoles",
+ "flag" : "required"
+ } ]
+ }
+ }
+ },
+ "transactions" : {
+ "core-environment" : {
+ "process-id" : {
+ "uuid" : "uuid"
+ },
+ "node-identifier" : null,
+ "relative-to" : null,
+ "path" : null
+ },
+ "recovery-environment" : {
+ "socket-binding" : "txn-recovery-environment",
+ "status-socket-binding" : "txn-status-manager"
+ },
+ "coordinator-environment" : {
+ "enable-statistics" : null,
+ "default-timeout" : null
+ },
+ "object-store" : {
+ "relative-to" : null,
+ "path" : null
+ }
+ },
+ "remoting" : {
+ "thread-pool" : "remoting",
+ "connector" : {
+ }
+ },
+ "jmx" : {
+ "server-binding" : "jmx-connector-server",
+ "registry-binding" : "jmx-connector-registry"
+ },
+ "jpa" : {
+ "default-datasource" : ""
+ },
+ "sar" : {
+ },
+ "weld" : {
+ },
+ "connector" : {
+ "default-workmanager-short-running-thread-pool" :
"jca-short-running",
+ "default-workmanager-long-running-thread-pool" :
"jca-long-running",
+ "bean-validation-enabled" : true,
+ "archive-validation-enabled" : true
+ },
+ "datasources" : {
+ "data-source" : {
+ "java:/H2DS" : {
+ "connection-url" :
"jdbc:h2:mem:test;DB_CLOSE_DELAY=-1",
+ "jndi-name" : "java:/H2DS",
+ "driver-name" : "h2",
+ "pool-name" : "H2DS",
+ "use-java-context" : true,
+ "enabled" : true,
+ "pool-prefill" : false,
+ "pool-use-strict-min" : false,
+ "user-name" : "sa",
+ "password" : "sa",
+ "background-validation" : false,
+ "use-fast-fail" : false,
+ "validate-on-match" : false
+ }
+ },
+ "xa-data-source" : null,
+ "jdbc-driver" : {
+ "h2" : {
+ "driver-name" : "h2",
+ "driver-module-name" : "com.h2database.h2",
+ "driver-xa-datasource-class-name" :
"org.h2.jdbcx.JdbcDataSource"
+ }
+ }
+ },
+ "resource-adapters" : {
+ "resource-adapter" : null
+ },
+ "osgi" : {
+ "activation" : "lazy",
+ "configuration" : {
+ "pid" :
"org.apache.felix.webconsole.internal.servlet.OsgiManager",
+ "configuration_properties" : {
+ "manager.root" : "jboss-osgi"
+ }
+ },
+ "properties" : {
+ "org.jboss.osgi.system.modules" :
"org.apache.commons.logging,\n
org.apache.log4j,\n
org.jboss.as.osgi,\n
org.slf4j,",
+ "org.osgi.framework.system.packages.extra" :
"org.apache.commons.logging;version=1.1.1,\n
org.apache.log4j;version=1.2,\n
org.jboss.as.osgi.service;version=7.0,\n
org.jboss.osgi.deployment.interceptor;version=1.0,\n
org.jboss.osgi.spi.capability;version=1.0,\n
org.jboss.osgi.spi.util;version=1.0,\n
org.jboss.osgi.testing;version=1.0,\n
org.jboss.osgi.vfs;version=1.0,\n
org.slf4j;version=1.5.10,",
+ "org.osgi.framework.startlevel.beginning" : "1"
+ },
+ "modules" : {
+ "javaee.api" : null,
+ "org.jboss.as.arquillian.aggregate" : null,
+ "org.jboss.logging" : null,
+ "org.apache.aries.util" : null,
+ "org.jboss.osgi.webconsole" : null,
+ "org.osgi.compendium" : null,
+ "org.apache.felix.log" : {
+ "start" : "1"
+ },
+ "org.jboss.osgi.logging" : {
+ "start" : "1"
+ },
+ "org.apache.aries.jmx" : {
+ "start" : "2"
+ },
+ "org.apache.felix.configadmin" : {
+ "start" : "2"
+ },
+ "org.apache.felix.eventadmin" : {
+ "start" : "2"
+ },
+ "org.apache.felix.metatype" : {
+ "start" : "2"
+ },
+ "org.apache.felix.webconsole" : {
+ "start" : "2"
+ },
+ "org.jboss.as.osgi.configadmin" : {
+ "start" : "2"
+ },
+ "org.jboss.osgi.jmx" : {
+ "start" : "2"
+ },
+ "org.jboss.osgi.http" : {
+ "start" : "2"
+ },
+ "org.jboss.osgi.blueprint" : {
+ "start" : "3"
+ },
+ "org.jboss.osgi.webapp" : {
+ "start" : "3"
+ },
+ "org.jboss.osgi.xerces" : {
+ "start" : "3"
+ }
+ }
+ },
+ "messaging" : {
+ "acceptor" : {
+ "in-vm" : {
+ "type" : "InVM",
+ "server-id" : 0,
+ "param" : null
+ },
+ "netty" : {
+ "type" : "Remote",
+ "socket-binding" : "messaging",
+ "param" : null
+ },
+ "netty-throughput" : {
+ "type" : "Remote",
+ "socket-binding" : "messaging-throughput",
+ "param" : [ {
+ "batch-delay" : "50"
+ }, {
+ "direct-deliver" : "false"
+ } ]
+ }
+ },
+ "address-setting" : {
+ "#" : {
+ "dead-letter-address" : "jms.queue.DLQ",
+ "expiry-address" : "jms.queue.ExpiryQueue",
+ "redelivery-delay" : "0",
+ "max-size-bytes" : "10485760",
+ "message-counter-history-day-limit" : "10",
+ "address-full-policy" : "BLOCK"
+ }
+ },
+ "connector" : {
+ "in-vm" : {
+ "type" : "InVM",
+ "server-id" : 0,
+ "param" : null
+ },
+ "netty" : {
+ "type" : "Remote",
+ "socket-binding" : "messaging",
+ "param" : null
+ },
+ "netty-throughput" : {
+ "type" : "Remote",
+ "socket-binding" : "messaging-throughput",
+ "param" : [ {
+ "batch-delay" : "50"
+ } ]
+ }
+ },
+ "journal-min-files" : "2",
+ "journal-type" : "NIO",
+ "journal-file-size" : "102400",
+ "persistence-enabled" : false,
+ "security-setting" : {
+ "#" : {
+ "guest" : {
+ "send" : true,
+ "consume" : true,
+ "createDurableQueue" : false,
+ "deleteDurableQueue" : false,
+ "createNonDurableQueue" : true,
+ "deleteNonDurableQueue" : true,
+ "manage" : false
+ }
+ }
+ },
+ "queue" : null
+ },
+ "jaxrs" : {
+ },
+ "jms" : {
+ "connection-factory" : {
+ "InVmConnectionFactory" : {
+ "connector" : {
+ "in-vm" : {
+ "backup-connector-name" : "netty"
+ }
+ },
+ "entries" : [ "java:/ConnectionFactory" ]
+ },
+ "RemoteConnectionFactory" : {
+ "connector" : {
+ "netty" : {
+ "backup-connector-name" : "in-vm"
+ }
+ },
+ "entries" : [ "RemoteConnectionFactory" ]
+ }
+ },
+ "queue" : {
+ "testQueue" : {
+ "entries" : [ "queue/test" ]
+ }
+ },
+ "topic" : {
+ "testTopic" : {
+ "entries" : [ "topic/test" ]
+ }
+ }
+ },
+ "web" : {
+ "configuration" : null,
+ "connector" : {
+ "http" : {
+ "protocol" : "HTTP/1.1",
+ "socket-binding" : "http",
+ "scheme" : "http",
+ "virtual-server" : null,
+ "ssl" : null
+ }
+ },
+ "virtual-server" : {
+ "localhost" : {
+ "alias" : [ "example.com" ],
+ "access-log" : null,
+ "rewrite" : null,
+ "default-web-module" : null,
+ "enable-welcome-root" : false
+ }
+ }
+ },
+ "webservices" : {
+ "modify-wsdl-address" : true,
+ "wsdl-host" : "localhost",
+ "endpoint" : {
+ }
+ }
+ },
+ "interface" : {
+ "loopback" : {
+ "name" : "loopback",
+ "criteria" : [ {
+ "inet-address" : "127.0.0.1"
+ } ]
+ },
+ "external" : {
+ "name" : "external",
+ "criteria" : "any-ipv4-address"
+ },
+ "public" : {
+ "name" : "public",
+ "criteria" : "any-ipv4-address"
+ }
+ },
+ "socket-binding-group" : {
+ "standard-sockets" : {
+ "name" : "standard-sockets",
+ "default-interface" : "external",
+ "port-offset" : 150,
+ "socket-binding" : {
+ "jmx-connector-registry" : {
+ "name" : "jmx-connector-registry",
+ "interface" : null,
+ "port" : 1090,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "jmx-connector-server" : {
+ "name" : "jmx-connector-server",
+ "interface" : null,
+ "port" : 1091,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "jndi" : {
+ "name" : "jndi",
+ "interface" : null,
+ "port" : 1099,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "http" : {
+ "name" : "http",
+ "interface" : null,
+ "port" : 8080,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "https" : {
+ "name" : "https",
+ "interface" : null,
+ "port" : 8447,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "osgi-http" : {
+ "name" : "osgi-http",
+ "interface" : null,
+ "port" : 8090,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "remoting" : {
+ "name" : "remoting",
+ "interface" : null,
+ "port" : 4447,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "txn-recovery-environment" : {
+ "name" : "txn-recovery-environment",
+ "interface" : null,
+ "port" : 4712,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "txn-status-manager" : {
+ "name" : "txn-status-manager",
+ "interface" : null,
+ "port" : 4713,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "messaging" : {
+ "name" : "messaging",
+ "interface" : null,
+ "port" : 5445,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "messaging-throughput" : {
+ "name" : "messaging-throughput",
+ "interface" : null,
+ "port" : 5455,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ }
+ }
+ }
+ },
+ "deployment" : null
+ }
+ }
+ }
+ },
+ "namespaces" : [ {
+ "xsi" : "http://www.w3.org/2001/XMLSchema-instance"
+ } ],
+ "schema-locations" : [ {
+ "urn:jboss:domain:1.0" : "jboss_7_0.xsd"
+ }, {
+ "urn:jboss:domain:arquillian:1.0" : "jboss-arquillian.xsd"
+ }, {
+ "urn:jboss:domain:connector:1.0" : "jboss-connector.xsd"
+ }, {
+ "urn:jboss:domain:datasources:1.0" : "jboss-datasources.xsd"
+ }, {
+ "urn:jboss:domain:ejb3:1.0" : "jboss-ejb3.xsd"
+ }, {
+ "urn:jboss:domain:ee:1.0" : "jboss-ee.xsd"
+ }, {
+ "urn:jboss:domain:jaxrs:1.0" : "jboss-jaxrs.xsd"
+ }, {
+ "urn:jboss:domain:jmx:1.0" : "jboss-jmx.xsd"
+ }, {
+ "urn:jboss:domain:jpa:1.0" : "jboss-jpa.xsd"
+ }, {
+ "urn:jboss:domain:messaging:1.0" : "jboss-messaging.xsd"
+ }, {
+ "urn:jboss:domain:naming:1.0" : "jboss-naming.xsd"
+ }, {
+ "urn:jboss:domain:osgi:1.0" : "jboss-osgi.xsd"
+ }, {
+ "urn:jboss:domain:remoting:1.0" : "jboss-remoting.xsd"
+ }, {
+ "urn:jboss:domain:resourceadapters:1.0" :
"jboss-resource-adapters.xsd"
+ }, {
+ "urn:jboss:domain:sar:1.0" : "jboss-sar.xsd"
+ }, {
+ "urn:jboss:domain:threads:1.0" : "jboss-threads.xsd"
+ }, {
+ "urn:jboss:domain:transactions:1.0" : "jboss-txn.xsd"
+ }, {
+ "urn:jboss:domain:web:1.0" : "jboss-web.xsd"
+ }, {
+ "urn:jboss:domain:security:1.0" : "jboss-security.xsd"
+ }, {
+ "urn:jboss:domain:webservices:1.0" : "jboss-webservices.xsd"
+ }, {
+ "urn:jboss:domain:weld:1.0" : "jboss-weld.xsd"
+ } ],
+ "extension" : {
+ "org.jboss.as.arquillian.service" : {
+ "module" : "org.jboss.as.arquillian.service"
+ },
+ "org.jboss.as.connector" : {
+ "module" : "org.jboss.as.connector"
+ },
+ "org.jboss.as.jmx" : {
+ "module" : "org.jboss.as.jmx"
+ },
+ "org.jboss.as.jpa" : {
+ "module" : "org.jboss.as.jpa"
+ },
+ "org.jboss.as.logging" : {
+ "module" : "org.jboss.as.logging"
+ },
+ "org.jboss.as.ee" : {
+ "module" : "org.jboss.as.ee"
+ },
+ "org.jboss.as.ejb3" : {
+ "module" : "org.jboss.as.ejb3"
+ },
+ "org.jboss.as.jaxrs" : {
+ "module" : "org.jboss.as.jaxrs"
+ },
+ "org.jboss.as.messaging" : {
+ "module" : "org.jboss.as.messaging"
+ },
+ "org.jboss.as.naming" : {
+ "module" : "org.jboss.as.naming"
+ },
+ "org.jboss.as.osgi" : {
+ "module" : "org.jboss.as.osgi"
+ },
+ "org.jboss.as.remoting" : {
+ "module" : "org.jboss.as.remoting"
+ },
+ "org.jboss.as.sar" : {
+ "module" : "org.jboss.as.sar"
+ },
+ "org.jboss.as.security" : {
+ "module" : "org.jboss.as.security"
+ },
+ "org.jboss.as.threads" : {
+ "module" : "org.jboss.as.threads"
+ },
+ "org.jboss.as.transactions" : {
+ "module" : "org.jboss.as.transactions"
+ },
+ "org.jboss.as.web" : {
+ "module" : "org.jboss.as.web"
+ },
+ "org.jboss.as.weld" : {
+ "module" : "org.jboss.as.weld"
+ },
+ "org.jboss.as.webservices" : {
+ "module" : "org.jboss.as.webservices"
+ }
+ },
+ "path" : null,
+ "system-property" : {
+ "java.net.preferIPv4Stack" : {
+ "value" : "true",
+ "boot-time" : true
+ }
+ },
+ "profile" : {
+ "default" : {
+ "includes" : null,
+ "subsystem" : {
+ "logging" : {
+ "logger" : {
+ },
+ "async-handler" : {
+ },
+ "console-handler" : {
+ "CONSOLE" : {
+ "autoflush" : true,
+ "encoding" : null,
+ "formatter" : "%d{HH:mm:ss,SSS} %-5p [%c] (%t)
%s%E%n",
+ "level" : "INFO",
+ "queue-length" : null
+ }
+ },
+ "file-handler" : {
+ },
+ "periodic-rotating-file-handler" : {
+ "FILE" : {
+ "autoflush" : true,
+ "encoding" : null,
+ "formatter" : "%d{HH:mm:ss,SSS} %-5p [%c] (%t)
%s%E%n",
+ "level" : "INFO",
+ "file" : {
+ "path" : "server.log",
+ "relative-to" : "jboss.server.log.dir"
+ },
+ "suffix" : ".yyyy-MM-dd"
+ }
+ },
+ "size-rotating-file-handler" : {
+ },
+ "root-logger" : {
+ "level" : "INFO",
+ "handlers" : [ "CONSOLE", "FILE" ]
+ }
+ },
+ "threads" : {
+ "bounded-queue-thread-pool" : {
+ "jca-short-running" : {
+ "name" : "jca-short-running",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ },
+ "blocking" : true,
+ "allow-core-timeout" : false,
+ "queue-length" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "core-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ }
+ },
+ "jca-long-running" : {
+ "name" : "jca-long-running",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ },
+ "blocking" : true,
+ "allow-core-timeout" : false,
+ "queue-length" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "core-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ }
+ },
+ "ejb3-async" : {
+ "name" : "ejb3-async",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ },
+ "blocking" : true,
+ "allow-core-timeout" : false,
+ "queue-length" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "core-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ }
+ }
+ },
+ "queueless-thread-pool" : {
+ },
+ "scheduled-thread-pool" : {
+ "remoting" : {
+ "name" : "remoting",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ }
+ }
+ },
+ "thread-factory" : {
+ },
+ "unbounded-queue-thread-pool" : {
+ }
+ },
+ "arquillian" : {
+ },
+ "ee" : null,
+ "ejb3" : {
+ },
+ "naming" : {
+ },
+ "security" : {
+ "security-domain" : {
+ "other" : {
+ "authentication" : [ {
+ "code" : "UsersRoles",
+ "flag" : "required"
+ } ]
+ }
+ }
+ },
+ "transactions" : {
+ "core-environment" : {
+ "process-id" : {
+ "uuid" : "uuid"
+ },
+ "node-identifier" : null,
+ "relative-to" : null,
+ "path" : null
+ },
+ "recovery-environment" : {
+ "socket-binding" : "txn-recovery-environment",
+ "status-socket-binding" : "txn-status-manager"
+ },
+ "coordinator-environment" : {
+ "enable-statistics" : null,
+ "default-timeout" : null
+ },
+ "object-store" : {
+ "relative-to" : null,
+ "path" : null
+ }
+ },
+ "remoting" : {
+ "thread-pool" : "remoting",
+ "connector" : {
+ }
+ },
+ "jmx" : {
+ "server-binding" : "jmx-connector-server",
+ "registry-binding" : "jmx-connector-registry"
+ },
+ "jpa" : {
+ "default-datasource" : ""
+ },
+ "sar" : {
+ },
+ "weld" : {
+ },
+ "connector" : {
+ "default-workmanager-short-running-thread-pool" :
"jca-short-running",
+ "default-workmanager-long-running-thread-pool" :
"jca-long-running",
+ "bean-validation-enabled" : true,
+ "archive-validation-enabled" : true
+ },
+ "datasources" : {
+ "data-source" : {
+ "java:/H2DS" : {
+ "connection-url" :
"jdbc:h2:mem:test;DB_CLOSE_DELAY=-1",
+ "jndi-name" : "java:/H2DS",
+ "driver-name" : "h2",
+ "pool-name" : "H2DS",
+ "use-java-context" : true,
+ "enabled" : true,
+ "pool-prefill" : false,
+ "pool-use-strict-min" : false,
+ "user-name" : "sa",
+ "password" : "sa",
+ "background-validation" : false,
+ "use-fast-fail" : false,
+ "validate-on-match" : false
+ }
+ },
+ "xa-data-source" : null,
+ "jdbc-driver" : {
+ "h2" : {
+ "driver-name" : "h2",
+ "driver-module-name" : "com.h2database.h2",
+ "driver-xa-datasource-class-name" :
"org.h2.jdbcx.JdbcDataSource"
+ }
+ }
+ },
+ "resource-adapters" : {
+ "resource-adapter" : null
+ },
+ "osgi" : {
+ "activation" : "lazy",
+ "configuration" : {
+ "pid" :
"org.apache.felix.webconsole.internal.servlet.OsgiManager",
+ "configuration_properties" : {
+ "manager.root" : "jboss-osgi"
+ }
+ },
+ "properties" : {
+ "org.jboss.osgi.system.modules" :
"org.apache.commons.logging,\n
org.apache.log4j,\n
org.jboss.as.osgi,\n
org.slf4j,",
+ "org.osgi.framework.system.packages.extra" :
"org.apache.commons.logging;version=1.1.1,\n
org.apache.log4j;version=1.2,\n
org.jboss.as.osgi.service;version=7.0,\n
org.jboss.osgi.deployment.interceptor;version=1.0,\n
org.jboss.osgi.spi.capability;version=1.0,\n
org.jboss.osgi.spi.util;version=1.0,\n
org.jboss.osgi.testing;version=1.0,\n
org.jboss.osgi.vfs;version=1.0,\n
org.slf4j;version=1.5.10,",
+ "org.osgi.framework.startlevel.beginning" : "1"
+ },
+ "modules" : {
+ "javaee.api" : null,
+ "org.jboss.as.arquillian.aggregate" : null,
+ "org.jboss.logging" : null,
+ "org.apache.aries.util" : null,
+ "org.jboss.osgi.webconsole" : null,
+ "org.osgi.compendium" : null,
+ "org.apache.felix.log" : {
+ "start" : "1"
+ },
+ "org.jboss.osgi.logging" : {
+ "start" : "1"
+ },
+ "org.apache.aries.jmx" : {
+ "start" : "2"
+ },
+ "org.apache.felix.configadmin" : {
+ "start" : "2"
+ },
+ "org.apache.felix.eventadmin" : {
+ "start" : "2"
+ },
+ "org.apache.felix.metatype" : {
+ "start" : "2"
+ },
+ "org.apache.felix.webconsole" : {
+ "start" : "2"
+ },
+ "org.jboss.as.osgi.configadmin" : {
+ "start" : "2"
+ },
+ "org.jboss.osgi.jmx" : {
+ "start" : "2"
+ },
+ "org.jboss.osgi.http" : {
+ "start" : "2"
+ },
+ "org.jboss.osgi.blueprint" : {
+ "start" : "3"
+ },
+ "org.jboss.osgi.webapp" : {
+ "start" : "3"
+ },
+ "org.jboss.osgi.xerces" : {
+ "start" : "3"
+ }
+ }
+ },
+ "messaging" : {
+ "acceptor" : {
+ "in-vm" : {
+ "type" : "InVM",
+ "server-id" : 0,
+ "param" : null
+ },
+ "netty" : {
+ "type" : "Remote",
+ "socket-binding" : "messaging",
+ "param" : null
+ },
+ "netty-throughput" : {
+ "type" : "Remote",
+ "socket-binding" : "messaging-throughput",
+ "param" : [ {
+ "batch-delay" : "50"
+ }, {
+ "direct-deliver" : "false"
+ } ]
+ }
+ },
+ "address-setting" : {
+ "#" : {
+ "dead-letter-address" : "jms.queue.DLQ",
+ "expiry-address" : "jms.queue.ExpiryQueue",
+ "redelivery-delay" : "0",
+ "max-size-bytes" : "10485760",
+ "message-counter-history-day-limit" : "10",
+ "address-full-policy" : "BLOCK"
+ }
+ },
+ "connector" : {
+ "in-vm" : {
+ "type" : "InVM",
+ "server-id" : 0,
+ "param" : null
+ },
+ "netty" : {
+ "type" : "Remote",
+ "socket-binding" : "messaging",
+ "param" : null
+ },
+ "netty-throughput" : {
+ "type" : "Remote",
+ "socket-binding" : "messaging-throughput",
+ "param" : [ {
+ "batch-delay" : "50"
+ } ]
+ }
+ },
+ "journal-min-files" : "2",
+ "journal-type" : "NIO",
+ "journal-file-size" : "102400",
+ "persistence-enabled" : false,
+ "security-setting" : {
+ "#" : {
+ "guest" : {
+ "send" : true,
+ "consume" : true,
+ "createDurableQueue" : false,
+ "deleteDurableQueue" : false,
+ "createNonDurableQueue" : true,
+ "deleteNonDurableQueue" : true,
+ "manage" : false
+ }
+ }
+ },
+ "queue" : null
+ },
+ "jaxrs" : {
+ },
+ "jms" : {
+ "connection-factory" : {
+ "InVmConnectionFactory" : {
+ "connector" : {
+ "in-vm" : {
+ "backup-connector-name" : "netty"
+ }
+ },
+ "entries" : [ "java:/ConnectionFactory" ]
+ },
+ "RemoteConnectionFactory" : {
+ "connector" : {
+ "netty" : {
+ "backup-connector-name" : "in-vm"
+ }
+ },
+ "entries" : [ "RemoteConnectionFactory" ]
+ }
+ },
+ "queue" : {
+ "testQueue" : {
+ "entries" : [ "queue/test" ]
+ }
+ },
+ "topic" : {
+ "testTopic" : {
+ "entries" : [ "topic/test" ]
+ }
+ }
+ },
+ "web" : {
+ "configuration" : null,
+ "connector" : {
+ "http" : {
+ "protocol" : "HTTP/1.1",
+ "socket-binding" : "http",
+ "scheme" : "http",
+ "virtual-server" : null,
+ "ssl" : null
+ }
+ },
+ "virtual-server" : {
+ "localhost" : {
+ "alias" : [ "example.com" ],
+ "access-log" : null,
+ "rewrite" : null,
+ "default-web-module" : null,
+ "enable-welcome-root" : false
+ }
+ }
+ },
+ "webservices" : {
+ "modify-wsdl-address" : true,
+ "wsdl-host" : "localhost",
+ "endpoint" : {
+ }
+ }
+ }
+ }
+ },
+ "interface" : {
+ "loopback" : {
+ "name" : "loopback",
+ "criteria" : [ {
+ "inet-address" : "127.0.0.1"
+ } ]
+ },
+ "external" : {
+ "name" : "external",
+ "criteria" : "any-ipv4-address"
+ }
+ },
+ "socket-binding-group" : {
+ "standard-sockets" : {
+ "name" : "standard-sockets",
+ "default-interface" : "external",
+ "includes" : [ "messaging-sockets" ],
+ "socket-binding" : {
+ "jmx-connector-registry" : {
+ "name" : "jmx-connector-registry",
+ "interface" : null,
+ "port" : 1090,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "jmx-connector-server" : {
+ "name" : "jmx-connector-server",
+ "interface" : null,
+ "port" : 1091,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "jndi" : {
+ "name" : "jndi",
+ "interface" : null,
+ "port" : 1099,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "http" : {
+ "name" : "http",
+ "interface" : null,
+ "port" : 8080,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "https" : {
+ "name" : "https",
+ "interface" : null,
+ "port" : 8447,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "osgi-http" : {
+ "name" : "osgi-http",
+ "interface" : null,
+ "port" : 8090,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "remoting" : {
+ "name" : "remoting",
+ "interface" : null,
+ "port" : 4447,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "txn-recovery-environment" : {
+ "name" : "txn-recovery-environment",
+ "interface" : null,
+ "port" : 4712,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "txn-status-manager" : {
+ "name" : "txn-status-manager",
+ "interface" : null,
+ "port" : 4713,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ }
+ }
+ },
+ "messaging-sockets" : {
+ "name" : "messaging-sockets",
+ "default-interface" : "external",
+ "includes" : [ ],
+ "socket-binding" : {
+ "messaging" : {
+ "name" : "messaging",
+ "interface" : null,
+ "port" : 5445,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ },
+ "messaging-throughput" : {
+ "name" : "messaging-throughput",
+ "interface" : null,
+ "port" : 5455,
+ "fixed-port" : null,
+ "multicast-address" : null,
+ "multicast-port" : null
+ }
+ }
+ }
+ },
+ "deployment" : null,
+ "server-group" : {
+ "main-server-group" : {
+ "profile" : "default",
+ "jvm" : {
+ "default" : {
+ "type" : null,
+ "agent-lib" : null,
+ "agent-path" : null,
+ "env-classpath-ignored" : null,
+ "environment-variables" : null,
+ "heap-size" : "64m",
+ "max-heap-size" : "512m",
+ "java-agent" : null,
+ "java-home" : null,
+ "jvm-options" : null,
+ "permgen-size" : null,
+ "max-permgen-size" : null,
+ "stack-size" : null
+ }
+ },
+ "system-property" : null,
+ "deployment" : null,
+ "socket-binding-group" : "standard-sockets"
+ },
+ "other-server-group" : {
+ "profile" : "default",
+ "jvm" : {
+ "default" : {
+ "type" : null,
+ "agent-lib" : null,
+ "agent-path" : null,
+ "env-classpath-ignored" : null,
+ "environment-variables" : null,
+ "heap-size" : "64m",
+ "max-heap-size" : "512m",
+ "java-agent" : null,
+ "java-home" : null,
+ "jvm-options" : null,
+ "permgen-size" : null,
+ "max-permgen-size" : null,
+ "stack-size" : null
+ }
+ },
+ "system-property" : null,
+ "deployment" : null,
+ "socket-binding-group" : "standard-sockets"
+ }
+ }
+ },
+ "compensating-operation" : null
+}
diff --git a/modules/plugins/jboss-as-7/src/test/resources/extensions.json
b/modules/plugins/jboss-as-7/src/test/resources/extensions.json
new file mode 100644
index 0000000..0ba5ccd
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/test/resources/extensions.json
@@ -0,0 +1,93 @@
+{
+ "outcome" : "success",
+ "result" : [ {
+ "org.jboss.as.arquillian.service" : {
+ "module" : "org.jboss.as.arquillian.service"
+ }
+ }, {
+ "org.jboss.as.clustering" : {
+ "module" : "org.jboss.as.clustering"
+ }
+ }, {
+ "org.jboss.as.connector" : {
+ "module" : "org.jboss.as.connector"
+ }
+ }, {
+ "org.jboss.as.deployment-scanner" : {
+ "module" : "org.jboss.as.deployment-scanner"
+ }
+ }, {
+ "org.jboss.as.ee" : {
+ "module" : "org.jboss.as.ee"
+ }
+ }, {
+ "org.jboss.as.ejb3" : {
+ "module" : "org.jboss.as.ejb3"
+ }
+ }, {
+ "org.jboss.as.jaxrs" : {
+ "module" : "org.jboss.as.jaxrs"
+ }
+ }, {
+ "org.jboss.as.jmx" : {
+ "module" : "org.jboss.as.jmx"
+ }
+ }, {
+ "org.jboss.as.jpa" : {
+ "module" : "org.jboss.as.jpa"
+ }
+ }, {
+ "org.jboss.as.logging" : {
+ "module" : "org.jboss.as.logging"
+ }
+ }, {
+ "org.jboss.as.messaging" : {
+ "module" : "org.jboss.as.messaging"
+ }
+ }, {
+ "org.jboss.as.modcluster" : {
+ "module" : "org.jboss.as.modcluster"
+ }
+ }, {
+ "org.jboss.as.naming" : {
+ "module" : "org.jboss.as.naming"
+ }
+ }, {
+ "org.jboss.as.osgi" : {
+ "module" : "org.jboss.as.osgi"
+ }
+ }, {
+ "org.jboss.as.remoting" : {
+ "module" : "org.jboss.as.remoting"
+ }
+ }, {
+ "org.jboss.as.sar" : {
+ "module" : "org.jboss.as.sar"
+ }
+ }, {
+ "org.jboss.as.security" : {
+ "module" : "org.jboss.as.security"
+ }
+ }, {
+ "org.jboss.as.threads" : {
+ "module" : "org.jboss.as.threads"
+ }
+ }, {
+ "org.jboss.as.transactions" : {
+ "module" : "org.jboss.as.transactions"
+ }
+ }, {
+ "org.jboss.as.web" : {
+ "module" : "org.jboss.as.web"
+ }
+ }, {
+ "org.jboss.as.webservices" : {
+ "module" : "org.jboss.as.webservices"
+ }
+ }, {
+ "org.jboss.as.weld" : {
+ "module" : "org.jboss.as.weld"
+ }
+ } ],
+ "compensating-operation" : null
+}
\ No newline at end of file
diff --git a/modules/plugins/jboss-as-7/src/test/resources/interfaces.json
b/modules/plugins/jboss-as-7/src/test/resources/interfaces.json
new file mode 100644
index 0000000..d7d8461
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/test/resources/interfaces.json
@@ -0,0 +1,8 @@
+{
+ "outcome" : "success",
+ "result" : {
+ "name" : "public",
+ "criteria" : "any-ipv4-address"
+ },
+ "compensating-operation" : null
+}
\ No newline at end of file
diff --git a/modules/plugins/jboss-as-7/src/test/resources/logging.json
b/modules/plugins/jboss-as-7/src/test/resources/logging.json
new file mode 100644
index 0000000..aac32df
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/test/resources/logging.json
@@ -0,0 +1,15 @@
+{
+ "outcome" : "success",
+ "result" : {
+ "autoflush" : true,
+ "encoding" : null,
+ "formatter" : "%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n",
+ "level" : "INFO",
+ "file" : {
+ "path" : "server.log",
+ "relative-to" : "jboss.server.log.dir"
+ },
+ "suffix" : ".yyyy-MM-dd"
+ },
+ "compensating-operation" : null
+}
\ No newline at end of file
diff --git a/modules/plugins/jboss-as-7/src/test/resources/loopback.json
b/modules/plugins/jboss-as-7/src/test/resources/loopback.json
new file mode 100644
index 0000000..4aec543
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/test/resources/loopback.json
@@ -0,0 +1,10 @@
+{
+ "outcome" : "success",
+ "result" : {
+ "name" : "default",
+ "criteria" : [ {
+ "inet-address" : "127.0.0.1"
+ } ]
+ },
+ "compensating-operation" : null
+}
\ No newline at end of file
diff --git a/modules/plugins/jboss-as-7/src/test/resources/schema-locations.json
b/modules/plugins/jboss-as-7/src/test/resources/schema-locations.json
new file mode 100644
index 0000000..e9bf229
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/test/resources/schema-locations.json
@@ -0,0 +1,50 @@
+{
+ "outcome" : "success",
+ "result" : {
+ "schema-locations" : [
+ {
+ "urn:jboss:domain:1.0" : "jboss_7_0.xsd"
+ }, {
+ "urn:jboss:domain:arquillian:1.0" :
"jboss-arquillian.xsd"
+ }, {
+ "urn:jboss:domain:connector:1.0" : "jboss-connector.xsd"
+ }, {
+ "urn:jboss:domain:datasources:1.0" :
"jboss-datasources.xsd"
+ }, {
+ "urn:jboss:domain:ejb3:1.0" : "jboss-ejb3.xsd"
+ }, {
+ "urn:jboss:domain:ee:1.0" : "jboss-ee.xsd"
+ }, {
+ "urn:jboss:domain:jaxrs:1.0" : "jboss-jaxrs.xsd"
+ }, {
+ "urn:jboss:domain:jmx:1.0" : "jboss-jmx.xsd"
+ }, {
+ "urn:jboss:domain:jpa:1.0" : "jboss-jpa.xsd"
+ }, {
+ "urn:jboss:domain:messaging:1.0" : "jboss-messaging.xsd"
+ }, {
+ "urn:jboss:domain:naming:1.0" : "jboss-naming.xsd"
+ }, {
+ "urn:jboss:domain:osgi:1.0" : "jboss-osgi.xsd"
+ }, {
+ "urn:jboss:domain:remoting:1.0" : "jboss-remoting.xsd"
+ }, {
+ "urn:jboss:domain:resourceadapters:1.0" :
"jboss-resource-adapters.xsd"
+ }, {
+ "urn:jboss:domain:sar:1.0" : "jboss-sar.xsd"
+ }, {
+ "urn:jboss:domain:threads:1.0" : "jboss-threads.xsd"
+ }, {
+ "urn:jboss:domain:transactions:1.0" : "jboss-txn.xsd"
+ }, {
+ "urn:jboss:domain:web:1.0" : "jboss-web.xsd"
+ }, {
+ "urn:jboss:domain:security:1.0" : "jboss-security.xsd"
+ }, {
+ "urn:jboss:domain:webservices:1.0" :
"jboss-webservices.xsd"
+ }, {
+ "urn:jboss:domain:weld:1.0" : "jboss-weld.xsd"
+ } ]
+ },
+ "compensating-operation" : null
+}
diff --git a/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
b/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
index 4d3a106..fb06f1b 100644
--- a/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
@@ -30,4 +30,63 @@
</server>
+ <server class="foo" discovery="foo"
name="test4">
+ <resource-configuration>
+ <c:group name="children:extension" displayName="Installed
extensions">
+
+ <c:list-property name="extension"
displayName="Installed extensions">
+ <c:map-property name="name">
+ <c:map-property name="*">
+ <c:simple-property name="module"/>
+ </c:map-property>
+ </c:map-property>
+ </c:list-property>
+ </c:group>
+ </resource-configuration>
+ </server>
+
+ <server class="foo" discovery="foo"
name="test5">
+ <resource-configuration>
+ <c:group name="attribute:schema-locations"
displayName="Schema-locations">
+
+ <c:list-property name="schema-locations"
displayName="Schema locations">
+ <c:map-property name="*">
+ <c:simple-property name="*"
readOnly="true"/>
+ <!--<c:simple-property name="location"
readOnly="true"/>-->
+ </c:map-property>
+ </c:list-property>
+ </c:group>
+ </resource-configuration>
+ </server>
+
+ <server class="foo" discovery="foo"
name="test6and7">
+ <resource-configuration>
+
+ <c:simple-property name="name" />
+ <c:simple-property name="criteria"/>
+
+ </resource-configuration>
+ </server>
+
+ <server class="foo" discovery="foo"
name="test8">
+ <resource-configuration>
+ <c:simple-property
name="default-workmanager-short-running-thread-pool" required="true"
type="string" readOnly="true"
+ description="Specify the name of short running thread
pool"/>
+ <c:simple-property
name="default-workmanager-long-running-thread-pool" required="true"
type="string" readOnly="true"
+ description="Specify the name of long running thread
pool"/>
+ <c:simple-property name="bean-validation-enabled"
required="true" type="boolean" readOnly="true"
+ description="Specify whether bean validation is
enabled"/>
+ <c:simple-property name="archive-validation-enabled"
type="boolean" readOnly="true" description="Enabling the
validation"/>
+ <c:simple-property name="archive-validation-fail-on-error"
type="boolean" readOnly="true" defaultValue="true"
+ description="Should an archive validation error
report fail the deployment. Default: true"/>
+ <c:simple-property name="archive-validation-fail-on-warn"
type="boolean" readOnly="true" defaultValue="false"
+ description="Should an archive validation warning
report fail the deployment. Default: false"/>
+ <c:simple-property name="cached-connection-manager-debug"
type="boolean" readOnly="true" defaultValue="false"
+ description="enable/disable debug information logging
for cached connection manager"/>
+ <c:simple-property name="cached-connection-manager-error"
type="boolean" readOnly="true" defaultValue="false"
+ description="enable/disable error information logging
for cached connection manager"/>
+ </resource-configuration>
+
+ </server>
+
</plugin>
\ No newline at end of file
diff --git a/modules/plugins/jboss-as-7/src/test/resources/threadpool.json
b/modules/plugins/jboss-as-7/src/test/resources/threadpool.json
new file mode 100644
index 0000000..8107e9a
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/test/resources/threadpool.json
@@ -0,0 +1,25 @@
+{
+ "outcome" : "success",
+ "result" : {
+ "name" : "ejb3-async",
+ "max-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "keepalive-time" : {
+ "time" : 10,
+ "unit" : "SECONDS"
+ },
+ "blocking" : true,
+ "allow-core-timeout" : false,
+ "queue-length" : {
+ "count" : 10,
+ "per-cpu" : 20
+ },
+ "core-threads" : {
+ "count" : 10,
+ "per-cpu" : 20
+ }
+ },
+ "compensating-operation" : null
+}
\ No newline at end of file
commit b349cdfe6aae9b8e25a466956d607b9bb901c2b7
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon May 30 13:27:11 2011 +0200
Start adding unit tests for the configuration reading.
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index 7593f18..8611a15 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -218,6 +218,12 @@
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.testng</groupId>
+ <artifactId>testng</artifactId>
+ <version>${testng.version}</version>
+ <scope>test</scope>
+ </dependency>
<!-- TODO add your dependencies here -->
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 6cbe91b..c51f275 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -31,6 +31,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.SerializationConfig;
import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.Operation;
@@ -46,6 +47,7 @@ public class ASConnection {
URL url;
String urlString;
private ObjectMapper mapper;
+ boolean verbose = true; // This is a variable on purpose, so devs can switch it on in
the debugger
public ASConnection(String host, int port) {
@@ -74,7 +76,6 @@ public class ASConnection {
JsonNode reasonNode = in.findValue("failure-description");
String reason = reasonNode.getTextValue();
-// log.info(reason);
return true;
}
@@ -105,8 +106,10 @@ public class ASConnection {
OutputStream out = conn.getOutputStream();
String result = mapper.writeValueAsString(operation);
- System.out.println("Json to send: " + result);
- System.out.flush();
+ if (verbose) {
+ System.out.println("Json to send: " + result);
+ System.out.flush();
+ }
mapper.writeValue(out, operation);
out.flush();
@@ -134,6 +137,13 @@ public class ASConnection {
if (builder !=null) {
outcome= builder.toString();
operationResult = mapper.readTree(outcome);
+ if (verbose) {
+ ObjectMapper om2 = new ObjectMapper();
+ om2.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
+ String tmp = om2.writeValueAsString(operationResult);
+ System.out.println(tmp);
+ System.out.flush();
+ }
}
else {
outcome="- no response from server -";
@@ -146,6 +156,8 @@ public class ASConnection {
}
else {
log.error("IS was null and code was " + responseCode);
+ if (verbose)
+ System.err.println("IS was null and code was " +
responseCode);
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 2911e85..779e733 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.DataType;
@@ -209,7 +210,8 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
public Configuration loadResourceConfiguration() throws Exception {
List<PROPERTY_VALUE> address = pathToAddress(path);
- ConfigurationDelegate delegate = new
ConfigurationDelegate(context,connection,address);
+ ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
+ ConfigurationDelegate delegate = new
ConfigurationDelegate(configDef,connection,address);
return delegate.loadResourceConfiguration();
}
@@ -217,7 +219,8 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
public void updateResourceConfiguration(ConfigurationUpdateReport report) {
List<PROPERTY_VALUE> address = pathToAddress(path);
- ConfigurationDelegate delegate = new
ConfigurationDelegate(context,connection,address);
+ ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
+ ConfigurationDelegate delegate = new
ConfigurationDelegate(configDef,connection,address);
delegate.updateResourceConfiguration(report);
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
index 832fd11..93f4c6e 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
@@ -42,7 +42,6 @@ import
org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
import org.rhq.core.domain.configuration.definition.PropertySimpleType;
import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
-import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
@@ -51,18 +50,17 @@ import org.rhq.modules.plugins.jbossas7.json.ReadResource;
public class ConfigurationDelegate implements ConfigurationFacet {
final Log log = LogFactory.getLog(this.getClass());
- ResourceContext context;
private List<PROPERTY_VALUE> address;
private ASConnection connection;
+ private ConfigurationDefinition configurationDefinition;
- public ConfigurationDelegate(ResourceContext context,ASConnection connection,
List<PROPERTY_VALUE> address) {
- this.context = context;
+ public ConfigurationDelegate(ConfigurationDefinition configDef,ASConnection
connection, List<PROPERTY_VALUE> address) {
+ this.configurationDefinition = configDef;
this.connection = connection;
this.address = address;
}
public Configuration loadResourceConfiguration() throws Exception {
- ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
Operation op = new ReadResource(address); // TODO set recursive flag? --> try
to narrow it down
@@ -72,13 +70,14 @@ public class ConfigurationDelegate implements ConfigurationFacet {
Configuration ret = new Configuration();
ObjectMapper mapper = new ObjectMapper();
- Set<Map.Entry<String, PropertyDefinition>> entrySet =
configDef.getPropertyDefinitions().entrySet();
+ Set<Map.Entry<String, PropertyDefinition>> entrySet =
configurationDefinition.getPropertyDefinitions().entrySet();
for (Map.Entry<String, PropertyDefinition> propDefEntry : entrySet) {
PropertyDefinition propDef = propDefEntry.getValue();
JsonNode sub = json.findValue(propDef.getName());
if (sub == null) {
- log.error(
- "No value for property [" + propDef.getName() + "]
found - check the descriptor");
+ log.warn(
+ "No value for property [" + propDef.getName() + "]
found - check the descriptor (may be valid, \n"+
+ "as some attributes are different in domain vs
standalone mode");
continue;
}
if (propDef instanceof PropertyDefinitionSimple) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
index c7a983e..a5583b7 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
@@ -31,6 +31,7 @@ import org.codehaus.jackson.annotate.JsonProperty;
*/
public class Result {
+ public static final String SUCCESS = "success";
private String outcome;
private Object result;
@JsonProperty("compensating-operation")
@@ -50,7 +51,7 @@ public class Result {
public void setOutcome(String outcome) {
this.outcome = outcome;
- if (outcome.equalsIgnoreCase("success"))
+ if (outcome.equalsIgnoreCase(SUCCESS))
success = true;
}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationTest.java
new file mode 100644
index 0000000..afd6a7f
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationTest.java
@@ -0,0 +1,320 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.util.ValidationEventCollector;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.testng.annotations.BeforeSuite;
+import org.testng.annotations.Test;
+
+import org.rhq.core.clientapi.agent.metadata.ConfigurationMetadataParser;
+import org.rhq.core.clientapi.agent.metadata.InvalidPluginDescriptorException;
+import org.rhq.core.clientapi.descriptor.DescriptorPackages;
+import org.rhq.core.clientapi.descriptor.plugin.PluginDescriptor;
+import org.rhq.core.clientapi.descriptor.plugin.ServerDescriptor;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.configuration.PropertyMap;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.domain.configuration.definition.ConfigurationFormat;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionList;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionMap;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
+import org.rhq.core.domain.configuration.definition.PropertySimpleType;
+import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+
+/**
+ * Tests loading and writing configurations
+ * @author Heiko W. Rupp
+ */
+@Test
+public class ConfigurationTest {
+
+ private static final String DESCRIPTOR_FILENAME = "test-plugin.xml";
+ private Log log = LogFactory.getLog(getClass());
+
+ private PluginDescriptor pluginDescriptor;
+
+
+
+ public void test1() throws Exception {
+ FakeConnection connection = new FakeConnection();
+
+ ConfigurationDefinition definition = new
ConfigurationDefinition("foo","Test1");
+
+
+ definition.setConfigurationFormat(ConfigurationFormat.STRUCTURED);
+ definition.put(new PropertyDefinitionSimple("access-log",
"Access-Log", false,
+ PropertySimpleType.STRING));
+ definition.put(new PropertyDefinitionSimple("rewrite",
"Rewrite", false,
+ PropertySimpleType.STRING));
+ definition.put(new PropertyDefinitionSimple("notThere",
"NotThere", false,
+ PropertySimpleType.STRING));
+
+ definition.put(new PropertyDefinitionList("alias", "Alias",
true, new PropertyDefinitionSimple(
+ "alias", "alias", true, PropertySimpleType.STRING)));
+
+
+
+ String resultString = " {\"outcome\" : \"success\",
\"result\" : {\"alias\" :
[\"example.com\",\"example2.com\"],"+
+ " \"access-log\" : null, \"rewrite\" : null},
\"compensating-operation\" : null}";
+
+ ObjectMapper mapper = new ObjectMapper();
+ ComplexResult result = mapper.readValue(resultString,ComplexResult.class);
+ JsonNode json = mapper.valueToTree(result);
+
+ connection.setContent(json);
+
+ ConfigurationDelegate delegate = new
ConfigurationDelegate(definition,connection,null);
+ Configuration config = delegate.loadResourceConfiguration();
+
+ assert config.get("alias")!=null;
+ assert config.get("alias") instanceof PropertyList;
+ PropertyList aliases = (PropertyList) config.get("alias");
+ List<Property> list = aliases.getList();
+ assert list.size()==2;
+ assert config.get("notThere")==null;
+ }
+
+ public void test2() throws Exception {
+ String resultString = "{\n" +
+ " \"outcome\" : \"success\",\n" +
+ " \"result\" : {\n" +
+ " \"autoflush\" : true,\n" +
+ " \"encoding\" : null,\n" +
+ " \"formatter\" : \"%d{HH:mm:ss,SSS} %-5p [%c]
(%t) %s%E%n\",\n" +
+ " \"level\" : \"INFO\",\n" +
+ " \"file\" : {\n" +
+ " \"path\" : \"server.log\",\n" +
+ " \"relative-to\" :
\"jboss.server.log.dir\"\n" +
+ " },\n" +
+ " \"suffix\" : \".yyyy-MM-dd\"\n" +
+ " },\n" +
+ " \"compensating-operation\" : null\n" +
+ "}";
+
+ FakeConnection connection = new FakeConnection();
+
+ ConfigurationDefinition definition = new
ConfigurationDefinition("foo","Test1");
+
+ PropertyDefinitionSimple propertyDefinition = new
PropertyDefinitionSimple("autoflush", "Autoflush", false,
+ PropertySimpleType.BOOLEAN);
+ propertyDefinition.setDefaultValue("true");
+ definition.put(propertyDefinition);
+ propertyDefinition = new PropertyDefinitionSimple("encoding",
"Encoding", false,
+ PropertySimpleType.STRING);
+ propertyDefinition.setDefaultValue("HelloWorld");
+ definition.put(propertyDefinition);
+ PropertyDefinitionSimple pathProperty = new
PropertyDefinitionSimple("path","File
path",true,PropertySimpleType.STRING);
+ PropertyDefinitionSimple relativeToProperty = new
PropertyDefinitionSimple("relative-to","Relative-To",true,PropertySimpleType.STRING);
+ PropertyDefinitionMap fileMapDef = new
PropertyDefinitionMap("file","Log
file",true,pathProperty,relativeToProperty);
+ definition.put(fileMapDef);
+
+ ObjectMapper mapper = new ObjectMapper();
+ ComplexResult result = mapper.readValue(resultString,ComplexResult.class);
+ JsonNode json = mapper.valueToTree(result);
+
+ connection.setContent(json);
+
+ ConfigurationDelegate delegate = new
ConfigurationDelegate(definition,connection,null);
+ Configuration config = delegate.loadResourceConfiguration();
+
+ assert config!=null;
+ assert config.get("autoflush")!=null : "Autoflush was null";
+ assert config.getSimple("autoflush").getBooleanValue() :
"Autoflush was false";
+ PropertyMap fileMap = (PropertyMap) config.get("file");
+ assert fileMap!=null : "File Map was null";
+ PropertySimple path = (PropertySimple) fileMap.get("path");
+ assert path!=null : "File->path was null";
+ assert path.getStringValue().equals("server.log") : "File->path
wrong";
+
+
+ }
+
+
+ public void test3() throws Exception {
+
+ String resultString = "{\n" +
+ " \"outcome\" : \"success\",\n" +
+ " \"result\" : {\n" +
+ " \"name\" : \"standard-sockets\",\n" +
+ " \"default-interface\" :
\"default\",\n" +
+ " \"port-offset\" : \"0\",\n" +
+ " \"socket-binding\" : {\n" +
+ " \"jndi\" : {\n" +
+ " \"name\" : \"jndi\",\n" +
+ " \"interface\" : null,\n" +
+ " \"port\" : 1099,\n" +
+ " \"fixed-port\" : null,\n" +
+ " \"multicast-address\" : null,\n" +
+ " \"multicast-port\" : null\n" +
+ " },\n" +
+ " \"jmx-connector-registry\" : {\n" +
+ " \"name\" :
\"jmx-connector-registry\",\n" +
+ " \"interface\" : null,\n" +
+ " \"port\" : 1090,\n" +
+ " \"fixed-port\" : null,\n" +
+ " \"multicast-address\" : null,\n" +
+ " \"multicast-port\" : null\n" +
+ " },\n" +
+ " \"jmx-connector-server\" : {\n" +
+ " \"name\" :
\"jmx-connector-server\",\n" +
+ " \"interface\" : null,\n" +
+ " \"port\" : 1091,\n" +
+ " \"fixed-port\" : null,\n" +
+ " \"multicast-address\" : null,\n" +
+ " \"multicast-port\" : null\n" +
+ " },\n" +
+ " \"http\" : {\n" +
+ " \"name\" : \"http\",\n" +
+ " \"interface\" : null,\n" +
+ " \"port\" : 8080,\n" +
+ " \"fixed-port\" : null,\n" +
+ " \"multicast-address\" : null,\n" +
+ " \"multicast-port\" : null\n" +
+ " },\n" +
+ " \"https\" : {\n" +
+ " \"name\" : \"https\",\n" +
+ " \"interface\" : null,\n" +
+ " \"port\" : 8447,\n" +
+ " \"fixed-port\" : null,\n" +
+ " \"multicast-address\" :
\"224.1.2.3\",\n" +
+ " \"multicast-port\" : 18447\n" +
+ " }"+
+ " }\n" +
+ " },\n" +
+ " \"compensating-operation\" : null\n" +
+ "}";
+
+ ConfigurationDefinition definition = loadDescriptor("socketBinding");
+
+ ObjectMapper mapper = new ObjectMapper();
+ ComplexResult result = mapper.readValue(resultString,ComplexResult.class);
+ JsonNode json = mapper.valueToTree(result);
+
+ FakeConnection connection = new FakeConnection();
+ connection.setContent(json);
+
+ ConfigurationDelegate delegate = new
ConfigurationDelegate(definition,connection,null);
+ Configuration config = delegate.loadResourceConfiguration();
+
+
+ assert config != null;
+ PropertyList propertyList = (PropertyList)
config.get("socket-binding");
+ assert propertyList!=null;
+ List<Property> list = propertyList.getList();
+ assert list.size()==5;
+ for (Property prop : list) {
+ PropertyMap propMap2 = (PropertyMap) prop;
+ Map<String,Property> map2 = propMap2.getMap();
+ assert map2.size()==6;
+
+ assert map2.containsKey("port");
+ assert map2.containsKey("multicast-port");
+ assert map2.containsKey("multicast-address");
+
+ if
(((PropertySimple)map2.get("name")).getStringValue().equals("https"))
{
+ assert
((PropertySimple)map2.get("port")).getIntegerValue()==8447;
+ assert
((PropertySimple)map2.get("multicast-port")).getIntegerValue()==18447;
+ }
+ }
+
+ }
+
+
+
+ @BeforeSuite
+ private void loadPluginDescriptor() throws Exception {
+ try {
+ URL descriptorUrl =
this.getClass().getClassLoader().getResource(DESCRIPTOR_FILENAME);
+ log.info("Loading plugin descriptor at: " + descriptorUrl);
+
+ JAXBContext jaxbContext =
JAXBContext.newInstance(DescriptorPackages.PC_PLUGIN);
+
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ ValidationEventCollector vec = new ValidationEventCollector();
+ unmarshaller.setEventHandler(vec);
+ pluginDescriptor = (PluginDescriptor)
unmarshaller.unmarshal(descriptorUrl.openStream());
+ } catch (Throwable t) {
+ // Catch RuntimeExceptions and Errors and dump their stack trace, because
Surefire will completely swallow them
+ // and throw a cryptic NPE (see
http://jira.codehaus.org/browse/SUREFIRE-157)!
+ t.printStackTrace();
+ throw new RuntimeException(t);
+ }
+ }
+
+ private ConfigurationDefinition loadDescriptor(String serverName) throws
InvalidPluginDescriptorException {
+ List<ServerDescriptor> servers = pluginDescriptor.getServers();
+
+ ServerDescriptor serverDescriptor = findServer(serverName, servers);
+ assert serverDescriptor != null : "Server descriptor not found in test
plugin descriptor";
+
+ return ConfigurationMetadataParser.parse("null",
serverDescriptor.getResourceConfiguration());
+ }
+
+ private ServerDescriptor findServer(String name, List<ServerDescriptor>
servers) {
+ for (ServerDescriptor server : servers) {
+ if (server.getName().equals(name)) {
+ return server;
+ }
+ }
+
+ return null;
+ }
+
+
+
+ /**
+ * Provide a fake connection, that will return the
+ * content we provide via #setContent
+ *
+ */
+ private class FakeConnection extends ASConnection {
+
+ JsonNode content;
+
+ public FakeConnection() {
+ super("localhost", 1234);
+ }
+
+ public void setContent(JsonNode content) {
+ this.content = content;
+ }
+
+ @Override
+ public JsonNode executeRaw(Operation operation) {
+ if (content==null)
+ throw new IllegalStateException("Content not yet set");
+ return content;
+ }
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
b/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
new file mode 100644
index 0000000..4d3a106
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
@@ -0,0 +1,33 @@
+<plugin name="jboss-as-7"
+ displayName="JBoss-AS-7-Plugin"
+ description="Management of JBossAS 7"
+ package="org.rhq.modules.plugins.jbossas7"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="urn:xmlns:rhq-plugin"
+ xmlns:c="urn:xmlns:rhq-configuration"
+ version="4.0.0-SNAPSHOT"
+ >
+
+ <server class="foo" discovery="foo"
name="socketBinding">
+ <resource-configuration>
+ <c:simple-property name="default-interface"
readOnly="true" displayName="Default Interface" />
+ <!-- note: at domain level there is no port-offset -->
+ <c:simple-property name="port-offset" readOnly="true"
displayName="Port Offset" required="false"/>
+ <c:list-property name="includes">
+ <c:simple-property name="includes"
displayName="Included bindings" />
+ </c:list-property>
+ <c:list-property name="socket-binding">
+ <c:map-property name="binding">
+ <c:simple-property name="name" />
+ <c:simple-property name="interface"
required="false"/>
+ <c:simple-property name="port"
type="integer"/>
+ <c:simple-property name="fixed-port"
type="boolean"/>
+ <c:simple-property name="multicast-address" />
+ <c:simple-property name="multicast-port"
type="integer"/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+
+ </server>
+
+</plugin>
\ No newline at end of file
commit 757c9713212073198d9263a929367adf49dfa0eb
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri May 27 17:28:12 2011 +0200
Forgot the header
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
index f46ee38..832fd11 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
@@ -1,3 +1,21 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
import java.util.Iterator;
commit bee42224064975a937672a2bc4b9d3042c6e72bf
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri May 27 17:27:10 2011 +0200
Factor out configuration handling.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index de53386..2911e85 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -21,20 +21,8 @@ package org.rhq.modules.plugins.jbossas7;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
-import org.codehaus.jackson.map.ObjectMapper;
import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
-import org.rhq.core.domain.configuration.Property;
-import org.rhq.core.domain.configuration.PropertyList;
-import org.rhq.core.domain.configuration.PropertyMap;
-import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
-import org.rhq.core.domain.configuration.definition.PropertyDefinition;
-import org.rhq.core.domain.configuration.definition.PropertyDefinitionList;
-import org.rhq.core.domain.configuration.definition.PropertyDefinitionMap;
-import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
-import org.rhq.core.domain.configuration.definition.PropertySimpleType;
import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.DataType;
@@ -58,7 +46,6 @@ import org.rhq.core.pluginapi.operation.OperationFacet;
import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.CompositeOperation;
-import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
import org.rhq.modules.plugins.jbossas7.json.ReadAttribute;
@@ -79,6 +66,8 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
{
private static final String INTERNAL = "_internal:";
private static final int INTERNAL_SIZE = INTERNAL.length();
+ private static final String LOCALHOST = "localhost";
+ private static final String DEFAULT_HTTP_MANAGEMENT_PORT = "9990";
final Log log = LogFactory.getLog(this.getClass());
ResourceContext context;
@@ -110,20 +99,17 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
public void start(ResourceContext context) throws
InvalidPluginConfigurationException, Exception {
this.context = context;
conf = context.getPluginConfiguration();
- // TODO add code to start the resource / connection to it
String typeName = context.getResourceType().getName();
- host = conf.getSimpleValue("hostname","localhost");
- String portString = conf.getSimpleValue("port","9990");
+ // TODO can we use parent's connection and only set this up for top level
base component?
+ host = conf.getSimpleValue("hostname", LOCALHOST);
+ String portString = conf.getSimpleValue("port",
DEFAULT_HTTP_MANAGEMENT_PORT);
port = Integer.parseInt(portString);
connection = new ASConnection(host,port);
path = conf.getSimpleValue("path", null);
key = context.getResourceKey();
-
-
-
myServerName =
context.getResourceKey().substring(context.getResourceKey().lastIndexOf("/")+1);
@@ -157,7 +143,6 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
// Metrics from the application server
Operation op = new ReadAttribute(pathToAddress(path),req.getName()); //
TODO batching
- //JsonNode obj = connection.executeRaw(op);
Result res = connection.execute(op, false);
if (!res.isSuccess())
continue;
@@ -221,266 +206,19 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
protected String getPath() { return path; }
- // TODO this needs completeion and a big fat refactoring
public Configuration loadResourceConfiguration() throws Exception {
- ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
-// String myPath = getResultingPath();
List<PROPERTY_VALUE> address = pathToAddress(path);
- Operation op = new ReadResource(address); // TOTO set recursive flag?
- op.addAdditionalProperty("recursive","true");
- JsonNode json = connection.executeRaw(op);
-
- Configuration ret = new Configuration();
- ObjectMapper mapper = new ObjectMapper();
-
- Set<Map.Entry<String, PropertyDefinition>> entrySet =
configDef.getPropertyDefinitions().entrySet();
- for (Map.Entry<String,PropertyDefinition> propDefEntry: entrySet) {
- PropertyDefinition propDef = propDefEntry.getValue();
- JsonNode sub = json.findValue(propDef.getName());
- if (sub==null) {
- log.error("No value for property [" + propDef.getName() +
"] found - check the descriptor");
- continue;
- }
- if (propDef instanceof PropertyDefinitionSimple) {
- PropertySimple propertySimple;
-
- if (sub!=null) {
- // Property is non-null -> return it.
- propertySimple = new
PropertySimple(propDef.getName(),sub.getValueAsText());
- ret.put(propertySimple);
- }
- else {
- // property is null? Check if it is required
- if (propDef.isRequired()) {
- String defaultValue = ((PropertyDefinitionSimple)
propDef).getDefaultValue();
- propertySimple = new
PropertySimple(propDef.getName(),defaultValue);
- ret.put(propertySimple);
- }
- }
- } else if (propDef instanceof PropertyDefinitionList) {
- PropertyList propertyList = new PropertyList(propDef.getName());
- PropertyDefinition memberDefinition = ((PropertyDefinitionList)
propDef).getMemberDefinition();
- if (memberDefinition ==null) {
- if (sub.isObject()) {
- Iterator<String> fields = sub.getFieldNames();
- while(fields.hasNext()) {
- String fieldName = fields.next();
- JsonNode subNode = sub.get(fieldName);
- PropertySimple propertySimple = new
PropertySimple(propDef.getName(),fieldName);
- propertyList.add(propertySimple);
- }
- } else {
- System.out.println("===Sub not object==="); // TODO
evaluate this branch again
- Iterator<JsonNode> values = sub.getElements();
- while (values.hasNext()) {
- JsonNode node = values.next();
- String value = node.getTextValue();
- PropertySimple propertySimple = new
PropertySimple(propDef.getName(),value);
- propertyList.add(propertySimple);
- }
- }
- }
- else if (memberDefinition instanceof PropertyDefinitionMap) {
- PropertySimple propertySimple;
-
- if (sub.isArray()) {
- Iterator<JsonNode> entries = sub.getElements();
- while (entries.hasNext()) {
- JsonNode entry = entries.next(); // -> one row in the list
i.e. one map
-
- // Distinguish here?
-
- PropertyMap map = new
PropertyMap(memberDefinition.getName()); // TODO : name from def or 'entryKey' ?
- Iterator<JsonNode> fields = entry.getElements(); //
TODO loop over fields from map and not from json
- while (fields.hasNext()) {
- JsonNode field = fields.next();
- if (field.isObject()) {
- // TODO only works for tuples at the moment - migrate
to some different kind of parsing!
- PROPERTY_VALUE prop =
mapper.readValue(field,PROPERTY_VALUE.class);
- // now need to find the names of the properties
- List<PropertyDefinition> defList =
((PropertyDefinitionMap) memberDefinition).getSummaryPropertyDefinitions();
- if (defList.isEmpty())
- throw new IllegalArgumentException("Map
" + memberDefinition.getName() + " has no members");
- String key = defList.get(0).getName();
- String value = prop.getKey();
- propertySimple = new PropertySimple(key,value);
- map.put(propertySimple);
- if (defList.size()>1) {
- key = defList.get(1).getName();
- value = prop.getValue();
- propertySimple = new PropertySimple(key,value);
- map.put(propertySimple);
-
- }
- } else { // TODO reached?
- String key = field.getValueAsText();
- if (key.equals("PROPERTY_VALUE")) { // TODO
this may change in the future in the AS implementation
- JsonNode pv = entry.findValue(key);
- String k = pv.toString();
- String v = pv.getValueAsText();
- propertySimple = new PropertySimple(k,v);
- map.put(propertySimple);
-
- }
- else {
- JsonNode value = entry.findValue(key);
- if (value!=null){
- propertySimple = new PropertySimple(key,
value.getValueAsText());
- map.put(propertySimple);
- }
-
- }
- }
- }
- propertyList.add(map);
- }
- }
- else if (sub.isObject()) {
- Iterator<String> keys = sub.getFieldNames();
- while(keys.hasNext()) {
- String entryKey = keys.next();
-
- JsonNode node = sub.findPath(entryKey);
- PropertyMap map = new
PropertyMap(memberDefinition.getName()); // TODO : name from def or 'entryKey' ?
- if (node.isObject()) {
- Iterator<String> fields = node.getFieldNames(); //
TODO loop over fields from map and not from json
- while (fields.hasNext()) {
- String key = fields.next();
-
- propertySimple = new
PropertySimple(key,node.findValue(key).getValueAsText());
- map.put(propertySimple);
- }
- propertyList.add(map);
- } else if (sub.isNull()) {
- List<PropertyDefinition> defList =
((PropertyDefinitionMap) memberDefinition).getSummaryPropertyDefinitions();
- String key = defList.get(0).getName();
- propertySimple = new PropertySimple(key,entryKey);
- map.put(propertySimple);
- }
- }
-
- }
- }
- else if (memberDefinition instanceof PropertyDefinitionSimple) {
- String name = memberDefinition.getName();
- Iterator<JsonNode> keys = sub.getElements();
- while(keys.hasNext()) {
- JsonNode entry = keys.next();
-
- PropertySimple propertySimple = new
PropertySimple(name,entry.getTextValue());
- propertyList.add(propertySimple);
- }
- }
- ret.put(propertyList);
- } // end List of ..
- else if (propDef instanceof PropertyDefinitionMap) {
- PropertyDefinitionMap mapDef = (PropertyDefinitionMap) propDef;
- PropertyMap pm = new PropertyMap(mapDef.getName());
-
- Map<String,PropertyDefinition> memberDefMap =
mapDef.getPropertyDefinitions();
- for (Map.Entry<String,PropertyDefinition> maEntry :
memberDefMap.entrySet()) {
- JsonNode valueNode = json.findValue(maEntry.getKey());
- Property p;
- if (maEntry.getValue() instanceof PropertyDefinitionSimple) {
- p = putProperty(valueNode, maEntry.getValue());
- pm.put(p);
- }
- else if (maEntry.getValue() instanceof PropertyDefinitionMap) { //
TODO make this recursive?
-
- PropertyDefinitionMap pdm = (PropertyDefinitionMap)
maEntry.getValue();
- Map<String,PropertyDefinition> mmDefMap =
pdm.getPropertyDefinitions();
- for (Map.Entry<String,PropertyDefinition> mmDefEntry :
mmDefMap.entrySet()) {
- if (valueNode!=null) {
- JsonNode node2 =
valueNode.findValue(mmDefEntry.getKey());
- System.err.println("Map not yet implemented " +
node2.toString());
- }
- else
- System.err.println("Value node was null " );
- }
- }
- else { // PropDefList
- System.err.println("List not yet implemented");
- }
-
-// pm.put(p);
- }
- ret.put(pm);
- }
- }
-
-
- return ret;
- }
-
-
- PropertySimple putProperty(JsonNode value, PropertyDefinition def) {
- String name = def.getName();
- PropertySimple ps;
-
- if (value==null) {
- if (def instanceof PropertyDefinitionSimple) {
- PropertyDefinitionSimple pds = (PropertyDefinitionSimple) def;
- return new PropertySimple(name,pds.getDefaultValue());
- }
- else
- return new PropertySimple(name,null);
- }
- PropertySimpleType type = ((PropertyDefinitionSimple) def).getType();
-
- switch (type) {
- case BOOLEAN:
- ps = new PropertySimple(name,value.getBooleanValue());
- break;
- case FLOAT:
- case DOUBLE:
- ps = new PropertySimple(name,value.getDoubleValue());
- break;
- case INTEGER:
- ps = new PropertySimple(name,value.getIntValue());
- break;
- case LONG:
- ps = new PropertySimple(name,value.getLongValue());
- break;
- default:
- ps = new PropertySimple(name,value.getTextValue());
- }
-
- return ps;
+ ConfigurationDelegate delegate = new
ConfigurationDelegate(context,connection,address);
+ return delegate.loadResourceConfiguration();
}
- protected String getResultingPath() {
- ResourceComponent parentResourceComponent =
context.getParentResourceComponent();
- String parentPath =null;
- String myPath;
- if (parentResourceComponent instanceof BaseComponent) {
- BaseComponent parentComponent = (BaseComponent) parentResourceComponent;
- parentPath = parentComponent.getPath();
- }
-
- if (parentPath!=null) {
- myPath = parentPath + "," + path;
- }
- else
- myPath = path;
- return myPath;
- }
public void updateResourceConfiguration(ConfigurationUpdateReport report) {
-
- Configuration conf = report.getConfiguration();
- for (Map.Entry<String, PropertySimple> entry :
conf.getSimpleProperties().entrySet()) {
-
- NameValuePair nvp = new
NameValuePair(entry.getKey(),entry.getValue().getStringValue());
- Operation writeAttribute = new
Operation("write-attribute",pathToAddress(getResultingPath()),nvp);
- JsonNode result= connection.executeRaw(writeAttribute);
- if(ASConnection.isErrorReply(result)) {
- report.setStatus(ConfigurationUpdateStatus.FAILURE);
- report.setErrorMessage(ASConnection.getFailureDescription(result));
- }
- }
-
+ List<PROPERTY_VALUE> address = pathToAddress(path);
+ ConfigurationDelegate delegate = new
ConfigurationDelegate(context,connection,address);
+ delegate.updateResourceConfiguration(report);
}
/**
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
new file mode 100644
index 0000000..f46ee38
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ConfigurationDelegate.java
@@ -0,0 +1,282 @@
+package org.rhq.modules.plugins.jbossas7;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.ObjectMapper;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
+import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.configuration.PropertyMap;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.domain.configuration.definition.PropertyDefinition;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionList;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionMap;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
+import org.rhq.core.domain.configuration.definition.PropertySimpleType;
+import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
+import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
+import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+import org.rhq.modules.plugins.jbossas7.json.ReadResource;
+
+public class ConfigurationDelegate implements ConfigurationFacet {
+
+ final Log log = LogFactory.getLog(this.getClass());
+ ResourceContext context;
+ private List<PROPERTY_VALUE> address;
+ private ASConnection connection;
+
+ public ConfigurationDelegate(ResourceContext context,ASConnection connection,
List<PROPERTY_VALUE> address) {
+ this.context = context;
+ this.connection = connection;
+ this.address = address;
+ }
+
+ public Configuration loadResourceConfiguration() throws Exception {
+ ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
+
+
+ Operation op = new ReadResource(address); // TODO set recursive flag? --> try
to narrow it down
+ op.addAdditionalProperty("recursive", "true");
+ JsonNode json = connection.executeRaw(op);
+
+ Configuration ret = new Configuration();
+ ObjectMapper mapper = new ObjectMapper();
+
+ Set<Map.Entry<String, PropertyDefinition>> entrySet =
configDef.getPropertyDefinitions().entrySet();
+ for (Map.Entry<String, PropertyDefinition> propDefEntry : entrySet) {
+ PropertyDefinition propDef = propDefEntry.getValue();
+ JsonNode sub = json.findValue(propDef.getName());
+ if (sub == null) {
+ log.error(
+ "No value for property [" + propDef.getName() + "]
found - check the descriptor");
+ continue;
+ }
+ if (propDef instanceof PropertyDefinitionSimple) {
+ PropertySimple propertySimple;
+
+ if (sub != null) {
+ // Property is non-null -> return it.
+ propertySimple = new PropertySimple(propDef.getName(),
sub.getValueAsText());
+ ret.put(propertySimple);
+ } else {
+ // property is null? Check if it is required
+ if (propDef.isRequired()) {
+ String defaultValue = ((PropertyDefinitionSimple)
propDef).getDefaultValue();
+ propertySimple = new PropertySimple(propDef.getName(),
defaultValue);
+ ret.put(propertySimple);
+ }
+ }
+ } else if (propDef instanceof PropertyDefinitionList) {
+ PropertyList propertyList = new PropertyList(propDef.getName());
+ PropertyDefinition memberDefinition = ((PropertyDefinitionList)
propDef).getMemberDefinition();
+ if (memberDefinition == null) {
+ if (sub.isObject()) {
+ Iterator<String> fields = sub.getFieldNames();
+ while (fields.hasNext()) {
+ String fieldName = fields.next();
+ JsonNode subNode = sub.get(fieldName);
+ PropertySimple propertySimple = new
PropertySimple(propDef.getName(), fieldName);
+ propertyList.add(propertySimple);
+ }
+ } else {
+ System.out.println("===Sub not object==="); // TODO
evaluate this branch again
+ Iterator<JsonNode> values = sub.getElements();
+ while (values.hasNext()) {
+ JsonNode node = values.next();
+ String value = node.getTextValue();
+ PropertySimple propertySimple = new
PropertySimple(propDef.getName(), value);
+ propertyList.add(propertySimple);
+ }
+ }
+ } else if (memberDefinition instanceof PropertyDefinitionMap) {
+ PropertySimple propertySimple;
+
+ if (sub.isArray()) {
+ Iterator<JsonNode> entries = sub.getElements();
+ while (entries.hasNext()) {
+ JsonNode entry = entries.next(); // -> one row in the list
i.e. one map
+
+ // Distinguish here?
+
+ PropertyMap map = new PropertyMap(
+ memberDefinition.getName()); // TODO : name from def
or 'entryKey' ?
+ Iterator<JsonNode> fields = entry.getElements(); //
TODO loop over fields from map and not from json
+ while (fields.hasNext()) {
+ JsonNode field = fields.next();
+ if (field.isObject()) {
+ // TODO only works for tuples at the moment - migrate
to some different kind of parsing!
+ PROPERTY_VALUE prop = mapper.readValue(field,
PROPERTY_VALUE.class);
+ // now need to find the names of the properties
+ List<PropertyDefinition> defList =
((PropertyDefinitionMap) memberDefinition).getSummaryPropertyDefinitions();
+ if (defList.isEmpty())
+ throw new IllegalArgumentException(
+ "Map " +
memberDefinition.getName() + " has no members");
+ String key = defList.get(0).getName();
+ String value = prop.getKey();
+ propertySimple = new PropertySimple(key, value);
+ map.put(propertySimple);
+ if (defList.size() > 1) {
+ key = defList.get(1).getName();
+ value = prop.getValue();
+ propertySimple = new PropertySimple(key, value);
+ map.put(propertySimple);
+
+ }
+ } else { // TODO reached?
+ String key = field.getValueAsText();
+ if (key.equals(
+ "PROPERTY_VALUE")) { // TODO this
may change in the future in the AS implementation
+ JsonNode pv = entry.findValue(key);
+ String k = pv.toString();
+ String v = pv.getValueAsText();
+ propertySimple = new PropertySimple(k, v);
+ map.put(propertySimple);
+
+ } else {
+ JsonNode value = entry.findValue(key);
+ if (value != null) {
+ propertySimple = new PropertySimple(key,
value.getValueAsText());
+ map.put(propertySimple);
+ }
+
+ }
+ }
+ }
+ propertyList.add(map);
+ }
+ } else if (sub.isObject()) {
+ Iterator<String> keys = sub.getFieldNames();
+ while (keys.hasNext()) {
+ String entryKey = keys.next();
+
+ JsonNode node = sub.findPath(entryKey);
+ PropertyMap map = new PropertyMap(
+ memberDefinition.getName()); // TODO : name from def
or 'entryKey' ?
+ if (node.isObject()) {
+ Iterator<String> fields = node.getFieldNames(); //
TODO loop over fields from map and not from json
+ while (fields.hasNext()) {
+ String key = fields.next();
+
+ propertySimple = new PropertySimple(key,
node.findValue(key).getValueAsText());
+ map.put(propertySimple);
+ }
+ propertyList.add(map);
+ } else if (sub.isNull()) {
+ List<PropertyDefinition> defList =
((PropertyDefinitionMap) memberDefinition).getSummaryPropertyDefinitions();
+ String key = defList.get(0).getName();
+ propertySimple = new PropertySimple(key, entryKey);
+ map.put(propertySimple);
+ }
+ }
+
+ }
+ } else if (memberDefinition instanceof PropertyDefinitionSimple) {
+ String name = memberDefinition.getName();
+ Iterator<JsonNode> keys = sub.getElements();
+ while (keys.hasNext()) {
+ JsonNode entry = keys.next();
+
+ PropertySimple propertySimple = new PropertySimple(name,
entry.getTextValue());
+ propertyList.add(propertySimple);
+ }
+ }
+ ret.put(propertyList);
+ } // end List of ..
+ else if (propDef instanceof PropertyDefinitionMap) {
+ PropertyDefinitionMap mapDef = (PropertyDefinitionMap) propDef;
+ PropertyMap pm = new PropertyMap(mapDef.getName());
+
+ Map<String, PropertyDefinition> memberDefMap =
mapDef.getPropertyDefinitions();
+ for (Map.Entry<String, PropertyDefinition> maEntry :
memberDefMap.entrySet()) {
+ JsonNode valueNode = json.findValue(maEntry.getKey());
+ Property p;
+ if (maEntry.getValue() instanceof PropertyDefinitionSimple) {
+ p = putProperty(valueNode, maEntry.getValue());
+ pm.put(p);
+ } else if (maEntry.getValue() instanceof PropertyDefinitionMap) { //
TODO make this recursive?
+
+ PropertyDefinitionMap pdm = (PropertyDefinitionMap)
maEntry.getValue();
+ Map<String, PropertyDefinition> mmDefMap =
pdm.getPropertyDefinitions();
+ for (Map.Entry<String, PropertyDefinition> mmDefEntry :
mmDefMap.entrySet()) {
+ if (valueNode != null) {
+ JsonNode node2 =
valueNode.findValue(mmDefEntry.getKey());
+ System.err.println("Map not yet implemented " +
node2.toString());
+ } else
+ System.err.println("Value node was null ");
+ }
+ } else { // PropDefList
+ System.err.println("List not yet implemented");
+ }
+
+// pm.put(p);
+ }
+ ret.put(pm);
+ }
+ }
+
+ return ret;
+ }
+
+ PropertySimple putProperty(JsonNode value, PropertyDefinition def) {
+ String name = def.getName();
+ PropertySimple ps;
+
+ if (value == null) {
+ if (def instanceof PropertyDefinitionSimple) {
+ PropertyDefinitionSimple pds = (PropertyDefinitionSimple) def;
+ return new PropertySimple(name, pds.getDefaultValue());
+ } else
+ return new PropertySimple(name, null);
+ }
+ PropertySimpleType type = ((PropertyDefinitionSimple) def).getType();
+
+ switch (type) {
+ case BOOLEAN:
+ ps = new PropertySimple(name, value.getBooleanValue());
+ break;
+ case FLOAT:
+ case DOUBLE:
+ ps = new PropertySimple(name, value.getDoubleValue());
+ break;
+ case INTEGER:
+ ps = new PropertySimple(name, value.getIntValue());
+ break;
+ case LONG:
+ ps = new PropertySimple(name, value.getLongValue());
+ break;
+ default:
+ ps = new PropertySimple(name, value.getTextValue());
+ }
+
+ return ps;
+ }
+
+ public void updateResourceConfiguration(ConfigurationUpdateReport report) {
+
+ Configuration conf = report.getConfiguration();
+ for (Map.Entry<String, PropertySimple> entry :
conf.getSimpleProperties().entrySet()) {
+
+ NameValuePair nvp = new NameValuePair(entry.getKey(),
entry.getValue().getStringValue());
+ Operation writeAttribute = new Operation("write-attribute",
+ address, nvp); // TODO test path
+ JsonNode result = connection.executeRaw(writeAttribute);
+ if (ASConnection.isErrorReply(result)) {
+ report.setStatus(ConfigurationUpdateStatus.FAILURE);
+ report.setErrorMessage(ASConnection.getFailureDescription(result));
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 64251bc..45fa342 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -147,6 +147,19 @@
displayName="Maximum request time"/>
+ <resource-configuration>
+ <c:list-property name="schema-locations"
displayName="Schema locations">
+ <c:map-property name="location">
+ <c:simple-property name="urn"
readOnly="true"/>
+ <c:simple-property name="location"
readOnly="true"/>
+ </c:map-property>
+ </c:list-property>
+ <c:list-property name="extension" displayName="Installed
extensions">
+ <c:simple-property name="name"
readOnly="true"/>
+ </c:list-property>
+ </resource-configuration>
+
+
<server name="Profile"
description="One profile in a domain"
discovery="SubsystemDiscovery"
@@ -1334,7 +1347,7 @@ working area for individual server
instances</li></ul>"/>
<resource-configuration>
<c:simple-property name="default-interface"
readOnly="true" displayName="Default Interface"
description="Default Interface for these bindings. See NetworkInterfaces for its
definition" required="false"/>
<!-- note: at domain level there is no port-offset -->
- <c:simple-property name="port-offset" readOnly="true"
displayName="Port Offset" description="Offset from standard ports for this
group" required="false"/>
+ <c:simple-property name="port-offset" readOnly="true"
displayName="Port Offset" description="Offset from standard ports for this
group (Only relevant in standalone mode)" required="false"/>
<c:list-property name="includes">
<c:simple-property name="includes"
displayName="Included bindings" description="Other bindings that are
included in this one"/>
</c:list-property>
commit 9f451a121d42096a317bf4b645d740010d811af4
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri May 27 14:45:01 2011 +0200
Improve connection and (failure) result handling.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 5f350c0..6cbe91b 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -87,7 +87,8 @@ public class ASConnection {
}
/**
- * Execute an operation against the domain api
+ * Execute an operation against the domain api. This method is doing the
+ * real work by talking to the remote server.
* @return JsonNode that describes the result
* @param operation an Operation that should be run on the domain controller
*/
@@ -136,6 +137,10 @@ public class ASConnection {
}
else {
outcome="- no response from server -";
+ Result noResult = new Result();
+ noResult.setFailureDescription(outcome);
+ noResult.setOutcome("failure");
+ operationResult = mapper.valueToTree(noResult);
}
return operationResult;
}
@@ -146,6 +151,14 @@ public class ASConnection {
} catch (IOException e) {
log.error("Failed to get data: " + e.getMessage() );
+
+ Result failure = new Result();
+ failure.setFailureDescription(e.getMessage());
+ failure.setOutcome("failure");
+
+ JsonNode ret = mapper.valueToTree(failure);
+ return ret;
+
} finally {
if (br!=null)
try {
@@ -189,29 +202,6 @@ public class ASConnection {
}
- private URL getBaseUrl(String base, String ops) throws MalformedURLException {
- String spec;
- URL url2;
- if (base!=null && !base.isEmpty()) {
- if (!base.startsWith("/")) {
- spec = urlString + "/" + base;
- }
- else {
- spec = urlString + base;
- }
- if (ops!=null) {
- if (!ops.startsWith("?"))
- ops = "?" + ops;
- spec += ops;
- }
-
- url2 = new URL(spec);
- }
- else
- url2 = url;
- return url2;
- }
-
public static String getFailureDescription(JsonNode jsonNode) {
if (jsonNode==null)
return "getFailureDescription: -input was null-";
commit 490d4f8556704540a5740e6244c581aa077fb616
Merge: 1831a12 054ba69
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu May 26 21:01:05 2011 +0200
Merge branch 'master' into as7plugin
commit 1831a12d39873b64e0f4a07be6f274fc40c4a5cb
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu May 26 17:57:31 2011 +0200
Add some stats on processing times.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index d86b365..5f350c0 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -95,7 +95,9 @@ public class ASConnection {
InputStream inputStream = null;
BufferedReader br=null;
+ long t1 = System.currentTimeMillis();
try {
+
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
@@ -135,11 +137,10 @@ public class ASConnection {
else {
outcome="- no response from server -";
}
-// System.out.println("==> " + outcome);
return operationResult;
}
else {
- System.err.println("IS was null and code was " +
responseCode);
+ log.error("IS was null and code was " + responseCode);
}
@@ -152,6 +153,10 @@ public class ASConnection {
} catch (IOException e) {
e.printStackTrace(); // TODO: Customise this generated block
}
+ long t2 = System.currentTimeMillis();
+ PluginStats stats = PluginStats.getInstance();
+ stats.incrementRequestCount();
+ stats.addRequestTime(t2-t1);
}
return null;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index ecb3fd6..de53386 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -77,6 +77,8 @@ import java.util.Set;
public class BaseComponent implements ResourceComponent, MeasurementFacet,
ConfigurationFacet, DeleteResourceFacet,
CreateChildResourceFacet, OperationFacet
{
+ private static final String INTERNAL = "_internal:";
+ private static final int INTERNAL_SIZE = INTERNAL.length();
final Log log = LogFactory.getLog(this.getClass());
ResourceContext context;
@@ -149,31 +151,68 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
for (MeasurementScheduleRequest req : metrics) {
- Operation op = new ReadAttribute(pathToAddress(path),req.getName()); // TODO
batching
- //JsonNode obj = connection.executeRaw(op);
- Result res = connection.execute(op, false);
- if (!res.isSuccess())
- continue;
-
- String val = (String) res.getResult();
-
- if (req.getDataType()== DataType.MEASUREMENT) {
- if (!val.equals("no metrics available")) { // AS 7 returns
this
- try {
- Double d = Double.parseDouble(val);
- MeasurementDataNumeric data = new MeasurementDataNumeric(req,d);
- report.addData(data);
- } catch (NumberFormatException e) {
- log.warn("Non numeric input for [" + req.getName() +
"] : [" + val + "]");
+ if (req.getName().startsWith(INTERNAL))
+ processPluginStats(req,report);
+ else {
+ // Metrics from the application server
+
+ Operation op = new ReadAttribute(pathToAddress(path),req.getName()); //
TODO batching
+ //JsonNode obj = connection.executeRaw(op);
+ Result res = connection.execute(op, false);
+ if (!res.isSuccess())
+ continue;
+
+ String val = (String) res.getResult();
+
+ if (req.getDataType()== DataType.MEASUREMENT) {
+ if (!val.equals("no metrics available")) { // AS 7 returns
this
+ try {
+ Double d = Double.parseDouble(val);
+ MeasurementDataNumeric data = new
MeasurementDataNumeric(req,d);
+ report.addData(data);
+ } catch (NumberFormatException e) {
+ log.warn("Non numeric input for [" + req.getName()
+ "] : [" + val + "]");
+ }
}
+ } else if (req.getDataType()== DataType.TRAIT) {
+ MeasurementDataTrait data = new MeasurementDataTrait(req,val);
+ report.addData(data);
}
- } else if (req.getDataType()== DataType.TRAIT) {
- MeasurementDataTrait data = new MeasurementDataTrait(req,val);
- report.addData(data);
}
}
}
+ /**
+ * Return internal statistics data
+ * @param req Schedule for the requested data
+ * @param report report to add th data to.
+ */
+ private void processPluginStats(MeasurementScheduleRequest req, MeasurementReport
report) {
+
+ String name = req.getName();
+ if (!name.startsWith(INTERNAL))
+ return;
+
+ name = name.substring(INTERNAL_SIZE);
+
+ PluginStats stats = PluginStats.getInstance();
+ MeasurementDataNumeric data;
+ Double val;
+ if (name.equals("mgmtRequests")) {
+ val= (double) stats.getRequestCount();
+ }
+ else if (name.equals("requestTime")) {
+ val =(double) stats.getRequestTime();
+ }
+ else if (name.equals("maxTime")) {
+ val = (double) stats.getMaxTime();
+ }
+ else
+ val = Double.NaN;
+
+ data = new MeasurementDataNumeric(req,val);
+ report.addData(data);
+ }
protected ASConnection getASConnection() {
return connection;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/PluginStats.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/PluginStats.java
new file mode 100644
index 0000000..1a44dde
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/PluginStats.java
@@ -0,0 +1,61 @@
+package org.rhq.modules.plugins.jbossas7;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicLong;
+
+/**
+ * Singleton that keeps track of some statistics of this plugin
+ * @author Heiko W. Rupp
+ */
+public class PluginStats {
+ private static PluginStats ourInstance = new PluginStats();
+
+ AtomicLong requestCount = new AtomicLong();
+ AtomicLong requestTime = new AtomicLong();
+ private static final int FIFO_SIZE = 200; // Initial capacity
+ List<Long> maxTime = new ArrayList<Long>(FIFO_SIZE);
+ final Object lock = new Object();
+
+
+ public static PluginStats getInstance() {
+ return ourInstance;
+ }
+
+ private PluginStats() {
+ }
+
+ public void incrementRequestCount() {
+ requestCount.incrementAndGet();
+ }
+
+ public void addRequestTime(long l) {
+ requestTime.addAndGet(l);
+ insertTime(l);
+ }
+
+ public long getRequestCount() {
+ return requestCount.get();
+ }
+
+ public long getRequestTime() {
+ return requestTime.get();
+ }
+
+ public long getMaxTime() {
+ long max = 0;
+ synchronized (lock) {
+ for (Long i : maxTime)
+ if (i > max )
+ max = i;
+ maxTime = new ArrayList<Long>();
+ }
+ return max;
+ }
+
+ private void insertTime(long time) {
+ synchronized (lock) {
+ maxTime.add(time);
+ }
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 75484c8..64251bc 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -135,6 +135,18 @@
</operation>
+ <metric property="_internal:mgmtRequests"
category="performance" dataType="measurement"
defaultInterval="120000"
+ displayType="summary" measurementType="trendsup"
description="Number of requests sent to the controller"
+ displayName="Number of management requests"
+ />
+ <metric property="_internal:requestTime"
category="performance" dataType="measurement"
defaultInterval="120000"
+ displayType="summary" measurementType="trendsup"
description="Total time for requests" units="milliseconds"
+ displayName="Time used for management requests"/>
+ <metric property="_internal:maxTime"
category="performance" dataType="measurement"
defaultInterval="120000"
+ displayType="summary" measurementType="dynamic"
description="Max time for a request since last metric get"
units="milliseconds"
+ displayName="Maximum request time"/>
+
+
<server name="Profile"
description="One profile in a domain"
discovery="SubsystemDiscovery"
@@ -237,6 +249,16 @@
<process-scan name="StandaloneAS"
query="process|basename|match=^java.*,arg|org.jboss.as.standalone|match=.*"/>
+ <metric property="_internal:mgmtRequests"
category="performance" dataType="measurement"
defaultInterval="120000"
+ displayType="summary" measurementType="trendsup"
description="Number of requests sent to the controller"
+ displayName="Number of management requests"/>
+ <metric property="_internal:requestTime"
category="performance" dataType="measurement"
defaultInterval="120000"
+ displayType="summary" measurementType="trendsup"
description="Total time for requests" units="milliseconds"
+ displayName="Time used for management requests"/>
+ <metric property="_internal:maxTime"
category="performance" dataType="measurement"
defaultInterval="120000"
+ displayType="summary" measurementType="dynamic"
description="Max time for a request since last metric get"
units="milliseconds"
+ displayName="Maximum request time"/>
+
<resource-configuration>
<c:list-property name="schema-locations"
displayName="Schema locations">
@@ -618,9 +640,9 @@
description="Should an archive validation error
report fail the deployment. Default: true"/>
<c:simple-property name="archive-validation-fail-on-warn"
type="boolean" readOnly="true" default="false"
description="Should an archive validation warning
report fail the deployment. Default: false"/>
- <c:simple-property name="cached-connection-manager-debug"
type="boolean" readOnly="true"
+ <c:simple-property name="cached-connection-manager-debug"
type="boolean" readOnly="true" default="false"
description="enable/disable debug information logging
for cached connection manager"/>
- <c:simple-property name="cached-connection-manager-error"
type="boolean" readOnly="true"
+ <c:simple-property name="cached-connection-manager-error"
type="boolean" readOnly="true" default="false"
description="enable/disable error information logging
for cached connection manager"/>
</resource-configuration>
@@ -937,15 +959,15 @@
<c:simple-property name="path" required="true"
type="string" readOnly="false" description="The filesystem
path."/>
<c:simple-property name="relative-to"
required="false" type="string" readOnly="false"
description="The name of another previously
named path, or of one of the standard paths provided by the system.
- If 'relative-to' is provided, the value of
the 'path' attribute is treated as relative to the path specified by this
attribute.
- The standard paths provided by the system
include:<ul><li>jboss.home - the root directory of the JBoss
AS
-
distribution</li><li>user.home - user's home
directory</li><li>user.dir - user's current
- working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir -
- root directory for an individual server
instance</li><li>jboss.server.data.dir - directory the server
will
- use for persistent data file
storage</li><li>jboss.server.log.dir - directory the server
will use for
- log file
storage</li><li>jboss.server.tmp.dir - directory the server
will use for temporary file
-
storage</li><li>jboss.domain.servers.dir - directory under
which a host controller will create the
- working area for individual server
instances</li></ul>"/>
+If 'relative-to' is provided, the value of the 'path' attribute is
treated as relative to the path specified by this attribute.
+The standard paths provided by the system
include:<ul><li>jboss.home - the root directory of the JBoss
AS
+distribution</li><li>user.home - user's home
directory</li><li>user.dir - user's current
+working directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir -
+root directory for an individual server
instance</li><li>jboss.server.data.dir - directory the server
will
+use for persistent data file
storage</li><li>jboss.server.log.dir - directory the server
will use for
+log file storage</li><li>jboss.server.tmp.dir - directory the
server will use for temporary file
+storage</li><li>jboss.domain.servers.dir - directory under
which a host controller will create the
+working area for individual server
instances</li></ul>"/>
</parameters>
</operation>
<resource-configuration>
@@ -1001,15 +1023,15 @@
<c:simple-property name="path" required="true"
type="string" readOnly="false" description="The filesystem
path."/>
<c:simple-property name="relative-to"
required="false" type="string" readOnly="false"
description="The name of another previously
named path, or of one of the standard paths provided by the system.
- If 'relative-to' is provided, the value of
the 'path' attribute is treated as relative to the path specified by this
attribute.
- The standard paths provided by the system
include:<ul><li>jboss.home - the root directory of the JBoss
AS
-
distribution</li><li>user.home - user's home
directory</li><li>user.dir - user's current
- working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir -
- root directory for an individual server
instance</li><li>jboss.server.data.dir - directory the server
will
- use for persistent data file
storage</li><li>jboss.server.log.dir - directory the server
will use for
- log file
storage</li><li>jboss.server.tmp.dir - directory the server
will use for temporary file
-
storage</li><li>jboss.domain.servers.dir - directory under
which a host controller will create the
- working area for individual server
instances</li></ul>"/>
+If 'relative-to' is provided, the value of the 'path' attribute is
treated as relative to the path specified by this attribute.
+The standard paths provided by the system
include:<ul><li>jboss.home - the root directory of the JBoss
AS
+distribution</li><li>user.home - user's home
directory</li><li>user.dir - user's current
+working directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir -
+root directory for an individual server
instance</li><li>jboss.server.data.dir - directory the server
will
+use for persistent data file
storage</li><li>jboss.server.log.dir - directory the server
will use for
+log file storage</li><li>jboss.server.tmp.dir - directory the
server will use for temporary file
+storage</li><li>jboss.domain.servers.dir - directory under
which a host controller will create the
+working area for individual server
instances</li></ul>"/>
</parameters>
</operation>
<resource-configuration>
@@ -1023,14 +1045,14 @@
<c:simple-property name="append" required="false"
type="boolean" readOnly="true" description="Specify whether to
append to the target file."/>
<c:map-property name="file" description="null"
>
<c:simple-property name="relative-to"
required="false" type="string" readOnly="true"
description="The name of another previously named path, or of one of the standard
paths
- provided by the system. If 'relative-to' is provided, the
value of the 'path' attribute is treated as relative to the path
- specified by this attribute. The standard paths provided by the
system include:<ul><li>jboss.home - the root directory
- of the JBoss AS
distribution</li><li>user.home - user's home
directory</li><li>user.dir - user's current working
- directory</li><li>java.home - java
installation directory</li><li>jboss.server.base.dir - root
directory for an
- individual server
instance</li><li>jboss.server.data.dir - directory the server
will use for persistent data file
- storage</li><li>jboss.server.log.dir -
directory the server will use for log file
storage</li><li>jboss.server.tmp.dir -
- directory the server will use for temporary file
storage</li><li>jboss.domain.servers.dir - directory under
which a host controller
- will create the working area for individual server
instances</li></ul>"/>
+provided by the system. If 'relative-to' is provided, the value of the
'path' attribute is treated as relative to the path
+specified by this attribute. The standard paths provided by the system
include:<ul><li>jboss.home - the root directory
+of the JBoss AS distribution</li><li>user.home - user's
home directory</li><li>user.dir - user's current working
+directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir - root directory for
an
+individual server instance</li><li>jboss.server.data.dir -
directory the server will use for persistent data file
+storage</li><li>jboss.server.log.dir - directory the server
will use for log file storage</li><li>jboss.server.tmp.dir -
+directory the server will use for temporary file
storage</li><li>jboss.domain.servers.dir - directory under
which a host controller
+will create the working area for individual server
instances</li></ul>"/>
<c:simple-property name="path"
required="false" type="string" readOnly="true"
description="The filesystem path."/>
</c:map-property>
<c:simple-property name="suffix" required="false"
type="string" readOnly="true" description="Set the suffix string.
The string is in a format which
@@ -1072,15 +1094,15 @@
<c:simple-property name="path" required="true"
type="string" readOnly="false" description="The filesystem
path."/>
<c:simple-property name="relative-to"
required="false" type="string" readOnly="false"
description="The name of another previously
named path, or of one of the standard paths provided by the system.
- If 'relative-to' is provided, the value of
the 'path' attribute is treated as relative to the path specified by this
attribute.
- The standard paths provided by the system
include:<ul><li>jboss.home - the root directory of the JBoss
AS
-
distribution</li><li>user.home - user's home
directory</li><li>user.dir - user's current
- working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir -
- root directory for an individual server
instance</li><li>jboss.server.data.dir - directory the server
will
- use for persistent data file
storage</li><li>jboss.server.log.dir - directory the server
will use for
- log file
storage</li><li>jboss.server.tmp.dir - directory the server
will use for temporary file
-
storage</li><li>jboss.domain.servers.dir - directory under
which a host controller will create the
- working area for individual server
instances</li></ul>"/>
+If 'relative-to' is provided, the value of the 'path' attribute is
treated as relative to the path specified by this attribute.
+The standard paths provided by the system
include:<ul><li>jboss.home - the root directory of the JBoss
AS
+distribution</li><li>user.home - user's home
directory</li><li>user.dir - user's current
+working directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir -
+root directory for an individual server
instance</li><li>jboss.server.data.dir - directory the server
will
+use for persistent data file
storage</li><li>jboss.server.log.dir - directory the server
will use for
+log file storage</li><li>jboss.server.tmp.dir - directory the
server will use for temporary file
+storage</li><li>jboss.domain.servers.dir - directory under
which a host controller will create the
+working area for individual server
instances</li></ul>"/>
</parameters>
</operation>
<resource-configuration>
@@ -1157,7 +1179,12 @@
<resource-configuration>
<c:simple-property name="extends" required="false"
type="string" readOnly="true" description="The parent security
domain"/>
<c:simple-property name="cache-type"
required="false" type="string" readOnly="true"
- description="Adds a cache to speed up
authentication checks. Allowed values are 'default' to use simple map as the cache
and 'infinispan' to use an Infinispan cache."/>
+ description="Adds a cache to speed up
authentication checks. Allowed values are 'default' to use simple map as the cache
and 'infinispan' to use an Infinispan cache.">
+ <c:property-options>
+ <c:option value="default"/>
+ <c:option value="infinispan"/>
+ </c:property-options>
+ </c:simple-property>
</resource-configuration>
</service>
commit 7a7c767c359f82a92056ad4a92ca8cc363ab9bcc
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 25 13:21:43 2011 +0200
Get availability by checking if the resource is readable.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index f35720e..ecb3fd6 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -93,8 +93,11 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
* @see org.rhq.core.pluginapi.inventory.ResourceComponent#getAvailability()
*/
public AvailabilityType getAvailability() {
- // TODO supply real implementation
- return AvailabilityType.UP;
+
+ ReadResource op = new ReadResource(pathToAddress(path));
+ Result res = connection.execute(op);
+
+ return res.isSuccess()? AvailabilityType.UP: AvailabilityType.DOWN;
}
@@ -179,6 +182,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
protected String getPath() { return path; }
+ // TODO this needs completeion and a big fat refactoring
public Configuration loadResourceConfiguration() throws Exception {
ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
// String myPath = getResultingPath();
commit 461ef8d5b0b2ec61584dd72b1aae39eef031ec3f
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 25 12:00:20 2011 +0200
Support for the logging subsystem and make deployments available for standalone mode
too.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 5c0a499..d86b365 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -135,7 +135,7 @@ public class ASConnection {
else {
outcome="- no response from server -";
}
- System.out.println("==> " + outcome);
+// System.out.println("==> " + outcome);
return operationResult;
}
else {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index cbc2893..f35720e 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -281,8 +281,11 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
}
else {
- propertySimple = new
PropertySimple(key,entry.findValue(key).getValueAsText());
- map.put(propertySimple);
+ JsonNode value = entry.findValue(key);
+ if (value!=null){
+ propertySimple = new PropertySimple(key,
value.getValueAsText());
+ map.put(propertySimple);
+ }
}
}
@@ -367,9 +370,9 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
return ret;
}
+
PropertySimple putProperty(JsonNode value, PropertyDefinition def) {
String name = def.getName();
- PropertySimpleType type = ((PropertyDefinitionSimple) def).getType();
PropertySimple ps;
if (value==null) {
@@ -380,6 +383,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
else
return new PropertySimple(name,null);
}
+ PropertySimpleType type = ((PropertyDefinitionSimple) def).getType();
switch (type) {
case BOOLEAN:
@@ -572,7 +576,12 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
resourceKey = addressToPath(serverGroupAddress);
}
else {
- resourceKey = addressToPath(step1.getAddress());
+
+ List<PROPERTY_VALUE> address = step1.getAddress();
+ Operation step3 = new Operation("deploy",address);
+ cop.addStep(step3);
+
+ resourceKey = addressToPath(address);
}
JsonNode result = connection.executeRaw(cop);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/LoggerComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/LoggerComponent.java
new file mode 100644
index 0000000..f0d5e89
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/LoggerComponent.java
@@ -0,0 +1,69 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.tools.ant.taskdefs.Sleep;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.pluginapi.operation.OperationResult;
+import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+
+/**
+ * Component class that deals with the Logging subsystem
+ * @author Heiko W. Rupp
+ */
+public class LoggerComponent extends BaseComponent {
+
+ private final Log log = LogFactory.getLog(LoggerComponent.class);
+
+ @Override
+ public OperationResult invokeOperation(String name,
+ Configuration parameters) throws
InterruptedException, Exception {
+
+ Operation op = new Operation(name,pathToAddress(getPath()));
+
+ Map<String,Property> propertyMap = parameters.getAllProperties();
+ for (Map.Entry<String,Property> entry : propertyMap.entrySet()) {
+ PropertySimple ps = (PropertySimple) entry.getValue();
+ op.addAdditionalProperty(entry.getKey(),ps.getStringValue());
+ }
+
+
+ ASConnection conn = getASConnection();
+ ComplexResult result = conn.executeComplex(op);
+
+ if (result.isSuccess()) {
+ return new OperationResult("ok");
+ }
+ else {
+ OperationResult failure = new OperationResult();
+ failure.setErrorMessage(result.getFailureDescription().toString());
+ return failure;
+ }
+
+
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index a50ea45..a3ab676 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -134,8 +134,11 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
if (path==null||path.isEmpty())
resKey = newPath;
- else
+ else {
+ if (path.startsWith(","))
+ path = path.substring(1);
resKey = path + "," +childType + "="
+ val;
+ }
PropertySimple pathProp = new
PropertySimple("path",resKey);
config2.put(pathProp);
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index d7055a3..75484c8 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -162,24 +162,6 @@
<c:simple-property name="jvm"
required="false"/>
</resource-configuration>
- <service name="Deployment"
- class="BaseComponent"
- discovery="SubsystemDiscovery"
- createDeletePolicy="both"
- creationDataType="content">
- <plugin-configuration>
- <c:simple-property name="path"
default="deployment" readOnly="true"/>
- </plugin-configuration>
-
- <content name="file" category="deployable"
isCreationType="true" description="Deployments on this server
group">
- <configuration>
- <c:group name="deployment"
displayName="Deployment Options">
- <c:simple-property name="runtimeName"
required="true"/>
- </c:group>
- </configuration>
- </content>
-
- </service>
</server>
<server name="Host"
description="Host involved in this domain"
@@ -375,6 +357,7 @@
<c:simple-property name="journal-type" />
</resource-configuration>
+ <!-- this is no child resource TODO
<service name="Acceptor"
discovery="SubsystemDiscovery"
@@ -392,7 +375,6 @@
<c:simple-property name="path" readOnly="true"
default="connector"/>
</plugin-configuration>
</service>
-<!-- this is no child resource
<service name="HQueue"
discovery="SubsystemDiscovery"
class="BaseComponent"
@@ -512,9 +494,9 @@
<metric property="bytesSent"
measurementType="trendsup"/>
<metric property="bytesReceived"
measurementType="trendsup"/>
- <metric property="processingTime"
measurementType="trendsup"/>
+ <metric property="processingTime"
measurementType="trendsup" units="milliseconds"/>
<metric property="errorCount"
measurementType="trendsup" displayType="summary"/>
- <metric property="maxTime" />
+ <metric property="maxTime" units="milliseconds"/>
<metric property="requestCount"
measurementType="trendsup" displayType="summary"/>
<resource-configuration>
@@ -819,6 +801,305 @@
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="subsystem=logging"/>
</plugin-configuration>
+
+ <operation name="change-root-log-level" description="Change the
root logger level.">
+ <parameters>
+ <c:simple-property name="level" required="true"
type="string" readOnly="false"
+ description="The log level specifying which
message levels will be logged by this logger. Message levels lower than this value will be
discarded.">
+ <c:property-options>
+ <c:option value="FATAL"/>
+ <c:option value="ERROR"/>
+ <c:option value="WARN"/>
+ <c:option value="INFO"/>
+ <c:option value="DEBUG"/>
+ <c:option value="TRACE"/>
+ </c:property-options>
+ </c:simple-property>
+ </parameters>
+ </operation>
+
+ <operation name="remove-root-logger" description="Remove the
root logger.">
+ </operation>
+
+ <operation name="set-root-logger" description="Set the root
logger.">
+ <parameters>
+ <c:simple-property name="level" required="true"
type="string" readOnly="false"
+ description="The log level specifying which
message levels will be logged by this logger. Message levels lower than this value will be
discarded.">
+ <c:property-options>
+ <c:option value="FATAL"/>
+ <c:option value="ERROR"/>
+ <c:option value="WARN"/>
+ <c:option value="INFO"/>
+ <c:option value="DEBUG"/>
+ <c:option value="TRACE"/>
+ </c:property-options>
+ </c:simple-property>
+
+ <c:list-property name="handlers" required="true"
readOnly="false"
+ description="The Handlers associated with this
Logger.">
+ <c:simple-property name="handler"
type="string"/>
+ </c:list-property>
+ </parameters>
+ </operation>
+
+ <resource-configuration>
+ <c:map-property name="root-logger" description="The root
logger for this log context.">
+ <c:simple-property name="level" readOnly="true"
+ description="The log level specifying which
message levels will be logged by this logger. Message levels lower than this value will be
discarded." />
+ <c:list-property name="handlers"
readOnly="true">
+ <c:simple-property name="handler"
readOnly="true" description="The Handlers associated with this
Logger."/>
+ </c:list-property>
+ </c:map-property>
+ </resource-configuration>
+
+
+ <service name="ConsoleHandler"
+ discovery="SubsystemDiscovery"
+ class="LoggerComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="console-handler"/>
+ </plugin-configuration>
+
+ <operation name="change-log-level" description="Change the
logging level for a handler.">
+ <parameters>
+ <c:simple-property name="level"
required="true" type="string" readOnly="false"
+ description="The log level specifying which
message levels will be logged by this logger. Message levels lower than this value will be
discarded.">
+ <c:property-options>
+ <c:option value="FATAL"/>
+ <c:option value="ERROR"/>
+ <c:option value="WARN"/>
+ <c:option value="INFO"/>
+ <c:option value="DEBUG"/>
+ <c:option value="TRACE"/>
+ </c:property-options>
+ </c:simple-property>
+ </parameters>
+ </operation>
+
+ <operation name="disable" description="Disable a logging
handler.">
+ </operation>
+
+ <operation name="enable" description="Enable a logging
handler.">
+ </operation>
+
+ <resource-configuration>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The handler's
name."/>
+ <c:simple-property name="level" required="false"
type="string" readOnly="true"
+ description="The log level specifying which
message levels will be logged by this. Message levels lower than this value will be
discarded. "/>
+ <c:simple-property name="encoding"
required="false" type="string" readOnly="true"
+ description="The character encoding used by this
Handler."/>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="true" description="Defines a simple
filter type."/>
+ <c:simple-property name="formatter"
required="false" type="string" readOnly="true"
description="Defines a formatter."/>
+ <c:simple-property name="autoflush"
required="false" type="boolean" readOnly="true"
description="Automatically flush after each write."/>
+ <c:simple-property name="target" required="false"
type="string" readOnly="true"
+ description="Defines the target of the console
handler. The value can either be SYSTEM_OUT or SYSTEM_ERR.">
+ <c:property-options>
+ <c:option value="SYSTEM_OUT"/>
+ <c:option value="SYSTEM_ERR"/>
+ </c:property-options>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+
+ <service name="FileHandler"
+ discovery="SubsystemDiscovery"
+ class="LoggerComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="file-handler"/>
+ </plugin-configuration>
+
+ <operation name="change-log-level" description="Change the
logging level for a handler.">
+ <parameters>
+ <c:simple-property name="level"
required="true" type="string" readOnly="false"
+ description="The log level specifying which
message levels will be logged by this logger. Message levels lower than this value will be
discarded.">
+ <c:property-options>
+ <c:option value="FATAL"/>
+ <c:option value="ERROR"/>
+ <c:option value="WARN"/>
+ <c:option value="INFO"/>
+ <c:option value="DEBUG"/>
+ <c:option value="TRACE"/>
+ </c:property-options>
+ </c:simple-property>
+ </parameters>
+ </operation>
+
+ <operation name="disable" description="Disable a logging
handler.">
+ </operation>
+
+ <operation name="enable" description="Enable a logging
handler.">
+ </operation>
+
+ <operation name="change-file" description="Change the file
for a handler.">
+ <parameters>
+ <c:simple-property name="path" required="true"
type="string" readOnly="false" description="The filesystem
path."/>
+ <c:simple-property name="relative-to"
required="false" type="string" readOnly="false"
+ description="The name of another previously
named path, or of one of the standard paths provided by the system.
+ If 'relative-to' is provided, the value of
the 'path' attribute is treated as relative to the path specified by this
attribute.
+ The standard paths provided by the system
include:<ul><li>jboss.home - the root directory of the JBoss
AS
+
distribution</li><li>user.home - user's home
directory</li><li>user.dir - user's current
+ working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir -
+ root directory for an individual server
instance</li><li>jboss.server.data.dir - directory the server
will
+ use for persistent data file
storage</li><li>jboss.server.log.dir - directory the server
will use for
+ log file
storage</li><li>jboss.server.tmp.dir - directory the server
will use for temporary file
+
storage</li><li>jboss.domain.servers.dir - directory under
which a host controller will create the
+ working area for individual server
instances</li></ul>"/>
+ </parameters>
+ </operation>
+ <resource-configuration>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The handler's
name."/>
+ <c:simple-property name="level" required="false"
type="string" readOnly="true"
+ description="The log level specifying which
message levels will be logged by this. Message levels lower than this value will be
discarded. "/>
+ <c:simple-property name="encoding"
required="false" type="string" readOnly="true"
+ description="The character encoding used by this
Handler."/>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="true" description="Defines a simple
filter type."/>
+ <c:simple-property name="formatter"
required="false" type="string" readOnly="true"
description="Defines a formatter."/>
+ <c:simple-property name="autoflush"
required="false" type="boolean" readOnly="true"
description="Automatically flush after each write."/>
+ <c:simple-property name="target" required="false"
type="string" readOnly="true"
+ description="Defines the target of the console
handler. The value can either be SYSTEM_OUT or SYSTEM_ERR.">
+ <c:property-options>
+ <c:option value="SYSTEM_OUT"/>
+ <c:option value="SYSTEM_ERR"/>
+ </c:property-options>
+ </c:simple-property>
+ </resource-configuration>
+ </service>
+ <service name="PeriodicRotatingFileHandler"
+ discovery="SubsystemDiscovery"
+ class="LoggerComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="periodic-rotating-file-handler"/>
+ </plugin-configuration>
+
+ <operation name="change-log-level" description="Change the
logging level for a handler.">
+ <parameters>
+ <c:simple-property name="level"
required="true" type="string" readOnly="false"
+ description="The log level specifying which
message levels will be logged by this logger. Message levels lower than this value will be
discarded.">
+ <c:property-options>
+ <c:option value="FATAL"/>
+ <c:option value="ERROR"/>
+ <c:option value="WARN"/>
+ <c:option value="INFO"/>
+ <c:option value="DEBUG"/>
+ <c:option value="TRACE"/>
+ </c:property-options>
+ </c:simple-property>
+ </parameters>
+ </operation>
+
+ <operation name="disable" description="Disable a logging
handler.">
+ </operation>
+
+ <operation name="enable" description="Enable a logging
handler.">
+ </operation>
+
+ <operation name="change-file" description="Change the file
for a handler.">
+ <parameters>
+ <c:simple-property name="path" required="true"
type="string" readOnly="false" description="The filesystem
path."/>
+ <c:simple-property name="relative-to"
required="false" type="string" readOnly="false"
+ description="The name of another previously
named path, or of one of the standard paths provided by the system.
+ If 'relative-to' is provided, the value of
the 'path' attribute is treated as relative to the path specified by this
attribute.
+ The standard paths provided by the system
include:<ul><li>jboss.home - the root directory of the JBoss
AS
+
distribution</li><li>user.home - user's home
directory</li><li>user.dir - user's current
+ working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir -
+ root directory for an individual server
instance</li><li>jboss.server.data.dir - directory the server
will
+ use for persistent data file
storage</li><li>jboss.server.log.dir - directory the server
will use for
+ log file
storage</li><li>jboss.server.tmp.dir - directory the server
will use for temporary file
+
storage</li><li>jboss.domain.servers.dir - directory under
which a host controller will create the
+ working area for individual server
instances</li></ul>"/>
+ </parameters>
+ </operation>
+ <resource-configuration>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The handler's
name."/>
+ <c:simple-property name="level" required="false"
type="string" readOnly="true" description="The log level
specifying which message levels will be logged by this.
+ Message levels lower than this value will be discarded. "/>
+ <c:simple-property name="encoding"
required="false" type="string" readOnly="true"
description="The character encoding used by this Handler."/>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="true" description="Defines a simple
filter type."/>
+ <c:simple-property name="formatter"
required="false" type="string" readOnly="true"
description="Defines a formatter."/>
+ <c:simple-property name="autoflush"
required="false" type="boolean" readOnly="true"
description="Automatically flush after each write."/>
+ <c:simple-property name="append" required="false"
type="boolean" readOnly="true" description="Specify whether to
append to the target file."/>
+ <c:map-property name="file" description="null"
>
+ <c:simple-property name="relative-to"
required="false" type="string" readOnly="true"
description="The name of another previously named path, or of one of the standard
paths
+ provided by the system. If 'relative-to' is provided, the
value of the 'path' attribute is treated as relative to the path
+ specified by this attribute. The standard paths provided by the
system include:<ul><li>jboss.home - the root directory
+ of the JBoss AS
distribution</li><li>user.home - user's home
directory</li><li>user.dir - user's current working
+ directory</li><li>java.home - java
installation directory</li><li>jboss.server.base.dir - root
directory for an
+ individual server
instance</li><li>jboss.server.data.dir - directory the server
will use for persistent data file
+ storage</li><li>jboss.server.log.dir -
directory the server will use for log file
storage</li><li>jboss.server.tmp.dir -
+ directory the server will use for temporary file
storage</li><li>jboss.domain.servers.dir - directory under
which a host controller
+ will create the working area for individual server
instances</li></ul>"/>
+ <c:simple-property name="path"
required="false" type="string" readOnly="true"
description="The filesystem path."/>
+ </c:map-property>
+ <c:simple-property name="suffix" required="false"
type="string" readOnly="true" description="Set the suffix string.
The string is in a format which
+ can be understood by java.text.SimpleDateFormat. The period of the
rotation is automatically calculated based on the suffix."/>
+ </resource-configuration>
+ </service>
+ <service name="SizeRotatingFileHandler"
+ discovery="SubsystemDiscovery"
+ class="LoggerComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="size-rotating-file-handler"/>
+ </plugin-configuration>
+
+ <operation name="change-log-level" description="Change the
logging level for a handler.">
+ <parameters>
+ <c:simple-property name="level"
required="true" type="string" readOnly="false"
+ description="The log level specifying which
message levels will be logged by this logger. Message levels lower than this value will be
discarded.">
+ <c:property-options>
+ <c:option value="FATAL"/>
+ <c:option value="ERROR"/>
+ <c:option value="WARN"/>
+ <c:option value="INFO"/>
+ <c:option value="DEBUG"/>
+ <c:option value="TRACE"/>
+ </c:property-options>
+ </c:simple-property>
+ </parameters>
+ </operation>
+
+ <operation name="disable" description="Disable a logging
handler.">
+ </operation>
+
+ <operation name="enable" description="Enable a logging
handler.">
+ </operation>
+
+ <operation name="change-file" description="Change the file
for a handler.">
+ <parameters>
+ <c:simple-property name="path" required="true"
type="string" readOnly="false" description="The filesystem
path."/>
+ <c:simple-property name="relative-to"
required="false" type="string" readOnly="false"
+ description="The name of another previously
named path, or of one of the standard paths provided by the system.
+ If 'relative-to' is provided, the value of
the 'path' attribute is treated as relative to the path specified by this
attribute.
+ The standard paths provided by the system
include:<ul><li>jboss.home - the root directory of the JBoss
AS
+
distribution</li><li>user.home - user's home
directory</li><li>user.dir - user's current
+ working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir -
+ root directory for an individual server
instance</li><li>jboss.server.data.dir - directory the server
will
+ use for persistent data file
storage</li><li>jboss.server.log.dir - directory the server
will use for
+ log file
storage</li><li>jboss.server.tmp.dir - directory the server
will use for temporary file
+
storage</li><li>jboss.domain.servers.dir - directory under
which a host controller will create the
+ working area for individual server
instances</li></ul>"/>
+ </parameters>
+ </operation>
+ <resource-configuration>
+ <c:simple-property name="name" required="false"
type="string" readOnly="true" description="The handler's
name."/>
+ <c:simple-property name="level" required="false"
type="string" readOnly="true" description="The log level
specifying which message levels will be logged by this. Message levels lower than this
value will be discarded. "/>
+ <c:simple-property name="encoding"
required="false" type="string" readOnly="true"
description="The character encoding used by this Handler."/>
+ <c:simple-property name="filter" required="false"
type="string" readOnly="true" description="Defines a simple
filter type."/>
+ <c:simple-property name="formatter"
required="false" type="string" readOnly="true"
description="Defines a formatter."/>
+ <c:simple-property name="autoflush"
required="false" type="boolean" readOnly="true"
description="Automatically flush after each write."/>
+ <c:simple-property name="append" required="false"
type="boolean" readOnly="true" description="Specify whether to
append to the target file."/>
+ <c:map-property name="file" description="null"
>
+ <c:simple-property name="relative-to"
required="false" type="string" readOnly="true"
description="The name of another previously named path, or of one of the standard
paths provided by the system. If 'relative-to' is provided, the value of the
'path' attribute is treated as relative to the path specified by this attribute.
The standard paths provided by the system
include:<ul><li>jboss.home - the root directory of the JBoss
AS distribution</li><li>user.home - user's home
directory</li><li>user.dir - user's current working
directory</li><li>java.home - java installation
directory</li><li>jboss.server.base.dir - root directory for
an individual server instance</li><li>jboss.server.data.dir -
directory the server will use for persistent data file
storage</li><li>jboss.server.log.dir - directory the server
will use for log file storage</li><li>jboss.server.tmp.dir -
directory the server will use for temporary file
storage</li><li>jboss.domain.servers.dir - directory under
which a host controller will create the working area for individual server
instances</li></ul>"/>
+ <c:simple-property name="path"
required="false" type="string" readOnly="true"
description="The filesystem path."/>
+ </c:map-property>
+ <c:simple-property name="rotate-size"
required="false" description="The size at which to rotate the log
file." type="long" units="bytes"/>
+ <c:simple-property name="max-backup-index"
required="false" description="The maximum number of backups to keep."
type="integer" />
+ </resource-configuration>
+ </service>
+
</server>
<server name="Security"
@@ -965,6 +1246,32 @@
<c:simple-property name="webservice-secure-port"
type="integer" readOnly="true"
description="The non-secure port that will be used
for rewriting the SOAP address. If absent the port will be identified by querying the list
of installed connectors."/>
</resource-configuration>
+
+ <service name="Endpoint"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="endpoint"/>
+ </plugin-configuration>
+
+ <metric property="average-processing-time"
description="Average endpoint processing time." displayType="summary"
units="milliseconds"/>
+ <metric property="min-processing-time" description="Minimal
endpoint processing time." units="milliseconds"/>
+ <metric property="max-processing-time" description="Maximal
endpoint processing time." units="milliseconds"/>
+ <metric property="total-processing-time" description="Total
endpoint processing time." measurementType="trendsup"
units="milliseconds"/>
+ <metric property="request-count" description="Count of
requests the endpoint processed." displayType="summary"
measurementType="trendsup"/>
+ <metric property="response-count" description="Count of
responses the endpoint generated." measurementType="trendsup"/>
+ <metric property="fault-count" description="Count of faults
the endpoint generated." displayType="summary"
measurementType="trendsup"/>
+
+ <resource-configuration>
+ <c:simple-property name="name" required="true"
type="string" readOnly="true" description="Webservice endpoint
name."/>
+ <c:simple-property name="context" required="true"
type="string" readOnly="true" description="Webservice endpoint
context."/>
+ <c:simple-property name="class" required="false"
type="string" readOnly="true" description="Webservice endpoint
class."/>
+ <c:simple-property name="type" required="false"
type="string" readOnly="true" description="Webservice endpoint
type."/>
+ <c:simple-property name="wsdl-url"
required="false" type="string" readOnly="true"
description="Webservice endpoint WSDL URL."/>
+ </resource-configuration>
+
+ </service>
</server>
<service name="NetworkInterface"
@@ -1018,4 +1325,30 @@
</service>
+ <service name="Deployment"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ creationDataType="content">
+
+
+ <runs-inside>
+ <parent-resource-type name="ServerGroup"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+ <plugin-configuration>
+ <c:simple-property name="path" default="deployment"
readOnly="true"/>
+ </plugin-configuration>
+
+ <content name="file" category="deployable"
isCreationType="true" description="Deployments on this server
group">
+ <configuration>
+ <c:group name="deployment" displayName="Deployment
Options">
+ <c:simple-property name="runtimeName"
required="true"/>
+ </c:group>
+ </configuration>
+ </content>
+
+ </service>
+
+
</plugin>
commit dd328eac2660aa3b2d4f0d95aa6f031d08ed09cf
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 25 11:34:19 2011 +0200
Changes and optimizations to operations handling and description elements.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index 6d4a0e2..8011628 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -23,14 +23,20 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
+import org.omg.CosNaming._BindingIteratorImplBase;
+
import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
/**
- * Generate properties from a domain dump
+ * Generate properties, metrics and operation templates for the
+ * plugin descriptor from a domain dump (server can run in domain
+ * or standalone mode).
+ *
* @author Heiko W. Rupp
*/
+@SuppressWarnings("unchecked")
public class Domain2Descriptor {
public static void main(String[] args) throws Exception {
@@ -48,15 +54,15 @@ public class Domain2Descriptor {
private void run(String[] args) {
- Mode mode = null;
+ D2DMode mode = null;
int pos = 0;
if (args[0].startsWith("-")) {
if (args[0].equals("-m"))
- mode = Domain2Descriptor.Mode.METRICS;
+ mode = D2DMode.METRICS;
else if (args[0].equals("-p"))
- mode = Domain2Descriptor.Mode.PROPERTIES;
+ mode = D2DMode.PROPERTIES;
else if (args[0].equals("-o"))
- mode = Domain2Descriptor.Mode.OPERATION;
+ mode = D2DMode.OPERATION;
else {
usage();
return;
@@ -75,12 +81,12 @@ public class Domain2Descriptor {
Operation op = new Operation("read-resource-description",address);
op.addAdditionalProperty("recursive","true");
- if (mode==Domain2Descriptor.Mode.OPERATION)
+ if (mode== D2DMode.OPERATION)
op.addAdditionalProperty("operations",true);
- if (mode == Domain2Descriptor.Mode.METRICS)
+ if (mode == D2DMode.METRICS)
op.addAdditionalProperty("include-runtime",true);
- ComplexResult res = (ComplexResult) conn.execute(op,true);
+ ComplexResult res = conn.executeComplex(op);
if (!res.isSuccess()) {
System.err.println("Failure: " + res.getFailureDescription());
return;
@@ -88,39 +94,44 @@ public class Domain2Descriptor {
Map<String,Object> resMap = res.getResult();
- if (mode==Domain2Descriptor.Mode.OPERATION) {
- Map<String,Object> operationsMap = (Map<String, Object>)
resMap.get("operations");
- for (Map.Entry<String,Object> entry : operationsMap.entrySet()) {
+ String what;
+ if (mode== D2DMode.OPERATION)
+ what="operations";
+ else
+ what="attributes";
+
+ Map<String,Object> attributesMap;
+ if (childType!=null) {
+ Map childMap = (Map) resMap.get("children");
+ Map <String,Object> typeMap = (Map<String, Object>)
childMap.get(childType);
+ Map descriptionMap = (Map) typeMap.get("model-description");
+ if (descriptionMap==null) {
+ System.err.println("No model description found");
+ return;
+ }
+ Map starMap = (Map) descriptionMap.get("*");
+ attributesMap = (Map<String, Object>) starMap.get(what);
+ }
+ else {
+ attributesMap = (Map<String, Object>) resMap.get(what);
+ }
+
+ if (mode==D2DMode.OPERATION) {
+ for (Map.Entry<String,Object> entry : attributesMap.entrySet()) {
if (entry.getKey().startsWith("read-"))
continue;
if (entry.getKey().equals("write-attribute"))
continue;
- createOperation((Map<String,Object>)entry.getValue());
+ createOperation(entry.getKey(),
(Map<String,Object>)entry.getValue());
}
-
- } else {
- Map<String,Object> attributesMap;
- if (childType!=null) {
- Map childMap = (Map) resMap.get("children");
- Map <String,Object> typeMap = (Map<String, Object>)
childMap.get(childType);
- Map descriptionMap = (Map) typeMap.get("model-description");
- if (descriptionMap==null) {
- System.err.println("No model description found");
- return;
- }
- Map starMap = (Map) descriptionMap.get("*");
- attributesMap = (Map<String, Object>)
starMap.get("attributes");
- }
- else {
- attributesMap = (Map<String, Object>)
resMap.get("attributes");
- }
-
- createProperties(mode, attributesMap, 0);
}
+ else
+ createProperties(mode, attributesMap, 0);
+// }
}
- private void createProperties(Mode mode, Map<String, Object> attributesMap, int
indent) {
+ private void createProperties(D2DMode mode, Map<String, Object> attributesMap,
int indent) {
if (attributesMap==null)
return;
@@ -161,16 +172,13 @@ public class Domain2Descriptor {
}
- if (ptype== Type.LIST && mode!=Domain2Descriptor.Mode.METRICS) {
+ if (ptype== Type.LIST && mode!= D2DMode.METRICS) {
StringBuilder sb = new StringBuilder("<c:list-property
name=\"");
sb.append(entryName);
sb.append("\"");
- if (props.containsKey("description")) {
- sb.append(" description=\"");
- sb.append(props.get("description"));
- sb.append("\"");
- }
+ String description = (String) props.get("description");
+ appendDescription(sb,description);
sb.append(" >\n");
if (!props.containsKey("attributes"))
sb.append(" <c:simple-property
name=\"").append(entryName).append("\" />\n");
@@ -192,7 +200,7 @@ public class Domain2Descriptor {
}
String accessType = getAccessType(props);
- if (mode==Domain2Descriptor.Mode.METRICS) {
+ if (mode== D2DMode.METRICS) {
if (!accessType.equals("metric"))
continue;
@@ -204,11 +212,7 @@ public class Domain2Descriptor {
sb.append(" dataType=\"trait\"");
String description = (String) props.get("description");
- if (description!=null) {
- if (sb.length()+description.length() > 120)
- sb.append("\n ");
- sb.append("
description=\"").append(description).append('"');
- }
+ appendDescription(sb,description);
sb.append("/>");
System.out.println(sb.toString());
@@ -224,32 +228,27 @@ public class Domain2Descriptor {
}
}
- private void createOperation(Map<String,Object> operationMap) {
+ private void createOperation(String name, Map<String, Object> operationMap) {
StringBuilder builder = new StringBuilder("<operation
name=\"");
- String name = (String) operationMap.get("operation-name");
builder.append(name).append('"');
String description = (String) operationMap.get("description");
- if (description!=null && !description.isEmpty()) {
- builder.append("
description=\"").append(description).append('"');
- }
+ appendDescription(builder, description);
builder.append(">\n");
-
-
- if (!((Map)operationMap.get("request-properties")).isEmpty()) {
- Map<String,Object> map = (Map<String, Object>)
operationMap.get("request-properties");
+ Map<String,Object> reqMap = (Map<String, Object>)
operationMap.get("request-properties");
+ if (reqMap!=null && !reqMap.isEmpty()) {
builder.append(" <parameters>\n");
- generatePropertiesForMap(builder, map, true);
+ generatePropertiesForMap(builder, reqMap, true);
builder.append(" </parameters>\n");
}
- if (!((Map)operationMap.get("reply-properties")).isEmpty()){
- Map<String,Object> map = (Map<String, Object>)
operationMap.get("reply-properties"); // TODO not sure -- perhaps for the java
code?
+ Map replyMap = (Map) operationMap.get("reply-properties");
+ if (replyMap!=null && !replyMap.isEmpty()){
builder.append(" <results>\n");
- generatePropertiesForMap(builder, map, true);
+ generatePropertiesForMap(builder, replyMap, true);
builder.append(" </results>\n");
}
@@ -258,6 +257,21 @@ public class Domain2Descriptor {
System.out.println(builder.toString());
}
+ private void appendDescription(StringBuilder builder, String description) {
+ if (description!=null && !description.isEmpty()) {
+ if (builder.length()>120)
+ builder.append("\n ");
+ builder.append(" description=\"");
+
+ description = description.replace("<","<");
+ description = description.replace(">",">");
+ description =
description.replace("\"","\\\"");
+
+ builder.append(description);
+ builder.append('"');
+ }
+ }
+
private void generatePropertiesForMap(StringBuilder builder, Map<String,
Object> map, boolean forceReadWrite) {
for (Map.Entry<String,Object> entry : map.entrySet()) {
@@ -334,11 +348,7 @@ public class Domain2Descriptor {
}
String description = (String) props.get("description");
- if (description!=null) {
- if (sb.length()+description.length() > 120)
- sb.append("\n ");
- sb.append("
description=\"").append(description).append('"');
- }
+ appendDescription(sb,description);
sb.append("/>");
return sb;
}
@@ -350,6 +360,9 @@ public class Domain2Descriptor {
private Type getTypeFromProps(Map<String, Object> props) {
Map<String,String> tMap = (Map<String, String>)
props.get("type");
+ if (tMap==null)
+ return Type.OBJECT;
+
String type = tMap.get("TYPE_MODEL_VALUE");
Type ret = Type.valueOf(type);
@@ -391,6 +404,7 @@ public class Domain2Descriptor {
System.out.println(" path is of kind 'key=value[,key=value]+");
System.out.println(" -p create properties (default)");
System.out.println(" -m create metrics");
+ System.out.println(" -o create operations");
}
public enum Type {
@@ -405,7 +419,7 @@ public class Domain2Descriptor {
;
}
- private enum Mode {
+ private enum D2DMode {
METRICS,
PROPERTIES,
OPERATION
commit 895f8fd65dd46327a171ecb96d498baecc2afffc
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 25 11:23:09 2011 +0200
Add a test for AS7-853
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
index 1ef3761..57ec4f3 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
@@ -153,6 +153,81 @@ public class UploadAndDeployTest {
}
+ // Test for AS7-853
+ @Test(timeOut = 60*1000L, enabled = true)
+ public void testUploadIndividualSteps2() throws Exception {
+
+ String bytes_value = prepare();
+
+ System.out.println("sha: " + bytes_value);
+
+ System.out.println();
+ ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT);
+
+ List<PROPERTY_VALUE> deploymentsAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ deploymentsAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
+ Operation op = new Operation("add",deploymentsAddress);
+ List<Object> content = new ArrayList<Object>(1);
+ Map<String,Object> contentValues = new HashMap<String,Object>();
+ contentValues.put("hash",new
PROPERTY_VALUE("BYTES_VALUE",bytes_value));
+ content.add(contentValues);
+ op.addAdditionalProperty("content",content);
+ op.addAdditionalProperty("name", TEST_WAR); // this needs to be unique
per upload
+ op.addAdditionalProperty("runtime-name", TEST_WAR);
+ System.out.flush();
+ JsonNode ret = connection.executeRaw(op);
+ op = null;
+ System.out.println("Add to /deploy done " + ret);
+ System.out.flush();
+
+ assert ret.toString().contains("success") : ret;
+
+
+ List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ serverGroupAddress.add(new PROPERTY_VALUE("server-group",
"main-server-group"));
+ serverGroupAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
+
+ Operation attach = new
Operation("add",serverGroupAddress,"enabled",true);
+ System.out.flush();
+ ret = connection.executeRaw(attach);
+ System.out.println("Add to server group done: " + ret);
+ System.out.flush();
+
+ assert ret.has("outcome") : "Ret not valid " +
ret.toString();
+ assert ret.get("outcome").getTextValue().equals("success") :
"add to sg was no success " + ret.getTextValue();
+
+
+ Result depRes;// = connection.execute(deploy);
+
+ Thread.sleep(500);
+
+ Operation undeploy = new Operation("undeploy",serverGroupAddress);
+ depRes = connection.execute(undeploy);
+
+ assert depRes.isSuccess() : "Undeploy went wrong: " +
depRes.getFailureDescription();
+ undeploy = null;
+
+ // Now tear down stuff again
+
+ Operation unattach = new Operation("remove",serverGroupAddress);
+ ret = connection.executeRaw(unattach);
+
+ assert ret.has("outcome") : "Ret not valid " +
ret.toString();
+ assert ret.get("outcome").getTextValue().equals("success") :
"remove from sg was no success " + ret.getTextValue();
+
+
+ // remove from domain
+
+ Operation remove = new Operation("remove",deploymentsAddress);
+ ret = connection.executeRaw(remove);
+
+ assert ret.has("outcome") : "Ret not valid " +
ret.toString();
+ assert ret.get("outcome").getTextValue().equals("success") :
"remove from domain was no success " + ret.getTextValue();
+
+ System.out.flush();
+
+ }
+
@Test(timeOut = 60*1000L, enabled = true)
public void testUploadComposite() throws Exception {
commit 3dbd7b89c98c52007fecc64c79a403de1170f68c
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue May 24 15:26:53 2011 +0200
Add a comment that tests need to run against domain mode.
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
index f2a4d54..1ef3761 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
@@ -36,7 +36,8 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
/**
* Test uploading and deploying to the domain
- * To use it, domain server must be up and running locally and
+ * To use it, a server in <b>domain mode</b> must be up and have it's
+ * <b>DomainController</b> running <b>locally</b> and
* the UPLOAD_FILE must point to a valid archive in the resources directory.
* @author Heiko W. Rupp
*/
commit 506c0dbaf78a349cebeb34f99b96befb57ec1c07
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri May 20 11:56:14 2011 +0200
Prevent NPE on container shutdown.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java
index 64a6ff7..b0b37ec 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java
@@ -103,7 +103,7 @@ public class EventContextImpl implements EventContext {
public SigarProxy getSigar() {
return getEventManager().getSigar();
}
-
+
private void registerEventPollerInternal(final EventPoller poller, int
pollingInterval,
final String sourceLocation) {
EventDefinition eventDefinition =
EventUtility.getEventDefinition(poller.getEventType(), this.resource.getResourceType());
@@ -124,6 +124,8 @@ public class EventContextImpl implements EventContext {
EventDefinition eventDefinition = EventUtility.getEventDefinition(eventType,
this.resource.getResourceType());
if (eventDefinition == null)
throw new IllegalArgumentException("Unknown event type - no
EventDefinition exists with name '" + eventType + "'.");
- getEventManager().unregisterEventPoller(this.resource, eventType,
sourceLocation);
+ EventManager eventManager = getEventManager();
+ if (eventManager!=null)
+ eventManager.unregisterEventPoller(this.resource, eventType,
sourceLocation);
}
}
commit 63ee4634ec99c852eb69defd272a8f2a79a92ed8
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri May 20 11:34:44 2011 +0200
Follow the changes in deploy handling of AS and correctly implement delete of
deployments
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index eace9b8..5c0a499 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -157,6 +157,16 @@ public class ASConnection {
return null;
}
+
+
+ public Result execute(Operation op) {
+ return execute(op,false);
+ }
+
+ public ComplexResult executeComplex(Operation op) {
+ return (ComplexResult) execute(op,true);
+ }
+
public Result execute(Operation op, boolean isComplex){
JsonNode node = executeRaw(op);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 609fe69..cbc2893 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -464,14 +464,40 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
return result;
}
+ public String addressToPath(List<PROPERTY_VALUE> address)
+ {
+ StringBuilder builder = new StringBuilder();
+ Iterator<PROPERTY_VALUE> iter = address.iterator();
+ while (iter.hasNext()) {
+ PROPERTY_VALUE val = iter.next();
+ builder.append(val.getKey()).append('=').append(val.getValue());
+ if (iter.hasNext())
+ builder.append(',');
+ }
+ return builder.toString();
+ }
+
@Override
public void deleteResource() throws Exception {
- System.out.println("delete resource: " + path);
- Operation op = new Operation("remove",pathToAddress(path));
- ComplexResult res = (ComplexResult) connection.execute(op, true);
+ log.info("delete resource: " + path + " ...");
+ List<PROPERTY_VALUE> address = pathToAddress(path);
+ Operation op = new Operation("remove", address);
+ ComplexResult res = connection.executeComplex(op);
if (!res.isSuccess())
throw new IllegalArgumentException("Delete for [" + path + "]
failed: " + res.getFailureDescription());
+ if (path.contains("server-group")) {
+ // This was a server group level deployment - we also need to remove the
entry in /deployments
+ for (PROPERTY_VALUE val : address) {
+ if (val.getKey().equals("deployment")) {
+ ComplexResult res2 = connection.executeComplex(new
Operation("remove",val.getKey(),val.getValue()));
+ if (!res2.isSuccess())
+ throw new IllegalArgumentException("Removal of [" +
path + "] falied : " + res2.getFailureDescription());
+ }
+ }
+ }
+ log.info(" ... done");
+
}
@@ -499,6 +525,13 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
}
String fileName = details.getFileName();
+
+ if (fileName.startsWith("C:\\fakepath\\")) { // TODO this is a hack
as the server adds the fake path somehow
+ fileName=fileName.substring("C:\\fakepath\\".length());
+ }
+
+ log.info("Deploying [" + fileName + "] ...");
+
String tmpName = fileName; // TODO figure out the tmp-name biz with the AS guys
JsonNode resultNode = uploadResult.get("result");
@@ -506,12 +539,19 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
ASConnection connection = getASConnection();
Operation step1 = new Operation("add","deployment",tmpName);
- step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", hash));
+// step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", hash));
+ List<Object> content = new ArrayList<Object>(1);
+ Map<String,Object> contentValues = new HashMap<String,Object>();
+ contentValues.put("hash",new
PROPERTY_VALUE("BYTES_VALUE",hash));
+ content.add(contentValues);
+ step1.addAdditionalProperty("content",content);
+
step1.addAdditionalProperty("name", tmpName);
step1.addAdditionalProperty("runtime-name", fileName);
CompositeOperation cop = new CompositeOperation();
cop.addStep(step1);
+ String resourceKey;
/*
* We need to check here if this is an upload to /deployment only
@@ -519,21 +559,34 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
*/
if (context.getResourceKey().contains("server-group=")) {
- List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>();
serverGroupAddress.addAll(pathToAddress(context.getResourceKey()));
serverGroupAddress.add(new PROPERTY_VALUE("deployment", tmpName));
- Operation step2 = new
Operation("add",serverGroupAddress,"enabled","true");
+ Operation step2 = new Operation("add",serverGroupAddress);
cop.addStep(step2);
+
+ Operation step3 = new Operation("deploy",serverGroupAddress);
+ cop.addStep(step3);
+
+ resourceKey = addressToPath(serverGroupAddress);
+ }
+ else {
+ resourceKey = addressToPath(step1.getAddress());
}
JsonNode result = connection.executeRaw(cop);
if (ASConnection.isErrorReply(result)) {
- report.setErrorMessage(ASConnection.getFailureDescription(resultNode));
+ String failureDescription = ASConnection.getFailureDescription(result);
+ report.setErrorMessage(failureDescription);
report.setStatus(CreateResourceStatus.FAILURE);
+ log.warn(" ... done with failure: " + failureDescription);
}
else {
report.setStatus(CreateResourceStatus.SUCCESS);
+ report.setResourceName(fileName);
+ report.setResourceKey(resourceKey);
+ log.info(" ... with success and key [" + resourceKey +
"]" );
}
return report;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
index 8c46247..67190ba 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
@@ -21,9 +21,11 @@ package org.rhq.modules.plugins.jbossas7;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.codehaus.jackson.JsonNode;
@@ -62,6 +64,7 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
return null; // TODO: Customise this generated block
}
+ // TODO I think this package code is not used.
@Override
public DeployPackagesResponse deployPackages(Set<ResourcePackageDetails>
packages,
ContentServices contentServices) {
@@ -87,23 +90,35 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
List<PROPERTY_VALUE> deploymentsAddress = new
ArrayList<PROPERTY_VALUE>(1);
deploymentsAddress.add(new PROPERTY_VALUE("deployment",
fileName));
Operation step1 = new Operation("add",deploymentsAddress);
- step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", hash));
+// step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", hash));
+ List<Object> content = new ArrayList<Object>(1);
+ Map<String,Object> contentValues = new
HashMap<String,Object>();
+ contentValues.put("hash",new
PROPERTY_VALUE("BYTES_VALUE",hash));
+ content.add(contentValues);
+ step1.addAdditionalProperty("content",content);
+
step1.addAdditionalProperty("name", fileName);
List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
serverGroupAddress.addAll(pathToAddress(context.getResourceKey()));
serverGroupAddress.add(new PROPERTY_VALUE("deployment",
fileName));
- Operation step2 = new
Operation("add",serverGroupAddress,"enabled","true");
+ Operation step2 = new Operation("add",serverGroupAddress);
+ Operation step3 = new
Operation("deploy",serverGroupAddress);
CompositeOperation cop = new CompositeOperation();
cop.addStep(step1);
cop.addStep(step2);
+ cop.addStep(step3);
JsonNode result = connection.executeRaw(cop);
if (ASConnection.isErrorReply(result)) // TODO get failure message
into response
response.addPackageResponse(new
DeployIndividualPackageResponse(details.getKey(),ContentResponseResult.FAILURE));
- else
- response.addPackageResponse(new
DeployIndividualPackageResponse(details.getKey(),ContentResponseResult.SUCCESS));
+ else {
+ DeployIndividualPackageResponse individualPackageResponse = new
DeployIndividualPackageResponse(
+ details.getKey(), ContentResponseResult.SUCCESS);
+ response.addPackageResponse(individualPackageResponse);
+ response.setOverallRequestResult(ContentResponseResult.SUCCESS);
+ }
}
else
response.addPackageResponse(new
DeployIndividualPackageResponse(details.getKey(),ContentResponseResult.FAILURE));
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 7e0a890..d7055a3 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -857,6 +857,29 @@
description="Specifies the MappingManager
implementation class name to use. To use the container default set the value to
'default''."/>
</resource-configuration>
+ <service name="SecurtityDomain"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+
+
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="security-domain"/>
+ </plugin-configuration>
+
+
+
+ <resource-configuration>
+ <c:simple-property name="extends" required="false"
type="string" readOnly="true" description="The parent security
domain"/>
+ <c:simple-property name="cache-type"
required="false" type="string" readOnly="true"
+ description="Adds a cache to speed up
authentication checks. Allowed values are 'default' to use simple map as the cache
and 'infinispan' to use an Infinispan cache."/>
+ </resource-configuration>
+ </service>
+
</server>
<server name="Threads"
@@ -915,8 +938,6 @@
</service>
-
-
</server>
<server name="Webservices"
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/PathHandlingTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/PathHandlingTest.java
index a59b05e..cb10279 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/PathHandlingTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/PathHandlingTest.java
@@ -92,4 +92,15 @@ public class PathHandlingTest {
}
assert found == 2 : "did not find both keys, but " + found;
}
+
+ public void addr2path() throws Exception {
+
+ String path = "subsystem=jms,profile=default,queue=java:/foo";
+
+ BaseComponent bc = new BaseComponent();
+ List<PROPERTY_VALUE> list = bc.pathToAddress(path);
+
+ String path2 = bc.addressToPath(list);
+ assert path.equals(path2);
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
index b1eb277..f2a4d54 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
@@ -22,7 +22,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.codehaus.jackson.JsonNode;
import org.testng.annotations.Test;
@@ -54,10 +56,24 @@ public class UploadAndDeployTest {
assert bytes_value != null;
System.out.println("sha: " + bytes_value);
+ assert bytes_value.equals("7jgpMVmynfxpqp8UDleKLmtgbrA=");
}
@Test(timeOut = 60*1000L, enabled = true)
+ public void testDoubleUploadOnly() throws Exception {
+
+ String bytes_value = prepare();
+ String bytes_value2 = prepare();
+
+ assert bytes_value != null;
+ assert bytes_value2 != null;
+ assert bytes_value.equals(bytes_value2);
+
+ assert bytes_value.equals("7jgpMVmynfxpqp8UDleKLmtgbrA=");
+ }
+
+ @Test(timeOut = 60*1000L, enabled = true)
public void testUploadIndividualSteps() throws Exception {
String bytes_value = prepare();
@@ -70,11 +86,16 @@ public class UploadAndDeployTest {
List<PROPERTY_VALUE> deploymentsAddress = new
ArrayList<PROPERTY_VALUE>(1);
deploymentsAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
Operation op = new Operation("add",deploymentsAddress);
- op.addAdditionalProperty("hash",new
PROPERTY_VALUE("BYTES_VALUE",bytes_value));
- op.addAdditionalProperty("name", TEST_WAR); // this needs to be
separate per upload
+ List<Object> content = new ArrayList<Object>(1);
+ Map<String,Object> contentValues = new HashMap<String,Object>();
+ contentValues.put("hash",new
PROPERTY_VALUE("BYTES_VALUE",bytes_value));
+ content.add(contentValues);
+ op.addAdditionalProperty("content",content);
+ op.addAdditionalProperty("name", TEST_WAR); // this needs to be unique
per upload
op.addAdditionalProperty("runtime-name", TEST_WAR);
System.out.flush();
JsonNode ret = connection.executeRaw(op);
+ op = null;
System.out.println("Add to /deploy done " + ret);
System.out.flush();
@@ -82,12 +103,13 @@ public class UploadAndDeployTest {
List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
- serverGroupAddress.add(new
PROPERTY_VALUE("server-group","main-server-group"));
+ serverGroupAddress.add(new PROPERTY_VALUE("server-group",
"main-server-group"));
serverGroupAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
- op.addAdditionalProperty("runtime-name", TEST_WAR);
- Operation deploy = new
Operation("add",serverGroupAddress,"enabled","true");
+
+ Operation attach = new
Operation("add",serverGroupAddress);//,"enabled","true");
+// deploy.addAdditionalProperty("runtime-name", TEST_WAR);
System.out.flush();
- ret = connection.executeRaw(deploy);
+ ret = connection.executeRaw(attach);
System.out.println("Add to server group done: " + ret);
System.out.flush();
@@ -95,10 +117,24 @@ public class UploadAndDeployTest {
assert ret.get("outcome").getTextValue().equals("success") :
"add to sg was no success " + ret.getTextValue();
+ Operation deploy = new Operation("deploy",serverGroupAddress);
+ Result depRes = connection.execute(deploy);
+
+ assert depRes.isSuccess() : "Deploy went wrong: " +
depRes.getFailureDescription();
+
+
+ Thread.sleep(500);
+
+ Operation undeploy = new Operation("undeploy",serverGroupAddress);
+ depRes = connection.execute(undeploy);
+
+ assert depRes.isSuccess() : "Undeploy went wrong: " +
depRes.getFailureDescription();
+ undeploy = null;
+
// Now tear down stuff again
- Operation undeploy = new Operation("remove",serverGroupAddress);
- ret = connection.executeRaw(undeploy);
+ Operation unattach = new Operation("remove",serverGroupAddress);
+ ret = connection.executeRaw(unattach);
assert ret.has("outcome") : "Ret not valid " +
ret.toString();
assert ret.get("outcome").getTextValue().equals("success") :
"remove from sg was no success " + ret.getTextValue();
@@ -121,26 +157,36 @@ public class UploadAndDeployTest {
String bytes_value = prepare();
+ System.out.println("Prepare done");
+ System.out.flush();
List<PROPERTY_VALUE> deploymentsAddress = new
ArrayList<PROPERTY_VALUE>(1);
deploymentsAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
Operation step1 = new Operation("add",deploymentsAddress);
- step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", bytes_value));
- step1.addAdditionalProperty("name", TEST_WAR);
+ List<Object> content = new ArrayList<Object>(1);
+ Map<String,Object> contentValues = new HashMap<String,Object>();
+ contentValues.put("hash",new
PROPERTY_VALUE("BYTES_VALUE",bytes_value));
+ content.add(contentValues);
+ step1.addAdditionalProperty("content", content);
+ step1.addAdditionalProperty("name", TEST_WAR); // this needs to be
unique per upload
+
List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
serverGroupAddress.add(new
PROPERTY_VALUE("server-group","main-server-group"));
serverGroupAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
- Operation step2 = new
Operation("add",serverGroupAddress,"enabled","true");
+ Operation step2 = new Operation("add",serverGroupAddress);//
,"enabled","true");
+ Operation step2a = new Operation("deploy",serverGroupAddress);
- Operation step3 = new Operation("remove",serverGroupAddress);
+ Operation step3 = new Operation("undeploy",serverGroupAddress);
+ Operation step3a = new Operation("remove",serverGroupAddress);
Operation step4 = new Operation("remove",deploymentsAddress);
CompositeOperation cop = new CompositeOperation();
cop.addStep(step1);
cop.addStep(step2);
+ cop.addStep(step2a);
ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT);
@@ -148,16 +194,23 @@ public class UploadAndDeployTest {
System.out.println(ret);
System.out.flush();
+ assert ret.has("outcome") : "Ret not valid " +
ret.toString();
+ assert ret.get("outcome").getTextValue().equals("success") :
"Composite deploy was no success " + ret.getTextValue();
+
Thread.sleep(1000);
cop = new CompositeOperation();
cop.addStep(step3);
+ cop.addStep(step3a);
cop.addStep(step4);
ret = connection.executeRaw(cop);
System.out.println(ret);
System.out.flush();
+ assert ret.has("outcome") : "Ret not valid " +
ret.toString();
+ assert ret.get("outcome").getTextValue().equals("success") :
"Composite remove was no success " + ret.getTextValue();
+
}
commit 1b158d363959f76fbc698d34435b2fc4f6557eab
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu May 19 10:39:21 2011 +0200
Fix the property name for includes.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 574e8cb..7e0a890 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -980,8 +980,8 @@
<c:simple-property name="default-interface"
readOnly="true" displayName="Default Interface"
description="Default Interface for these bindings. See NetworkInterfaces for its
definition" required="false"/>
<!-- note: at domain level there is no port-offset -->
<c:simple-property name="port-offset" readOnly="true"
displayName="Port Offset" description="Offset from standard ports for this
group" required="false"/>
- <c:list-property name="include">
- <c:simple-property name="binding" displayName="Included
bindings" description="Other bindings that are included in this one"/>
+ <c:list-property name="includes">
+ <c:simple-property name="includes"
displayName="Included bindings" description="Other bindings that are
included in this one"/>
</c:list-property>
<c:list-property name="socket-binding">
<c:map-property name="binding">
commit 19cca0b11c0a3d45055d0906e586fd697a9f8e78
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu May 19 10:38:44 2011 +0200
Barf if a property can not be found in the JSON.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index ccdd235..609fe69 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -195,6 +195,10 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
for (Map.Entry<String,PropertyDefinition> propDefEntry: entrySet) {
PropertyDefinition propDef = propDefEntry.getValue();
JsonNode sub = json.findValue(propDef.getName());
+ if (sub==null) {
+ log.error("No value for property [" + propDef.getName() +
"] found - check the descriptor");
+ continue;
+ }
if (propDef instanceof PropertyDefinitionSimple) {
PropertySimple propertySimple;
commit b16fc49c66386a7e399999d62782db7d29221cda
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 18 22:15:06 2011 +0200
Support creation of JMS objects.
This code may be pulled up in a super class, as it is applicable for most/all cases of
:add
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/JmsComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/JmsComponent.java
index 70bb5d7..3aeef6e 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/JmsComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/JmsComponent.java
@@ -29,12 +29,15 @@ import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.Property;
import org.rhq.core.domain.configuration.PropertyList;
import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionList;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
+import org.rhq.core.domain.configuration.definition.PropertySimpleType;
import org.rhq.core.domain.resource.CreateResourceStatus;
import org.rhq.core.pluginapi.inventory.CreateResourceReport;
import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
-import org.rhq.modules.plugins.jbossas7.json.Result;
/**
* Component class for the JMS subsystem
@@ -48,42 +51,77 @@ public class JmsComponent extends DomainComponent {
public CreateResourceReport createResource(CreateResourceReport report) {
- Configuration resConf = report.getResourceConfiguration();
Configuration pConf = report.getPluginConfiguration();
+ Configuration resConf = report.getResourceConfiguration();
+ ConfigurationDefinition resConfDef =
report.getResourceType().getResourceConfigurationDefinition();
String type = pConf.getSimpleValue("path", "");
List<PROPERTY_VALUE> address = pathToAddress(getPath());
address.add(new PROPERTY_VALUE(type,report.getUserSpecifiedResourceName()));
Operation op = new Operation("add",address);
+
+ // Loop over the properties from the config and add them as properties to the op
for (Map.Entry<String, Property> entry:
resConf.getAllProperties().entrySet()) {
Property value = entry.getValue();
if (value !=null) {
+ String name = entry.getKey();
+
if (value instanceof PropertySimple) {
+ PropertyDefinitionSimple propDef = (PropertyDefinitionSimple)
resConfDef.get(name);
PropertySimple ps = (PropertySimple) value;
- op.addAdditionalProperty(entry.getKey(), ps.getStringValue()); //
TODO determine real type
+ op.addAdditionalProperty(name, getObjectForProperty(ps,propDef));
} else if (value instanceof PropertyList) {
PropertyList propertyList = (PropertyList) value;
- List<String> list = new ArrayList<String>();
+ List<Object> list = new ArrayList<Object>();
+ PropertyDefinitionList pd =
resConfDef.getPropertyDefinitionList(name);
+ PropertyDefinitionSimple propDef = (PropertyDefinitionSimple)
pd.getMemberDefinition();
for (Property p : propertyList.getList()) {
- list.add(p.toString()); // TODO
+
+ Object o = getObjectForProperty((PropertySimple) p, propDef);
+ list.add(o);
}
- op.addAdditionalProperty(entry.getKey(),list);
+ op.addAdditionalProperty(name,list);
}
}
}
ComplexResult res = (ComplexResult) getASConnection().execute(op,true);
+ // TODO Currently this reports a failure even if it succeeds for jms
+
if (res == null || !res.isSuccess()) {
report.setStatus(CreateResourceStatus.FAILURE);
} else {
report.setStatus(CreateResourceStatus.SUCCESS);
- report.setResourceKey(address.toString()); // TODO ??
+ report.setResourceKey(address.toString());
report.setResourceName(report.getUserSpecifiedResourceName());
}
System.out.println(report);
return report;
}
+
+ Object getObjectForProperty(PropertySimple prop, PropertyDefinitionSimple propDef) {
+
+ PropertySimpleType type = propDef.getType();
+ switch (type) {
+ case STRING:
+ return prop.getStringValue();
+ case INTEGER:
+ return prop.getIntegerValue();
+ case BOOLEAN:
+ return prop.getBooleanValue();
+ case LONG:
+ return prop.getLongValue();
+ case FLOAT:
+ return prop.getFloatValue();
+ case DOUBLE:
+ return prop.getDoubleValue();
+ default:
+ return prop.getStringValue();
+ }
+
+
+ }
}
commit 5abdcb5f64541a372b8a00412b7b9fc38c118827
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 18 22:14:15 2011 +0200
Make failure description an object, as the AS may result stuff that jackson can't
deal with.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
index ccc967b..c7a983e 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
@@ -36,7 +36,7 @@ public class Result {
@JsonProperty("compensating-operation")
private Operation compensatingOperation;
@JsonProperty("failure-description")
- private List<Map<String, String>> failureDescription;
+ private /*List<Map<String, String>>*/Object failureDescription;
@JsonIgnore
private boolean success = false;
@@ -74,11 +74,11 @@ public class Result {
this.compensatingOperation = compensatingOperation;
}
- public List<Map<String, String>> getFailureDescription() {
+ public Object getFailureDescription() {
return failureDescription;
}
- public void setFailureDescription(List<Map<String, String>>
failureDescription) {
+ public void setFailureDescription(/*List<Map<String, String>>*/Object
failureDescription) {
this.failureDescription = failureDescription;
}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
index 2ca9f91..53ac89e 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
@@ -23,7 +23,10 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.annotate.JsonAnyGetter;
import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.SerializationConfig;
import org.testng.annotations.Test;
import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
@@ -157,7 +160,7 @@ public class OperationJsonTest {
assert result.getResult() == null;
assert result.getCompensatingOperation() == null;
assert result.getFailureDescription() != null;
- assert result.getFailureDescription().size() == 1;
+// assert result.getFailureDescription().size() == 1;
}
public void complexResult1() throws Exception {
@@ -216,4 +219,77 @@ public class OperationJsonTest {
}
+ public void complexResult2() throws Exception {
+
+
+ String resultString =
+ "{\n" +
+ " \"outcome\" : \"failed\",\n" +
+ " \"result\" : {\n" +
+ " \"server-groups\" : {\n" +
+ " \"main-server-group\" : {\n" +
+ " \"server-one\" : {\n" +
+ " \"host\" : \"local\",\n"
+
+ " \"response\" : {\n" +
+ " \"outcome\" :
\"success\",\n" +
+ " \"result\" : null,\n" +
+ " \"compensating-operation\" :
{\n" +
+ " \"operation\" :
\"add\",\n" +
+ " \"address\" : [ {\n" +
+ " \"subsystem\" :
\"jms\"\n" +
+ " }, {\n" +
+ " \"queue\" :
\"flubbr\"\n" +
+ " } ],\n" +
+ " \"durable\" :
\"true\",\n" +
+ " \"entries\" : [
\"PropertySimple[id=0, name=entries, value=flubbr, override=null]\" ]\n" +
+ " }\n" +
+ " }\n" +
+ " },\n" +
+ " \"server-two\" : {\n" +
+ " \"host\" : \"local\",\n"
+
+ " \"response\" : {\n" +
+ " \"outcome\" :
\"success\",\n" +
+ " \"result\" : null,\n" +
+ " \"compensating-operation\" :
{\n" +
+ " \"operation\" :
\"add\",\n" +
+ " \"address\" : [ {\n" +
+ " \"subsystem\" :
\"jms\"\n" +
+ " }, {\n" +
+ " \"queue\" :
\"flubbr\"\n" +
+ " } ],\n" +
+ " \"durable\" :
\"true\",\n" +
+ " \"entries\" : [
\"PropertySimple[id=0, name=entries, value=flubbr, override=null]\" ]\n" +
+ " }\n" +
+ " }\n" +
+ " },\n" +
+ " \"server-demo\" : {\n" +
+ " \"host\" : \"local\",\n"
+
+ " \"response\" : {\n" +
+ " \"outcome\" :
\"failed\",\n" +
+ " \"failure-description\" : \"No
handler for add at address [\\n (\\\"host\\\" =>
\\\"local\\\"),\\n (\\\"server\\\" =>
\\\"server-demo\\\"),\\n (\\\"subsystem\\\" =>
\\\"jms\\\"),\\n (\\\"queue\\\" =>
\\\"flubbr\\\")\\n]\"\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " },\n" +
+ " \"failure-description\" : \"Operation was
not applied successfully to any servers\"\n" +
+ "}";
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
+
+ ComplexResult result = mapper.readValue(resultString,ComplexResult.class);
+ assert !result.isSuccess() : "Result should be 'failed', but was
not";
+ assert result.getFailureDescription().equals("Operation was not applied
successfully to any servers");
+
+ assert result.getResult().containsKey("server-groups");
+ Map<String,Object> sgs = (Map<String, Object>)
result.getResult().get("server-groups");
+ assert sgs.containsKey("main-server-group");
+ Map<String,Object> mainSg = (Map<String, Object>)
sgs.get("main-server-group");
+ assert mainSg.size()==3 : "Main server group does not have 3 servers, but
" + mainSg.size();
+ Map<String,Object> s3 = (Map<String, Object>)
mainSg.get("server-demo");
+ Map<String,Object> response = (Map<String, Object>)
s3.get("response");
+ assert response!=null;
+
+ }
+
}
commit 427fe807db9993edeb3de4b246c961710f5d7c4a
Merge: 9520bad 25e909e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 18 11:45:37 2011 +0200
Merge branch 'master' into as7plugin
commit 9520bad8e6bd7574dba08530613e526aaee2a768
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 18 11:42:29 2011 +0200
Work on creation of JMS destinations with the normal "create child"
workflow.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index f4ba9a0..6d4a0e2 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -242,14 +242,14 @@ public class Domain2Descriptor {
if (!((Map)operationMap.get("request-properties")).isEmpty()) {
Map<String,Object> map = (Map<String, Object>)
operationMap.get("request-properties");
builder.append(" <parameters>\n");
- generatePropertiesForMap(builder, map);
+ generatePropertiesForMap(builder, map, true);
builder.append(" </parameters>\n");
}
if (!((Map)operationMap.get("reply-properties")).isEmpty()){
Map<String,Object> map = (Map<String, Object>)
operationMap.get("reply-properties"); // TODO not sure -- perhaps for the java
code?
builder.append(" <results>\n");
- generatePropertiesForMap(builder, map);
+ generatePropertiesForMap(builder, map, true);
builder.append(" </results>\n");
}
@@ -258,7 +258,7 @@ public class Domain2Descriptor {
System.out.println(builder.toString());
}
- private void generatePropertiesForMap(StringBuilder builder, Map<String,
Object> map) {
+ private void generatePropertiesForMap(StringBuilder builder, Map<String,
Object> map, boolean forceReadWrite) {
for (Map.Entry<String,Object> entry : map.entrySet()) {
Map<String, Object> entryValue = (Map<String, Object>)
entry.getValue();
@@ -266,8 +266,7 @@ public class Domain2Descriptor {
Type type = getTypeFromProps(entryValue);
String typeString = getTypeStringForTypeAndName(type, entryKey);
- builder.append(generateProperty(4, entryValue,typeString,
entryKey,getAccessType(
- entryValue)));
+ builder.append(generateProperty(4, entryValue,typeString, entryKey, null));
builder.append('\n');
}
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/JmsComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/JmsComponent.java
new file mode 100644
index 0000000..70bb5d7
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/JmsComponent.java
@@ -0,0 +1,89 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.resource.CreateResourceStatus;
+import org.rhq.core.pluginapi.inventory.CreateResourceReport;
+import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+import org.rhq.modules.plugins.jbossas7.json.Result;
+
+/**
+ * Component class for the JMS subsystem
+ * @author Heiko W. Rupp
+ */
+public class JmsComponent extends DomainComponent {
+
+ private final Log log = LogFactory.getLog(JmsComponent.class);
+
+ @Override
+ public CreateResourceReport createResource(CreateResourceReport report) {
+
+
+ Configuration resConf = report.getResourceConfiguration();
+ Configuration pConf = report.getPluginConfiguration();
+
+ String type = pConf.getSimpleValue("path", "");
+
+ List<PROPERTY_VALUE> address = pathToAddress(getPath());
+ address.add(new PROPERTY_VALUE(type,report.getUserSpecifiedResourceName()));
+ Operation op = new Operation("add",address);
+ for (Map.Entry<String, Property> entry:
resConf.getAllProperties().entrySet()) {
+ Property value = entry.getValue();
+ if (value !=null) {
+
+ if (value instanceof PropertySimple) {
+ PropertySimple ps = (PropertySimple) value;
+ op.addAdditionalProperty(entry.getKey(), ps.getStringValue()); //
TODO determine real type
+ } else if (value instanceof PropertyList) {
+ PropertyList propertyList = (PropertyList) value;
+ List<String> list = new ArrayList<String>();
+ for (Property p : propertyList.getList()) {
+ list.add(p.toString()); // TODO
+ }
+ op.addAdditionalProperty(entry.getKey(),list);
+ }
+ }
+ }
+ ComplexResult res = (ComplexResult) getASConnection().execute(op,true);
+
+ if (res == null || !res.isSuccess()) {
+ report.setStatus(CreateResourceStatus.FAILURE);
+ } else {
+ report.setStatus(CreateResourceStatus.SUCCESS);
+ report.setResourceKey(address.toString()); // TODO ??
+ report.setResourceName(report.getUserSpecifiedResourceName());
+ }
+
+ System.out.println(report);
+ return report;
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index b0089f7..574e8cb 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -392,6 +392,7 @@
<c:simple-property name="path" readOnly="true"
default="connector"/>
</plugin-configuration>
</service>
+<!-- this is no child resource
<service name="HQueue"
discovery="SubsystemDiscovery"
class="BaseComponent"
@@ -406,11 +407,12 @@
</resource-configuration>
</service>
+-->
</server>
<server name="JMS"
discovery="SubsystemDiscovery"
- class="DomainComponent"
+ class="JmsComponent"
description="The JMS messaging subsystem"
singleton="true"
@@ -425,23 +427,57 @@
<service name="Queue"
discovery="SubsystemDiscovery"
- class="BaseComponent"
+ class="JmsComponent"
+ createDeletePolicy="both"
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="queue"/>
</plugin-configuration>
+ <resource-configuration> <!-- See BZ 705713 TODO -->
+ <c:simple-property name="durable" required="false"
type="boolean" readOnly="false" default="false"
+ description="Whether the queue is durable or
not."/>
+ <c:list-property name="entries" required="false"
readOnly="false"
+ description="The jndi names the queue will be bound
to.">
+ <c:simple-property name="entries"
type="string"/>
+ </c:list-property>
+ <c:simple-property name="selector"
required="false" type="string" readOnly="false"
description="The queue selector."/>
+ <c:template name="add" description="Properties when
adding a new queue" >
+ <c:simple-property name="durable"
required="false" type="boolean" default="false"
+ description="Whether the queue is durable or
not."/>
+ <c:list-property name="entries"
required="false"
+ description="The jndi names the queue will be
bound to.">
+ <c:simple-property name="entries"
type="string"/>
+ </c:list-property>
+ <c:simple-property name="selector"
required="false" type="string" description="The queue
selector."/>
+ </c:template>
+ </resource-configuration>
</service>
<service name="Topic"
discovery="SubsystemDiscovery"
- class="BaseComponent"
+ class="JmsComponent"
+ createDeletePolicy="both"
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="topic"/>
</plugin-configuration>
+ <resource-configuration> <!-- See BZ 705713 TODO -->
+ <c:list-property name="entries" required="false"
readOnly="false"
+ description="The jndi names the queue will be bound
to.">
+ <c:simple-property name="entries"
type="string"/>
+ </c:list-property>
+ <c:template name="add" description="Template when
adding a Topic">
+ <!--<c:list-property name="entries"
required="false"-->
+ <!--description="The jndi names the queue
will be bound to.">-->
+ <c:simple-property name="entries"
type="string"/>
+ <c:simple-property name="foobar"
required="false" />
+ <!--</c:list-property>-->
+ </c:template>
+ </resource-configuration>
</service>
<service name="Connection-Factory"
discovery="SubsystemDiscovery"
- class="BaseComponent"
+ class="JmsComponent"
+ createDeletePolicy="both"
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="connection-factory"/>
@@ -542,17 +578,30 @@
<c:simple-property name="default-web-module"
type="string" readOnly="true" defaultValue="ROOT.war"
description="The web module deployment name that will be
mapped as the root webapp."/>
<c:map-property name="access-log" description="The
access log configuration for this virtual server." >
- <c:simple-property name="pattern"
type="string" readOnly="true" defaultValue="common"
description="The access log pattern."/>
- <c:simple-property name="resolve-hosts"
type="boolean" readOnly="true" defaultValue="false"
description="Host resolution."/>
- <c:simple-property name="extended"
type="boolean" readOnly="true" defaultValue="false"
+ <c:simple-property name="pattern"
type="string" readOnly="true" defaultValue="common"
required="false" description="The access log pattern."/>
+ <c:simple-property name="resolve-hosts"
type="boolean" readOnly="true" defaultValue="false"
required="false" description="Host resolution."/>
+ <c:simple-property name="extended"
type="boolean" readOnly="true" defaultValue="false"
required="false"
description="Enable extended pattern, with more
options."/>
- <c:simple-property name="prefix" type="string"
readOnly="true" description="Prefix for the log file name."/>
- <c:simple-property name="rotate"
type="boolean" readOnly="true" defaultValue="true"
description="Rotate the access log every day."/>
- <!--<c:simple-property name="directory"
description="The location for the access logging." />-->
+ <c:simple-property name="prefix" type="string"
readOnly="true" required="false" description="Prefix for the log
file name."/>
+ <c:simple-property name="rotate"
type="boolean" readOnly="true" defaultValue="true"
required="false" description="Rotate the access log every day."/>
+ <c:map-property name="directory" description="The
location for the access logging." required="false" >
+ <c:simple-property name="path"
required="false" type="string" readOnly="true"
description="The relative folder path."/>
+ <c:simple-property name="relative-to"
required="false" type="string" readOnly="true"
+ description="The folder the path is relative
to."/>
+ </c:map-property>
</c:map-property>
- <!--<c:list-property name="rewrite" >-->
- <!--<c:simple-property name="rewrite" />-->
- <!--</c:list-property>-->
+ <c:list-property name="rewrite" description="A list of
rewrite rules that will be processed in order on the URL or vhost specified in the
request." >
+ <c:map-property name="rewrite">
+
+ <c:simple-property name="pattern"
required="false" type="string" readOnly="true"
description="The pattern that will be matched."/>
+ <c:simple-property name="substitution"
required="false" type="string" readOnly="true"
+ description="The string that will replace
the original URL or vhost."/>
+ <c:simple-property name="flags"
required="false" type="string" readOnly="true"
description="Option flags for this rewrite rule."/>
+ <c:list-property name="condition"
description="A list of conditions this rule needs to match for rewrite to
occur." >
+ <c:simple-property name="condition" />
+ </c:list-property>
+ </c:map-property>
+ </c:list-property>
</resource-configuration>
</service>
@@ -756,6 +805,60 @@
</server>
+ <server name="Logging"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ >
+
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=logging"/>
+ </plugin-configuration>
+ </server>
+
+ <server name="Security"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ >
+
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=security"/>
+ </plugin-configuration>
+
+
+
+ <resource-configuration>
+ <c:simple-property name="authentication-manager-class-name"
required="false" type="string" readOnly="true"
defaultValue="default"
+ description="Specifies the AuthenticationManager
implementation class name to use. To use the container default set the value to
'default'"/>
+ <c:simple-property name="deep-copy-subject-mode"
required="false" type="boolean" readOnly="true"
defaultValue="false"
+ description="Sets the copy mode of subjects done by
the security managers to be deep copies that makes copies of the subject principals and
credentials if they are cloneable. It should be set to true if subject include mutable
content that can be corrupted when multiple threads have the same identity and cache
flushes/logout clearing the subject in one thread results in subject references affecting
other threads."/>
+ <c:simple-property name="default-callback-handler-class-name"
required="false" type="string" readOnly="true"
defaultValue="default"
+ description="A global class name for the
CallbackHandler implementation to be used with login modules. To use the container default
set the value to 'default'"/>
+ <c:simple-property name="subject-factory-class-name"
required="false" type="string" readOnly="true"
defaultValue="default"
+ description="Sets the class name for the
SubjectFactory implementation to be used. To use the container default set the value to
'default'."/>
+ <c:simple-property name="authorization-manager-class-name"
required="false" type="string" readOnly="true"
defaultValue="default"
+ description="Specifies the AuthorizationManager
implementation class name to use. To use the container default set the value to
'default'."/>
+ <c:simple-property name="audit-manager-class-name"
required="false" type="string" readOnly="true"
defaultValue="default"
+ description="Specifies the AuditManager
implementation class name to use. To use the container default set the value to
'default'."/>
+ <c:simple-property name="identity-trust-manager-class-name"
required="false" type="string" readOnly="true"
defaultValue="default"
+ description="Specifies the IdentityTrustManager
implementation class name to use. To use the container default set the value to
'default'."/>
+ <c:simple-property name="mapping-manager-class-name"
required="false" type="string" readOnly="true"
defaultValue="default"
+ description="Specifies the MappingManager
implementation class name to use. To use the container default set the value to
'default''."/>
+ </resource-configuration>
+
+ </server>
+
<server name="Threads"
discovery="SubsystemDiscovery"
class="BaseComponent"
commit cb3803400824fa0ffcca5fd6b0141973a8316025
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon May 16 18:00:11 2011 +0200
Add support for operations.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index 11d7fe4..f4ba9a0 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -48,13 +48,15 @@ public class Domain2Descriptor {
private void run(String[] args) {
- boolean doMetrics = false;
+ Mode mode = null;
int pos = 0;
if (args[0].startsWith("-")) {
if (args[0].equals("-m"))
- doMetrics = true;
+ mode = Domain2Descriptor.Mode.METRICS;
else if (args[0].equals("-p"))
- doMetrics = false;
+ mode = Domain2Descriptor.Mode.PROPERTIES;
+ else if (args[0].equals("-o"))
+ mode = Domain2Descriptor.Mode.OPERATION;
else {
usage();
return;
@@ -70,39 +72,55 @@ public class Domain2Descriptor {
ASConnection conn = new ASConnection("localhost",9990);
List<PROPERTY_VALUE> address = pathToAddress(path);
- Operation op = new Operation("read-resource-description",address); //
,"operations",true);
+ Operation op = new Operation("read-resource-description",address);
op.addAdditionalProperty("recursive","true");
- if (doMetrics)
+
+ if (mode==Domain2Descriptor.Mode.OPERATION)
+ op.addAdditionalProperty("operations",true);
+ if (mode == Domain2Descriptor.Mode.METRICS)
op.addAdditionalProperty("include-runtime",true);
+
ComplexResult res = (ComplexResult) conn.execute(op,true);
if (!res.isSuccess()) {
System.err.println("Failure: " + res.getFailureDescription());
return;
}
- Map<String,Object> attributesMap;
Map<String,Object> resMap = res.getResult();
- if (childType!=null) {
- Map childMap = (Map) resMap.get("children");
- Map <String,Object> typeMap = (Map<String, Object>)
childMap.get(childType);
- Map descriptionMap = (Map) typeMap.get("model-description");
- if (descriptionMap==null) {
- System.err.println("No model description found");
- return;
+ if (mode==Domain2Descriptor.Mode.OPERATION) {
+ Map<String,Object> operationsMap = (Map<String, Object>)
resMap.get("operations");
+ for (Map.Entry<String,Object> entry : operationsMap.entrySet()) {
+ if (entry.getKey().startsWith("read-"))
+ continue;
+ if (entry.getKey().equals("write-attribute"))
+ continue;
+
+ createOperation((Map<String,Object>)entry.getValue());
}
- Map starMap = (Map) descriptionMap.get("*");
- attributesMap = (Map<String, Object>)
starMap.get("attributes");
- }
- else {
- attributesMap = (Map<String, Object>)
resMap.get("attributes");
- }
- createProperties(doMetrics, attributesMap, 0);
+ } else {
+ Map<String,Object> attributesMap;
+ if (childType!=null) {
+ Map childMap = (Map) resMap.get("children");
+ Map <String,Object> typeMap = (Map<String, Object>)
childMap.get(childType);
+ Map descriptionMap = (Map) typeMap.get("model-description");
+ if (descriptionMap==null) {
+ System.err.println("No model description found");
+ return;
+ }
+ Map starMap = (Map) descriptionMap.get("*");
+ attributesMap = (Map<String, Object>)
starMap.get("attributes");
+ }
+ else {
+ attributesMap = (Map<String, Object>)
resMap.get("attributes");
+ }
+ createProperties(mode, attributesMap, 0);
+ }
}
- private void createProperties(boolean doMetrcis, Map<String, Object>
attributesMap, int indent) {
+ private void createProperties(Mode mode, Map<String, Object> attributesMap, int
indent) {
if (attributesMap==null)
return;
@@ -121,7 +139,7 @@ public class Domain2Descriptor {
Map<String, Object> attributesMap1 = (Map<String, Object>)
props.get(
"attributes");
if (attributesMap1!=null)
- createProperties(doMetrcis,
+ createProperties(mode,
attributesMap1, indent+4);
else {
for (Map.Entry<String,Object> emapEntry : props.entrySet()) {
@@ -143,7 +161,7 @@ public class Domain2Descriptor {
}
- if (ptype== Type.LIST && !doMetrcis) {
+ if (ptype== Type.LIST && mode!=Domain2Descriptor.Mode.METRICS) {
StringBuilder sb = new StringBuilder("<c:list-property
name=\"");
sb.append(entryName);
@@ -160,7 +178,7 @@ public class Domain2Descriptor {
doIndent(indent,sb);
sb.append("<c:map-property
name=\"").append(entryName).append("\">\n");
System.out.println(sb.toString());
- createProperties(doMetrcis, (Map<String, Object>)
props.get("attributes"), indent + 4);
+ createProperties(mode, (Map<String, Object>)
props.get("attributes"), indent + 4);
sb = new StringBuilder();
doIndent(indent,sb);
sb.append("</c:map-property>\n");
@@ -174,7 +192,7 @@ public class Domain2Descriptor {
}
String accessType = getAccessType(props);
- if (doMetrcis) {
+ if (mode==Domain2Descriptor.Mode.METRICS) {
if (!accessType.equals("metric"))
continue;
@@ -206,6 +224,54 @@ public class Domain2Descriptor {
}
}
+ private void createOperation(Map<String,Object> operationMap) {
+
+ StringBuilder builder = new StringBuilder("<operation
name=\"");
+
+ String name = (String) operationMap.get("operation-name");
+ builder.append(name).append('"');
+
+ String description = (String) operationMap.get("description");
+ if (description!=null && !description.isEmpty()) {
+ builder.append("
description=\"").append(description).append('"');
+ }
+ builder.append(">\n");
+
+
+
+ if (!((Map)operationMap.get("request-properties")).isEmpty()) {
+ Map<String,Object> map = (Map<String, Object>)
operationMap.get("request-properties");
+ builder.append(" <parameters>\n");
+ generatePropertiesForMap(builder, map);
+ builder.append(" </parameters>\n");
+
+ }
+ if (!((Map)operationMap.get("reply-properties")).isEmpty()){
+ Map<String,Object> map = (Map<String, Object>)
operationMap.get("reply-properties"); // TODO not sure -- perhaps for the java
code?
+ builder.append(" <results>\n");
+ generatePropertiesForMap(builder, map);
+ builder.append(" </results>\n");
+ }
+
+
+ builder.append("</operation>\n");
+ System.out.println(builder.toString());
+ }
+
+ private void generatePropertiesForMap(StringBuilder builder, Map<String,
Object> map) {
+ for (Map.Entry<String,Object> entry : map.entrySet()) {
+
+ Map<String, Object> entryValue = (Map<String, Object>)
entry.getValue();
+ String entryKey = entry.getKey();
+
+ Type type = getTypeFromProps(entryValue);
+ String typeString = getTypeStringForTypeAndName(type, entryKey);
+ builder.append(generateProperty(4, entryValue,typeString,
entryKey,getAccessType(
+ entryValue)));
+ builder.append('\n');
+ }
+ }
+
private String getAccessType(Map<String, Object> props) {
String accessType = (String) props.get("access-type");
if (accessType==null)
@@ -340,4 +406,11 @@ public class Domain2Descriptor {
;
}
+ private enum Mode {
+ METRICS,
+ PROPERTIES,
+ OPERATION
+ ;
+ }
+
}
commit f4c7cf499cf6ffa9296e21333f88c137d2bc87a7
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon May 16 13:45:31 2011 +0200
Prevent possible NPE
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index 088a3b7..11d7fe4 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -87,6 +87,10 @@ public class Domain2Descriptor {
Map childMap = (Map) resMap.get("children");
Map <String,Object> typeMap = (Map<String, Object>)
childMap.get(childType);
Map descriptionMap = (Map) typeMap.get("model-description");
+ if (descriptionMap==null) {
+ System.err.println("No model description found");
+ return;
+ }
Map starMap = (Map) descriptionMap.get("*");
attributesMap = (Map<String, Object>)
starMap.get("attributes");
}
commit 177b2a3e0bc8d078757044df0e51a1f1b369c98d
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon May 16 12:03:02 2011 +0200
Some handling for maps of maps.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 22aa90b..ccdd235 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -25,6 +25,7 @@ import org.codehaus.jackson.map.ObjectMapper;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
+import org.rhq.core.domain.configuration.Property;
import org.rhq.core.domain.configuration.PropertyList;
import org.rhq.core.domain.configuration.PropertyMap;
import org.rhq.core.domain.configuration.PropertySimple;
@@ -330,9 +331,29 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
Map<String,PropertyDefinition> memberDefMap =
mapDef.getPropertyDefinitions();
for (Map.Entry<String,PropertyDefinition> maEntry :
memberDefMap.entrySet()) {
JsonNode valueNode = json.findValue(maEntry.getKey());
- PropertySimple p = putProperty(valueNode, maEntry.getValue());
- System.out.println(p);
- pm.put(p);
+ Property p;
+ if (maEntry.getValue() instanceof PropertyDefinitionSimple) {
+ p = putProperty(valueNode, maEntry.getValue());
+ pm.put(p);
+ }
+ else if (maEntry.getValue() instanceof PropertyDefinitionMap) { //
TODO make this recursive?
+
+ PropertyDefinitionMap pdm = (PropertyDefinitionMap)
maEntry.getValue();
+ Map<String,PropertyDefinition> mmDefMap =
pdm.getPropertyDefinitions();
+ for (Map.Entry<String,PropertyDefinition> mmDefEntry :
mmDefMap.entrySet()) {
+ if (valueNode!=null) {
+ JsonNode node2 =
valueNode.findValue(mmDefEntry.getKey());
+ System.err.println("Map not yet implemented " +
node2.toString());
+ }
+ else
+ System.err.println("Value node was null " );
+ }
+ }
+ else { // PropDefList
+ System.err.println("List not yet implemented");
+ }
+
+// pm.put(p);
}
ret.put(pm);
}
commit b4c2894cc92a4127503f1d9f1c4675988a6cf44b
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri May 13 14:42:09 2011 +0200
Better handling of lists of maps.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index ac57b57..088a3b7 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -114,13 +114,13 @@ public class Domain2Descriptor {
if (ptype == Type.OBJECT) {
System.out.println("<c:map-property name=\"" +
entryName +"\" description=\"" +
props.get("description") + "\" >");
- Map<String, Object> attributesMap1 = (Map<String, Object>)
((Map<String, Object>) entry.getValue()).get(
+ Map<String, Object> attributesMap1 = (Map<String, Object>)
props.get(
"attributes");
if (attributesMap1!=null)
createProperties(doMetrcis,
attributesMap1, indent+4);
else {
- for (Map.Entry<String,Object> emapEntry :
((Map<String,Object>)entry.getValue()).entrySet()) {
+ for (Map.Entry<String,Object> emapEntry : props.entrySet()) {
String key = emapEntry.getKey();
if (key.equals("type") ||
key.equals("description") || key.equals("required"))
continue;
@@ -141,10 +141,29 @@ public class Domain2Descriptor {
if (ptype== Type.LIST && !doMetrcis) {
- System.out.println("<c:list-property name=\"" +
entryName +"\" >");
- System.out.println(" <c:simple-property name=\"" +
entryName + "\" />");
- System.out.println("</c:list-property>");
+ StringBuilder sb = new StringBuilder("<c:list-property
name=\"");
+ sb.append(entryName);
+ sb.append("\"");
+ if (props.containsKey("description")) {
+ sb.append(" description=\"");
+ sb.append(props.get("description"));
+ sb.append("\"");
+ }
+ sb.append(" >\n");
+ if (!props.containsKey("attributes"))
+ sb.append(" <c:simple-property
name=\"").append(entryName).append("\" />\n");
+ else {
+ doIndent(indent,sb);
+ sb.append("<c:map-property
name=\"").append(entryName).append("\">\n");
+ System.out.println(sb.toString());
+ createProperties(doMetrcis, (Map<String, Object>)
props.get("attributes"), indent + 4);
+ sb = new StringBuilder();
+ doIndent(indent,sb);
+ sb.append("</c:map-property>\n");
+ }
+ sb.append("</c:list-property>");
+ System.out.println(sb.toString());
continue;
commit c308e4477615f11cfae09d93fc486e34622b71f8
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri May 13 11:24:29 2011 +0200
Support embedded maps.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index cef3d9e..ac57b57 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -106,42 +106,43 @@ public class Domain2Descriptor {
Map<String,Object> props = (Map<String, Object>)
entry.getValue();
+ String entryName = entry.getKey();
Type ptype = getTypeFromProps(props);
- String typeString;
-
- switch (ptype) {
- case INT:
- typeString = "integer"; break;
- case STRING:
- typeString = "string"; break;
- case BOOLEAN:
- typeString = "boolean"; break;
- case LONG:
- typeString = "long"; break;
- case BIG_DECIMAL:
- typeString = "long"; break; // TODO better float or double?
- case LIST:
- typeString = "-list-";
- break; // Handled below
- case OBJECT: // an embedded map
- typeString = "-object-";
- System.out.println("<c:list-property name=\"" +
entry.getKey() +"\" description=\"" +
+ String typeString = getTypeStringForTypeAndName(ptype, entryName);
+
+ if (ptype == Type.OBJECT) {
+ System.out.println("<c:map-property name=\"" +
entryName +"\" description=\"" +
props.get("description") + "\" >");
- createProperties(doMetrcis,
- (Map<String, Object>) ((Map<String, Object>)
entry.getValue()).get("attributes"), indent+4);
- System.out.println("</c:list-property>");
+ Map<String, Object> attributesMap1 = (Map<String, Object>)
((Map<String, Object>) entry.getValue()).get(
+ "attributes");
+ if (attributesMap1!=null)
+ createProperties(doMetrcis,
+ attributesMap1, indent+4);
+ else {
+ for (Map.Entry<String,Object> emapEntry :
((Map<String,Object>)entry.getValue()).entrySet()) {
+ String key = emapEntry.getKey();
+ if (key.equals("type") ||
key.equals("description") || key.equals("required"))
+ continue;
+
+ Map<String,Object> emapEntryValue = (Map<String,
Object>) emapEntry.getValue();
+ String ts =
getTypeStringForTypeAndName(getTypeFromProps(emapEntryValue),key);
+ StringBuilder sb = generateProperty(indent,
emapEntryValue,ts,emapEntry.getKey(),getAccessType(emapEntryValue));
+ System.out.println(sb.toString());
+
+ }
+ }
+
+ System.out.println("</c:map-property>");
continue;
- default:
- typeString = "- unknown -";
- System.err.println("Unknown type " + ptype + " for "
+ entry.getKey());
+
}
if (ptype== Type.LIST && !doMetrcis) {
- System.out.println("<c:list-property name=\"" +
entry.getKey() +"\" >");
- System.out.println(" <c:simple-property name=\"" +
entry.getKey() + "\" />");
+ System.out.println("<c:list-property name=\"" +
entryName +"\" >");
+ System.out.println(" <c:simple-property name=\"" +
entryName + "\" />");
System.out.println("</c:list-property>");
@@ -149,9 +150,7 @@ public class Domain2Descriptor {
continue;
}
- String accessType = (String) props.get("access-type");
- if (accessType==null)
- accessType = "read-only"; // default of as7
+ String accessType = getAccessType(props);
if (doMetrcis) {
if (!accessType.equals("metric"))
continue;
@@ -159,7 +158,7 @@ public class Domain2Descriptor {
StringBuilder sb = new StringBuilder();
doIndent(indent,sb);
sb.append("<metric property=\"");
- sb.append(entry.getKey()).append('"');
+ sb.append(entryName).append('"');
if (ptype== Type.STRING)
sb.append(" dataType=\"trait\"");
@@ -177,43 +176,83 @@ public class Domain2Descriptor {
if (accessType.equals("metric"))
continue;
- StringBuilder sb = new StringBuilder();
- doIndent(indent,sb);
- sb.append("<c:simple-property name=\"");
- sb.append(entry.getKey()).append('"');
+ StringBuilder sb = generateProperty(indent, props, typeString, entryName,
accessType);
- Object required = props.get("required");
- if (required != null && (Boolean) required) {
- sb.append(" required=\"true\"");
- }
- else {
- sb.append(" required=\"false\"");
- }
+ System.out.println(sb.toString());
+ }
+ }
+ }
- sb.append("
type=\"").append(typeString).append("\"");
- sb.append(" readOnly=\"");
- if (accessType!=null && accessType.equals("read-only"))
// TODO if no access-type is given, the one from the parent applies
- sb.append("true");
- else
- sb.append("false");
- sb.append('"');
-
- Object defVal = props.get("default");
- if (defVal!=null) {
- sb.append("
defaultValue=\"").append(defVal).append('\"');
- }
+ private String getAccessType(Map<String, Object> props) {
+ String accessType = (String) props.get("access-type");
+ if (accessType==null)
+ accessType = "read-only"; // default of as7
+ return accessType;
+ }
- String description = (String) props.get("description");
- if (description!=null) {
- if (sb.length()+description.length() > 120)
- sb.append("\n ");
- sb.append("
description=\"").append(description).append('"');
- }
- sb.append("/>");
+ private String getTypeStringForTypeAndName(Type ptype, String entryName) {
+ String typeString;
+
+ switch (ptype) {
+ case INT:
+ typeString = "integer"; break;
+ case STRING:
+ typeString = "string"; break;
+ case BOOLEAN:
+ typeString = "boolean"; break;
+ case LONG:
+ typeString = "long"; break;
+ case BIG_DECIMAL:
+ typeString = "long"; break; // TODO better float or double?
+ case LIST:
+ typeString = "-list-";
+ break; // Handled below
+ case OBJECT: // an embedded map
+ typeString = "-object-";
+ break; // Handled below
+ default:
+ typeString = "- unknown -";
+ System.err.println("Unknown type " + ptype + " for " +
entryName);
+ }
+ return typeString;
+ }
- System.out.println(sb.toString());
- }
+ private StringBuilder generateProperty(int indent, Map<String, Object> props,
String typeString, String entryName,
+ String accessType) {
+ StringBuilder sb = new StringBuilder();
+ doIndent(indent,sb);
+ sb.append("<c:simple-property name=\"");
+ sb.append(entryName).append('"');
+
+ Object required = props.get("required");
+ if (required != null && (Boolean) required) {
+ sb.append(" required=\"true\"");
+ }
+ else {
+ sb.append(" required=\"false\"");
+ }
+
+ sb.append("
type=\"").append(typeString).append("\"");
+ sb.append(" readOnly=\"");
+ if (accessType!=null && accessType.equals("read-only")) // TODO
if no access-type is given, the one from the parent applies
+ sb.append("true");
+ else
+ sb.append("false");
+ sb.append('"');
+
+ Object defVal = props.get("default");
+ if (defVal!=null) {
+ sb.append("
defaultValue=\"").append(defVal).append('\"');
+ }
+
+ String description = (String) props.get("description");
+ if (description!=null) {
+ if (sb.length()+description.length() > 120)
+ sb.append("\n ");
+ sb.append("
description=\"").append(description).append('"');
}
+ sb.append("/>");
+ return sb;
}
private void doIndent(int indent, StringBuilder sb) {
commit 8ad8f978ec24bbd9e32e91e72f5985418645fc32
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu May 12 16:55:15 2011 +0200
More properties for the web subsystem and better handling of properties.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index a73179a..22aa90b 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -205,7 +205,8 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
else {
// property is null? Check if it is required
if (propDef.isRequired()) {
- propertySimple = new PropertySimple(propDef.getName(),null);
+ String defaultValue = ((PropertyDefinitionSimple)
propDef).getDefaultValue();
+ propertySimple = new
PropertySimple(propDef.getName(),defaultValue);
ret.put(propertySimple);
}
}
@@ -312,11 +313,11 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
}
else if (memberDefinition instanceof PropertyDefinitionSimple) {
String name = memberDefinition.getName();
- Iterator<String> keys = sub.getFieldNames();
+ Iterator<JsonNode> keys = sub.getElements();
while(keys.hasNext()) {
- String entryKey = keys.next();
+ JsonNode entry = keys.next();
- PropertySimple propertySimple = new
PropertySimple(name,entryKey);
+ PropertySimple propertySimple = new
PropertySimple(name,entry.getTextValue());
propertyList.add(propertySimple);
}
}
@@ -329,7 +330,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
Map<String,PropertyDefinition> memberDefMap =
mapDef.getPropertyDefinitions();
for (Map.Entry<String,PropertyDefinition> maEntry :
memberDefMap.entrySet()) {
JsonNode valueNode = json.findValue(maEntry.getKey());
- PropertySimple p = putProperty(valueNode,maEntry.getValue());
+ PropertySimple p = putProperty(valueNode, maEntry.getValue());
System.out.println(p);
pm.put(p);
}
@@ -345,6 +346,16 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
String name = def.getName();
PropertySimpleType type = ((PropertyDefinitionSimple) def).getType();
PropertySimple ps;
+
+ if (value==null) {
+ if (def instanceof PropertyDefinitionSimple) {
+ PropertyDefinitionSimple pds = (PropertyDefinitionSimple) def;
+ return new PropertySimple(name,pds.getDefaultValue());
+ }
+ else
+ return new PropertySimple(name,null);
+ }
+
switch (type) {
case BOOLEAN:
ps = new PropertySimple(name,value.getBooleanValue());
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index d61f963..cef3d9e 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -141,7 +141,7 @@ public class Domain2Descriptor {
if (ptype== Type.LIST && !doMetrcis) {
System.out.println("<c:list-property name=\"" +
entry.getKey() +"\" >");
- System.out.println(" <c:simple-property name=\"" +
entry.getKey() + "\" />");
+ System.out.println(" <c:simple-property name=\"" +
entry.getKey() + "\" />");
System.out.println("</c:list-property>");
@@ -173,7 +173,7 @@ public class Domain2Descriptor {
System.out.println(sb.toString());
}
- else {
+ else { // configuration
if (accessType.equals("metric"))
continue;
@@ -186,6 +186,9 @@ public class Domain2Descriptor {
if (required != null && (Boolean) required) {
sb.append(" required=\"true\"");
}
+ else {
+ sb.append(" required=\"false\"");
+ }
sb.append("
type=\"").append(typeString).append("\"");
sb.append(" readOnly=\"");
@@ -197,7 +200,7 @@ public class Domain2Descriptor {
Object defVal = props.get("default");
if (defVal!=null) {
- sb.append("
default=\"").append(defVal).append('\"');
+ sb.append("
defaultValue=\"").append(defVal).append('\"');
}
String description = (String) props.get("description");
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index bbd7ba3..b0089f7 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -482,9 +482,48 @@
<metric property="requestCount"
measurementType="trendsup" displayType="summary"/>
<resource-configuration>
- <c:simple-property name="protocol"
required="false" description="The web connector protocol."/>
- <c:simple-property name="socket-binding"
required="false" description="The web connector socket-binding reference,
this connector should be bound to."/>
- <c:simple-property name="scheme" required="false"
description="The web connector scheme"/>
+ <c:simple-property name="protocol" required="true"
type="string" readOnly="true" description="The web connector
protocol."/>
+ <c:simple-property name="socket-binding"
required="true" type="string" readOnly="true"
+ description="The web connector socket-binding
reference, this connector should be bound to."/>
+ <c:simple-property name="scheme" type="string"
readOnly="true" default="http" description="The web connector
scheme."/>
+ <c:simple-property name="executor" type="string"
readOnly="true" required="false"
+ description="The name of the executor that should
be used for the processing threads of this connector. Defaults to using an internal
pool."/>
+ <c:simple-property name="enabled" type="boolean"
readOnly="true" defaultValue="true"
+ description="Defines whether the connector should
be started on startup."/>
+ <c:simple-property name="enable-lookups"
type="boolean" readOnly="true" defaultValue="false"
+ description="Enable DNS lookups for Servlet
API."/>
+ <c:simple-property name="proxy-name" type="string"
readOnly="true" required="false"
+ description="The host name that will be used when
sending a redirect. The default value is null."/>
+ <c:simple-property name="proxy-port"
type="integer" readOnly="true" required="false"
+ description="The port that will be used when
sending a redirect."/>
+ <c:simple-property name="max-post-size"
type="integer" readOnly="true" defaultValue="2097152"
+ description="Maximum size in bytes of a POST
request that can be parsed by the container."/>
+ <c:simple-property name="max-save-post-size"
type="integer" readOnly="true" defaultValue="4096"
+ description="Maximum size in bytes of a POST
request that will be saved during certain authentication schemes."/>
+ <c:simple-property name="secure" type="boolean"
readOnly="true" defaultValue="false"
+ description="Indicates if content sent or
recieved by the connector is secured from the user perspective."/>
+ <c:simple-property name="redirect-port"
type="integer" readOnly="true" defaultValue="8443"
+ description="The port for redirection to a secure
connector."/>
+ <c:simple-property name="max-connections"
type="integer" readOnly="true" required="false"
+ description="Amount of concurrent connections
that can be processed by the connector with optimum performance. The default value depends
on the connector used."/>
+ <c:list-property name="virtual-server" description="The
list of virtual servers that can be accessed through this connector. The default is to
allow all virtual servers.">
+ <c:simple-property name="virtual-server" />
+ </c:list-property>
+ <c:map-property name="ssl" description="The SSL
configuration of the connector." >
+ <c:simple-property name="name" type="string"
readOnly="true" description="The configuration name."/>
+ <c:simple-property name="key-alias"
type="string" readOnly="true" description="The key
alias."/>
+ <c:simple-property name="password"
type="string" readOnly="true" description="Password."/>
+ <c:simple-property name="certificate-key-file"
type="string" readOnly="true" description="Key file for the
certificate."/>
+ <c:simple-property name="cipher-suite"
type="string" readOnly="true" description="The allowed cipher
suite."/>
+ <c:simple-property name="protocol"
type="string" readOnly="true" description="The SSL protocols that
are enabled."/>
+ <c:simple-property name="verify-client"
type="string" readOnly="true" description="Enable client
certificate verification."/>
+ <c:simple-property name="verify-depth"
type="integer" readOnly="true" description="Limit certificate
nesting."/>
+ <c:simple-property name="certificate-file"
type="string" readOnly="true" description="Server certificate
file."/>
+ <c:simple-property name="ca-certificate-file"
type="string" readOnly="true" description="Certificate
authority."/>
+ <c:simple-property name="ca-revocation-url"
type="string" readOnly="true" description="Certificate authority
revocation list."/>
+ <c:simple-property name="session-cache-size"
type="string" readOnly="true" description="SSL session
cache."/>
+ <c:simple-property name="session-timeout"
type="string" readOnly="true" description="SSL session cache
timeout."/>
+ </c:map-property>
</resource-configuration>
</service>
@@ -497,13 +536,24 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="access-log"/>
- <c:list-property name="alias" description="The virtual
server aliases">
- <c:simple-property name="alias"/>
+ <c:list-property name="alias" >
+ <c:simple-property name="alias" />
</c:list-property>
- <c:simple-property name="rewrite"/>
+ <c:simple-property name="default-web-module"
type="string" readOnly="true" defaultValue="ROOT.war"
+ description="The web module deployment name that will be
mapped as the root webapp."/>
+ <c:map-property name="access-log" description="The
access log configuration for this virtual server." >
+ <c:simple-property name="pattern"
type="string" readOnly="true" defaultValue="common"
description="The access log pattern."/>
+ <c:simple-property name="resolve-hosts"
type="boolean" readOnly="true" defaultValue="false"
description="Host resolution."/>
+ <c:simple-property name="extended"
type="boolean" readOnly="true" defaultValue="false"
+ description="Enable extended pattern, with more
options."/>
+ <c:simple-property name="prefix" type="string"
readOnly="true" description="Prefix for the log file name."/>
+ <c:simple-property name="rotate"
type="boolean" readOnly="true" defaultValue="true"
description="Rotate the access log every day."/>
+ <!--<c:simple-property name="directory"
description="The location for the access logging." />-->
+ </c:map-property>
+ <!--<c:list-property name="rewrite" >-->
+ <!--<c:simple-property name="rewrite" />-->
+ <!--</c:list-property>-->
</resource-configuration>
-
</service>
commit 3823cbfce3711e0903dcd2288a6b95899859a7d7
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu May 12 14:45:27 2011 +0200
Bumb version to follow master.
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index 38cdfa0..7593f18 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -10,7 +10,7 @@
<parent>
<groupId>org.rhq</groupId>
<artifactId>rhq-plugins-parent</artifactId>
- <version>4.0.0-SNAPSHOT</version>
+ <version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>org.rhq</groupId>
commit c600bb6926683ee771ca11a3d1b69cd6722088f0
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu May 12 13:06:13 2011 +0200
Support default values if provided.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index ab317dc..d61f963 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -48,13 +48,13 @@ public class Domain2Descriptor {
private void run(String[] args) {
- boolean doMetrcis = false;
+ boolean doMetrics = false;
int pos = 0;
if (args[0].startsWith("-")) {
if (args[0].equals("-m"))
- doMetrcis = true;
+ doMetrics = true;
else if (args[0].equals("-p"))
- doMetrcis = false;
+ doMetrics = false;
else {
usage();
return;
@@ -72,7 +72,7 @@ public class Domain2Descriptor {
List<PROPERTY_VALUE> address = pathToAddress(path);
Operation op = new Operation("read-resource-description",address); //
,"operations",true);
op.addAdditionalProperty("recursive","true");
- if (doMetrcis)
+ if (doMetrics)
op.addAdditionalProperty("include-runtime",true);
ComplexResult res = (ComplexResult) conn.execute(op,true);
if (!res.isSuccess()) {
@@ -94,7 +94,7 @@ public class Domain2Descriptor {
attributesMap = (Map<String, Object>)
resMap.get("attributes");
}
- createProperties(doMetrcis, attributesMap, 0);
+ createProperties(doMetrics, attributesMap, 0);
}
@@ -195,6 +195,11 @@ public class Domain2Descriptor {
sb.append("false");
sb.append('"');
+ Object defVal = props.get("default");
+ if (defVal!=null) {
+ sb.append("
default=\"").append(defVal).append('\"');
+ }
+
String description = (String) props.get("description");
if (description!=null) {
if (sb.length()+description.length() > 120)
commit 99e9fe5029899b1d53481b90ca8577ff9df8ac61
Merge: f751fc8 7d3d67f
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu May 12 12:29:20 2011 +0200
Merge branch 'master' into as7plugin
commit f751fc8abe6f0562386fdfae5e2e3946e40abc03
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu May 12 09:36:58 2011 +0200
Get rid of some bogus stuff
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 3d4f335..bbd7ba3 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -156,9 +156,6 @@
</plugin-configuration>
- <content name="deployment" category="deployable"
isCreationType="true" description="Deployments on this domain">
- </content>
-
<resource-configuration>
<c:simple-property name="profile" />
<c:simple-property name="socket-binding-group"/>
@@ -174,11 +171,10 @@
<c:simple-property name="path"
default="deployment" readOnly="true"/>
</plugin-configuration>
- <content name="file" category="deployable"
isCreationType="true" description="Deployments on this domain">
+ <content name="file" category="deployable"
isCreationType="true" description="Deployments on this server
group">
<configuration>
<c:group name="deployment"
displayName="Deployment Options">
<c:simple-property name="runtimeName"
required="true"/>
- <c:simple-property name="alreadyUploaded"
type="boolean" description="Was this already uploaded to the Domain?
TODO"/>
</c:group>
</configuration>
</content>
@@ -224,8 +220,14 @@
</plugin-configuration>
<content name="file" category="deployable"
isCreationType="true" description="Deployments on this domain">
+ <configuration>
+ <c:group name="deployment" displayName="Deployment
Options">
+ <c:simple-property name="runtimeName"
required="true"/>
+ </c:group>
+ </configuration>
</content>
+
<resource-configuration>
<c:simple-property name="name"
readOnly="true"/>
<c:simple-property name="runtime-name"
readOnly="true"/>
commit e735bdab1e57ffbf8e8898ae37f4f0e9cedd9f08
Merge: 05bd876 a62f196
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 11 09:19:34 2011 +0200
Merge branch 'master' into as7plugin
commit 05bd876ef224ec81424a5892c4e48b0b80f31fb7
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 11 09:17:30 2011 +0200
Prevent NPE if processInfo is null.
diff --git
a/modules/plugins/samba/src/main/java/org/rhq/plugins/samba/SambaServerComponent.java
b/modules/plugins/samba/src/main/java/org/rhq/plugins/samba/SambaServerComponent.java
index 9bd3859..d50f324 100644
--- a/modules/plugins/samba/src/main/java/org/rhq/plugins/samba/SambaServerComponent.java
+++ b/modules/plugins/samba/src/main/java/org/rhq/plugins/samba/SambaServerComponent.java
@@ -152,16 +152,18 @@ public class SambaServerComponent extends
AugeasConfigurationComponent implement
public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest>
metrics) throws Exception {
NetworkStats stats =
resourceContext.getSystemInformation().getNetworkStats("localhost", PORT);
-
- processInfo.refresh();
-
- for (MeasurementScheduleRequest request : metrics) {
- if (request.getName().startsWith("NetworkStat.")) {
- int val =
stats.getByName(request.getName().substring("NetworkStat.".length()));
- report.addData(new MeasurementDataNumeric(request, (double) val));
- } else if (request.getName().startsWith("Process.")) {
- Double value = ObjectUtil.lookupDeepNumericAttributeProperty(processInfo,
request.getName().substring("Process.".length()));
- report.addData(new MeasurementDataNumeric(request, value));
+
+ if (processInfo!=null) {
+ processInfo.refresh();
+
+ for (MeasurementScheduleRequest request : metrics) {
+ if (request.getName().startsWith("NetworkStat.")) {
+ int val =
stats.getByName(request.getName().substring("NetworkStat.".length()));
+ report.addData(new MeasurementDataNumeric(request, (double) val));
+ } else if (request.getName().startsWith("Process.")) {
+ Double value =
ObjectUtil.lookupDeepNumericAttributeProperty(processInfo,
request.getName().substring("Process.".length()));
+ report.addData(new MeasurementDataNumeric(request, value));
+ }
}
}
}
@@ -269,7 +271,7 @@ public class SambaServerComponent extends AugeasConfigurationComponent
implement
if (args != null) {
processExecution.setArguments(args.split(" "));
}
-
+
processExecution.setCaptureOutput(true);
processExecution.setWaitForCompletion(1000L);
processExecution.setKillOnTimeout(true);
commit 5a31be172085a5e029ae9fb0525de7516562042d
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue May 10 21:02:32 2011 +0200
Add datasource metrics and take care of the "no metrics available"
response.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 72ab4dd..a73179a 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -151,16 +151,17 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
if (!res.isSuccess())
continue;
- String val = (String) res.getResult();
+ String val = (String) res.getResult();
if (req.getDataType()== DataType.MEASUREMENT) {
-
- try {
- Double d = Double.parseDouble(val);
- MeasurementDataNumeric data = new MeasurementDataNumeric(req,d);
- report.addData(data);
- } catch (NumberFormatException e) {
- log.warn("Non numeric input for [" + req.getName() +
"] : [" + val + "]");
+ if (!val.equals("no metrics available")) { // AS 7 returns
this
+ try {
+ Double d = Double.parseDouble(val);
+ MeasurementDataNumeric data = new MeasurementDataNumeric(req,d);
+ report.addData(data);
+ } catch (NumberFormatException e) {
+ log.warn("Non numeric input for [" + req.getName() +
"] : [" + val + "]");
+ }
}
} else if (req.getDataType()== DataType.TRAIT) {
MeasurementDataTrait data = new MeasurementDataTrait(req,val);
@@ -196,12 +197,18 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
if (propDef instanceof PropertyDefinitionSimple) {
PropertySimple propertySimple;
- if (sub!=null)
+ if (sub!=null) {
+ // Property is non-null -> return it.
propertySimple = new
PropertySimple(propDef.getName(),sub.getValueAsText());
+ ret.put(propertySimple);
+ }
else {
- propertySimple = new PropertySimple(propDef.getName(),"- null
-"); // TODO store it at all when it is null?
+ // property is null? Check if it is required
+ if (propDef.isRequired()) {
+ propertySimple = new PropertySimple(propDef.getName(),null);
+ ret.put(propertySimple);
+ }
}
- ret.put(propertySimple);
} else if (propDef instanceof PropertyDefinitionList) {
PropertyList propertyList = new PropertyList(propDef.getName());
PropertyDefinition memberDefinition = ((PropertyDefinitionList)
propDef).getMemberDefinition();
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 50939ae..3d4f335 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -568,6 +568,28 @@
<c:simple-property name="path" readOnly="true"
default="data-source"/>
</plugin-configuration>
+ <metric property="PreparedStatementCacheCurrentSize"
+ description="The number of prepared and callable statements
currently cached in the statement cache"/>
+ <metric property="PreparedStatementCacheMissCount"
+ description="The number of times that a statement request could
not be satisfied with a statement from the cache"/>
+ <metric property="PreparedStatementCacheAddCount"
description="The number of statements added to the statement cache"/>
+ <metric property="PreparedStatementCacheAccessCount"
description="The number of times that the statement cache was accessed"/>
+ <metric property="PreparedStatementCacheDeleteCount"
description="The number of statements discarded from the cache"/>
+ <metric property="PreparedStatementCacheHitCount"
description="The number of times that statements from the cache were used"/>
+ <metric property="AverageBlockingTime" description="The
average time spent blocking for a connection"/>
+ <metric property="MaxWaitTime" description="The maximum
wait time for a connection"/>
+ <metric property="ActiveCount" description="The active
count"/>
+ <metric property="CreatedCount" description="The created
count"/>
+ <metric property="MaxCreationTime" description="The maximum
time for creating a physical connection"/>
+ <metric property="MaxWaitCount" description="The maximum
number of threads waiting for a connection"/>
+ <metric property="TotalCreationTime" description="The total
time spent creating physical connections"/>
+ <metric property="AvailableCount" description="The
available count"/>
+ <metric property="MaxUsedCount" description="The maximum
number of connections used"/>
+ <metric property="TimedOut" description="The timed out
count"/>
+ <metric property="TotalBlockingTime" description="The total
blocking time"/>
+ <metric property="AverageCreationTime" description="The
average time spent creating a physical connection"/>
+ <metric property="DestroyedCount" description="The
destroyed count"/>
+
<resource-configuration>
<c:simple-property name="connection-url"
required="true" type="string" readOnly="true"
description="The JDBC driver connection URL"/>
<c:simple-property name="driver-class"
required="true" type="string" readOnly="true"
commit e2d2375fe00d761acf5805255c719bbd01cff397
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue May 10 18:29:33 2011 +0200
Metrics have no type
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index e61ff3c..ab317dc 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -160,7 +160,6 @@ public class Domain2Descriptor {
doIndent(indent,sb);
sb.append("<metric property=\"");
sb.append(entry.getKey()).append('"');
- sb.append("
type=\"").append(typeString).append("\"");
if (ptype== Type.STRING)
sb.append(" dataType=\"trait\"");
commit 9d9c11e54fcd7fccaac08c5d336aaef83bff8995
Merge: 33f3c42 ae6d42e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue May 10 18:12:12 2011 +0200
Merge branch 'master' into as7plugin
commit 33f3c425d2c908379eb4a03f225690e214280287
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon May 9 17:02:00 2011 +0200
Fix uploading of deployments
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
index b369a95..80e8ea4 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
@@ -25,6 +25,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
@@ -42,7 +43,9 @@ import org.codehaus.jackson.map.ObjectMapper;
*/
public class ASUploadConnection {
- private static final String BOUNDARY =
"-----------------------------261773107125236";
+ private static final String BOUNDARY_PARAM = "NeAG1QNIHHOyB5joAS7Rox!!";
+
+ private static final String BOUNDARY = "--" + BOUNDARY_PARAM;
private static final String CRLF = "\r\n";
@@ -71,6 +74,7 @@ public class ASUploadConnection {
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod(POST_REQUEST_METHOD);
+ connection.setRequestProperty("Content-Type",
"multipart/form-data; boundary=" + BOUNDARY_PARAM);
// Grab the test WAR file and get a stream to its contents to be included in
the POST.
os = new BufferedOutputStream(connection.getOutputStream());
@@ -92,6 +96,7 @@ public class ASUploadConnection {
os.flush();
int code = connection.getResponseCode();
+ System.err.println("Response code " + code);
if (code==500)
is = connection.getErrorStream();
else
@@ -128,15 +133,13 @@ public class ASUploadConnection {
}
- private byte[] buildPostRequestHeader(String fileName) {
+ private byte[] buildPostRequestHeader(String fileName) throws
UnsupportedEncodingException {
final StringBuilder builder = new StringBuilder();
- builder.append(buildPostRequestHeaderSection("form-data;
name=\"test1\"", "", "test1"));
- builder.append(buildPostRequestHeaderSection("form-data;
name=\"test2\"", "", "test2"));
builder.append(buildPostRequestHeaderSection("form-data;
name=\"file\"; filename=\""+fileName+"\"",
"application/octet-stream", ""));
- return builder.toString().getBytes();
+ return builder.toString().getBytes("US-ASCII");
}
- private String buildPostRequestHeaderSection(final String contentDisposition, final
String contentType, final String content) {
+ private StringBuilder buildPostRequestHeaderSection(final String contentDisposition,
final String contentType, final String content) {
final StringBuilder builder = new StringBuilder();
builder.append(BOUNDARY);
builder.append(CRLF);
@@ -152,16 +155,16 @@ public class ASUploadConnection {
builder.append(content);
}
builder.append(CRLF);
- return builder.toString();
+ return builder;
}
- private byte[] buildPostRequestFooter() {
+ private byte[] buildPostRequestFooter() throws UnsupportedEncodingException{
final StringBuilder builder = new StringBuilder();
builder.append(CRLF);
builder.append(BOUNDARY);
builder.append("--");
builder.append(CRLF);
- return builder.toString().getBytes();
+ return builder.toString().getBytes("US-ASCII");
}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 48b0094..50939ae 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -531,9 +531,9 @@
<c:simple-property name="bean-validation-enabled"
required="true" type="boolean" readOnly="true"
description="Specify whether bean validation is
enabled"/>
<c:simple-property name="archive-validation-enabled"
type="boolean" readOnly="true" description="Enabling the
validation"/>
- <c:simple-property name="archive-validation-fail-on-error"
type="boolean" readOnly="true"
+ <c:simple-property name="archive-validation-fail-on-error"
type="boolean" readOnly="true" default="true"
description="Should an archive validation error
report fail the deployment. Default: true"/>
- <c:simple-property name="archive-validation-fail-on-warn"
type="boolean" readOnly="true"
+ <c:simple-property name="archive-validation-fail-on-warn"
type="boolean" readOnly="true" default="false"
description="Should an archive validation warning
report fail the deployment. Default: false"/>
<c:simple-property name="cached-connection-manager-debug"
type="boolean" readOnly="true"
description="enable/disable debug information logging
for cached connection manager"/>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
index e4e9d70..b1eb277 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
@@ -30,6 +30,7 @@ import org.testng.annotations.Test;
import org.rhq.modules.plugins.jbossas7.json.CompositeOperation;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+import org.rhq.modules.plugins.jbossas7.json.Result;
/**
* Test uploading and deploying to the domain
@@ -46,6 +47,17 @@ public class UploadAndDeployTest {
private static final int DC_HTTP_PORT = 9990;
@Test(timeOut = 60*1000L, enabled = true)
+ public void testUploadOnly() throws Exception {
+
+ String bytes_value = prepare();
+
+ assert bytes_value != null;
+
+ System.out.println("sha: " + bytes_value);
+
+ }
+
+ @Test(timeOut = 60*1000L, enabled = true)
public void testUploadIndividualSteps() throws Exception {
String bytes_value = prepare();
@@ -79,7 +91,7 @@ public class UploadAndDeployTest {
System.out.println("Add to server group done: " + ret);
System.out.flush();
- assert ret.has("outcome") : "Ret not valied " +
ret.toString();
+ assert ret.has("outcome") : "Ret not valid " +
ret.toString();
assert ret.get("outcome").getTextValue().equals("success") :
"add to sg was no success " + ret.getTextValue();
@@ -88,7 +100,7 @@ public class UploadAndDeployTest {
Operation undeploy = new Operation("remove",serverGroupAddress);
ret = connection.executeRaw(undeploy);
- assert ret.has("outcome") : "Ret not valied " +
ret.toString();
+ assert ret.has("outcome") : "Ret not valid " +
ret.toString();
assert ret.get("outcome").getTextValue().equals("success") :
"remove from sg was no success " + ret.getTextValue();
@@ -97,7 +109,7 @@ public class UploadAndDeployTest {
Operation remove = new Operation("remove",deploymentsAddress);
ret = connection.executeRaw(remove);
- assert ret.has("outcome") : "Ret not valied " +
ret.toString();
+ assert ret.has("outcome") : "Ret not valid " +
ret.toString();
assert ret.get("outcome").getTextValue().equals("success") :
"remove from domain was no success " + ret.getTextValue();
System.out.flush();
@@ -156,13 +168,19 @@ public class UploadAndDeployTest {
InputStream fis = getClass().getClassLoader().getResourceAsStream(UPLOAD_FILE);
- int b;
- while ((b = fis.read())!=-1) {
- os.write(b);
+ final byte[] buffer = new byte[1024];
+ int numRead = 0;
+
+ while(numRead > -1) {
+ numRead = fis.read(buffer);
+ if(numRead > 0) {
+ os.write(buffer,0,numRead);
+ }
}
fis.close();
JsonNode node = conn.finishUpload();
System.out.println(node);
+ assert node != null : "No result from upload - node was null";
assert node.has("outcome") : "No outcome from upload";
String outcome = node.get("outcome").getTextValue();
assert outcome.equals("success") : "Upload was no success" +
outcome;
commit 2f14177fb1381441fafb767076439f1e401d15bc
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri May 6 11:24:52 2011 +0200
Add more subsystems
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 04686c4..48b0094 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -507,6 +507,42 @@
</server>
+ <server name="General JCA connectors"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ description="General settings of the JCA engine. Not nexessarily for
end-users"
+
+
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=connector"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property
name="default-workmanager-short-running-thread-pool" required="true"
type="string" readOnly="true"
+ description="Specify the name of short running thread
pool"/>
+ <c:simple-property
name="default-workmanager-long-running-thread-pool" required="true"
type="string" readOnly="true"
+ description="Specify the name of long running thread
pool"/>
+ <c:simple-property name="bean-validation-enabled"
required="true" type="boolean" readOnly="true"
+ description="Specify whether bean validation is
enabled"/>
+ <c:simple-property name="archive-validation-enabled"
type="boolean" readOnly="true" description="Enabling the
validation"/>
+ <c:simple-property name="archive-validation-fail-on-error"
type="boolean" readOnly="true"
+ description="Should an archive validation error
report fail the deployment. Default: true"/>
+ <c:simple-property name="archive-validation-fail-on-warn"
type="boolean" readOnly="true"
+ description="Should an archive validation warning
report fail the deployment. Default: false"/>
+ <c:simple-property name="cached-connection-manager-debug"
type="boolean" readOnly="true"
+ description="enable/disable debug information logging
for cached connection manager"/>
+ <c:simple-property name="cached-connection-manager-error"
type="boolean" readOnly="true"
+ description="enable/disable error information logging
for cached connection manager"/>
+ </resource-configuration>
+
+ </server>
+
<server name="Datasources"
discovery="SubsystemDiscovery"
class="BaseComponent"
@@ -629,6 +665,23 @@
</server>
+ <server name="ResourceAdapters"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+
+
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=resource-adapters"/>
+ </plugin-configuration>
+ </server>
+
+
<server name="Threads"
discovery="SubsystemDiscovery"
class="BaseComponent"
@@ -689,6 +742,33 @@
</server>
+ <server name="Webservices"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ >
+
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=webservices"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="modify-soap-address"
required="true" type="boolean" readOnly="true"
+ description="Whether the soap address can be
modified."/>
+ <c:simple-property name="webservice-host"
required="true" type="string" readOnly="true"
+ description="The WSDL, that is a required deployment
artifact for an endpoint, has a &soap:address> element which points to the
location of the endpoint. JBoss supports rewriting of that SOAP address. If the content of
&soap:address> is a valid URL, JBossWS will not rewrite it unless
'modifySOAPAddress' is true. If the content of &soap:address> is not a
valid URL, JBossWS will rewrite it using the attribute values given below. If
'webServiceHost' is set to 'jbossws.undefined.host', JBossWS uses
requesters host when rewriting the &soap:address>"/>
+ <c:simple-property name="webservice-port"
type="integer" readOnly="true"
+ description="The non-secure port that will be used
for rewriting the SOAP address. If absent the port will be identified by querying the list
of installed connectors."/>
+ <c:simple-property name="webservice-secure-port"
type="integer" readOnly="true"
+ description="The non-secure port that will be used
for rewriting the SOAP address. If absent the port will be identified by querying the list
of installed connectors."/>
+ </resource-configuration>
+ </server>
+
<service name="NetworkInterface"
discovery="SubsystemDiscovery"
class="BaseComponent"
commit fa33a38abec2ac915f128af5a9e262edc36c2f3f
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu May 5 12:07:00 2011 +0200
Prevent a possible NPE.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index 8e42fdf..e61ff3c 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -99,6 +99,9 @@ public class Domain2Descriptor {
}
private void createProperties(boolean doMetrcis, Map<String, Object>
attributesMap, int indent) {
+ if (attributesMap==null)
+ return;
+
for (Map.Entry<String,Object> entry : attributesMap.entrySet()) {
Map<String,Object> props = (Map<String, Object>)
entry.getValue();
commit 3f081f6dc8e72c207bc0bacb8465f8d6195418d7
Merge: ba33706 341a653
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed May 4 15:25:27 2011 +0200
Merge branch 'master' into as7plugin
commit ba33706d7029e1771a3329a429d1348d7c3a29a1
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon May 2 15:39:05 2011 +0200
Also handle nested elements.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
index 599f61c..8e42fdf 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -94,8 +94,11 @@ public class Domain2Descriptor {
attributesMap = (Map<String, Object>)
resMap.get("attributes");
}
+ createProperties(doMetrcis, attributesMap, 0);
+ }
+ private void createProperties(boolean doMetrcis, Map<String, Object>
attributesMap, int indent) {
for (Map.Entry<String,Object> entry : attributesMap.entrySet()) {
Map<String,Object> props = (Map<String, Object>)
entry.getValue();
@@ -118,12 +121,21 @@ public class Domain2Descriptor {
case LIST:
typeString = "-list-";
break; // Handled below
+ case OBJECT: // an embedded map
+ typeString = "-object-";
+ System.out.println("<c:list-property name=\"" +
entry.getKey() +"\" description=\"" +
+ props.get("description") + "\" >");
+ createProperties(doMetrcis,
+ (Map<String, Object>) ((Map<String, Object>)
entry.getValue()).get("attributes"), indent+4);
+ System.out.println("</c:list-property>");
+
+ continue;
default:
typeString = "- unknown -";
System.err.println("Unknown type " + ptype + " for "
+ entry.getKey());
}
- if (ptype==Type.LIST && !doMetrcis) {
+ if (ptype== Type.LIST && !doMetrcis) {
System.out.println("<c:list-property name=\"" +
entry.getKey() +"\" >");
System.out.println(" <c:simple-property name=\"" +
entry.getKey() + "\" />");
@@ -134,14 +146,19 @@ public class Domain2Descriptor {
continue;
}
+ String accessType = (String) props.get("access-type");
+ if (accessType==null)
+ accessType = "read-only"; // default of as7
if (doMetrcis) {
- if (!props.get("access-type").equals("metric"))
+ if (!accessType.equals("metric"))
continue;
- StringBuilder sb = new StringBuilder("<metric
property=\"");
+ StringBuilder sb = new StringBuilder();
+ doIndent(indent,sb);
+ sb.append("<metric property=\"");
sb.append(entry.getKey()).append('"');
sb.append("
type=\"").append(typeString).append("\"");
- if (ptype==Type.STRING)
+ if (ptype== Type.STRING)
sb.append(" dataType=\"trait\"");
String description = (String) props.get("description");
@@ -155,8 +172,12 @@ public class Domain2Descriptor {
}
else {
+ if (accessType.equals("metric"))
+ continue;
- StringBuilder sb = new StringBuilder("<c:simple-property
name=\"");
+ StringBuilder sb = new StringBuilder();
+ doIndent(indent,sb);
+ sb.append("<c:simple-property name=\"");
sb.append(entry.getKey()).append('"');
Object required = props.get("required");
@@ -166,7 +187,7 @@ public class Domain2Descriptor {
sb.append("
type=\"").append(typeString).append("\"");
sb.append(" readOnly=\"");
- if (props.get("access-type").equals("read-only"))
+ if (accessType!=null && accessType.equals("read-only"))
// TODO if no access-type is given, the one from the parent applies
sb.append("true");
else
sb.append("false");
@@ -183,8 +204,11 @@ public class Domain2Descriptor {
System.out.println(sb.toString());
}
}
+ }
-
+ private void doIndent(int indent, StringBuilder sb) {
+ for (int i = 0 ; i < indent ; i++)
+ sb.append(' ');
}
private Type getTypeFromProps(Map<String, Object> props) {
commit 07e330834624e13d48342c9a3e9ba5037490af11
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon May 2 10:47:44 2011 +0200
Remove unused import.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index 03a0f12..a50ea45 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -29,7 +29,6 @@ import org.rhq.modules.plugins.jbossas7.json.ReadResource;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
commit d58b242f0d092d7b95b9e544edbc1eae5e32038c
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Apr 28 15:05:57 2011 +0200
Get rid of the old getLevelData() method. We are doing that via operation now.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 12d3ec6..eace9b8 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -26,13 +26,11 @@ import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
-import java.net.URLConnection;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
-import org.jetbrains.annotations.Nullable;
import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.Operation;
@@ -47,7 +45,6 @@ public class ASConnection {
private final Log log = LogFactory.getLog(ASConnection.class);
URL url;
String urlString;
- private StringBuilder builder;
private ObjectMapper mapper;
public ASConnection(String host, int port) {
@@ -63,64 +60,6 @@ public class ASConnection {
}
- @Deprecated
- JsonNode getLevelData(@Nullable String base, boolean recursive, boolean
includeMetrics) throws Exception{
- String ops = null;
- if (recursive)
- ops = "recursive";
- if (includeMetrics)
- ops += "&include-runtime=true";
-
- return getLevelData(base,ops);
-}
-
- /**
- * Return the JSON-Object for a certain path.
- *
- * @param base Path to the object/subsystem. Can be null/"" for the base
objects
- * @param ops OperationDescription to run on the api can be null
- * @return A JSONObject encoding the level plus sub levels provided
- * @throws Exception If anything goes wrong
- */
- @Deprecated
- JsonNode getLevelData(@Nullable String base, @Nullable String ops) throws Exception
{
-
- URL url2;
- String spec;
- url2 = getBaseUrl(base, ops);
-
- JsonNode tree = null;
-
- URLConnection conn = url2.openConnection();
- InputStream inputStream = null;
- try {
- inputStream = conn.getInputStream();
- } catch (IOException e) {
- System.err.println(e.getMessage());
- return tree;
- }
- BufferedReader in = new BufferedReader(new InputStreamReader(
- inputStream));
- try {
- String line;
- StringBuilder builder = new StringBuilder();
- while ((line = in.readLine()) != null) {
- builder.append(line);
- }
-
- ObjectMapper mapper = new ObjectMapper();
-
- tree = mapper.readTree(builder.toString());
-
- } catch (IOException ioe) {
- System.err.println("for in put " + url2 + " : " +
ioe.getMessage());
- } finally {
- in.close();
- }
-
- return tree;
- }
-
static boolean isErrorReply(JsonNode in) {
if (in == null)
@@ -182,14 +121,14 @@ public class ASConnection {
br = new BufferedReader(new InputStreamReader(
inputStream));
String line;
- builder = new StringBuilder();
+ StringBuilder builder = new StringBuilder();
while ((line = br.readLine()) != null) {
builder.append(line);
}
String outcome;
JsonNode operationResult=null;
- if (builder!=null) {
+ if (builder !=null) {
outcome= builder.toString();
operationResult = mapper.readTree(outcome);
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index 50dd55c..03a0f12 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -25,6 +25,7 @@ import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
import org.rhq.modules.plugins.jbossas7.json.ReadChildrenNames;
+import org.rhq.modules.plugins.jbossas7.json.ReadResource;
import java.util.ArrayList;
import java.util.Arrays;
@@ -106,7 +107,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
JsonNode json ;
if (!recursive)
- json = connection.getLevelData(path,recursive, false);
+ json = connection.executeRaw(new
ReadResource(parentComponent.pathToAddress(path)));
else {
List<PROPERTY_VALUE> addr ;
addr = parentComponent.pathToAddress(parentPath);
commit ae5428243c5ae6639e3acac97ae476ad05b4f825
Merge: 40c5ede 15a53e5
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Apr 28 10:48:43 2011 +0200
Merge branch 'master' into as7plugin
commit 40c5eded43cd9e4d6050c9ca5ecbd06ddd1cd5b1
Merge: 9dc32bc f50680d
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Apr 27 21:33:14 2011 +0200
Merge branch 'master' into as7plugin
commit 9dc32bcb1ff5af961cd980c7d0ec518057bedba2
Merge: 0559cb7 0086a69
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Apr 27 16:18:48 2011 +0200
Merge branch 'master' into as7plugin
commit 0559cb7526a5804a39c9883f750dc217d3d096ca
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Apr 20 08:58:28 2011 +0200
Add generating of <metric> elements.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
new file mode 100644
index 0000000..599f61c
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Descriptor.java
@@ -0,0 +1,247 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+
+/**
+ * Generate properties from a domain dump
+ * @author Heiko W. Rupp
+ */
+public class Domain2Descriptor {
+
+ public static void main(String[] args) throws Exception {
+
+ if (args.length<1) {
+ usage();
+ System.exit(1);
+ }
+
+ Domain2Descriptor d2d = new Domain2Descriptor();
+ d2d.run(args);
+
+
+ }
+
+ private void run(String[] args) {
+
+ boolean doMetrcis = false;
+ int pos = 0;
+ if (args[0].startsWith("-")) {
+ if (args[0].equals("-m"))
+ doMetrcis = true;
+ else if (args[0].equals("-p"))
+ doMetrcis = false;
+ else {
+ usage();
+ return;
+ }
+ pos++;
+ }
+
+ String path = args[pos];
+ String childType = null;
+ if (args.length>pos+1)
+ childType = args[pos+1];
+
+ ASConnection conn = new ASConnection("localhost",9990);
+
+ List<PROPERTY_VALUE> address = pathToAddress(path);
+ Operation op = new Operation("read-resource-description",address); //
,"operations",true);
+ op.addAdditionalProperty("recursive","true");
+ if (doMetrcis)
+ op.addAdditionalProperty("include-runtime",true);
+ ComplexResult res = (ComplexResult) conn.execute(op,true);
+ if (!res.isSuccess()) {
+ System.err.println("Failure: " + res.getFailureDescription());
+ return;
+ }
+
+ Map<String,Object> attributesMap;
+
+ Map<String,Object> resMap = res.getResult();
+ if (childType!=null) {
+ Map childMap = (Map) resMap.get("children");
+ Map <String,Object> typeMap = (Map<String, Object>)
childMap.get(childType);
+ Map descriptionMap = (Map) typeMap.get("model-description");
+ Map starMap = (Map) descriptionMap.get("*");
+ attributesMap = (Map<String, Object>)
starMap.get("attributes");
+ }
+ else {
+ attributesMap = (Map<String, Object>)
resMap.get("attributes");
+ }
+
+
+
+ for (Map.Entry<String,Object> entry : attributesMap.entrySet()) {
+
+ Map<String,Object> props = (Map<String, Object>)
entry.getValue();
+
+
+ Type ptype = getTypeFromProps(props);
+ String typeString;
+
+ switch (ptype) {
+ case INT:
+ typeString = "integer"; break;
+ case STRING:
+ typeString = "string"; break;
+ case BOOLEAN:
+ typeString = "boolean"; break;
+ case LONG:
+ typeString = "long"; break;
+ case BIG_DECIMAL:
+ typeString = "long"; break; // TODO better float or double?
+ case LIST:
+ typeString = "-list-";
+ break; // Handled below
+ default:
+ typeString = "- unknown -";
+ System.err.println("Unknown type " + ptype + " for "
+ entry.getKey());
+ }
+
+ if (ptype==Type.LIST && !doMetrcis) {
+
+ System.out.println("<c:list-property name=\"" +
entry.getKey() +"\" >");
+ System.out.println(" <c:simple-property name=\"" +
entry.getKey() + "\" />");
+ System.out.println("</c:list-property>");
+
+
+
+ continue;
+ }
+
+ if (doMetrcis) {
+ if (!props.get("access-type").equals("metric"))
+ continue;
+
+ StringBuilder sb = new StringBuilder("<metric
property=\"");
+ sb.append(entry.getKey()).append('"');
+ sb.append("
type=\"").append(typeString).append("\"");
+ if (ptype==Type.STRING)
+ sb.append(" dataType=\"trait\"");
+
+ String description = (String) props.get("description");
+ if (description!=null) {
+ if (sb.length()+description.length() > 120)
+ sb.append("\n ");
+ sb.append("
description=\"").append(description).append('"');
+ }
+ sb.append("/>");
+ System.out.println(sb.toString());
+
+ }
+ else {
+
+ StringBuilder sb = new StringBuilder("<c:simple-property
name=\"");
+ sb.append(entry.getKey()).append('"');
+
+ Object required = props.get("required");
+ if (required != null && (Boolean) required) {
+ sb.append(" required=\"true\"");
+ }
+
+ sb.append("
type=\"").append(typeString).append("\"");
+ sb.append(" readOnly=\"");
+ if (props.get("access-type").equals("read-only"))
+ sb.append("true");
+ else
+ sb.append("false");
+ sb.append('"');
+
+ String description = (String) props.get("description");
+ if (description!=null) {
+ if (sb.length()+description.length() > 120)
+ sb.append("\n ");
+ sb.append("
description=\"").append(description).append('"');
+ }
+ sb.append("/>");
+
+ System.out.println(sb.toString());
+ }
+ }
+
+
+ }
+
+ private Type getTypeFromProps(Map<String, Object> props) {
+ Map<String,String> tMap = (Map<String, String>)
props.get("type");
+ String type = tMap.get("TYPE_MODEL_VALUE");
+ Type ret = Type.valueOf(type);
+
+ return ret;
+ }
+
+ /**
+ * Convert a path in the form key=value,key=value... to a List of properties.
+ * @param path Path to translate
+ * @return List of properties
+ */
+ public List<PROPERTY_VALUE> pathToAddress(String path) {
+ if (path==null || path.isEmpty())
+ return Collections.emptyList();
+
+ List<PROPERTY_VALUE> result = new ArrayList<PROPERTY_VALUE>();
+ String[] components = path.split(",");
+ for (String component : components) {
+ String tmp = component.trim();
+
+ if (tmp.contains("=")) {
+ // strip / from the start of the key if it happens to be there
+ if (tmp.startsWith("/"))
+ tmp = tmp.substring(1);
+
+ String[] pair = tmp.split("=");
+ PROPERTY_VALUE valuePair = new PROPERTY_VALUE(pair[0], pair[1]);
+ result.add(valuePair);
+ }
+ }
+
+ return result;
+ }
+
+
+
+ private static void usage() {
+ System.out.println("Domain2Properties [-p|-m] path type");
+ System.out.println(" path is of kind 'key=value[,key=value]+");
+ System.out.println(" -p create properties (default)");
+ System.out.println(" -m create metrics");
+ }
+
+ public enum Type {
+ STRING,
+ INT,
+ BOOLEAN,
+ LONG,
+ BIG_DECIMAL,
+ OBJECT,
+ LIST
+
+ ;
+ }
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Properties.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Properties.java
deleted file mode 100644
index 0b8b38e..0000000
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Properties.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-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.modules.plugins.jbossas7;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import com.apple.java.Usage;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
-import org.rhq.modules.plugins.jbossas7.json.Operation;
-import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
-
-/**
- * Generate properties from a domain dump
- * @author Heiko W. Rupp
- */
-public class Domain2Properties {
-
- public static void main(String[] args) throws Exception {
-
- if (args.length<2) {
- usage();
- System.exit(1);
- }
-
- Domain2Properties dp = new Domain2Properties();
- dp.run(args);
-
-
- }
-
- private void run(String[] args) {
-
- String path = args[0];
- String type = args[1];
-
- ASConnection conn = new ASConnection("localhost",9990);
-
- List<PROPERTY_VALUE> address = pathToAddress(path);
- Operation op = new
Operation("read-resource-description",address,"operations",true);
- op.addAdditionalProperty("recursive","true");
- ComplexResult res = (ComplexResult) conn.execute(op,true);
- if (!res.isSuccess()) {
- System.err.println("Failure: " + res.getFailureDescription());
- return;
- }
-
-
- Map<String,Object> resMap = res.getResult();
- Map childMap = (Map) resMap.get("children");
- Map <String,Object> typeMap = (Map<String, Object>)
childMap.get(type);
- Map descriptionMap = (Map) typeMap.get("model-description");
- Map starMap = (Map) descriptionMap.get("*");
- Map<String,Object> attributesMap = (Map<String, Object>)
starMap.get("attributes");
-
-
-
- for (Map.Entry<String,Object> entry : attributesMap.entrySet()) {
-
- Map<String,Object> props = (Map<String, Object>)
entry.getValue();
-
-
- Type ptype = getTypeFromProps(props);
- String typeString;
-
- switch (ptype) {
- case INT:
- typeString = "integer"; break;
- case STRING:
- typeString = "string"; break;
- case BOOLEAN:
- typeString = "boolean"; break;
- case LONG:
- typeString = "long"; break;
- case BIG_DECIMAL:
- typeString = "long"; break; // TODO bettter float or double?
- case LIST:
- typeString = "-list-";
- break; // Handled below
- default:
- typeString = "- unknown -";
- System.err.println("Unknown type " + ptype + " for "
+ entry.getKey());
- }
-
- if (ptype==Type.LIST) {
-
- System.out.println("<c:list-property name=\"" +
entry.getKey() +"\" >");
- System.out.println(" <c:simple-property name=\"" +
entry.getKey() + "\" />");
- System.out.println("</c:list-property>");
-
-
-
- continue;
- }
-
- StringBuilder sb = new StringBuilder("<c:simple-property
name=\"");
- sb.append(entry.getKey()).append('"');
-
- if ((Boolean) props.get("required")) {
- sb.append(" required=\"true\"");
- }
-
- sb.append("
type=\"").append(typeString).append("\"");
- sb.append(" readOnly=\"");
- if (props.get("access-type").equals("read-only"))
- sb.append("true");
- else
- sb.append("false");
- sb.append('"');
-
- String description = (String) props.get("description");
- if (sb.length()+description.length() > 120)
- sb.append("\n ");
- sb.append("
description=\"").append(description).append('"');
- sb.append("/>");
-
- System.out.println(sb.toString());
- }
-
-
- }
-
- private Type getTypeFromProps(Map<String, Object> props) {
- Map<String,String> tMap = (Map<String, String>)
props.get("type");
- String type = tMap.get("TYPE_MODEL_VALUE");
- Type ret = Type.valueOf(type);
-
- return ret;
- }
-
- /**
- * Convert a path in the form key=value,key=value... to a List of properties.
- * @param path Path to translate
- * @return List of properties
- */
- public List<PROPERTY_VALUE> pathToAddress(String path) {
- if (path==null || path.isEmpty())
- return Collections.emptyList();
-
- List<PROPERTY_VALUE> result = new ArrayList<PROPERTY_VALUE>();
- String[] components = path.split(",");
- for (String component : components) {
- String tmp = component.trim();
-
- if (tmp.contains("=")) {
- // strip / from the start of the key if it happens to be there
- if (tmp.startsWith("/"))
- tmp = tmp.substring(1);
-
- String[] pair = tmp.split("=");
- PROPERTY_VALUE valuePair = new PROPERTY_VALUE(pair[0], pair[1]);
- result.add(valuePair);
- }
- }
-
- return result;
- }
-
-
-
- private static void usage() {
- System.out.println("Domain2Properties path type");
- System.out.println(" path is of kind 'key=value[,key=value]+");
- }
-
- public enum Type {
- STRING,
- INT,
- BOOLEAN,
- LONG,
- BIG_DECIMAL,
- OBJECT,
- LIST
-
- ;
- }
-
-}
commit 47863657731b18878a50252743504ac825299636
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Apr 19 15:08:41 2011 +0200
Put the Domain below the DomainController node and remove the separate domain node.
Also add some more properties.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index f03f62c..72ab4dd 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -67,6 +67,7 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -316,13 +317,16 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
} // end List of ..
else if (propDef instanceof PropertyDefinitionMap) {
PropertyDefinitionMap mapDef = (PropertyDefinitionMap) propDef;
+ PropertyMap pm = new PropertyMap(mapDef.getName());
+
Map<String,PropertyDefinition> memberDefMap =
mapDef.getPropertyDefinitions();
for (Map.Entry<String,PropertyDefinition> maEntry :
memberDefMap.entrySet()) {
JsonNode valueNode = json.findValue(maEntry.getKey());
- System.out.println(valueNode);
PropertySimple p = putProperty(valueNode,maEntry.getValue());
- ret.put(p);
+ System.out.println(p);
+ pm.put(p);
}
+ ret.put(pm);
}
}
@@ -496,6 +500,99 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
@Override
public OperationResult invokeOperation(String name,
Configuration parameters) throws
InterruptedException, Exception {
- return null; // TODO: Customise this generated block
+
+ if (!name.contains(":")) {
+ OperationResult badName = new OperationResult("Operation name did not
contain a ':'");
+ badName.setErrorMessage("Operation name did not contain a
':'");
+ return badName;
+ }
+
+ int colonPos = name.indexOf(':');
+ String what = name.substring(0, colonPos);
+ String op = name.substring(colonPos+1);
+ Operation operation=null;
+
+ List<PROPERTY_VALUE> address = new ArrayList<PROPERTY_VALUE>();
+
+ if (what.equals("server-group")) {
+ String groupName = parameters.getSimpleValue("name",null);
+ String profile =
parameters.getSimpleValue("profile","default");
+
+ address.add(new PROPERTY_VALUE("server-group",groupName));
+
+ operation = new Operation(op,address,"profile",profile);
+ } else if (what.equals("server")) {
+
+ if (context.getResourceType().getName().equals("JBossAS-Managed"))
{
+ String host =
conf.getSimpleValue("domainHost","local");
+ address.add(new PROPERTY_VALUE("host",host));
+ address.add(new PROPERTY_VALUE("server-config",myServerName));
+ operation = new Operation(op,address);
+ }
+ else if (context.getResourceType().getName().equals("Host")) {
+ address.addAll(pathToAddress(getPath()));
+ String serverName = parameters.getSimpleValue("name",null);
+ address.add(new PROPERTY_VALUE("server-config",serverName));
+ Map<String,Object> props = new HashMap<String, Object>();
+ String serverGroup = parameters.getSimpleValue("group",null);
+ props.put("group",serverGroup);
+ if (op.equals("add")) {
+ props.put("name",serverName);
+ boolean autoStart =
parameters.getSimple("auto-start").getBooleanValue();
+ props.put("auto-start",autoStart);
+ // TODO put more properties in
+ }
+
+ operation = new Operation(op,address,props);
+ }
+ } else if (what.equals("destination")) {
+ address.addAll(pathToAddress(getPath()));
+ String newName = parameters.getSimpleValue("name","");
+// String type =
parameters.getSimpleValue("type","Queue").toLowerCase();
+// address.add(new PROPERTY_VALUE(type,newName));
+ String queueName =
parameters.getSimpleValue("queue-address","");
+ Map<String,Object> props = new HashMap<String, Object>();
+ props.put("queue-address",queueName);
+ operation = new Operation(op,address);
+ } else if (what.equals("managed-server")) {
+ String chost = parameters.getSimpleValue("hostname","");
+ String serverName =
parameters.getSimpleValue("servername","");
+ String serverGroup =
parameters.getSimpleValue("server-group","");
+ String socketBindings =
parameters.getSimpleValue("socket-bindings","");
+ String portS =
parameters.getSimpleValue("port-offset","0");
+ int port = Integer.parseInt(portS);
+ String autostartS =
parameters.getSimpleValue("auto-start","false");
+ boolean autoStart = Boolean.getBoolean(autostartS);
+
+ address.add(new PROPERTY_VALUE("host", chost));
+ address.add(new PROPERTY_VALUE("server-config",serverName));
+ Map<String,Object> props = new HashMap<String, Object>();
+ props.put("name",serverName);
+ props.put("group",serverGroup);
+ props.put("socket-binding-group",socketBindings);
+ props.put("socket-binding-port-offset",port);
+ props.put("auto-start",autoStart);
+
+ operation = new Operation(op,address,props);
+ } else if (what.equals("domain")) {
+ operation = new Operation(op,Collections.<PROPERTY_VALUE>emptyList());
+ }
+
+ OperationResult operationResult = new OperationResult();
+ if (operation!=null) {
+ JsonNode result = connection.executeRaw(operation);
+
+ if (ASConnection.isErrorReply(result)) {
+
operationResult.setErrorMessage(ASConnection.getFailureDescription(result));
+ }
+ else {
+
operationResult.setSimpleResult(ASConnection.getSuccessDescription(result));
+ }
+ }
+ else {
+ operationResult.setErrorMessage("No valid operation was given");
+ }
+ // TODO throw an exception if the operation failed?
+ return operationResult;
}
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
index 8d9ff0f..2f71edb 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
@@ -76,6 +76,7 @@ public class BaseProcessDiscovery extends AbstractBaseDiscovery
implements Resou
String serverNameFull;
String serverName;
String psName = psr.getProcessScan().getName();
+ String description = discoveryContext.getResourceType().getDescription();
if (psName.equals("ProcessController")) {
serverNameFull = "ProcessController";
serverName = "ProcessController";
@@ -85,6 +86,7 @@ public class BaseProcessDiscovery extends AbstractBaseDiscovery
implements Resou
if (hp.isLocal) {
serverName = "DomainController";
serverNameFull = "DomainController";
+ description = "Domain controller for an AS7 domain";
}
else {
serverName = "HostController";
@@ -138,7 +140,7 @@ public class BaseProcessDiscovery extends AbstractBaseDiscovery
implements Resou
serverNameFull, // key TODO distinguish per domain?
serverName, // Name
null, // TODO real version ?
- discoveryContext.getResourceType().getDescription(), // Description
+ description, // Description
config,
psr.getProcessInfo()
);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
index 1d73822..35425e3 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
@@ -68,100 +68,4 @@ public class DomainComponent extends BaseComponent implements
OperationFacet{
return super.getAvailability(); // TODO: Customise this generated block
}
- @Override
- public OperationResult invokeOperation(String name,
- Configuration parameters) throws
InterruptedException, Exception {
-
- if (!name.contains(":")) {
- OperationResult badName = new OperationResult("Operation name did not
contain a ':'");
- badName.setErrorMessage("Operation name did not contain a
':'");
- return badName;
- }
-
- int colonPos = name.indexOf(':');
- String what = name.substring(0, colonPos);
- String op = name.substring(colonPos+1);
- Operation operation=null;
-
- List<PROPERTY_VALUE> address = new ArrayList<PROPERTY_VALUE>();
-
- if (what.equals("server-group")) {
- String groupName = parameters.getSimpleValue("name",null);
- String profile =
parameters.getSimpleValue("profile","default");
-
- address.add(new PROPERTY_VALUE("server-group",groupName));
-
- operation = new Operation(op,address,"profile",profile);
- } else if (what.equals("server")) {
-
- if (context.getResourceType().getName().equals("JBossAS-Managed"))
{
- String host =
conf.getSimpleValue("domainHost","local");
- address.add(new PROPERTY_VALUE("host",host));
- address.add(new PROPERTY_VALUE("server-config",myServerName));
- operation = new Operation(op,address);
- }
- else if (context.getResourceType().getName().equals("Host")) {
- address.addAll(pathToAddress(getPath()));
- String serverName = parameters.getSimpleValue("name",null);
- address.add(new PROPERTY_VALUE("server-config",serverName));
- Map<String,Object> props = new HashMap<String, Object>();
- String serverGroup = parameters.getSimpleValue("group",null);
- props.put("group",serverGroup);
- if (op.equals("add")) {
- props.put("name",serverName);
- boolean autoStart =
parameters.getSimple("auto-start").getBooleanValue();
- props.put("auto-start",autoStart);
- // TODO put more properties in
- }
-
- operation = new Operation(op,address,props);
- }
- } else if (what.equals("destination")) {
- address.addAll(pathToAddress(getPath()));
- String newName = parameters.getSimpleValue("name","");
-// String type =
parameters.getSimpleValue("type","Queue").toLowerCase();
-// address.add(new PROPERTY_VALUE(type,newName));
- String queueName =
parameters.getSimpleValue("queue-address","");
- Map<String,Object> props = new HashMap<String, Object>();
- props.put("queue-address",queueName);
- operation = new Operation(op,address);
- } else if (what.equals("managed-server")) {
- String chost = parameters.getSimpleValue("hostname","");
- String serverName =
parameters.getSimpleValue("servername","");
- String serverGroup =
parameters.getSimpleValue("server-group","");
- String socketBindings =
parameters.getSimpleValue("socket-bindings","");
- String portS =
parameters.getSimpleValue("port-offset","0");
- int port = Integer.parseInt(portS);
- String autostartS =
parameters.getSimpleValue("auto-start","false");
- boolean autoStart = Boolean.getBoolean(autostartS);
-
- address.add(new PROPERTY_VALUE("host", chost));
- address.add(new PROPERTY_VALUE("server-config",serverName));
- Map<String,Object> props = new HashMap<String, Object>();
- props.put("name",serverName);
- props.put("group",serverGroup);
- props.put("socket-binding-group",socketBindings);
- props.put("socket-binding-port-offset",port);
- props.put("auto-start",autoStart);
-
- operation = new Operation(op,address,props);
- }
-
- OperationResult operationResult = new OperationResult();
- if (operation!=null) {
- JsonNode result = connection.executeRaw(operation);
-
- if (ASConnection.isErrorReply(result)) {
-
operationResult.setErrorMessage(ASConnection.getFailureDescription(result));
- }
- else {
-
operationResult.setSimpleResult(ASConnection.getSuccessDescription(result));
- }
- }
- else {
- operationResult.setErrorMessage("No valid operation was given");
- }
- // TODO throw an exception if the operation failed?
- return operationResult;
- }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
deleted file mode 100644
index a8b1058..0000000
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-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.modules.plugins.jbossas7;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
-import org.rhq.core.pluginapi.inventory.ProcessScanResult;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
-import org.rhq.core.system.ProcessInfo;
-
-/**
- * Discover the domain. This is done by scanning for host controllers.
- * If they are also DC, the domain-controller element points to local.
- *
- * @author Heiko W. Rupp
- */
-@SuppressWarnings("unused")
-public class DomainDiscovery extends AbstractBaseDiscovery<BaseComponent> {
-
- private final Log log = LogFactory.getLog(this.getClass());
-
- public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent> context)
- throws Exception {
-
- Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>(1);
-
-
- List<ProcessScanResult> scans = context.getAutoDiscoveredProcesses();
-
- for (ProcessScanResult psr : scans) {
-
- // get the HostController, to find host.xml
- String psName = psr.getProcessScan().getName();
- if (!psName.equals("HostController"))
- continue;
-
- // Now we have the host controller, lets get the host.xml file
- // and obtain the domain controller info from there
- ProcessInfo processInfo = psr.getProcessInfo();
- readHostXml(processInfo,true);
- HostPort dcHp = getDomainControllerFromHostXml();
-
- if (!dcHp.isLocal) {
- log.info("Domain controller is not local, but at " + dcHp);
- continue;
- }
-
- // Ok, this is a domain controller, so we can return a Domain resource.
-
- // Get the management port and save for later use
- HostPort managementHostPort = getManagementPortFromHostXml();
- Configuration config = context.getDefaultPluginConfiguration();
- config.put(new PropertySimple("port",managementHostPort.port));
- config.put(new
PropertySimple("hostname",managementHostPort.host));
-
- DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- context.getResourceType(), // DataType
- "Domain", // Key
- "Domain", // Name
- null, // Version
- context.getResourceType().getDescription(), // Description
- config,
- null);
- details.add(detail);
- }
- return details;
- }
-}
\ No newline at end of file
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 80df496..04686c4 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -96,32 +96,9 @@
<process-scan name="HostController"
query="process|basename|match=^java.*,arg|org.jboss.as.host-controller|match=.*"/>
- <operation name="shutdown" description="Shut this
Host-/Domaincontroller down with all managed servers.">
+ <operation name="domain:shutdown" displayName="Shutdown
Domain" description="Shut this Host-/Domaincontroller down with all managed
servers.">
</operation>
-
- </server>
-
- <server name="Domain"
- discovery="DomainDiscovery"
- class="DomainComponent"
- description="An AS7 management profile">
-
- <subcategories>
- <subcategory name="Integration" />
- <subcategory name="Core"/>
- <subcategory name="Web"/>
- </subcategories>
-
- <plugin-configuration>
- <c:simple-property name="hostname" default="localhost"
displayName="Management host" required="true"/>
- <c:simple-property name="port" default="9990"
type="integer" displayName="Management port"
required="true"/>
- </plugin-configuration>
-
- <!-- Scan for host controller is intentional -->
- <process-scan name="HostController"
query="process|basename|match=^java.*,arg|org.jboss.as.host-controller|match=.*"/>
-
-
<operation name="server-group:add" displayName="Add
ServerGroup" description="Add a server group to the Domain.">
<parameters>
<c:simple-property name="name" description="Name of
Group to add"/>
@@ -556,18 +533,75 @@
</plugin-configuration>
<resource-configuration>
- <c:map-property name="configuration">
- <c:simple-property name="connection-url"/>
- <c:simple-property name="driver-class"/>
- <c:simple-property name="jndi-name"/>
- <c:simple-property name="driver"/>
- <c:simple-property name="pool-name"/>
- <c:simple-property name="use-java-context"
type="boolean"/>
- <c:simple-property name="enabled"
type="boolean"/>
- <c:simple-property name="user-name"/>
- <c:simple-property name="password"/>
- <!-- TODO more when they become available in the AS -->
- </c:map-property>
+ <c:simple-property name="connection-url"
required="true" type="string" readOnly="true"
description="The JDBC driver connection URL"/>
+ <c:simple-property name="driver-class"
required="true" type="string" readOnly="true"
+ description="The fully qualifed name of the JDBC driver
class"/>
+ <c:simple-property name="jndi-name"
required="true" type="string" readOnly="true"
+ description="Specifies the JNDI name for the
datasource"/>
+ <c:simple-property name="driver" required="true"
type="string" readOnly="true"
+ description="Defines the JDBC driver the datasource should
use with this format:
<driver-name>#<major-version>.<minor-version> where
<driver-name> is the fully qualifed name of the JDBC driver class"/>
+ <c:simple-property name="new-connection-sql"
type="string" readOnly="true"
+ description="Specifies an SQL statement to execute whenever
a connection is added to the connection pool."/>
+ <c:simple-property name="pool-name" type="string"
readOnly="true"
+ description="Specifies the pool name for the datasource
used for management"/>
+ <c:simple-property name="url-delimiter"
type="string" readOnly="true"
+ description="Specifies the delimeter for URLs in
connection-url for HA datasources"/>
+ <c:simple-property name="url-selector-strategy-class-name"
type="string" readOnly="true"
+ description="A class that implements
org.jboss.jca.adapters.jdbc.URLSelectorStrategy"/>
+ <c:simple-property name="use-java-context"
type="boolean" readOnly="true"
+ description="Setting this to false will bind the DataSource
into global JNDI;"/>
+ <c:simple-property name="enabled" type="string"
readOnly="true" description="Specifies if the datasource should be
enabled"/>
+ <c:simple-property name="max-pool-size"
type="integer" readOnly="false"
+ description="The max-pool-size element indicates the
maximum number of connections for a pool. No more connections will be created in each
sub-pool."/>
+ <c:simple-property name="min-pool-size"
type="integer" readOnly="false"
+ description="The min-pool-size element indicates the
minimum number of connections a pool should hold. These are not created until a Subject is
known from a request for a connection."/>
+ <c:simple-property name="pool-prefill"
type="boolean" readOnly="false"
+ description="Whether to attempt to prefill the connection
pool. Changing this value require a server restart."/>
+ <c:simple-property name="pool-use-strict-min"
type="boolean" readOnly="false"
+ description="Define if the min-pool-size should be
considered a strictly."/>
+ <c:simple-property name="user-name" type="string"
readOnly="true"
+ description="Specify the username used when creating a new
connection."/>
+ <c:simple-property name="password" type="password"
readOnly="true"
+ description="Specify the passwprd used when creating a new
connection."/>
+ <c:simple-property name="prepared-statements-cacheSize"
type="long" readOnly="true"
+ description="The number of prepared statements per
connection in an LRU cache"/>
+ <c:simple-property name="share-prepared-statements"
type="boolean" readOnly="true"
+ description="Whether to share prepare statements, i.e.
whether asking for same statement twice without closing uses the same underlying prepared
statement"/>
+ <c:simple-property name="track-statements"
type="string" readOnly="true"
+ description="Whether to check for unclosed statements when
a connection is returned to the pool and result sets are closed when a statement is
closed/return to the prepared statement cache. valid values are: false - do not track
statements and results true - track statements and result sets and warn when they are not
closed nowarn - track statements but do no warn about them being unclosed"/>
+ <c:simple-property name="allocation-retry"
type="integer" readOnly="true"
+ description="The allocation retry element indicates the
number of times that allocating a connection should be tried before throwing an
exception."/>
+ <c:simple-property name="allocation-retry-wait-millis"
type="long" readOnly="true"
+ description="Indicates the time in milliseconds to wait
between retrying to allocate a connection."/>
+ <c:simple-property name="blocking-timeout-wait-millis"
type="long" readOnly="false"
+ description="The blocking-timeout-millis element indicates
the maximum time in milliseconds to block while waiting for a connection before throwing
an exception. Note that this blocks only while waiting for a permit for a connection, and
will never throw an exception if creating a new connection takes an inordinately long
time."/>
+ <c:simple-property name="idle-timeout-minutes"
type="long" readOnly="false"
+ description="The idle-timeout-minutes elements indicates
the maximum time in minutes a connection may be idle before being closed. The actual
maximum time depends also on the IdleRemover scan time, which is 1/2 the smallest
idle-timeout-minutes of any pool. Changing this value require a server
restart."/>
+ <c:simple-property name="query-timeout"
type="long" readOnly="true"
+ description="Any configured query timeout in seconds The
default is no timeout"/>
+ <c:simple-property name="use-try-lock" type="long"
readOnly="true"
+ description="Any configured timeout for internal locks on
the resource adapter objects in seconds"/>
+ <c:simple-property name="set-tx-query-timeout"
type="boolean" readOnly="true"
+ description="Whether to set the query timeout based on the
time remaining until transaction timeout, any configured query timeout will be used if
there is no transaction."/>
+ <c:simple-property name="transaction-isolation"
type="string" readOnly="true"
+ description="Set java.sql.Connection transaction isolation
level to use. The constants defined by transaction-isolation-values are the possible
transaction isolation levels and include: TRANSACTION_READ_UNCOMMITTED
TRANSACTION_READ_COMMITTED TRANSACTION_REPEATABLE_READ TRANSACTION_SERIALIZABLE
TRANSACTION_NONE"/>
+ <c:simple-property name="check-valid-connection-sql"
type="string" readOnly="true"
+ description="Specify an SQL statement to check validity of
a pool connection. This may be called when managed connection is taken from pool for
use."/>
+ <c:simple-property name="exception-sorter-class-name"
type="string" readOnly="true"
+ description="An org.jboss.jca.adapters.jdbc.ExceptionSorter
that provides a boolean isExceptionFatal(SQLException e) method to validate is an
exception should be broadcast to all javax.resource.spi.ConnectionEventListener as a
connectionErrorOccurred"/>
+ <c:simple-property
name="stale-connection-checker-class-name" type="string"
readOnly="true"
+ description="An
org.jboss.jca.adapters.jdbc.StaleConnectionChecker that provides a boolean
isStaleConnection(SQLException e) method which if it it returns true will wrap the
exception in an org.jboss.jca.adapters.jdbc.StaleConnectionException"/>
+ <c:simple-property
name="valid-connection-checker-class-name" type="string"
readOnly="true"
+ description="An
org.jboss.jca.adapters.jdbc.ValidConnectionChecker that provides a SQLException
isValidConnection(Connection e) method to validate is a connection is valid. An exception
means the connection is destroyed. This overrides the check-valid-connection-sql when
present."/>
+ <c:simple-property name="background-validation-minutes"
type="long" readOnly="false"
+ description="The background-validation-minutes element
specifies the amount of time, in minutes, that background validation will run. Changing
this value require a server restart."/>
+ <c:simple-property name="background-validation"
type="boolean" readOnly="false"
+ description="An element to specify that connections should
be validated on a background thread versus being validated prior to use. Changing this
value require a server restart."/>
+ <c:simple-property name="use-fast-fail"
type="boolean" readOnly="false"
+ description="Whether fail a connection allocation on the
first connection if it is invalid (true) or keep trying until the pool is exhausted of all
potential connections (false)"/>
+ <c:simple-property name="validate-on-match"
type="boolean" readOnly="true"
+ description="The validate-on-match element indicates
whether or not connection level validation should be done when a connection factory
attempts to match a managed connection for a given set. This is typically exclusive to the
use of background validation"/>
+ <c:simple-property name="spy" type="boolean"
readOnly="true" description="whatever spy or not the jdbc
connection"/>
</resource-configuration>
</service>
@@ -595,13 +629,73 @@
</server>
+ <server name="Threads"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+ >
+
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=threads"/>
+ </plugin-configuration>
+
+ <service name="ThreadFactory"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="thread-factory"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="name" required="true"
type="string" readOnly="true" description="The bean name of the
created thread factory."/>
+ <c:simple-property name="group-name" type="string"
readOnly="false"
+ description="Specifies the name of a the thread group to
create for this thread factory."/>
+ <c:simple-property name="thread-name-pattern"
type="string" readOnly="false"
+ description="The template used to create names for threads.
The following patterns may be used:
+ %% - emit a percent sign
+ %t - emit the per-factory thread sequence number
+ %g - emit the global thread sequence number
+ %f - emit the factory sequence number
+ %i - emit the thread ID."/>
+ <c:simple-property name="priority" type="integer"
readOnly="false"
+ description="May be used to specify the thread priority of
created threads."/>
+ <c:list-property name="properties" >
+ <c:simple-property name="properties" /> <!-- TODO
list of maps ? -->
+ </c:list-property>
+ </resource-configuration>
+ </service>
+
+ <service name="ThreadPool"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="bounded-queue-thread-pool|queueless-thread-pool|scheduled-thread-pool|unbounded-queue-thread-pool"/>
+ </plugin-configuration>
+ </service>
+
+
+
+
+ </server>
+
<service name="NetworkInterface"
discovery="SubsystemDiscovery"
class="BaseComponent"
description="A named network interface, along with required criteria
for determining the IP address to associate with that interface">
<runs-inside>
- <parent-resource-type name="Domain"
plugin="jboss-as-7"/>
+ <parent-resource-type name="HostController"
plugin="jboss-as-7"/>
<parent-resource-type name="Host"
plugin="jboss-as-7"/>
<parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
</runs-inside>
@@ -616,7 +710,7 @@
class="BaseComponent"
<runs-inside>
- <parent-resource-type name="Domain"
plugin="jboss-as-7"/>
+ <parent-resource-type name="HostController"
plugin="jboss-as-7"/>
<parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
</runs-inside>
commit 92e81c2b9607a0f58ca23d9695316cb6025b2a68
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Apr 18 17:55:59 2011 +0200
Allow for multiple types to be separated by a bar ( | ).
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index 18ba3ba..50dd55c 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -26,6 +26,8 @@ import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
import org.rhq.modules.plugins.jbossas7.json.ReadChildrenNames;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
@@ -62,119 +64,129 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
Configuration config = context.getDefaultPluginConfiguration();
- String cpath = config.getSimpleValue("path", null);
- if (cpath==null) {
+ String confPath = config.getSimpleValue("path", null);
+ if (confPath==null) {
log.error("Path plugin config is null for ResourceType [" +
context.getResourceType().getName() +"].");
return details;
}
+ List<String> subTypes = new ArrayList<String>();
+ if (confPath.contains("|")) {
+ subTypes.addAll(Arrays.asList(confPath.split("\\|")));
+ }
+ else
+ subTypes.add(confPath);
- boolean recursive = false;
- String parentPath = parentComponent.getPath();
+ for (String cpath : subTypes) {
- String path;
- String childType = null;
- if (!cpath.contains("=")) { // NO = -> no sub path, but a type
- recursive = true;
- childType = cpath;
- }
+ boolean recursive = false;
- if (parentPath==null || parentPath.isEmpty())
- path = "";
- else
- path = parentPath;
+ String parentPath = parentComponent.getPath();
+
+ String path;
+ String childType = null;
+ if (!cpath.contains("=")) { // NO = -> no sub path, but a type
+ recursive = true;
+ childType = cpath;
- if (cpath.contains("="))
- path += "," + cpath;
+ }
- System.out.println("total path: [" + path + "]");
+ if (parentPath==null || parentPath.isEmpty())
+ path = "";
+ else
+ path = parentPath;
+ if (cpath.contains("="))
+ path += "," + cpath;
- JsonNode json ;
- if (!recursive)
- json = connection.getLevelData(path,recursive, false);
- else {
- List<PROPERTY_VALUE> addr ;
- addr = parentComponent.pathToAddress(parentPath);
- json = connection.executeRaw(new ReadChildrenNames(addr, childType));
- }
- if (!ASConnection.isErrorReply(json)) {
- if (recursive) {
+ System.out.println("total path: [" + path + "]");
+
+
+ JsonNode json ;
+ if (!recursive)
+ json = connection.getLevelData(path,recursive, false);
+ else {
+ List<PROPERTY_VALUE> addr ;
+ addr = parentComponent.pathToAddress(parentPath);
+ json = connection.executeRaw(new ReadChildrenNames(addr, childType));
+ }
+ if (!ASConnection.isErrorReply(json)) {
+ if (recursive) {
- JsonNode subNode = json.findPath("result");
+ JsonNode subNode = json.findPath("result");
- if (subNode!=null && subNode.isContainerNode()){
+ if (subNode!=null && subNode.isContainerNode()){
- Iterator<JsonNode> iter = subNode.getElements();
- while (iter.hasNext()) {
+ Iterator<JsonNode> iter = subNode.getElements();
+ while (iter.hasNext()) {
- JsonNode node = iter.next();
- String val = node.getTextValue();
+ JsonNode node = iter.next();
+ String val = node.getTextValue();
- String newPath = cpath + "=" + val;
- Configuration config2 = context.getDefaultPluginConfiguration();
+ String newPath = cpath + "=" + val;
+ Configuration config2 =
context.getDefaultPluginConfiguration();
- String resKey;
+ String resKey;
- if (path==null||path.isEmpty())
- resKey = newPath;
- else
- resKey = path + "," +childType + "=" +
val;
+ if (path==null||path.isEmpty())
+ resKey = newPath;
+ else
+ resKey = path + "," +childType + "="
+ val;
- PropertySimple pathProp = new
PropertySimple("path",resKey);
- config2.put(pathProp);
+ PropertySimple pathProp = new
PropertySimple("path",resKey);
+ config2.put(pathProp);
- DiscoveredResourceDetails detail = new
DiscoveredResourceDetails(
- context.getResourceType(), // DataType
- resKey, // Key
- val, // Name
- null, // Version
- "TODO", // subsystem.description, // TODO
Description
- config2,
- null);
- details.add(detail);
+ DiscoveredResourceDetails detail = new
DiscoveredResourceDetails(
+ context.getResourceType(), // DataType
+ resKey, // Key
+ val, // Name
+ null, // Version
+ "TODO", // subsystem.description, // TODO
Description
+ config2,
+ null);
+ details.add(detail);
+ }
}
- }
- else {
+ else {
- if (subNode==null) {
- log.error("subNode was null for " + path + " and
type " + context.getResourceType().getName());
+ if (subNode==null) {
+ log.error("subNode was null for " + path + "
and type " + context.getResourceType().getName());
+ }
+ else if (!subNode.isNull())
+ log.info("subnode was no container");
}
- else if (!subNode.isNull())
- log.info("subnode was no container");
+
}
+ else {
- }
- else {
+ String resKey = path;
+ String name = resKey.substring(resKey.lastIndexOf("=") +
1);
+ Configuration config2 = context.getDefaultPluginConfiguration();
+ PropertySimple pathProp = new PropertySimple("path",path);
+ config2.put(pathProp);
- String resKey = path;
- String name = resKey.substring(resKey.lastIndexOf("=") + 1);
- Configuration config2 = context.getDefaultPluginConfiguration();
- PropertySimple pathProp = new PropertySimple("path",path);
- config2.put(pathProp);
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ context.getResourceType(), // DataType
+ path, // Key
+ name, // Name
+ null, // Version
+ path, // Description
+ config2,
+ null);
+ details.add(detail);
+ }
- DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- context.getResourceType(), // DataType
- path, // Key
- name, // Name
- null, // Version
- path, // Description
- config2,
- null);
- details.add(detail);
}
- return details;
}
-
- return Collections.emptySet();
+ return details;
}
}
commit 3496a92b6fc1765c530141c84062dc1e106f9b71
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Apr 18 17:21:49 2011 +0200
(Yet) small helper to create the properties for resource configurations by reading the
descriptions from the domain.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Properties.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Properties.java
new file mode 100644
index 0000000..0b8b38e
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Domain2Properties.java
@@ -0,0 +1,200 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import com.apple.java.Usage;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+
+/**
+ * Generate properties from a domain dump
+ * @author Heiko W. Rupp
+ */
+public class Domain2Properties {
+
+ public static void main(String[] args) throws Exception {
+
+ if (args.length<2) {
+ usage();
+ System.exit(1);
+ }
+
+ Domain2Properties dp = new Domain2Properties();
+ dp.run(args);
+
+
+ }
+
+ private void run(String[] args) {
+
+ String path = args[0];
+ String type = args[1];
+
+ ASConnection conn = new ASConnection("localhost",9990);
+
+ List<PROPERTY_VALUE> address = pathToAddress(path);
+ Operation op = new
Operation("read-resource-description",address,"operations",true);
+ op.addAdditionalProperty("recursive","true");
+ ComplexResult res = (ComplexResult) conn.execute(op,true);
+ if (!res.isSuccess()) {
+ System.err.println("Failure: " + res.getFailureDescription());
+ return;
+ }
+
+
+ Map<String,Object> resMap = res.getResult();
+ Map childMap = (Map) resMap.get("children");
+ Map <String,Object> typeMap = (Map<String, Object>)
childMap.get(type);
+ Map descriptionMap = (Map) typeMap.get("model-description");
+ Map starMap = (Map) descriptionMap.get("*");
+ Map<String,Object> attributesMap = (Map<String, Object>)
starMap.get("attributes");
+
+
+
+ for (Map.Entry<String,Object> entry : attributesMap.entrySet()) {
+
+ Map<String,Object> props = (Map<String, Object>)
entry.getValue();
+
+
+ Type ptype = getTypeFromProps(props);
+ String typeString;
+
+ switch (ptype) {
+ case INT:
+ typeString = "integer"; break;
+ case STRING:
+ typeString = "string"; break;
+ case BOOLEAN:
+ typeString = "boolean"; break;
+ case LONG:
+ typeString = "long"; break;
+ case BIG_DECIMAL:
+ typeString = "long"; break; // TODO bettter float or double?
+ case LIST:
+ typeString = "-list-";
+ break; // Handled below
+ default:
+ typeString = "- unknown -";
+ System.err.println("Unknown type " + ptype + " for "
+ entry.getKey());
+ }
+
+ if (ptype==Type.LIST) {
+
+ System.out.println("<c:list-property name=\"" +
entry.getKey() +"\" >");
+ System.out.println(" <c:simple-property name=\"" +
entry.getKey() + "\" />");
+ System.out.println("</c:list-property>");
+
+
+
+ continue;
+ }
+
+ StringBuilder sb = new StringBuilder("<c:simple-property
name=\"");
+ sb.append(entry.getKey()).append('"');
+
+ if ((Boolean) props.get("required")) {
+ sb.append(" required=\"true\"");
+ }
+
+ sb.append("
type=\"").append(typeString).append("\"");
+ sb.append(" readOnly=\"");
+ if (props.get("access-type").equals("read-only"))
+ sb.append("true");
+ else
+ sb.append("false");
+ sb.append('"');
+
+ String description = (String) props.get("description");
+ if (sb.length()+description.length() > 120)
+ sb.append("\n ");
+ sb.append("
description=\"").append(description).append('"');
+ sb.append("/>");
+
+ System.out.println(sb.toString());
+ }
+
+
+ }
+
+ private Type getTypeFromProps(Map<String, Object> props) {
+ Map<String,String> tMap = (Map<String, String>)
props.get("type");
+ String type = tMap.get("TYPE_MODEL_VALUE");
+ Type ret = Type.valueOf(type);
+
+ return ret;
+ }
+
+ /**
+ * Convert a path in the form key=value,key=value... to a List of properties.
+ * @param path Path to translate
+ * @return List of properties
+ */
+ public List<PROPERTY_VALUE> pathToAddress(String path) {
+ if (path==null || path.isEmpty())
+ return Collections.emptyList();
+
+ List<PROPERTY_VALUE> result = new ArrayList<PROPERTY_VALUE>();
+ String[] components = path.split(",");
+ for (String component : components) {
+ String tmp = component.trim();
+
+ if (tmp.contains("=")) {
+ // strip / from the start of the key if it happens to be there
+ if (tmp.startsWith("/"))
+ tmp = tmp.substring(1);
+
+ String[] pair = tmp.split("=");
+ PROPERTY_VALUE valuePair = new PROPERTY_VALUE(pair[0], pair[1]);
+ result.add(valuePair);
+ }
+ }
+
+ return result;
+ }
+
+
+
+ private static void usage() {
+ System.out.println("Domain2Properties path type");
+ System.out.println(" path is of kind 'key=value[,key=value]+");
+ }
+
+ public enum Type {
+ STRING,
+ INT,
+ BOOLEAN,
+ LONG,
+ BIG_DECIMAL,
+ OBJECT,
+ LIST
+
+ ;
+ }
+
+}
commit e42f046825018fb8c74b6e33c3be401acf47acb4
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Apr 18 12:54:56 2011 +0200
If we detect the DC, name it so.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 0de50b8..12d3ec6 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -133,10 +133,6 @@ public class ASConnection {
outcome = outcomeNode.getTextValue();
if (outcome.equals("failed")) {
JsonNode reasonNode = in.findValue("failure-description");
- if (reasonNode==null)
- reasonNode =
in.findValue("domain-failure-description");// TODO JBAS-9182
- if (reasonNode==null)
- reasonNode = in.findValue("host-failure-descriptions");
// TODO JBAS-9182
String reason = reasonNode.getTextValue();
// log.info(reason);
@@ -266,10 +262,6 @@ public class ASConnection {
if (jsonNode==null)
return "getFailureDescription: -input was null-";
JsonNode node = jsonNode.findValue("failure-description");
- if (node==null)
- node = jsonNode.findValue("domain-failure-description"); // TODO
JBAS-9182
- if (node==null)
- node = jsonNode.findValue("host-failure-descriptions"); // TODO
JBAS-9182
return node.getValueAsText();
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
index 7a648c9..63a4e45 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
@@ -48,8 +48,8 @@ public abstract class AbstractBaseDiscovery<T extends
ResourceComponent> impleme
// private final Log log = LogFactory.getLog(AbstractBaseDiscovery.class);
- protected void readHostXml(ProcessInfo processInfo) {
- String hostXmlFile = getHostXmlFileLocation(processInfo);
+ protected void readHostXml(ProcessInfo processInfo,boolean isDomainMode) {
+ String hostXmlFile = getHostXmlFileLocation(processInfo,isDomainMode);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
@@ -61,23 +61,6 @@ public abstract class AbstractBaseDiscovery<T extends
ResourceComponent> impleme
}
}
- /**
- * Get the location of the host definition file (host.xml in domain mode,
standalone.xml
- * in standalone mode.
- *
- * @param processInfo ProcessInfo structure containing the ENV variables
- * @return The path to the definition file.
- */
- private String getHostXmlFileLocation(ProcessInfo processInfo) {
-
- String home = getHomeDirFromCommandLine(processInfo.getCommandLine());
- StringBuilder builder = new StringBuilder(home);
- builder.append("/domain");
- builder.append("/configuration");
- builder.append("/host.xml");
- return builder.toString();
-
- }
String getHomeDirFromCommandLine(String[] commandLine) {
for (String line: commandLine) {
@@ -202,6 +185,32 @@ public abstract class AbstractBaseDiscovery<T extends
ResourceComponent> impleme
return new HostPort(false);
}
+ /**
+ * Get the location of the host definition file (host.xml in domain mode,
standalone.xml
+ * in standalone mode.
+ * @param processInfo ProcessInfo structure containing the ENV variables
+ * @param isDomain Are we looking for host.xml (=isDomain) or not
+ * @return The path to the definition file.
+ */
+ protected String getHostXmlFileLocation(ProcessInfo processInfo, boolean isDomain) {
+
+ String home = processInfo.getEnvironmentVariable("jboss.home.dir");
+ if (home==null)
+ home = getHomeDirFromCommandLine(processInfo.getCommandLine());
+ StringBuilder builder = new StringBuilder(home);
+ if (isDomain)
+ builder.append("/domain");
+ else
+ builder.append("/standalone");
+ builder.append("/configuration");
+ if (isDomain)
+ builder.append("/host.xml");
+ else
+ builder.append("/standalone.xml");
+ return builder.toString();
+
+ }
+
protected static class HostPort {
String host;
int port;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 3b77360..f03f62c 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -53,6 +53,8 @@ import
org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.CompositeOperation;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
@@ -71,7 +73,7 @@ import java.util.Map;
import java.util.Set;
public class BaseComponent implements ResourceComponent, MeasurementFacet,
ConfigurationFacet, DeleteResourceFacet,
- CreateChildResourceFacet
+ CreateChildResourceFacet, OperationFacet
{
final Log log = LogFactory.getLog(this.getClass());
@@ -490,4 +492,10 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
return report;
}
+
+ @Override
+ public OperationResult invokeOperation(String name,
+ Configuration parameters) throws
InterruptedException, Exception {
+ return null; // TODO: Customise this generated block
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
index 9fa8396..8d9ff0f 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
@@ -49,7 +49,7 @@ import org.rhq.plugins.jmx.JMXDiscoveryComponent;
/**
* Discovery class
*/
-public class BaseProcessDiscovery implements ResourceDiscoveryComponent
+public class BaseProcessDiscovery extends AbstractBaseDiscovery implements
ResourceDiscoveryComponent
{
@@ -80,8 +80,19 @@ public class BaseProcessDiscovery implements
ResourceDiscoveryComponent
serverNameFull = "ProcessController";
serverName = "ProcessController";
} else if (psName.equals("HostController")) {
- serverName = "HostController";
- serverNameFull = "HostController";
+ readHostXml(psr.getProcessInfo(),true);
+ HostPort hp = getDomainControllerFromHostXml();
+ if (hp.isLocal) {
+ serverName = "DomainController";
+ serverNameFull = "DomainController";
+ }
+ else {
+ serverName = "HostController";
+ serverNameFull = "HostController";
+ }
+ config.put(new
PropertySimple("homedir",getHomeDirFromCommandLine(psr.getProcessInfo().getCommandLine())));
+ // TODO add the start script
+
} else {
serverNameFull = getBaseDirFromCommandLine(commandLine);
if (serverNameFull==null || serverNameFull.isEmpty()) {
@@ -127,7 +138,7 @@ public class BaseProcessDiscovery implements
ResourceDiscoveryComponent
serverNameFull, // key TODO distinguish per domain?
serverName, // Name
null, // TODO real version ?
- "TODO", // Description
+ discoveryContext.getResourceType().getDescription(), // Description
config,
psr.getProcessInfo()
);
@@ -160,30 +171,6 @@ public class BaseProcessDiscovery implements
ResourceDiscoveryComponent
return hostName;
}
- /**
- * Get the location of the host definition file (host.xml in domain mode,
standalone.xml
- * in standalone mode.
- * @param processInfo ProcessInfo structure containing the ENV variables
- * @param isDomain Are we looking for host.xml (=isDomain) or not
- * @return The path to the definition file.
- */
- private String getHostXmlFileLocation(ProcessInfo processInfo, boolean isDomain) {
-
- String home = processInfo.getEnvironmentVariable("jboss.home.dir");
- StringBuilder builder = new StringBuilder(home);
- if (isDomain)
- builder.append("/domain");
- else
- builder.append("/standalone");
- builder.append("/configuration");
- if (isDomain)
- builder.append("/host.xml");
- else
- builder.append("/standalone.xml");
- return builder.toString();
-
- }
-
String getBaseDirFromCommandLine(String[] commandLine) {
for (String line: commandLine) {
if (line.startsWith(DJBOSS_SERVER_BASE_DIR))
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
index 667b3ee..a8b1058 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
@@ -61,7 +61,7 @@ public class DomainDiscovery extends
AbstractBaseDiscovery<BaseComponent> {
// Now we have the host controller, lets get the host.xml file
// and obtain the domain controller info from there
ProcessInfo processInfo = psr.getProcessInfo();
- readHostXml(processInfo);
+ readHostXml(processInfo,true);
HostPort dcHp = getDomainControllerFromHostXml();
if (!dcHp.isLocal) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
index 7f39a9f..3f57a06 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
@@ -70,7 +70,7 @@ public class ManagedASDiscovery extends AbstractBaseDiscovery
// Now we have the host controller, lets get the host.xml file
// and obtain the servers from there.
ProcessInfo processInfo = psr.getProcessInfo();
- readHostXml(processInfo);
+ readHostXml(processInfo,true);
String hostName = findHostName();
HostPort managementHostPort = getManagementPortFromHostXml();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
index a87a6f8..ccc967b 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
@@ -37,10 +37,6 @@ public class Result {
private Operation compensatingOperation;
@JsonProperty("failure-description")
private List<Map<String, String>> failureDescription;
- @JsonProperty("host-failure-description") // TODO JBAS-9182
- private List<Map<String, String>> hostFailureDescription;
- @JsonProperty("domain-failure-description") // TODO JBAS-9182
- private List<Map<String, String>> domainFailureDescription;
@JsonIgnore
private boolean success = false;
@@ -86,19 +82,4 @@ public class Result {
this.failureDescription = failureDescription;
}
- public List<Map<String, String>> getHostFailureDescription() {
- return hostFailureDescription;
- }
-
- public void setHostFailureDescription(List<Map<String, String>>
hostFailureDescription) {
- this.hostFailureDescription = hostFailureDescription;
- }
-
- public List<Map<String, String>> getDomainFailureDescription() {
- return domainFailureDescription;
- }
-
- public void setDomainFailureDescription(List<Map<String, String>>
domainFailureDescription) {
- this.domainFailureDescription = domainFailureDescription;
- }
}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index b6600ab..80df496 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -83,7 +83,7 @@
<server name="HostController"
discovery="BaseProcessDiscovery"
class="BaseComponent"
- description="Domain controller delegate for this host"
+ description="Domain controller (delegate) for this host"
<plugin-configuration>
@@ -96,8 +96,7 @@
<process-scan name="HostController"
query="process|basename|match=^java.*,arg|org.jboss.as.host-controller|match=.*"/>
- <operation name="dummyOperation">
- <!-- TODO supply parameters and return values -->
+ <operation name="shutdown" description="Shut this
Host-/Domaincontroller down with all managed servers.">
</operation>
commit d59ccb6efc2e5edc240ae388c036a0087b4a5e9c
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Apr 15 15:16:37 2011 +0200
Add domain level deployments
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 8d47d9d..3b77360 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -34,20 +34,27 @@ import
org.rhq.core.domain.configuration.definition.PropertyDefinitionList;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionMap;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
import org.rhq.core.domain.configuration.definition.PropertySimpleType;
+import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementDataNumeric;
import org.rhq.core.domain.measurement.MeasurementDataTrait;
import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
+import org.rhq.core.domain.resource.CreateResourceStatus;
import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
+import org.rhq.core.pluginapi.content.ContentContext;
+import org.rhq.core.pluginapi.content.ContentServices;
+import org.rhq.core.pluginapi.inventory.CreateChildResourceFacet;
+import org.rhq.core.pluginapi.inventory.CreateResourceReport;
import org.rhq.core.pluginapi.inventory.DeleteResourceFacet;
import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
+import org.rhq.modules.plugins.jbossas7.json.CompositeOperation;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
@@ -55,6 +62,7 @@ import org.rhq.modules.plugins.jbossas7.json.ReadAttribute;
import org.rhq.modules.plugins.jbossas7.json.ReadResource;
import org.rhq.modules.plugins.jbossas7.json.Result;
+import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
@@ -62,7 +70,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-public class BaseComponent implements ResourceComponent, MeasurementFacet,
ConfigurationFacet, DeleteResourceFacet
+public class BaseComponent implements ResourceComponent, MeasurementFacet,
ConfigurationFacet, DeleteResourceFacet,
+ CreateChildResourceFacet
{
final Log log = LogFactory.getLog(this.getClass());
@@ -178,7 +187,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
ObjectMapper mapper = new ObjectMapper();
Set<Map.Entry<String, PropertyDefinition>> entrySet =
configDef.getPropertyDefinitions().entrySet();
- for (Map.Entry<String,PropertyDefinition> propDefEntry: entrySet) { // TODO
all properties
+ for (Map.Entry<String,PropertyDefinition> propDefEntry: entrySet) {
PropertyDefinition propDef = propDefEntry.getValue();
JsonNode sub = json.findValue(propDef.getName());
if (propDef instanceof PropertyDefinitionSimple) {
@@ -187,7 +196,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
if (sub!=null)
propertySimple = new
PropertySimple(propDef.getName(),sub.getValueAsText());
else {
- propertySimple = new PropertySimple(propDef.getName(),null); // TODO
store it at all when it is null?
+ propertySimple = new PropertySimple(propDef.getName(),"- null
-"); // TODO store it at all when it is null?
}
ret.put(propertySimple);
} else if (propDef instanceof PropertyDefinitionList) {
@@ -415,4 +424,70 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
if (!res.isSuccess())
throw new IllegalArgumentException("Delete for [" + path + "]
failed: " + res.getFailureDescription());
}
+
+
+ @Override
+ public CreateResourceReport createResource(CreateResourceReport report) {
+
+
+ ResourcePackageDetails details = report.getPackageDetails();
+
+ ContentContext cctx = context.getContentContext();
+ ContentServices contentServices = cctx.getContentServices();
+ String resourceTypeName = report.getResourceType().getName();
+
+ ASUploadConnection uploadConnection = new ASUploadConnection(host,port);
+ OutputStream out = uploadConnection.getOutputStream(details.getFileName());
+ contentServices.downloadPackageBitsForChildResource(cctx, resourceTypeName,
details.getKey(), out);
+
+ JsonNode uploadResult = uploadConnection.finishUpload();
+ System.out.println(uploadResult);
+ if (ASConnection.isErrorReply(uploadResult)) {
+ report.setStatus(CreateResourceStatus.FAILURE);
+ report.setErrorMessage(ASConnection.getFailureDescription(uploadResult));
+
+ return report;
+ }
+
+ String fileName = details.getFileName();
+ String tmpName = fileName; // TODO figure out the tmp-name biz with the AS guys
+
+ JsonNode resultNode = uploadResult.get("result");
+ String hash = resultNode.get("BYTES_VALUE").getTextValue();
+ ASConnection connection = getASConnection();
+
+ Operation step1 = new Operation("add","deployment",tmpName);
+ step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", hash));
+ step1.addAdditionalProperty("name", tmpName);
+ step1.addAdditionalProperty("runtime-name", fileName);
+
+ CompositeOperation cop = new CompositeOperation();
+ cop.addStep(step1);
+
+ /*
+ * We need to check here if this is an upload to /deployment only
+ * or if this should be deployed to a server group too
+ */
+ if (context.getResourceKey().contains("server-group=")) {
+
+ List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ serverGroupAddress.addAll(pathToAddress(context.getResourceKey()));
+ serverGroupAddress.add(new PROPERTY_VALUE("deployment", tmpName));
+ Operation step2 = new
Operation("add",serverGroupAddress,"enabled","true");
+
+ cop.addStep(step2);
+ }
+
+ JsonNode result = connection.executeRaw(cop);
+ if (ASConnection.isErrorReply(result)) {
+ report.setErrorMessage(ASConnection.getFailureDescription(resultNode));
+ report.setStatus(CreateResourceStatus.FAILURE);
+ }
+ else {
+ report.setStatus(CreateResourceStatus.SUCCESS);
+ }
+
+ return report;
+
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
index c2d1994..8c46247 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
@@ -157,64 +157,6 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
return null; // TODO: Customise this generated block
}
- @Override
- public CreateResourceReport createResource(CreateResourceReport report) {
-
-
- ResourcePackageDetails details = report.getPackageDetails();
-
- ContentContext cctx = context.getContentContext();
- ContentServices contentServices = cctx.getContentServices();
- String resourceTypeName = report.getResourceType().getName();
-
- ASUploadConnection uploadConnection = new ASUploadConnection(host,port);
- OutputStream out = uploadConnection.getOutputStream(details.getFileName());
- contentServices.downloadPackageBitsForChildResource(cctx, resourceTypeName,
details.getKey(), out);
-
- JsonNode uploadResult = uploadConnection.finishUpload();
- System.out.println(uploadResult);
- if (ASConnection.isErrorReply(uploadResult)) {
- report.setStatus(CreateResourceStatus.FAILURE);
- report.setErrorMessage(ASConnection.getFailureDescription(uploadResult));
-
- return report;
- }
-
- String fileName = details.getFileName();
- String tmpName = fileName; // TODO figure out the tmp-name biz with the AS guys
-
- JsonNode resultNode = uploadResult.get("result");
- String hash = resultNode.get("BYTES_VALUE").getTextValue();
- ASConnection connection = getASConnection();
-
- Operation step1 = new Operation("add","deployment",tmpName);
- step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", hash));
- step1.addAdditionalProperty("name", tmpName);
- step1.addAdditionalProperty("runtime-name", fileName);
-
- List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
- serverGroupAddress.addAll(pathToAddress(context.getResourceKey()));
- serverGroupAddress.add(new PROPERTY_VALUE("deployment", tmpName));
- Operation step2 = new
Operation("add",serverGroupAddress,"enabled","true");
-
- CompositeOperation cop = new CompositeOperation();
- cop.addStep(step1);
- cop.addStep(step2);
-
- JsonNode result = connection.executeRaw(cop);
- if (ASConnection.isErrorReply(result)) {
- report.setErrorMessage(ASConnection.getFailureDescription(resultNode));
- report.setStatus(CreateResourceStatus.FAILURE);
- }
- else {
- report.setStatus(CreateResourceStatus.SUCCESS);
- }
-
- return report;
-
- }
-
-
private String serverGroupFromKey() {
String key1 = context.getResourceKey();
return key1.substring(key1.lastIndexOf("/")+1);
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index a699550..b6600ab 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -202,6 +202,7 @@
<configuration>
<c:group name="deployment"
displayName="Deployment Options">
<c:simple-property name="runtimeName"
required="true"/>
+ <c:simple-property name="alreadyUploaded"
type="boolean" description="Was this already uploaded to the Domain?
TODO"/>
</c:group>
</configuration>
</content>
@@ -237,6 +238,24 @@
</operation>
</server>
+ <service name="DomainDeployment"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="both"
+ creationDataType="content">
+ <plugin-configuration>
+ <c:simple-property name="path"
default="deployment" readOnly="true"/>
+ </plugin-configuration>
+
+ <content name="file" category="deployable"
isCreationType="true" description="Deployments on this domain">
+ </content>
+
+ <resource-configuration>
+ <c:simple-property name="name"
readOnly="true"/>
+ <c:simple-property name="runtime-name"
readOnly="true"/>
+ <c:simple-property name="hash"
readOnly="true"/>
+ </resource-configuration>
+ </service>
</server>
<server name="JBossAS7-Standalone"
commit 187e9130ad1521cd4d20cb93d08d171024733da2
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Apr 15 12:11:24 2011 +0200
Support removing deployments from server groups.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 3403b29..8d47d9d 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -47,6 +47,7 @@ import
org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
@@ -407,8 +408,11 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
@Override
public void deleteResource() throws Exception {
- // TODO: Customise this generated block
System.out.println("delete resource: " + path);
+ Operation op = new Operation("remove",pathToAddress(path));
+ ComplexResult res = (ComplexResult) connection.execute(op, true);
+ if (!res.isSuccess())
+ throw new IllegalArgumentException("Delete for [" + path + "]
failed: " + res.getFailureDescription());
}
}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 13560e7..a699550 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -186,14 +186,13 @@
<resource-configuration>
<c:simple-property name="profile" />
<c:simple-property name="socket-binding-group"/>
- <c:simple-property name="jvm"/>
- <c:simple-property name="deployment"
required="false"/> <!-- TODO change structure. Or put below as resource?
-->
+ <c:simple-property name="jvm"
required="false"/>
</resource-configuration>
<service name="Deployment"
class="BaseComponent"
discovery="SubsystemDiscovery"
- createDeletePolicy="create-only"
+ createDeletePolicy="both"
creationDataType="content">
<plugin-configuration>
<c:simple-property name="path"
default="deployment" readOnly="true"/>
commit c3eed4cad8cf3401ef726fc73a75d51acf51d6c3
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Apr 15 10:57:23 2011 +0200
Creation of deployments, managed servers (2nd way)
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 3a978b4..0de50b8 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -174,12 +174,14 @@ public class ASConnection {
out.flush();
out.close();
- if (conn.getResponseCode()==HttpURLConnection.HTTP_OK) {
+ int responseCode = conn.getResponseCode();
+ if (responseCode ==HttpURLConnection.HTTP_OK) {
inputStream = conn.getInputStream();
} else {
inputStream = conn.getErrorStream();
}
+ if (inputStream!=null) {
br = new BufferedReader(new InputStreamReader(
inputStream));
@@ -200,6 +202,10 @@ public class ASConnection {
}
System.out.println("==> " + outcome);
return operationResult;
+ }
+ else {
+ System.err.println("IS was null and code was " +
responseCode);
+ }
} catch (IOException e) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 6109c9f..3403b29 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -42,6 +42,7 @@ import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
+import org.rhq.core.pluginapi.inventory.DeleteResourceFacet;
import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
@@ -60,7 +61,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-public class BaseComponent implements ResourceComponent, MeasurementFacet,
ConfigurationFacet
+public class BaseComponent implements ResourceComponent, MeasurementFacet,
ConfigurationFacet, DeleteResourceFacet
{
final Log log = LogFactory.getLog(this.getClass());
@@ -404,4 +405,10 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
return result;
}
+ @Override
+ public void deleteResource() throws Exception {
+ // TODO: Customise this generated block
+
+ System.out.println("delete resource: " + path);
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
index 8597d8f..9fa8396 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
@@ -105,7 +105,7 @@ public class BaseProcessDiscovery implements
ResourceDiscoveryComponent
}
String logFile = getLogFileFromCommandLine(commandLine);
initLogEventSourcesConfigProp(logFile,config);
- String javaClazz = psr.getProcessInfo().getName();
+// String javaClazz = psr.getProcessInfo().getName();
/*
@@ -115,11 +115,11 @@ public class BaseProcessDiscovery implements
ResourceDiscoveryComponent
*/
// config.put(new
PropertySimple(JMXDiscoveryComponent.COMMAND_LINE_CONFIG_PROPERTY,
// javaClazz));
- config.put(new PropertySimple(JMXDiscoveryComponent.CONNECTION_TYPE,
- LocalVMTypeDescriptor.class.getName()));
-
- // TODO vmid will change when the detected server is bounced - how do we
follow this?
- config.put(new
PropertySimple(JMXDiscoveryComponent.VMID_CONFIG_PROPERTY,psr.getProcessInfo().getPid()));
+// config.put(new PropertySimple(JMXDiscoveryComponent.CONNECTION_TYPE,
+// LocalVMTypeDescriptor.class.getName()));
+//
+// // TODO vmid will change when the detected server is bounced - how do
we follow this?
+// config.put(new
PropertySimple(JMXDiscoveryComponent.VMID_CONFIG_PROPERTY,psr.getProcessInfo().getPid()));
DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
index 05f79d8..1d73822 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
@@ -125,6 +125,26 @@ public class DomainComponent extends BaseComponent implements
OperationFacet{
Map<String,Object> props = new HashMap<String, Object>();
props.put("queue-address",queueName);
operation = new Operation(op,address);
+ } else if (what.equals("managed-server")) {
+ String chost = parameters.getSimpleValue("hostname","");
+ String serverName =
parameters.getSimpleValue("servername","");
+ String serverGroup =
parameters.getSimpleValue("server-group","");
+ String socketBindings =
parameters.getSimpleValue("socket-bindings","");
+ String portS =
parameters.getSimpleValue("port-offset","0");
+ int port = Integer.parseInt(portS);
+ String autostartS =
parameters.getSimpleValue("auto-start","false");
+ boolean autoStart = Boolean.getBoolean(autostartS);
+
+ address.add(new PROPERTY_VALUE("host", chost));
+ address.add(new PROPERTY_VALUE("server-config",serverName));
+ Map<String,Object> props = new HashMap<String, Object>();
+ props.put("name",serverName);
+ props.put("group",serverGroup);
+ props.put("socket-binding-group",socketBindings);
+ props.put("socket-binding-port-offset",port);
+ props.put("auto-start",autoStart);
+
+ operation = new Operation(op,address,props);
}
OperationResult operationResult = new OperationResult();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
index 8bafbb4..c2d1994 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
@@ -91,7 +91,7 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
step1.addAdditionalProperty("name", fileName);
List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
- serverGroupAddress.add(new
PROPERTY_VALUE("server-group",serverGroupFromKey()));
+ serverGroupAddress.addAll(pathToAddress(context.getResourceKey()));
serverGroupAddress.add(new PROPERTY_VALUE("deployment",
fileName));
Operation step2 = new
Operation("add",serverGroupAddress,"enabled","true");
@@ -180,22 +180,21 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
return report;
}
- String fileName = report.getUserSpecifiedResourceName();
+ String fileName = details.getFileName();
+ String tmpName = fileName; // TODO figure out the tmp-name biz with the AS guys
JsonNode resultNode = uploadResult.get("result");
String hash = resultNode.get("BYTES_VALUE").getTextValue();
ASConnection connection = getASConnection();
- List<PROPERTY_VALUE> deploymentsAddress = new
ArrayList<PROPERTY_VALUE>(1);
- deploymentsAddress.add(new PROPERTY_VALUE("deployment", fileName));
- Operation step1 = new Operation("add",deploymentsAddress);
+ Operation step1 = new Operation("add","deployment",tmpName);
step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", hash));
- step1.addAdditionalProperty("name", fileName); // TODO set a random
name here - or wait on AS to "fix" this
+ step1.addAdditionalProperty("name", tmpName);
step1.addAdditionalProperty("runtime-name", fileName);
List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
- serverGroupAddress.add(new
PROPERTY_VALUE("server-group",serverGroupFromKey()));
- serverGroupAddress.add(new PROPERTY_VALUE("deployment", fileName));
+ serverGroupAddress.addAll(pathToAddress(context.getResourceKey()));
+ serverGroupAddress.add(new PROPERTY_VALUE("deployment", tmpName));
Operation step2 = new
Operation("add",serverGroupAddress,"enabled","true");
CompositeOperation cop = new CompositeOperation();
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index f2c9a5e..13560e7 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -134,6 +134,30 @@
<c:simple-property name="name" description="Name of
Group to add"/>
</parameters>
</operation>
+ <operation name="managed-server:add" displayName="Add managed
server" description="Add a new managed server">
+ <parameters>
+ <c:simple-property name="servername" displayName="Name
of the new server" required="true"/>
+ <c:simple-property name="hostname" displayName="Name of
the host to put the server on" required="true"/>
+ <c:simple-property name="server-group"
displayName="Server group to add to" required="true"/>
+ <c:simple-property name="socket-bindings"
displayName="Socket bindings to base upon" default="standard-sockets"
description="Socket bindings to base upon"/>
+ <c:simple-property name="port-offset" displayName="Port
offset" default="0" type="integer" />
+ <c:simple-property name="auto-start"
displayName="Autostart" default="false" type="boolean"
/>
+ </parameters>
+ <results>
+ <c:simple-property name="result" description="Outcome
of the create server operation"/>
+ </results>
+ </operation>
+ <operation name="managed-server:remove" displayName="Remove
managed server" description="Remove a managed server">
+ <parameters>
+ <c:simple-property name="servername" displayName="Name
of the server to remove" required="true"/>
+ <c:simple-property name="hostname" displayName="Name of
the host where the server is on" required="true"/>
+ </parameters>
+ <results>
+ <c:simple-property name="result" description="Outcome
of the remove server operation"/>
+ </results>
+
+ </operation>
+
<server name="Profile"
description="One profile in a domain"
@@ -166,12 +190,16 @@
<c:simple-property name="deployment"
required="false"/> <!-- TODO change structure. Or put below as resource?
-->
</resource-configuration>
- <service name="Deployment" class="BaseComponent"
discovery="SubsystemDiscovery" createDeletePolicy="create-only"
creationDataType="content">
+ <service name="Deployment"
+ class="BaseComponent"
+ discovery="SubsystemDiscovery"
+ createDeletePolicy="create-only"
+ creationDataType="content">
<plugin-configuration>
<c:simple-property name="path"
default="deployment" readOnly="true"/>
</plugin-configuration>
- <content name="deployment" category="deployable"
isCreationType="true" description="Deployments on this domain">
+ <content name="file" category="deployable"
isCreationType="true" description="Deployments on this domain">
<configuration>
<c:group name="deployment"
displayName="Deployment Options">
<c:simple-property name="runtimeName"
required="true"/>
@@ -208,13 +236,6 @@
<c:simple-property name="result"
description="Outcome of the delete server operation"/>
</results>
</operation>
-
-<!--
- <resource-configuration>
- <c:list-property name="server-config" />
- </resource-configuration>
--->
-
</server>
</server>
commit bdf889e91b51f59f5f17346bb6e78e86f4aebbaf
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Apr 14 16:38:34 2011 +0200
SocketBindingGroups and NetworkInterfaces are now detected via SubsystemDiscovery.
Deprecate getLevelData()
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 54c734d..3a978b4 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -63,6 +63,7 @@ public class ASConnection {
}
+ @Deprecated
JsonNode getLevelData(@Nullable String base, boolean recursive, boolean
includeMetrics) throws Exception{
String ops = null;
if (recursive)
@@ -72,24 +73,16 @@ public class ASConnection {
return getLevelData(base,ops);
}
- /**
- * Return the default data for base
- * @param base
- * @return
- * @throws Exception
- */
- JsonNode getLevelData(@Nullable String base) throws Exception {
- return
getLevelData(base,"operation=resource-description&recursive&include-runtime=true");
- }
/**
- * Return the JSON-Ojbect for a certain path.
+ * Return the JSON-Object for a certain path.
*
* @param base Path to the object/subsystem. Can be null/"" for the base
objects
* @param ops OperationDescription to run on the api can be null
* @return A JSONObject encoding the level plus sub levels provided
* @throws Exception If anything goes wrong
*/
+ @Deprecated
JsonNode getLevelData(@Nullable String base, @Nullable String ops) throws Exception
{
URL url2;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 8ed6c96..6109c9f 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -169,6 +169,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
List<PROPERTY_VALUE> address = pathToAddress(path);
Operation op = new ReadResource(address); // TOTO set recursive flag?
+ op.addAdditionalProperty("recursive","true");
JsonNode json = connection.executeRaw(op);
Configuration ret = new Configuration();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/InterfaceDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/InterfaceDiscovery.java
deleted file mode 100644
index 1fc1e9b..0000000
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/InterfaceDiscovery.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-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.modules.plugins.jbossas7;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codehaus.jackson.JsonNode;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.type.TypeReference;
-
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
-import org.rhq.modules.plugins.jbossas7.json.Attribute;
-import org.rhq.modules.plugins.jbossas7.json.Domain;
-import org.rhq.modules.plugins.jbossas7.json.NetworkInterface;
-
-/**
- * Discover subsystems
- *
- * @author Heiko W. Rupp
- */
-@SuppressWarnings("unused")
-public class InterfaceDiscovery implements
ResourceDiscoveryComponent<BaseComponent> {
-
- private final Log log = LogFactory.getLog(this.getClass());
-
- public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent> context)
- throws Exception {
-
- Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>(1);
-
- ObjectMapper mapper = new ObjectMapper();
-
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
- mapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING,true);
-
- BaseComponent parentComponent = context.getParentResourceComponent();
- ASConnection connection = parentComponent.getASConnection();
-
-
-
- JsonNode json = connection.getLevelData(null, null);
- if (!ASConnection.isErrorReply(json)) {
- Domain domain = mapper.readValue(json, new TypeReference<Domain>()
{});
-
- for (Map.Entry<String,String> entry: domain.interfaces.entrySet()) {
-
- String key = entry.getKey();
- String path = "/interface/" + key;
- JsonNode subJson = connection.getLevelData(path);
-
- NetworkInterface networkInterface = mapper.readValue(subJson, new
TypeReference<NetworkInterface>() {});
- networkInterface.name= key;
- for (Map.Entry<String,Attribute> nentry :
networkInterface.attributes.entrySet()) {
- nentry.getValue().name = nentry.getKey();
-
- String resKey = context.getParentResourceContext().getResourceKey() +
"/" + key;
- String name = resKey.substring(resKey.lastIndexOf("/") +
1);
-
- Configuration config = context.getDefaultPluginConfiguration();
-
- PropertySimple propertySimple = new
PropertySimple("path",path);
- config.put(propertySimple);
-
- DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- context.getResourceType(), // DataType
- path, // Key
- name, // Name
- null, // Version
- networkInterface.description, // Description
- config,
- null);
- details.add(detail);
- }
- }
-
- return details;
- }
-
- return Collections.emptySet();
- }
-
-}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingGroupDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingGroupDiscovery.java
deleted file mode 100644
index 89472b8..0000000
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingGroupDiscovery.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-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.modules.plugins.jbossas7;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codehaus.jackson.JsonNode;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.type.TypeReference;
-
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
-import org.rhq.modules.plugins.jbossas7.json.Attribute;
-import org.rhq.modules.plugins.jbossas7.json.Domain;
-import org.rhq.modules.plugins.jbossas7.json.SocketBindingGroup;
-
-/**
- * Discover subsystems
- *
- * @author Heiko W. Rupp
- */
-@SuppressWarnings("unused")
-public class SocketBindingGroupDiscovery implements
ResourceDiscoveryComponent<BaseComponent> {
-
- private final Log log = LogFactory.getLog(this.getClass());
-
- public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent> context)
- throws Exception {
-
- Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>(1);
-
- ObjectMapper mapper = new ObjectMapper();
-
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
- mapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING,true);
-
- BaseComponent parentComponent = context.getParentResourceComponent();
- ASConnection connection = parentComponent.getASConnection();
-
-
-
- JsonNode json = connection.getLevelData(null, null);
- if (!ASConnection.isErrorReply(json)) {
- Domain domain = mapper.readValue(json, new TypeReference<Domain>()
{});
-
- for (Map.Entry<String,String> entry:
domain.socketBindingGroup.entrySet()) {
-
- String key = entry.getKey();
- String path = "/socket-binding-group/" + key;
- JsonNode subJson = connection.getLevelData(path);
-
- SocketBindingGroup bindingGroup = mapper.readValue(subJson, new
TypeReference<SocketBindingGroup>() {});
- bindingGroup.name= key;
-
- String resKey = context.getParentResourceContext().getResourceKey() +
"/" + key;
- String name = resKey.substring(resKey.lastIndexOf("/") + 1);
-
- Configuration config = context.getDefaultPluginConfiguration();
-
- PropertySimple propertySimple = new
PropertySimple("path",path);
- config.put(propertySimple);
-
- DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- context.getResourceType(), // DataType
- path, // Key
- name, // Name
- null, // Version
- "SocketBinding Group", // Description
- config,
- null);
- details.add(detail);
- }
-
- return details;
- }
-
- return Collections.emptySet();
- }
-
-}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
index a7abfe6..d5802a3 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
@@ -70,6 +70,13 @@ public class Operation {
}
+ public Operation(String operation, String addressKey, String addressValue) {
+ this.operation = operation;
+ List<PROPERTY_VALUE> address = new ArrayList<PROPERTY_VALUE>(1);
+ address.add(new PROPERTY_VALUE(addressKey, addressValue));
+ this.address = address;
+ }
+
public Operation() {
// needed for Jackson
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadResource.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadResource.java
index c2eab45..bf1072c 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadResource.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadResource.java
@@ -26,7 +26,13 @@ import java.util.List;
*/
public class ReadResource extends Operation {
+ private static final String READ_RESOURCE = "read-resource";
+
public ReadResource(List<PROPERTY_VALUE> address) {
- super("read-resource", address);
+ super(READ_RESOURCE, address);
+ }
+
+ public ReadResource(String resourceType,String typeValue) {
+ super(READ_RESOURCE,resourceType,typeValue);
}
}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index e75507a..f2c9a5e 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -558,7 +558,7 @@
</server>
<service name="NetworkInterface"
- discovery="InterfaceDiscovery"
+ discovery="SubsystemDiscovery"
class="BaseComponent"
description="A named network interface, along with required criteria
for determining the IP address to associate with that interface">
@@ -574,7 +574,7 @@
</service>
<service name="SocketBindingGroup"
- discovery="SocketBindingGroupDiscovery"
+ discovery="SubsystemDiscovery"
class="BaseComponent"
<runs-inside>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
index 34d722c..2ca9f91 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
@@ -180,6 +180,23 @@ public class OperationJsonTest {
assert aliases.get(0).equals("example.com");
}
+ public void arrayResult1() throws Exception {
+
+ String resultString =
"{\"outcome\":\"success\",\"result\":[\"standard-sockets\",\"messaging-sockets\"],\"compensating-operation\":null}";
+
+ ObjectMapper mapper = new ObjectMapper();
+ Result result = mapper.readValue(resultString,Result.class);
+
+ assert result != null;
+ assert result.getOutcome().equals("success");
+ assert result.isSuccess();
+ List<String> stringList = (List<String>) result.getResult();
+ assert stringList.size()==2;
+ assert stringList.get(0).equals("standard-sockets");
+ assert stringList.get(1).equals("messaging-sockets");
+
+ }
+
public void compensatingOp() throws Exception {
String resultString = "{\"outcome\" : \"success\",
\"result\" : null, \"compensating-operation\" :
{\"operation\" : \"remove\", \"address\" :
[{\"deployment\" : \"test.war\"}]}}";
commit adcd6872d41e2c96a307afbc53590c8165b8474a
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Apr 14 11:36:34 2011 +0200
Some cleanup and changes in ASConnection
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index d58f0c9..54c734d 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -45,16 +45,12 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
public class ASConnection {
private final Log log = LogFactory.getLog(ASConnection.class);
- private int port;
- private String host;
URL url;
String urlString;
private StringBuilder builder;
private ObjectMapper mapper;
public ASConnection(String host, int port) {
- this.host = host;
- this.port = port;
try {
url = new URL("http",host,port,"/domain-api");
@@ -167,7 +163,7 @@ public class ASConnection {
* @return JsonNode that describes the result
* @param operation an Operation that should be run on the domain controller
*/
- public JsonNode execute(Operation operation) {
+ public JsonNode executeRaw(Operation operation) {
InputStream inputStream = null;
BufferedReader br=null;
@@ -187,30 +183,18 @@ public class ASConnection {
if (conn.getResponseCode()==HttpURLConnection.HTTP_OK) {
inputStream = conn.getInputStream();
-
- br = new BufferedReader(new InputStreamReader(
- inputStream));
- String line;
- builder = new StringBuilder();
- while ((line = br.readLine()) != null) {
- builder.append(line);
- }
- br.close();
+ } else {
+ inputStream = conn.getErrorStream();
}
- else {
- InputStream errorStream = conn.getErrorStream();
- if (errorStream!=null) {
- br = new BufferedReader(new InputStreamReader(errorStream));
- String line;
- builder = new StringBuilder();
- while ((line = br.readLine()) != null) {
- builder.append(line);
- }
- br.close();
- }
+
+
+ br = new BufferedReader(new InputStreamReader(
+ inputStream));
+ String line;
+ builder = new StringBuilder();
+ while ((line = br.readLine()) != null) {
+ builder.append(line);
}
- if (br!=null)
- br.close();
String outcome;
JsonNode operationResult=null;
@@ -227,13 +211,20 @@ public class ASConnection {
} catch (IOException e) {
log.error("Failed to get data: " + e.getMessage() );
+ } finally {
+ if (br!=null)
+ try {
+ br.close();
+ } catch (IOException e) {
+ e.printStackTrace(); // TODO: Customise this generated block
+ }
}
return null;
}
- public Result execute2(Operation op, boolean isComplex){
- JsonNode node = execute(op);
+ public Result execute(Operation op, boolean isComplex){
+ JsonNode node = executeRaw(op);
try {
Result res;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
index 63b7881..b369a95 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
@@ -18,7 +18,6 @@
*/
package org.rhq.modules.plugins.jbossas7;
-import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.Closeable;
@@ -29,8 +28,6 @@ import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
-import com.sun.org.apache.xerces.internal.impl.xpath.regex.REUtil;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
@@ -51,18 +48,26 @@ public class ASUploadConnection {
private static final String POST_REQUEST_METHOD = "POST";
- private static final String UPLOAD_URL =
"http://localhost:9990/domain-api/add-content";
+ private static final String UPLOAD_URL_PATH = "/domain-api/add-content";
private final Log log = LogFactory.getLog(ASUploadConnection.class);
BufferedOutputStream os = null;
InputStream is = null;
private HttpURLConnection connection;
+ private String host;
+ private int port;
+
+ public ASUploadConnection(String dcHost, int port) {
+ this.host = dcHost;
+ this.port = port;
+ }
public OutputStream getOutputStream(String fileName) {
try {
// Create the HTTP connection to the upload URL
- connection = (HttpURLConnection) new URL(UPLOAD_URL).openConnection();
+ String url = "http://" + host + ":" + port +
UPLOAD_URL_PATH;
+ connection = (HttpURLConnection) new URL(url).openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod(POST_REQUEST_METHOD);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 26e2b4a..8ed6c96 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -70,6 +70,8 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
ASConnection connection;
String path;
String key;
+ String host;
+ int port;
/**
* Return availability of this resource
@@ -91,9 +93,9 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
// TODO add code to start the resource / connection to it
String typeName = context.getResourceType().getName();
- String host = conf.getSimpleValue("hostname","localhost");
+ host = conf.getSimpleValue("hostname","localhost");
String portString = conf.getSimpleValue("port","9990");
- int port = Integer.parseInt(portString);
+ port = Integer.parseInt(portString);
connection = new ASConnection(host,port);
path = conf.getSimpleValue("path", null);
@@ -130,8 +132,8 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
Operation op = new ReadAttribute(pathToAddress(path),req.getName()); // TODO
batching
- //JsonNode obj = connection.execute(op);
- Result res = connection.execute2(op, false);
+ //JsonNode obj = connection.executeRaw(op);
+ Result res = connection.execute(op, false);
if (!res.isSuccess())
continue;
@@ -167,7 +169,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
List<PROPERTY_VALUE> address = pathToAddress(path);
Operation op = new ReadResource(address); // TOTO set recursive flag?
- JsonNode json = connection.execute(op);
+ JsonNode json = connection.executeRaw(op);
Configuration ret = new Configuration();
ObjectMapper mapper = new ObjectMapper();
@@ -364,7 +366,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
NameValuePair nvp = new
NameValuePair(entry.getKey(),entry.getValue().getStringValue());
Operation writeAttribute = new
Operation("write-attribute",pathToAddress(getResultingPath()),nvp);
- JsonNode result= connection.execute(writeAttribute);
+ JsonNode result= connection.executeRaw(writeAttribute);
if(ASConnection.isErrorReply(result)) {
report.setStatus(ConfigurationUpdateStatus.FAILURE);
report.setErrorMessage(ASConnection.getFailureDescription(result));
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
index 176e6ce..05f79d8 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
@@ -19,7 +19,6 @@
package org.rhq.modules.plugins.jbossas7;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -51,7 +50,7 @@ public class DomainComponent extends BaseComponent implements
OperationFacet{
Operation getStatus = new
Operation("read-attribute",address,"name","status");
JsonNode result = null;
try {
- result = connection.execute(getStatus);
+ result = connection.executeRaw(getStatus);
} catch (Exception e) {
log.warn(e.getMessage());
return AvailabilityType.DOWN;
@@ -130,7 +129,7 @@ public class DomainComponent extends BaseComponent implements
OperationFacet{
OperationResult operationResult = new OperationResult();
if (operation!=null) {
- JsonNode result = connection.execute(operation);
+ JsonNode result = connection.executeRaw(operation);
if (ASConnection.isErrorReply(result)) {
operationResult.setErrorMessage(ASConnection.getFailureDescription(result));
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
index 264716e..7f39a9f 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
@@ -127,7 +127,7 @@ public class ManagedASDiscovery extends AbstractBaseDiscovery
List<PROPERTY_VALUE> address = new ArrayList<PROPERTY_VALUE>();
address.add(new PROPERTY_VALUE("server-group",serverGroup));
Operation op = new ReadResource(address);
- ComplexResult res = (ComplexResult) dcConnection.execute2(op,true);
+ ComplexResult res = (ComplexResult) dcConnection.execute(op, true);
if (res.isSuccess()) {
if (res.getResult().containsKey("socket-binding-group")) {
String sbg = (String)
res.getResult().get("socket-binding-group");
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
index b79c9a3..8bafbb4 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
@@ -26,8 +26,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Set;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.rhq.core.domain.content.PackageDetailsKey;
@@ -53,11 +51,11 @@ import org.rhq.modules.plugins.jbossas7.json.ReadChildrenNames;
* Component dealing with server group specific things
* @author Heiko W. Rupp
*/
+@SuppressWarnings("unused")
public class ServerGroupComponent extends DomainComponent implements ContentFacet,
CreateChildResourceFacet {
private static final String SUCCESS = "success";
private static final String OUTCOME = "outcome";
- private final Log log = LogFactory.getLog(ServerGroupComponent.class);
@Override
public List<DeployPackageStep> generateInstallationSteps(ResourcePackageDetails
packageDetails) {
@@ -74,7 +72,7 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
for (ResourcePackageDetails details : packages) {
- ASUploadConnection uploadConnection = new ASUploadConnection();
+ ASUploadConnection uploadConnection = new ASUploadConnection(host,port);
String fileName = details.getFileName();
OutputStream out = uploadConnection.getOutputStream(fileName);
contentServices.downloadPackageBits(cctx, details.getKey(), out, false);
@@ -101,7 +99,7 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
cop.addStep(step1);
cop.addStep(step2);
- JsonNode result = connection.execute(cop);
+ JsonNode result = connection.executeRaw(cop);
if (ASConnection.isErrorReply(result)) // TODO get failure message
into response
response.addPackageResponse(new
DeployIndividualPackageResponse(details.getKey(),ContentResponseResult.FAILURE));
else
@@ -131,7 +129,7 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
List<PROPERTY_VALUE> serverGroupAddress = pathToAddress(path);
Operation op = new ReadChildrenNames(serverGroupAddress,"deployment");
// TODO read full packages not onyl names
- JsonNode node = connection.execute(op);
+ JsonNode node = connection.executeRaw(op);
if (ASConnection.isErrorReply(node))
return null;
@@ -169,9 +167,8 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
ContentServices contentServices = cctx.getContentServices();
String resourceTypeName = report.getResourceType().getName();
- ASUploadConnection uploadConnection = new ASUploadConnection();
+ ASUploadConnection uploadConnection = new ASUploadConnection(host,port);
OutputStream out = uploadConnection.getOutputStream(details.getFileName());
-// contentServices.downloadPackageBits(cctx,details.getKey(),out,false);
contentServices.downloadPackageBitsForChildResource(cctx, resourceTypeName,
details.getKey(), out);
JsonNode uploadResult = uploadConnection.finishUpload();
@@ -205,7 +202,7 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
cop.addStep(step1);
cop.addStep(step2);
- JsonNode result = connection.execute(cop);
+ JsonNode result = connection.executeRaw(cop);
if (ASConnection.isErrorReply(result)) {
report.setErrorMessage(ASConnection.getFailureDescription(resultNode));
report.setStatus(CreateResourceStatus.FAILURE);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index f233e3e..18ba3ba 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -98,7 +98,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
else {
List<PROPERTY_VALUE> addr ;
addr = parentComponent.pathToAddress(parentPath);
- json = connection.execute(new ReadChildrenNames(addr, childType));
+ json = connection.executeRaw(new ReadChildrenNames(addr, childType));
}
if (!ASConnection.isErrorReply(json)) {
if (recursive) {
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
index a519e97..e4e9d70 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
@@ -42,8 +42,10 @@ public class UploadAndDeployTest {
static final String TEST_WAR = "test.war";
private static final String UPLOAD_FILE = "test-simple.war";
+ private static final String DC_HOST = "localhost";
+ private static final int DC_HTTP_PORT = 9990;
- @Test(timeOut = 60*1000L)
+ @Test(timeOut = 60*1000L, enabled = true)
public void testUploadIndividualSteps() throws Exception {
String bytes_value = prepare();
@@ -51,7 +53,7 @@ public class UploadAndDeployTest {
System.out.println("sha: " + bytes_value);
System.out.println();
- ASConnection connection = new ASConnection("localhost",9990);
+ ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT);
List<PROPERTY_VALUE> deploymentsAddress = new
ArrayList<PROPERTY_VALUE>(1);
deploymentsAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
@@ -60,7 +62,7 @@ public class UploadAndDeployTest {
op.addAdditionalProperty("name", TEST_WAR); // this needs to be
separate per upload
op.addAdditionalProperty("runtime-name", TEST_WAR);
System.out.flush();
- JsonNode ret = connection.execute(op);
+ JsonNode ret = connection.executeRaw(op);
System.out.println("Add to /deploy done " + ret);
System.out.flush();
@@ -73,7 +75,7 @@ public class UploadAndDeployTest {
op.addAdditionalProperty("runtime-name", TEST_WAR);
Operation deploy = new
Operation("add",serverGroupAddress,"enabled","true");
System.out.flush();
- ret = connection.execute(deploy);
+ ret = connection.executeRaw(deploy);
System.out.println("Add to server group done: " + ret);
System.out.flush();
@@ -84,7 +86,7 @@ public class UploadAndDeployTest {
// Now tear down stuff again
Operation undeploy = new Operation("remove",serverGroupAddress);
- ret = connection.execute(undeploy);
+ ret = connection.executeRaw(undeploy);
assert ret.has("outcome") : "Ret not valied " +
ret.toString();
assert ret.get("outcome").getTextValue().equals("success") :
"remove from sg was no success " + ret.getTextValue();
@@ -93,7 +95,7 @@ public class UploadAndDeployTest {
// remove from domain
Operation remove = new Operation("remove",deploymentsAddress);
- ret = connection.execute(remove);
+ ret = connection.executeRaw(remove);
assert ret.has("outcome") : "Ret not valied " +
ret.toString();
assert ret.get("outcome").getTextValue().equals("success") :
"remove from domain was no success " + ret.getTextValue();
@@ -102,7 +104,7 @@ public class UploadAndDeployTest {
}
- @Test(timeOut = 60*1000L)
+ @Test(timeOut = 60*1000L, enabled = true)
public void testUploadComposite() throws Exception {
String bytes_value = prepare();
@@ -129,8 +131,8 @@ public class UploadAndDeployTest {
cop.addStep(step2);
- ASConnection connection = new ASConnection("localhost",9990);
- JsonNode ret = connection.execute(cop);
+ ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT);
+ JsonNode ret = connection.executeRaw(cop);
System.out.println(ret);
System.out.flush();
@@ -139,7 +141,7 @@ public class UploadAndDeployTest {
cop = new CompositeOperation();
cop.addStep(step3);
cop.addStep(step4);
- ret = connection.execute(cop);
+ ret = connection.executeRaw(cop);
System.out.println(ret);
System.out.flush();
@@ -148,8 +150,8 @@ public class UploadAndDeployTest {
}
private String prepare() throws IOException {
- ASUploadConnection conn = new ASUploadConnection();
- OutputStream os = conn.getOutputStream("test1.war");
+ ASUploadConnection conn = new ASUploadConnection(DC_HOST, DC_HTTP_PORT);
+ OutputStream os = conn.getOutputStream("test.war");
commit 66fcac2419b39494c40b2cd5a8901e06beaf502f
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Apr 13 17:25:39 2011 +0200
If no socket binding group is defined in host.xml, reach out to the domain controller
and get it from there.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
index 2fa711c..264716e 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
@@ -37,6 +37,10 @@ import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
import org.rhq.core.pluginapi.inventory.ProcessScanResult;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
import org.rhq.core.system.ProcessInfo;
+import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+import org.rhq.modules.plugins.jbossas7.json.ReadResource;
/**
* Discovery class for managed AS 7 instances.
@@ -79,10 +83,19 @@ public class ManagedASDiscovery extends AbstractBaseDiscovery
config.put(new PropertySimple("group",serverInfo.group));
config.put(new
PropertySimple("port",managementHostPort.port));
config.put(new
PropertySimple("hostname",managementHostPort.host));
- if (serverInfo.bindingGroup!=null)
+ if (serverInfo.bindingGroup!=null) {
config.put(new
PropertySimple("socket-binding-group",serverInfo.bindingGroup));
- else
- config.put(new PropertySimple("socket-binding-group",
"standard-sockets")); // TODO remove when AS has no more "undefined"
+ config.put(new
PropertySimple("socket-binding-port-offset",serverInfo.portOffset));
+ }
+ else {
+ HostPort dcHP = getDomainControllerFromHostXml();
+ if (dcHP.port == 9999)
+ dcHP.port = 9990; // TODO Hack until JBAS-9306 is solved
+
+ ServerInfo dcInfo = getBindingsFromDC(dcHP, serverInfo.group);
+ config.put(new PropertySimple("socket-binding-group",
dcInfo.bindingGroup));
+ config.put(new
PropertySimple("socket-binding-port-offset",dcInfo.portOffset));
+ }
config.put(new
PropertySimple("socket-binding-port-offset",serverInfo.portOffset));
@@ -109,6 +122,25 @@ public class ManagedASDiscovery extends AbstractBaseDiscovery
return discoveredResources;
}
+ private ServerInfo getBindingsFromDC(HostPort domainController, String serverGroup)
{
+ ASConnection dcConnection = new
ASConnection(domainController.host,domainController.port);
+ List<PROPERTY_VALUE> address = new ArrayList<PROPERTY_VALUE>();
+ address.add(new PROPERTY_VALUE("server-group",serverGroup));
+ Operation op = new ReadResource(address);
+ ComplexResult res = (ComplexResult) dcConnection.execute2(op,true);
+ if (res.isSuccess()) {
+ if (res.getResult().containsKey("socket-binding-group")) {
+ String sbg = (String)
res.getResult().get("socket-binding-group");
+
+ ServerInfo serverInfo = new ServerInfo();
+ serverInfo.bindingGroup = sbg;
+ return serverInfo;
+ }
+ }
+
+ return new ServerInfo();
+ }
+
/**
* Loop through the Process scans for ManagedAS and if found extract the logfile
path.
* @param scans process scan results
commit f22bc3f1472bca5c05bab29319c02998048d0bcb
Merge: 7660aec e9639a9
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Apr 13 13:22:16 2011 +0200
Merge branch 'master' into as7plugin
commit 7660aec86b71f0c90945bfacf8f9831af4de11dd
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Apr 13 13:18:32 2011 +0200
BZ 693700 - prevent NPE for empty <c:list-property/>
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java
index 8b9868a..fd2decc 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java
@@ -450,15 +450,23 @@ public class ConfigurationMetadataManagerBean implements
ConfigurationMetadataMa
* the member prop def for the list. If the member prop def is a nested structure
the whole thing
* is replaced from the top.
*
- * @param exList the existing prop def list
+ * @param exList the existing prop def list
* @param newList the new prop def list
*/
private void replaceListProperty(PropertyDefinitionList exList,
PropertyDefinitionList newList) {
PropertyDefinition doomedMemberDef = null;
+ if (newList.getMemberDefinition()==null) {
+ log.error("\n\n!! Member definition for new list property [" +
newList.getName() + "] is null - check and fix the plugin descriptor\n");
+ return;
+ }
+
+ // We did not have a member definition before (which is wrong )
+ // we need to add it now
// only remove the existing member if it is a different entity
- if (exList.getMemberDefinition().getId() !=
newList.getMemberDefinition().getId()) {
- doomedMemberDef = exList.getMemberDefinition();
+ PropertyDefinition exListMemberDefinition = exList.getMemberDefinition();
+ if (exListMemberDefinition !=null && exListMemberDefinition.getId() !=
newList.getMemberDefinition().getId()) {
+ doomedMemberDef = exListMemberDefinition;
}
exList.setMemberDefinition(newList.getMemberDefinition());
commit 71fef20671e86e28c40c4ac5cf923d5a32971bcb
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Apr 13 13:10:13 2011 +0200
Improve handling and detection of Domain and managed servers.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index cdf7edb..d58f0c9 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -226,7 +226,7 @@ public class ASConnection {
} catch (IOException e) {
- e.printStackTrace(); // TODO: Customise this generated block
+ log.error("Failed to get data: " + e.getMessage() );
}
return null;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
new file mode 100644
index 0000000..7a648c9
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/AbstractBaseDiscovery.java
@@ -0,0 +1,230 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.system.ProcessInfo;
+
+/**
+ * Abstract base class for some discovery related functionality - especially
+ * in the area of processes and host.xml
+ * @author Heiko W. Rupp
+ */
+public abstract class AbstractBaseDiscovery<T extends ResourceComponent> implements
ResourceDiscoveryComponent<T> {
+ static final String DORG_JBOSS_BOOT_LOG_FILE =
"-Dorg.jboss.boot.log.file=";
+ private static final String DJBOSS_SERVER_HOME_DIR = "-Djboss.home.dir";
+ static final int DEFAULT_MGMT_PORT = 9990;
+ protected Document hostXml;
+ protected final Log log = LogFactory.getLog(this.getClass());
+
+// private final Log log = LogFactory.getLog(AbstractBaseDiscovery.class);
+
+ protected void readHostXml(ProcessInfo processInfo) {
+ String hostXmlFile = getHostXmlFileLocation(processInfo);
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ try {
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ InputStream is = new FileInputStream(hostXmlFile);
+ hostXml = builder.parse(is);
+ is.close();
+ } catch (Exception e) {
+ e.printStackTrace(); // TODO: Customise this generated block
+ }
+ }
+
+ /**
+ * Get the location of the host definition file (host.xml in domain mode,
standalone.xml
+ * in standalone mode.
+ *
+ * @param processInfo ProcessInfo structure containing the ENV variables
+ * @return The path to the definition file.
+ */
+ private String getHostXmlFileLocation(ProcessInfo processInfo) {
+
+ String home = getHomeDirFromCommandLine(processInfo.getCommandLine());
+ StringBuilder builder = new StringBuilder(home);
+ builder.append("/domain");
+ builder.append("/configuration");
+ builder.append("/host.xml");
+ return builder.toString();
+
+ }
+
+ String getHomeDirFromCommandLine(String[] commandLine) {
+ for (String line: commandLine) {
+ if (line.startsWith(DJBOSS_SERVER_HOME_DIR))
+ return line.substring(DJBOSS_SERVER_HOME_DIR.length()+1);
+ }
+ return "";
+ }
+
+ String getLogFileFromCommandLine(String[] commandLine) {
+
+ for (String line: commandLine) {
+ if (line.startsWith(DORG_JBOSS_BOOT_LOG_FILE))
+ return line.substring(DORG_JBOSS_BOOT_LOG_FILE.length());
+ }
+ return "";
+ }
+
+ protected HostPort getManagementPortFromHostXml() {
+ Element host = hostXml.getDocumentElement();
+ NodeList interfaceParent =
host.getElementsByTagName("management-interfaces");
+ if (interfaceParent ==null || interfaceParent.getLength()==0) {
+ log.warn("No <management-interfaces> found in host.xml");
+ return new HostPort();
+ }
+ NodeList mgmtInterfaces = interfaceParent.item(0).getChildNodes();
+ if (mgmtInterfaces==null || mgmtInterfaces.getLength()==0) {
+ log.warn("No <*-interface> found in host.xml");
+ return new HostPort();
+ }
+ for (int i = 0 ; i < mgmtInterfaces.getLength(); i++) {
+ if (!(mgmtInterfaces.item(i) instanceof Element))
+ continue;
+
+ Element mgmtInterface = (Element) mgmtInterfaces.item(i);
+ if (mgmtInterface.getNodeName().equals("http-interface")) {
+ String tmp = mgmtInterface.getAttribute("port");
+ int port = Integer.valueOf(tmp);
+ HostPort hp = new HostPort();
+ hp.isLocal=true;
+ hp.port = port;
+
+ String nIf = mgmtInterface.getAttribute("interface");
+ String hostName = getInterface(nIf);
+ hp.host = hostName;
+ return hp;
+ }
+ }
+ return new HostPort();
+ }
+
+ private String getInterface(String nIf) {
+ Element host = hostXml.getDocumentElement();
+ NodeList interfaceParent = host.getElementsByTagName("interfaces");
+ if (interfaceParent ==null || interfaceParent.getLength()==0) {
+ log.warn("No <interfaces> found in host.xml");
+ return null;
+ }
+ NodeList mgmtInterfaces = interfaceParent.item(0).getChildNodes();
+ if (mgmtInterfaces==null || mgmtInterfaces.getLength()==0) {
+ log.warn("No <*-interface> found in host.xml");
+ return null;
+ }
+ for (int i = 0 ; i < mgmtInterfaces.getLength(); i++) {
+ if (!(mgmtInterfaces.item(i) instanceof Element))
+ continue;
+ Element mgmtInterface = (Element) mgmtInterfaces.item(i);
+ if (mgmtInterface.getNodeName().equals("interface")) {
+ String name = mgmtInterface.getAttribute("name");
+ if (!name.equals(nIf))
+ continue;
+
+ NodeList nl = mgmtInterface.getChildNodes();
+ if (nl!=null) {
+ for (int j = 0 ; j < nl.getLength(); j++) {
+ if (!(nl.item(j) instanceof Element))
+ continue;
+
+ String nodeName = nl.item(j).getNodeName();
+ if (nodeName.equals("any-ipv4-address"))
+ return "0.0.0.0";
+
+ String x = ((Element)
nl.item(j)).getAttribute("value");
+ return x;
+
+ // TODO check for <any> and so on
+ }
+ }
+ }
+
+ }
+ return null; // TODO: Customise this generated block
+ }
+
+ protected String findHostName() {
+ String hostName = hostXml.getDocumentElement().getAttribute("name");
+ return hostName;
+ }
+
+ protected HostPort getDomainControllerFromHostXml() {
+
+ Element host = hostXml.getDocumentElement();
+ NodeList dcParent = host.getElementsByTagName("domain-controller");
+ if (dcParent==null || dcParent.getLength()==0)
+ return new HostPort(false);
+ NodeList interfs = dcParent.item(0).getChildNodes();
+ for (int i = 0; i < interfs.getLength(); i++) {
+ if (!(interfs.item(i)instanceof Element))
+ continue;
+
+ Element interf = (Element) interfs.item(i);
+ if (interf.getNodeName().equals("local"))
+ return new HostPort();
+
+ // not local, so get the remote
+ HostPort hp = new HostPort(false);
+ hp.host = interf.getAttribute("host");
+ hp.port = Integer.parseInt(interf.getAttribute("port"));
+ return hp;
+ }
+
+ return new HostPort(false);
+ }
+
+ protected static class HostPort {
+ String host;
+ int port;
+ boolean isLocal = true;
+
+ public HostPort() {
+ host = "localhost";
+ port = DEFAULT_MGMT_PORT;
+ isLocal = true;
+ }
+
+ public HostPort(boolean local) {
+ this();
+ isLocal = local;
+ }
+
+ @Override
+ public String toString() {
+ return "HostPort{" +
+ "host='" + host + '\'' +
+ ", port=" + port +
+ ", isLocal=" + isLocal +
+ '}';
+ }
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 43509b8..26e2b4a 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -101,7 +101,6 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
-// Object o = connection.getLevelData("", false); // BASE entries
myServerName =
context.getResourceKey().substring(context.getResourceKey().lastIndexOf("/")+1);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
index 07c1522..667b3ee 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
@@ -18,29 +18,28 @@
*/
package org.rhq.modules.plugins.jbossas7;
-import java.util.Collections;
import java.util.HashSet;
-import java.util.Iterator;
+import java.util.List;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.codehaus.jackson.JsonNode;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.ObjectMapper;
import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ProcessScanResult;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.core.system.ProcessInfo;
/**
- * Discover the domain
+ * Discover the domain. This is done by scanning for host controllers.
+ * If they are also DC, the domain-controller element points to local.
*
* @author Heiko W. Rupp
*/
@SuppressWarnings("unused")
-public class DomainDiscovery implements ResourceDiscoveryComponent<BaseComponent>
{
+public class DomainDiscovery extends AbstractBaseDiscovery<BaseComponent> {
private final Log log = LogFactory.getLog(this.getClass());
@@ -49,50 +48,45 @@ public class DomainDiscovery implements
ResourceDiscoveryComponent<BaseComponent
Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>(1);
- ObjectMapper mapper = new ObjectMapper();
-
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
- mapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING,true);
- // TODO get next from some host.xml file
- String host = "localhost";
- String portString = "9990";
- int port = Integer.parseInt(portString);
- ASConnection connection = new ASConnection(host,port);
+ List<ProcessScanResult> scans = context.getAutoDiscoveredProcesses();
+ for (ProcessScanResult psr : scans) {
- Configuration config = context.getDefaultPluginConfiguration();
+ // get the HostController, to find host.xml
+ String psName = psr.getProcessScan().getName();
+ if (!psName.equals("HostController"))
+ continue;
+ // Now we have the host controller, lets get the host.xml file
+ // and obtain the domain controller info from there
+ ProcessInfo processInfo = psr.getProcessInfo();
+ readHostXml(processInfo);
+ HostPort dcHp = getDomainControllerFromHostXml();
- // A domain has a server group so check for it.
- boolean found = false;
- JsonNode json = connection.getLevelData(null,null);
- if (!ASConnection.isErrorReply(json)) {
-
- Iterator<String> fields = json.getFieldNames();
- while (fields.hasNext()) {
- String field = fields.next();
- if (field.equals("server-group"))
- found=true;
-
- }
-
- if (found) {
-
- DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- context.getResourceType(), // DataType
- "Domain", // Key
- "Domain", // Name
- null, // Version
- context.getResourceType().getDescription(), // Description
- config,
- null);
- details.add(detail);
+ if (!dcHp.isLocal) {
+ log.info("Domain controller is not local, but at " + dcHp);
+ continue;
}
- return details;
+ // Ok, this is a domain controller, so we can return a Domain resource.
+
+ // Get the management port and save for later use
+ HostPort managementHostPort = getManagementPortFromHostXml();
+ Configuration config = context.getDefaultPluginConfiguration();
+ config.put(new PropertySimple("port",managementHostPort.port));
+ config.put(new
PropertySimple("hostname",managementHostPort.host));
+
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ context.getResourceType(), // DataType
+ "Domain", // Key
+ "Domain", // Name
+ null, // Version
+ context.getResourceType().getDescription(), // Description
+ config,
+ null);
+ details.add(detail);
}
-
- return Collections.emptySet();
+ return details;
}
-
-}
+}
\ No newline at end of file
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
index 86e3b99..2fa711c 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
@@ -19,20 +19,12 @@
package org.rhq.modules.plugins.jbossas7;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
@@ -43,7 +35,6 @@ import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.pluginapi.event.log.LogFileEventResourceComponentHelper;
import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
import org.rhq.core.pluginapi.inventory.ProcessScanResult;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
import org.rhq.core.system.ProcessInfo;
@@ -52,18 +43,10 @@ import org.rhq.core.system.ProcessInfo;
*
* @author Heiko W. Rupp
*/
-public class ManagedASDiscovery implements ResourceDiscoveryComponent
+public class ManagedASDiscovery extends AbstractBaseDiscovery
{
- static final String DJBOSS_SERVER_BASE_DIR = "-Djboss.server.base.dir=";
- static final String DORG_JBOSS_BOOT_LOG_FILE =
"-Dorg.jboss.boot.log.file=";
- static final String DLOGGING_CONFIGURATION = "-Dlogging.configuration=";
- static final int DEFAULT_MGMT_PORT = 9990;
- private final Log log = LogFactory.getLog(this.getClass());
- private Document hostXml;
- private static final String DJBOSS_SERVER_HOME_DIR = "-Djboss.home.dir";
-
/**
* Run the auto-discovery
*/
@@ -85,7 +68,7 @@ public class ManagedASDiscovery implements ResourceDiscoveryComponent
ProcessInfo processInfo = psr.getProcessInfo();
readHostXml(processInfo);
String hostName = findHostName();
- int port = getManagementPortFromHostXml();
+ HostPort managementHostPort = getManagementPortFromHostXml();
List<ServerInfo> serverNames = getServersFromHostXml();
@@ -94,7 +77,15 @@ public class ManagedASDiscovery implements ResourceDiscoveryComponent
Configuration config = discoveryContext.getDefaultPluginConfiguration();
config.put(new PropertySimple("domainHost",hostName));
config.put(new PropertySimple("group",serverInfo.group));
- config.put(new PropertySimple("port",port));
+ config.put(new
PropertySimple("port",managementHostPort.port));
+ config.put(new
PropertySimple("hostname",managementHostPort.host));
+ if (serverInfo.bindingGroup!=null)
+ config.put(new
PropertySimple("socket-binding-group",serverInfo.bindingGroup));
+ else
+ config.put(new PropertySimple("socket-binding-group",
"standard-sockets")); // TODO remove when AS has no more "undefined"
+ config.put(new
PropertySimple("socket-binding-port-offset",serverInfo.portOffset));
+
+
// TODO this fails for the downed servers.
// get from the domain or other place as soon as the domain provides it.
@@ -140,32 +131,6 @@ public class ManagedASDiscovery implements
ResourceDiscoveryComponent
}
}
- private int getManagementPortFromHostXml() {
- Element host = hostXml.getDocumentElement();
- NodeList interfaceParent =
host.getElementsByTagName("management-interfaces");
- if (interfaceParent ==null || interfaceParent.getLength()==0) {
- log.warn("No <management-interfaces> found in host.xml");
- return DEFAULT_MGMT_PORT;
- }
- NodeList mgmtInterfaces = interfaceParent.item(0).getChildNodes();
- if (mgmtInterfaces==null || mgmtInterfaces.getLength()==0) {
- log.warn("No <*-interface> found in host.xml");
- return DEFAULT_MGMT_PORT;
- }
- for (int i = 0 ; i < mgmtInterfaces.getLength(); i++) {
- if (!(mgmtInterfaces.item(i) instanceof Element))
- continue;
-
- Element mgmtInterface = (Element) mgmtInterfaces.item(i);
- if (mgmtInterface.getNodeName().equals("http-interface")) {
- String tmp = mgmtInterface.getAttribute("port");
- int port = Integer.valueOf(tmp);
- return port;
- }
- }
- return DEFAULT_MGMT_PORT;
- }
-
private List<ServerInfo> getServersFromHostXml() {
Element host = hostXml.getDocumentElement();
@@ -193,70 +158,30 @@ public class ManagedASDiscovery implements
ResourceDiscoveryComponent
autoStart = "false";
info.autoStart = Boolean.getBoolean(autoStart);
- result.add(info);
- }
-
- return result;
- }
+ // Look for <socket-binding-group ref="standard-sockets"
port-offset="250"/>
+ NodeList sbgs = server.getChildNodes();
+ if (sbgs!=null) {
+ for (int j = 0 ; j < sbgs.getLength(); j++) {
+ if (!(sbgs.item(j) instanceof Element))
+ continue;
+ Element sbg = (Element) sbgs.item(j);
+ if (!sbg.getNodeName().equals("socket-binding-group"))
+ continue;
- private String findHostName() {
- String hostName = hostXml.getDocumentElement().getAttribute("name");
- return hostName;
- }
+ info.bindingGroup = sbg.getAttribute("ref");
+ String portOffset = sbg.getAttribute("port-offset");
+ if (portOffset!=null && !portOffset.isEmpty())
+ info.portOffset = Integer.parseInt(portOffset);
- private void readHostXml(ProcessInfo processInfo) {
- String hostXmlFile = getHostXmlFileLocation(processInfo);
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- try {
- DocumentBuilder builder = factory.newDocumentBuilder();
- InputStream is = new FileInputStream(hostXmlFile);
- hostXml = builder.parse(is);
- is.close();
- } catch (Exception e) {
- e.printStackTrace(); // TODO: Customise this generated block
+ }
+ }
+ result.add(info);
}
- }
-
- /**
- * Get the location of the host definition file (host.xml in domain mode,
standalone.xml
- * in standalone mode.
- *
- * @param processInfo ProcessInfo structure containing the ENV variables
- * @return The path to the definition file.
- */
- private String getHostXmlFileLocation(ProcessInfo processInfo) {
-
- String home = getHomeDirFromCommandLine(processInfo.getCommandLine());
- StringBuilder builder = new StringBuilder(home);
- builder.append("/domain");
- builder.append("/configuration");
- builder.append("/host.xml");
- return builder.toString();
-
- }
-
-
- String getHomeDirFromCommandLine(String[] commandLine) {
- for (String line: commandLine) {
- if (line.startsWith(DJBOSS_SERVER_HOME_DIR))
- return line.substring(DJBOSS_SERVER_HOME_DIR.length()+1);
- }
- return "";
+ return result;
}
-//-Dorg.jboss.boot.log.file=/devel/jbas7/jboss-as/build/target/jboss-7.0.0.Alpha2/domain/log/server-manager/boot.log
-//-Dlogging.configuration=file:/devel/jbas7/jboss-as/build/target/jboss-7.0.0.Alpha2/domain/configuration/logging.properties
-
- String getLogFileFromCommandLine(String[] commandLine) {
-
- for (String line: commandLine) {
- if (line.startsWith(DORG_JBOSS_BOOT_LOG_FILE))
- return line.substring(DORG_JBOSS_BOOT_LOG_FILE.length());
- }
- return "";
- }
private void initLogEventSourcesConfigProp(String fileName, Configuration
pluginConfiguration) {
@@ -278,12 +203,12 @@ public class ManagedASDiscovery implements
ResourceDiscoveryComponent
}
}
- private class ServerInfo {
+ private static class ServerInfo {
String name;
String group;
boolean autoStart;
-
-
+ int portOffset;
+ String bindingGroup;
}
}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 099d1b9..e75507a 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -114,6 +114,15 @@
<subcategory name="Web"/>
</subcategories>
+ <plugin-configuration>
+ <c:simple-property name="hostname" default="localhost"
displayName="Management host" required="true"/>
+ <c:simple-property name="port" default="9990"
type="integer" displayName="Management port"
required="true"/>
+ </plugin-configuration>
+
+ <!-- Scan for host controller is intentional -->
+ <process-scan name="HostController"
query="process|basename|match=^java.*,arg|org.jboss.as.host-controller|match=.*"/>
+
+
<operation name="server-group:add" displayName="Add
ServerGroup" description="Add a server group to the Domain.">
<parameters>
<c:simple-property name="name" description="Name of
Group to add"/>
@@ -251,10 +260,12 @@
class="DomainComponent"
<plugin-configuration>
- <c:simple-property name="hostname" default="localhost"
required="true"/>
- <c:simple-property name="port" default="9990"
type="integer" required="true"/>
+ <c:simple-property name="hostname" default="localhost"
displayName="Management host" required="true"/>
+ <c:simple-property name="port" default="9990"
type="integer" displayName="Management port"
required="true"/>
<c:simple-property name="domainHost" readOnly="true"
description="Hostname in the domain"/>
<c:simple-property name="group" readOnly="true"
displayName="Server Group" description="Server Group this instance belongs
to."/>
+ <c:simple-property name="socket-binding-group"
readOnly="true" displayName="Socket binding group"
description="Socket bindngs to use"/>
+ <c:simple-property name="socket-binding-port-offset"
readOnly="true" displayName="Port Offset" type="integer"
default="0" description="Offset to the base ports"/>
&logSources;
</plugin-configuration>
commit c629ea66985a1d2f161ba625f8622024e121a23e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Apr 13 13:09:23 2011 +0200
Improve Result handling.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
index 2d011fd..a87a6f8 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
@@ -18,11 +18,15 @@
*/
package org.rhq.modules.plugins.jbossas7.json;
+import java.util.List;
+import java.util.Map;
+
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
/**
- * {"outcome" : "success", "result" : "no metrics
available", "compensating-operation" : null}
+ * Counterpart of a result JSON object like e.g.:
+ * <pre>{"outcome" : "success", "result" : "no
metrics available", "compensating-operation" : null}</pre>
* @author Heiko W. Rupp
*/
public class Result {
@@ -30,7 +34,13 @@ public class Result {
private String outcome;
private Object result;
@JsonProperty("compensating-operation")
- private Object compensatingOperation;
+ private Operation compensatingOperation;
+ @JsonProperty("failure-description")
+ private List<Map<String, String>> failureDescription;
+ @JsonProperty("host-failure-description") // TODO JBAS-9182
+ private List<Map<String, String>> hostFailureDescription;
+ @JsonProperty("domain-failure-description") // TODO JBAS-9182
+ private List<Map<String, String>> domainFailureDescription;
@JsonIgnore
private boolean success = false;
@@ -60,11 +70,35 @@ public class Result {
this.result = result;
}
- public Object getCompensatingOperation() {
+ public Operation getCompensatingOperation() {
return compensatingOperation;
}
- public void setCompensatingOperation(Object compensatingOperation) {
+ public void setCompensatingOperation(Operation compensatingOperation) {
this.compensatingOperation = compensatingOperation;
}
+
+ public List<Map<String, String>> getFailureDescription() {
+ return failureDescription;
+ }
+
+ public void setFailureDescription(List<Map<String, String>>
failureDescription) {
+ this.failureDescription = failureDescription;
+ }
+
+ public List<Map<String, String>> getHostFailureDescription() {
+ return hostFailureDescription;
+ }
+
+ public void setHostFailureDescription(List<Map<String, String>>
hostFailureDescription) {
+ this.hostFailureDescription = hostFailureDescription;
+ }
+
+ public List<Map<String, String>> getDomainFailureDescription() {
+ return domainFailureDescription;
+ }
+
+ public void setDomainFailureDescription(List<Map<String, String>>
domainFailureDescription) {
+ this.domainFailureDescription = domainFailureDescription;
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
index 64d9d30..34d722c 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
@@ -141,6 +141,23 @@ public class OperationJsonTest {
assert result != null;
assert result.getOutcome().equals("success");
assert result.isSuccess();
+ assert result.getFailureDescription() == null;
+ }
+ public void simpleResultWithFailure() throws Exception {
+
+ String resultString = "{\"outcome\" : \"failed\",
\"failure-description\" : [{ \"java.util.NoSuchElementException\" :
\"No child 'profile' exists\" }]}";
+
+ ObjectMapper mapper = new ObjectMapper();
+ Result result = mapper.readValue(resultString,Result.class);
+
+ assert result != null;
+ assert result.getOutcome().equals("failed");
+ assert !result.isSuccess();
+
+ assert result.getResult() == null;
+ assert result.getCompensatingOperation() == null;
+ assert result.getFailureDescription() != null;
+ assert result.getFailureDescription().size() == 1;
}
public void complexResult1() throws Exception {
@@ -162,4 +179,24 @@ public class OperationJsonTest {
assert aliases.size()==1;
assert aliases.get(0).equals("example.com");
}
+
+ public void compensatingOp() throws Exception {
+
+ String resultString = "{\"outcome\" : \"success\",
\"result\" : null, \"compensating-operation\" :
{\"operation\" : \"remove\", \"address\" :
[{\"deployment\" : \"test.war\"}]}}";
+
+ ObjectMapper mapper = new ObjectMapper();
+ Result result = mapper.readValue(resultString,Result.class);
+
+ assert result != null;
+ assert result.getOutcome().equals("success");
+ assert result.isSuccess();
+
+ assert result.getCompensatingOperation()!=null;
+
+ Operation op = result.getCompensatingOperation();
+
+ assert op.getOperation().equals("remove");
+
+ }
+
}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
index 11e25ad..a519e97 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
@@ -43,6 +43,7 @@ public class UploadAndDeployTest {
static final String TEST_WAR = "test.war";
private static final String UPLOAD_FILE = "test-simple.war";
+ @Test(timeOut = 60*1000L)
public void testUploadIndividualSteps() throws Exception {
String bytes_value = prepare();
@@ -101,6 +102,7 @@ public class UploadAndDeployTest {
}
+ @Test(timeOut = 60*1000L)
public void testUploadComposite() throws Exception {
String bytes_value = prepare();
commit 721b38accafbd2b609810dc2f6ad2665aa0e21cc
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Apr 12 14:10:32 2011 +0200
Transition resource path from /type/value/type.. to type=value pairs.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 9037537..cdf7edb 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -27,8 +27,6 @@ import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
-import java.util.ArrayList;
-import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -36,9 +34,9 @@ import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.jetbrains.annotations.Nullable;
-import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
-import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
+import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.Result;
/**
* Provide connections to the AS and reading / writing date from/to it.
@@ -52,6 +50,7 @@ public class ASConnection {
URL url;
String urlString;
private StringBuilder builder;
+ private ObjectMapper mapper;
public ASConnection(String host, int port) {
this.host = host;
@@ -63,6 +62,8 @@ public class ASConnection {
} catch (MalformedURLException e) {
throw new IllegalArgumentException(e.getMessage());
}
+
+ mapper = new ObjectMapper();
}
@@ -131,11 +132,6 @@ public class ASConnection {
return tree;
}
- JsonNode getAttributeValue(@Nullable String base, @Nullable String attributeName)
throws Exception {
- String op = "operation=attribute&name=" + attributeName;
- return getLevelData(base,op);
- }
-
static boolean isErrorReply(JsonNode in) {
if (in == null)
@@ -181,8 +177,6 @@ public class ASConnection {
conn.setRequestMethod("POST");
OutputStream out = conn.getOutputStream();
- ObjectMapper mapper = new ObjectMapper();
-
String result = mapper.writeValueAsString(operation);
System.out.println("Json to send: " + result);
System.out.flush();
@@ -238,6 +232,22 @@ public class ASConnection {
return null;
}
+ public Result execute2(Operation op, boolean isComplex){
+ JsonNode node = execute(op);
+
+ try {
+ Result res;
+ if (isComplex)
+ res = mapper.readValue(node,ComplexResult.class);
+ else
+ res = mapper.readValue(node,Result.class);
+ return res;
+ } catch (IOException e) {
+ e.printStackTrace(); // TODO: Customise this generated block
+ return null;
+ }
+ }
+
private URL getBaseUrl(String base, String ops) throws MalformedURLException {
String spec;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 28b94f9..43509b8 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -33,6 +33,7 @@ import org.rhq.core.domain.configuration.definition.PropertyDefinition;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionList;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionMap;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
+import org.rhq.core.domain.configuration.definition.PropertySimpleType;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementDataNumeric;
@@ -45,11 +46,12 @@ import
org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
-import org.rhq.core.pluginapi.operation.OperationFacet;
-import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+import org.rhq.modules.plugins.jbossas7.json.ReadAttribute;
+import org.rhq.modules.plugins.jbossas7.json.ReadResource;
+import org.rhq.modules.plugins.jbossas7.json.Result;
import java.util.ArrayList;
import java.util.Collections;
@@ -58,8 +60,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import com.sun.org.apache.xml.internal.security.utils.Base64;
-
public class BaseComponent implements ResourceComponent, MeasurementFacet,
ConfigurationFacet
{
final Log log = LogFactory.getLog(this.getClass());
@@ -129,14 +129,24 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
for (MeasurementScheduleRequest req : metrics) {
- JsonNode obj = connection.getAttributeValue(key, req.getName()); // TODO
batching
- String val = obj.getValueAsText();
+ Operation op = new ReadAttribute(pathToAddress(path),req.getName()); // TODO
batching
+ //JsonNode obj = connection.execute(op);
+ Result res = connection.execute2(op, false);
+ if (!res.isSuccess())
+ continue;
+
+ String val = (String) res.getResult();
+
if (req.getDataType()== DataType.MEASUREMENT) {
- Double d = Double.parseDouble(val);
- MeasurementDataNumeric data = new MeasurementDataNumeric(req,d);
- report.addData(data);
+ try {
+ Double d = Double.parseDouble(val);
+ MeasurementDataNumeric data = new MeasurementDataNumeric(req,d);
+ report.addData(data);
+ } catch (NumberFormatException e) {
+ log.warn("Non numeric input for [" + req.getName() +
"] : [" + val + "]");
+ }
} else if (req.getDataType()== DataType.TRAIT) {
MeasurementDataTrait data = new MeasurementDataTrait(req,val);
report.addData(data);
@@ -154,15 +164,18 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
public Configuration loadResourceConfiguration() throws Exception {
ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
- String myPath = getResultingPath();
-
+// String myPath = getResultingPath();
- JsonNode json = connection.getLevelData(myPath,true,false);
+ List<PROPERTY_VALUE> address = pathToAddress(path);
+ Operation op = new ReadResource(address); // TOTO set recursive flag?
+ JsonNode json = connection.execute(op);
Configuration ret = new Configuration();
ObjectMapper mapper = new ObjectMapper();
- for (PropertyDefinition propDef: configDef.getNonGroupedProperties()) {
+ Set<Map.Entry<String, PropertyDefinition>> entrySet =
configDef.getPropertyDefinitions().entrySet();
+ for (Map.Entry<String,PropertyDefinition> propDefEntry: entrySet) { // TODO
all properties
+ PropertyDefinition propDef = propDefEntry.getValue();
JsonNode sub = json.findValue(propDef.getName());
if (propDef instanceof PropertyDefinitionSimple) {
PropertySimple propertySimple;
@@ -285,6 +298,16 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
}
}
ret.put(propertyList);
+ } // end List of ..
+ else if (propDef instanceof PropertyDefinitionMap) {
+ PropertyDefinitionMap mapDef = (PropertyDefinitionMap) propDef;
+ Map<String,PropertyDefinition> memberDefMap =
mapDef.getPropertyDefinitions();
+ for (Map.Entry<String,PropertyDefinition> maEntry :
memberDefMap.entrySet()) {
+ JsonNode valueNode = json.findValue(maEntry.getKey());
+ System.out.println(valueNode);
+ PropertySimple p = putProperty(valueNode,maEntry.getValue());
+ ret.put(p);
+ }
}
}
@@ -292,6 +315,31 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
return ret;
}
+ PropertySimple putProperty(JsonNode value, PropertyDefinition def) {
+ String name = def.getName();
+ PropertySimpleType type = ((PropertyDefinitionSimple) def).getType();
+ PropertySimple ps;
+ switch (type) {
+ case BOOLEAN:
+ ps = new PropertySimple(name,value.getBooleanValue());
+ break;
+ case FLOAT:
+ case DOUBLE:
+ ps = new PropertySimple(name,value.getDoubleValue());
+ break;
+ case INTEGER:
+ ps = new PropertySimple(name,value.getIntValue());
+ break;
+ case LONG:
+ ps = new PropertySimple(name,value.getLongValue());
+ break;
+ default:
+ ps = new PropertySimple(name,value.getTextValue());
+ }
+
+ return ps;
+ }
+
protected String getResultingPath() {
ResourceComponent parentResourceComponent =
context.getParentResourceComponent();
String parentPath =null;
@@ -302,10 +350,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
}
if (parentPath!=null) {
- if (parentPath.endsWith("/") || path.startsWith("/"))
- myPath = parentPath + path;
- else
- myPath = parentPath + "/" + path;
+ myPath = parentPath + "," + path;
}
else
myPath = path;
@@ -329,21 +374,29 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
}
- protected List<PROPERTY_VALUE> pathToAddress(String path) {
+ /**
+ * Convert a path in the form key=value,key=value... to a List of properties.
+ * @param path Path to translate
+ * @return List of properties
+ */
+ public List<PROPERTY_VALUE> pathToAddress(String path) {
if (path==null || path.isEmpty())
return Collections.emptyList();
- if (path.endsWith("/"))
- path = path.substring(0,path.length()-1);
-
- if (path.startsWith("/"))
- path = path.substring(1);
-
List<PROPERTY_VALUE> result = new ArrayList<PROPERTY_VALUE>();
- String[] components = path.split("/");
- for (int i = 0; i < components.length ; i+=2) {
- PROPERTY_VALUE valuePair = new
PROPERTY_VALUE(components[i],components[i+1]);
- result.add(valuePair);
+ String[] components = path.split(",");
+ for (String component : components) {
+ String tmp = component.trim();
+
+ if (tmp.contains("=")) {
+ // strip / from the start of the key if it happens to be there
+ if (tmp.startsWith("/"))
+ tmp = tmp.substring(1);
+
+ String[] pair = tmp.split("=");
+ PROPERTY_VALUE valuePair = new PROPERTY_VALUE(pair[0], pair[1]);
+ result.add(valuePair);
+ }
}
return result;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
index 7608b9c..07c1522 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
@@ -21,7 +21,6 @@ package org.rhq.modules.plugins.jbossas7;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
@@ -29,13 +28,11 @@ import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.type.TypeReference;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
-import org.rhq.modules.plugins.jbossas7.json.Subsystem;
/**
* Discover the domain
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
index ff7048b..b79c9a3 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
@@ -128,8 +128,7 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
@Override
public Set<ResourcePackageDetails> discoverDeployedPackages(PackageType type)
{
- List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
- serverGroupAddress.add(new
PROPERTY_VALUE("server-group",serverGroupFromKey()));
+ List<PROPERTY_VALUE> serverGroupAddress = pathToAddress(path);
Operation op = new ReadChildrenNames(serverGroupAddress,"deployment");
// TODO read full packages not onyl names
JsonNode node = connection.execute(op);
@@ -194,7 +193,8 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
deploymentsAddress.add(new PROPERTY_VALUE("deployment", fileName));
Operation step1 = new Operation("add",deploymentsAddress);
step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", hash));
- step1.addAdditionalProperty("name", fileName);
+ step1.addAdditionalProperty("name", fileName); // TODO set a random
name here - or wait on AS to "fix" this
+ step1.addAdditionalProperty("runtime-name", fileName);
List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
serverGroupAddress.add(new
PROPERTY_VALUE("server-group",serverGroupFromKey()));
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index b6619b8..f233e3e 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -63,26 +63,31 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
Configuration config = context.getDefaultPluginConfiguration();
String cpath = config.getSimpleValue("path", null);
+ if (cpath==null) {
+ log.error("Path plugin config is null for ResourceType [" +
context.getResourceType().getName() +"].");
+ return details;
+ }
+
+
boolean recursive = false;
String parentPath = parentComponent.getPath();
String path;
- if (cpath!=null && cpath.endsWith("/*")) {
- path = cpath.substring(0,cpath.length()-2);
+ String childType = null;
+ if (!cpath.contains("=")) { // NO = -> no sub path, but a type
recursive = true;
+ childType = cpath;
+
}
+
+ if (parentPath==null || parentPath.isEmpty())
+ path = "";
else
- path = cpath;
-
- if (parentPath!=null && !parentPath.isEmpty()) {
- if (recursive)
- path = parentPath;
- else if (parentPath.endsWith("/") ||
path.startsWith("/"))
- path = parentPath + path;
- else
- path = parentPath + "/" + path;
- }
+ path = parentPath;
+
+ if (cpath.contains("="))
+ path += "," + cpath;
System.out.println("total path: [" + path + "]");
@@ -93,19 +98,12 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
else {
List<PROPERTY_VALUE> addr ;
addr = parentComponent.pathToAddress(parentPath);
- String childType = cpath.substring(0, cpath.length() - 2);
- if (childType.startsWith("/"))
- childType = childType.substring(1);
json = connection.execute(new ReadChildrenNames(addr, childType));
}
if (!ASConnection.isErrorReply(json)) {
if (recursive) {
- int i = path.lastIndexOf("/");
- String subPath = path.substring(i+1);
JsonNode subNode = json.findPath("result");
- if (subNode==null || subNode.isNull())
- subNode = json.get(subPath); // TODO clean this up. to get the
'key' in a path from the AS we need to use get()
if (subNode!=null && subNode.isContainerNode()){
@@ -116,24 +114,24 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
String val = node.getTextValue();
- String newPath = cpath.replaceAll("\\*",val);
+ String newPath = cpath + "=" + val;
Configuration config2 = context.getDefaultPluginConfiguration();
- PropertySimple pathProp = new
PropertySimple("path",newPath);
- config2.put(pathProp);
+
String resKey;
- String childType = cpath.substring(0, cpath.length() - 2);
- if (childType.startsWith("/"))
- childType = childType.substring(1);
- resKey = context.getParentResourceContext().getResourceKey() +
"/" +childType + "/" + val;
- String name = resKey.substring(resKey.lastIndexOf("/")
+ 1);
+ if (path==null||path.isEmpty())
+ resKey = newPath;
+ else
+ resKey = path + "," +childType + "=" +
val;
+ PropertySimple pathProp = new
PropertySimple("path",resKey);
+ config2.put(pathProp);
DiscoveredResourceDetails detail = new
DiscoveredResourceDetails(
context.getResourceType(), // DataType
resKey, // Key
- name, // Name
+ val, // Name
null, // Version
"TODO", // subsystem.description, // TODO
Description
config2,
@@ -155,7 +153,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
String resKey = path;
- String name = resKey.substring(resKey.lastIndexOf("/") + 1);
+ String name = resKey.substring(resKey.lastIndexOf("=") + 1);
Configuration config2 = context.getDefaultPluginConfiguration();
PropertySimple pathProp = new PropertySimple("path",path);
config2.put(pathProp);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ComplexResult.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ComplexResult.java
new file mode 100644
index 0000000..134026d
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ComplexResult.java
@@ -0,0 +1,40 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import java.util.Map;
+
+import org.rhq.modules.plugins.jbossas7.json.Result;
+
+/**
+ * A result object with a complex 'result' member
+ * @author Heiko W. Rupp
+ */
+public class ComplexResult extends Result {
+
+ private Map<String,Object> result;
+
+ public Map<String, Object> getResult() {
+ return result;
+ }
+
+ public void setResult(Map<String, Object> result) {
+ this.result = result;
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadAttribute.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadAttribute.java
new file mode 100644
index 0000000..773e862
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadAttribute.java
@@ -0,0 +1,32 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import java.util.List;
+
+/**
+ * Read Attribute operation
+ * @author Heiko W. Rupp
+ */
+public class ReadAttribute extends Operation {
+
+ public ReadAttribute(List<PROPERTY_VALUE> address, String name) {
+ super("read-attribute",address,"name",name);
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
new file mode 100644
index 0000000..2d011fd
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
@@ -0,0 +1,70 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * {"outcome" : "success", "result" : "no metrics
available", "compensating-operation" : null}
+ * @author Heiko W. Rupp
+ */
+public class Result {
+
+ private String outcome;
+ private Object result;
+ @JsonProperty("compensating-operation")
+ private Object compensatingOperation;
+ @JsonIgnore
+ private boolean success = false;
+
+ public Result() {
+
+ }
+
+ public String getOutcome() {
+ return outcome;
+ }
+
+ public void setOutcome(String outcome) {
+ this.outcome = outcome;
+ if (outcome.equalsIgnoreCase("success"))
+ success = true;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public Object getResult() {
+ return result;
+ }
+
+ public void setResult(Object result) {
+ this.result = result;
+ }
+
+ public Object getCompensatingOperation() {
+ return compensatingOperation;
+ }
+
+ public void setCompensatingOperation(Object compensatingOperation) {
+ this.compensatingOperation = compensatingOperation;
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 435f58f..099d1b9 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -108,6 +108,12 @@
class="DomainComponent"
description="An AS7 management profile">
+ <subcategories>
+ <subcategory name="Integration" />
+ <subcategory name="Core"/>
+ <subcategory name="Web"/>
+ </subcategories>
+
<operation name="server-group:add" displayName="Add
ServerGroup" description="Add a server group to the Domain.">
<parameters>
<c:simple-property name="name" description="Name of
Group to add"/>
@@ -126,7 +132,7 @@
class="BaseComponent">
<plugin-configuration>
- <c:simple-property name="path"
default="/profile/*" readOnly="true"/>
+ <c:simple-property name="path" default="profile"
readOnly="true"/>
</plugin-configuration>
</server>
<server name="ServerGroup"
@@ -137,7 +143,7 @@
<!-- TODO move operation to createDeletePolicy="create-only"
-->
<plugin-configuration>
- <c:simple-property name="path"
default="/server-group/*" readOnly="true"/>
+ <c:simple-property name="path"
default="server-group" readOnly="true"/>
</plugin-configuration>
@@ -153,7 +159,7 @@
<service name="Deployment" class="BaseComponent"
discovery="SubsystemDiscovery" createDeletePolicy="create-only"
creationDataType="content">
<plugin-configuration>
- <c:simple-property name="path"
default="/deployment/*" readOnly="true"/>
+ <c:simple-property name="path"
default="deployment" readOnly="true"/>
</plugin-configuration>
<content name="deployment" category="deployable"
isCreationType="true" description="Deployments on this domain">
@@ -172,7 +178,7 @@
class="DomainComponent"
<plugin-configuration>
- <c:simple-property name="path" default="/host/*"
readOnly="true"/>
+ <c:simple-property name="path" default="host"
readOnly="true"/>
</plugin-configuration>
<operation name="server:add" displayName="Create
server" description="Add a new server to this host.">
@@ -307,7 +313,7 @@
</runs-inside>
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/subsystem/messaging"/>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=messaging"/>
</plugin-configuration>
<operation name="destination:add" displayName="Add
destination" description="Add a Queue or Topic">
@@ -363,7 +369,7 @@
class="BaseComponent"
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="queue/*"/>
+ <c:simple-property name="path" readOnly="true"
default="queue"/>
</plugin-configuration>
<resource-configuration>
<c:simple-property name="queue-address"
required="true"/>
@@ -386,7 +392,7 @@
</runs-inside>
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/subsystem/jms"/>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=jms"/>
</plugin-configuration>
<service name="Queue"
@@ -394,7 +400,7 @@
class="BaseComponent"
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="queue/*"/>
+ <c:simple-property name="path" readOnly="true"
default="queue"/>
</plugin-configuration>
</service>
<service name="Topic"
@@ -402,7 +408,7 @@
class="BaseComponent"
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="topic/*"/>
+ <c:simple-property name="path" readOnly="true"
default="topic"/>
</plugin-configuration>
</service>
<service name="Connection-Factory"
@@ -410,7 +416,7 @@
class="BaseComponent"
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="connection-factory/*"/>
+ <c:simple-property name="path" readOnly="true"
default="connection-factory"/>
</plugin-configuration>
</service>
@@ -428,7 +434,7 @@
</runs-inside>
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/subsystem/web"/>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=web"/>
</plugin-configuration>
<service name="Connector"
@@ -436,7 +442,7 @@
class="BaseComponent"
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/connector/*"/>
+ <c:simple-property name="path" readOnly="true"
default="connector"/>
</plugin-configuration>
@@ -459,7 +465,7 @@
discovery="SubsystemDiscovery"
class="BaseComponent">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/virtual-server/*"/>
+ <c:simple-property name="path" readOnly="true"
default="virtual-server"/>
</plugin-configuration>
<resource-configuration>
@@ -487,7 +493,7 @@
</runs-inside>
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/subsystem/datasources"/>
+ <c:simple-property name="path" readOnly="true"
default="subsystem=datasources"/>
</plugin-configuration>
<service name="DataSource"
@@ -497,7 +503,7 @@
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="data-source/*"/>
+ <c:simple-property name="path" readOnly="true"
default="data-source"/>
</plugin-configuration>
<resource-configuration>
@@ -523,7 +529,7 @@
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="xa-data-source/*"/>
+ <c:simple-property name="path" readOnly="true"
default="xa-data-source"/>
</plugin-configuration>
</service>
@@ -534,7 +540,7 @@
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="jdbc-driver/*"/>
+ <c:simple-property name="path" readOnly="true"
default="jdbc-driver"/>
</plugin-configuration>
</service>
@@ -552,7 +558,7 @@
</runs-inside>
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/"/>
+ <c:simple-property name="path" readOnly="true"
default="interface"/>
</plugin-configuration>
</service>
@@ -567,7 +573,7 @@
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/socket-binding-group/"/>
+ <c:simple-property name="path" readOnly="true"
default="socket-binding-group"/>
</plugin-configuration>
<resource-configuration>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
index 9110fbd..64d9d30 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
@@ -26,9 +26,11 @@ import java.util.Map;
import org.codehaus.jackson.map.ObjectMapper;
import org.testng.annotations.Test;
+import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.Result;
/**
* @author Heiko W. Rupp
@@ -116,4 +118,48 @@ public class OperationJsonTest {
System.out.println(result);
}
+
+ public void simpleResult() throws Exception {
+
+ String resultString = "{\"outcome\" : \"success\",
\"result\" : \"no metrics available\",
\"compensating-operation\" : null}";
+
+ ObjectMapper mapper = new ObjectMapper();
+ Result result = mapper.readValue(resultString,Result.class);
+
+ assert result != null;
+ assert result.getOutcome().equals("success");
+ assert result.isSuccess();
+ }
+
+ public void simpleResult2() throws Exception {
+
+ String resultString = "{\"outcome\" : \"success\",
\"result\" : \"DISABLED\", \"compensating-operation\" :
null}";
+
+ ObjectMapper mapper = new ObjectMapper();
+ Result result = mapper.readValue(resultString,Result.class);
+
+ assert result != null;
+ assert result.getOutcome().equals("success");
+ assert result.isSuccess();
+ }
+
+ public void complexResult1() throws Exception {
+
+ String resultString = " {\"outcome\" : \"success\",
\"result\" : {\"alias\" : [\"example.com\"],
\"access-log\" : null, \"rewrite\" : null},
\"compensating-operation\" : null}";
+
+ ObjectMapper mapper = new ObjectMapper();
+ ComplexResult result = mapper.readValue(resultString,ComplexResult.class);
+
+ assert result != null;
+ assert result.getOutcome().equals("success");
+ assert result.isSuccess();
+ assert result.getResult().size()==3;
+ String rewrite = (String) result.getResult().get("rewrite");
+ assert rewrite == null;
+
+ List<String> aliases = (List<String>)
result.getResult().get("alias");
+ assert aliases != null;
+ assert aliases.size()==1;
+ assert aliases.get(0).equals("example.com");
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/PathHandlingTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/PathHandlingTest.java
new file mode 100644
index 0000000..a59b05e
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/PathHandlingTest.java
@@ -0,0 +1,95 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.util.List;
+
+import org.testng.annotations.Test;
+
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+
+/**
+ * Test handling of path elements.
+ * A path to a resource consists of pairs type=value that are
+ * separated by commas
+ * @author Heiko W. Rupp
+ */
+@Test
+public class PathHandlingTest {
+
+ public void buildPath1() throws Exception {
+
+ String path = "/subsystem=jms,profile=default,queue=foo";
+
+ BaseComponent bc = new BaseComponent();
+ List<PROPERTY_VALUE> list = bc.pathToAddress(path);
+
+ int found = 0;
+ for (PROPERTY_VALUE p : list) {
+ if (p.getKey().equals("subsystem")) {
+ assert p.getValue().equals("jms");
+ found++;
+ }
+ if (p.getKey().equals("queue")) {
+ found++;
+ assert p.getValue().equals("foo");
+ }
+ }
+ assert found == 2 : "did not find both keys, but " + found;
+ }
+
+ public void buildPath2() throws Exception {
+
+ String path = "/subsystem=jms,profile=default,queue=java:/foo";
+
+ BaseComponent bc = new BaseComponent();
+ List<PROPERTY_VALUE> list = bc.pathToAddress(path);
+
+ assert list.size()==3 : "We don't have 3 components, but " +
list.size();
+ for (PROPERTY_VALUE p : list) {
+ if (p.getKey().equals("subsystem"))
+ assert p.getValue().equals("jms");
+ if (p.getKey().equals("queue"))
+ assert p.getValue().equals("java:/foo") : "Queue value is
wrong: " + p.getValue();
+
+ }
+ }
+
+ public void buildIncomplete() throws Exception {
+
+ String path = "/subsystem=jms,profile=default,queue=java:/foo,topic";
+
+ BaseComponent bc = new BaseComponent();
+ List<PROPERTY_VALUE> list = bc.pathToAddress(path);
+
+ assert list.size()==3 : "We don't have 3 components, but " +
list.size();
+ int found = 0;
+ for (PROPERTY_VALUE p : list) {
+ if (p.getKey().equals("subsystem")) {
+ assert p.getValue().equals("jms");
+ found++;
+ }
+ if (p.getKey().equals("queue")) {
+ assert p.getValue().equals("java:/foo") : "Queue value is
wrong: " + p.getValue();
+ found++;
+ }
+ }
+ assert found == 2 : "did not find both keys, but " + found;
+ }
+}
commit 5522a71fd7559bf707094665c020095c3fc6add7
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Apr 11 15:01:01 2011 +0200
Better resource detection and keying, Creation of deployments.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 491fb77..9037537 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -137,7 +137,7 @@ public class ASConnection {
}
- boolean isErrorReply(JsonNode in) {
+ static boolean isErrorReply(JsonNode in) {
if (in == null)
return true;
@@ -154,7 +154,7 @@ public class ASConnection {
reasonNode = in.findValue("host-failure-descriptions");
// TODO JBAS-9182
String reason = reasonNode.getTextValue();
- log.info(reason);
+// log.info(reason);
return true;
}
@@ -262,7 +262,7 @@ public class ASConnection {
return url2;
}
- public String getFailureDescription(JsonNode jsonNode) {
+ public static String getFailureDescription(JsonNode jsonNode) {
if (jsonNode==null)
return "getFailureDescription: -input was null-";
JsonNode node = jsonNode.findValue("failure-description");
@@ -273,7 +273,7 @@ public class ASConnection {
return node.getValueAsText();
}
- public String getSuccessDescription(JsonNode jsonNode) {
+ public static String getSuccessDescription(JsonNode jsonNode) {
if (jsonNode==null)
return "No message found";
JsonNode node = jsonNode.findValue("result");
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 644fc24..28b94f9 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -62,7 +62,7 @@ import com.sun.org.apache.xml.internal.security.utils.Base64;
public class BaseComponent implements ResourceComponent, MeasurementFacet,
ConfigurationFacet
{
- private final Log log = LogFactory.getLog(this.getClass());
+ final Log log = LogFactory.getLog(this.getClass());
ResourceContext context;
Configuration conf;
@@ -321,9 +321,9 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
NameValuePair nvp = new
NameValuePair(entry.getKey(),entry.getValue().getStringValue());
Operation writeAttribute = new
Operation("write-attribute",pathToAddress(getResultingPath()),nvp);
JsonNode result= connection.execute(writeAttribute);
- if(connection.isErrorReply(result)) {
+ if(ASConnection.isErrorReply(result)) {
report.setStatus(ConfigurationUpdateStatus.FAILURE);
- report.setErrorMessage(connection.getFailureDescription(result));
+ report.setErrorMessage(ASConnection.getFailureDescription(result));
}
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
index 21005a9..176e6ce 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
@@ -49,11 +49,17 @@ public class DomainComponent extends BaseComponent implements
OperationFacet{
address.add(new PROPERTY_VALUE("host",host));
address.add(new PROPERTY_VALUE("server-config",myServerName));
Operation getStatus = new
Operation("read-attribute",address,"name","status");
- JsonNode result = connection.execute(getStatus);
- if (connection.isErrorReply(result))
+ JsonNode result = null;
+ try {
+ result = connection.execute(getStatus);
+ } catch (Exception e) {
+ log.warn(e.getMessage());
+ return AvailabilityType.DOWN;
+ }
+ if (ASConnection.isErrorReply(result))
return AvailabilityType.DOWN;
- String msg = connection.getSuccessDescription(result);
+ String msg = ASConnection.getSuccessDescription(result);
if (msg.contains("STARTED"))
return AvailabilityType.UP;
else
@@ -126,11 +132,11 @@ public class DomainComponent extends BaseComponent implements
OperationFacet{
if (operation!=null) {
JsonNode result = connection.execute(operation);
- if (connection.isErrorReply(result)) {
-
operationResult.setErrorMessage(connection.getFailureDescription(result));
+ if (ASConnection.isErrorReply(result)) {
+
operationResult.setErrorMessage(ASConnection.getFailureDescription(result));
}
else {
-
operationResult.setSimpleResult(connection.getSuccessDescription(result));
+
operationResult.setSimpleResult(ASConnection.getSuccessDescription(result));
}
}
else {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
index ad09c77..7608b9c 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
@@ -69,7 +69,7 @@ public class DomainDiscovery implements
ResourceDiscoveryComponent<BaseComponent
// A domain has a server group so check for it.
boolean found = false;
JsonNode json = connection.getLevelData(null,null);
- if (!connection.isErrorReply(json)) {
+ if (!ASConnection.isErrorReply(json)) {
Iterator<String> fields = json.getFieldNames();
while (fields.hasNext()) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/InterfaceDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/InterfaceDiscovery.java
index 021b10c..1fc1e9b 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/InterfaceDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/InterfaceDiscovery.java
@@ -64,7 +64,7 @@ public class InterfaceDiscovery implements
ResourceDiscoveryComponent<BaseCompon
JsonNode json = connection.getLevelData(null, null);
- if (!connection.isErrorReply(json)) {
+ if (!ASConnection.isErrorReply(json)) {
Domain domain = mapper.readValue(json, new TypeReference<Domain>()
{});
for (Map.Entry<String,String> entry: domain.interfaces.entrySet()) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
index 0e26e7d..ff7048b 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
@@ -55,6 +55,8 @@ import org.rhq.modules.plugins.jbossas7.json.ReadChildrenNames;
*/
public class ServerGroupComponent extends DomainComponent implements ContentFacet,
CreateChildResourceFacet {
+ private static final String SUCCESS = "success";
+ private static final String OUTCOME = "outcome";
private final Log log = LogFactory.getLog(ServerGroupComponent.class);
@Override
@@ -77,9 +79,9 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
OutputStream out = uploadConnection.getOutputStream(fileName);
contentServices.downloadPackageBits(cctx, details.getKey(), out, false);
JsonNode uploadResult = uploadConnection.finishUpload();
- if (uploadResult.has("outcome")) {
- String outcome = uploadResult.get("outcome").getTextValue();
- if (outcome.equals("success")) { // Upload was successful, so
now add the file to the server group
+ if (uploadResult.has(OUTCOME)) {
+ String outcome = uploadResult.get(OUTCOME).getTextValue();
+ if (outcome.equals(SUCCESS)) { // Upload was successful, so now add the
file to the server group
JsonNode resultNode = uploadResult.get("result");
String hash =
resultNode.get("BYTES_VALUE").getTextValue();
ASConnection connection = getASConnection();
@@ -100,7 +102,7 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
cop.addStep(step2);
JsonNode result = connection.execute(cop);
- if (connection.isErrorReply(result)) // TODO get failure message into
response
+ if (ASConnection.isErrorReply(result)) // TODO get failure message
into response
response.addPackageResponse(new
DeployIndividualPackageResponse(details.getKey(),ContentResponseResult.FAILURE));
else
response.addPackageResponse(new
DeployIndividualPackageResponse(details.getKey(),ContentResponseResult.SUCCESS));
@@ -131,7 +133,7 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
Operation op = new ReadChildrenNames(serverGroupAddress,"deployment");
// TODO read full packages not onyl names
JsonNode node = connection.execute(op);
- if (connection.isErrorReply(node))
+ if (ASConnection.isErrorReply(node))
return null;
JsonNode result = node.get("result");
@@ -168,16 +170,49 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
ContentServices contentServices = cctx.getContentServices();
String resourceTypeName = report.getResourceType().getName();
- ASUploadConnection connection = new ASUploadConnection();
- OutputStream out = connection.getOutputStream(details.getFileName());
+ ASUploadConnection uploadConnection = new ASUploadConnection();
+ OutputStream out = uploadConnection.getOutputStream(details.getFileName());
// contentServices.downloadPackageBits(cctx,details.getKey(),out,false);
contentServices.downloadPackageBitsForChildResource(cctx, resourceTypeName,
details.getKey(), out);
- JsonNode result = connection.finishUpload();
- System.out.println(result);
+ JsonNode uploadResult = uploadConnection.finishUpload();
+ System.out.println(uploadResult);
+ if (ASConnection.isErrorReply(uploadResult)) {
+ report.setStatus(CreateResourceStatus.FAILURE);
+ report.setErrorMessage(ASConnection.getFailureDescription(uploadResult));
+ return report;
+ }
+
+ String fileName = report.getUserSpecifiedResourceName();
+
+ JsonNode resultNode = uploadResult.get("result");
+ String hash = resultNode.get("BYTES_VALUE").getTextValue();
+ ASConnection connection = getASConnection();
+
+ List<PROPERTY_VALUE> deploymentsAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ deploymentsAddress.add(new PROPERTY_VALUE("deployment", fileName));
+ Operation step1 = new Operation("add",deploymentsAddress);
+ step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", hash));
+ step1.addAdditionalProperty("name", fileName);
+
+ List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ serverGroupAddress.add(new
PROPERTY_VALUE("server-group",serverGroupFromKey()));
+ serverGroupAddress.add(new PROPERTY_VALUE("deployment", fileName));
+ Operation step2 = new
Operation("add",serverGroupAddress,"enabled","true");
+
+ CompositeOperation cop = new CompositeOperation();
+ cop.addStep(step1);
+ cop.addStep(step2);
- report.setStatus(CreateResourceStatus.SUCCESS) ;
+ JsonNode result = connection.execute(cop);
+ if (ASConnection.isErrorReply(result)) {
+ report.setErrorMessage(ASConnection.getFailureDescription(resultNode));
+ report.setStatus(CreateResourceStatus.FAILURE);
+ }
+ else {
+ report.setStatus(CreateResourceStatus.SUCCESS);
+ }
return report;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingGroupDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingGroupDiscovery.java
index 4411f8c..89472b8 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingGroupDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingGroupDiscovery.java
@@ -64,7 +64,7 @@ public class SocketBindingGroupDiscovery implements
ResourceDiscoveryComponent<B
JsonNode json = connection.getLevelData(null, null);
- if (!connection.isErrorReply(json)) {
+ if (!ASConnection.isErrorReply(json)) {
Domain domain = mapper.readValue(json, new TypeReference<Domain>()
{});
for (Map.Entry<String,String> entry:
domain.socketBindingGroup.entrySet()) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index e351237..b6619b8 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -98,7 +98,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
childType = childType.substring(1);
json = connection.execute(new ReadChildrenNames(addr, childType));
}
- if (!connection.isErrorReply(json)) {
+ if (!ASConnection.isErrorReply(json)) {
if (recursive) {
int i = path.lastIndexOf("/");
String subPath = path.substring(i+1);
@@ -130,13 +130,12 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
String name = resKey.substring(resKey.lastIndexOf("/")
+ 1);
-
DiscoveredResourceDetails detail = new
DiscoveredResourceDetails(
context.getResourceType(), // DataType
resKey, // Key
name, // Name
null, // Version
- "TODO", // subsystem.description, //
Description
+ "TODO", // subsystem.description, // TODO
Description
config2,
null);
details.add(detail);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenNames.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenNames.java
index 8c5b37c..23d10bb 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenNames.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenNames.java
@@ -27,7 +27,7 @@ import java.util.List;
public class ReadChildrenNames extends Operation {
/**
- * Reas children names of a given type below a given address
+ * Read children names of a given type below a given address
* @param address Address to look at e.g. /profile/default/subsystem/messaging
* @param childType e.g. queue
*/
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadResource.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadResource.java
new file mode 100644
index 0000000..c2eab45
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadResource.java
@@ -0,0 +1,32 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import java.util.List;
+
+/**
+ * Reads data for one AS 7 resource
+ * @author Heiko W. Rupp
+ */
+public class ReadResource extends Operation {
+
+ public ReadResource(List<PROPERTY_VALUE> address) {
+ super("read-resource", address);
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index e3bd676..435f58f 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -150,10 +150,20 @@
<c:simple-property name="jvm"/>
<c:simple-property name="deployment"
required="false"/> <!-- TODO change structure. Or put below as resource?
-->
</resource-configuration>
- <service name="Deployment" class="BaseComponent"
discovery="SubsystemDiscovery" createDeletePolicy="create-only">
+
+ <service name="Deployment" class="BaseComponent"
discovery="SubsystemDiscovery" createDeletePolicy="create-only"
creationDataType="content">
<plugin-configuration>
<c:simple-property name="path"
default="/deployment/*" readOnly="true"/>
</plugin-configuration>
+
+ <content name="deployment" category="deployable"
isCreationType="true" description="Deployments on this domain">
+ <configuration>
+ <c:group name="deployment"
displayName="Deployment Options">
+ <c:simple-property name="runtimeName"
required="true"/>
+ </c:group>
+ </configuration>
+ </content>
+
</service>
</server>
<server name="Host"
@@ -489,6 +499,21 @@
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="data-source/*"/>
</plugin-configuration>
+
+ <resource-configuration>
+ <c:map-property name="configuration">
+ <c:simple-property name="connection-url"/>
+ <c:simple-property name="driver-class"/>
+ <c:simple-property name="jndi-name"/>
+ <c:simple-property name="driver"/>
+ <c:simple-property name="pool-name"/>
+ <c:simple-property name="use-java-context"
type="boolean"/>
+ <c:simple-property name="enabled"
type="boolean"/>
+ <c:simple-property name="user-name"/>
+ <c:simple-property name="password"/>
+ <!-- TODO more when they become available in the AS -->
+ </c:map-property>
+ </resource-configuration>
</service>
<service name="XADataSource"
commit 13237c98e08a967eb8ffe7c397f9bf8e6cf0110f
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Apr 11 11:39:40 2011 +0200
Small reformat + cleanup
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index 0182077..e351237 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -107,51 +107,48 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
if (subNode==null || subNode.isNull())
subNode = json.get(subPath); // TODO clean this up. to get the
'key' in a path from the AS we need to use get()
-// Map<String,Subsystem> subsystemMap = mapper.readValue(subNode,new
TypeReference<Map<String,Subsystem>>() {});
if (subNode!=null && subNode.isContainerNode()){
- Iterator<JsonNode> iter = subNode.getElements();
-// if (subsystemMap==null) {
-// log.warn("SubsystemMap was null for path [" + path +
"] and subPath ["+ subPath + "] and subNode [" + subNode +
"]");
-// return Collections.emptySet();
-// }
+ Iterator<JsonNode> iter = subNode.getElements();
while (iter.hasNext()) {
JsonNode node = iter.next();
- String val = node.getTextValue();
+ String val = node.getTextValue();
- String newPath = cpath.replaceAll("\\*",val);
- Configuration config2 = context.getDefaultPluginConfiguration();
- PropertySimple pathProp = new
PropertySimple("path",newPath);
- config2.put(pathProp);
+ String newPath = cpath.replaceAll("\\*",val);
+ Configuration config2 = context.getDefaultPluginConfiguration();
+ PropertySimple pathProp = new
PropertySimple("path",newPath);
+ config2.put(pathProp);
- String resKey;
- String childType = cpath.substring(0, cpath.length() - 2);
- if (childType.startsWith("/"))
- childType = childType.substring(1);
+ String resKey;
+ String childType = cpath.substring(0, cpath.length() - 2);
+ if (childType.startsWith("/"))
+ childType = childType.substring(1);
- resKey = context.getParentResourceContext().getResourceKey()
+ "/" +childType + "/" + val;
- String name = resKey.substring(resKey.lastIndexOf("/") +
1);
+ resKey = context.getParentResourceContext().getResourceKey() +
"/" +childType + "/" + val;
+ String name = resKey.substring(resKey.lastIndexOf("/")
+ 1);
- DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- context.getResourceType(), // DataType
- resKey, // Key
- name, // Name
- null, // Version
- "TODO", // subsystem.description, // Description
- config2,
- null);
- details.add(detail);
- }
+ DiscoveredResourceDetails detail = new
DiscoveredResourceDetails(
+ context.getResourceType(), // DataType
+ resKey, // Key
+ name, // Name
+ null, // Version
+ "TODO", // subsystem.description, //
Description
+ config2,
+ null);
+ details.add(detail);
+ }
}
else {
- System.out.println("subnode was no array");
- if (subNode==null)
+ if (subNode==null) {
log.error("subNode was null for " + path + " and
type " + context.getResourceType().getName());
+ }
+ else if (!subNode.isNull())
+ log.info("subnode was no container");
}
}
commit 9129e2b888dd8131ee9e816bb45afb484c8a52ef
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Apr 11 11:26:57 2011 +0200
Create correct resource key looking at types.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index 747aff0..0182077 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -76,11 +76,14 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
path = cpath;
if (parentPath!=null && !parentPath.isEmpty()) {
- if (parentPath.endsWith("/") || path.startsWith("/"))
+ if (recursive)
+ path = parentPath;
+ else if (parentPath.endsWith("/") ||
path.startsWith("/"))
path = parentPath + path;
else
path = parentPath + "/" + path;
}
+
System.out.println("total path: [" + path + "]");
@@ -105,7 +108,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
subNode = json.get(subPath); // TODO clean this up. to get the
'key' in a path from the AS we need to use get()
// Map<String,Subsystem> subsystemMap = mapper.readValue(subNode,new
TypeReference<Map<String,Subsystem>>() {});
- if (subNode!=null && subNode.isArray()) {
+ if (subNode!=null && subNode.isContainerNode()){
Iterator<JsonNode> iter = subNode.getElements();
// if (subsystemMap==null) {
@@ -123,13 +126,19 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
PropertySimple pathProp = new
PropertySimple("path",newPath);
config2.put(pathProp);
- String resKey = context.getParentResourceContext().getResourceKey() +
"/" + val;
+ String resKey;
+ String childType = cpath.substring(0, cpath.length() - 2);
+ if (childType.startsWith("/"))
+ childType = childType.substring(1);
+
+ resKey = context.getParentResourceContext().getResourceKey()
+ "/" +childType + "/" + val;
String name = resKey.substring(resKey.lastIndexOf("/") +
1);
+
DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
context.getResourceType(), // DataType
- path + "/" + val, // Key
+ resKey, // Key
name, // Name
null, // Version
"TODO", // subsystem.description, // Description
commit 1e328a1a6e156566cc5d28be7449915c6fdd5df1
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Apr 8 19:12:53 2011 +0200
Re-activate the undeployment
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
index e477886..11e25ad 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
@@ -80,8 +80,7 @@ public class UploadAndDeployTest {
assert ret.get("outcome").getTextValue().equals("success") :
"add to sg was no success " + ret.getTextValue();
- // Now teat down stuff again
-/*
+ // Now tear down stuff again
Operation undeploy = new Operation("remove",serverGroupAddress);
ret = connection.execute(undeploy);
@@ -100,10 +99,8 @@ public class UploadAndDeployTest {
System.out.flush();
-*/
}
- @Test(enabled = false)
public void testUploadComposite() throws Exception {
String bytes_value = prepare();
commit afa28b8660dbcd8c0041475a3d41e765f038dd08
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Apr 8 19:06:10 2011 +0200
Upload and deployment of files into server groups.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 0c6d516..491fb77 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -185,6 +185,7 @@ public class ASConnection {
String result = mapper.writeValueAsString(operation);
System.out.println("Json to send: " + result);
+ System.out.flush();
mapper.writeValue(out, operation);
out.flush();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
index f3e9ee0..63b7881 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
@@ -20,9 +20,11 @@ package org.rhq.modules.plugins.jbossas7;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
@@ -32,6 +34,7 @@ import com.sun.org.apache.xerces.internal.impl.xpath.regex.REUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.ObjectMapper;
/**
* Connection for uploading of content.
@@ -53,7 +56,7 @@ public class ASUploadConnection {
private final Log log = LogFactory.getLog(ASUploadConnection.class);
BufferedOutputStream os = null;
- BufferedInputStream is = null;
+ InputStream is = null;
private HttpURLConnection connection;
public OutputStream getOutputStream(String fileName) {
@@ -78,12 +81,35 @@ public class ASUploadConnection {
}
public JsonNode finishUpload() {
+ JsonNode tree = null;
try {
os.write(buildPostRequestFooter());
os.flush();
- is = new BufferedInputStream(connection.getInputStream());
- // TODO read from IN
+ int code = connection.getResponseCode();
+ if (code==500)
+ is = connection.getErrorStream();
+ else
+ is = connection.getInputStream();
+
+ if (is != null) {
+ BufferedReader in = new BufferedReader(new InputStreamReader(is));
+ String line;
+ StringBuilder builder = new StringBuilder();
+ while ((line = in.readLine()) != null) {
+ builder.append(line);
+ }
+
+ ObjectMapper mapper = new ObjectMapper();
+
+ String s = builder.toString();
+ if (s!=null)
+ tree = mapper.readTree(s);
+ else
+ System.out.println("- no result received from InputStream
-");
+ }
+ else
+ System.out.println("- no InputStream available -");
} catch (IOException e) {
e.printStackTrace(); // TODO: Customise this generated block
@@ -93,7 +119,7 @@ public class ASUploadConnection {
closeQuietly(os);
}
- return null;
+ return tree;
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
index 9650731..0e26e7d 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
@@ -20,6 +20,9 @@ package org.rhq.modules.plugins.jbossas7;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -27,7 +30,10 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
+import org.rhq.core.domain.content.PackageDetailsKey;
import org.rhq.core.domain.content.PackageType;
+import org.rhq.core.domain.content.transfer.ContentResponseResult;
+import org.rhq.core.domain.content.transfer.DeployIndividualPackageResponse;
import org.rhq.core.domain.content.transfer.DeployPackageStep;
import org.rhq.core.domain.content.transfer.DeployPackagesResponse;
import org.rhq.core.domain.content.transfer.RemovePackagesResponse;
@@ -38,6 +44,10 @@ import org.rhq.core.pluginapi.content.ContentFacet;
import org.rhq.core.pluginapi.content.ContentServices;
import org.rhq.core.pluginapi.inventory.CreateChildResourceFacet;
import org.rhq.core.pluginapi.inventory.CreateResourceReport;
+import org.rhq.modules.plugins.jbossas7.json.CompositeOperation;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+import org.rhq.modules.plugins.jbossas7.json.ReadChildrenNames;
/**
* Component dealing with server group specific things
@@ -58,17 +68,54 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
ContentContext cctx = context.getContentContext();
- String uploadUrl = "http://localhost:9990/domain-api/add-content";
+ DeployPackagesResponse response = new DeployPackagesResponse();
for (ResourcePackageDetails details : packages) {
+
ASUploadConnection uploadConnection = new ASUploadConnection();
- OutputStream out = uploadConnection.getOutputStream(details.getFileName());
+ String fileName = details.getFileName();
+ OutputStream out = uploadConnection.getOutputStream(fileName);
contentServices.downloadPackageBits(cctx, details.getKey(), out, false);
- JsonNode result = uploadConnection.finishUpload();
+ JsonNode uploadResult = uploadConnection.finishUpload();
+ if (uploadResult.has("outcome")) {
+ String outcome = uploadResult.get("outcome").getTextValue();
+ if (outcome.equals("success")) { // Upload was successful, so
now add the file to the server group
+ JsonNode resultNode = uploadResult.get("result");
+ String hash =
resultNode.get("BYTES_VALUE").getTextValue();
+ ASConnection connection = getASConnection();
+
+ List<PROPERTY_VALUE> deploymentsAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ deploymentsAddress.add(new PROPERTY_VALUE("deployment",
fileName));
+ Operation step1 = new Operation("add",deploymentsAddress);
+ step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", hash));
+ step1.addAdditionalProperty("name", fileName);
+
+ List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ serverGroupAddress.add(new
PROPERTY_VALUE("server-group",serverGroupFromKey()));
+ serverGroupAddress.add(new PROPERTY_VALUE("deployment",
fileName));
+ Operation step2 = new
Operation("add",serverGroupAddress,"enabled","true");
+
+ CompositeOperation cop = new CompositeOperation();
+ cop.addStep(step1);
+ cop.addStep(step2);
+
+ JsonNode result = connection.execute(cop);
+ if (connection.isErrorReply(result)) // TODO get failure message into
response
+ response.addPackageResponse(new
DeployIndividualPackageResponse(details.getKey(),ContentResponseResult.FAILURE));
+ else
+ response.addPackageResponse(new
DeployIndividualPackageResponse(details.getKey(),ContentResponseResult.SUCCESS));
+ }
+ else
+ response.addPackageResponse(new
DeployIndividualPackageResponse(details.getKey(),ContentResponseResult.FAILURE));
+ }
+ else {
+ response.addPackageResponse(
+ new DeployIndividualPackageResponse(details.getKey(),
ContentResponseResult.FAILURE));
+ }
}
- return null; // TODO: Customise this generated block
+ return response;
}
@Override
@@ -78,7 +125,32 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
@Override
public Set<ResourcePackageDetails> discoverDeployedPackages(PackageType type)
{
- return null; // TODO: Customise this generated block
+
+ List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ serverGroupAddress.add(new
PROPERTY_VALUE("server-group",serverGroupFromKey()));
+
+ Operation op = new ReadChildrenNames(serverGroupAddress,"deployment");
// TODO read full packages not onyl names
+ JsonNode node = connection.execute(op);
+ if (connection.isErrorReply(node))
+ return null;
+
+ JsonNode result = node.get("result");
+ Iterator<JsonNode> iter = result.getElements();
+ Set<ResourcePackageDetails> details = new
HashSet<ResourcePackageDetails>();
+ while (iter.hasNext()) {
+ JsonNode jNode = iter.next();
+ String file = jNode.getTextValue();
+ String t;
+ if (file.contains("."))
+ t = file.substring(file.lastIndexOf(".")+1);
+ else
+ t = "-none-";
+
+ ResourcePackageDetails detail = new ResourcePackageDetails(new
PackageDetailsKey(file,"1.0",t,"all"));
+ details.add(detail);
+ }
+ return details;
+
}
@Override
@@ -110,4 +182,10 @@ public class ServerGroupComponent extends DomainComponent implements
ContentFace
return report;
}
+
+
+ private String serverGroupFromKey() {
+ String key1 = context.getResourceKey();
+ return key1.substring(key1.lastIndexOf("/")+1);
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index 9aea097..747aff0 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -68,7 +68,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
String parentPath = parentComponent.getPath();
String path;
- if (cpath.endsWith("/*")) {
+ if (cpath!=null && cpath.endsWith("/*")) {
path = cpath.substring(0,cpath.length()-2);
recursive = true;
}
@@ -105,7 +105,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
subNode = json.get(subPath); // TODO clean this up. to get the
'key' in a path from the AS we need to use get()
// Map<String,Subsystem> subsystemMap = mapper.readValue(subNode,new
TypeReference<Map<String,Subsystem>>() {});
- if (subNode.isArray()) {
+ if (subNode!=null && subNode.isArray()) {
Iterator<JsonNode> iter = subNode.getElements();
// if (subsystemMap==null) {
@@ -139,7 +139,10 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
}
}
else {
+
System.out.println("subnode was no array");
+ if (subNode==null)
+ log.error("subNode was null for " + path + " and
type " + context.getResourceType().getName());
}
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
index e538c94..a7abfe6 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
@@ -67,7 +67,6 @@ public class Operation {
public Operation(String operation, List<PROPERTY_VALUE> address) {
this.operation = operation;
this.address = address;
- additionalProperties = Collections.emptyMap();
}
@@ -76,7 +75,7 @@ public class Operation {
}
@JsonAnySetter
- public void addAdditionalProperty(String key, String value) {
+ public void addAdditionalProperty(String key, Object value) {
if (additionalProperties == null)
additionalProperties = new HashMap<String, Object>();
additionalProperties.put(key,value);
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 258da2c..e3bd676 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -150,7 +150,11 @@
<c:simple-property name="jvm"/>
<c:simple-property name="deployment"
required="false"/> <!-- TODO change structure. Or put below as resource?
-->
</resource-configuration>
- <service name="Deployment" class="BaseComponent"
discovery="SubsystemDiscovery" createDeletePolicy="create-only"/>
+ <service name="Deployment" class="BaseComponent"
discovery="SubsystemDiscovery" createDeletePolicy="create-only">
+ <plugin-configuration>
+ <c:simple-property name="path"
default="/deployment/*" readOnly="true"/>
+ </plugin-configuration>
+ </service>
</server>
<server name="Host"
description="Host involved in this domain"
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
index 5ba843f..9110fbd 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
@@ -84,6 +84,7 @@ public class OperationJsonTest {
props.put("someBool",true);
Operation operation = new Operation("add",address,props);
+ operation.addAdditionalProperty("foo","bar");
ObjectMapper mapper = new ObjectMapper();
@@ -97,8 +98,22 @@ public class OperationJsonTest {
assert op.getOperation().equals(operation.getOperation()) : "Operation is
" + op.getOperation();
assert op.getAdditionalProperties().containsKey("someBool") : "Key
someBool not found ";
Object someBool = op.getAdditionalProperties().get("someBool");
- assert Boolean.valueOf((String) someBool) : "someBool was not true";
+ assert Boolean.valueOf((Boolean) someBool) : "someBool was not true";
+ }
+
+ public void addPropsTest() throws Exception {
+ List<PROPERTY_VALUE> address=new ArrayList<PROPERTY_VALUE>(2);
+ PROPERTY_VALUE part = new
PROPERTY_VALUE("/server-group","newOne");
+ address.add(part);
+
+ Operation operation = new Operation("add",address);
+ operation.addAdditionalProperty("foo","bar");
+
+ ObjectMapper mapper = new ObjectMapper();
+
+ String result = mapper.writeValueAsString(operation);
+ System.out.println(result);
}
}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
new file mode 100644
index 0000000..e477886
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/UploadAndDeployTest.java
@@ -0,0 +1,172 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.codehaus.jackson.JsonNode;
+import org.testng.annotations.Test;
+
+import org.rhq.modules.plugins.jbossas7.json.CompositeOperation;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+
+/**
+ * Test uploading and deploying to the domain
+ * To use it, domain server must be up and running locally and
+ * the UPLOAD_FILE must point to a valid archive in the resources directory.
+ * @author Heiko W. Rupp
+ */
+@Test
+public class UploadAndDeployTest {
+
+ static final String TEST_WAR = "test.war";
+ private static final String UPLOAD_FILE = "test-simple.war";
+
+ public void testUploadIndividualSteps() throws Exception {
+
+ String bytes_value = prepare();
+
+ System.out.println("sha: " + bytes_value);
+
+ System.out.println();
+ ASConnection connection = new ASConnection("localhost",9990);
+
+ List<PROPERTY_VALUE> deploymentsAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ deploymentsAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
+ Operation op = new Operation("add",deploymentsAddress);
+ op.addAdditionalProperty("hash",new
PROPERTY_VALUE("BYTES_VALUE",bytes_value));
+ op.addAdditionalProperty("name", TEST_WAR); // this needs to be
separate per upload
+ op.addAdditionalProperty("runtime-name", TEST_WAR);
+ System.out.flush();
+ JsonNode ret = connection.execute(op);
+ System.out.println("Add to /deploy done " + ret);
+ System.out.flush();
+
+ assert ret.toString().contains("success") : ret;
+
+
+ List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ serverGroupAddress.add(new
PROPERTY_VALUE("server-group","main-server-group"));
+ serverGroupAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
+ op.addAdditionalProperty("runtime-name", TEST_WAR);
+ Operation deploy = new
Operation("add",serverGroupAddress,"enabled","true");
+ System.out.flush();
+ ret = connection.execute(deploy);
+ System.out.println("Add to server group done: " + ret);
+ System.out.flush();
+
+ assert ret.has("outcome") : "Ret not valied " +
ret.toString();
+ assert ret.get("outcome").getTextValue().equals("success") :
"add to sg was no success " + ret.getTextValue();
+
+
+ // Now teat down stuff again
+/*
+
+ Operation undeploy = new Operation("remove",serverGroupAddress);
+ ret = connection.execute(undeploy);
+
+ assert ret.has("outcome") : "Ret not valied " +
ret.toString();
+ assert ret.get("outcome").getTextValue().equals("success") :
"remove from sg was no success " + ret.getTextValue();
+
+
+ // remove from domain
+
+ Operation remove = new Operation("remove",deploymentsAddress);
+ ret = connection.execute(remove);
+
+ assert ret.has("outcome") : "Ret not valied " +
ret.toString();
+ assert ret.get("outcome").getTextValue().equals("success") :
"remove from domain was no success " + ret.getTextValue();
+
+ System.out.flush();
+
+*/
+ }
+
+ @Test(enabled = false)
+ public void testUploadComposite() throws Exception {
+
+ String bytes_value = prepare();
+
+
+ List<PROPERTY_VALUE> deploymentsAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ deploymentsAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
+ Operation step1 = new Operation("add",deploymentsAddress);
+ step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", bytes_value));
+ step1.addAdditionalProperty("name", TEST_WAR);
+
+ List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ serverGroupAddress.add(new
PROPERTY_VALUE("server-group","main-server-group"));
+ serverGroupAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
+ Operation step2 = new
Operation("add",serverGroupAddress,"enabled","true");
+
+
+ Operation step3 = new Operation("remove",serverGroupAddress);
+
+ Operation step4 = new Operation("remove",deploymentsAddress);
+
+ CompositeOperation cop = new CompositeOperation();
+ cop.addStep(step1);
+ cop.addStep(step2);
+
+
+ ASConnection connection = new ASConnection("localhost",9990);
+ JsonNode ret = connection.execute(cop);
+ System.out.println(ret);
+ System.out.flush();
+
+ Thread.sleep(1000);
+
+ cop = new CompositeOperation();
+ cop.addStep(step3);
+ cop.addStep(step4);
+ ret = connection.execute(cop);
+
+ System.out.println(ret);
+ System.out.flush();
+
+
+ }
+
+ private String prepare() throws IOException {
+ ASUploadConnection conn = new ASUploadConnection();
+ OutputStream os = conn.getOutputStream("test1.war");
+
+
+
+ InputStream fis = getClass().getClassLoader().getResourceAsStream(UPLOAD_FILE);
+ int b;
+ while ((b = fis.read())!=-1) {
+ os.write(b);
+ }
+ fis.close();
+ JsonNode node = conn.finishUpload();
+ System.out.println(node);
+ assert node.has("outcome") : "No outcome from upload";
+ String outcome = node.get("outcome").getTextValue();
+ assert outcome.equals("success") : "Upload was no success" +
outcome;
+
+ JsonNode resultNode = node.get("result");
+ return resultNode.get("BYTES_VALUE").getTextValue();
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/test/resources/test-simple.war
b/modules/plugins/jboss-as-7/src/test/resources/test-simple.war
new file mode 100644
index 0000000..bd427b1
Binary files /dev/null and b/modules/plugins/jboss-as-7/src/test/resources/test-simple.war
differ
commit 6e262803ae8e328cc397a75d00404ea844f5fb54
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Apr 8 16:34:39 2011 +0200
Add composite operations
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/CompositeOperation.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/CompositeOperation.java
new file mode 100644
index 0000000..98cc214
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/CompositeOperation.java
@@ -0,0 +1,64 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * A composite operation contains multiple steps of a
+ * task that requires many individual operations to complete
+ * @author Heiko W. Rupp
+ */
+public class CompositeOperation extends Operation {
+
+
+
+ @JsonProperty
+ List<Operation> steps = new ArrayList<Operation>();
+
+ OperationHeaders operationHeaders;
+
+ public CompositeOperation(List<Operation> steps) {
+ super("composite",new ArrayList<PROPERTY_VALUE>());
+ this.steps = steps;
+ }
+
+ public CompositeOperation() {
+ super("composite",new ArrayList<PROPERTY_VALUE>());
+ }
+
+ public void addStep(Operation step) {
+ steps.add(step);
+ }
+
+ public void setOperationHeaders(OperationHeaders headers) {
+ operationHeaders = headers;
+ }
+
+ private class OperationHeaders {
+ @JsonProperty("in-series")
+ List<PROPERTY_VALUE>inSeries = Collections.emptyList();
+ @JsonProperty("rollback-across-groups")
+ boolean rollbackAcrossGroups;
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/CompositeOperationTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/CompositeOperationTest.java
new file mode 100644
index 0000000..dddbe51
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/CompositeOperationTest.java
@@ -0,0 +1,108 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.testng.annotations.Test;
+
+import org.rhq.modules.plugins.jbossas7.json.CompositeOperation;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+
+/**
+ * Test composite operations
+ * @author Heiko W. Rupp
+ */
+@Test
+public class CompositeOperationTest {
+
+ public void serializationTest() throws Exception {
+
+ List<PROPERTY_VALUE> address=new ArrayList<PROPERTY_VALUE>(3);
+ PROPERTY_VALUE part = new PROPERTY_VALUE("subsystem","web");
+ address.add(part);
+ part = new PROPERTY_VALUE("connector","http");
+ address.add(part);
+ part = new PROPERTY_VALUE("profile","default");
+ address.add(part);
+
+ CompositeOperation op = new CompositeOperation();
+
+ Operation step1 = new Operation("add", address);
+ op.addStep(step1);
+
+ Operation step2 = new Operation("deploy", address);
+ op.addStep(step2);
+
+ ObjectMapper mapper = new ObjectMapper();
+
+ String result = mapper.writeValueAsString(op);
+
+ System.out.println(result);
+
+ assert result.contains("http");
+
+ }
+
+ public void serializationTest2() throws Exception {
+
+
+ List<PROPERTY_VALUE> deploymentsAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ String TEST_WAR = "test.war";
+ deploymentsAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
+ Operation step1 = new Operation("add",deploymentsAddress);
+ String bytes_value = "123";
+ step1.addAdditionalProperty("hash", new
PROPERTY_VALUE("BYTES_VALUE", bytes_value));
+ step1.addAdditionalProperty("name", TEST_WAR);
+
+ List<PROPERTY_VALUE> serverGroupAddress = new
ArrayList<PROPERTY_VALUE>(1);
+ serverGroupAddress.add(new
PROPERTY_VALUE("server-group","main-server-group"));
+ serverGroupAddress.add(new PROPERTY_VALUE("deployment", TEST_WAR));
+ Operation step2 = new
Operation("add",serverGroupAddress,"enabled","true");
+
+
+ Operation step3 = new Operation("remove",serverGroupAddress);
+
+ Operation step4 = new Operation("remove",deploymentsAddress);
+
+ CompositeOperation cop = new CompositeOperation();
+ cop.addStep(step1);
+ cop.addStep(step2);
+ cop.addStep(step3);
+ cop.addStep(step4);
+
+ ObjectMapper mapper = new ObjectMapper();
+
+ String result = mapper.writeValueAsString(cop);
+ System.out.println(result);
+ System.out.flush();
+
+ JsonNode node = mapper.readTree(result);
+
+ assert node.has("operation");
+ assert !node.get("operation").isNull() : "Operations was null, but
should not be " + result;
+ assert
node.get("operation").getTextValue().equals("composite") : node;
+
+ }
+}
commit 1054ae44f1831fc3c7787bd118d4d5e7c1ad725b
Merge: 7bda199 7b91cb2
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Apr 6 21:52:03 2011 +0200
Merge branch 'master' into as7plugin
commit 7bda199733e460362365e15793cc607b25acff48
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Apr 6 21:49:39 2011 +0200
Improve detection of child resources
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 5dbd0b3..644fc24 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -52,6 +52,7 @@ import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -329,6 +330,9 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
}
protected List<PROPERTY_VALUE> pathToAddress(String path) {
+ if (path==null || path.isEmpty())
+ return Collections.emptyList();
+
if (path.endsWith("/"))
path = path.substring(0,path.length()-1);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
index a06a296..21005a9 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
@@ -114,8 +114,11 @@ public class DomainComponent extends BaseComponent implements
OperationFacet{
} else if (what.equals("destination")) {
address.addAll(pathToAddress(getPath()));
String newName = parameters.getSimpleValue("name","");
- String type =
parameters.getSimpleValue("type","Queue").toLowerCase();
- address.add(new PROPERTY_VALUE(type,newName));
+// String type =
parameters.getSimpleValue("type","Queue").toLowerCase();
+// address.add(new PROPERTY_VALUE(type,newName));
+ String queueName =
parameters.getSimpleValue("queue-address","");
+ Map<String,Object> props = new HashMap<String, Object>();
+ props.put("queue-address",queueName);
operation = new Operation(op,address);
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index 1c498d1..9aea097 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -23,11 +23,13 @@ import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
-import org.rhq.modules.plugins.jbossas7.json.Subsystem;
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+import org.rhq.modules.plugins.jbossas7.json.ReadChildrenNames;
import java.util.Collections;
import java.util.HashSet;
-import java.util.Map;
+import java.util.Iterator;
+import java.util.List;
import java.util.Set;
import org.apache.commons.logging.Log;
@@ -35,7 +37,6 @@ import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.type.TypeReference;
/**
* Discover subsystems
@@ -83,47 +84,63 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
System.out.println("total path: [" + path + "]");
- JsonNode json = connection.getLevelData(path,recursive, false);
+ JsonNode json ;
+ if (!recursive)
+ json = connection.getLevelData(path,recursive, false);
+ else {
+ List<PROPERTY_VALUE> addr ;
+ addr = parentComponent.pathToAddress(parentPath);
+ String childType = cpath.substring(0, cpath.length() - 2);
+ if (childType.startsWith("/"))
+ childType = childType.substring(1);
+ json = connection.execute(new ReadChildrenNames(addr, childType));
+ }
if (!connection.isErrorReply(json)) {
if (recursive) {
int i = path.lastIndexOf("/");
String subPath = path.substring(i+1);
- JsonNode subNode = json.findPath(subPath);
+ JsonNode subNode = json.findPath("result");
if (subNode==null || subNode.isNull())
subNode = json.get(subPath); // TODO clean this up. to get the
'key' in a path from the AS we need to use get()
- Map<String,Subsystem> subsystemMap = mapper.readValue(subNode,new
TypeReference<Map<String,Subsystem>>() {});
+// Map<String,Subsystem> subsystemMap = mapper.readValue(subNode,new
TypeReference<Map<String,Subsystem>>() {});
+ if (subNode.isArray()) {
- if (subsystemMap==null) {
- log.warn("SubsystemMap was null for path [" + path +
"] and subPath ["+ subPath + "] and subNode [" + subNode +
"]");
- return Collections.emptySet();
- }
+ Iterator<JsonNode> iter = subNode.getElements();
+// if (subsystemMap==null) {
+// log.warn("SubsystemMap was null for path [" + path +
"] and subPath ["+ subPath + "] and subNode [" + subNode +
"]");
+// return Collections.emptySet();
+// }
+ while (iter.hasNext()) {
+ JsonNode node = iter.next();
+ String val = node.getTextValue();
- for (Map.Entry<String,Subsystem> entry: subsystemMap.entrySet()) {
- String key = entry.getKey();
- Subsystem subsystem = entry.getValue();
- String newPath = cpath.replaceAll("\\*",key);
+ String newPath = cpath.replaceAll("\\*",val);
Configuration config2 = context.getDefaultPluginConfiguration();
PropertySimple pathProp = new
PropertySimple("path",newPath);
config2.put(pathProp);
- String resKey = context.getParentResourceContext().getResourceKey() +
"/" + key;
+ String resKey = context.getParentResourceContext().getResourceKey() +
"/" + val;
String name = resKey.substring(resKey.lastIndexOf("/") +
1);
DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
context.getResourceType(), // DataType
- path + "/" + key, // Key
+ path + "/" + val, // Key
name, // Name
null, // Version
- subsystem.description, // Description
+ "TODO", // subsystem.description, // Description
config2,
null);
details.add(detail);
}
+ }
+ else {
+ System.out.println("subnode was no array");
+ }
}
else {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/PROPERTY_VALUE.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/PROPERTY_VALUE.java
index b2c8223..efe389b 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/PROPERTY_VALUE.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/PROPERTY_VALUE.java
@@ -59,4 +59,11 @@ public class PROPERTY_VALUE implements Serializable{
this.value = value;
}
+ @Override
+ public String toString() {
+ return "PROPERTY_VALUE{" +
+ "key='" + key + '\'' +
+ ", value='" + value + '\'' +
+ '}';
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenNames.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenNames.java
new file mode 100644
index 0000000..8c5b37c
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/ReadChildrenNames.java
@@ -0,0 +1,37 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import java.util.List;
+
+/**
+ * Operation that reads children of a given type from an address
+ * @author Heiko W. Rupp
+ */
+public class ReadChildrenNames extends Operation {
+
+ /**
+ * Reas children names of a given type below a given address
+ * @param address Address to look at e.g. /profile/default/subsystem/messaging
+ * @param childType e.g. queue
+ */
+ public ReadChildrenNames(List<PROPERTY_VALUE> address, String childType) {
+ super("read-children-names",address,"child-type",childType);
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 6741bb3..258da2c 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -51,7 +51,7 @@
version="4.0.0-SNAPSHOT"
- <depends plugin="JMX" useClasses="true"/>
+<!-- <depends plugin="JMX" useClasses="true"/> -->
<!-- TODO I think we should introduce an abstract AS7 plugin that contains some
base functionality and then
@@ -284,6 +284,7 @@
<server name="Messaging"
discovery="SubsystemDiscovery"
class="DomainComponent"
+ description="The underlying HornetQ based messaging subsystem"
singleton="true"
<runs-inside>
@@ -298,12 +299,15 @@
<operation name="destination:add" displayName="Add
destination" description="Add a Queue or Topic">
<parameters>
<c:simple-property name="name" description="Name of the
Destination" required="true"/>
+ <c:simple-property name="queue-address"
description="The queue address defines what address is used for routing
messages." required="true"/>
<c:simple-property name="type" description="Type of
Destination to create" default="Queue">
<c:property-options>
<c:option value="Queue"/>
<c:option value="Topic"/>
</c:property-options>
</c:simple-property>
+ <c:simple-property name="filter" description="The queue
message filter definition."/>
+ <c:simple-property name="durable" description="Defines
whether the queue is durable." type="boolean"
default="false"/>
</parameters>
<results>
<c:simple-property name="operationResult"/>
@@ -329,7 +333,7 @@
class="BaseComponent"
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/acceptor"/>
+ <c:simple-property name="path" readOnly="true"
default="acceptor"/>
</plugin-configuration>
</service>
<service name="MessagingConnector"
@@ -337,17 +341,65 @@
class="BaseComponent"
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/connector"/>
+ <c:simple-property name="path" readOnly="true"
default="connector"/>
</plugin-configuration>
</service>
- <service name="Queue"
+ <service name="HQueue"
discovery="SubsystemDiscovery"
class="BaseComponent"
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/queue/*"/>
+ <c:simple-property name="path" readOnly="true"
default="queue/*"/>
+ </plugin-configuration>
+ <resource-configuration>
+ <c:simple-property name="queue-address"
required="true"/>
+ <c:simple-property name="filter" />
+ <c:simple-property name="durable"
type="boolean"/>
+ </resource-configuration>
+
+ </service>
+ </server>
+
+ <server name="JMS"
+ discovery="SubsystemDiscovery"
+ class="DomainComponent"
+ description="The JMS messaging subsystem"
+ singleton="true"
+
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/subsystem/jms"/>
+ </plugin-configuration>
+
+ <service name="Queue"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="queue/*"/>
</plugin-configuration>
</service>
+ <service name="Topic"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="topic/*"/>
+ </plugin-configuration>
+ </service>
+ <service name="Connection-Factory"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="connection-factory/*"/>
+ </plugin-configuration>
+ </service>
+
</server>
<server name="JBossWeb"
@@ -377,9 +429,9 @@
<metric property="bytesSent"
measurementType="trendsup"/>
<metric property="bytesReceived"
measurementType="trendsup"/>
<metric property="processingTime"
measurementType="trendsup"/>
- <metric property="errorCount"
measurementType="trendsup"/>
+ <metric property="errorCount"
measurementType="trendsup" displayType="summary"/>
<metric property="maxTime" />
- <metric property="requestCount"
measurementType="trendsup"/>
+ <metric property="requestCount"
measurementType="trendsup" displayType="summary"/>
<resource-configuration>
<c:simple-property name="protocol"
required="false" description="The web connector protocol."/>
@@ -431,7 +483,7 @@
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/data-source/*"/>
+ <c:simple-property name="path" readOnly="true"
default="data-source/*"/>
</plugin-configuration>
</service>
@@ -442,7 +494,7 @@
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/xa-data-source/*"/>
+ <c:simple-property name="path" readOnly="true"
default="xa-data-source/*"/>
</plugin-configuration>
</service>
@@ -453,7 +505,7 @@
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/jdbc-driver/*"/>
+ <c:simple-property name="path" readOnly="true"
default="jdbc-driver/*"/>
</plugin-configuration>
</service>
commit f2dc89709b73b7506403f04ff36dc894a44232f5
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Apr 6 12:28:18 2011 +0200
Detect Managed AS through hosts.xml , start with deployments.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
new file mode 100644
index 0000000..f3e9ee0
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASUploadConnection.java
@@ -0,0 +1,144 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+import com.sun.org.apache.xerces.internal.impl.xpath.regex.REUtil;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.jackson.JsonNode;
+
+/**
+ * Connection for uploading of content.
+ * Partially taken from
https://github.com/jbossas/jboss-as/blob/master/testsuite/smoke/src/test/...
+ *
+ * @author Jonathan Pearlin (of the original code)
+ * @author Heiko W. Rupp
+ */
+public class ASUploadConnection {
+
+ private static final String BOUNDARY =
"-----------------------------261773107125236";
+
+ private static final String CRLF = "\r\n";
+
+ private static final String POST_REQUEST_METHOD = "POST";
+
+ private static final String UPLOAD_URL =
"http://localhost:9990/domain-api/add-content";
+
+ private final Log log = LogFactory.getLog(ASUploadConnection.class);
+
+ BufferedOutputStream os = null;
+ BufferedInputStream is = null;
+ private HttpURLConnection connection;
+
+ public OutputStream getOutputStream(String fileName) {
+ try {
+ // Create the HTTP connection to the upload URL
+ connection = (HttpURLConnection) new URL(UPLOAD_URL).openConnection();
+ connection.setDoInput(true);
+ connection.setDoOutput(true);
+ connection.setRequestMethod(POST_REQUEST_METHOD);
+
+ // Grab the test WAR file and get a stream to its contents to be included in
the POST.
+ os = new BufferedOutputStream(connection.getOutputStream());
+ os.write(buildPostRequestHeader(fileName));
+
+ return os;
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+ public JsonNode finishUpload() {
+ try {
+ os.write(buildPostRequestFooter());
+ os.flush();
+
+ is = new BufferedInputStream(connection.getInputStream());
+ // TODO read from IN
+
+ } catch (IOException e) {
+ e.printStackTrace(); // TODO: Customise this generated block
+ }
+ finally {
+ closeQuietly(is);
+ closeQuietly(os);
+ }
+
+ return null;
+ }
+
+
+ private byte[] buildPostRequestHeader(String fileName) {
+ final StringBuilder builder = new StringBuilder();
+ builder.append(buildPostRequestHeaderSection("form-data;
name=\"test1\"", "", "test1"));
+ builder.append(buildPostRequestHeaderSection("form-data;
name=\"test2\"", "", "test2"));
+ builder.append(buildPostRequestHeaderSection("form-data;
name=\"file\"; filename=\""+fileName+"\"",
"application/octet-stream", ""));
+ return builder.toString().getBytes();
+ }
+
+ private String buildPostRequestHeaderSection(final String contentDisposition, final
String contentType, final String content) {
+ final StringBuilder builder = new StringBuilder();
+ builder.append(BOUNDARY);
+ builder.append(CRLF);
+ if(contentDisposition != null && contentDisposition.length() > 0) {
+ builder.append(String.format("Content-Disposition: %s",
contentDisposition));
+ }
+ builder.append(CRLF);
+ if(contentType != null && contentType.length() > 0) {
+ builder.append(String.format("Content-Type: %s", contentType));
+ }
+ builder.append(CRLF);
+ if(content != null && content.length() > 0) {
+ builder.append(content);
+ }
+ builder.append(CRLF);
+ return builder.toString();
+ }
+
+ private byte[] buildPostRequestFooter() {
+ final StringBuilder builder = new StringBuilder();
+ builder.append(CRLF);
+ builder.append(BOUNDARY);
+ builder.append("--");
+ builder.append(CRLF);
+ return builder.toString().getBytes();
+ }
+
+
+ private void closeQuietly(final Closeable closeable) {
+ if(closeable != null) {
+ try {
+ closeable.close();
+ } catch (final IOException e) {}
+ }
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
index 5ea4bd7..8597d8f 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
@@ -1,3 +1,21 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
import java.io.File;
@@ -58,12 +76,9 @@ public class BaseProcessDiscovery implements
ResourceDiscoveryComponent
String serverNameFull;
String serverName;
String psName = psr.getProcessScan().getName();
- if (psName.equals("ProcessManager")) {
- serverNameFull = "ProcessManager";
- serverName = "ProcessManager";
- } else if (psName.equals("ASManager")) {
- serverName = "ASManager";
- serverNameFull = "ASManager";
+ if (psName.equals("ProcessController")) {
+ serverNameFull = "ProcessController";
+ serverName = "ProcessController";
} else if (psName.equals("HostController")) {
serverName = "HostController";
serverNameFull = "HostController";
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
new file mode 100644
index 0000000..86e3b99
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASDiscovery.java
@@ -0,0 +1,289 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.configuration.PropertyMap;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.pluginapi.event.log.LogFileEventResourceComponentHelper;
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.ProcessScanResult;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.core.system.ProcessInfo;
+
+/**
+ * Discovery class for managed AS 7 instances.
+ *
+ * @author Heiko W. Rupp
+ */
+public class ManagedASDiscovery implements ResourceDiscoveryComponent
+
+{
+
+ static final String DJBOSS_SERVER_BASE_DIR = "-Djboss.server.base.dir=";
+ static final String DORG_JBOSS_BOOT_LOG_FILE =
"-Dorg.jboss.boot.log.file=";
+ static final String DLOGGING_CONFIGURATION = "-Dlogging.configuration=";
+ static final int DEFAULT_MGMT_PORT = 9990;
+ private final Log log = LogFactory.getLog(this.getClass());
+ private Document hostXml;
+ private static final String DJBOSS_SERVER_HOME_DIR = "-Djboss.home.dir";
+
+ /**
+ * Run the auto-discovery
+ */
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext discoveryContext) throws Exception {
+ Set<DiscoveredResourceDetails> discoveredResources = new
HashSet<DiscoveredResourceDetails>();
+
+
+ List<ProcessScanResult> scans =
discoveryContext.getAutoDiscoveredProcesses();
+
+ for (ProcessScanResult psr : scans) {
+
+ // get the HostController, as this is an indicator for managed AS
+ String psName = psr.getProcessScan().getName();
+ if (!psName.equals("HostController"))
+ continue;
+
+ // Now we have the host controller, lets get the host.xml file
+ // and obtain the servers from there.
+ ProcessInfo processInfo = psr.getProcessInfo();
+ readHostXml(processInfo);
+ String hostName = findHostName();
+ int port = getManagementPortFromHostXml();
+
+
+ List<ServerInfo> serverNames = getServersFromHostXml();
+ for (ServerInfo serverInfo : serverNames) {
+
+ Configuration config = discoveryContext.getDefaultPluginConfiguration();
+ config.put(new PropertySimple("domainHost",hostName));
+ config.put(new PropertySimple("group",serverInfo.group));
+ config.put(new PropertySimple("port",port));
+
+ // TODO this fails for the downed servers.
+ // get from the domain or other place as soon as the domain provides it.
+ initLogFile(scans, serverInfo.name, config,
getHomeDirFromCommandLine(processInfo.getCommandLine()));
+
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ discoveryContext.getResourceType(), // ResourceType
+ hostName + "/" + serverInfo.name, // key
+ serverInfo.name, // Name
+ null, // TODO real version - get from Domain as soon as it is
provided
+ "Managed AS 7 instance", // Description
+ config,
+ null
+ );
+
+ // Add to return values
+ discoveredResources.add(detail);
+ log.info("Discovered new ... " +
discoveryContext.getResourceType() + ", " + serverInfo);
+ }
+ }
+ return discoveredResources;
+ }
+
+ /**
+ * Loop through the Process scans for ManagedAS and if found extract the logfile
path.
+ * @param scans process scan results
+ * @param name server name to look for
+ * @param config config to put the info in
+ * @param basePath
+ */
+ private void initLogFile(List<ProcessScanResult> scans, String name,
Configuration config, String basePath) {
+
+ for (ProcessScanResult psr : scans) {
+ if (!psr.getProcessScan().getName().equals("ManagedAS"))
+ continue;
+
+ String[] commandLine = psr.getProcessInfo().getCommandLine();
+
+ String logFile = basePath + File.separator +
getLogFileFromCommandLine(commandLine);
+
+ if (logFile.contains(name))
+ initLogEventSourcesConfigProp(logFile,config);
+ }
+ }
+
+ private int getManagementPortFromHostXml() {
+ Element host = hostXml.getDocumentElement();
+ NodeList interfaceParent =
host.getElementsByTagName("management-interfaces");
+ if (interfaceParent ==null || interfaceParent.getLength()==0) {
+ log.warn("No <management-interfaces> found in host.xml");
+ return DEFAULT_MGMT_PORT;
+ }
+ NodeList mgmtInterfaces = interfaceParent.item(0).getChildNodes();
+ if (mgmtInterfaces==null || mgmtInterfaces.getLength()==0) {
+ log.warn("No <*-interface> found in host.xml");
+ return DEFAULT_MGMT_PORT;
+ }
+ for (int i = 0 ; i < mgmtInterfaces.getLength(); i++) {
+ if (!(mgmtInterfaces.item(i) instanceof Element))
+ continue;
+
+ Element mgmtInterface = (Element) mgmtInterfaces.item(i);
+ if (mgmtInterface.getNodeName().equals("http-interface")) {
+ String tmp = mgmtInterface.getAttribute("port");
+ int port = Integer.valueOf(tmp);
+ return port;
+ }
+ }
+ return DEFAULT_MGMT_PORT;
+ }
+
+ private List<ServerInfo> getServersFromHostXml() {
+
+ Element host = hostXml.getDocumentElement();
+ NodeList serversElement = host.getElementsByTagName("servers");
+ if (serversElement ==null || serversElement.getLength()==0) {
+ log.warn("No <servers> found in host.xml");
+ return Collections.emptyList();
+ }
+ NodeList servers = serversElement.item(0).getChildNodes();
+ if (servers==null || servers.getLength()==0) {
+ log.warn("No <server> found in host.xml");
+ return Collections.emptyList();
+ }
+ List<ServerInfo> result = new ArrayList<ServerInfo>();
+ for (int i = 0 ; i < servers.getLength(); i++) {
+ if (!(servers.item(i) instanceof Element))
+ continue;
+
+ ServerInfo info = new ServerInfo();
+ Element server = (Element) servers.item(i);
+ info.name = server.getAttribute("name");
+ info.group = server.getAttribute("group");
+ String autoStart = server.getAttribute("autoStart");
+ if (autoStart==null || autoStart.isEmpty())
+ autoStart = "false";
+ info.autoStart = Boolean.getBoolean(autoStart);
+
+ result.add(info);
+ }
+
+ return result;
+ }
+
+
+ private String findHostName() {
+ String hostName = hostXml.getDocumentElement().getAttribute("name");
+ return hostName;
+ }
+
+ private void readHostXml(ProcessInfo processInfo) {
+ String hostXmlFile = getHostXmlFileLocation(processInfo);
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ try {
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ InputStream is = new FileInputStream(hostXmlFile);
+ hostXml = builder.parse(is);
+ is.close();
+ } catch (Exception e) {
+ e.printStackTrace(); // TODO: Customise this generated block
+ }
+ }
+
+ /**
+ * Get the location of the host definition file (host.xml in domain mode,
standalone.xml
+ * in standalone mode.
+ *
+ * @param processInfo ProcessInfo structure containing the ENV variables
+ * @return The path to the definition file.
+ */
+ private String getHostXmlFileLocation(ProcessInfo processInfo) {
+
+ String home = getHomeDirFromCommandLine(processInfo.getCommandLine());
+ StringBuilder builder = new StringBuilder(home);
+ builder.append("/domain");
+ builder.append("/configuration");
+ builder.append("/host.xml");
+ return builder.toString();
+
+ }
+
+
+
+ String getHomeDirFromCommandLine(String[] commandLine) {
+ for (String line: commandLine) {
+ if (line.startsWith(DJBOSS_SERVER_HOME_DIR))
+ return line.substring(DJBOSS_SERVER_HOME_DIR.length()+1);
+ }
+ return "";
+ }
+
+//-Dorg.jboss.boot.log.file=/devel/jbas7/jboss-as/build/target/jboss-7.0.0.Alpha2/domain/log/server-manager/boot.log
+//-Dlogging.configuration=file:/devel/jbas7/jboss-as/build/target/jboss-7.0.0.Alpha2/domain/configuration/logging.properties
+
+ String getLogFileFromCommandLine(String[] commandLine) {
+
+ for (String line: commandLine) {
+ if (line.startsWith(DORG_JBOSS_BOOT_LOG_FILE))
+ return line.substring(DORG_JBOSS_BOOT_LOG_FILE.length());
+ }
+ return "";
+ }
+
+ private void initLogEventSourcesConfigProp(String fileName, Configuration
pluginConfiguration) {
+
+ PropertyList logEventSources = pluginConfiguration
+ .getList(LogFileEventResourceComponentHelper.LOG_EVENT_SOURCES_CONFIG_PROP);
+
+ if (logEventSources==null)
+ return;
+
+ File serverLogFile = new File(fileName);
+
+ if (serverLogFile.exists() && !serverLogFile.isDirectory()) {
+ PropertyMap serverLogEventSource = new
PropertyMap("logEventSource");
+ serverLogEventSource.put(new PropertySimple(
+
LogFileEventResourceComponentHelper.LogEventSourcePropertyNames.LOG_FILE_PATH,
serverLogFile));
+ serverLogEventSource.put(new PropertySimple(
+ LogFileEventResourceComponentHelper.LogEventSourcePropertyNames.ENABLED,
Boolean.FALSE));
+ logEventSources.add(serverLogEventSource);
+ }
+ }
+
+ private class ServerInfo {
+ String name;
+ String group;
+ boolean autoStart;
+
+
+ }
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
new file mode 100644
index 0000000..9650731
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ServerGroupComponent.java
@@ -0,0 +1,113 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.jackson.JsonNode;
+
+import org.rhq.core.domain.content.PackageType;
+import org.rhq.core.domain.content.transfer.DeployPackageStep;
+import org.rhq.core.domain.content.transfer.DeployPackagesResponse;
+import org.rhq.core.domain.content.transfer.RemovePackagesResponse;
+import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
+import org.rhq.core.domain.resource.CreateResourceStatus;
+import org.rhq.core.pluginapi.content.ContentContext;
+import org.rhq.core.pluginapi.content.ContentFacet;
+import org.rhq.core.pluginapi.content.ContentServices;
+import org.rhq.core.pluginapi.inventory.CreateChildResourceFacet;
+import org.rhq.core.pluginapi.inventory.CreateResourceReport;
+
+/**
+ * Component dealing with server group specific things
+ * @author Heiko W. Rupp
+ */
+public class ServerGroupComponent extends DomainComponent implements ContentFacet,
CreateChildResourceFacet {
+
+ private final Log log = LogFactory.getLog(ServerGroupComponent.class);
+
+ @Override
+ public List<DeployPackageStep> generateInstallationSteps(ResourcePackageDetails
packageDetails) {
+ return null; // TODO: Customise this generated block
+ }
+
+ @Override
+ public DeployPackagesResponse deployPackages(Set<ResourcePackageDetails>
packages,
+ ContentServices contentServices) {
+
+ ContentContext cctx = context.getContentContext();
+
+ String uploadUrl = "http://localhost:9990/domain-api/add-content";
+
+ for (ResourcePackageDetails details : packages) {
+ ASUploadConnection uploadConnection = new ASUploadConnection();
+ OutputStream out = uploadConnection.getOutputStream(details.getFileName());
+ contentServices.downloadPackageBits(cctx, details.getKey(), out, false);
+ JsonNode result = uploadConnection.finishUpload();
+ }
+
+
+ return null; // TODO: Customise this generated block
+ }
+
+ @Override
+ public RemovePackagesResponse removePackages(Set<ResourcePackageDetails>
packages) {
+ return null; // TODO: Customise this generated block
+ }
+
+ @Override
+ public Set<ResourcePackageDetails> discoverDeployedPackages(PackageType type)
{
+ return null; // TODO: Customise this generated block
+ }
+
+ @Override
+ public InputStream retrievePackageBits(ResourcePackageDetails packageDetails) {
+ return null; // TODO: Customise this generated block
+ }
+
+ @Override
+ public CreateResourceReport createResource(CreateResourceReport report) {
+
+
+ ResourcePackageDetails details = report.getPackageDetails();
+
+ ContentContext cctx = context.getContentContext();
+ ContentServices contentServices = cctx.getContentServices();
+ String resourceTypeName = report.getResourceType().getName();
+
+ ASUploadConnection connection = new ASUploadConnection();
+ OutputStream out = connection.getOutputStream(details.getFileName());
+// contentServices.downloadPackageBits(cctx,details.getKey(),out,false);
+ contentServices.downloadPackageBitsForChildResource(cctx, resourceTypeName,
details.getKey(), out);
+
+ JsonNode result = connection.finishUpload();
+ System.out.println(result);
+
+
+ report.setStatus(CreateResourceStatus.SUCCESS) ;
+
+ return report;
+
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 02b4bf8..6741bb3 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -71,7 +71,7 @@
&logSources;
</plugin-configuration>
- <process-scan name="ProcessManager"
query="process|basename|match=^java.*,arg|org.jboss.as.process-controller|match=.*"/>
+ <process-scan name="ProcessController"
query="process|basename|match=^java.*,arg|org.jboss.as.process-controller|match=.*"/>
<operation name="dummyOperation">
@@ -93,7 +93,7 @@
&logSources;
</plugin-configuration>
- <process-scan name="ProcessManager"
query="process|basename|match=^java.*,arg|org.jboss.as.host-controller|match=.*"/>
+ <process-scan name="HostController"
query="process|basename|match=^java.*,arg|org.jboss.as.host-controller|match=.*"/>
<operation name="dummyOperation">
@@ -132,16 +132,25 @@
<server name="ServerGroup"
description="Server groups on this domain"
discovery="SubsystemDiscovery"
- class="ServerGroupComponent">
+ class="ServerGroupComponent"
+
+ <!-- TODO move operation to
createDeletePolicy="create-only" -->
+
<plugin-configuration>
<c:simple-property name="path"
default="/server-group/*" readOnly="true"/>
</plugin-configuration>
+
+
+ <content name="deployment" category="deployable"
isCreationType="true" description="Deployments on this domain">
+ </content>
+
<resource-configuration>
<c:simple-property name="profile" />
<c:simple-property name="socket-binding-group"/>
<c:simple-property name="jvm"/>
<c:simple-property name="deployment"
required="false"/> <!-- TODO change structure. Or put below as resource?
-->
</resource-configuration>
+ <service name="Deployment" class="BaseComponent"
discovery="SubsystemDiscovery" createDeletePolicy="create-only"/>
</server>
<server name="Host"
description="Host involved in this domain"
@@ -171,9 +180,11 @@
</results>
</operation>
+<!--
<resource-configuration>
<c:list-property name="server-config" />
</resource-configuration>
+-->
</server>
@@ -216,16 +227,20 @@
</server>
<server name="JBossAS-Managed"
- discovery="BaseProcessDiscovery"
+ discovery="ManagedASDiscovery"
class="DomainComponent"
<plugin-configuration>
<c:simple-property name="hostname" default="localhost"
required="true"/>
<c:simple-property name="port" default="9990"
type="integer" required="true"/>
+ <c:simple-property name="domainHost" readOnly="true"
description="Hostname in the domain"/>
+ <c:simple-property name="group" readOnly="true"
displayName="Server Group" description="Server Group this instance belongs
to."/>
&logSources;
</plugin-configuration>
+ <!-- Scan for host controller is intentional -->
+ <process-scan name="HostController"
query="process|basename|match=^java.*,arg|org.jboss.as.host-controller|match=.*"/>
<process-scan name="ManagedAS"
query="process|basename|match=^java.*,arg|org.jboss.as.server|match=.*"/>
<operation name="server:start" description="Start this server
instance." displayName="Start">
@@ -330,7 +345,7 @@
class="BaseComponent"
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/queue/"/>
+ <c:simple-property name="path" readOnly="true"
default="/queue/*"/>
</plugin-configuration>
</service>
</server>
@@ -383,7 +398,9 @@
<resource-configuration>
<c:simple-property name="access-log"/>
- <c:list-property name="alias" description="The virtual
server aliases"/>
+ <c:list-property name="alias" description="The virtual
server aliases">
+ <c:simple-property name="alias"/>
+ </c:list-property>
<c:simple-property name="rewrite"/>
</resource-configuration>
commit 3b22a190f79b18c80c485f6f5b86c0a7f0b179e2
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Apr 5 21:45:49 2011 +0200
Make sure the input stream is closed. Otherwise we are keeping too many connections
open and AS will choke on us.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 97788ae..0c6d516 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -173,6 +173,8 @@ public class ASConnection {
*/
public JsonNode execute(Operation operation) {
+ InputStream inputStream = null;
+ BufferedReader br=null;
try {
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
@@ -188,23 +190,22 @@ public class ASConnection {
out.flush();
out.close();
- InputStream inputStream;
if (conn.getResponseCode()==HttpURLConnection.HTTP_OK) {
inputStream = conn.getInputStream();
- BufferedReader in = new BufferedReader(new InputStreamReader(
+ br = new BufferedReader(new InputStreamReader(
inputStream));
String line;
builder = new StringBuilder();
- while ((line = in.readLine()) != null) {
+ while ((line = br.readLine()) != null) {
builder.append(line);
}
- in.close();
+ br.close();
}
else {
InputStream errorStream = conn.getErrorStream();
if (errorStream!=null) {
- BufferedReader br = new BufferedReader(new
InputStreamReader(errorStream));
+ br = new BufferedReader(new InputStreamReader(errorStream));
String line;
builder = new StringBuilder();
while ((line = br.readLine()) != null) {
@@ -213,6 +214,9 @@ public class ASConnection {
br.close();
}
}
+ if (br!=null)
+ br.close();
+
String outcome;
JsonNode operationResult=null;
if (builder!=null) {
commit 5f9a6b6cbe98d47ef75deac36e7a81b5cc73b427
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Sat Apr 2 09:24:27 2011 +0200
Allow creation and removal of Messaging destinations.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index bd0b458..97788ae 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -150,6 +150,9 @@ public class ASConnection {
JsonNode reasonNode = in.findValue("failure-description");
if (reasonNode==null)
reasonNode =
in.findValue("domain-failure-description");// TODO JBAS-9182
+ if (reasonNode==null)
+ reasonNode = in.findValue("host-failure-descriptions");
// TODO JBAS-9182
+
String reason = reasonNode.getTextValue();
log.info(reason);
return true;
@@ -260,6 +263,8 @@ public class ASConnection {
JsonNode node = jsonNode.findValue("failure-description");
if (node==null)
node = jsonNode.findValue("domain-failure-description"); // TODO
JBAS-9182
+ if (node==null)
+ node = jsonNode.findValue("host-failure-descriptions"); // TODO
JBAS-9182
return node.getValueAsText();
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
index b53dd74..a06a296 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
@@ -78,16 +78,16 @@ public class DomainComponent extends BaseComponent implements
OperationFacet{
String op = name.substring(colonPos+1);
Operation operation=null;
+ List<PROPERTY_VALUE> address = new ArrayList<PROPERTY_VALUE>();
+
if (what.equals("server-group")) {
String groupName = parameters.getSimpleValue("name",null);
String profile =
parameters.getSimpleValue("profile","default");
- List<PROPERTY_VALUE> address = new ArrayList<PROPERTY_VALUE>(1);
address.add(new PROPERTY_VALUE("server-group",groupName));
operation = new Operation(op,address,"profile",profile);
} else if (what.equals("server")) {
- List<PROPERTY_VALUE> address = new ArrayList<PROPERTY_VALUE>();
if (context.getResourceType().getName().equals("JBossAS-Managed"))
{
String host =
conf.getSimpleValue("domainHost","local");
@@ -99,17 +99,24 @@ public class DomainComponent extends BaseComponent implements
OperationFacet{
address.addAll(pathToAddress(getPath()));
String serverName = parameters.getSimpleValue("name",null);
address.add(new PROPERTY_VALUE("server-config",serverName));
- Map<String,String> props = new HashMap<String, String>();
+ Map<String,Object> props = new HashMap<String, Object>();
String serverGroup = parameters.getSimpleValue("group",null);
- props.put("name",serverName);
props.put("group",serverGroup);
-// boolean autoStart =
parameters.getSimple("auto-start").getBooleanValue();
-// props.put("auto-start",String.valueOf(autoStart));
- // TODO put more properties in
+ if (op.equals("add")) {
+ props.put("name",serverName);
+ boolean autoStart =
parameters.getSimple("auto-start").getBooleanValue();
+ props.put("auto-start",autoStart);
+ // TODO put more properties in
+ }
operation = new Operation(op,address,props);
}
-
+ } else if (what.equals("destination")) {
+ address.addAll(pathToAddress(getPath()));
+ String newName = parameters.getSimpleValue("name","");
+ String type =
parameters.getSimpleValue("type","Queue").toLowerCase();
+ address.add(new PROPERTY_VALUE(type,newName));
+ operation = new Operation(op,address);
}
OperationResult operationResult = new OperationResult();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index b577407..1c498d1 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -95,6 +95,12 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
Map<String,Subsystem> subsystemMap = mapper.readValue(subNode,new
TypeReference<Map<String,Subsystem>>() {});
+ if (subsystemMap==null) {
+ log.warn("SubsystemMap was null for path [" + path +
"] and subPath ["+ subPath + "] and subNode [" + subNode +
"]");
+ return Collections.emptySet();
+ }
+
+
for (Map.Entry<String,Subsystem> entry: subsystemMap.entrySet()) {
String key = entry.getKey();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
index 92abbae..e538c94 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
@@ -38,28 +38,28 @@ public class Operation {
private String operation;
@JsonProperty
private List<PROPERTY_VALUE> address = Collections.emptyList();
- private Map<String,String> additionalProperties;
+ private Map<String,Object> additionalProperties;
public Operation(String operation, List<PROPERTY_VALUE> address, NameValuePair
payload) {
this.operation = operation;
this.address = address;
- additionalProperties = new HashMap<String,String>(2);
+ additionalProperties = new HashMap<String,Object>(2);
additionalProperties.put("name",payload.name);
additionalProperties.put("value",payload.value);
}
- public Operation(String operation, List<PROPERTY_VALUE> address,
Map<String,String> payload) {
+ public Operation(String operation, List<PROPERTY_VALUE> address,
Map<String,Object> payload) {
this.operation = operation;
this.address = address;
this.additionalProperties = payload;
}
- public Operation(String operation, List<PROPERTY_VALUE> address, String key,
String value) {
+ public Operation(String operation, List<PROPERTY_VALUE> address, String key,
Object value) {
this.operation = operation;
this.address = address;
- additionalProperties = new HashMap<String,String>(1);
+ additionalProperties = new HashMap<String,Object>(1);
additionalProperties.put(key,value);
}
@@ -78,30 +78,30 @@ public class Operation {
@JsonAnySetter
public void addAdditionalProperty(String key, String value) {
if (additionalProperties == null)
- additionalProperties = new HashMap<String, String>();
+ additionalProperties = new HashMap<String, Object>();
additionalProperties.put(key,value);
}
- public void setAdditionalProperties(Map<String, String> additionalProperties)
{
+ public void setAdditionalProperties(Map<String, Object> additionalProperties)
{
this.additionalProperties = additionalProperties;
}
@JsonAnyGetter
- public Map<String,String> getAdditionalProperties() {
+ public Map<String,Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonIgnore
public String getName() {
- return getProperty("name");
+ return (String) getProperty("name");
}
@JsonIgnore
public String getValue() {
- return getProperty("value");
+ return (String) getProperty("value");
}
- private String getProperty(String key) {
+ private Object getProperty(String key) {
if (additionalProperties.containsKey(key))
return additionalProperties.get(key);
else
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index e77a2ca..02b4bf8 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -132,7 +132,7 @@
<server name="ServerGroup"
description="Server groups on this domain"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="ServerGroupComponent">
<plugin-configuration>
<c:simple-property name="path"
default="/server-group/*" readOnly="true"/>
</plugin-configuration>
@@ -156,7 +156,7 @@
<parameters>
<c:simple-property name="name" description="Name of
this new server" required="true"/>
<c:simple-property name="group" displayName="Server
Group" description="Server group to put this sever in" default=""
required="false"/>
- <c:simple-property name="auto-start"
displayName="Autostart" description="Should this server start at
boot?" type="boolean" default="false"
required="false"/>
+ <c:simple-property name="auto-start"
displayName="Autostart" description="Should this server start at
boot?" type="boolean" default="false"
required="true"/>
</parameters>
<results>
<c:simple-property name="result"
description="Outcome of the create server operation"/>
@@ -228,9 +228,21 @@
<process-scan name="ManagedAS"
query="process|basename|match=^java.*,arg|org.jboss.as.server|match=.*"/>
- <operation name="server:start" description="Start this server
instance." displayName="Start"/>
- <operation name="server:stop" description="Stop this server
instance." displayName="Stop"/>
- <operation name="server:restart" description="Restart this
server instance." displayName="Restart"/>
+ <operation name="server:start" description="Start this server
instance." displayName="Start">
+ <results>
+ <c:simple-property name="operationResult"/>
+ </results>
+ </operation>
+ <operation name="server:stop" description="Stop this server
instance." displayName="Stop">
+ <results>
+ <c:simple-property name="operationResult"/>
+ </results>
+ </operation>
+ <operation name="server:restart" description="Restart this
server instance." displayName="Restart">
+ <results>
+ <c:simple-property name="operationResult"/>
+ </results>
+ </operation>
@@ -256,7 +268,7 @@
<server name="Messaging"
discovery="SubsystemDiscovery"
- class="BaseComponent"
+ class="DomainComponent"
singleton="true"
<runs-inside>
@@ -268,6 +280,29 @@
<c:simple-property name="path" readOnly="true"
default="/subsystem/messaging"/>
</plugin-configuration>
+ <operation name="destination:add" displayName="Add
destination" description="Add a Queue or Topic">
+ <parameters>
+ <c:simple-property name="name" description="Name of the
Destination" required="true"/>
+ <c:simple-property name="type" description="Type of
Destination to create" default="Queue">
+ <c:property-options>
+ <c:option value="Queue"/>
+ <c:option value="Topic"/>
+ </c:property-options>
+ </c:simple-property>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"/>
+ </results>
+ </operation>
+ <operation name="destination:remove" displayName="Remove
Destination" description="Remove a destination">
+ <parameters>
+ <c:simple-property name="name" description="Name of the
Destination" required="true"/>
+ </parameters>
+ <results>
+ <c:simple-property name="operationResult"/>
+ </results>
+ </operation>
+
<resource-configuration>
<c:simple-property name="journal-min-files" />
<c:simple-property name="journal-type" />
@@ -281,10 +316,23 @@
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="/acceptor"/>
</plugin-configuration>
-
-
</service>
-
+ <service name="MessagingConnector"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/connector"/>
+ </plugin-configuration>
+ </service>
+ <service name="Queue"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/queue/"/>
+ </plugin-configuration>
+ </service>
</server>
<server name="JBossWeb"
@@ -344,6 +392,56 @@
</server>
+ <server name="Datasources"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+
+
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/subsystem/datasources"/>
+ </plugin-configuration>
+
+ <service name="DataSource"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/data-source/*"/>
+ </plugin-configuration>
+ </service>
+
+ <service name="XADataSource"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/xa-data-source/*"/>
+ </plugin-configuration>
+ </service>
+
+ <service name="JdbcDriver"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/jdbc-driver/*"/>
+ </plugin-configuration>
+ </service>
+
+ </server>
+
<service name="NetworkInterface"
discovery="InterfaceDiscovery"
class="BaseComponent"
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
index 929a87c..5ba843f 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
@@ -79,8 +79,9 @@ public class OperationJsonTest {
PROPERTY_VALUE part = new
PROPERTY_VALUE("/server-group","newOne");
address.add(part);
- Map<String,String> props = new HashMap<String, String>();
+ Map<String,Object> props = new HashMap<String, Object>();
props.put("profile","default");
+ props.put("someBool",true);
Operation operation = new Operation("add",address,props);
@@ -94,6 +95,10 @@ public class OperationJsonTest {
Operation op = mapper.readValue(result,Operation.class);
assert op.getOperation().equals(operation.getOperation()) : "Operation is
" + op.getOperation();
+ assert op.getAdditionalProperties().containsKey("someBool") : "Key
someBool not found ";
+ Object someBool = op.getAdditionalProperties().get("someBool");
+ assert Boolean.valueOf((String) someBool) : "someBool was not true";
+
}
}
commit a3fdac16d1b0301ca4771c61ba7f7517d2880117
Merge: 7122b59 080e1d7
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Mar 31 12:56:44 2011 +0200
Merge branch 'master' into as7plugin
commit 7122b59f83eab6785068f46224f4d601373f26ef
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Mar 31 12:24:46 2011 +0200
Start support for adding and removal of server instances.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 470722d..bd0b458 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -210,11 +210,19 @@ public class ASConnection {
br.close();
}
}
- String outcome = builder.toString();
+ String outcome;
+ JsonNode operationResult=null;
+ if (builder!=null) {
+ outcome= builder.toString();
+ operationResult = mapper.readTree(outcome);
+ }
+ else {
+ outcome="- no response from server -";
+ }
System.out.println("==> " + outcome);
- JsonNode operationResult = mapper.readTree(outcome);
return operationResult;
+
} catch (IOException e) {
e.printStackTrace(); // TODO: Customise this generated block
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
index 460aebf..b53dd74 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
@@ -20,7 +20,9 @@ package org.rhq.modules.plugins.jbossas7;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.codehaus.jackson.JsonNode;
@@ -87,12 +89,27 @@ public class DomainComponent extends BaseComponent implements
OperationFacet{
} else if (what.equals("server")) {
List<PROPERTY_VALUE> address = new ArrayList<PROPERTY_VALUE>();
- String host = conf.getSimpleValue("domainHost","local");
-
- address.add(new PROPERTY_VALUE("host",host));
- address.add(new PROPERTY_VALUE("server-config",myServerName));
+ if (context.getResourceType().getName().equals("JBossAS-Managed"))
{
+ String host =
conf.getSimpleValue("domainHost","local");
+ address.add(new PROPERTY_VALUE("host",host));
+ address.add(new PROPERTY_VALUE("server-config",myServerName));
+ operation = new Operation(op,address);
+ }
+ else if (context.getResourceType().getName().equals("Host")) {
+ address.addAll(pathToAddress(getPath()));
+ String serverName = parameters.getSimpleValue("name",null);
+ address.add(new PROPERTY_VALUE("server-config",serverName));
+ Map<String,String> props = new HashMap<String, String>();
+ String serverGroup = parameters.getSimpleValue("group",null);
+ props.put("name",serverName);
+ props.put("group",serverGroup);
+// boolean autoStart =
parameters.getSimple("auto-start").getBooleanValue();
+// props.put("auto-start",String.valueOf(autoStart));
+ // TODO put more properties in
+
+ operation = new Operation(op,address,props);
+ }
- operation = new Operation(op,address);
}
OperationResult operationResult = new OperationResult();
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 9994339..e77a2ca 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -120,7 +120,6 @@
</parameters>
</operation>
-
<server name="Profile"
description="One profile in a domain"
discovery="SubsystemDiscovery"
@@ -147,12 +146,31 @@
<server name="Host"
description="Host involved in this domain"
discovery="SubsystemDiscovery"
- class="BaseComponent"
+ class="DomainComponent"
<plugin-configuration>
<c:simple-property name="path" default="/host/*"
readOnly="true"/>
</plugin-configuration>
+ <operation name="server:add" displayName="Create
server" description="Add a new server to this host.">
+ <parameters>
+ <c:simple-property name="name" description="Name of
this new server" required="true"/>
+ <c:simple-property name="group" displayName="Server
Group" description="Server group to put this sever in" default=""
required="false"/>
+ <c:simple-property name="auto-start"
displayName="Autostart" description="Should this server start at
boot?" type="boolean" default="false"
required="false"/>
+ </parameters>
+ <results>
+ <c:simple-property name="result"
description="Outcome of the create server operation"/>
+ </results>
+ </operation>
+ <operation name="server:remove" displayName="Delete
server" description="Deletes a server on this host.">
+ <parameters>
+ <c:simple-property name="name" description="Name of
this new server" required="true"/>
+ </parameters>
+ <results>
+ <c:simple-property name="result"
description="Outcome of the delete server operation"/>
+ </results>
+ </operation>
+
<resource-configuration>
<c:list-property name="server-config" />
</resource-configuration>
@@ -210,9 +228,10 @@
<process-scan name="ManagedAS"
query="process|basename|match=^java.*,arg|org.jboss.as.server|match=.*"/>
- <operation name="server:start" description="Start this server
instance."/>
- <operation name="server:stop" description="Stop this server
instance."/>
- <operation name="server:restart" description="Restart this
server instance."/>
+ <operation name="server:start" description="Start this server
instance." displayName="Start"/>
+ <operation name="server:stop" description="Stop this server
instance." displayName="Stop"/>
+ <operation name="server:restart" description="Restart this
server instance." displayName="Restart"/>
+
</server>
commit f2aa9b3dfbe8d6c2cc7b8239a753fe1f7023142a
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Mar 31 08:30:04 2011 +0200
Get availability for a managed server from the domain.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
index bfed04a..460aebf 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
@@ -25,6 +25,7 @@ import java.util.List;
import org.codehaus.jackson.JsonNode;
import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.pluginapi.operation.OperationFacet;
import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.modules.plugins.jbossas7.json.Operation;
@@ -38,6 +39,29 @@ import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
public class DomainComponent extends BaseComponent implements OperationFacet{
@Override
+ public AvailabilityType getAvailability() {
+
+ if (context.getResourceType().getName().equals("JBossAS-Managed")) {
+ List<PROPERTY_VALUE> address = new ArrayList<PROPERTY_VALUE>(2);
+ String host = conf.getSimpleValue("domainHost","local");
+ address.add(new PROPERTY_VALUE("host",host));
+ address.add(new PROPERTY_VALUE("server-config",myServerName));
+ Operation getStatus = new
Operation("read-attribute",address,"name","status");
+ JsonNode result = connection.execute(getStatus);
+ if (connection.isErrorReply(result))
+ return AvailabilityType.DOWN;
+
+ String msg = connection.getSuccessDescription(result);
+ if (msg.contains("STARTED"))
+ return AvailabilityType.UP;
+ else
+ return AvailabilityType.DOWN;
+ }
+
+ return super.getAvailability(); // TODO: Customise this generated block
+ }
+
+ @Override
public OperationResult invokeOperation(String name,
Configuration parameters) throws
InterruptedException, Exception {
commit 397d5539988b798e49d2dc6e3f896c125274e0bc
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Mar 30 21:42:40 2011 +0200
Support start/stop/restart of servers.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 401887b..470722d 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -199,7 +199,6 @@ public class ASConnection {
in.close();
}
else {
- System.out.println(conn.getResponseCode());
InputStream errorStream = conn.getErrorStream();
if (errorStream!=null) {
BufferedReader br = new BufferedReader(new
InputStreamReader(errorStream));
@@ -254,6 +253,12 @@ public class ASConnection {
if (node==null)
node = jsonNode.findValue("domain-failure-description"); // TODO
JBAS-9182
return node.getValueAsText();
+ }
+ public String getSuccessDescription(JsonNode jsonNode) {
+ if (jsonNode==null)
+ return "No message found";
+ JsonNode node = jsonNode.findValue("result");
+ return node.getValueAsText();
}
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 3b025f3..5dbd0b3 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -291,7 +291,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
return ret;
}
- private String getResultingPath() {
+ protected String getResultingPath() {
ResourceComponent parentResourceComponent =
context.getParentResourceComponent();
String parentPath =null;
String myPath;
@@ -328,7 +328,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
}
- private List<PROPERTY_VALUE> pathToAddress(String path) {
+ protected List<PROPERTY_VALUE> pathToAddress(String path) {
if (path.endsWith("/"))
path = path.substring(0,path.length()-1);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
index c38e297..5ea4bd7 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
@@ -1,12 +1,19 @@
package org.rhq.modules.plugins.jbossas7;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.mc4j.ems.connection.support.metadata.LocalVMTypeDescriptor;
+import org.w3c.dom.Document;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertyList;
@@ -17,6 +24,7 @@ import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
import org.rhq.core.pluginapi.inventory.ProcessScanResult;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.core.system.ProcessInfo;
import org.rhq.plugins.jmx.JMXDiscoveryComponent;
@@ -29,6 +37,7 @@ public class BaseProcessDiscovery implements ResourceDiscoveryComponent
static final String DJBOSS_SERVER_BASE_DIR = "-Djboss.server.base.dir=";
static final String DORG_JBOSS_BOOT_LOG_FILE =
"-Dorg.jboss.boot.log.file=";
+ static final String DLOGGING_CONFIGURATION = "-Dlogging.configuration=";
private final Log log = LogFactory.getLog(this.getClass());
/**
@@ -69,6 +78,10 @@ public class BaseProcessDiscovery implements
ResourceDiscoveryComponent
tmp = tmp.substring( i + 8);
tmp = tmp.substring(0,tmp.indexOf("/"));
serverNameFull = tmp;
+
+ String host = findHost(psr.getProcessInfo(),true);
+ config.put(new PropertySimple("domainHost",host));
+
}
serverName =
serverNameFull.substring(serverNameFull.lastIndexOf("/")+1);
if (serverName.isEmpty())
@@ -114,7 +127,49 @@ public class BaseProcessDiscovery implements
ResourceDiscoveryComponent
}
- String getBaseDirFromCommandLine(String[] commandLine) {
+ private String findHost(ProcessInfo processInfo,boolean isDomain) {
+ String hostXmlFile = getHostXmlFileLocation(processInfo, isDomain);
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ String hostName = null;
+ try {
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ InputStream is = new FileInputStream(hostXmlFile);
+ Document document = builder.parse(is); // TODO keep this around
+ hostName = document.getDocumentElement().getAttribute("name");
+ is.close();
+ } catch (Exception e) {
+ e.printStackTrace(); // TODO: Customise this generated block
+ }
+ if (hostName==null)
+ hostName="local"; // Fallback to the installation default
+ return hostName;
+ }
+
+ /**
+ * Get the location of the host definition file (host.xml in domain mode,
standalone.xml
+ * in standalone mode.
+ * @param processInfo ProcessInfo structure containing the ENV variables
+ * @param isDomain Are we looking for host.xml (=isDomain) or not
+ * @return The path to the definition file.
+ */
+ private String getHostXmlFileLocation(ProcessInfo processInfo, boolean isDomain) {
+
+ String home = processInfo.getEnvironmentVariable("jboss.home.dir");
+ StringBuilder builder = new StringBuilder(home);
+ if (isDomain)
+ builder.append("/domain");
+ else
+ builder.append("/standalone");
+ builder.append("/configuration");
+ if (isDomain)
+ builder.append("/host.xml");
+ else
+ builder.append("/standalone.xml");
+ return builder.toString();
+
+ }
+
+ String getBaseDirFromCommandLine(String[] commandLine) {
for (String line: commandLine) {
if (line.startsWith(DJBOSS_SERVER_BASE_DIR))
return line.substring(DJBOSS_SERVER_BASE_DIR.length());
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
new file mode 100644
index 0000000..bfed04a
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainComponent.java
@@ -0,0 +1,91 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.codehaus.jackson.JsonNode;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+
+/**
+ * Common stuff for the Domain
+ * @author Heiko W. Rupp
+ */
+@SuppressWarnings("unused")
+public class DomainComponent extends BaseComponent implements OperationFacet{
+
+ @Override
+ public OperationResult invokeOperation(String name,
+ Configuration parameters) throws
InterruptedException, Exception {
+
+ if (!name.contains(":")) {
+ OperationResult badName = new OperationResult("Operation name did not
contain a ':'");
+ badName.setErrorMessage("Operation name did not contain a
':'");
+ return badName;
+ }
+
+ int colonPos = name.indexOf(':');
+ String what = name.substring(0, colonPos);
+ String op = name.substring(colonPos+1);
+ Operation operation=null;
+
+ if (what.equals("server-group")) {
+ String groupName = parameters.getSimpleValue("name",null);
+ String profile =
parameters.getSimpleValue("profile","default");
+
+ List<PROPERTY_VALUE> address = new ArrayList<PROPERTY_VALUE>(1);
+ address.add(new PROPERTY_VALUE("server-group",groupName));
+
+ operation = new Operation(op,address,"profile",profile);
+ } else if (what.equals("server")) {
+ List<PROPERTY_VALUE> address = new ArrayList<PROPERTY_VALUE>();
+
+ String host = conf.getSimpleValue("domainHost","local");
+
+ address.add(new PROPERTY_VALUE("host",host));
+ address.add(new PROPERTY_VALUE("server-config",myServerName));
+
+ operation = new Operation(op,address);
+ }
+
+ OperationResult operationResult = new OperationResult();
+ if (operation!=null) {
+ JsonNode result = connection.execute(operation);
+
+ if (connection.isErrorReply(result)) {
+
operationResult.setErrorMessage(connection.getFailureDescription(result));
+ }
+ else {
+
operationResult.setSimpleResult(connection.getSuccessDescription(result));
+ }
+ }
+ else {
+ operationResult.setErrorMessage("No valid operation was given");
+ }
+ // TODO throw an exception if the operation failed?
+ return operationResult;
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
index 898f176..92abbae 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
@@ -64,6 +64,13 @@ public class Operation {
}
+ public Operation(String operation, List<PROPERTY_VALUE> address) {
+ this.operation = operation;
+ this.address = address;
+ additionalProperties = Collections.emptyMap();
+
+ }
+
public Operation() {
// needed for Jackson
}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 6af7de6..9994339 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -199,7 +199,7 @@
<server name="JBossAS-Managed"
discovery="BaseProcessDiscovery"
- class="BaseComponent"
+ class="DomainComponent"
<plugin-configuration>
<c:simple-property name="hostname" default="localhost"
required="true"/>
@@ -210,6 +210,11 @@
<process-scan name="ManagedAS"
query="process|basename|match=^java.*,arg|org.jboss.as.server|match=.*"/>
+ <operation name="server:start" description="Start this server
instance."/>
+ <operation name="server:stop" description="Stop this server
instance."/>
+ <operation name="server:restart" description="Restart this
server instance."/>
+
+
</server>
commit 63147effa639ef08f8cff763393efbafcd3a8607
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Mar 30 12:17:21 2011 +0200
Make executing of Operations more generic and implement add/remove of serverGroups.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 192a54f..401887b 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -148,6 +148,8 @@ public class ASConnection {
outcome = outcomeNode.getTextValue();
if (outcome.equals("failed")) {
JsonNode reasonNode = in.findValue("failure-description");
+ if (reasonNode==null)
+ reasonNode =
in.findValue("domain-failure-description");// TODO JBAS-9182
String reason = reasonNode.getTextValue();
log.info(reason);
return true;
@@ -163,11 +165,10 @@ public class ASConnection {
/**
* Execute an operation against the domain api
- * @param path Node to manipulate
- * @param operationName operation to run
- * @param attributeValue attribute-name-value pair
+ * @return JsonNode that describes the result
+ * @param operation an Operation that should be run on the domain controller
*/
- public JsonNode execute(String path, String operationName, NameValuePair
attributeValue) {
+ public JsonNode execute(Operation operation) {
try {
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
@@ -177,8 +178,6 @@ public class ASConnection {
ObjectMapper mapper = new ObjectMapper();
- Operation operation = new
Operation(operationName,pathToAddress(path),attributeValue);
-
String result = mapper.writeValueAsString(operation);
System.out.println("Json to send: " + result);
mapper.writeValue(out, operation);
@@ -224,22 +223,6 @@ public class ASConnection {
return null;
}
- private List<PROPERTY_VALUE> pathToAddress(String path) {
- if (path.endsWith("/"))
- path = path.substring(0,path.length()-1);
-
- if (path.startsWith("/"))
- path = path.substring(1);
-
- List<PROPERTY_VALUE> result = new ArrayList<PROPERTY_VALUE>();
- String[] components = path.split("/");
- for (int i = 0; i < components.length ; i+=2) {
- PROPERTY_VALUE valuePair = new
PROPERTY_VALUE(components[i],components[i+1]);
- result.add(valuePair);
- }
-
- return result;
- }
private URL getBaseUrl(String base, String ops) throws MalformedURLException {
String spec;
@@ -268,6 +251,8 @@ public class ASConnection {
if (jsonNode==null)
return "getFailureDescription: -input was null-";
JsonNode node = jsonNode.findValue("failure-description");
+ if (node==null)
+ node = jsonNode.findValue("domain-failure-description"); // TODO
JBAS-9182
return node.getValueAsText();
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 788531b..3b025f3 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -45,9 +45,13 @@ import
org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -149,22 +153,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
public Configuration loadResourceConfiguration() throws Exception {
ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
- ResourceComponent parentResourceComponent =
context.getParentResourceComponent();
- String parentPath =null;
- String myPath;
- if (parentResourceComponent instanceof BaseComponent) {
- BaseComponent parentComponent = (BaseComponent) parentResourceComponent;
- parentPath = parentComponent.getPath();
- }
-
- if (parentPath!=null) {
- if (parentPath.endsWith("/") || path.startsWith("/"))
- myPath = parentPath + path;
- else
- myPath = parentPath + "/" + path;
- }
- else
- myPath = path;
+ String myPath = getResultingPath();
JsonNode json = connection.getLevelData(myPath,true,false);
@@ -302,6 +291,26 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
return ret;
}
+ private String getResultingPath() {
+ ResourceComponent parentResourceComponent =
context.getParentResourceComponent();
+ String parentPath =null;
+ String myPath;
+ if (parentResourceComponent instanceof BaseComponent) {
+ BaseComponent parentComponent = (BaseComponent) parentResourceComponent;
+ parentPath = parentComponent.getPath();
+ }
+
+ if (parentPath!=null) {
+ if (parentPath.endsWith("/") || path.startsWith("/"))
+ myPath = parentPath + path;
+ else
+ myPath = parentPath + "/" + path;
+ }
+ else
+ myPath = path;
+ return myPath;
+ }
+
public void updateResourceConfiguration(ConfigurationUpdateReport report) {
@@ -309,7 +318,8 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
for (Map.Entry<String, PropertySimple> entry :
conf.getSimpleProperties().entrySet()) {
NameValuePair nvp = new
NameValuePair(entry.getKey(),entry.getValue().getStringValue());
- JsonNode result= connection.execute(key,"write-attribute",nvp); //
TODO path / key handling
+ Operation writeAttribute = new
Operation("write-attribute",pathToAddress(getResultingPath()),nvp);
+ JsonNode result= connection.execute(writeAttribute);
if(connection.isErrorReply(result)) {
report.setStatus(ConfigurationUpdateStatus.FAILURE);
report.setErrorMessage(connection.getFailureDescription(result));
@@ -317,4 +327,22 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
}
}
+
+ private List<PROPERTY_VALUE> pathToAddress(String path) {
+ if (path.endsWith("/"))
+ path = path.substring(0,path.length()-1);
+
+ if (path.startsWith("/"))
+ path = path.substring(1);
+
+ List<PROPERTY_VALUE> result = new ArrayList<PROPERTY_VALUE>();
+ String[] components = path.split("/");
+ for (int i = 0; i < components.length ; i+=2) {
+ PROPERTY_VALUE valuePair = new
PROPERTY_VALUE(components[i],components[i+1]);
+ result.add(valuePair);
+ }
+
+ return result;
+ }
+
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
index 642b41f..898f176 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
@@ -20,10 +20,14 @@ package org.rhq.modules.plugins.jbossas7.json;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import org.codehaus.jackson.annotate.JsonAnyGetter;
+import org.codehaus.jackson.annotate.JsonAnySetter;
+import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.annotate.JsonValue;
/**
* Operation to run on the server
@@ -31,23 +35,71 @@ import org.codehaus.jackson.annotate.JsonValue;
*/
public class Operation {
+ private String operation;
+ @JsonProperty
+ private List<PROPERTY_VALUE> address = Collections.emptyList();
+ private Map<String,String> additionalProperties;
+
+
public Operation(String operation, List<PROPERTY_VALUE> address, NameValuePair
payload) {
this.operation = operation;
this.address = address;
- this.name = payload.name;
- this.value = payload.value;
+ additionalProperties = new HashMap<String,String>(2);
+ additionalProperties.put("name",payload.name);
+ additionalProperties.put("value",payload.value);
+
+ }
+
+ public Operation(String operation, List<PROPERTY_VALUE> address,
Map<String,String> payload) {
+ this.operation = operation;
+ this.address = address;
+ this.additionalProperties = payload;
+ }
+
+ public Operation(String operation, List<PROPERTY_VALUE> address, String key,
String value) {
+ this.operation = operation;
+ this.address = address;
+ additionalProperties = new HashMap<String,String>(1);
+ additionalProperties.put(key,value);
+
}
public Operation() {
// needed for Jackson
}
- private String operation;
- @JsonProperty
- private List<PROPERTY_VALUE> address = Collections.emptyList();
+ @JsonAnySetter
+ public void addAdditionalProperty(String key, String value) {
+ if (additionalProperties == null)
+ additionalProperties = new HashMap<String, String>();
+ additionalProperties.put(key,value);
+ }
- private String name;
- private String value;
+ public void setAdditionalProperties(Map<String, String> additionalProperties)
{
+ this.additionalProperties = additionalProperties;
+ }
+
+ @JsonAnyGetter
+ public Map<String,String> getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ @JsonIgnore
+ public String getName() {
+ return getProperty("name");
+ }
+
+ @JsonIgnore
+ public String getValue() {
+ return getProperty("value");
+ }
+
+ private String getProperty(String key) {
+ if (additionalProperties.containsKey(key))
+ return additionalProperties.get(key);
+ else
+ return null;
+ }
public String getOperation() {
return operation;
@@ -72,58 +124,5 @@ public class Operation {
return address;
}
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getValue() {
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- /*
- [localhost:9999 /subsystem=web/connector=http]
:write-attribute(name=socket-binding,value=jndi)
- yield JSON to send:
- {
- "operation" : "write-attribute",
- "name" : "socket-binding",
- "value" : "jndi",
- "address" : [
- {
- "PROPERTY_VALUE" : {
- "subsystem" : "web"
- }
- },
- {
- "PROPERTY_VALUE" : {
- "connector" : "http"
- }
- }
- ]
- }
- */
-
-// @JsonValue
-// public String toString() {
-// StringBuilder b = new StringBuilder();
-// b.append('{');
-//
b.append("\"operation\":\"").append(operation).append("\",");
-// b.append("\"address\":");
-// if (address!=null && !address.isEmpty())
-// b.append(address);
-// else
-// b.append("[]");
-// b.append(',');
-// b.append(payload);
-// b.append("}");
-// return b.toString();
-// }
}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index ee6b21f..6af7de6 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -105,9 +105,21 @@
<server name="Domain"
discovery="DomainDiscovery"
- class="BaseComponent"
+ class="DomainComponent"
description="An AS7 management profile">
+ <operation name="server-group:add" displayName="Add
ServerGroup" description="Add a server group to the Domain.">
+ <parameters>
+ <c:simple-property name="name" description="Name of
Group to add"/>
+ <c:simple-property name="profile" description="Profile
to add this group to"/>
+ </parameters>
+ </operation>
+ <operation name="server-group:remove" displayName="Remove
ServerGroup" description="Remove a server group from the Domain.">
+ <parameters>
+ <c:simple-property name="name" description="Name of
Group to add"/>
+ </parameters>
+ </operation>
+
<server name="Profile"
description="One profile in a domain"
@@ -125,7 +137,6 @@
<plugin-configuration>
<c:simple-property name="path"
default="/server-group/*" readOnly="true"/>
</plugin-configuration>
-
<resource-configuration>
<c:simple-property name="profile" />
<c:simple-property name="socket-binding-group"/>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
index 4909595..929a87c 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
@@ -19,7 +19,9 @@
package org.rhq.modules.plugins.jbossas7;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.codehaus.jackson.map.ObjectMapper;
import org.testng.annotations.Test;
@@ -70,4 +72,28 @@ public class OperationJsonTest {
assert pv.getKey().equals("myKey") : "Key is " +
pv.getKey();
assert pv.getValue().equals("myValue"): "Value is " +
pv.getValue();
}
+
+ public void anyPayloadTest() throws Exception {
+
+ List<PROPERTY_VALUE> address=new ArrayList<PROPERTY_VALUE>(2);
+ PROPERTY_VALUE part = new
PROPERTY_VALUE("/server-group","newOne");
+ address.add(part);
+
+ Map<String,String> props = new HashMap<String, String>();
+ props.put("profile","default");
+
+ Operation operation = new Operation("add",address,props);
+
+ ObjectMapper mapper = new ObjectMapper();
+
+ String result = mapper.writeValueAsString(operation);
+ System.out.println(result);
+
+ assert !result.contains("name") : "Result contains a name property
but should not : " + result;
+ assert !result.contains("null") : "Result contains null values but
should not : " + result;
+
+ Operation op = mapper.readValue(result,Operation.class);
+ assert op.getOperation().equals(operation.getOperation()) : "Operation is
" + op.getOperation();
+
+ }
}
commit bb592ab259599fcb931b681ec083cce7ed492b9f
Merge: 80b2237 7a161e2
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Mar 29 17:30:04 2011 +0200
Merge branch 'master' into as7plugin
commit 80b2237cc9bb9fb01cd04c30dd3e13ee8f1e9244
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Mar 29 13:36:38 2011 +0200
Rename class to better reflect its purpose.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
deleted file mode 100644
index 7c55233..0000000
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package org.rhq.modules.plugins.jbossas7;
-
-import java.io.File;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.mc4j.ems.connection.support.metadata.LocalVMTypeDescriptor;
-
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.PropertyList;
-import org.rhq.core.domain.configuration.PropertyMap;
-import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.pluginapi.event.log.LogFileEventResourceComponentHelper;
-import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
-import org.rhq.core.pluginapi.inventory.ProcessScanResult;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
-import org.rhq.plugins.jmx.JMXDiscoveryComponent;
-
-
-/**
- * Discovery class
- */
-public class BaseDiscovery implements ResourceDiscoveryComponent
-
-{
-
- static final String DJBOSS_SERVER_BASE_DIR = "-Djboss.server.base.dir=";
- static final String DORG_JBOSS_BOOT_LOG_FILE =
"-Dorg.jboss.boot.log.file=";
- private final Log log = LogFactory.getLog(this.getClass());
-
- /**
- * Run the auto-discovery
- */
- public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext discoveryContext) throws Exception {
- Set<DiscoveredResourceDetails> discoveredResources = new
HashSet<DiscoveredResourceDetails>();
-
-
- List<ProcessScanResult> scans =
discoveryContext.getAutoDiscoveredProcesses();
-
- for (ProcessScanResult psr : scans) {
-
- Configuration config = discoveryContext.getDefaultPluginConfiguration();
- // IF SE, then look at domain/configuration/host.xml <management
interface="default" port="9990
- // for management port
- String[] commandLine = psr.getProcessInfo().getCommandLine();
- String serverNameFull;
- String serverName;
- String psName = psr.getProcessScan().getName();
- if (psName.equals("ProcessManager")) {
- serverNameFull = "ProcessManager";
- serverName = "ProcessManager";
- } else if (psName.equals("ASManager")) {
- serverName = "ASManager";
- serverNameFull = "ASManager";
- } else if (psName.equals("HostController")) {
- serverName = "HostController";
- serverNameFull = "HostController";
- } else {
- serverNameFull = getBaseDirFromCommandLine(commandLine);
- if (serverNameFull==null || serverNameFull.isEmpty()) {
- // Try to obtain the server name
- // -Dorg.jboss.boot.log.file=domain/servers/server-one/log/boot.log
- // This is a hack until I know a better way to do so.
- String tmp = getLogFileFromCommandLine(commandLine);
- int i = tmp.indexOf("servers/");
- tmp = tmp.substring( i + 8);
- tmp = tmp.substring(0,tmp.indexOf("/"));
- serverNameFull = tmp;
- }
- serverName =
serverNameFull.substring(serverNameFull.lastIndexOf("/")+1);
- if (serverName.isEmpty())
- serverName = serverNameFull;
-
- }
- String logFile = getLogFileFromCommandLine(commandLine);
- initLogEventSourcesConfigProp(logFile,config);
- String javaClazz = psr.getProcessInfo().getName();
-
-
- /*
- * We'll connect to the discovered VM on the local host, so set the
jmx connection
- * properties accordingly. This may only work on JDK6+, but then JDK5 is
deprecated
- * anyway.
- */
-// config.put(new
PropertySimple(JMXDiscoveryComponent.COMMAND_LINE_CONFIG_PROPERTY,
-// javaClazz));
- config.put(new PropertySimple(JMXDiscoveryComponent.CONNECTION_TYPE,
- LocalVMTypeDescriptor.class.getName()));
-
- // TODO vmid will change when the detected server is bounced - how do we
follow this?
- config.put(new
PropertySimple(JMXDiscoveryComponent.VMID_CONFIG_PROPERTY,psr.getProcessInfo().getPid()));
-
-
- DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- discoveryContext.getResourceType(), // ResourceType
- serverNameFull, // key TODO distinguish per domain?
- serverName, // Name
- null, // TODO real version ?
- "TODO", // Description
- config,
- psr.getProcessInfo()
- );
-
-
- // Add to return values
- discoveredResources.add(detail);
- log.info("Discovered new ... " +
discoveryContext.getResourceType() + ", " + serverNameFull);
- }
-
- return discoveredResources;
-
- }
-
- String getBaseDirFromCommandLine(String[] commandLine) {
- for (String line: commandLine) {
- if (line.startsWith(DJBOSS_SERVER_BASE_DIR))
- return line.substring(DJBOSS_SERVER_BASE_DIR.length());
- }
- return "";
- }
-
-//-Dorg.jboss.boot.log.file=/devel/jbas7/jboss-as/build/target/jboss-7.0.0.Alpha2/domain/log/server-manager/boot.log
-//-Dlogging.configuration=file:/devel/jbas7/jboss-as/build/target/jboss-7.0.0.Alpha2/domain/configuration/logging.properties
-
- String getLogFileFromCommandLine(String[] commandLine) {
-
- for (String line: commandLine) {
- if (line.startsWith(DORG_JBOSS_BOOT_LOG_FILE))
- return line.substring(DORG_JBOSS_BOOT_LOG_FILE.length());
- }
- return "";
- }
-
- private void initLogEventSourcesConfigProp(String fileName, Configuration
pluginConfiguration) {
-
- PropertyList logEventSources = pluginConfiguration
- .getList(LogFileEventResourceComponentHelper.LOG_EVENT_SOURCES_CONFIG_PROP);
-
- if (logEventSources==null)
- return;
-
- File serverLogFile = new File(fileName);
-
- if (serverLogFile.exists() && !serverLogFile.isDirectory()) {
- PropertyMap serverLogEventSource = new
PropertyMap("logEventSource");
- serverLogEventSource.put(new PropertySimple(
-
LogFileEventResourceComponentHelper.LogEventSourcePropertyNames.LOG_FILE_PATH,
serverLogFile));
- serverLogEventSource.put(new PropertySimple(
- LogFileEventResourceComponentHelper.LogEventSourcePropertyNames.ENABLED,
Boolean.FALSE));
- logEventSources.add(serverLogEventSource);
- }
- }
-
-}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
new file mode 100644
index 0000000..c38e297
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseProcessDiscovery.java
@@ -0,0 +1,157 @@
+package org.rhq.modules.plugins.jbossas7;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.mc4j.ems.connection.support.metadata.LocalVMTypeDescriptor;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.configuration.PropertyMap;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.pluginapi.event.log.LogFileEventResourceComponentHelper;
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.ProcessScanResult;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.plugins.jmx.JMXDiscoveryComponent;
+
+
+/**
+ * Discovery class
+ */
+public class BaseProcessDiscovery implements ResourceDiscoveryComponent
+
+{
+
+ static final String DJBOSS_SERVER_BASE_DIR = "-Djboss.server.base.dir=";
+ static final String DORG_JBOSS_BOOT_LOG_FILE =
"-Dorg.jboss.boot.log.file=";
+ private final Log log = LogFactory.getLog(this.getClass());
+
+ /**
+ * Run the auto-discovery
+ */
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext discoveryContext) throws Exception {
+ Set<DiscoveredResourceDetails> discoveredResources = new
HashSet<DiscoveredResourceDetails>();
+
+
+ List<ProcessScanResult> scans =
discoveryContext.getAutoDiscoveredProcesses();
+
+ for (ProcessScanResult psr : scans) {
+
+ Configuration config = discoveryContext.getDefaultPluginConfiguration();
+ // IF SE, then look at domain/configuration/host.xml <management
interface="default" port="9990
+ // for management port
+ String[] commandLine = psr.getProcessInfo().getCommandLine();
+ String serverNameFull;
+ String serverName;
+ String psName = psr.getProcessScan().getName();
+ if (psName.equals("ProcessManager")) {
+ serverNameFull = "ProcessManager";
+ serverName = "ProcessManager";
+ } else if (psName.equals("ASManager")) {
+ serverName = "ASManager";
+ serverNameFull = "ASManager";
+ } else if (psName.equals("HostController")) {
+ serverName = "HostController";
+ serverNameFull = "HostController";
+ } else {
+ serverNameFull = getBaseDirFromCommandLine(commandLine);
+ if (serverNameFull==null || serverNameFull.isEmpty()) {
+ // Try to obtain the server name
+ // -Dorg.jboss.boot.log.file=domain/servers/server-one/log/boot.log
+ // This is a hack until I know a better way to do so.
+ String tmp = getLogFileFromCommandLine(commandLine);
+ int i = tmp.indexOf("servers/");
+ tmp = tmp.substring( i + 8);
+ tmp = tmp.substring(0,tmp.indexOf("/"));
+ serverNameFull = tmp;
+ }
+ serverName =
serverNameFull.substring(serverNameFull.lastIndexOf("/")+1);
+ if (serverName.isEmpty())
+ serverName = serverNameFull;
+
+ }
+ String logFile = getLogFileFromCommandLine(commandLine);
+ initLogEventSourcesConfigProp(logFile,config);
+ String javaClazz = psr.getProcessInfo().getName();
+
+
+ /*
+ * We'll connect to the discovered VM on the local host, so set the
jmx connection
+ * properties accordingly. This may only work on JDK6+, but then JDK5 is
deprecated
+ * anyway.
+ */
+// config.put(new
PropertySimple(JMXDiscoveryComponent.COMMAND_LINE_CONFIG_PROPERTY,
+// javaClazz));
+ config.put(new PropertySimple(JMXDiscoveryComponent.CONNECTION_TYPE,
+ LocalVMTypeDescriptor.class.getName()));
+
+ // TODO vmid will change when the detected server is bounced - how do we
follow this?
+ config.put(new
PropertySimple(JMXDiscoveryComponent.VMID_CONFIG_PROPERTY,psr.getProcessInfo().getPid()));
+
+
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ discoveryContext.getResourceType(), // ResourceType
+ serverNameFull, // key TODO distinguish per domain?
+ serverName, // Name
+ null, // TODO real version ?
+ "TODO", // Description
+ config,
+ psr.getProcessInfo()
+ );
+
+
+ // Add to return values
+ discoveredResources.add(detail);
+ log.info("Discovered new ... " +
discoveryContext.getResourceType() + ", " + serverNameFull);
+ }
+
+ return discoveredResources;
+
+ }
+
+ String getBaseDirFromCommandLine(String[] commandLine) {
+ for (String line: commandLine) {
+ if (line.startsWith(DJBOSS_SERVER_BASE_DIR))
+ return line.substring(DJBOSS_SERVER_BASE_DIR.length());
+ }
+ return "";
+ }
+
+//-Dorg.jboss.boot.log.file=/devel/jbas7/jboss-as/build/target/jboss-7.0.0.Alpha2/domain/log/server-manager/boot.log
+//-Dlogging.configuration=file:/devel/jbas7/jboss-as/build/target/jboss-7.0.0.Alpha2/domain/configuration/logging.properties
+
+ String getLogFileFromCommandLine(String[] commandLine) {
+
+ for (String line: commandLine) {
+ if (line.startsWith(DORG_JBOSS_BOOT_LOG_FILE))
+ return line.substring(DORG_JBOSS_BOOT_LOG_FILE.length());
+ }
+ return "";
+ }
+
+ private void initLogEventSourcesConfigProp(String fileName, Configuration
pluginConfiguration) {
+
+ PropertyList logEventSources = pluginConfiguration
+ .getList(LogFileEventResourceComponentHelper.LOG_EVENT_SOURCES_CONFIG_PROP);
+
+ if (logEventSources==null)
+ return;
+
+ File serverLogFile = new File(fileName);
+
+ if (serverLogFile.exists() && !serverLogFile.isDirectory()) {
+ PropertyMap serverLogEventSource = new
PropertyMap("logEventSource");
+ serverLogEventSource.put(new PropertySimple(
+
LogFileEventResourceComponentHelper.LogEventSourcePropertyNames.LOG_FILE_PATH,
serverLogFile));
+ serverLogEventSource.put(new PropertySimple(
+ LogFileEventResourceComponentHelper.LogEventSourcePropertyNames.ENABLED,
Boolean.FALSE));
+ logEventSources.add(serverLogEventSource);
+ }
+ }
+
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 2825e10..ee6b21f 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -59,7 +59,7 @@
-->
<server name="ProcessController"
- discovery="BaseDiscovery"
+ discovery="BaseProcessDiscovery"
class="BaseComponent"
description="Reaper process for other AS7 servicees"
@@ -80,6 +80,28 @@
</server>
+ <server name="HostController"
+ discovery="BaseProcessDiscovery"
+ class="BaseComponent"
+ description="Domain controller delegate for this host"
+
+
+ <plugin-configuration>
+ <c:simple-property name="hostname" default="localhost"
required="true"/>
+ <c:simple-property name="port" default="9990"
type="integer" required="true"/>
+
+ &logSources;
+ </plugin-configuration>
+
+ <process-scan name="ProcessManager"
query="process|basename|match=^java.*,arg|org.jboss.as.host-controller|match=.*"/>
+
+
+ <operation name="dummyOperation">
+ <!-- TODO supply parameters and return values -->
+ </operation>
+
+
+ </server>
<server name="Domain"
discovery="DomainDiscovery"
@@ -129,7 +151,7 @@
</server>
<server name="JBossAS7-Standalone"
- discovery="BaseDiscovery"
+ discovery="BaseProcessDiscovery"
class="BaseComponent"
@@ -165,7 +187,7 @@
</server>
<server name="JBossAS-Managed"
- discovery="BaseDiscovery"
+ discovery="BaseProcessDiscovery"
class="BaseComponent"
<plugin-configuration>
commit 800fe24b2eff29a7922a9b9a4ab1a309d352a077
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Mar 29 13:24:29 2011 +0200
Better discover managed AS servers - get their name from the log file for now.
TODO: should we better query the DC, as this also knows the AS that are not
auto-started.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
index 96737dd..7c55233 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
@@ -55,10 +55,21 @@ public class BaseDiscovery implements ResourceDiscoveryComponent
} else if (psName.equals("ASManager")) {
serverName = "ASManager";
serverNameFull = "ASManager";
+ } else if (psName.equals("HostController")) {
+ serverName = "HostController";
+ serverNameFull = "HostController";
} else {
serverNameFull = getBaseDirFromCommandLine(commandLine);
- if (serverNameFull==null || serverNameFull.isEmpty())
- serverNameFull="JBossAS7";
+ if (serverNameFull==null || serverNameFull.isEmpty()) {
+ // Try to obtain the server name
+ // -Dorg.jboss.boot.log.file=domain/servers/server-one/log/boot.log
+ // This is a hack until I know a better way to do so.
+ String tmp = getLogFileFromCommandLine(commandLine);
+ int i = tmp.indexOf("servers/");
+ tmp = tmp.substring( i + 8);
+ tmp = tmp.substring(0,tmp.indexOf("/"));
+ serverNameFull = tmp;
+ }
serverName =
serverNameFull.substring(serverNameFull.lastIndexOf("/")+1);
if (serverName.isEmpty())
serverName = serverNameFull;
commit ba753e1d0ce503b7252ae9e92cbdb9b810ec4519
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Mar 28 22:12:31 2011 +0200
Add server-groups and hosts to the domain.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index a2b5335..788531b 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -53,6 +53,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import com.sun.org.apache.xml.internal.security.utils.Base64;
+
public class BaseComponent implements ResourceComponent, MeasurementFacet,
ConfigurationFacet
{
private final Log log = LogFactory.getLog(this.getClass());
@@ -147,13 +149,22 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
public Configuration loadResourceConfiguration() throws Exception {
ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
- BaseComponent parentComponent = (BaseComponent)
context.getParentResourceComponent();
+ ResourceComponent parentResourceComponent =
context.getParentResourceComponent();
+ String parentPath =null;
String myPath;
- String parentPath = parentComponent.getPath();
- if (parentPath.endsWith("/") || path.startsWith("/"))
- myPath = parentPath + path;
+ if (parentResourceComponent instanceof BaseComponent) {
+ BaseComponent parentComponent = (BaseComponent) parentResourceComponent;
+ parentPath = parentComponent.getPath();
+ }
+
+ if (parentPath!=null) {
+ if (parentPath.endsWith("/") || path.startsWith("/"))
+ myPath = parentPath + path;
+ else
+ myPath = parentPath + "/" + path;
+ }
else
- myPath = parentPath + "/" + path;
+ myPath = path;
JsonNode json = connection.getLevelData(myPath,true,false);
@@ -169,19 +180,30 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
if (sub!=null)
propertySimple = new
PropertySimple(propDef.getName(),sub.getValueAsText());
else {
- propertySimple = new PropertySimple(propDef.getName(),null); // TODO
store it at all?
+ propertySimple = new PropertySimple(propDef.getName(),null); // TODO
store it at all when it is null?
}
ret.put(propertySimple);
} else if (propDef instanceof PropertyDefinitionList) {
PropertyList propertyList = new PropertyList(propDef.getName());
PropertyDefinition memberDefinition = ((PropertyDefinitionList)
propDef).getMemberDefinition();
if (memberDefinition ==null) {
- Iterator<JsonNode> values = sub.getElements();
- while (values.hasNext()) {
- JsonNode node = values.next();
- String value = node.getTextValue();
- PropertySimple propertySimple = new
PropertySimple(propDef.getName(),value);
- propertyList.add(propertySimple);
+ if (sub.isObject()) {
+ Iterator<String> fields = sub.getFieldNames();
+ while(fields.hasNext()) {
+ String fieldName = fields.next();
+ JsonNode subNode = sub.get(fieldName);
+ PropertySimple propertySimple = new
PropertySimple(propDef.getName(),fieldName);
+ propertyList.add(propertySimple);
+ }
+ } else {
+ System.out.println("===Sub not object==="); // TODO
evaluate this branch again
+ Iterator<JsonNode> values = sub.getElements();
+ while (values.hasNext()) {
+ JsonNode node = values.next();
+ String value = node.getTextValue();
+ PropertySimple propertySimple = new
PropertySimple(propDef.getName(),value);
+ propertyList.add(propertySimple);
+ }
}
}
else if (memberDefinition instanceof PropertyDefinitionMap) {
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 8176e8a..2825e10 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -104,6 +104,26 @@
<c:simple-property name="path"
default="/server-group/*" readOnly="true"/>
</plugin-configuration>
+ <resource-configuration>
+ <c:simple-property name="profile" />
+ <c:simple-property name="socket-binding-group"/>
+ <c:simple-property name="jvm"/>
+ <c:simple-property name="deployment"
required="false"/> <!-- TODO change structure. Or put below as resource?
-->
+ </resource-configuration>
+ </server>
+ <server name="Host"
+ description="Host involved in this domain"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" default="/host/*"
readOnly="true"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:list-property name="server-config" />
+ </resource-configuration>
+
</server>
</server>
@@ -128,11 +148,6 @@
<process-scan name="StandaloneAS"
query="process|basename|match=^java.*,arg|org.jboss.as.standalone|match=.*"/>
- <operation name="dummyOperation">
- <!-- TODO supply parameters and return values -->
- </operation>
-
-
<resource-configuration>
<c:list-property name="schema-locations"
displayName="Schema locations">
<c:map-property name="location">
@@ -162,17 +177,6 @@
<process-scan name="ManagedAS"
query="process|basename|match=^java.*,arg|org.jboss.as.server|match=.*"/>
-
- <metric property="serverGroup" dataType="trait"
displayType="summary" />
- <resource-configuration>
- <!--<c:group name="interfaces">-->
- <c:simple-property name="loopback" default="127.0.0.1"
/>
- <c:simple-property name="external" default="any"
/>
- <c:simple-property name="public" default="any" />
- <!--</c:group>-->
- </resource-configuration>
-
-
</server>
@@ -290,6 +294,7 @@
<runs-inside>
<parent-resource-type name="Domain"
plugin="jboss-as-7"/>
+ <parent-resource-type name="Host"
plugin="jboss-as-7"/>
<parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
</runs-inside>
commit 76830060b0233e12f319b7baae24fd23d850756d
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Mar 28 17:55:31 2011 +0200
More path handling improvements.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index c626c49..192a54f 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -138,6 +138,9 @@ public class ASConnection {
boolean isErrorReply(JsonNode in) {
+ if (in == null)
+ return true;
+
if (in.has("outcome")) {
String outcome = null;
try {
@@ -262,6 +265,8 @@ public class ASConnection {
}
public String getFailureDescription(JsonNode jsonNode) {
+ if (jsonNode==null)
+ return "getFailureDescription: -input was null-";
JsonNode node = jsonNode.findValue("failure-description");
return node.getValueAsText();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 9407172..a2b5335 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -147,7 +147,16 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
public Configuration loadResourceConfiguration() throws Exception {
ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
- JsonNode json = connection.getLevelData(path,true,false); // TODO path ? key?
+ BaseComponent parentComponent = (BaseComponent)
context.getParentResourceComponent();
+ String myPath;
+ String parentPath = parentComponent.getPath();
+ if (parentPath.endsWith("/") || path.startsWith("/"))
+ myPath = parentPath + path;
+ else
+ myPath = parentPath + "/" + path;
+
+
+ JsonNode json = connection.getLevelData(myPath,true,false);
Configuration ret = new Configuration();
ObjectMapper mapper = new ObjectMapper();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index 4cde830..b577407 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -19,6 +19,7 @@
package org.rhq.modules.plugins.jbossas7;
import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
@@ -89,6 +90,8 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
String subPath = path.substring(i+1);
JsonNode subNode = json.findPath(subPath);
+ if (subNode==null || subNode.isNull())
+ subNode = json.get(subPath); // TODO clean this up. to get the
'key' in a path from the AS we need to use get()
Map<String,Subsystem> subsystemMap = mapper.readValue(subNode,new
TypeReference<Map<String,Subsystem>>() {});
@@ -97,7 +100,9 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
String key = entry.getKey();
Subsystem subsystem = entry.getValue();
String newPath = cpath.replaceAll("\\*",key);
- config.getSimple("path").setStringValue(newPath);
+ Configuration config2 = context.getDefaultPluginConfiguration();
+ PropertySimple pathProp = new
PropertySimple("path",newPath);
+ config2.put(pathProp);
String resKey = context.getParentResourceContext().getResourceKey() +
"/" + key;
String name = resKey.substring(resKey.lastIndexOf("/") +
1);
@@ -109,7 +114,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
name, // Name
null, // Version
subsystem.description, // Description
- config,
+ config2,
null);
details.add(detail);
}
@@ -120,7 +125,10 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
String resKey = path;
String name = resKey.substring(resKey.lastIndexOf("/") + 1);
- config.getSimple("path").setStringValue(path);
+ Configuration config2 = context.getDefaultPluginConfiguration();
+ PropertySimple pathProp = new PropertySimple("path",path);
+ config2.put(pathProp);
+
DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
@@ -129,7 +137,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
name, // Name
null, // Version
path, // Description
- config,
+ config2,
null);
details.add(detail);
}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 654ee06..8176e8a 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -96,7 +96,7 @@
<c:simple-property name="path"
default="/profile/*" readOnly="true"/>
</plugin-configuration>
</server>
- <server name="ServerGroups"
+ <server name="ServerGroup"
description="Server groups on this domain"
discovery="SubsystemDiscovery"
class="BaseComponent">
@@ -283,54 +283,54 @@
</server>
- <service name="NetworkInterface"
- discovery="InterfaceDiscovery"
- class="BaseComponent"
- description="A named network interface, along with required
criteria for determining the IP address to associate with that interface">
+ <service name="NetworkInterface"
+ discovery="InterfaceDiscovery"
+ class="BaseComponent"
+ description="A named network interface, along with required criteria
for determining the IP address to associate with that interface">
- <runs-inside>
- <parent-resource-type name="Domain"
plugin="jboss-as-7"/>
- <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
- </runs-inside>
+ <runs-inside>
+ <parent-resource-type name="Domain"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/"/>
- </plugin-configuration>
- </service>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/"/>
+ </plugin-configuration>
+ </service>
- <service name="SocketBindingGroup"
- discovery="SocketBindingGroupDiscovery"
- class="BaseComponent"
-
- <runs-inside>
- <parent-resource-type name="Domain"
plugin="jboss-as-7"/>
- <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
- </runs-inside>
+ <service name="SocketBindingGroup"
+ discovery="SocketBindingGroupDiscovery"
+ class="BaseComponent"
+
+ <runs-inside>
+ <parent-resource-type name="Domain"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/socket-binding-group/"/>
- </plugin-configuration>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/socket-binding-group/"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="default-interface"
readOnly="true" displayName="Default Interface"
description="Default Interface for these bindings. See NetworkInterfaces for its
definition" required="false"/>
- <!-- note: at domain level there is no port-offset -->
- <c:simple-property name="port-offset"
readOnly="true" displayName="Port Offset" description="Offset
from standard ports for this group" required="false"/>
- <c:list-property name="include">
- <c:simple-property name="binding"
displayName="Included bindings" description="Other bindings that are
included in this one"/>
- </c:list-property>
- <c:list-property name="socket-binding">
- <c:map-property name="binding">
- <c:simple-property name="name" description="The
name of the socket. Services which need to access the socket configuration information
will find it using this name."/>
- <c:simple-property name="interface"
description="Name of the interface to which the socket should be bound, or, for
multicast sockets, the interface on which it should listen. This should be one of the
declared interfaces." required="false"/>
- <c:simple-property name="port"
description="Number of the port to which the socket should be bound."
type="integer"/>
- <c:simple-property name="fixed-port"
description="Whether the port value should remain fixed even if numeric offsets are
applied to the other sockets in the socket group." type="boolean"/>
- <c:simple-property name="multicast-address"
description="Multicast address on which the socket should receive multicast traffic.
If unspecified, the socket will not be configured to receive multicast." />
- <c:simple-property name="multicast-port"
description="Port on which the socket should receive multicast traffic. Must be
configured if 'multicast-address' is configured."
type="integer"/>
- </c:map-property>
- </c:list-property>
- </resource-configuration>
+ <resource-configuration>
+ <c:simple-property name="default-interface"
readOnly="true" displayName="Default Interface"
description="Default Interface for these bindings. See NetworkInterfaces for its
definition" required="false"/>
+ <!-- note: at domain level there is no port-offset -->
+ <c:simple-property name="port-offset" readOnly="true"
displayName="Port Offset" description="Offset from standard ports for this
group" required="false"/>
+ <c:list-property name="include">
+ <c:simple-property name="binding" displayName="Included
bindings" description="Other bindings that are included in this one"/>
+ </c:list-property>
+ <c:list-property name="socket-binding">
+ <c:map-property name="binding">
+ <c:simple-property name="name" description="The
name of the socket. Services which need to access the socket configuration information
will find it using this name."/>
+ <c:simple-property name="interface"
description="Name of the interface to which the socket should be bound, or, for
multicast sockets, the interface on which it should listen. This should be one of the
declared interfaces." required="false"/>
+ <c:simple-property name="port" description="Number
of the port to which the socket should be bound." type="integer"/>
+ <c:simple-property name="fixed-port"
description="Whether the port value should remain fixed even if numeric offsets are
applied to the other sockets in the socket group." type="boolean"/>
+ <c:simple-property name="multicast-address"
description="Multicast address on which the socket should receive multicast traffic.
If unspecified, the socket will not be configured to receive multicast." />
+ <c:simple-property name="multicast-port"
description="Port on which the socket should receive multicast traffic. Must be
configured if 'multicast-address' is configured."
type="integer"/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
- </service>
+ </service>
</plugin>
commit cac8c1fe12745ceb5b72573800d27787bc6398c2
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Mar 28 16:18:48 2011 +0200
Shuffle stuff around to support domain mode.
Add Domain discovery, improve handling of the "path" config element.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 64e575b..9407172 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -155,8 +155,14 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
for (PropertyDefinition propDef: configDef.getNonGroupedProperties()) {
JsonNode sub = json.findValue(propDef.getName());
if (propDef instanceof PropertyDefinitionSimple) {
- PropertySimple propertySimple = new
PropertySimple(propDef.getName(),sub.getValueAsText());
- ret.put(propertySimple);
+ PropertySimple propertySimple;
+
+ if (sub!=null)
+ propertySimple = new
PropertySimple(propDef.getName(),sub.getValueAsText());
+ else {
+ propertySimple = new PropertySimple(propDef.getName(),null); // TODO
store it at all?
+ }
+ ret.put(propertySimple);
} else if (propDef instanceof PropertyDefinitionList) {
PropertyList propertyList = new PropertyList(propDef.getName());
PropertyDefinition memberDefinition = ((PropertyDefinitionList)
propDef).getMemberDefinition();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
index e2d73c4..96737dd 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
@@ -1,23 +1,19 @@
package org.rhq.modules.plugins.jbossas7;
import java.io.File;
-import java.net.InetAddress;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.mc4j.ems.connection.support.metadata.LocalVMTypeDescriptor;
import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.Property;
import org.rhq.core.domain.configuration.PropertyList;
import org.rhq.core.domain.configuration.PropertyMap;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.pluginapi.event.log.LogFileEventResourceComponentHelper;
import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
-import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ProcessScanResult;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
@@ -68,7 +64,7 @@ public class BaseDiscovery implements ResourceDiscoveryComponent
serverName = serverNameFull;
}
- String logFile = getLogFieFromCommandLine(commandLine);
+ String logFile = getLogFileFromCommandLine(commandLine);
initLogEventSourcesConfigProp(logFile,config);
String javaClazz = psr.getProcessInfo().getName();
@@ -118,7 +114,7 @@ public class BaseDiscovery implements ResourceDiscoveryComponent
//-Dorg.jboss.boot.log.file=/devel/jbas7/jboss-as/build/target/jboss-7.0.0.Alpha2/domain/log/server-manager/boot.log
//-Dlogging.configuration=file:/devel/jbas7/jboss-as/build/target/jboss-7.0.0.Alpha2/domain/configuration/logging.properties
- String getLogFieFromCommandLine(String[] commandLine) {
+ String getLogFileFromCommandLine(String[] commandLine) {
for (String line: commandLine) {
if (line.startsWith(DORG_JBOSS_BOOT_LOG_FILE))
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
new file mode 100644
index 0000000..ad09c77
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDiscovery.java
@@ -0,0 +1,101 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.modules.plugins.jbossas7.json.Subsystem;
+
+/**
+ * Discover the domain
+ *
+ * @author Heiko W. Rupp
+ */
+@SuppressWarnings("unused")
+public class DomainDiscovery implements ResourceDiscoveryComponent<BaseComponent>
{
+
+ private final Log log = LogFactory.getLog(this.getClass());
+
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent> context)
+ throws Exception {
+
+ Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>(1);
+
+ ObjectMapper mapper = new ObjectMapper();
+
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
+ mapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING,true);
+
+ // TODO get next from some host.xml file
+ String host = "localhost";
+ String portString = "9990";
+ int port = Integer.parseInt(portString);
+ ASConnection connection = new ASConnection(host,port);
+
+
+ Configuration config = context.getDefaultPluginConfiguration();
+
+
+ // A domain has a server group so check for it.
+ boolean found = false;
+ JsonNode json = connection.getLevelData(null,null);
+ if (!connection.isErrorReply(json)) {
+
+ Iterator<String> fields = json.getFieldNames();
+ while (fields.hasNext()) {
+ String field = fields.next();
+ if (field.equals("server-group"))
+ found=true;
+
+ }
+
+ if (found) {
+
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ context.getResourceType(), // DataType
+ "Domain", // Key
+ "Domain", // Name
+ null, // Version
+ context.getResourceType().getDescription(), // Description
+ config,
+ null);
+ details.add(detail);
+ }
+
+ return details;
+ }
+
+ return Collections.emptySet();
+ }
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index a017194..4cde830 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -63,6 +63,8 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
String cpath = config.getSimpleValue("path", null);
boolean recursive = false;
+ String parentPath = parentComponent.getPath();
+
String path;
if (cpath.endsWith("/*")) {
path = cpath.substring(0,cpath.length()-2);
@@ -71,6 +73,14 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
else
path = cpath;
+ if (parentPath!=null && !parentPath.isEmpty()) {
+ if (parentPath.endsWith("/") || path.startsWith("/"))
+ path = parentPath + path;
+ else
+ path = parentPath + "/" + path;
+ }
+ System.out.println("total path: [" + path + "]");
+
JsonNode json = connection.getLevelData(path,recursive, false);
if (!connection.isErrorReply(json)) {
@@ -86,6 +96,8 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
String key = entry.getKey();
Subsystem subsystem = entry.getValue();
+ String newPath = cpath.replaceAll("\\*",key);
+ config.getSimple("path").setStringValue(newPath);
String resKey = context.getParentResourceContext().getResourceKey() +
"/" + key;
String name = resKey.substring(resKey.lastIndexOf("/") +
1);
@@ -108,6 +120,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
String resKey = path;
String name = resKey.substring(resKey.lastIndexOf("/") + 1);
+ config.getSimple("path").setStringValue(path);
DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 54fd4cf..654ee06 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -51,7 +51,7 @@
version="4.0.0-SNAPSHOT"
- <depends plugin="JMX"/>
+ <depends plugin="JMX" useClasses="true"/>
<!-- TODO I think we should introduce an abstract AS7 plugin that contains some
base functionality and then
@@ -78,18 +78,33 @@
<!-- TODO supply parameters and return values -->
</operation>
- <!--
- <server name="ProcessManager JVM"
- description="JVM of the ProcessManager"
- sourcePlugin="JMX"
- sourceType="JMX Server"
-
discovery="org.rhq.plugins.jmx.LocalJMXServerDiscoveryComponent"
- class="org.rhq.plugins.jmx.JMXServerComponent"
- singleton="true"
- />
- -->
+
+ </server>
+
+ <server name="Domain"
+ discovery="DomainDiscovery"
+ class="BaseComponent"
+ description="An AS7 management profile">
+ <server name="Profile"
+ description="One profile in a domain"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+
+ <plugin-configuration>
+ <c:simple-property name="path"
default="/profile/*" readOnly="true"/>
+ </plugin-configuration>
+ </server>
+ <server name="ServerGroups"
+ description="Server groups on this domain"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+ <plugin-configuration>
+ <c:simple-property name="path"
default="/server-group/*" readOnly="true"/>
+ </plugin-configuration>
+
+ </server>
</server>
@@ -116,16 +131,7 @@
<operation name="dummyOperation">
<!-- TODO supply parameters and return values -->
</operation>
- <!--
- <server name="JBoss AS standalone JVM"
- description="JVM of the standalone JBossAS"
- sourcePlugin="JMX"
- sourceType="JMX Server"
-
discovery="org.rhq.plugins.jmx.LocalJMXServerDiscoveryComponent"
- class="org.rhq.plugins.jmx.JMXServerComponent"
- singleton="true"
- />
- -->
+
<resource-configuration>
<c:list-property name="schema-locations"
displayName="Schema locations">
@@ -139,89 +145,154 @@
</c:list-property>
</resource-configuration>
- <server name="Messaging"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- singleton="true"
+
+
+ </server>
+
+ <server name="JBossAS-Managed"
+ discovery="BaseDiscovery"
+ class="BaseComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="hostname" default="localhost"
required="true"/>
+ <c:simple-property name="port" default="9990"
type="integer" required="true"/>
+
+ &logSources;
+ </plugin-configuration>
+
+ <process-scan name="ManagedAS"
query="process|basename|match=^java.*,arg|org.jboss.as.server|match=.*"/>
+
+
+ <metric property="serverGroup" dataType="trait"
displayType="summary" />
+ <resource-configuration>
+ <!--<c:group name="interfaces">-->
+ <c:simple-property name="loopback" default="127.0.0.1"
/>
+ <c:simple-property name="external" default="any"
/>
+ <c:simple-property name="public" default="any" />
+ <!--</c:group>-->
+ </resource-configuration>
+
+
+ </server>
+
+
+<!--
+ <server name="JBoss AS JVM"
+ description="JVM of the standalone JBossAS"
+ sourcePlugin="JMX"
+ sourceType="JMX Server"
+ discovery="org.rhq.plugins.jmx.LocalJMXServerDiscoveryComponent"
+ class="org.rhq.plugins.jmx.JMXServerComponent"
+ singleton="true"
+ >
+ <runs-inside>
+ <parent-resource-type name="JBossAS-Managed"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ <parent-resource-type name="ProcessController"
plugin="jboss-as-7"/>
+ </runs-inside>
+ </server>
+-->
+
+ <server name="Messaging"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/subsystem/messaging"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="journal-min-files" />
+ <c:simple-property name="journal-type" />
+ </resource-configuration>
+
+
+ <service name="Acceptor"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/subsystem/messaging"/>
+ <c:simple-property name="path" readOnly="true"
default="/acceptor"/>
</plugin-configuration>
- <resource-configuration>
- <c:simple-property name="journal-min-files" />
- <c:simple-property name="journal-type" />
- </resource-configuration>
+ </service>
- <service name="Acceptor"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
-
-
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/subsystem/messaging/acceptor"/>
- </plugin-configuration>
+ </server>
+ <server name="JBossWeb"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+ singleton="true"
+
- </service>
+ <runs-inside>
+ <parent-resource-type name="Profile"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
- </server>
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/subsystem/web"/>
+ </plugin-configuration>
- <server name="JBossWeb"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
- singleton="true"
+ <service name="Connector"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/subsystem/web"/>
+ <c:simple-property name="path" readOnly="true"
default="/connector/*"/>
</plugin-configuration>
- <service name="Connector"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
-
-
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/subsystem/web/connector/*"/>
- </plugin-configuration>
-
- <metric property="bytesSent"
measurementType="trendsup"/>
- <metric property="bytesReceived"
measurementType="trendsup"/>
- <metric property="processingTime"
measurementType="trendsup"/>
- <metric property="errorCount"
measurementType="trendsup"/>
- <metric property="maxTime" />
- <metric property="requestCount"
measurementType="trendsup"/>
+ <metric property="bytesSent"
measurementType="trendsup"/>
+ <metric property="bytesReceived"
measurementType="trendsup"/>
+ <metric property="processingTime"
measurementType="trendsup"/>
+ <metric property="errorCount"
measurementType="trendsup"/>
+ <metric property="maxTime" />
+ <metric property="requestCount"
measurementType="trendsup"/>
- <resource-configuration>
- <c:simple-property name="protocol"
required="false" description="The web connector protocol."/>
- <c:simple-property name="socket-binding"
required="false" description="The web connector socket-binding reference,
this connector should be bound to."/>
- <c:simple-property name="scheme"
required="false" description="The web connector scheme"/>
- </resource-configuration>
+ <resource-configuration>
+ <c:simple-property name="protocol"
required="false" description="The web connector protocol."/>
+ <c:simple-property name="socket-binding"
required="false" description="The web connector socket-binding reference,
this connector should be bound to."/>
+ <c:simple-property name="scheme" required="false"
description="The web connector scheme"/>
+ </resource-configuration>
- </service>
+ </service>
- <service name="VHost"
- discovery="SubsystemDiscovery"
- class="BaseComponent">
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/subsystem/web/virtual-server/*"/>
- </plugin-configuration>
+ <service name="VHost"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/virtual-server/*"/>
+ </plugin-configuration>
- <resource-configuration>
- <c:simple-property name="access-log"/>
- <c:list-property name="alias" description="The
virtual server aliases"/>
- <c:simple-property name="rewrite"/>
- </resource-configuration>
+ <resource-configuration>
+ <c:simple-property name="access-log"/>
+ <c:list-property name="alias" description="The virtual
server aliases"/>
+ <c:simple-property name="rewrite"/>
+ </resource-configuration>
- </service>
+ </service>
- </server>
+ </server>
<service name="NetworkInterface"
discovery="InterfaceDiscovery"
class="BaseComponent"
description="A named network interface, along with required
criteria for determining the IP address to associate with that interface">
+
+ <runs-inside>
+ <parent-resource-type name="Domain"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="/"/>
</plugin-configuration>
@@ -231,13 +302,23 @@
discovery="SocketBindingGroupDiscovery"
class="BaseComponent"
+ <runs-inside>
+ <parent-resource-type name="Domain"
plugin="jboss-as-7"/>
+ <parent-resource-type name="JBossAS7-Standalone"
plugin="jboss-as-7"/>
+ </runs-inside>
+
+
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="/socket-binding-group/"/>
</plugin-configuration>
<resource-configuration>
<c:simple-property name="default-interface"
readOnly="true" displayName="Default Interface"
description="Default Interface for these bindings. See NetworkInterfaces for its
definition" required="false"/>
+ <!-- note: at domain level there is no port-offset -->
<c:simple-property name="port-offset"
readOnly="true" displayName="Port Offset" description="Offset
from standard ports for this group" required="false"/>
+ <c:list-property name="include">
+ <c:simple-property name="binding"
displayName="Included bindings" description="Other bindings that are
included in this one"/>
+ </c:list-property>
<c:list-property name="socket-binding">
<c:map-property name="binding">
<c:simple-property name="name" description="The
name of the socket. Services which need to access the socket configuration information
will find it using this name."/>
@@ -252,41 +333,4 @@
</service>
-
- </server>
-
- <server name="JBossAS-Managed"
- discovery="BaseDiscovery"
- class="BaseComponent"
-
- <plugin-configuration>
- <c:simple-property name="hostname" default="localhost"
required="true"/>
- <c:simple-property name="port" default="9990"
type="integer" required="true"/>
-
- &logSources;
- </plugin-configuration>
-
- <process-scan name="ManagedAS"
query="process|basename|match=^java.*,arg|org.jboss.as.server|match=.*"/>
-
-
- <metric property="serverGroup" dataType="trait"
displayType="summary" />
- <resource-configuration>
- <!--<c:group name="interfaces">-->
- <c:simple-property name="loopback" default="127.0.0.1"
/>
- <c:simple-property name="external" default="any"
/>
- <c:simple-property name="public" default="any" />
- <!--</c:group>-->
- </resource-configuration>
-
- <server name="JBoss AS managed JVM"
- description="JVM of the managed JBossAS"
- sourcePlugin="JMX"
- sourceType="JMX Server"
-
discovery="org.rhq.plugins.jmx.LocalJMXServerDiscoveryComponent"
- class="org.rhq.plugins.jmx.JMXServerComponent"
- singleton="true"
- />
-
- </server>
-
</plugin>
commit cab2192295a5186955f23713b763e32b6e64c8bc
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Mar 25 17:39:22 2011 +0100
Convert extensions to a list of simple props.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 8d3a7a8..64e575b 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -247,6 +247,16 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
}
}
+ else if (memberDefinition instanceof PropertyDefinitionSimple) {
+ String name = memberDefinition.getName();
+ Iterator<String> keys = sub.getFieldNames();
+ while(keys.hasNext()) {
+ String entryKey = keys.next();
+
+ PropertySimple propertySimple = new
PropertySimple(name,entryKey);
+ propertyList.add(propertySimple);
+ }
+ }
ret.put(propertyList);
}
}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 6a00d57..54fd4cf 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -135,9 +135,7 @@
</c:map-property>
</c:list-property>
<c:list-property name="extension" displayName="Installed
extensions">
- <c:map-property name="extension">
- <c:simple-property name="name"
readOnly="true"/>
- </c:map-property>
+ <c:simple-property name="name"
readOnly="true"/>
</c:list-property>
</resource-configuration>
commit 73ebc9d575c836294ac6f45df3e662c325def109
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Mar 25 17:00:06 2011 +0100
Support /extension and /schema-locations as resource config on AS
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 50bd98d..c626c49 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -194,7 +194,6 @@ public class ASConnection {
while ((line = in.readLine()) != null) {
builder.append(line);
}
-// System.out.println(builder.toString());
in.close();
}
else {
@@ -207,11 +206,12 @@ public class ASConnection {
while ((line = br.readLine()) != null) {
builder.append(line);
}
-// System.out.println(builder.toString());
br.close();
}
}
- JsonNode operationResult = mapper.readTree(builder.toString());
+ String outcome = builder.toString();
+ System.out.println("==> " + outcome);
+ JsonNode operationResult = mapper.readTree(outcome);
return operationResult;
} catch (IOException e) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index a4c388f..8d3a7a8 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -21,6 +21,7 @@ package org.rhq.modules.plugins.jbossas7;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.ObjectMapper;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
@@ -45,8 +46,10 @@ import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -61,7 +64,6 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
String path;
String key;
-
/**
* Return availability of this resource
* @see org.rhq.core.pluginapi.inventory.ResourceComponent#getAvailability()
@@ -145,9 +147,10 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
public Configuration loadResourceConfiguration() throws Exception {
ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
- JsonNode json = connection.getLevelData(key,true,false); // TODO path ? key?
+ JsonNode json = connection.getLevelData(path,true,false); // TODO path ? key?
Configuration ret = new Configuration();
+ ObjectMapper mapper = new ObjectMapper();
for (PropertyDefinition propDef: configDef.getNonGroupedProperties()) {
JsonNode sub = json.findValue(propDef.getName());
@@ -156,7 +159,8 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
ret.put(propertySimple);
} else if (propDef instanceof PropertyDefinitionList) {
PropertyList propertyList = new PropertyList(propDef.getName());
- if (((PropertyDefinitionList) propDef).getMemberDefinition()==null) {
+ PropertyDefinition memberDefinition = ((PropertyDefinitionList)
propDef).getMemberDefinition();
+ if (memberDefinition ==null) {
Iterator<JsonNode> values = sub.getElements();
while (values.hasNext()) {
JsonNode node = values.next();
@@ -165,20 +169,82 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
propertyList.add(propertySimple);
}
}
- else if (((PropertyDefinitionList) propDef).getMemberDefinition()
instanceof PropertyDefinitionMap) {
- Iterator<String> entries = sub.getFieldNames();
- while (entries.hasNext()) {
- String entryKey = entries.next();
- JsonNode node = sub.findPath(entryKey);
- PropertyMap map = new PropertyMap(((PropertyDefinitionList)
propDef).getMemberDefinition().getName()); // TODO : name from def or 'entryKey'
?
- Iterator<String> fields = node.getFieldNames(); // TODO
loop over fields from map and not from json
- while (fields.hasNext()) {
- String key = fields.next();
-
- PropertySimple propertySimple = new
PropertySimple(key,node.findValue(key).getValueAsText());
- map.put(propertySimple);
+ else if (memberDefinition instanceof PropertyDefinitionMap) {
+ PropertySimple propertySimple;
+
+ if (sub.isArray()) {
+ Iterator<JsonNode> entries = sub.getElements();
+ while (entries.hasNext()) {
+ JsonNode entry = entries.next(); // -> one row in the list
i.e. one map
+
+ // Distinguish here?
+
+ PropertyMap map = new
PropertyMap(memberDefinition.getName()); // TODO : name from def or 'entryKey' ?
+ Iterator<JsonNode> fields = entry.getElements(); //
TODO loop over fields from map and not from json
+ while (fields.hasNext()) {
+ JsonNode field = fields.next();
+ if (field.isObject()) {
+ // TODO only works for tuples at the moment - migrate
to some different kind of parsing!
+ PROPERTY_VALUE prop =
mapper.readValue(field,PROPERTY_VALUE.class);
+ // now need to find the names of the properties
+ List<PropertyDefinition> defList =
((PropertyDefinitionMap) memberDefinition).getSummaryPropertyDefinitions();
+ if (defList.isEmpty())
+ throw new IllegalArgumentException("Map
" + memberDefinition.getName() + " has no members");
+ String key = defList.get(0).getName();
+ String value = prop.getKey();
+ propertySimple = new PropertySimple(key,value);
+ map.put(propertySimple);
+ if (defList.size()>1) {
+ key = defList.get(1).getName();
+ value = prop.getValue();
+ propertySimple = new PropertySimple(key,value);
+ map.put(propertySimple);
+
+ }
+ } else { // TODO reached?
+ String key = field.getValueAsText();
+ if (key.equals("PROPERTY_VALUE")) { // TODO
this may change in the future in the AS implementation
+ JsonNode pv = entry.findValue(key);
+ String k = pv.toString();
+ String v = pv.getValueAsText();
+ propertySimple = new PropertySimple(k,v);
+ map.put(propertySimple);
+
+ }
+ else {
+ propertySimple = new
PropertySimple(key,entry.findValue(key).getValueAsText());
+ map.put(propertySimple);
+
+ }
+ }
+ }
+ propertyList.add(map);
+ }
+ }
+ else if (sub.isObject()) {
+ Iterator<String> keys = sub.getFieldNames();
+ while(keys.hasNext()) {
+ String entryKey = keys.next();
+
+ JsonNode node = sub.findPath(entryKey);
+ PropertyMap map = new
PropertyMap(memberDefinition.getName()); // TODO : name from def or 'entryKey' ?
+ if (node.isObject()) {
+ Iterator<String> fields = node.getFieldNames(); //
TODO loop over fields from map and not from json
+ while (fields.hasNext()) {
+ String key = fields.next();
+
+ propertySimple = new
PropertySimple(key,node.findValue(key).getValueAsText());
+ map.put(propertySimple);
+ }
+ propertyList.add(map);
+ } else if (sub.isNull()) {
+ List<PropertyDefinition> defList =
((PropertyDefinitionMap) memberDefinition).getSummaryPropertyDefinitions();
+ String key = defList.get(0).getName();
+ propertySimple = new PropertySimple(key,entryKey);
+ map.put(propertySimple);
+ }
}
- propertyList.add(map);
+
}
}
ret.put(propertyList);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
index 571dbab..e2d73c4 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
@@ -67,17 +67,6 @@ public class BaseDiscovery implements ResourceDiscoveryComponent
if (serverName.isEmpty())
serverName = serverNameFull;
-// DomainClient client =
DomainClient.Factory.create(InetAddress.getByName("localhost"),9990); //
-// Map<ServerIdentity,ServerStatus> serverStatuses =
client.getServerStatuses();
-// for (Map.Entry<ServerIdentity,ServerStatus> entry :
serverStatuses.entrySet()) {
-// ServerIdentity identity = entry.getKey();
-// ServerStatus status = entry.getValue();
-// if (identity.getServerName().equals(serverName)) {
-// String serverGroupName = identity.getServerGroupName();
-// config.put(new
PropertySimple("server-group",serverGroupName));
-// }
-//
-// }
}
String logFile = getLogFieFromCommandLine(commandLine);
initLogEventSourcesConfigProp(logFile,config);
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
index fdc04c6..f145aa6 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
@@ -30,6 +30,8 @@ public class NameValuePair {
public String name;
public String value;
+ public NameValuePair() {}
+
public NameValuePair(String name, String value) {
this.name = name;
this.value = value;
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 7abbfeb..6a00d57 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -127,9 +127,25 @@
/>
-->
+ <resource-configuration>
+ <c:list-property name="schema-locations"
displayName="Schema locations">
+ <c:map-property name="location">
+ <c:simple-property name="urn"
readOnly="true"/>
+ <c:simple-property name="location"
readOnly="true"/>
+ </c:map-property>
+ </c:list-property>
+ <c:list-property name="extension" displayName="Installed
extensions">
+ <c:map-property name="extension">
+ <c:simple-property name="name"
readOnly="true"/>
+ </c:map-property>
+ </c:list-property>
+ </resource-configuration>
+
<server name="Messaging"
discovery="SubsystemDiscovery"
- class="BaseComponent">
+ class="BaseComponent"
+ singleton="true"
+
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="/subsystem/messaging"/>
</plugin-configuration>
@@ -156,6 +172,7 @@
<server name="JBossWeb"
discovery="SubsystemDiscovery"
class="BaseComponent"
+ singleton="true"
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="/subsystem/web"/>
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
index 4082612..4909595 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
@@ -51,13 +51,12 @@ public class OperationJsonTest {
String result = mapper.writeValueAsString(operation);
- System.out.println(operation);
- System.out.println(result);
-
Operation op = mapper.readValue(result,Operation.class);
assert op.getOperation().equals(operation.getOperation()) : "Operation is
" + op.getOperation();
assert op.getName().equals("socket-binding") : "attribute name is
" + op.getName();
assert op.getValue().equals("jndi") : "attribute value is "
+ op.getValue();
+ assert op.getAddress().size()==2 : "Address did not contain 2 parts, but
" + op.getAddress().size();
+
}
commit 8256274472de89eeb3f733de08ff79740d7fca7e
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Mar 25 13:17:55 2011 +0100
Improve support for execute operations on AS
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 663df43..50bd98d 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -51,6 +51,7 @@ public class ASConnection {
private String host;
URL url;
String urlString;
+ private StringBuilder builder;
public ASConnection(String host, int port) {
this.host = host;
@@ -157,18 +158,23 @@ public class ASConnection {
return false;
}
- public void execute(String path, String operationName, NameValuePair nvp) {
+ /**
+ * Execute an operation against the domain api
+ * @param path Node to manipulate
+ * @param operationName operation to run
+ * @param attributeValue attribute-name-value pair
+ */
+ public JsonNode execute(String path, String operationName, NameValuePair
attributeValue) {
try {
- URL url = getBaseUrl(path,"operation="+operationName);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
-// conn.setRequestMethod("POST");
+ conn.setRequestMethod("POST");
OutputStream out = conn.getOutputStream();
ObjectMapper mapper = new ObjectMapper();
- Operation operation = new Operation(operationName,pathToAddress(path),nvp);
+ Operation operation = new
Operation(operationName,pathToAddress(path),attributeValue);
String result = mapper.writeValueAsString(operation);
System.out.println("Json to send: " + result);
@@ -184,17 +190,35 @@ public class ASConnection {
BufferedReader in = new BufferedReader(new InputStreamReader(
inputStream));
String line;
- StringBuilder builder = new StringBuilder();
+ builder = new StringBuilder();
while ((line = in.readLine()) != null) {
builder.append(line);
}
- System.out.println(builder.toString());
+// System.out.println(builder.toString());
+ in.close();
}
+ else {
+ System.out.println(conn.getResponseCode());
+ InputStream errorStream = conn.getErrorStream();
+ if (errorStream!=null) {
+ BufferedReader br = new BufferedReader(new
InputStreamReader(errorStream));
+ String line;
+ builder = new StringBuilder();
+ while ((line = br.readLine()) != null) {
+ builder.append(line);
+ }
+// System.out.println(builder.toString());
+ br.close();
+ }
+ }
+ JsonNode operationResult = mapper.readTree(builder.toString());
+ return operationResult;
} catch (IOException e) {
e.printStackTrace(); // TODO: Customise this generated block
}
+ return null;
}
private List<PROPERTY_VALUE> pathToAddress(String path) {
@@ -237,4 +261,9 @@ public class ASConnection {
return url2;
}
+ public String getFailureDescription(JsonNode jsonNode) {
+ JsonNode node = jsonNode.findValue("failure-description");
+ return node.getValueAsText();
+
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index ad3516e..a4c388f 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
import org.rhq.core.domain.configuration.PropertyList;
import org.rhq.core.domain.configuration.PropertyMap;
import org.rhq.core.domain.configuration.PropertySimple;
@@ -195,10 +196,12 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
for (Map.Entry<String, PropertySimple> entry :
conf.getSimpleProperties().entrySet()) {
NameValuePair nvp = new
NameValuePair(entry.getKey(),entry.getValue().getStringValue());
- connection.execute(path,"write-attribute",nvp);
+ JsonNode result= connection.execute(key,"write-attribute",nvp); //
TODO path / key handling
+ if(connection.isErrorReply(result)) {
+ report.setStatus(ConfigurationUpdateStatus.FAILURE);
+ report.setErrorMessage(connection.getFailureDescription(result));
+ }
}
-
- // TODO: Customise this generated block
}
}
commit 0b87441a0a79ca22d01456a293213902b001795b
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Mar 25 12:00:32 2011 +0100
Implement serialization and deserialization of Operation to/from json.
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index ef75ab7..38cdfa0 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -30,8 +30,8 @@
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
- <source>1.5</source>
- <target>1.5</target>
+ <source>1.6</source>
+ <target>1.6</target>
</configuration>
</plugin>
<plugin>
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 0fb28b1..663df43 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -35,8 +35,8 @@ import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.jetbrains.annotations.Nullable;
-import org.omg.CORBA.NamedValue;
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
import org.rhq.modules.plugins.jbossas7.json.Operation;
@@ -157,10 +157,10 @@ public class ASConnection {
return false;
}
- public void execute(String path, String s, NameValuePair nvp) {
+ public void execute(String path, String operationName, NameValuePair nvp) {
try {
- URL url = getBaseUrl(path,"operation="+s);
+ URL url = getBaseUrl(path,"operation="+operationName);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
// conn.setRequestMethod("POST");
@@ -168,11 +168,7 @@ public class ASConnection {
ObjectMapper mapper = new ObjectMapper();
- Operation operation = new Operation();
- operation.operation=s;
- operation.nvp=nvp;
- operation.address=pathToAddress(path);
-
+ Operation operation = new Operation(operationName,pathToAddress(path),nvp);
String result = mapper.writeValueAsString(operation);
System.out.println("Json to send: " + result);
@@ -201,17 +197,17 @@ public class ASConnection {
}
- private List<NameValuePair> pathToAddress(String path) {
+ private List<PROPERTY_VALUE> pathToAddress(String path) {
if (path.endsWith("/"))
path = path.substring(0,path.length()-1);
if (path.startsWith("/"))
path = path.substring(1);
- List<NameValuePair> result = new ArrayList<NameValuePair>();
+ List<PROPERTY_VALUE> result = new ArrayList<PROPERTY_VALUE>();
String[] components = path.split("/");
for (int i = 0; i < components.length ; i+=2) {
- NameValuePair valuePair = new NameValuePair(components[i],components[i+1]);
+ PROPERTY_VALUE valuePair = new
PROPERTY_VALUE(components[i],components[i+1]);
result.add(valuePair);
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
index ff3f10c..fdc04c6 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
@@ -18,6 +18,7 @@
*/
package org.rhq.modules.plugins.jbossas7.json;
+import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.annotate.JsonValue;
/**
@@ -34,9 +35,4 @@ public class NameValuePair {
this.value = value;
}
- @JsonValue
- @Override
- public String toString() {
- return name +":"+ value ;
- }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
index 4f5cda1..642b41f 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
@@ -18,8 +18,11 @@
*/
package org.rhq.modules.plugins.jbossas7.json;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.annotate.JsonValue;
/**
@@ -28,20 +31,99 @@ import org.codehaus.jackson.annotate.JsonValue;
*/
public class Operation {
- public String operation;
- public List<NameValuePair> address;
+ public Operation(String operation, List<PROPERTY_VALUE> address, NameValuePair
payload) {
+ this.operation = operation;
+ this.address = address;
+ this.name = payload.name;
+ this.value = payload.value;
+ }
+
+ public Operation() {
+ // needed for Jackson
+ }
+
+ private String operation;
+ @JsonProperty
+ private List<PROPERTY_VALUE> address = Collections.emptyList();
+
+ private String name;
+ private String value;
+
+ public String getOperation() {
+ return operation;
+ }
+
+ public void setOperation(String operation) {
+ this.operation = operation;
+ }
- public NameValuePair nvp;
+ public List<PROPERTY_VALUE> getAddress() {
+ return address;
+ }
+
+ public void setAddress(List<PROPERTY_VALUE> address) {
+ this.address = address;
+ }
- @JsonValue
- public String toString() {
- StringBuilder b = new StringBuilder();
- b.append("{");
- b.append("operation:").append(operation).append(",\n");
- b.append("address:").append(address).append(",\n");
- b.append(nvp);
- b.append("}");
- return b.toString();
+ public List<PROPERTY_VALUE> addToAddress(PROPERTY_VALUE component) {
+ if (address==null)
+ address = new ArrayList<PROPERTY_VALUE>();
+ address.add(component);
+ return address;
}
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /*
+ [localhost:9999 /subsystem=web/connector=http]
:write-attribute(name=socket-binding,value=jndi)
+ yield JSON to send:
+ {
+ "operation" : "write-attribute",
+ "name" : "socket-binding",
+ "value" : "jndi",
+ "address" : [
+ {
+ "PROPERTY_VALUE" : {
+ "subsystem" : "web"
+ }
+ },
+ {
+ "PROPERTY_VALUE" : {
+ "connector" : "http"
+ }
+ }
+ ]
+ }
+ */
+
+// @JsonValue
+// public String toString() {
+// StringBuilder b = new StringBuilder();
+// b.append('{');
+//
b.append("\"operation\":\"").append(operation).append("\",");
+// b.append("\"address\":");
+// if (address!=null && !address.isEmpty())
+// b.append(address);
+// else
+// b.append("[]");
+// b.append(',');
+// b.append(payload);
+// b.append("}");
+// return b.toString();
+// }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/PROPERTY_VALUE.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/PROPERTY_VALUE.java
new file mode 100644
index 0000000..b2c8223
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/PROPERTY_VALUE.java
@@ -0,0 +1,62 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import java.io.Serializable;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+import org.codehaus.jackson.annotate.JsonValue;
+import org.codehaus.jackson.map.annotate.JsonDeserialize;
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import org.rhq.modules.plugins.jbossas7.json.serializer.PropertyValueDeserializer;
+import org.rhq.modules.plugins.jbossas7.json.serializer.PropertyValueSerializer;
+
+/**
+ * @author Heiko W. Rupp
+ */
+@JsonSerialize(using = PropertyValueSerializer.class)
+@JsonDeserialize(using = PropertyValueDeserializer.class)
+public class PROPERTY_VALUE implements Serializable{
+
+ private String key;
+ private String value;
+
+ public PROPERTY_VALUE(String key, String value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/serializer/PropertyValueDeserializer.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/serializer/PropertyValueDeserializer.java
new file mode 100644
index 0000000..11e6ae3
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/serializer/PropertyValueDeserializer.java
@@ -0,0 +1,53 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json.serializer;
+
+import java.io.IOException;
+import java.lang.ref.PhantomReference;
+
+import org.codehaus.jackson.JsonParser;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.DeserializationContext;
+import org.codehaus.jackson.map.JsonDeserializer;
+
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+
+/**
+ * Deserialize {"foo":"bar"} into a PROPERTY_VALUE
+ * @author Heiko W. Rupp
+ */
+public class PropertyValueDeserializer extends JsonDeserializer<PROPERTY_VALUE> {
+
+
+ @Override
+ public PROPERTY_VALUE deserialize(JsonParser jsonParser,
+ DeserializationContext deserializationContext)
throws IOException, JsonProcessingException {
+
+ String tmp = jsonParser.getText(); // {
+ jsonParser.nextToken();
+ String key = jsonParser.getText();
+ jsonParser.nextToken();
+ String value = jsonParser.getText();
+ jsonParser.nextToken();
+ tmp = jsonParser.getText(); // }
+
+ PROPERTY_VALUE pv = new PROPERTY_VALUE(key,value);
+ return pv;
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/serializer/PropertyValueSerializer.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/serializer/PropertyValueSerializer.java
new file mode 100644
index 0000000..e7dda18
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/serializer/PropertyValueSerializer.java
@@ -0,0 +1,45 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json.serializer;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+
+/**
+ * Serialize the key/value pair from PROPERTY_VALUE into {"value of
key":"value of value"}
+ * @author Heiko W. Rupp
+ */
+public class PropertyValueSerializer extends JsonSerializer<PROPERTY_VALUE> {
+
+ @Override
+ public void serialize(PROPERTY_VALUE property_value, JsonGenerator jsonGenerator,
+ SerializerProvider serializerProvider) throws IOException,
JsonProcessingException {
+
+ jsonGenerator.writeStartObject();
+ jsonGenerator.writeFieldName(property_value.getKey());
+ jsonGenerator.writeString(property_value.getValue());
+ jsonGenerator.writeEndObject();
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
new file mode 100644
index 0000000..4082612
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
@@ -0,0 +1,74 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.codehaus.jackson.map.ObjectMapper;
+import org.testng.annotations.Test;
+
+import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
+import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
+
+/**
+ * @author Heiko W. Rupp
+ */
+@Test
+public class OperationJsonTest {
+
+
+ public void operationSerDeserTest() throws Exception{
+
+ List<PROPERTY_VALUE> address=new ArrayList<PROPERTY_VALUE>(2);
+ PROPERTY_VALUE part = new PROPERTY_VALUE("subsystem","web");
+ address.add(part);
+ part = new PROPERTY_VALUE("connector","http");
+ address.add(part);
+
+ NameValuePair payload = new
NameValuePair("socket-binding","jndi");
+ Operation operation = new
Operation("write-attribute",address,payload);
+
+
+ ObjectMapper mapper = new ObjectMapper();
+
+ String result = mapper.writeValueAsString(operation);
+
+ System.out.println(operation);
+ System.out.println(result);
+
+ Operation op = mapper.readValue(result,Operation.class);
+ assert op.getOperation().equals(operation.getOperation()) : "Operation is
" + op.getOperation();
+ assert op.getName().equals("socket-binding") : "attribute name is
" + op.getName();
+ assert op.getValue().equals("jndi") : "attribute value is "
+ op.getValue();
+
+ }
+
+ public void propertyValueDeserTest() throws Exception {
+
+ String json = "{\"myKey\":\"myValue\"}";
+
+ ObjectMapper mapper = new ObjectMapper();
+ PROPERTY_VALUE pv = mapper.readValue(json,PROPERTY_VALUE.class);
+
+ assert pv.getKey().equals("myKey") : "Key is " +
pv.getKey();
+ assert pv.getValue().equals("myValue"): "Value is " +
pv.getValue();
+ }
+}
commit 4c3726f4046e43d05e96cb71e413c6e6356db298
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Mar 24 13:13:49 2011 +0100
Support reading metrics.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index c136b20..0fb28b1 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -130,6 +130,11 @@ public class ASConnection {
return tree;
}
+ JsonNode getAttributeValue(@Nullable String base, @Nullable String attributeName)
throws Exception {
+ String op = "operation=attribute&name=" + attributeName;
+ return getLevelData(base,op);
+ }
+
boolean isErrorReply(JsonNode in) {
if (in.has("outcome")) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index f700597..ad3516e 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -23,7 +23,6 @@ import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.Property;
import org.rhq.core.domain.configuration.PropertyList;
import org.rhq.core.domain.configuration.PropertyMap;
import org.rhq.core.domain.configuration.PropertySimple;
@@ -44,13 +43,9 @@ import
org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
-import org.rhq.core.pluginapi.operation.OperationContext;
-import org.rhq.core.pluginapi.operation.OperationFacet;
-import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
import java.util.Iterator;
-import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -117,26 +112,24 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
/**
* Gather measurement data
- * @see
org.rhq.core.pluginapi.measurement.MeasurementFacet#getValues(org.rhq.core.domain.measurement.MeasurementReport,
java.util.Set)
+ * @see
org.rhq.core.pluginapi.measurement.MeasurementFacet#getValues(org.rhq.core.domain.measurement.MeasurementReport,
java.util.Set)
*/
public void getValues(MeasurementReport report,
Set<MeasurementScheduleRequest> metrics) throws Exception {
- JsonNode obj = connection.getLevelData(key,false,true);
for (MeasurementScheduleRequest req : metrics) {
- if (obj.has(req.getName())) {
-/*
- String val = obj.getString(req.getName());
- if (req.getDataType()== DataType.MEASUREMENT) {
-
- Double d = Double.parseDouble(val);
- MeasurementDataNumeric data = new MeasurementDataNumeric(req,d);
- report.addData(data);
- } else if (req.getDataType()== DataType.TRAIT) {
- MeasurementDataTrait data = new MeasurementDataTrait(req,val);
- report.addData(data);
- }
-*/
+
+ JsonNode obj = connection.getAttributeValue(key, req.getName()); // TODO
batching
+
+ String val = obj.getValueAsText();
+ if (req.getDataType()== DataType.MEASUREMENT) {
+
+ Double d = Double.parseDouble(val);
+ MeasurementDataNumeric data = new MeasurementDataNumeric(req,d);
+ report.addData(data);
+ } else if (req.getDataType()== DataType.TRAIT) {
+ MeasurementDataTrait data = new MeasurementDataTrait(req,val);
+ report.addData(data);
}
}
}
commit bbee70600f8faf000892e14a5fdea2a749f0bfb6
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Mar 24 09:49:46 2011 +0100
Bindings are now a list of maps within the binding group.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 28c0592..f700597 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -25,10 +25,12 @@ import org.codehaus.jackson.JsonNode;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.Property;
import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.configuration.PropertyMap;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.PropertyDefinition;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionList;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionMap;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.DataType;
@@ -149,7 +151,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
public Configuration loadResourceConfiguration() throws Exception {
ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
- JsonNode json = connection.getLevelData(key,false,false); // TODO path ? key?
+ JsonNode json = connection.getLevelData(key,true,false); // TODO path ? key?
Configuration ret = new Configuration();
@@ -160,12 +162,30 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
ret.put(propertySimple);
} else if (propDef instanceof PropertyDefinitionList) {
PropertyList propertyList = new PropertyList(propDef.getName());
- Iterator<JsonNode> values = sub.getElements();
- while (values.hasNext()) {
- JsonNode node = values.next();
- String value = node.getTextValue();
- PropertySimple propertySimple = new
PropertySimple(propDef.getName(),value);
- propertyList.add(propertySimple);
+ if (((PropertyDefinitionList) propDef).getMemberDefinition()==null) {
+ Iterator<JsonNode> values = sub.getElements();
+ while (values.hasNext()) {
+ JsonNode node = values.next();
+ String value = node.getTextValue();
+ PropertySimple propertySimple = new
PropertySimple(propDef.getName(),value);
+ propertyList.add(propertySimple);
+ }
+ }
+ else if (((PropertyDefinitionList) propDef).getMemberDefinition()
instanceof PropertyDefinitionMap) {
+ Iterator<String> entries = sub.getFieldNames();
+ while (entries.hasNext()) {
+ String entryKey = entries.next();
+ JsonNode node = sub.findPath(entryKey);
+ PropertyMap map = new PropertyMap(((PropertyDefinitionList)
propDef).getMemberDefinition().getName()); // TODO : name from def or 'entryKey'
?
+ Iterator<String> fields = node.getFieldNames(); // TODO
loop over fields from map and not from json
+ while (fields.hasNext()) {
+ String key = fields.next();
+
+ PropertySimple propertySimple = new
PropertySimple(key,node.findValue(key).getValueAsText());
+ map.put(propertySimple);
+ }
+ propertyList.add(map);
+ }
}
ret.put(propertyList);
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingDiscovery.java
deleted file mode 100644
index c9b7a5e..0000000
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingDiscovery.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-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.modules.plugins.jbossas7;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codehaus.jackson.JsonNode;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.type.TypeReference;
-
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
-import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
-import org.rhq.modules.plugins.jbossas7.json.Domain;
-import org.rhq.modules.plugins.jbossas7.json.SocketBindingGroup;
-
-/**
- * Discover single bindings in a socket binding group
- *
- * TODO: Is this better a resource-configuration on the parent?
- *
- * @author Heiko W. Rupp
- */
-@SuppressWarnings("unused")
-public class SocketBindingDiscovery implements
ResourceDiscoveryComponent<BaseComponent> {
-
- private final Log log = LogFactory.getLog(this.getClass());
-
- public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent> context)
- throws Exception {
-
- Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>(1);
-
- ObjectMapper mapper = new ObjectMapper();
-
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
- mapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING,true);
-
- BaseComponent parentComponent = context.getParentResourceComponent();
- ASConnection connection = parentComponent.getASConnection();
-
- String path = parentComponent.getPath();
-
-
- JsonNode json = connection.getLevelData(path,true,false);
- if (!connection.isErrorReply(json)) {
-
- SocketBindingGroup bindingGroup = mapper.readValue(json, new
TypeReference<SocketBindingGroup>() {});
- // TODO put bindingGroup. {name, default-interface, port-offset into parent
-
-
- for (Map.Entry<String,SocketBindingGroup.Binding> entry:
bindingGroup.bindings.entrySet()) {
-
- String key = entry.getKey();
- String cpath = path + "/socket-binding/" + key;
-
-
- String resKey = context.getParentResourceContext().getResourceKey() +
"/" + key;
- String name = resKey.substring(resKey.lastIndexOf("/") + 1);
-
- Configuration config = context.getDefaultPluginConfiguration();
-
- PropertySimple propertySimple = new
PropertySimple("path",cpath);
- config.put(propertySimple);
-
- DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- context.getResourceType(), // DataType
- path, // Key
- name, // Name
- null, // Version
- "Binding Group", // Description
- config,
- null);
- details.add(detail);
- log.info("Added " + detail);
- }
-
- return details;
-
- }
-
- return Collections.emptySet();
- }
-
-}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 9a04f04..7abbfeb 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -223,16 +223,18 @@
<resource-configuration>
<c:simple-property name="default-interface"
readOnly="true" displayName="Default Interface"
description="Default Interface for these bindings. See NetworkInterfaces for its
definition" required="false"/>
<c:simple-property name="port-offset"
readOnly="true" displayName="Port Offset" description="Offset
from standard ports for this group" required="false"/>
+ <c:list-property name="socket-binding">
+ <c:map-property name="binding">
+ <c:simple-property name="name" description="The
name of the socket. Services which need to access the socket configuration information
will find it using this name."/>
+ <c:simple-property name="interface"
description="Name of the interface to which the socket should be bound, or, for
multicast sockets, the interface on which it should listen. This should be one of the
declared interfaces." required="false"/>
+ <c:simple-property name="port"
description="Number of the port to which the socket should be bound."
type="integer"/>
+ <c:simple-property name="fixed-port"
description="Whether the port value should remain fixed even if numeric offsets are
applied to the other sockets in the socket group." type="boolean"/>
+ <c:simple-property name="multicast-address"
description="Multicast address on which the socket should receive multicast traffic.
If unspecified, the socket will not be configured to receive multicast." />
+ <c:simple-property name="multicast-port"
description="Port on which the socket should receive multicast traffic. Must be
configured if 'multicast-address' is configured."
type="integer"/>
+ </c:map-property>
+ </c:list-property>
</resource-configuration>
- <service name="SocketBinding"
- discovery="SocketBindingDiscovery"
- class="BaseComponent">
- <plugin-configuration>
- <c:simple-property name="path"
readOnly="true"/>
- </plugin-configuration>
-
- </service>
</service>
commit 296dba2916369ca75012995cbf7aa1863745e9b0
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Mar 23 21:19:19 2011 +0100
Fix naming for 'singleton' subsystems
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index 75683cb..a017194 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -106,7 +106,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
else {
- String resKey = context.getParentResourceContext().getResourceKey();
+ String resKey = path;
String name = resKey.substring(resKey.lastIndexOf("/") + 1);
commit 3a14db1b4c745bd66b863f872c3fd062bb296f9f
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Mar 23 21:09:45 2011 +0100
SubsystemComponent is (currently) not needed.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
index abf6d35..d23cd5d 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
@@ -28,9 +28,9 @@ import org.rhq.core.pluginapi.inventory.ResourceContext;
*
* @author Heiko W. Rupp
*/
-public class DatasourceComponent implements ResourceComponent<SubsystemComponent>
{
+public class DatasourceComponent implements ResourceComponent<BaseComponent> {
- public void start(ResourceContext<SubsystemComponent>
subsystemComponentResourceContext) throws InvalidPluginConfigurationException, Exception
{
+ public void start(ResourceContext<BaseComponent>
subsystemComponentResourceContext) throws InvalidPluginConfigurationException, Exception
{
// TODO: Customise this generated block
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceDiscovery.java
index d756543..e205c29 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceDiscovery.java
@@ -32,9 +32,9 @@ import java.util.Set;
*
* @author Heiko W. Rupp
*/
-public class DatasourceDiscovery implements
ResourceDiscoveryComponent<SubsystemComponent> {
+public class DatasourceDiscovery implements
ResourceDiscoveryComponent<BaseComponent> {
- public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<SubsystemComponent> discoveryContext)
throws InvalidPluginConfigurationException, Exception {
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent> discoveryContext) throws
InvalidPluginConfigurationException, Exception {
/*
if (subsys instanceof DataSourcesSubsystemElement) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemComponent.java
deleted file mode 100644
index 09d753c..0000000
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemComponent.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-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.modules.plugins.jbossas7;
-
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.measurement.AvailabilityType;
-import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
-import org.rhq.core.pluginapi.inventory.ResourceComponent;
-import org.rhq.core.pluginapi.inventory.ResourceContext;
-
-/**
- * Resource component for subsystems
- *
- * Deprecated - use BaseComponent
- * @author Heiko W. Rupp
- */
-@Deprecated
-public class SubsystemComponent implements ResourceComponent<BaseComponent> {
-
- ResourceContext<BaseComponent> context;
- Configuration config;
- String path;
- String key ;
-
- public void start(ResourceContext<BaseComponent> context) throws
InvalidPluginConfigurationException, Exception {
- this.config = context.getPluginConfiguration();
- path = config.getSimpleValue("path", null);
- this.context = context;
- key = context.getResourceKey();
-
- }
-
- public void stop() {
- // TODO: Customise this generated block
- }
-
- public AvailabilityType getAvailability() {
- return AvailabilityType.UP; // TODO: Customise this generated block
- }
-
-
-}
commit f70a35bfea7d230783b3079a2d16edcf0b60adb0
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Mar 23 16:47:25 2011 +0100
Include more items and allow for reading of list properties.
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 005421d..c136b20 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -23,17 +23,22 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.jetbrains.annotations.Nullable;
+import org.omg.CORBA.NamedValue;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
+import org.rhq.modules.plugins.jbossas7.json.Operation;
/**
* Provide connections to the AS and reading / writing date from/to it.
@@ -83,7 +88,7 @@ public class ASConnection {
* Return the JSON-Ojbect for a certain path.
*
* @param base Path to the object/subsystem. Can be null/"" for the base
objects
- * @param ops Operation to run on the api can be null
+ * @param ops OperationDescription to run on the api can be null
* @return A JSONObject encoding the level plus sub levels provided
* @throws Exception If anything goes wrong
*/
@@ -151,21 +156,62 @@ public class ASConnection {
try {
URL url = getBaseUrl(path,"operation="+s);
- URLConnection conn = url.openConnection();
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setDoOutput(true);
+// conn.setRequestMethod("POST");
OutputStream out = conn.getOutputStream();
ObjectMapper mapper = new ObjectMapper();
- mapper.writeValue(out,nvp);
+
+ Operation operation = new Operation();
+ operation.operation=s;
+ operation.nvp=nvp;
+ operation.address=pathToAddress(path);
+
+
+ String result = mapper.writeValueAsString(operation);
+ System.out.println("Json to send: " + result);
+ mapper.writeValue(out, operation);
+
out.flush();
out.close();
+
+ InputStream inputStream;
+ if (conn.getResponseCode()==HttpURLConnection.HTTP_OK) {
+ inputStream = conn.getInputStream();
+
+ BufferedReader in = new BufferedReader(new InputStreamReader(
+ inputStream));
+ String line;
+ StringBuilder builder = new StringBuilder();
+ while ((line = in.readLine()) != null) {
+ builder.append(line);
+ }
+ System.out.println(builder.toString());
+ }
+
} catch (IOException e) {
e.printStackTrace(); // TODO: Customise this generated block
}
}
+ private List<NameValuePair> pathToAddress(String path) {
+ if (path.endsWith("/"))
+ path = path.substring(0,path.length()-1);
+ if (path.startsWith("/"))
+ path = path.substring(1);
+ List<NameValuePair> result = new ArrayList<NameValuePair>();
+ String[] components = path.split("/");
+ for (int i = 0; i < components.length ; i+=2) {
+ NameValuePair valuePair = new NameValuePair(components[i],components[i+1]);
+ result.add(valuePair);
+ }
+
+ return result;
+ }
private URL getBaseUrl(String base, String ops) throws MalformedURLException {
String spec;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index ca746e0..28c0592 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -24,9 +24,12 @@ import org.codehaus.jackson.JsonNode;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertyList;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.PropertyDefinition;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionList;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementDataNumeric;
@@ -44,6 +47,8 @@ import org.rhq.core.pluginapi.operation.OperationFacet;
import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
+import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -144,14 +149,26 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet, Confi
public Configuration loadResourceConfiguration() throws Exception {
ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
- JsonNode json = connection.getLevelData(path,false,false);
+ JsonNode json = connection.getLevelData(key,false,false); // TODO path ? key?
Configuration ret = new Configuration();
for (PropertyDefinition propDef: configDef.getNonGroupedProperties()) {
JsonNode sub = json.findValue(propDef.getName());
- PropertySimple propertySimple = new
PropertySimple(propDef.getName(),sub.getValueAsText());
- ret.put(propertySimple);
+ if (propDef instanceof PropertyDefinitionSimple) {
+ PropertySimple propertySimple = new
PropertySimple(propDef.getName(),sub.getValueAsText());
+ ret.put(propertySimple);
+ } else if (propDef instanceof PropertyDefinitionList) {
+ PropertyList propertyList = new PropertyList(propDef.getName());
+ Iterator<JsonNode> values = sub.getElements();
+ while (values.hasNext()) {
+ JsonNode node = values.next();
+ String value = node.getTextValue();
+ PropertySimple propertySimple = new
PropertySimple(propDef.getName(),value);
+ propertyList.add(propertySimple);
+ }
+ ret.put(propertyList);
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
index 83d0e3e..571dbab 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
@@ -61,7 +61,11 @@ public class BaseDiscovery implements ResourceDiscoveryComponent
serverNameFull = "ASManager";
} else {
serverNameFull = getBaseDirFromCommandLine(commandLine);
+ if (serverNameFull==null || serverNameFull.isEmpty())
+ serverNameFull="JBossAS7";
serverName =
serverNameFull.substring(serverNameFull.lastIndexOf("/")+1);
+ if (serverName.isEmpty())
+ serverName = serverNameFull;
// DomainClient client =
DomainClient.Factory.create(InetAddress.getByName("localhost"),9990); //
// Map<ServerIdentity,ServerStatus> serverStatuses =
client.getServerStatuses();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
index 9c8ca19..ff3f10c 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
@@ -18,6 +18,8 @@
*/
package org.rhq.modules.plugins.jbossas7.json;
+import org.codehaus.jackson.annotate.JsonValue;
+
/**
*
* @author Heiko W. Rupp
@@ -31,4 +33,10 @@ public class NameValuePair {
this.name = name;
this.value = value;
}
+
+ @JsonValue
+ @Override
+ public String toString() {
+ return name +":"+ value ;
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
index f00c421..4f5cda1 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2010 Red Hat, Inc.
+ * Copyright (C) 2005-2011 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -18,63 +18,30 @@
*/
package org.rhq.modules.plugins.jbossas7.json;
-import java.util.Map;
+import java.util.List;
-import org.codehaus.jackson.annotate.JsonProperty;
+import org.codehaus.jackson.annotate.JsonValue;
/**
- * // TODO: Document this
+ * Operation to run on the server
* @author Heiko W. Rupp
*/
public class Operation {
- @JsonProperty("operation-name")
- public String operationName;
- public String description;
- @JsonProperty("request-properties")
- public Map<String,As7RequestProperty> requestProperties;
-// @JsonProperty("reply-properties")
-// public ArrayList<As7ReplyProperty> replyProperties;
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("Operation");
-
sb.append("{operationName='").append(operationName).append('\'');
- sb.append(",
description='").append(description).append('\'');
- sb.append(", requestProperties=").append(requestProperties);
-// sb.append(", replyProperties=").append(replyProperties);
- sb.append('}');
- return sb.toString();
- }
+ public String operation;
+ public List<NameValuePair> address;
- public static class As7RequestProperty {
- public String description;
- public boolean required;
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("As7RequestProperty");
-
sb.append("{description='").append(description).append('\'');
- sb.append(", required=").append(required);
- sb.append('}');
- return sb.toString();
- }
- }
+ public NameValuePair nvp;
- public static class As7ReplyProperty {
- @JsonProperty("value-type")
- public String valueType;
- public String description;
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("As7ReplyProperty");
-
sb.append("{valueType='").append(valueType).append('\'');
- sb.append(",
description='").append(description).append('\'');
- sb.append('}');
- return sb.toString();
- }
+ @JsonValue
+ public String toString() {
+ StringBuilder b = new StringBuilder();
+ b.append("{");
+ b.append("operation:").append(operation).append(",\n");
+ b.append("address:").append(address).append(",\n");
+ b.append(nvp);
+ b.append("}");
+ return b.toString();
}
}
+
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/OperationDescription.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/OperationDescription.java
new file mode 100644
index 0000000..18b3a40
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/OperationDescription.java
@@ -0,0 +1,80 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2010 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.modules.plugins.jbossas7.json;
+
+import java.util.Map;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * // TODO: Document this
+ * @author Heiko W. Rupp
+ */
+public class OperationDescription {
+ @JsonProperty("operation-name")
+ public String operationName;
+ public String description;
+ @JsonProperty("request-properties")
+ public Map<String,As7RequestProperty> requestProperties;
+// @JsonProperty("reply-properties")
+// public ArrayList<As7ReplyProperty> replyProperties;
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("OperationDescription");
+
sb.append("{operationName='").append(operationName).append('\'');
+ sb.append(",
description='").append(description).append('\'');
+ sb.append(", requestProperties=").append(requestProperties);
+// sb.append(", replyProperties=").append(replyProperties);
+ sb.append('}');
+ return sb.toString();
+ }
+
+ public static class As7RequestProperty {
+ public String description;
+ public boolean required;
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("As7RequestProperty");
+
sb.append("{description='").append(description).append('\'');
+ sb.append(", required=").append(required);
+ sb.append('}');
+ return sb.toString();
+ }
+ }
+
+ public static class As7ReplyProperty {
+ @JsonProperty("value-type")
+ public String valueType;
+ public String description;
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("As7ReplyProperty");
+
sb.append("{valueType='").append(valueType).append('\'');
+ sb.append(",
description='").append(description).append('\'');
+ sb.append('}');
+ return sb.toString();
+ }
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Subsystem.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Subsystem.java
index 89b41a0..7774cd3 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Subsystem.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Subsystem.java
@@ -37,7 +37,7 @@ public class Subsystem {
@JsonProperty("attributes") Map <String,Attribute> attributes;
@JsonProperty("model-description")
Subsystem modelDescription;
- @JsonProperty("operations") Map<String,Operation> operations = new
HashMap<String, Operation>();
+ @JsonProperty("operations") Map<String,OperationDescription>
operations = new HashMap<String, OperationDescription>();
public Map<String,Subsystem> children;
@@ -57,7 +57,7 @@ public class Subsystem {
sb.append(",
model-description=").append(modelDescription).append('\n');
sb.append("\n, operations=");
if (operations!=null) {
- for (Map.Entry<String,Operation> ops : operations.entrySet())
+ for (Map.Entry<String,OperationDescription> ops :
operations.entrySet())
sb.append(" ").append(ops).append('\n');
}
sb.append(", children=").append(children).append('\n');
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 81da4b6..9a04f04 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -169,6 +169,7 @@
<c:simple-property name="path" readOnly="true"
default="/subsystem/web/connector/*"/>
</plugin-configuration>
+
<metric property="bytesSent"
measurementType="trendsup"/>
<metric property="bytesReceived"
measurementType="trendsup"/>
<metric property="processingTime"
measurementType="trendsup"/>
@@ -176,6 +177,12 @@
<metric property="maxTime" />
<metric property="requestCount"
measurementType="trendsup"/>
+ <resource-configuration>
+ <c:simple-property name="protocol"
required="false" description="The web connector protocol."/>
+ <c:simple-property name="socket-binding"
required="false" description="The web connector socket-binding reference,
this connector should be bound to."/>
+ <c:simple-property name="scheme"
required="false" description="The web connector scheme"/>
+ </resource-configuration>
+
</service>
<service name="VHost"
@@ -185,6 +192,11 @@
<c:simple-property name="path" readOnly="true"
default="/subsystem/web/virtual-server/*"/>
</plugin-configuration>
+ <resource-configuration>
+ <c:simple-property name="access-log"/>
+ <c:list-property name="alias" description="The
virtual server aliases"/>
+ <c:simple-property name="rewrite"/>
+ </resource-configuration>
</service>
@@ -209,8 +221,8 @@
</plugin-configuration>
<resource-configuration>
- <c:simple-property name="default-interface"
readOnly="true" displayName="Default Interface"
description="Default Interface for these bindings. See NetworkInterfaces for its
definition"/>
- <c:simple-property name="port-offset"
readOnly="true" displayName="Port Offset" description="Offset
from standard ports for this group"/>
+ <c:simple-property name="default-interface"
readOnly="true" displayName="Default Interface"
description="Default Interface for these bindings. See NetworkInterfaces for its
definition" required="false"/>
+ <c:simple-property name="port-offset"
readOnly="true" displayName="Port Offset" description="Offset
from standard ports for this group" required="false"/>
</resource-configuration>
<service name="SocketBinding"
commit 3914a1c51bcb6f24e70ff2243664778b79b04873
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Mar 23 10:41:56 2011 +0100
Add support for reading of resource-config
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 6b64b7b..005421d 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -22,6 +22,7 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
@@ -32,6 +33,8 @@ import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.jetbrains.annotations.Nullable;
+import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
+
/**
* Provide connections to the AS and reading / writing date from/to it.
* @author Heiko W. Rupp
@@ -88,23 +91,7 @@ public class ASConnection {
URL url2;
String spec;
- if (base!=null && !base.isEmpty()) {
- if (!base.startsWith("/")) {
- spec = urlString + "/" + base;
- }
- else {
- spec = urlString + base;
- }
- if (ops!=null) {
- if (!ops.startsWith("?"))
- ops = "?" + ops;
- spec += ops;
- }
-
- url2 = new URL(spec);
- }
- else
- url2 = url;
+ url2 = getBaseUrl(base, ops);
JsonNode tree = null;
@@ -160,5 +147,47 @@ public class ASConnection {
return false;
}
+ public void execute(String path, String s, NameValuePair nvp) {
+
+ try {
+ URL url = getBaseUrl(path,"operation="+s);
+ URLConnection conn = url.openConnection();
+ OutputStream out = conn.getOutputStream();
+
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.writeValue(out,nvp);
+ out.flush();
+ out.close();
+ } catch (IOException e) {
+ e.printStackTrace(); // TODO: Customise this generated block
+ }
+
+ }
+
+
+
+
+ private URL getBaseUrl(String base, String ops) throws MalformedURLException {
+ String spec;
+ URL url2;
+ if (base!=null && !base.isEmpty()) {
+ if (!base.startsWith("/")) {
+ spec = urlString + "/" + base;
+ }
+ else {
+ spec = urlString + base;
+ }
+ if (ops!=null) {
+ if (!ops.startsWith("?"))
+ ops = "?" + ops;
+ spec += ops;
+ }
+
+ url2 = new URL(spec);
+ }
+ else
+ url2 = url;
+ return url2;
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 2f293d9..ca746e0 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -23,12 +23,18 @@ import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.domain.configuration.definition.PropertyDefinition;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementDataNumeric;
import org.rhq.core.domain.measurement.MeasurementDataTrait;
import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
+import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
+import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
@@ -36,10 +42,12 @@ import org.rhq.core.pluginapi.measurement.MeasurementFacet;
import org.rhq.core.pluginapi.operation.OperationContext;
import org.rhq.core.pluginapi.operation.OperationFacet;
import org.rhq.core.pluginapi.operation.OperationResult;
+import org.rhq.modules.plugins.jbossas7.json.NameValuePair;
+import java.util.Map;
import java.util.Set;
-public class BaseComponent implements ResourceComponent, MeasurementFacet
+public class BaseComponent implements ResourceComponent, MeasurementFacet,
ConfigurationFacet
{
private final Log log = LogFactory.getLog(this.getClass());
@@ -134,7 +142,33 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet
protected String getPath() { return path; }
+ public Configuration loadResourceConfiguration() throws Exception {
+ ConfigurationDefinition configDef =
context.getResourceType().getResourceConfigurationDefinition();
+ JsonNode json = connection.getLevelData(path,false,false);
+ Configuration ret = new Configuration();
+
+ for (PropertyDefinition propDef: configDef.getNonGroupedProperties()) {
+ JsonNode sub = json.findValue(propDef.getName());
+ PropertySimple propertySimple = new
PropertySimple(propDef.getName(),sub.getValueAsText());
+ ret.put(propertySimple);
+ }
+
+
+ return ret;
+ }
+
+ public void updateResourceConfiguration(ConfigurationUpdateReport report) {
+ Configuration conf = report.getConfiguration();
+ for (Map.Entry<String, PropertySimple> entry :
conf.getSimpleProperties().entrySet()) {
+
+ NameValuePair nvp = new
NameValuePair(entry.getKey(),entry.getValue().getStringValue());
+ connection.execute(path,"write-attribute",nvp);
+ }
+
+
+ // TODO: Customise this generated block
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
new file mode 100644
index 0000000..9c8ca19
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NameValuePair.java
@@ -0,0 +1,34 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+/**
+ *
+ * @author Heiko W. Rupp
+ */
+public class NameValuePair {
+
+ public String name;
+ public String value;
+
+ public NameValuePair(String name, String value) {
+ this.name = name;
+ this.value = value;
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 98a97d8..81da4b6 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -93,7 +93,7 @@
</server>
- <server name="JBossAS7 (Standalone)"
+ <server name="JBossAS7-Standalone"
discovery="BaseDiscovery"
class="BaseComponent"
@@ -127,29 +127,29 @@
/>
-->
- <server name="Messaging"
+ <server name="Messaging"
discovery="SubsystemDiscovery"
class="BaseComponent">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="/subsystem/messaging"/>
</plugin-configuration>
- <resource-configuration>
- <c:simple-property name="journal-min-files" />
- <c:simple-property name="journal-type" />
- </resource-configuration>
+ <resource-configuration>
+ <c:simple-property name="journal-min-files" />
+ <c:simple-property name="journal-type" />
+ </resource-configuration>
- <service name="Acceptor"
- discovery="SubsystemDiscovery"
- class="BaseComponent"
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/subsystem/messaging/acceptor"/>
- </plugin-configuration>
+ <service name="Acceptor"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+
+
<plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/subsystem/messaging/acceptor"/>
+ </plugin-configuration>
- </service>
+ </service>
</server>
@@ -164,7 +164,7 @@
<service name="Connector"
discovery="SubsystemDiscovery"
class="BaseComponent"
-
+
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="/subsystem/web/connector/*"/>
</plugin-configuration>
@@ -176,11 +176,11 @@
<metric property="maxTime" />
<metric property="requestCount"
measurementType="trendsup"/>
- </service>
+ </service>
<service name="VHost"
- discovery="SubsystemDiscovery"
- class="BaseComponent">
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="/subsystem/web/virtual-server/*"/>
</plugin-configuration>
@@ -196,32 +196,37 @@
class="BaseComponent"
description="A named network interface, along with required
criteria for determining the IP address to associate with that interface">
<plugin-configuration>
- <c:simple-property name="path" readOnly="true"
default="/"/>
+ <c:simple-property name="path" readOnly="true"
default="/"/>
</plugin-configuration>
</service>
<service name="SocketBindingGroup"
discovery="SocketBindingGroupDiscovery"
class="BaseComponent"
-
+
<plugin-configuration>
<c:simple-property name="path" readOnly="true"
default="/socket-binding-group/"/>
</plugin-configuration>
+ <resource-configuration>
+ <c:simple-property name="default-interface"
readOnly="true" displayName="Default Interface"
description="Default Interface for these bindings. See NetworkInterfaces for its
definition"/>
+ <c:simple-property name="port-offset"
readOnly="true" displayName="Port Offset" description="Offset
from standard ports for this group"/>
+ </resource-configuration>
+
<service name="SocketBinding"
discovery="SocketBindingDiscovery"
class="BaseComponent">
<plugin-configuration>
- <c:simple-property name="path"
readOnly="true"/>
+ <c:simple-property name="path"
readOnly="true"/>
</plugin-configuration>
- </service>
- </service>
+ </service>
+ </service>
</server>
- <server name="JBossAS (Managed)"
+ <server name="JBossAS-Managed"
discovery="BaseDiscovery"
class="BaseComponent"
@@ -238,9 +243,9 @@
<metric property="serverGroup" dataType="trait"
displayType="summary" />
<resource-configuration>
<!--<c:group name="interfaces">-->
- <c:simple-property name="loopback"
default="127.0.0.1" />
- <c:simple-property name="external" default="any"
/>
- <c:simple-property name="public" default="any"
/>
+ <c:simple-property name="loopback" default="127.0.0.1"
/>
+ <c:simple-property name="external" default="any"
/>
+ <c:simple-property name="public" default="any" />
<!--</c:group>-->
</resource-configuration>
@@ -251,7 +256,7 @@
discovery="org.rhq.plugins.jmx.LocalJMXServerDiscoveryComponent"
class="org.rhq.plugins.jmx.JMXServerComponent"
singleton="true"
- />
+ />
</server>
commit 0f0f7680d7ddb486e63a28ec35874d93f2d1c883
Merge: 69260ab 2f4429f
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Mar 22 21:30:15 2011 +0100
Merge branch 'master' into as7plugin
commit 69260ab75e307e19def5831efa6520d1306abdc6
Merge: 92fd80e 6996576
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Mar 22 21:14:53 2011 +0100
Merge branch 'master' into as7plugin
commit 92fd80e33e8367ef8cf228e35c2209037c15dad3
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Mar 22 21:13:58 2011 +0100
Update the plugin to use the JSON interface.
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index cf4c3ae..ef75ab7 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -22,6 +22,7 @@
<properties>
<scm.module.path>TODO</scm.module.path>
<json.version>${project.json.version}</json.version>
+ <jackson.version>1.7.4</jackson.version>
</properties>
<build>
@@ -45,11 +46,15 @@
<configuration>
<artifactItems>
<artifactItem>
- <groupId>org.json</groupId>
- <artifactId>json</artifactId>
- <version>${json.version}</version>
+ <groupId>org.codehaus.jackson</groupId>
+
<artifactId>jackson-mapper-asl</artifactId>
+ <version>${jackson.version}</version>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.codehaus.jackson</groupId>
+
<artifactId>jackson-core-asl</artifactId>
+ <version>${jackson.version}</version>
</artifactItem>
-
</artifactItems>
<outputDirectory>${project.build.outputDirectory}/lib</outputDirectory>
@@ -177,12 +182,11 @@
<dependencies>
<dependency>
- <groupId>org.json</groupId>
- <artifactId>json</artifactId>
- <version>${json.version}</version>
+ <groupId>org.codehaus.jackson</groupId>
+ <artifactId>jackson-mapper-asl</artifactId>
+ <version>${jackson.version}</version>
</dependency>
-
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index a28dc2e..6b64b7b 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -19,6 +19,8 @@
package org.rhq.modules.plugins.jbossas7;
import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
@@ -26,8 +28,9 @@ import java.net.URLConnection;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.json.JSONException;
-import org.json.JSONObject;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.jetbrains.annotations.Nullable;
/**
* Provide connections to the AS and reading / writing date from/to it.
@@ -53,66 +56,103 @@ public class ASConnection {
}
}
+
+ JsonNode getLevelData(@Nullable String base, boolean recursive, boolean
includeMetrics) throws Exception{
+ String ops = null;
+ if (recursive)
+ ops = "recursive";
+ if (includeMetrics)
+ ops += "&include-runtime=true";
+
+ return getLevelData(base,ops);
+}
+ /**
+ * Return the default data for base
+ * @param base
+ * @return
+ * @throws Exception
+ */
+ JsonNode getLevelData(@Nullable String base) throws Exception {
+ return
getLevelData(base,"operation=resource-description&recursive&include-runtime=true");
+ }
+
/**
* Return the JSON-Ojbect for a certain path.
*
- *
* @param base Path to the object/subsystem. Can be null/"" for the base
objects
- * @param recursive Shall lover levels be recursively obtained. May generate a lot of
data.
- * @param includeMetrics Should metrice be requested as well?
+ * @param ops Operation to run on the api can be null
* @return A JSONObject encoding the level plus sub levels provided
* @throws Exception If anything goes wrong
*/
- JSONObject getLevelData(String base, boolean recursive, boolean includeMetrics)
throws Exception {
+ JsonNode getLevelData(@Nullable String base, @Nullable String ops) throws Exception
{
URL url2;
+ String spec;
if (base!=null && !base.isEmpty()) {
- String spec;
if (!base.startsWith("/")) {
spec = urlString + "/" + base;
}
else {
spec = urlString + base;
}
- if (recursive)
- spec += "?recursive";
- if (includeMetrics)
- spec += "?include-runtime=true"; // TODO this will change
?query-metrics=true for metrics only
+ if (ops!=null) {
+ if (!ops.startsWith("?"))
+ ops = "?" + ops;
+ spec += ops;
+ }
url2 = new URL(spec);
}
else
url2 = url;
+ JsonNode tree = null;
+
URLConnection conn = url2.openConnection();
+ InputStream inputStream = null;
+ try {
+ inputStream = conn.getInputStream();
+ } catch (IOException e) {
+ System.err.println(e.getMessage());
+ return tree;
+ }
BufferedReader in = new BufferedReader(new InputStreamReader(
- conn.getInputStream()));
+ inputStream));
+ try {
+ String line;
+ StringBuilder builder = new StringBuilder();
+ while ((line = in.readLine()) != null) {
+ builder.append(line);
+ }
- String line;
- StringBuilder builder = new StringBuilder();
- while ((line = in.readLine()) != null) {
- builder.append(line);
- }
+ ObjectMapper mapper = new ObjectMapper();
- JSONObject object = new JSONObject(builder.toString());
+ tree = mapper.readTree(builder.toString());
+
+ } catch (IOException ioe) {
+ System.err.println("for in put " + url2 + " : " +
ioe.getMessage());
+ } finally {
+ in.close();
+ }
- in.close();
- return object;
+ return tree;
}
- boolean isErrorReply(JSONObject in) {
+ boolean isErrorReply(JsonNode in) {
if (in.has("outcome")) {
String outcome = null;
try {
- outcome = in.getString("outcome");
+ JsonNode outcomeNode = in.findValue("outcome");
+ outcome = outcomeNode.getTextValue();
if (outcome.equals("failed")) {
- String reason = in.getString("failure-description");
+ JsonNode reasonNode = in.findValue("failure-description");
+ String reason = reasonNode.getTextValue();
log.info(reason);
return true;
}
- } catch (JSONException e) {
+ } catch (Exception e) {
e.printStackTrace(); // TODO
return true;
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index 04264b4..2f293d9 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -1,8 +1,26 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.json.JSONObject;
+import org.codehaus.jackson.JsonNode;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.measurement.AvailabilityType;
@@ -11,8 +29,6 @@ import org.rhq.core.domain.measurement.MeasurementDataNumeric;
import org.rhq.core.domain.measurement.MeasurementDataTrait;
import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
-import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
-import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
@@ -30,7 +46,6 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet
ResourceContext context;
Configuration conf;
String myServerName;
- private static final String[] INTERFACE_NAMES = new
String[]{"loopback","external","public"};
ASConnection connection;
String path;
String key;
@@ -91,10 +106,11 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet
*/
public void getValues(MeasurementReport report,
Set<MeasurementScheduleRequest> metrics) throws Exception {
- JSONObject obj = connection.getLevelData(key,false,true);
+ JsonNode obj = connection.getLevelData(key,false,true);
for (MeasurementScheduleRequest req : metrics) {
if (obj.has(req.getName())) {
+/*
String val = obj.getString(req.getName());
if (req.getDataType()== DataType.MEASUREMENT) {
@@ -105,6 +121,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet
MeasurementDataTrait data = new MeasurementDataTrait(req,val);
report.addData(data);
}
+*/
}
}
}
@@ -115,7 +132,7 @@ public class BaseComponent implements ResourceComponent,
MeasurementFacet
}
-
+ protected String getPath() { return path; }
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceDiscovery.java
index 745dc2e..d756543 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceDiscovery.java
@@ -45,7 +45,7 @@ public class DatasourceDiscovery implements
ResourceDiscoveryComponent<Subsystem
for (DataSource source : sources.getDataSource()) {
DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- discoveryContext.getResourceType(), // Type
+ discoveryContext.getResourceType(), // DataType
source.getJndiName(), // Key
source.getJndiName(), // Name TODO improve
null, // version
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/InterfaceDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/InterfaceDiscovery.java
new file mode 100644
index 0000000..021b10c
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/InterfaceDiscovery.java
@@ -0,0 +1,107 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.modules.plugins.jbossas7.json.Attribute;
+import org.rhq.modules.plugins.jbossas7.json.Domain;
+import org.rhq.modules.plugins.jbossas7.json.NetworkInterface;
+
+/**
+ * Discover subsystems
+ *
+ * @author Heiko W. Rupp
+ */
+@SuppressWarnings("unused")
+public class InterfaceDiscovery implements
ResourceDiscoveryComponent<BaseComponent> {
+
+ private final Log log = LogFactory.getLog(this.getClass());
+
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent> context)
+ throws Exception {
+
+ Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>(1);
+
+ ObjectMapper mapper = new ObjectMapper();
+
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
+ mapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING,true);
+
+ BaseComponent parentComponent = context.getParentResourceComponent();
+ ASConnection connection = parentComponent.getASConnection();
+
+
+
+ JsonNode json = connection.getLevelData(null, null);
+ if (!connection.isErrorReply(json)) {
+ Domain domain = mapper.readValue(json, new TypeReference<Domain>()
{});
+
+ for (Map.Entry<String,String> entry: domain.interfaces.entrySet()) {
+
+ String key = entry.getKey();
+ String path = "/interface/" + key;
+ JsonNode subJson = connection.getLevelData(path);
+
+ NetworkInterface networkInterface = mapper.readValue(subJson, new
TypeReference<NetworkInterface>() {});
+ networkInterface.name= key;
+ for (Map.Entry<String,Attribute> nentry :
networkInterface.attributes.entrySet()) {
+ nentry.getValue().name = nentry.getKey();
+
+ String resKey = context.getParentResourceContext().getResourceKey() +
"/" + key;
+ String name = resKey.substring(resKey.lastIndexOf("/") +
1);
+
+ Configuration config = context.getDefaultPluginConfiguration();
+
+ PropertySimple propertySimple = new
PropertySimple("path",path);
+ config.put(propertySimple);
+
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ context.getResourceType(), // DataType
+ path, // Key
+ name, // Name
+ null, // Version
+ networkInterface.description, // Description
+ config,
+ null);
+ details.add(detail);
+ }
+ }
+
+ return details;
+ }
+
+ return Collections.emptySet();
+ }
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingDiscovery.java
new file mode 100644
index 0000000..c9b7a5e
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingDiscovery.java
@@ -0,0 +1,108 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.modules.plugins.jbossas7.json.Domain;
+import org.rhq.modules.plugins.jbossas7.json.SocketBindingGroup;
+
+/**
+ * Discover single bindings in a socket binding group
+ *
+ * TODO: Is this better a resource-configuration on the parent?
+ *
+ * @author Heiko W. Rupp
+ */
+@SuppressWarnings("unused")
+public class SocketBindingDiscovery implements
ResourceDiscoveryComponent<BaseComponent> {
+
+ private final Log log = LogFactory.getLog(this.getClass());
+
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent> context)
+ throws Exception {
+
+ Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>(1);
+
+ ObjectMapper mapper = new ObjectMapper();
+
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
+ mapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING,true);
+
+ BaseComponent parentComponent = context.getParentResourceComponent();
+ ASConnection connection = parentComponent.getASConnection();
+
+ String path = parentComponent.getPath();
+
+
+ JsonNode json = connection.getLevelData(path,true,false);
+ if (!connection.isErrorReply(json)) {
+
+ SocketBindingGroup bindingGroup = mapper.readValue(json, new
TypeReference<SocketBindingGroup>() {});
+ // TODO put bindingGroup. {name, default-interface, port-offset into parent
+
+
+ for (Map.Entry<String,SocketBindingGroup.Binding> entry:
bindingGroup.bindings.entrySet()) {
+
+ String key = entry.getKey();
+ String cpath = path + "/socket-binding/" + key;
+
+
+ String resKey = context.getParentResourceContext().getResourceKey() +
"/" + key;
+ String name = resKey.substring(resKey.lastIndexOf("/") + 1);
+
+ Configuration config = context.getDefaultPluginConfiguration();
+
+ PropertySimple propertySimple = new
PropertySimple("path",cpath);
+ config.put(propertySimple);
+
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ context.getResourceType(), // DataType
+ path, // Key
+ name, // Name
+ null, // Version
+ "Binding Group", // Description
+ config,
+ null);
+ details.add(detail);
+ log.info("Added " + detail);
+ }
+
+ return details;
+
+ }
+
+ return Collections.emptySet();
+ }
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingGroupDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingGroupDiscovery.java
new file mode 100644
index 0000000..4411f8c
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SocketBindingGroupDiscovery.java
@@ -0,0 +1,104 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.modules.plugins.jbossas7.json.Attribute;
+import org.rhq.modules.plugins.jbossas7.json.Domain;
+import org.rhq.modules.plugins.jbossas7.json.SocketBindingGroup;
+
+/**
+ * Discover subsystems
+ *
+ * @author Heiko W. Rupp
+ */
+@SuppressWarnings("unused")
+public class SocketBindingGroupDiscovery implements
ResourceDiscoveryComponent<BaseComponent> {
+
+ private final Log log = LogFactory.getLog(this.getClass());
+
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent> context)
+ throws Exception {
+
+ Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>(1);
+
+ ObjectMapper mapper = new ObjectMapper();
+
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
+ mapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING,true);
+
+ BaseComponent parentComponent = context.getParentResourceComponent();
+ ASConnection connection = parentComponent.getASConnection();
+
+
+
+ JsonNode json = connection.getLevelData(null, null);
+ if (!connection.isErrorReply(json)) {
+ Domain domain = mapper.readValue(json, new TypeReference<Domain>()
{});
+
+ for (Map.Entry<String,String> entry:
domain.socketBindingGroup.entrySet()) {
+
+ String key = entry.getKey();
+ String path = "/socket-binding-group/" + key;
+ JsonNode subJson = connection.getLevelData(path);
+
+ SocketBindingGroup bindingGroup = mapper.readValue(subJson, new
TypeReference<SocketBindingGroup>() {});
+ bindingGroup.name= key;
+
+ String resKey = context.getParentResourceContext().getResourceKey() +
"/" + key;
+ String name = resKey.substring(resKey.lastIndexOf("/") + 1);
+
+ Configuration config = context.getDefaultPluginConfiguration();
+
+ PropertySimple propertySimple = new
PropertySimple("path",path);
+ config.put(propertySimple);
+
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ context.getResourceType(), // DataType
+ path, // Key
+ name, // Name
+ null, // Version
+ "SocketBinding Group", // Description
+ config,
+ null);
+ details.add(detail);
+ }
+
+ return details;
+ }
+
+ return Collections.emptySet();
+ }
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index 7833f67..75683cb 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -20,29 +20,40 @@ package org.rhq.modules.plugins.jbossas7;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
-import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.modules.plugins.jbossas7.json.Subsystem;
import java.util.Collections;
import java.util.HashSet;
-import java.util.Iterator;
+import java.util.Map;
import java.util.Set;
-import org.json.JSONObject;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
/**
* Discover subsystems
*
* @author Heiko W. Rupp
*/
+@SuppressWarnings("unused")
public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseComponent> {
+ private final Log log = LogFactory.getLog(this.getClass());
+
public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent> context)
- throws InvalidPluginConfigurationException, Exception {
+ throws Exception {
Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>(1);
+ ObjectMapper mapper = new ObjectMapper();
+
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
+ mapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING,true);
BaseComponent parentComponent = context.getParentResourceComponent();
ASConnection connection = parentComponent.getASConnection();
@@ -61,29 +72,31 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
path = cpath;
- JSONObject o = connection.getLevelData(path,recursive, false);
- if (!connection.isErrorReply(o)) {
+ JsonNode json = connection.getLevelData(path,recursive, false);
+ if (!connection.isErrorReply(json)) {
if (recursive) {
int i = path.lastIndexOf("/");
String subPath = path.substring(i+1);
- o = o.getJSONObject(subPath);
+ JsonNode subNode = json.findPath(subPath);
+
+ Map<String,Subsystem> subsystemMap = mapper.readValue(subNode,new
TypeReference<Map<String,Subsystem>>() {});
- Iterator keyIter = o.keys() ;
- while (keyIter.hasNext()) {
+ for (Map.Entry<String,Subsystem> entry: subsystemMap.entrySet()) {
- String key = (String) keyIter.next();
+ String key = entry.getKey();
+ Subsystem subsystem = entry.getValue();
String resKey = context.getParentResourceContext().getResourceKey() +
"/" + key;
String name = resKey.substring(resKey.lastIndexOf("/") +
1);
DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- context.getResourceType(), // Type
+ context.getResourceType(), // DataType
path + "/" + key, // Key
name, // Name
null, // Version
- path, // Description
+ subsystem.description, // Description
config,
null);
details.add(detail);
@@ -98,7 +111,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
- context.getResourceType(), // Type
+ context.getResourceType(), // DataType
path, // Key
name, // Name
null, // Version
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Attribute.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Attribute.java
new file mode 100644
index 0000000..02dbb5d
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Attribute.java
@@ -0,0 +1,86 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * @author Heiko W. Rupp
+ */
+public class Attribute {
+
+ public String name;
+ public String description;
+ public boolean required;
+ public boolean nillable;
+ @JsonProperty("access-type")
+ public AccessType accessType;
+ public Storage storage;
+ public Type type;
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("Attribute");
+ sb.append("{name='").append(name).append('\'');
+ sb.append(",
description='").append(description).append('\'');
+ sb.append(", required=").append(required);
+ sb.append(", nillable=").append(nillable);
+ sb.append(",
accessType='").append(accessType).append('\'');
+ sb.append(", storage='").append(storage).append('\'');
+ sb.append(", type=").append(type);
+ sb.append('}');
+ return sb.toString();
+ }
+
+
+ public enum AccessType {
+ METRIC("metric"),
+ READ_ONLY("read-only")
+ ;
+
+ String jsonName;
+
+ AccessType(String jsonName) {
+ this.jsonName = jsonName;
+ }
+
+ @Override
+ public String toString() {
+ return jsonName;
+ }
+ }
+
+ public enum Storage {
+ CONFIGURATION("configuration"),
+ RUNTIME("runtime")
+ ;
+
+ String jsonName;
+
+ Storage(String jsonName) {
+ this.jsonName =jsonName;
+ }
+
+ @Override
+ public String toString() {
+ return jsonName;
+ }
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Domain.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Domain.java
new file mode 100644
index 0000000..8600c15
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Domain.java
@@ -0,0 +1,53 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import java.util.Map;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * @author Heiko W. Rupp
+ */
+public class Domain {
+
+
+ public String name;
+ @JsonProperty("management-interfaces") Map<String,String>
managementInterfaces;
+ @JsonProperty("profile-name") String profileName;
+ public Map<String,String> path;
+ public Map<String,String> subsystem;
+ @JsonProperty("interface")
+ public Map<String,String> interfaces;
+ @JsonProperty("socket-binding-group")
+ public Map<String,String> socketBindingGroup;
+
+ @Override
+ public String toString() {
+ return "Domain{" +
+ "name='" + name + '\'' +
+ ", managementInterfaces=" + managementInterfaces +
+ ", profileName='" + profileName + '\'' +
+ ", path=" + path +
+ ", subsystem=" + subsystem +
+ ", interfaces=" + interfaces +
+ ", socketBindingGroup=" + socketBindingGroup +
+ '}';
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NetworkInterface.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NetworkInterface.java
new file mode 100644
index 0000000..0af6ed1
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/NetworkInterface.java
@@ -0,0 +1,45 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import java.util.Map;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * @author Heiko W. Rupp
+ */
+public class NetworkInterface {
+
+ public String name;
+ public String description;
+ @JsonProperty("attributes")
+ public
+ Map<String,Attribute> attributes;
+
+
+ @Override
+ public String toString() {
+ return "NetworkInterface{" +
+ "name='" + name + '\'' +
+ ", description='" + description + '\'' +
+ ", attributes=" + attributes +
+ '}';
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
new file mode 100644
index 0000000..f00c421
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
@@ -0,0 +1,80 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2010 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.modules.plugins.jbossas7.json;
+
+import java.util.Map;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * // TODO: Document this
+ * @author Heiko W. Rupp
+ */
+public class Operation {
+ @JsonProperty("operation-name")
+ public String operationName;
+ public String description;
+ @JsonProperty("request-properties")
+ public Map<String,As7RequestProperty> requestProperties;
+// @JsonProperty("reply-properties")
+// public ArrayList<As7ReplyProperty> replyProperties;
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("Operation");
+
sb.append("{operationName='").append(operationName).append('\'');
+ sb.append(",
description='").append(description).append('\'');
+ sb.append(", requestProperties=").append(requestProperties);
+// sb.append(", replyProperties=").append(replyProperties);
+ sb.append('}');
+ return sb.toString();
+ }
+
+ public static class As7RequestProperty {
+ public String description;
+ public boolean required;
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("As7RequestProperty");
+
sb.append("{description='").append(description).append('\'');
+ sb.append(", required=").append(required);
+ sb.append('}');
+ return sb.toString();
+ }
+ }
+
+ public static class As7ReplyProperty {
+ @JsonProperty("value-type")
+ public String valueType;
+ public String description;
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("As7ReplyProperty");
+
sb.append("{valueType='").append(valueType).append('\'');
+ sb.append(",
description='").append(description).append('\'');
+ sb.append('}');
+ return sb.toString();
+ }
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/SocketBindingGroup.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/SocketBindingGroup.java
new file mode 100644
index 0000000..5d2b6ee
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/SocketBindingGroup.java
@@ -0,0 +1,47 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import java.util.Map;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * One Socket binding group of a domain
+ * @author Heiko W. Rupp
+ */
+public class SocketBindingGroup {
+
+
+ public String name;
+ @JsonProperty("default-interface") public String defaultInterface;
+ @JsonProperty("port-offset") public int portOffset;
+ @JsonProperty("socket-binding") public Map<String,Binding> bindings;
+
+
+ public static class Binding {
+ public String name;
+ @JsonProperty("interface") public String iFace;
+ public int port;
+ @JsonProperty("fixed-port") public Integer fixedPort;
+ @JsonProperty("multicast-address") public String mcastAddress;
+ @JsonProperty("multicast-port") public Integer mcastPort;
+
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Subsystem.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Subsystem.java
new file mode 100644
index 0000000..89b41a0
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Subsystem.java
@@ -0,0 +1,67 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * @author Heiko W. Rupp
+ */
+public class Subsystem {
+
+ String subsystemName;
+
+ @JsonProperty("head-comment-allowed") boolean headCommentAllowed;
+ @JsonProperty("tail-comment-allowed") boolean tailCommentAllowed;
+// public DataType type;
+ public String description;
+ @JsonProperty("attributes") Map <String,Attribute> attributes;
+ @JsonProperty("model-description")
+ Subsystem modelDescription;
+ @JsonProperty("operations") Map<String,Operation> operations = new
HashMap<String, Operation>();
+ public Map<String,Subsystem> children;
+
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("Subsystem");
+ sb.append("{headCommentAllowed=").append(headCommentAllowed);
+ sb.append(", tailCommentAllowed=").append(tailCommentAllowed);
+// sb.append(", type=").append(type).append('\n');
+ sb.append(",
description='").append(description).append('\'').append('\n');
+ sb.append(", attributes=\n");
+ if (attributes!=null) {
+ for (Map.Entry<String,Attribute> attr : attributes.entrySet())
+ sb.append(" ").append(attr).append('\n');
+ }
+ sb.append(",
model-description=").append(modelDescription).append('\n');
+ sb.append("\n, operations=");
+ if (operations!=null) {
+ for (Map.Entry<String,Operation> ops : operations.entrySet())
+ sb.append(" ").append(ops).append('\n');
+ }
+ sb.append(", children=").append(children).append('\n');
+ sb.append("\n}");
+ return sb.toString();
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Tuple.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Tuple.java
new file mode 100644
index 0000000..01e31d3
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Tuple.java
@@ -0,0 +1,35 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+/**
+ * @author Heiko W. Rupp
+ */
+public class Tuple {
+ String key;
+ String value;
+
+ @Override
+ public String toString() {
+ return "Tuple{" +
+ "key='" + key + '\'' +
+ ", value='" + value + '\'' +
+ '}';
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Type.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Type.java
new file mode 100644
index 0000000..0ad1fe8
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Type.java
@@ -0,0 +1,50 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+/**
+ * // TODO: Document this
+ * @author Heiko W. Rupp
+ */
+public class Type {
+
+ @JsonProperty("TYPE_MODEL_VALUE")
+ public DataType modelValue;
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("Type");
+
sb.append("{modelValue='").append(modelValue).append('\'');
+ sb.append('}');
+ return sb.toString();
+ }
+
+ public enum DataType {
+ STRING,
+ INT,
+ BOOLEAN,
+ OBJECT,
+ LIST
+
+ ;
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/TypeModelValue.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/TypeModelValue.java
new file mode 100644
index 0000000..6856adb
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/TypeModelValue.java
@@ -0,0 +1,39 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7.json;
+
+/**
+ * // TODO: Document this
+ * @author Heiko W. Rupp
+ */
+public class TypeModelValue {
+
+ public String TYPE_MODEL_VALUE;
+ public String value;
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("TypeModelValue");
+
sb.append("{TYPE_MODEL_VALUE='").append(TYPE_MODEL_VALUE).append('\'');
+ sb.append(", value='").append(value).append('\'');
+ sb.append('}');
+ return sb.toString();
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index e29d0d2..98a97d8 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -93,7 +93,7 @@
</server>
- <server name="JBossAS (Standalone)"
+ <server name="JBossAS7 (Standalone)"
discovery="BaseDiscovery"
class="BaseComponent"
@@ -178,8 +178,47 @@
</service>
+ <service name="VHost"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/subsystem/web/virtual-server/*"/>
+ </plugin-configuration>
+
+
+ </service>
+
</server>
+
+ <service name="NetworkInterface"
+ discovery="InterfaceDiscovery"
+ class="BaseComponent"
+ description="A named network interface, along with required
criteria for determining the IP address to associate with that interface">
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/"/>
+ </plugin-configuration>
+ </service>
+
+ <service name="SocketBindingGroup"
+ discovery="SocketBindingGroupDiscovery"
+ class="BaseComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/socket-binding-group/"/>
+ </plugin-configuration>
+
+ <service name="SocketBinding"
+ discovery="SocketBindingDiscovery"
+ class="BaseComponent">
+ <plugin-configuration>
+ <c:simple-property name="path"
readOnly="true"/>
+ </plugin-configuration>
+
+ </service>
+ </service>
+
+
</server>
<server name="JBossAS (Managed)"
commit 6a46a9c96002addd485058a7269247a9bf67739c
Merge: 33e4ce8 829d5ff
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Mar 14 14:44:50 2011 +0100
Merge branch 'master' into as7plugin
commit 33e4ce87753d91c82dd1dd3c9c539acb311cda85
Merge: c3cd8f3 332d99a
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Mar 3 17:50:29 2011 +0100
Merge branch 'master' into as7plugin
commit c3cd8f3f135563765a73a3c76f7db9bdf2b3d617
Merge: 7d233c8 3fc1998
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Mar 3 14:13:32 2011 +0100
Merge branch 'master' into as7plugin
commit 7d233c8a1a76d3c2dfd9742b9f5ab1b222e01792
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Feb 21 22:15:18 2011 +0100
Put json parser version into a property and use this in the sub-projects.
diff --git a/modules/plugins/hudson/pom.xml b/modules/plugins/hudson/pom.xml
index 71c974a..a8f6739 100644
--- a/modules/plugins/hudson/pom.xml
+++ b/modules/plugins/hudson/pom.xml
@@ -22,7 +22,7 @@
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
- <version>20080701</version>
+ <version>${project.json.version}</version>
<scope>provided</scope>
</dependency>
@@ -63,7 +63,7 @@
<artifactItem>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
- <version>20080701</version>
+ <version>${project.json.version}</version>
</artifactItem>
</artifactItems>
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index 0e6df0b..cf4c3ae 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -21,7 +21,7 @@
<properties>
<scm.module.path>TODO</scm.module.path>
- <json.version>20080701</json.version>
+ <json.version>${project.json.version}</json.version>
</properties>
<build>
diff --git a/pom.xml b/pom.xml
index 7c07d11..4ace1d2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -150,6 +150,7 @@
<!-- NOTE: The below line is a workaround for a Maven bug, where it does not
expand settings.* properties
used in the distributionManagement section of the POM. -->
<localRepository>${user.home}/.m2/repository</localRepository>
+ <project.json.version>20080701</project.json.version>
</properties>
commit c8ffdf7cf0202a3b59675f7a8a201c3a2fc87f4f
Merge: 5221182 6a43faf
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Feb 21 22:01:40 2011 +0100
Merge branch 'master' into as7plugin
commit 52211828eed5ebd533de2759de221f48a60c3eda
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Feb 15 21:13:59 2011 +0100
First cut of a JBossAS7 plugin using the brand new http-based API.
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
new file mode 100644
index 0000000..0e6df0b
--- /dev/null
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -0,0 +1,221 @@
+<project
+
xmlns="http://maven.apache.org/POM/4.0.0"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd"
+
+ >
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.rhq</groupId>
+ <artifactId>rhq-plugins-parent</artifactId>
+ <version>4.0.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.rhq</groupId>
+ <artifactId>rhq-jboss-as-7-plugin</artifactId>
+ <packaging>jar</packaging>
+
+ <name>RHQ JBoss-AS-7 Plugin</name>
+
+ <properties>
+ <scm.module.path>TODO</scm.module.path>
+ <json.version>20080701</json.version>
+ </properties>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-dependency-jars</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.json</groupId>
+ <artifactId>json</artifactId>
+ <version>${json.version}</version>
+ </artifactItem>
+
+
+ </artifactItems>
+
<outputDirectory>${project.build.outputDirectory}/lib</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>dev</id>
+
+ <properties>
+ <rhq.rootDir>../../..</rhq.rootDir>
+
<rhq.containerDir>${rhq.rootDir}/${rhq.defaultDevContainerPath}</rhq.containerDir>
+ <rhq.deploymentDir>
+
${rhq.containerDir}/jbossas/server/default/deploy/${rhq.earName}/rhq-downloads/rhq-plugins
+ </rhq.deploymentDir>
+ </properties>
+
+ <build>
+ <plugins>
+
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.1</version>
+ <executions>
+
+ <execution>
+ <id>deploy</id>
+ <phase>compile</phase>
+ <configuration>
+ <tasks>
+ <mkdir
dir="${rhq.deploymentDir}"/>
+ <property name="deployment.file"
+
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
+ <echo>*** Updating
${deployment.file}...</echo>
+ <jar destfile="${deployment.file}"
basedir="${project.build.outputDirectory}"/>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+
+ <execution>
+ <id>deploy-jar-meta-inf</id>
+ <phase>package</phase>
+ <configuration>
+ <tasks>
+ <property name="deployment.file"
+
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
+ <echo>*** Updating META-INF dir in
${deployment.file}...</echo>
+ <unjar
src="${project.build.directory}/${project.build.finalName}.jar"
+
dest="${project.build.outputDirectory}">
+ <patternset>
+ <include
name="META-INF/**"/>
+ </patternset>
+ </unjar>
+ <jar destfile="${deployment.file}"
+
manifest="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
+ update="true">
+ </jar>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+
+ <execution>
+ <id>undeploy</id>
+ <phase>clean</phase>
+ <configuration>
+ <tasks>
+ <property name="deployment.file"
+
location="${rhq.deploymentDir}/${project.build.finalName}.jar"/>
+ <echo>*** Deleting
${deployment.file}...</echo>
+ <delete
file="${deployment.file}"/>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+
+ </profile>
+ </profiles>
+
+
+ <repositories>
+ <repository>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ <id>jboss</id>
+ <name>JBoss Repository</name>
+ <
url>http://repository.jboss.org/maven2/</url>
+ </repository>
+ <!-- TODO add your own maven repositories here (if needed) -->
+ </repositories>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ <id>jboss</id>
+ <name>JBoss Plugin Repository</name>
+ <
url>http://repository.jboss.org/maven2/</url>
+ </pluginRepository>
+ </pluginRepositories>
+
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.json</groupId>
+ <artifactId>json</artifactId>
+ <version>${json.version}</version>
+ </dependency>
+
+
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>${commons-logging.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${rhq.groupId}</groupId>
+ <artifactId>rhq-core-domain</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>${rhq.groupId}</groupId>
+ <artifactId>rhq-core-plugin-api</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>${rhq.groupId}</groupId>
+ <artifactId>rhq-core-native-system</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.rhq</groupId>
+ <artifactId>rhq-jmx-plugin</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+
+ <!-- TODO add your dependencies here -->
+
+ </dependencies>
+</project>
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
new file mode 100644
index 0000000..a28dc2e
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -0,0 +1,124 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * Provide connections to the AS and reading / writing date from/to it.
+ * @author Heiko W. Rupp
+ */
+public class ASConnection {
+
+ private final Log log = LogFactory.getLog(ASConnection.class);
+ private int port;
+ private String host;
+ URL url;
+ String urlString;
+
+ public ASConnection(String host, int port) {
+ this.host = host;
+ this.port = port;
+
+ try {
+ url = new URL("http",host,port,"/domain-api");
+ urlString = url.toString();
+ } catch (MalformedURLException e) {
+ throw new IllegalArgumentException(e.getMessage());
+ }
+ }
+
+ /**
+ * Return the JSON-Ojbect for a certain path.
+ *
+ *
+ * @param base Path to the object/subsystem. Can be null/"" for the base
objects
+ * @param recursive Shall lover levels be recursively obtained. May generate a lot of
data.
+ * @param includeMetrics Should metrice be requested as well?
+ * @return A JSONObject encoding the level plus sub levels provided
+ * @throws Exception If anything goes wrong
+ */
+ JSONObject getLevelData(String base, boolean recursive, boolean includeMetrics)
throws Exception {
+
+ URL url2;
+ if (base!=null && !base.isEmpty()) {
+ String spec;
+ if (!base.startsWith("/")) {
+ spec = urlString + "/" + base;
+ }
+ else {
+ spec = urlString + base;
+ }
+ if (recursive)
+ spec += "?recursive";
+ if (includeMetrics)
+ spec += "?include-runtime=true"; // TODO this will change
?query-metrics=true for metrics only
+
+ url2 = new URL(spec);
+ }
+ else
+ url2 = url;
+
+ URLConnection conn = url2.openConnection();
+ BufferedReader in = new BufferedReader(new InputStreamReader(
+ conn.getInputStream()));
+
+ String line;
+ StringBuilder builder = new StringBuilder();
+ while ((line = in.readLine()) != null) {
+ builder.append(line);
+ }
+
+ JSONObject object = new JSONObject(builder.toString());
+
+ in.close();
+ return object;
+ }
+
+
+ boolean isErrorReply(JSONObject in) {
+ if (in.has("outcome")) {
+ String outcome = null;
+ try {
+ outcome = in.getString("outcome");
+ if (outcome.equals("failed")) {
+ String reason = in.getString("failure-description");
+ log.info(reason);
+ return true;
+ }
+
+ } catch (JSONException e) {
+ e.printStackTrace(); // TODO
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
new file mode 100644
index 0000000..04264b4
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -0,0 +1,123 @@
+package org.rhq.modules.plugins.jbossas7;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.json.JSONObject;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.measurement.AvailabilityType;
+import org.rhq.core.domain.measurement.DataType;
+import org.rhq.core.domain.measurement.MeasurementDataNumeric;
+import org.rhq.core.domain.measurement.MeasurementDataTrait;
+import org.rhq.core.domain.measurement.MeasurementReport;
+import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
+import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
+import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
+import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.core.pluginapi.operation.OperationContext;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
+
+import java.util.Set;
+
+public class BaseComponent implements ResourceComponent, MeasurementFacet
+{
+ private final Log log = LogFactory.getLog(this.getClass());
+
+ ResourceContext context;
+ Configuration conf;
+ String myServerName;
+ private static final String[] INTERFACE_NAMES = new
String[]{"loopback","external","public"};
+ ASConnection connection;
+ String path;
+ String key;
+
+
+ /**
+ * Return availability of this resource
+ * @see org.rhq.core.pluginapi.inventory.ResourceComponent#getAvailability()
+ */
+ public AvailabilityType getAvailability() {
+ // TODO supply real implementation
+ return AvailabilityType.UP;
+ }
+
+
+ /**
+ * Start the resource connection
+ * @see
org.rhq.core.pluginapi.inventory.ResourceComponent#start(org.rhq.core.pluginapi.inventory.ResourceContext)
+ */
+ public void start(ResourceContext context) throws
InvalidPluginConfigurationException, Exception {
+ this.context = context;
+ conf = context.getPluginConfiguration();
+ // TODO add code to start the resource / connection to it
+
+ String typeName = context.getResourceType().getName();
+ String host = conf.getSimpleValue("hostname","localhost");
+ String portString = conf.getSimpleValue("port","9990");
+ int port = Integer.parseInt(portString);
+ connection = new ASConnection(host,port);
+
+ path = conf.getSimpleValue("path", null);
+ key = context.getResourceKey();
+
+
+
+// Object o = connection.getLevelData("", false); // BASE entries
+
+ myServerName =
context.getResourceKey().substring(context.getResourceKey().lastIndexOf("/")+1);
+
+
+ }
+
+
+ /**
+ * Tear down the resource connection
+ * @see org.rhq.core.pluginapi.inventory.ResourceComponent#stop()
+ */
+ public void stop() {
+
+
+ }
+
+
+
+ /**
+ * Gather measurement data
+ * @see
org.rhq.core.pluginapi.measurement.MeasurementFacet#getValues(org.rhq.core.domain.measurement.MeasurementReport,
java.util.Set)
+ */
+ public void getValues(MeasurementReport report,
Set<MeasurementScheduleRequest> metrics) throws Exception {
+
+ JSONObject obj = connection.getLevelData(key,false,true);
+
+ for (MeasurementScheduleRequest req : metrics) {
+ if (obj.has(req.getName())) {
+ String val = obj.getString(req.getName());
+ if (req.getDataType()== DataType.MEASUREMENT) {
+
+ Double d = Double.parseDouble(val);
+ MeasurementDataNumeric data = new MeasurementDataNumeric(req,d);
+ report.addData(data);
+ } else if (req.getDataType()== DataType.TRAIT) {
+ MeasurementDataTrait data = new MeasurementDataTrait(req,val);
+ report.addData(data);
+ }
+ }
+ }
+ }
+
+
+ protected ASConnection getASConnection() {
+ return connection;
+ }
+
+
+
+
+
+
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
new file mode 100644
index 0000000..83d0e3e
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseDiscovery.java
@@ -0,0 +1,157 @@
+package org.rhq.modules.plugins.jbossas7;
+
+import java.io.File;
+import java.net.InetAddress;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.mc4j.ems.connection.support.metadata.LocalVMTypeDescriptor;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.configuration.PropertyMap;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.pluginapi.event.log.LogFileEventResourceComponentHelper;
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ProcessScanResult;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.plugins.jmx.JMXDiscoveryComponent;
+
+
+/**
+ * Discovery class
+ */
+public class BaseDiscovery implements ResourceDiscoveryComponent
+
+{
+
+ static final String DJBOSS_SERVER_BASE_DIR = "-Djboss.server.base.dir=";
+ static final String DORG_JBOSS_BOOT_LOG_FILE =
"-Dorg.jboss.boot.log.file=";
+ private final Log log = LogFactory.getLog(this.getClass());
+
+ /**
+ * Run the auto-discovery
+ */
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext discoveryContext) throws Exception {
+ Set<DiscoveredResourceDetails> discoveredResources = new
HashSet<DiscoveredResourceDetails>();
+
+
+ List<ProcessScanResult> scans =
discoveryContext.getAutoDiscoveredProcesses();
+
+ for (ProcessScanResult psr : scans) {
+
+ Configuration config = discoveryContext.getDefaultPluginConfiguration();
+ // IF SE, then look at domain/configuration/host.xml <management
interface="default" port="9990
+ // for management port
+ String[] commandLine = psr.getProcessInfo().getCommandLine();
+ String serverNameFull;
+ String serverName;
+ String psName = psr.getProcessScan().getName();
+ if (psName.equals("ProcessManager")) {
+ serverNameFull = "ProcessManager";
+ serverName = "ProcessManager";
+ } else if (psName.equals("ASManager")) {
+ serverName = "ASManager";
+ serverNameFull = "ASManager";
+ } else {
+ serverNameFull = getBaseDirFromCommandLine(commandLine);
+ serverName =
serverNameFull.substring(serverNameFull.lastIndexOf("/")+1);
+
+// DomainClient client =
DomainClient.Factory.create(InetAddress.getByName("localhost"),9990); //
+// Map<ServerIdentity,ServerStatus> serverStatuses =
client.getServerStatuses();
+// for (Map.Entry<ServerIdentity,ServerStatus> entry :
serverStatuses.entrySet()) {
+// ServerIdentity identity = entry.getKey();
+// ServerStatus status = entry.getValue();
+// if (identity.getServerName().equals(serverName)) {
+// String serverGroupName = identity.getServerGroupName();
+// config.put(new
PropertySimple("server-group",serverGroupName));
+// }
+//
+// }
+ }
+ String logFile = getLogFieFromCommandLine(commandLine);
+ initLogEventSourcesConfigProp(logFile,config);
+ String javaClazz = psr.getProcessInfo().getName();
+
+
+ /*
+ * We'll connect to the discovered VM on the local host, so set the
jmx connection
+ * properties accordingly. This may only work on JDK6+, but then JDK5 is
deprecated
+ * anyway.
+ */
+// config.put(new
PropertySimple(JMXDiscoveryComponent.COMMAND_LINE_CONFIG_PROPERTY,
+// javaClazz));
+ config.put(new PropertySimple(JMXDiscoveryComponent.CONNECTION_TYPE,
+ LocalVMTypeDescriptor.class.getName()));
+
+ // TODO vmid will change when the detected server is bounced - how do we
follow this?
+ config.put(new
PropertySimple(JMXDiscoveryComponent.VMID_CONFIG_PROPERTY,psr.getProcessInfo().getPid()));
+
+
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ discoveryContext.getResourceType(), // ResourceType
+ serverNameFull, // key TODO distinguish per domain?
+ serverName, // Name
+ null, // TODO real version ?
+ "TODO", // Description
+ config,
+ psr.getProcessInfo()
+ );
+
+
+ // Add to return values
+ discoveredResources.add(detail);
+ log.info("Discovered new ... " +
discoveryContext.getResourceType() + ", " + serverNameFull);
+ }
+
+ return discoveredResources;
+
+ }
+
+ String getBaseDirFromCommandLine(String[] commandLine) {
+ for (String line: commandLine) {
+ if (line.startsWith(DJBOSS_SERVER_BASE_DIR))
+ return line.substring(DJBOSS_SERVER_BASE_DIR.length());
+ }
+ return "";
+ }
+
+//-Dorg.jboss.boot.log.file=/devel/jbas7/jboss-as/build/target/jboss-7.0.0.Alpha2/domain/log/server-manager/boot.log
+//-Dlogging.configuration=file:/devel/jbas7/jboss-as/build/target/jboss-7.0.0.Alpha2/domain/configuration/logging.properties
+
+ String getLogFieFromCommandLine(String[] commandLine) {
+
+ for (String line: commandLine) {
+ if (line.startsWith(DORG_JBOSS_BOOT_LOG_FILE))
+ return line.substring(DORG_JBOSS_BOOT_LOG_FILE.length());
+ }
+ return "";
+ }
+
+ private void initLogEventSourcesConfigProp(String fileName, Configuration
pluginConfiguration) {
+
+ PropertyList logEventSources = pluginConfiguration
+ .getList(LogFileEventResourceComponentHelper.LOG_EVENT_SOURCES_CONFIG_PROP);
+
+ if (logEventSources==null)
+ return;
+
+ File serverLogFile = new File(fileName);
+
+ if (serverLogFile.exists() && !serverLogFile.isDirectory()) {
+ PropertyMap serverLogEventSource = new
PropertyMap("logEventSource");
+ serverLogEventSource.put(new PropertySimple(
+
LogFileEventResourceComponentHelper.LogEventSourcePropertyNames.LOG_FILE_PATH,
serverLogFile));
+ serverLogEventSource.put(new PropertySimple(
+ LogFileEventResourceComponentHelper.LogEventSourcePropertyNames.ENABLED,
Boolean.FALSE));
+ logEventSources.add(serverLogEventSource);
+ }
+ }
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
new file mode 100644
index 0000000..abf6d35
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceComponent.java
@@ -0,0 +1,44 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import org.rhq.core.domain.measurement.AvailabilityType;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
+
+/**
+ * // TODO: Document this
+ *
+ * @author Heiko W. Rupp
+ */
+public class DatasourceComponent implements ResourceComponent<SubsystemComponent>
{
+
+ public void start(ResourceContext<SubsystemComponent>
subsystemComponentResourceContext) throws InvalidPluginConfigurationException, Exception
{
+ // TODO: Customise this generated block
+ }
+
+ public void stop() {
+ // TODO: Customise this generated block
+ }
+
+ public AvailabilityType getAvailability() {
+ return null; // TODO: Customise this generated block
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceDiscovery.java
new file mode 100644
index 0000000..745dc2e
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DatasourceDiscovery.java
@@ -0,0 +1,65 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Discover Datasources
+ *
+ * @author Heiko W. Rupp
+ */
+public class DatasourceDiscovery implements
ResourceDiscoveryComponent<SubsystemComponent> {
+
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<SubsystemComponent> discoveryContext)
throws InvalidPluginConfigurationException, Exception {
+
+/*
+ if (subsys instanceof DataSourcesSubsystemElement) {
+ DataSourcesSubsystemElement element = (DataSourcesSubsystemElement) subsys;
+ DataSources sources = element.getDatasources();
+
+ Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>();
+
+ for (DataSource source : sources.getDataSource()) {
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ discoveryContext.getResourceType(), // Type
+ source.getJndiName(), // Key
+ source.getJndiName(), // Name TODO improve
+ null, // version
+ "A datasource", // description
+ discoveryContext.getDefaultPluginConfiguration(),
+ null // Process scans
+
+ );
+ details.add(detail);
+ }
+ return details;
+ }
+
+*/
+ return Collections.emptySet();
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemComponent.java
new file mode 100644
index 0000000..09d753c
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemComponent.java
@@ -0,0 +1,58 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.measurement.AvailabilityType;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
+
+/**
+ * Resource component for subsystems
+ *
+ * Deprecated - use BaseComponent
+ * @author Heiko W. Rupp
+ */
+@Deprecated
+public class SubsystemComponent implements ResourceComponent<BaseComponent> {
+
+ ResourceContext<BaseComponent> context;
+ Configuration config;
+ String path;
+ String key ;
+
+ public void start(ResourceContext<BaseComponent> context) throws
InvalidPluginConfigurationException, Exception {
+ this.config = context.getPluginConfiguration();
+ path = config.getSimpleValue("path", null);
+ this.context = context;
+ key = context.getResourceKey();
+
+ }
+
+ public void stop() {
+ // TODO: Customise this generated block
+ }
+
+ public AvailabilityType getAvailability() {
+ return AvailabilityType.UP; // TODO: Customise this generated block
+ }
+
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
new file mode 100644
index 0000000..7833f67
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -0,0 +1,117 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-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.modules.plugins.jbossas7;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.json.JSONObject;
+
+/**
+ * Discover subsystems
+ *
+ * @author Heiko W. Rupp
+ */
+public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseComponent> {
+
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent> context)
+ throws InvalidPluginConfigurationException, Exception {
+
+ Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>(1);
+
+
+ BaseComponent parentComponent = context.getParentResourceComponent();
+ ASConnection connection = parentComponent.getASConnection();
+
+
+ Configuration config = context.getDefaultPluginConfiguration();
+ String cpath = config.getSimpleValue("path", null);
+ boolean recursive = false;
+
+ String path;
+ if (cpath.endsWith("/*")) {
+ path = cpath.substring(0,cpath.length()-2);
+ recursive = true;
+ }
+ else
+ path = cpath;
+
+
+ JSONObject o = connection.getLevelData(path,recursive, false);
+ if (!connection.isErrorReply(o)) {
+ if (recursive) {
+ int i = path.lastIndexOf("/");
+ String subPath = path.substring(i+1);
+
+ o = o.getJSONObject(subPath);
+
+ Iterator keyIter = o.keys() ;
+ while (keyIter.hasNext()) {
+
+ String key = (String) keyIter.next();
+
+ String resKey = context.getParentResourceContext().getResourceKey() +
"/" + key;
+ String name = resKey.substring(resKey.lastIndexOf("/") +
1);
+
+
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ context.getResourceType(), // Type
+ path + "/" + key, // Key
+ name, // Name
+ null, // Version
+ path, // Description
+ config,
+ null);
+ details.add(detail);
+ }
+
+ }
+ else {
+
+
+ String resKey = context.getParentResourceContext().getResourceKey();
+ String name = resKey.substring(resKey.lastIndexOf("/") + 1);
+
+
+ DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+ context.getResourceType(), // Type
+ path, // Key
+ name, // Name
+ null, // Version
+ path, // Description
+ config,
+ null);
+ details.add(detail);
+ }
+
+ return details;
+ }
+
+ return Collections.emptySet();
+ }
+
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WarComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WarComponent.java
new file mode 100644
index 0000000..7382a6d
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WarComponent.java
@@ -0,0 +1,58 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2010 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.modules.plugins.jbossas7;
+
+import org.rhq.core.domain.measurement.AvailabilityType;
+import org.rhq.core.pluginapi.inventory.DeleteResourceFacet;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
+
+/**
+ * Monitoring of war files
+ *
+ * @author Heiko W. Rupp
+ */
+public class WarComponent implements ResourceComponent<BaseComponent>,
DeleteResourceFacet {
+
+ ResourceContext<BaseComponent> context;
+
+ public void start(ResourceContext<BaseComponent> context) throws
InvalidPluginConfigurationException, Exception {
+ this.context = context;
+ }
+
+ public void stop() {
+ }
+
+ public AvailabilityType getAvailability() {
+ return AvailabilityType.UP;
+ }
+
+ public void deleteResource() throws Exception {
+//
+// DomainDeploymentManager deploymentManager = client.getDeploymentManager();
+// DeploymentPlanBuilder builder = deploymentManager.newDeploymentPlan();
+//
+// String name = context.getResourceKey(); // key and name are the same at the
moment
+//
+// UndeployDeploymentPlanBuilder udpb = builder.undeploy(name);
+// RemoveDeploymentPlanBuilder rdpb = udpb.andRemoveUndeployed();
+// rdpb.build();
+ }
+}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WarDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WarDiscovery.java
new file mode 100644
index 0000000..adadcba
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WarDiscovery.java
@@ -0,0 +1,45 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2010 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.modules.plugins.jbossas7;
+
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Discover war files
+ *
+ * @author Heiko W. Rupp
+ */
+public class WarDiscovery implements ResourceDiscoveryComponent<BaseComponent> {
+
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<BaseComponent> context)
+ throws InvalidPluginConfigurationException, Exception {
+
+ Set<DiscoveredResourceDetails> details = new
HashSet<DiscoveredResourceDetails>();
+
+ BaseComponent baseComponent = context.getParentResourceComponent();
+
+ return details;
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
new file mode 100644
index 0000000..e29d0d2
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE plugin [
+
+ <!ENTITY logSources '
+ <c:group name="event" displayName="Events">
+ <c:list-property name="logEventSources">
+ <c:map-property name="logEventSource">
+ <c:simple-property name="logFilePath" type="file"
summary="true"
+ description="The absolute path to the source log
file."/>
+ <c:simple-property name="enabled" type="boolean"
summary="true"
+ description="A flag indicating whether of not
this log Event source is currently
+ enabled (i.e. whether the associated log
file should be tailed for
+ new entries)."/>
+ <c:simple-property name="dateFormat"
required="false"
+ description="The date format to use when parsing
the dates in log entries. The
+ format must be in the syntax defined by
the Java SimpleDateFormat
+ class. If not specified, the three date
formats that are predefined
+ by Log4J (ISO8601, DATE, and ABSOLUTE)
will be tried."/>
+ <c:simple-property name="includesPattern"
required="false"
+ description="A regular expression against which a
log entrys detail is matched
+ to determine if an Event should be fired
for that entry. If not
+ specified, no filtering of log entries
will be done based on their
+ detail."/>
+ <c:simple-property name="minimumSeverity"
required="false" default="error"
+ description="The minimum severity of Events that
should be collected for this
+ source. If not specified, there is no
minimum severity (i.e. all
+ events will be collected).">
+ <c:property-options>
+ <c:option name="debug" value="debug"/>
+ <c:option name="info" value="info"/>
+ <c:option name="warn" value="warn"/>
+ <c:option name="error" value="error"/>
+ <c:option name="fatal" value="fatal"/>
+ </c:property-options>
+ </c:simple-property>
+ </c:map-property>
+ </c:list-property>
+ </c:group>
+'>
+
+ ]>
+
+<plugin name="jboss-as-7"
+ displayName="JBoss-AS-7-Plugin"
+ description="Management of JBossAS 7"
+ package="org.rhq.modules.plugins.jbossas7"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="urn:xmlns:rhq-plugin"
+ xmlns:c="urn:xmlns:rhq-configuration"
+ version="4.0.0-SNAPSHOT"
+ >
+
+ <depends plugin="JMX"/>
+
+
+ <!-- TODO I think we should introduce an abstract AS7 plugin that contains some
base functionality and then
+ ~~ additional 'Personalities' for the kinds of servers (PM, SM,
Standalone AS, Managed AS)
+ -->
+
+ <server name="ProcessController"
+ discovery="BaseDiscovery"
+ class="BaseComponent"
+ description="Reaper process for other AS7 servicees"
+
+
+ <plugin-configuration>
+ <c:simple-property name="hostname" default="localhost"
required="true"/>
+ <c:simple-property name="port" default="9990"
type="integer" required="true"/>
+
+ &logSources;
+ </plugin-configuration>
+
+ <process-scan name="ProcessManager"
query="process|basename|match=^java.*,arg|org.jboss.as.process-controller|match=.*"/>
+
+
+ <operation name="dummyOperation">
+ <!-- TODO supply parameters and return values -->
+ </operation>
+
+ <!--
+ <server name="ProcessManager JVM"
+ description="JVM of the ProcessManager"
+ sourcePlugin="JMX"
+ sourceType="JMX Server"
+
discovery="org.rhq.plugins.jmx.LocalJMXServerDiscoveryComponent"
+ class="org.rhq.plugins.jmx.JMXServerComponent"
+ singleton="true"
+ />
+ -->
+
+
+
+ </server>
+
+ <server name="JBossAS (Standalone)"
+ discovery="BaseDiscovery"
+ class="BaseComponent"
+
+
+ <plugin-configuration>
+ <c:simple-property name="hostname" default="localhost"
required="true"/>
+ <c:simple-property name="port" default="9990"
type="integer" required="true"/>
+ <c:list-property name="system-properties">
+ <c:map-property name="system-property">
+ <c:simple-property name="key"
readOnly="true"/>
+ <c:simple-property name="value"
readOnly="true"/>
+ </c:map-property>
+ </c:list-property>
+ &logSources;
+ </plugin-configuration>
+
+ <process-scan name="StandaloneAS"
query="process|basename|match=^java.*,arg|org.jboss.as.standalone|match=.*"/>
+
+
+ <operation name="dummyOperation">
+ <!-- TODO supply parameters and return values -->
+ </operation>
+ <!--
+ <server name="JBoss AS standalone JVM"
+ description="JVM of the standalone JBossAS"
+ sourcePlugin="JMX"
+ sourceType="JMX Server"
+
discovery="org.rhq.plugins.jmx.LocalJMXServerDiscoveryComponent"
+ class="org.rhq.plugins.jmx.JMXServerComponent"
+ singleton="true"
+ />
+ -->
+
+ <server name="Messaging"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent">
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/subsystem/messaging"/>
+ </plugin-configuration>
+
+ <resource-configuration>
+ <c:simple-property name="journal-min-files" />
+ <c:simple-property name="journal-type" />
+ </resource-configuration>
+
+
+ <service name="Acceptor"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/subsystem/messaging/acceptor"/>
+ </plugin-configuration>
+
+
+ </service>
+
+ </server>
+
+ <server name="JBossWeb"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/subsystem/web"/>
+ </plugin-configuration>
+
+ <service name="Connector"
+ discovery="SubsystemDiscovery"
+ class="BaseComponent"
+
+
<plugin-configuration>
+ <c:simple-property name="path" readOnly="true"
default="/subsystem/web/connector/*"/>
+ </plugin-configuration>
+
+ <metric property="bytesSent"
measurementType="trendsup"/>
+ <metric property="bytesReceived"
measurementType="trendsup"/>
+ <metric property="processingTime"
measurementType="trendsup"/>
+ <metric property="errorCount"
measurementType="trendsup"/>
+ <metric property="maxTime" />
+ <metric property="requestCount"
measurementType="trendsup"/>
+
+ </service>
+
+
+ </server>
+ </server>
+
+ <server name="JBossAS (Managed)"
+ discovery="BaseDiscovery"
+ class="BaseComponent"
+
+ <plugin-configuration>
+ <c:simple-property name="hostname" default="localhost"
required="true"/>
+ <c:simple-property name="port" default="9990"
type="integer" required="true"/>
+
+ &logSources;
+ </plugin-configuration>
+
+ <process-scan name="ManagedAS"
query="process|basename|match=^java.*,arg|org.jboss.as.server|match=.*"/>
+
+
+ <metric property="serverGroup" dataType="trait"
displayType="summary" />
+ <resource-configuration>
+ <!--<c:group name="interfaces">-->
+ <c:simple-property name="loopback"
default="127.0.0.1" />
+ <c:simple-property name="external" default="any"
/>
+ <c:simple-property name="public" default="any"
/>
+ <!--</c:group>-->
+ </resource-configuration>
+
+ <server name="JBoss AS managed JVM"
+ description="JVM of the managed JBossAS"
+ sourcePlugin="JMX"
+ sourceType="JMX Server"
+
discovery="org.rhq.plugins.jmx.LocalJMXServerDiscoveryComponent"
+ class="org.rhq.plugins.jmx.JMXServerComponent"
+ singleton="true"
+ />
+
+ </server>
+
+</plugin>
diff --git a/modules/plugins/pom.xml b/modules/plugins/pom.xml
index 1582597..de1fad6 100644
--- a/modules/plugins/pom.xml
+++ b/modules/plugins/pom.xml
@@ -115,6 +115,7 @@
<module>rhq-server</module>
<module>jboss-cache</module>
<module>jboss-as-5</module>
+ <module>jboss-as-7</module>
<module>jboss-cache-v3</module>
<!-- was not in Jopr build at merge time
<module>jbossOSGi</module> -->
<module>database</module>