Uploaded image for project: 'Ambari'
  1. Ambari
  2. AMBARI-10750

Initial Implementation of Advanced API Cluster Provisioning Functionality

    Details

    • Type: Task
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.1.0
    • Fix Version/s: 2.1.0
    • Component/s: ambari-server, blueprints
    • Labels:
      None

      Description

      API based (blueprint) cluster provisioning modifications and enhancements which will provide for more flexible, scalable and robust cluster provisioning.

      This will include API and backend changes.

      • Allow a host count to be specified in the cluster creation template instead of host names. This is documented in https://issues.apache.org/jira/browse/AMBARI-6275
      • Allow cluster creation or scaling to be started via the REST API prior to all/any hosts being available. As hosts register with Ambari server they will be matched to request host groups and provisioned according to the requested topology
      • Allow host predicates to be specified along with host count to provide more flexibility in matching hosts to host groups. This will allow for host flavors where different host groups are matched to different host flavors
      • Break up the current monolithic provisioning request into a request for each host operation. For example, install on host A, start on host A, install on hostB, etc. This will allow hosts to make progress even when another host encounters a failure.

      Changes to the API:
      Addition of "host_count" and "host_predicate" to both the cluster creation template and add host api. Previously a host name had to be specified for these api call but now a host count can be specified instead. When specifying a host count, a predicate can also be specified which gives fine grain control over which hosts are matched to which host groups.

      Cluster Create Template:

      {
        "blueprint" : "bp1",
        "host_groups" :[
          { 
            "name" : "master",  
            "hosts" : [          
              { 
                "fqdn" : "john2.novalocal"
              }
            ]
          },  
          { 
            "name" : "slave",   
            "host_count" : "5",
            "host_predicate" : "Hosts/cpu_count>1"     
          }
        ]
      }
      

      Add Host API:

      [
        {
            "blueprint" : "bp1",
            "host_group" : "slave",
            "host_count" : 5
        },
        {
            "blueprint" : "bp1",
            "host_group" : "super-slave",
            "host_count" : 5,
            "host_predicate" : "Hosts/cpu_count>2&Hosts/total_mem>3000000"
        }
      ]
      

      The syntax of the host predicate is standard API query syntax which is described here:
      https://github.com/apache/ambari/blob/trunk/ambari-server/docs/api/v1/index.md#query-parameters

      Currently, the properties which are available to query are exactly the same as those available for the /api/v1/hosts endpoint.

      1. AMBARI-10750.patch
        1.32 MB
        John Speidel

        Issue Links

          Activity

          Hide
          hadoopqa Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12728195/AMBARI-10750.patch
          against trunk revision .

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 21 new or modified test files.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 core tests. The test build failed in ambari-server

          Test results: https://builds.apache.org/job/Ambari-trunk-test-patch/2520//testReport/
          Console output: https://builds.apache.org/job/Ambari-trunk-test-patch/2520//console

          This message is automatically generated.

          Show
          hadoopqa Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12728195/AMBARI-10750.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 21 new or modified test files. +1 javac . The applied patch does not increase the total number of javac compiler warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 core tests . The test build failed in ambari-server Test results: https://builds.apache.org/job/Ambari-trunk-test-patch/2520//testReport/ Console output: https://builds.apache.org/job/Ambari-trunk-test-patch/2520//console This message is automatically generated.
          Hide
          hadoopqa Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12728206/AMBARI-10750.patch
          against trunk revision .

          +1 @author. The patch does not contain any @author tags.

          +1 tests included. The patch appears to include 21 new or modified test files.

          +1 javac. The applied patch does not increase the total number of javac compiler warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          -1 core tests. The test build failed in ambari-server

          Test results: https://builds.apache.org/job/Ambari-trunk-test-patch/2521//testReport/
          Console output: https://builds.apache.org/job/Ambari-trunk-test-patch/2521//console

          This message is automatically generated.

          Show
          hadoopqa Hadoop QA added a comment - -1 overall . Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12728206/AMBARI-10750.patch against trunk revision . +1 @author . The patch does not contain any @author tags. +1 tests included . The patch appears to include 21 new or modified test files. +1 javac . The applied patch does not increase the total number of javac compiler warnings. +1 release audit . The applied patch does not increase the total number of release audit warnings. -1 core tests . The test build failed in ambari-server Test results: https://builds.apache.org/job/Ambari-trunk-test-patch/2521//testReport/ Console output: https://builds.apache.org/job/Ambari-trunk-test-patch/2521//console This message is automatically generated.
          Hide
          jspeidel John Speidel added a comment -

          Both failed for the same reason:
          [ERROR] Failed to execute goal on project ambari-server: Could not resolve dependencies for project org.apache.ambari:ambari-server:jar:2.0.0-SNAPSHOT: Failed to collect dependencies at org.apache.ambari:ambari-metrics-common:jar:2.0.0-SNAPSHOT: Failed to read artifact descriptor for org.apache.ambari:ambari-metrics-common:jar:2.0.0-SNAPSHOT: Could not find artifact org.apache.ambari:ambari-metrics:pom:2.0.0-SNAPSHOT in oss.sonatype.org (https://oss.sonatype.org/content/groups/staging) -> [Help 1]

          Show
          jspeidel John Speidel added a comment - Both failed for the same reason: [ERROR] Failed to execute goal on project ambari-server: Could not resolve dependencies for project org.apache.ambari:ambari-server:jar:2.0.0-SNAPSHOT: Failed to collect dependencies at org.apache.ambari:ambari-metrics-common:jar:2.0.0-SNAPSHOT: Failed to read artifact descriptor for org.apache.ambari:ambari-metrics-common:jar:2.0.0-SNAPSHOT: Could not find artifact org.apache.ambari:ambari-metrics:pom:2.0.0-SNAPSHOT in oss.sonatype.org ( https://oss.sonatype.org/content/groups/staging ) -> [Help 1]
          Hide
          jspeidel John Speidel added a comment -

          merged to trunk

          Show
          jspeidel John Speidel added a comment - merged to trunk
          Hide
          hudson Hudson added a comment -

          SUCCESS: Integrated in Ambari-trunk-Commit #2442 (See https://builds.apache.org/job/Ambari-trunk-Commit/2442/)
          AMBARI-10750. Initial merge of advanced api provisioning work. (jspeidel: http://git-wip-us.apache.org/repos/asf?p=ambari.git&a=commit&h=c9f0dd0b8206956a7a71fa0adca64160710d2910)

          • ambari-server/src/main/java/org/apache/ambari/server/topology/RequiredPasswordValidator.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintFactory.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostResourceProvider.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/HostOfferResponse.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequestTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/Blueprint.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/HostRequest.java
          • ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/NoSuchBlueprintException.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/ShortTaskStatus.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionManager.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ExportBlueprintRequest.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/InvalidTopologyTemplateException.java
          • ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/Cardinality.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StageResourceProvider.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopology.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupInfo.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequest.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessorTest.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImpl.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/ConfigurationFactory.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequest.java
          • ambari-server/src/main/java/org/apache/ambari/server/orm/entities/BlueprintEntity.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactoryImpl.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupImpl.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
          • ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
          • ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterTopologyImplTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/LogicalRequest.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/Cardinality.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyTask.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/Stack.java
          • ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintFactoryTest.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommand.java
          • ambari-server/src/test/java/org/apache/ambari/server/topology/RequiredPasswordValidatorTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyValidator.java
          • ambari-server/src/main/java/org/apache/ambari/server/api/query/render/ClusterBlueprintRenderer.java
          • ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintImplTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroup.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigurationTopologyException.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidator.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostGroup.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopologyImpl.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/InvalidTopologyException.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidatorImpl.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/NoSuchHostGroupException.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactory.java
          • ambari-server/src/test/java/org/apache/ambari/server/api/query/render/ClusterBlueprintRendererTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/orm/dao/BlueprintDAO.java
          • ambari-server/src/test/java/org/apache/ambari/server/utils/TestStageUtils.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ScaleClusterRequest.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
          • ambari-server/src/test/java/org/apache/ambari/server/orm/entities/BlueprintEntityTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessor.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
          • ambari-server/src/main/java/org/apache/ambari/server/stack/NoSuchStackException.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
          • ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterConfigurationRequest.java
          • ambari-server/src/test/java/org/apache/ambari/server/topology/ConfigurationFactoryTest.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractResourceProvider.java
          • ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
          Show
          hudson Hudson added a comment - SUCCESS: Integrated in Ambari-trunk-Commit #2442 (See https://builds.apache.org/job/Ambari-trunk-Commit/2442/ ) AMBARI-10750 . Initial merge of advanced api provisioning work. (jspeidel: http://git-wip-us.apache.org/repos/asf?p=ambari.git&a=commit&h=c9f0dd0b8206956a7a71fa0adca64160710d2910 ) ambari-server/src/main/java/org/apache/ambari/server/topology/RequiredPasswordValidator.java ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintFactory.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostResourceProvider.java ambari-server/src/main/java/org/apache/ambari/server/topology/HostOfferResponse.java ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequestTest.java ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java ambari-server/src/main/java/org/apache/ambari/server/topology/Blueprint.java ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java ambari-server/src/main/java/org/apache/ambari/server/topology/HostRequest.java ambari-server/src/main/java/org/apache/ambari/server/utils/StageUtils.java ambari-server/src/main/java/org/apache/ambari/server/topology/NoSuchBlueprintException.java ambari-server/src/main/java/org/apache/ambari/server/controller/ShortTaskStatus.java ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionManager.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ExportBlueprintRequest.java ambari-server/src/main/java/org/apache/ambari/server/topology/InvalidTopologyTemplateException.java ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/Cardinality.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StageResourceProvider.java ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopology.java ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupInfo.java ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequest.java ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessorTest.java ambari-server/src/test/java/org/apache/ambari/server/controller/BackgroundCustomCommandExecutionTest.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImpl.java ambari-server/src/main/java/org/apache/ambari/server/topology/ConfigurationFactory.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequest.java ambari-server/src/main/java/org/apache/ambari/server/orm/entities/BlueprintEntity.java ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactoryImpl.java ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelperTest.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessor.java ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupImpl.java ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterTopologyImplTest.java ambari-server/src/main/java/org/apache/ambari/server/topology/LogicalRequest.java ambari-server/src/main/java/org/apache/ambari/server/topology/Cardinality.java ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyTask.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/Stack.java ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintFactoryTest.java ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java ambari-server/src/main/java/org/apache/ambari/server/actionmanager/HostRoleCommand.java ambari-server/src/test/java/org/apache/ambari/server/topology/RequiredPasswordValidatorTest.java ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyValidator.java ambari-server/src/main/java/org/apache/ambari/server/api/query/render/ClusterBlueprintRenderer.java ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintImplTest.java ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroup.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ConfigurationTopologyException.java ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidator.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostGroup.java ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopologyImpl.java ambari-server/src/main/java/org/apache/ambari/server/topology/InvalidTopologyException.java ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidatorImpl.java ambari-server/src/main/java/org/apache/ambari/server/topology/NoSuchHostGroupException.java ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactory.java ambari-server/src/test/java/org/apache/ambari/server/api/query/render/ClusterBlueprintRendererTest.java ambari-server/src/main/java/org/apache/ambari/server/orm/dao/BlueprintDAO.java ambari-server/src/test/java/org/apache/ambari/server/utils/TestStageUtils.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ScaleClusterRequest.java ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java ambari-server/src/test/java/org/apache/ambari/server/orm/entities/BlueprintEntityTest.java ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseBlueprintProcessor.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java ambari-server/src/main/java/org/apache/ambari/server/stack/NoSuchStackException.java ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterConfigurationRequest.java ambari-server/src/test/java/org/apache/ambari/server/topology/ConfigurationFactoryTest.java ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractResourceProvider.java ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
          Hide
          vhamine Vikas Hamine added a comment -

          Suggest making "host_count" and "host_predicate" properties of host_group instead of the host object in the cluster creation template. I think the change would make the template more intuitive.

          Show
          vhamine Vikas Hamine added a comment - Suggest making "host_count" and "host_predicate" properties of host_group instead of the host object in the cluster creation template. I think the change would make the template more intuitive.
          Hide
          jspeidel John Speidel added a comment -

          Vikas Hamine, done.

          Show
          jspeidel John Speidel added a comment - Vikas Hamine , done.

            People

            • Assignee:
              jspeidel John Speidel
              Reporter:
              jspeidel John Speidel
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development