Piotr Kliczewski has uploaded a new change for review.

Change subject: events: vm stats refersher refactioring
......................................................................

events: vm stats refersher refactioring


Change-Id: I40139f9c90bd9ceeb297adf9f8bd3ab7f9113930
Signed-off-by: pkliczewski <piotr.kliczew...@gmail.com>
---
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/PollVMStatsRefresher.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/RefresherFactory.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VMStatsRefresher.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
4 files changed, 97 insertions(+), 33 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/87/37487/1

diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/PollVMStatsRefresher.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/PollVMStatsRefresher.java
new file mode 100644
index 0000000..ec60847
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/PollVMStatsRefresher.java
@@ -0,0 +1,72 @@
+package org.ovirt.engine.core.vdsbroker;
+
+import java.util.concurrent.TimeUnit;
+
+import org.ovirt.engine.core.common.config.Config;
+import org.ovirt.engine.core.common.config.ConfigValues;
+import org.ovirt.engine.core.utils.timer.SchedulerUtil;
+import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl;
+
+public class PollVMStatsRefresher implements VMStatsRefresher {
+
+    private VdsManager manager;
+    private SchedulerUtil sched;
+    private String vmsMonitoringJobId;
+    private int refreshIteration = 1;
+    private final int numberRefreshesBeforeSave = Config.<Integer> 
getValue(ConfigValues.NumberVmRefreshesBeforeSave);
+
+    public PollVMStatsRefresher(VdsManager manager) {
+        this.manager = manager;
+        this.sched = SchedulerUtilQuartzImpl.getInstance();
+    }
+
+    @Override
+    public void startMonitoring() {
+        int refreshRate = Config.<Integer> 
getValue(ConfigValues.VdsRefreshRate) * 1000;
+        refreshIteration = numberRefreshesBeforeSave - 1;
+
+        vmsMonitoringJobId =
+                sched.scheduleAFixedDelayJob(
+                        manager,
+                        "vmsMonitoring",
+                        new Class[0],
+                        new Object[0],
+                        refreshRate,
+                        refreshRate,
+                        TimeUnit.MILLISECONDS);
+    }
+
+    @Override
+    public void stopMonitoring() {
+        SchedulerUtilQuartzImpl.getInstance().deleteJob(vmsMonitoringJobId);
+    }
+
+    @Override
+    public void perform() {
+        if (this.manager.isMonitoringNeeded()) {
+            VmsListFetcher fetcher =
+                    getRefreshStatistics() ?
+                            new VmsStatisticsFetcher(this.manager) :
+                            new VmsListFetcher(this.manager);
+            fetcher.fetch();
+            new VmsMonitoring(this.manager,
+                    fetcher.getChangedVms(),
+                    fetcher.getVmsWithChangedDevices()).perform();
+        }
+
+    }
+
+    public boolean getRefreshStatistics() {
+        return (refreshIteration == numberRefreshesBeforeSave);
+    }
+
+    @Override
+    public void update() {
+        if (refreshIteration == numberRefreshesBeforeSave) {
+            refreshIteration = 1;
+        } else {
+            refreshIteration++;
+        }
+    }
+
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/RefresherFactory.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/RefresherFactory.java
new file mode 100644
index 0000000..6972462
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/RefresherFactory.java
@@ -0,0 +1,9 @@
+package org.ovirt.engine.core.vdsbroker;
+
+
+// TODO Use CDI to inject it
+public class RefresherFactory {
+    public static VMStatsRefresher create(final VdsManager manager) {
+        return new PollVMStatsRefresher(manager);
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VMStatsRefresher.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VMStatsRefresher.java
new file mode 100644
index 0000000..822eeb0
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VMStatsRefresher.java
@@ -0,0 +1,9 @@
+package org.ovirt.engine.core.vdsbroker;
+
+public interface VMStatsRefresher {
+    void startMonitoring();
+    void stopMonitoring();
+    void perform();
+    void update();
+    boolean getRefreshStatistics();
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
index 4f33d3e..12ff7da 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
@@ -64,7 +64,6 @@
 public class VdsManager {
     private static Logger log = LoggerFactory.getLogger(VdsManager.class);
     private static Map<Guid, String> recoveringJobIdMap = new 
ConcurrentHashMap<Guid, String>();
-    private final int numberRefreshesBeforeSave = Config.<Integer> 
getValue(ConfigValues.NumberVmRefreshesBeforeSave);
     private final Object lockObj = new Object();
     private final AtomicInteger mFailedToRunVmAttempts;
     private final AtomicInteger mUnrespondedAttempts;
@@ -76,8 +75,6 @@
     private long updateStartTime;
     private long nextMaintenanceAttemptTime;
     private String onTimerJobId;
-    private String vmsMonitoringJobId;
-    private int refreshIteration = 1;
     private boolean isSetNonOperationalExecuted;
     private MonitoringStrategy monitoringStrategy;
     private EngineLock monitoringLock;
@@ -87,6 +84,7 @@
     private HostMonitoring hostMonitoring;
     private boolean monitoringNeeded;
     private List<Pair<VM, VmInternalData>> lastVmsList = 
Collections.emptyList();
+    private VMStatsRefresher refresher;
 
     private VdsManager(VDS vds) {
         log.info("Entered VdsManager constructor");
@@ -135,9 +133,6 @@
         SchedulerUtil sched = SchedulerUtilQuartzImpl.getInstance();
         int refreshRate = Config.<Integer> 
getValue(ConfigValues.VdsRefreshRate) * 1000;
 
-        // start with refresh statistics
-        refreshIteration = numberRefreshesBeforeSave - 1;
-
         onTimerJobId =
                 sched.scheduleAFixedDelayJob(
                         this,
@@ -148,15 +143,8 @@
                         refreshRate,
                         TimeUnit.MILLISECONDS);
 
-        vmsMonitoringJobId =
-                sched.scheduleAFixedDelayJob(
-                        this,
-                        "vmsMonitoring",
-                        new Class[0],
-                        new Object[0],
-                        refreshRate,
-                        refreshRate,
-                        TimeUnit.MILLISECONDS);
+        this.refresher = RefresherFactory.create(this);
+        this.refresher.startMonitoring();
     }
 
     private void initVdsBroker() {
@@ -193,11 +181,7 @@
                     }
 
                     try {
-                        if (refreshIteration == numberRefreshesBeforeSave) {
-                            refreshIteration = 1;
-                        } else {
-                            refreshIteration++;
-                        }
+                        this.refresher.update();
                         if (isMonitoringNeeded()) {
                             setStartTime();
                             hostMonitoring = new 
HostMonitoring(VdsManager.this, cachedVds, monitoringStrategy);
@@ -266,17 +250,7 @@
 
     @OnTimerMethodAnnotation("vmsMonitoring")
     public void vmsMonitoring() {
-        if (isMonitoringNeeded()) {
-            VmsListFetcher fetcher =
-                    getRefreshStatistics() ?
-                            new VmsStatisticsFetcher(this) :
-                            new VmsListFetcher(this);
-            fetcher.fetch();
-            new VmsMonitoring(this,
-                    fetcher.getChangedVms(),
-                    fetcher.getVmsWithChangedDevices()
-            ).perform();
-        }
+        this.refresher.perform();
     }
 
     /**
@@ -763,7 +737,7 @@
     public void dispose() {
         log.info("vdsManager::disposing");
         SchedulerUtilQuartzImpl.getInstance().deleteJob(onTimerJobId);
-        SchedulerUtilQuartzImpl.getInstance().deleteJob(vmsMonitoringJobId);
+        this.refresher.stopMonitoring();
         vdsProxy.close();
     }
 
@@ -926,7 +900,7 @@
     }
 
     public boolean getRefreshStatistics() {
-        return (refreshIteration == numberRefreshesBeforeSave);
+        return this.refresher.getRefreshStatistics();
     }
 
     public Object getLockObj() {


-- 
To view, visit http://gerrit.ovirt.org/37487
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I40139f9c90bd9ceeb297adf9f8bd3ab7f9113930
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Piotr Kliczewski <piotr.kliczew...@gmail.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to