Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions build/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,11 @@
<artifactId>hostNetworkInterface</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.zstack</groupId>
<artifactId>physicalServer</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.zstack</groupId>
<artifactId>ovn</artifactId>
Expand Down Expand Up @@ -977,6 +982,11 @@
<artifactId>hostNetworkInterface</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.zstack</groupId>
<artifactId>physicalServer</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.zstack</groupId>
<artifactId>observabilityServer</artifactId>
Expand Down
85 changes: 85 additions & 0 deletions conf/db/upgrade/V5.5.38__schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,88 @@ CREATE TABLE IF NOT EXISTS `zstack`.`SnmpEngineVO` (
`lastOpDate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `zstack`.`PhysicalServerVO` (
`uuid` varchar(32) NOT NULL,
`zoneUuid` varchar(32) DEFAULT NULL,
`serialNumber` varchar(255) NOT NULL,
`createDate` timestamp NOT NULL DEFAULT '2000-01-01 00:00:00',
`lastOpDate` timestamp NOT NULL DEFAULT '2000-01-01 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`uuid`),
UNIQUE KEY `ukPhysicalServerSerialNumber` (`serialNumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `zstack`.`PhysicalServerResourceAssignmentVO` (
`uuid` varchar(32) NOT NULL,
`serverUuid` varchar(32) NOT NULL,
`roleType` varchar(64) NOT NULL,
`cpuSet` varchar(4096) NOT NULL DEFAULT '',
`memory` bigint unsigned DEFAULT NULL,
`state` varchar(32) NOT NULL,
`createDate` timestamp NOT NULL DEFAULT '2000-01-01 00:00:00',
`lastOpDate` timestamp NOT NULL DEFAULT '2000-01-01 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`uuid`),
UNIQUE KEY `ukPhysicalServerResourceAssignment` (`serverUuid`, `roleType`),
CONSTRAINT `fkPhysicalServerResourceAssignmentServerUuid`
FOREIGN KEY (`serverUuid`) REFERENCES `zstack`.`PhysicalServerVO` (`uuid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CALL ADD_COLUMN('HostEO', 'serverUuid', 'VARCHAR(32)', 1, NULL);
CALL ADD_COLUMN('ManagementNodeVO', 'serverUuid', 'VARCHAR(32)', 1, NULL);

UPDATE `zstack`.`HostEO`
SET `serverUuid` = NULL
WHERE `deleted` IS NOT NULL AND `serverUuid` IS NOT NULL;

DROP PROCEDURE IF EXISTS addPhysicalServerIdentityUniqueKeys;
DELIMITER $$
CREATE PROCEDURE addPhysicalServerIdentityUniqueKeys()
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.statistics
WHERE table_schema = 'zstack'
AND table_name = 'HostEO'
AND index_name = 'ukHostEOServerUuid'
) THEN
ALTER TABLE `zstack`.`HostEO`
ADD UNIQUE KEY `ukHostEOServerUuid` (`serverUuid`);
END IF;

IF NOT EXISTS (
SELECT 1 FROM information_schema.statistics
WHERE table_schema = 'zstack'
AND table_name = 'ManagementNodeVO'
AND index_name = 'ukManagementNodeVOServerUuid'
) THEN
ALTER TABLE `zstack`.`ManagementNodeVO`
ADD UNIQUE KEY `ukManagementNodeVOServerUuid` (`serverUuid`);
END IF;
END $$
DELIMITER ;
CALL addPhysicalServerIdentityUniqueKeys();
DROP PROCEDURE IF EXISTS addPhysicalServerIdentityUniqueKeys;

CALL ADD_CONSTRAINT(
'HostEO',
'fkHostEOServerUuid',
'serverUuid',
'PhysicalServerVO',
'uuid',
'SET NULL'
);

DROP VIEW IF EXISTS `zstack`.`HostVO`;
CREATE VIEW `zstack`.`HostVO` AS
SELECT uuid, zoneUuid, clusterUuid, name, description, managementIp, hypervisorType,
state, status, createDate, lastOpDate, architecture, serverUuid
FROM `zstack`.`HostEO`
WHERE deleted IS NULL;

CALL ADD_CONSTRAINT(
'ManagementNodeVO',
'fkManagementNodeVOServerUuid',
'serverUuid',
'PhysicalServerVO',
'uuid',
'SET NULL'
);
2 changes: 2 additions & 0 deletions conf/persistence.xml
Original file line number Diff line number Diff line change
Expand Up @@ -229,5 +229,7 @@
<class>org.zstack.network.hostNetworkInterface.PhysicalSwitchVO</class>
<class>org.zstack.network.hostNetworkInterface.PhysicalSwitchPortVO</class>
<class>org.zstack.header.core.external.service.ExternalServiceConfigurationVO</class>
<class>org.zstack.physicalserver.PhysicalServerVO</class>
<class>org.zstack.physicalserver.PhysicalServerResourceAssignmentVO</class>
</persistence-unit>
</persistence>
27 changes: 27 additions & 0 deletions conf/serviceConfig/physicalServer.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<service xmlns="http://zstack.org/schema/zstack">
<id>physicalServer</id>
<interceptor>PhysicalServerApiInterceptor</interceptor>

<message>
<name>org.zstack.physicalserver.APIQueryPhysicalServerMsg</name>
<serviceId>query</serviceId>
</message>

<message>
<name>org.zstack.physicalserver.APIQueryPhysicalServerResourceAssignmentMsg</name>
<serviceId>query</serviceId>
</message>

<message>
<name>org.zstack.physicalserver.APIGetPhysicalServerManagedServicesMsg</name>
</message>

<message>
<name>org.zstack.physicalserver.APIUpdatePhysicalServerResourceAssignmentMsg</name>
</message>

<message>
<name>org.zstack.physicalserver.APIRefreshPhysicalServerResourceAssignmentsMsg</name>
</message>
</service>
2 changes: 1 addition & 1 deletion conf/springConfigXml/HostManager.xml
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,4 @@
</zstack:plugin>
</bean>

</beans>
</beans>
18 changes: 18 additions & 0 deletions conf/springConfigXml/Kvm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,24 @@
</zstack:plugin>
</bean>

<bean id="KvmPhysicalServerAdapter" class="org.zstack.kvm.KvmPhysicalServerAdapter">
<zstack:plugin>
<zstack:extension interface="org.zstack.header.Component" />
<zstack:extension interface="org.zstack.compute.host.PostHostConnectExtensionPoint" />
<zstack:extension interface="org.zstack.header.host.HostAfterConnectedExtensionPoint" />
<zstack:extension interface="org.zstack.header.host.HostDeleteExtensionPoint" />
<zstack:extension interface="org.zstack.header.managementnode.ManagementNodeReadyExtensionPoint" />
<zstack:extension interface="org.zstack.header.physicalserver.PhysicalServerResourceControlAdapter" />
</zstack:plugin>
</bean>

<bean id="KvmPhysicalServerResourceCascadeExtension"
class="org.zstack.kvm.KvmPhysicalServerResourceCascadeExtension">
<zstack:plugin>
<zstack:extension interface="org.zstack.core.cascade.CascadeExtensionPoint" />
</zstack:plugin>
</bean>

<bean id="KVMApiInterceptor" class="org.zstack.kvm.KVMApiInterceptor">
<zstack:plugin>
<zstack:extension interface="org.zstack.header.apimediator.ApiMessageInterceptor"/>
Expand Down
14 changes: 14 additions & 0 deletions conf/springConfigXml/ManagementNodeManager.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,18 @@
<zstack:extension interface="org.zstack.header.vo.FindSameNodeExtensionPoint"/>
</zstack:plugin>
</bean>

<bean id="LocalCpuTopologyCollector" class="org.zstack.portal.managementnode.LocalCpuTopologyCollector" />
<bean id="LocalResourceControlExecutor" class="org.zstack.portal.managementnode.LocalResourceControlExecutor" />

<bean id="ManagementNodePhysicalServerAdapter"
class="org.zstack.portal.managementnode.ManagementNodePhysicalServerAdapter">
<zstack:plugin>
<zstack:extension interface="org.zstack.header.Component" />
<zstack:extension interface="org.zstack.header.Service" />
<zstack:extension interface="org.zstack.header.managementnode.ManagementNodeChangeListener" />
<zstack:extension interface="org.zstack.header.managementnode.ManagementNodeReadyExtensionPoint" />
<zstack:extension interface="org.zstack.header.physicalserver.PhysicalServerResourceControlAdapter" />
</zstack:plugin>
</bean>
</beans>
41 changes: 41 additions & 0 deletions conf/springConfigXml/physicalServer.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:zstack="http://zstack.org/schema/zstack"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://zstack.org/schema/zstack
http://zstack.org/schema/zstack/plugin.xsd"
default-init-method="init" default-destroy-method="destroy">

<bean id="PhysicalServerAssignmentRepository"
class="org.zstack.physicalserver.PhysicalServerAssignmentRepository"/>

<bean id="PhysicalServerIdentityService"
class="org.zstack.physicalserver.PhysicalServerIdentityService"/>

<bean id="PhysicalServerCpuPlanner"
class="org.zstack.physicalserver.PhysicalServerCpuPlanner"/>

<bean id="PhysicalServerResourceAssignmentReconciler"
class="org.zstack.physicalserver.PhysicalServerResourceAssignmentReconciler"/>

<bean id="PhysicalServerResourceControlReconciler"
class="org.zstack.physicalserver.PhysicalServerResourceControlReconciler"/>

<bean id="PhysicalServerManager" class="org.zstack.physicalserver.PhysicalServerManagerImpl">
<zstack:plugin>
<zstack:extension interface="org.zstack.header.Component"/>
<zstack:extension interface="org.zstack.header.Service"/>
<zstack:extension interface="org.zstack.header.managementnode.ManagementNodeReadyExtensionPoint"/>
<zstack:extension interface="org.zstack.header.physicalserver.PhysicalServerManager"/>
</zstack:plugin>
</bean>

<bean id="PhysicalServerApiInterceptor"
class="org.zstack.physicalserver.PhysicalServerApiInterceptor">
<zstack:plugin>
<zstack:extension interface="org.zstack.header.apimediator.ApiMessageInterceptor"/>
</zstack:plugin>
</bean>
</beans>
28 changes: 28 additions & 0 deletions conf/springConfigXml/zbs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,32 @@
<zstack:extension interface="org.zstack.header.Component" />
</zstack:plugin>
</bean>

<bean id="ZbsNodeRefContributor" class="org.zstack.storage.zbs.ZbsNodeRefContributorImpl">
<zstack:plugin>
<zstack:extension interface="org.zstack.storage.zbs.ZbsNodeRefContributor" />
</zstack:plugin>
</bean>

<bean id="FakeZbsCpuIsolationProvider"
class="org.zstack.storage.zbs.FakeZbsCpuIsolationProvider">
<zstack:plugin>
<zstack:extension interface="org.zstack.storage.zbs.ZbsCpuIsolationProvider" />
</zstack:plugin>
</bean>

<bean id="ZbsResourceAssignmentBackend"
class="org.zstack.storage.zbs.ZbsResourceAssignmentBackend">
<zstack:plugin>
<zstack:extension interface="org.zstack.header.physicalserver.PhysicalServerResourceControlAdapter" />
</zstack:plugin>
</bean>

<bean id="ZbsCpuIsolationCascadeExtension"
class="org.zstack.storage.zbs.ZbsCpuIsolationCascadeExtension">
<zstack:plugin>
<zstack:extension interface="org.zstack.header.Component" />
<zstack:extension interface="org.zstack.core.cascade.CascadeExtensionPoint" />
</zstack:plugin>
</bean>
</beans>
1 change: 1 addition & 0 deletions conf/zstack.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
<import resource="springConfigXml/iscsi.xml"/>
<import resource="springConfigXml/expon.xml"/>
<import resource="springConfigXml/zbs.xml"/>
<import resource="springConfigXml/physicalServer.xml"/>
<import resource="springConfigXml/cbd.xml"/>
<import resource="springConfigXml/xinfini.xml"/>
<import resource="springConfigXml/ExternalPrimaryStorage.xml"/>
Expand Down
14 changes: 14 additions & 0 deletions core/src/main/java/org/zstack/core/Platform.java
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,10 @@ public class Platform {
};
private static final List<String> UNUSABLE_MACHINE_IDENTITIES = Arrays.asList(
"none",
"n/a",
"unknown",
"not specified",
"to be filled",
"to be filled by o.e.m.",
"to be filled by oem",
"default string",
Expand Down Expand Up @@ -896,6 +898,18 @@ private static String getManagementServerFingerprint() {
return MANAGEMENT_SERVER_FINGERPRINT_ALGORITHM + DigestUtils.sha256Hex(StringUtils.join(identities, "\n"));
}

public static String getManagementServerSerialNumber() {
String serialNumber = normalizeMachineSerialNumber(
readMachineIdentity("/sys/class/dmi/id/product_serial"));
return serialNumber == null
? normalizeMachineSerialNumber(readDmiMachineIdentity("system-serial-number"))
: serialNumber;
}

public static String normalizeMachineSerialNumber(String serialNumber) {
return normalizeMachineIdentity(serialNumber);
}

private static String readMachineIdentity(String path) {
File file = new File(path);
if (!file.isFile() || !file.canRead()) {
Expand Down
11 changes: 11 additions & 0 deletions header/src/main/java/org/zstack/header/host/HostAO.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ public class HostAO extends ResourceVO {
@Column
private String architecture;

@Column
private String serverUuid;

@Column
@Enumerated(EnumType.STRING)
private HostState state;
Expand Down Expand Up @@ -146,4 +149,12 @@ public String getArchitecture() {
public void setArchitecture(String architecture) {
this.architecture = architecture;
}

public String getServerUuid() {
return serverUuid;
}

public void setServerUuid(String serverUuid) {
this.serverUuid = serverUuid;
}
}
1 change: 1 addition & 0 deletions header/src/main/java/org/zstack/header/host/HostAO_.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,5 @@ public class HostAO_ extends ResourceVO_ {
public static volatile SingularAttribute<HostAO, Timestamp> createDate;
public static volatile SingularAttribute<HostAO, Timestamp> lastOpDate;
public static volatile SingularAttribute<HostAO, String> architecture;
public static volatile SingularAttribute<HostAO, String> serverUuid;
}
11 changes: 11 additions & 0 deletions header/src/main/java/org/zstack/header/host/HostInventory.java
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,8 @@ public class HostInventory implements Serializable {

private String architecture;

private String serverUuid;

/**
* @desc the time this resource gets created
*/
Expand All @@ -207,6 +209,7 @@ protected HostInventory(HostVO vo) {
this.setZoneUuid(vo.getZoneUuid());
this.setClusterUuid(vo.getClusterUuid());
this.setArchitecture(vo.getArchitecture());
this.setServerUuid(vo.getServerUuid());
if (vo.getCapacity() != null) {
this.setTotalCpuCapacity(vo.getCapacity().getTotalCpu());
this.setAvailableCpuCapacity(vo.getCapacity().getAvailableCpu());
Expand Down Expand Up @@ -395,6 +398,14 @@ public void setArchitecture(String architecture) {
this.architecture = architecture;
}

public String getServerUuid() {
return serverUuid;
}

public void setServerUuid(String serverUuid) {
this.serverUuid = serverUuid;
}

public String getIpmiAddress() {
return ipmiAddress;
}
Expand Down
Loading