nvazquez closed pull request #1593: CLOUDSTACK-9417: Usage module refactoring URL: https://github.com/apache/cloudstack/pull/1593
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/debian/cloudstack-usage.install b/debian/cloudstack-usage.install index c0cc95a80b7..e91a570cd31 100644 --- a/debian/cloudstack-usage.install +++ b/debian/cloudstack-usage.install @@ -20,3 +20,5 @@ /etc/init.d/cloudstack-usage /etc/cloudstack/usage/* /etc/default/cloudstack-usage +/var/cache/cloudstack/usage + diff --git a/debian/cloudstack-usage.postinst b/debian/cloudstack-usage.postinst index 95297119d2c..3ed7c4b7305 100644 --- a/debian/cloudstack-usage.postinst +++ b/debian/cloudstack-usage.postinst @@ -43,6 +43,10 @@ case "$1" in rm -rf /etc/cloudstack/usage/key ln -s /etc/cloudstack/management/key /etc/cloudstack/usage/key fi + + # Usage cache folder permissions + chmod 0770 /var/cache/cloudstack/usage + chgrp cloud /var/cache/cloudstack/usage ;; esac diff --git a/debian/rules b/debian/rules index 03e9707df70..f9adc2cf0ef 100755 --- a/debian/rules +++ b/debian/rules @@ -128,6 +128,7 @@ override_dh_auto_install: mkdir $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/usage mkdir $(DESTDIR)/usr/share/$(PACKAGE)-usage mkdir $(DESTDIR)/usr/share/$(PACKAGE)-usage/plugins + mkdir $(DESTDIR)/var/cache/$(PACKAGE)/usage install -D usage/target/cloud-usage-$(VERSION).jar $(DESTDIR)/usr/share/$(PACKAGE)-usage/lib/$(PACKAGE)-usage.jar install -D usage/target/dependencies/* $(DESTDIR)/usr/share/$(PACKAGE)-usage/lib/ cp usage/target/transformed/db.properties $(DESTDIR)/$(SYSCONFDIR)/$(PACKAGE)/usage/ diff --git a/packaging/centos63/cloud.spec b/packaging/centos63/cloud.spec index abe50bce65e..84d0e34aebc 100644 --- a/packaging/centos63/cloud.spec +++ b/packaging/centos63/cloud.spec @@ -240,6 +240,7 @@ mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/agent mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/ipallocator mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/work mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/temp +mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/usage mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/mnt mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/management mkdir -p ${RPM_BUILD_ROOT}%{_initrddir} @@ -329,6 +330,7 @@ chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/mnt chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/management chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/work chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/temp +chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/usage chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/management chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/agent @@ -572,6 +574,10 @@ fi pip install --upgrade http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-2.0.4.zip#md5=3df394d89300db95163f17c843ef49df pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz +if [ -f "/usr/local/libexec/sanity-check-last-id" ]; then + cp /usr/local/libexec/sanity-check-last-id %{_localstatedir}/cache/%{name}/usage +fi + #No default permission as the permission setup is complex %files management %defattr(-,root,root,-) @@ -670,6 +676,7 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz %attr(0644,root,root) %{_sysconfdir}/%{name}/usage/log4j-cloud.xml %{_defaultdocdir}/%{name}-usage-%{version}/LICENSE %{_defaultdocdir}/%{name}-usage-%{version}/NOTICE +%dir %attr(0770,root,cloud) %{_localstatedir}/cache/%{name}/usage %files cli %attr(0644,root,root) %{python_sitearch}/cloudapis.py diff --git a/packaging/centos7/cloud.spec b/packaging/centos7/cloud.spec index cc63f5f5788..c0d80a80230 100644 --- a/packaging/centos7/cloud.spec +++ b/packaging/centos7/cloud.spec @@ -208,6 +208,7 @@ mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/agent mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/ipallocator mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/work mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/temp +mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/usage mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/mnt mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/management mkdir -p ${RPM_BUILD_ROOT}%{_initrddir} @@ -301,6 +302,7 @@ chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/mnt chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/management chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/work chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/temp +chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/usage chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/management chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/agent @@ -474,6 +476,10 @@ fi pip install --upgrade http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-2.0.4.zip#md5=3df394d89300db95163f17c843ef49df pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz +if [ -f "/usr/local/libexec/sanity-check-last-id" ]; then + cp /usr/local/libexec/sanity-check-last-id %{_localstatedir}/cache/%{name}/usage +fi + #No default permission as the permission setup is complex %files management %defattr(-,root,root,-) @@ -573,6 +579,7 @@ pip install --upgrade /usr/share/cloudstack-marvin/Marvin-*.tar.gz %attr(0644,root,root) %{_sysconfdir}/%{name}/usage/log4j-cloud.xml %{_defaultdocdir}/%{name}-usage-%{version}/LICENSE %{_defaultdocdir}/%{name}-usage-%{version}/NOTICE +%dir %attr(0770,root,cloud) %{_localstatedir}/cache/%{name}/usage %files cli %attr(0644,root,root) %{python_sitearch}/cloudapis.py diff --git a/packaging/fedora20/cloud.spec b/packaging/fedora20/cloud.spec index 546e439da2b..39f93a16def 100644 --- a/packaging/fedora20/cloud.spec +++ b/packaging/fedora20/cloud.spec @@ -221,6 +221,7 @@ mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/agent mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/ipallocator mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/work mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/temp +mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/usage mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/mnt mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/management mkdir -p ${RPM_BUILD_ROOT}%{_initrddir} @@ -308,6 +309,7 @@ chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/mnt chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/management chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/work chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/temp +chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/usage chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/management chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/agent @@ -625,6 +627,7 @@ fi %attr(0644,root,root) %{_sysconfdir}/%{name}/usage/log4j-cloud.xml %{_defaultdocdir}/%{name}-usage-%{version}/LICENSE %{_defaultdocdir}/%{name}-usage-%{version}/NOTICE +%dir %attr(0770,root,cloud) %{_localstatedir}/cache/%{name}/usage %files cli %attr(0644,root,root) %{python_sitearch}/cloudapis.py diff --git a/packaging/fedora21/cloud.spec b/packaging/fedora21/cloud.spec index a79d172eab7..f245f0a9de2 100644 --- a/packaging/fedora21/cloud.spec +++ b/packaging/fedora21/cloud.spec @@ -221,6 +221,7 @@ mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/agent mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/ipallocator mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/work mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/temp +mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/usage mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/mnt mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/management mkdir -p ${RPM_BUILD_ROOT}%{_initrddir} @@ -308,6 +309,7 @@ chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/mnt chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/%{name}/management chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/work chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/management/temp +chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/cache/%{name}/usage chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/management chmod 770 ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name}/agent @@ -625,6 +627,7 @@ fi %attr(0644,root,root) %{_sysconfdir}/%{name}/usage/log4j-cloud.xml %{_defaultdocdir}/%{name}-usage-%{version}/LICENSE %{_defaultdocdir}/%{name}-usage-%{version}/NOTICE +%dir %attr(0770,root,cloud) %{_localstatedir}/cache/%{name}/usage %files cli %attr(0644,root,root) %{python_sitearch}/cloudapis.py diff --git a/usage/conf/log4j-cloud_usage.xml.in b/usage/conf/log4j-cloud_usage.xml.in index 1f5c7877f0d..964a0f77795 100644 --- a/usage/conf/log4j-cloud_usage.xml.in +++ b/usage/conf/log4j-cloud_usage.xml.in @@ -48,7 +48,7 @@ under the License. </rollingPolicy> <layout class="org.apache.log4j.EnhancedPatternLayout"> - <param name="ConversionPattern" value="%-5p [%c{3}] (%t:%x) (logid:%X{logcontextid}) %m%n"/> + <param name="ConversionPattern" value="%d{ISO8601} %-5p [%c{3}] (%t:%x) (logid:%X{logcontextid}) %m%n"/> </layout> </appender> diff --git a/usage/src/com/cloud/usage/UsageSanityChecker.java b/usage/src/com/cloud/usage/UsageSanityChecker.java index 55d26b6bfa8..3b0f6c7b52c 100644 --- a/usage/src/com/cloud/usage/UsageSanityChecker.java +++ b/usage/src/com/cloud/usage/UsageSanityChecker.java @@ -43,9 +43,9 @@ protected static final int DEFAULT_AGGREGATION_RANGE = 1440; protected StringBuilder errors; protected List<CheckCase> checkCases; - protected String lastCheckFile = "/usr/local/libexec/sanity-check-last-id"; + protected String lastCheckFile = "/var/cache/cloudstack/usage/sanity-check-last-id"; protected String lastCheckId = ""; - protected int lastId = -1; + protected int lastId = 0; protected int maxId = -1; protected Connection conn; @@ -72,7 +72,9 @@ protected boolean checkItemCountByPstmt(CheckCase checkCase) throws SQLException try (PreparedStatement pstmt = conn.prepareStatement(checkCase.sqlTemplate)) { if(checkCase.checkId) { pstmt.setInt(1, lastId); - pstmt.setInt(2, maxId); + if (maxId > 0) { + pstmt.setInt(2, maxId); + } } try(ResultSet rs = pstmt.executeQuery();) { if (rs.next() && (rs.getInt(1) > 0)) { @@ -172,13 +174,14 @@ protected void checkSnapshotUsage() { protected void readLastCheckId(){ try(BufferedReader reader = new BufferedReader(new FileReader(lastCheckFile));) { String lastIdText = null; - lastId = -1; + lastId = 0; if ((reader != null) && (lastIdText = reader.readLine()) != null) { lastId = Integer.parseInt(lastIdText); } } catch (Exception e) { s_logger.error("readLastCheckId:Exception:"+e.getMessage(),e); } + } protected void readMaxId() throws SQLException { @@ -209,9 +212,8 @@ protected void updateNewMaxId() { public String runSanityCheck() throws SQLException { readLastCheckId(); - if (lastId > 0) { - lastCheckId = " and cu.id > ?"; - } + + lastCheckId = " and cu.id > ?"; conn = getConnection(); readMaxId(); @@ -226,6 +228,8 @@ public String runSanityCheck() throws SQLException { checkItemCountByPstmt(); + updateNewMaxId(); + return errors.toString(); } ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services