From 2cccd8f754a17d49ca78920b8b62648d532b4cf0 Mon Sep 17 00:00:00 2001 From: Marcus Sorensen Date: Thu, 31 Aug 2023 13:43:23 -0600 Subject: [PATCH 1/7] db: Add index on cluster_details.name for FirstFitPlanner speedup (#7922) --- .../upgrade/dao/DatabaseAccessObject.java | 29 ++++++++- .../com/cloud/upgrade/dao/DbUpgradeUtils.java | 8 +++ .../upgrade/dao/Upgrade41800to41810.java | 5 ++ .../upgrade/dao/DatabaseAccessObjectTest.java | 61 +++++++++++++++++++ 4 files changed, 102 insertions(+), 1 deletion(-) diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/DatabaseAccessObject.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/DatabaseAccessObject.java index 21d5a205a09..0b38acb5c21 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/DatabaseAccessObject.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/DatabaseAccessObject.java @@ -18,6 +18,7 @@ package com.cloud.upgrade.dao; import java.sql.Connection; import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.sql.SQLException; import org.apache.log4j.Logger; @@ -84,6 +85,33 @@ public class DatabaseAccessObject { return columnExists; } + public String generateIndexName(String tableName, String columnName) { + return String.format("i_%s__%s", tableName, columnName); + } + + public boolean indexExists(Connection conn, String tableName, String indexName) { + try (PreparedStatement pstmt = conn.prepareStatement(String.format("SHOW INDEXES FROM %s where Key_name = \"%s\"", tableName, indexName))) { + ResultSet result = pstmt.executeQuery(); + if (result.next()) { + return true; + } + } catch (SQLException e) { + s_logger.debug(String.format("Index %s doesn't exist, ignoring exception:", indexName, e.getMessage())); + } + return false; + } + + public void createIndex(Connection conn, String tableName, String columnName, String indexName) { + String stmt = String.format("CREATE INDEX %s on %s (%s)", indexName, tableName, columnName); + s_logger.debug("Statement: " + stmt); + try (PreparedStatement pstmt = conn.prepareStatement(stmt)) { + pstmt.execute(); + s_logger.debug(String.format("Created index %s", indexName)); + } catch (SQLException e) { + s_logger.warn(String.format("Unable to create index %s", indexName), e); + } + } + protected static void closePreparedStatement(PreparedStatement pstmt, String errorMessage) { try { if (pstmt != null) { @@ -93,5 +121,4 @@ public class DatabaseAccessObject { s_logger.warn(errorMessage, e); } } - } diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgradeUtils.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgradeUtils.java index 02dad6250dc..6b4e1814de0 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgradeUtils.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgradeUtils.java @@ -23,6 +23,14 @@ public class DbUpgradeUtils { private static DatabaseAccessObject dao = new DatabaseAccessObject(); + public static void addIndexIfNeeded(Connection conn, String tableName, String columnName) { + String indexName = dao.generateIndexName(tableName, columnName); + + if (!dao.indexExists(conn, tableName, indexName)) { + dao.createIndex(conn, tableName, columnName, indexName); + } + } + public static void addForeignKey(Connection conn, String tableName, String tableColumn, String foreignTableName, String foreignColumnName) { dao.addForeignKey(conn, tableName, tableColumn, foreignTableName, foreignColumnName); } diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41800to41810.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41800to41810.java index 8eb50666ec8..a58d9965259 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41800to41810.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41800to41810.java @@ -69,6 +69,7 @@ public class Upgrade41800to41810 implements DbUpgrade, DbUpgradeSystemVmTemplate copyGuestOsMappingsToVMware80u1(); addForeignKeyToAutoscaleVmprofiles(conn); mergeDuplicateGuestOSes(); + addIndexes(conn); } private void mergeDuplicateGuestOSes() { @@ -242,4 +243,8 @@ public class Upgrade41800to41810 implements DbUpgrade, DbUpgradeSystemVmTemplate private void addForeignKeyToAutoscaleVmprofiles(Connection conn) { DbUpgradeUtils.addForeignKey(conn, "autoscale_vmprofiles", "user_data_id", "user_data", "id"); } + + private void addIndexes(Connection conn) { + DbUpgradeUtils.addIndexIfNeeded(conn, "cluster_details", "name"); + } } diff --git a/engine/schema/src/test/java/com/cloud/upgrade/dao/DatabaseAccessObjectTest.java b/engine/schema/src/test/java/com/cloud/upgrade/dao/DatabaseAccessObjectTest.java index 2b8b2bd8f1c..7e78c3ec3e9 100644 --- a/engine/schema/src/test/java/com/cloud/upgrade/dao/DatabaseAccessObjectTest.java +++ b/engine/schema/src/test/java/com/cloud/upgrade/dao/DatabaseAccessObjectTest.java @@ -16,6 +16,7 @@ // under the License. package com.cloud.upgrade.dao; +import static org.mockito.Matchers.startsWith; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.contains; @@ -27,9 +28,11 @@ import static org.mockito.Mockito.when; import java.sql.Connection; import java.sql.PreparedStatement; +import java.sql.ResultSet; import java.sql.SQLException; import org.apache.log4j.Logger; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -49,6 +52,9 @@ public class DatabaseAccessObjectTest { @Mock private Logger loggerMock; + @Mock + private ResultSet resultSetMock; + private final DatabaseAccessObject dao = new DatabaseAccessObject(); @Before @@ -83,6 +89,61 @@ public class DatabaseAccessObjectTest { dao.dropKey(conn, tableName, key, isForeignKey); } + @Test + public void generateIndexNameTest() { + String indexName = dao.generateIndexName("mytable","mycolumn"); + Assert.assertEquals( "i_mytable__mycolumn", indexName); + } + + @Test + public void indexExistsFalseTest() throws Exception { + when(resultSetMock.next()).thenReturn(false); + when(connectionMock.prepareStatement(startsWith("SHOW INDEXES FROM"))).thenReturn(preparedStatementMock); + when(preparedStatementMock.executeQuery()).thenReturn(resultSetMock); + + Connection conn = connectionMock; + String tableName = "mytable"; + String indexName = "myindex"; + + Assert.assertFalse(dao.indexExists(conn, tableName, indexName)); + verify(connectionMock, times(1)).prepareStatement(anyString()); + verify(preparedStatementMock, times(1)).executeQuery(); + verify(preparedStatementMock, times(1)).close(); + } + + @Test + public void indexExistsTrueTest() throws Exception { + when(resultSetMock.next()).thenReturn(true); + when(connectionMock.prepareStatement(startsWith("SHOW INDEXES FROM"))).thenReturn(preparedStatementMock); + when(preparedStatementMock.executeQuery()).thenReturn(resultSetMock); + + Connection conn = connectionMock; + String tableName = "mytable"; + String indexName = "myindex"; + + Assert.assertTrue(dao.indexExists(conn, tableName, indexName)); + verify(connectionMock, times(1)).prepareStatement(anyString()); + verify(preparedStatementMock, times(1)).executeQuery(); + verify(preparedStatementMock, times(1)).close(); + } + + @Test + public void createIndexTest() throws Exception { + when(connectionMock.prepareStatement(startsWith("CREATE INDEX"))).thenReturn(preparedStatementMock); + when(preparedStatementMock.execute()).thenReturn(true); + + Connection conn = connectionMock; + String tableName = "mytable"; + String columnName = "mycolumn"; + String indexName = "myindex"; + + dao.createIndex(conn, tableName, columnName, indexName); + verify(connectionMock, times(1)).prepareStatement(anyString()); + verify(preparedStatementMock, times(1)).execute(); + verify(preparedStatementMock, times(1)).close(); + verify(loggerMock, times(1)).debug("Created index myindex"); + } + @Test public void testDropKeyWhenTableNameIsNull() throws Exception { SQLException sqlException = new SQLException(); From 89e0a4ca25c108f9c0a166a741c15180bed10712 Mon Sep 17 00:00:00 2001 From: Marcus Sorensen Date: Thu, 31 Aug 2023 13:43:45 -0600 Subject: [PATCH 2/7] PowerFlex: Handle missing volumes gracefully during delete volume (#7924) --- .../client/ScaleIOGatewayClientImpl.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/client/ScaleIOGatewayClientImpl.java b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/client/ScaleIOGatewayClientImpl.java index 61e190d5239..fa428313943 100644 --- a/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/client/ScaleIOGatewayClientImpl.java +++ b/plugins/storage/volume/scaleio/src/main/java/org/apache/cloudstack/storage/datastore/client/ScaleIOGatewayClientImpl.java @@ -738,11 +738,20 @@ public class ScaleIOGatewayClientImpl implements ScaleIOGatewayClient { try { unmapVolumeFromAllSdcs(volumeId); } catch (Exception ignored) {} - Boolean removeVolumeStatus = post( - "/instances/Volume::" + volumeId + "/action/removeVolume", - "{\"removeMode\":\"ONLY_ME\"}", Boolean.class); - if (removeVolumeStatus != null) { - return removeVolumeStatus; + + try { + Boolean removeVolumeStatus = post( + "/instances/Volume::" + volumeId + "/action/removeVolume", + "{\"removeMode\":\"ONLY_ME\"}", Boolean.class); + if (removeVolumeStatus != null) { + return removeVolumeStatus; + } + } catch (Exception ex) { + if (ex instanceof ServerApiException && ex.getMessage().contains("Could not find the volume")) { + LOG.warn(String.format("API says deleting volume %s does not exist, handling gracefully", volumeId)); + return true; + } + throw ex; } return false; } From 57c61fb33cf0a4587983d8b39b6aadd58a26a9b4 Mon Sep 17 00:00:00 2001 From: Nicolas Vazquez Date: Fri, 1 Sep 2023 03:16:03 -0300 Subject: [PATCH 3/7] Fix direct download https compressed qcow2 template checker (#7932) This PR fixes an issue on direct download while registering HTTPS compressed files Fixes: #7929 --- .../HttpsDirectTemplateDownloader.java | 3 +- .../wrapper/LibvirtCheckUrlCommand.java | 5 +++ .../storage/template/DownloadManagerImpl.java | 2 +- .../com/cloud/utils/storage/QCOW2Utils.java | 42 ++++++++++--------- .../cloud/utils/storage/QCOW2UtilsTest.java | 6 +-- 5 files changed, 33 insertions(+), 25 deletions(-) diff --git a/core/src/main/java/org/apache/cloudstack/direct/download/HttpsDirectTemplateDownloader.java b/core/src/main/java/org/apache/cloudstack/direct/download/HttpsDirectTemplateDownloader.java index 908bf22964b..2035aab2aca 100644 --- a/core/src/main/java/org/apache/cloudstack/direct/download/HttpsDirectTemplateDownloader.java +++ b/core/src/main/java/org/apache/cloudstack/direct/download/HttpsDirectTemplateDownloader.java @@ -183,7 +183,8 @@ public class HttpsDirectTemplateDownloader extends DirectTemplateDownloaderImpl SSLContext context = getSSLContext(); urlConnection.setSSLSocketFactory(context.getSocketFactory()); urlConnection.connect(); - return QCOW2Utils.getVirtualSize(urlConnection.getInputStream()); + boolean isCompressed = !url.endsWith("qcow2"); + return QCOW2Utils.getVirtualSize(urlObj.openStream(), isCompressed); } catch (IOException e) { throw new CloudRuntimeException(String.format("Cannot obtain qcow2 virtual size due to: %s", e.getMessage()), e); } diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckUrlCommand.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckUrlCommand.java index 939d43086f4..935bc8e113b 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckUrlCommand.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtCheckUrlCommand.java @@ -40,6 +40,11 @@ public class LibvirtCheckUrlCommand extends CommandWrapper Date: Wed, 6 Sep 2023 20:11:41 +0530 Subject: [PATCH 4/7] ui: don't skip if dataview has multiple items in response (#7947) This would fix the case of multiple items return in API response for a resource such as a template or ISO in case of multi-zone env. Signed-off-by: Rohit Yadav --- ui/src/views/AutogenView.vue | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue index ab485c46b48..acb6fd6e89c 100644 --- a/ui/src/views/AutogenView.vue +++ b/ui/src/views/AutogenView.vue @@ -942,10 +942,6 @@ export default { console.log('DEBUG - Discarding API response as its `id` does not match the uuid on the browser path') return } - if (this.dataView && apiItemCount > 1) { - console.log('DEBUG - Discarding API response as got more than one item in data view', this.$route.params, this.items) - return - } this.items = json[responseName][objectName] if (!this.items || this.items.length === 0) { From 126dd5fa4cfd046e69b9e0cf6e11d52213d6905d Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Thu, 7 Sep 2023 04:52:37 +0200 Subject: [PATCH 5/7] kvm: fix live vm migration between local storage pools (#7945) --- .../com/cloud/hypervisor/kvm/resource/LibvirtConnection.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java index 0f8031e3aaa..c70a72f399c 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtConnection.java @@ -21,7 +21,6 @@ import java.util.Map; import org.apache.log4j.Logger; import org.libvirt.Connect; -import org.libvirt.Library; import org.libvirt.LibvirtException; import com.cloud.hypervisor.Hypervisor; @@ -45,7 +44,6 @@ public class LibvirtConnection { if (conn == null) { s_logger.info("No existing libvirtd connection found. Opening a new one"); conn = new Connect(hypervisorURI, false); - Library.initEventLoop(); s_logger.debug("Successfully connected to libvirt at: " + hypervisorURI); s_connections.put(hypervisorURI, conn); } else { From f049f5409e0385fdfffec534728db863fb6f5c53 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Thu, 7 Sep 2023 12:16:45 +0530 Subject: [PATCH 6/7] server: fix dualstack ipv6 networks for vxlan (#7933) Fixes #7926 Signed-off-by: Abhishek Kumar --- .../network/guru/VxlanGuestNetworkGuru.java | 5 +---- .../network/guru/ExternalGuestNetworkGuru.java | 18 +----------------- .../cloud/network/guru/GuestNetworkGuru.java | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/plugins/network-elements/vxlan/src/main/java/com/cloud/network/guru/VxlanGuestNetworkGuru.java b/plugins/network-elements/vxlan/src/main/java/com/cloud/network/guru/VxlanGuestNetworkGuru.java index 2f30e17e323..ce6baaa15e9 100644 --- a/plugins/network-elements/vxlan/src/main/java/com/cloud/network/guru/VxlanGuestNetworkGuru.java +++ b/plugins/network-elements/vxlan/src/main/java/com/cloud/network/guru/VxlanGuestNetworkGuru.java @@ -69,19 +69,16 @@ public class VxlanGuestNetworkGuru extends GuestNetworkGuru { @Override public Network design(NetworkOffering offering, DeploymentPlan plan, Network userSpecified, Account owner) { - NetworkVO network = (NetworkVO)super.design(offering, plan, userSpecified, owner); if (network == null) { return null; } - if (offering.getGuestType() == GuestType.L2 && network.getBroadcastUri() != null) { String vxlan = BroadcastDomainType.getValue(network.getBroadcastUri()); network.setBroadcastUri(BroadcastDomainType.Vxlan.toUri(vxlan)); } network.setBroadcastDomainType(BroadcastDomainType.Vxlan); - - return network; + return updateNetworkDesignForIPv6IfNeeded(network, userSpecified); } @Override diff --git a/server/src/main/java/com/cloud/network/guru/ExternalGuestNetworkGuru.java b/server/src/main/java/com/cloud/network/guru/ExternalGuestNetworkGuru.java index a6b033b6ea2..471f4d11b25 100644 --- a/server/src/main/java/com/cloud/network/guru/ExternalGuestNetworkGuru.java +++ b/server/src/main/java/com/cloud/network/guru/ExternalGuestNetworkGuru.java @@ -36,7 +36,6 @@ import com.cloud.event.EventTypes; import com.cloud.event.EventVO; import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.InsufficientVirtualNetworkCapacityException; -import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.IpAddressManager; import com.cloud.network.Network; import com.cloud.network.Network.GuestType; @@ -124,22 +123,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru { /* In order to revert userSpecified network setup */ config.setState(State.Allocated); } - if (userSpecified == null) { - return config; - } - if ((userSpecified.getIp6Cidr() == null && userSpecified.getIp6Gateway() != null) || - (userSpecified.getIp6Cidr() != null && userSpecified.getIp6Gateway() == null)) { - throw new InvalidParameterValueException("ip6gateway and ip6cidr must be specified together."); - } - if (userSpecified.getIp6Cidr() != null) { - config.setIp6Cidr(userSpecified.getIp6Cidr()); - config.setIp6Gateway(userSpecified.getIp6Gateway()); - } - if (userSpecified.getRouterIpv6() != null) { - config.setRouterIpv6(userSpecified.getRouterIpv6()); - } - - return config; + return updateNetworkDesignForIPv6IfNeeded(config, userSpecified); } @Override diff --git a/server/src/main/java/com/cloud/network/guru/GuestNetworkGuru.java b/server/src/main/java/com/cloud/network/guru/GuestNetworkGuru.java index ff9303db34b..137d1e7268b 100644 --- a/server/src/main/java/com/cloud/network/guru/GuestNetworkGuru.java +++ b/server/src/main/java/com/cloud/network/guru/GuestNetworkGuru.java @@ -545,4 +545,22 @@ public abstract class GuestNetworkGuru extends AdapterBase implements NetworkGur public ConfigKey[] getConfigKeys() { return new ConfigKey[]{UseSystemGuestVlans}; } + + public Network updateNetworkDesignForIPv6IfNeeded(NetworkVO network, Network userSpecified) { + if (userSpecified == null) { + return network; + } + if ((userSpecified.getIp6Cidr() == null && userSpecified.getIp6Gateway() != null) || + (userSpecified.getIp6Cidr() != null && userSpecified.getIp6Gateway() == null)) { + throw new InvalidParameterValueException("ip6gateway and ip6cidr must be specified together."); + } + if (userSpecified.getIp6Cidr() != null) { + network.setIp6Cidr(userSpecified.getIp6Cidr()); + network.setIp6Gateway(userSpecified.getIp6Gateway()); + } + if (userSpecified.getRouterIpv6() != null) { + network.setRouterIpv6(userSpecified.getRouterIpv6()); + } + return network; + } } From 54a7a5d7e1def8faa72763ee103c8c16652ea3ae Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Thu, 7 Sep 2023 08:49:06 +0200 Subject: [PATCH 7/7] utils: rename cloud-utils-*-SHADED.jar to cloud-utils-*-bundled.jar to fix the build error on MacOS (#7944) This fixes the build error of cloud-utils on MacOS ``` [ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.0.0:shade (rebuild-war) on project cloud-utils: Error creating shaded jar: Could not replace original artifact with shaded artifact!: /Users/nicolas/cloudstack/utils/target/cloud-utils-4.19.0.0-SNAPSHOT-shaded.jar (No such file or directory) -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR] mvn -rf :cloud-utils ``` --- debian/rules | 2 +- packaging/centos7/cloud.spec | 2 +- packaging/centos8/cloud.spec | 2 +- utils/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/rules b/debian/rules index 2f160cc5c24..2d07c5e5728 100755 --- a/debian/rules +++ b/debian/rules @@ -135,7 +135,7 @@ override_dh_auto_install: install -D systemvm/dist/* $(DESTDIR)/usr/share/$(PACKAGE)-common/vms/ # We need jasypt for cloud-install-sys-tmplt, so this is a nasty hack to get it into the right place install -D agent/target/dependencies/jasypt-1.9.3.jar $(DESTDIR)/usr/share/$(PACKAGE)-common/lib - install -D utils/target/cloud-utils-$(VERSION)-SHADED.jar $(DESTDIR)/usr/share/$(PACKAGE)-common/lib/$(PACKAGE)-utils.jar + install -D utils/target/cloud-utils-$(VERSION)-bundled.jar $(DESTDIR)/usr/share/$(PACKAGE)-common/lib/$(PACKAGE)-utils.jar # cloudstack-python mkdir -p $(DESTDIR)/usr/share/pyshared diff --git a/packaging/centos7/cloud.spec b/packaging/centos7/cloud.spec index e498fed25a1..0fe1a81a6cf 100644 --- a/packaging/centos7/cloud.spec +++ b/packaging/centos7/cloud.spec @@ -302,7 +302,7 @@ ln -sf log4j-cloud.xml ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/management/log4j install python/bindir/cloud-external-ipallocator.py ${RPM_BUILD_ROOT}%{_bindir}/%{name}-external-ipallocator.py install -D client/target/pythonlibs/jasypt-1.9.3.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-common/lib/jasypt-1.9.3.jar -install -D utils/target/cloud-utils-%{_maventag}-SHADED.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-common/lib/%{name}-utils.jar +install -D utils/target/cloud-utils-%{_maventag}-bundled.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-common/lib/%{name}-utils.jar install -D packaging/centos7/cloud-ipallocator.rc ${RPM_BUILD_ROOT}%{_initrddir}/%{name}-ipallocator install -D packaging/centos7/cloud.limits ${RPM_BUILD_ROOT}%{_sysconfdir}/security/limits.d/cloud diff --git a/packaging/centos8/cloud.spec b/packaging/centos8/cloud.spec index 57b16543ba8..ce425d38165 100644 --- a/packaging/centos8/cloud.spec +++ b/packaging/centos8/cloud.spec @@ -284,7 +284,7 @@ ln -sf log4j-cloud.xml ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/management/log4j install python/bindir/cloud-external-ipallocator.py ${RPM_BUILD_ROOT}%{_bindir}/%{name}-external-ipallocator.py install -D client/target/pythonlibs/jasypt-1.9.3.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-common/lib/jasypt-1.9.3.jar -install -D utils/target/cloud-utils-%{_maventag}-SHADED.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-common/lib/%{name}-utils.jar +install -D utils/target/cloud-utils-%{_maventag}-bundled.jar ${RPM_BUILD_ROOT}%{_datadir}/%{name}-common/lib/%{name}-utils.jar install -D packaging/centos8/cloud-ipallocator.rc ${RPM_BUILD_ROOT}%{_initrddir}/%{name}-ipallocator install -D packaging/centos8/cloud.limits ${RPM_BUILD_ROOT}%{_sysconfdir}/security/limits.d/cloud diff --git a/utils/pom.xml b/utils/pom.xml index c65de9cb901..39ab96b8bef 100755 --- a/utils/pom.xml +++ b/utils/pom.xml @@ -261,7 +261,7 @@ shade - ${project.artifactId}-${project.version}-SHADED + ${project.artifactId}-${project.version}-bundled false