Преглед на файлове

update mgr/machine/kvm module

reghao преди 11 месеца
родител
ревизия
b7e6810bda

+ 6 - 1
mgr/src/main/java/cn/reghao/devops/mgr/mgr/machine/controller/page/MachineHostPageController.java

@@ -3,6 +3,7 @@ package cn.reghao.devops.mgr.mgr.machine.controller.page;
 import cn.reghao.devops.common.util.KeyValue;
 import cn.reghao.devops.mgr.mgr.machine.db.query.MachineQuery;
 import cn.reghao.devops.mgr.mgr.machine.model.po.MachineInfo;
+import cn.reghao.devops.mgr.mgr.machine.kvm.VirtualHost;
 import cn.reghao.devops.mgr.util.DefaultSetting;
 import cn.reghao.devops.mgr.util.PageSort;
 import cn.reghao.devops.mgr.mgr.build.model.constant.EnvType;
@@ -16,6 +17,7 @@ import cn.reghao.devops.mgr.mgr.machine.util.Keys;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.libvirt.Domain;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -39,9 +41,11 @@ import java.util.stream.Collectors;
 @RequestMapping("/machine/host")
 public class MachineHostPageController {
     private final MachineQuery machineQuery;
+    private final VirtualHost virtualHost;
 
-    public MachineHostPageController(MachineQuery machineQuery) {
+    public MachineHostPageController(MachineQuery machineQuery, VirtualHost virtualHost) {
         this.machineQuery = machineQuery;
+        this.virtualHost = virtualHost;
     }
 
     @ApiOperation(value = "机器节点页面", notes = "N")
@@ -62,6 +66,7 @@ public class MachineHostPageController {
         } else {
             page = machineQuery.getMachineHostByPage(env, pageRequest);
         }
+        //List<String> list = virtualHost.listDomain();
 
         model.addAttribute("env", env);
         model.addAttribute("page", page);

+ 1 - 1
mgr/src/main/java/cn/reghao/devops/mgr/mgr/vm/Network.java → mgr/src/main/java/cn/reghao/devops/mgr/mgr/machine/kvm/Network.java

@@ -1,4 +1,4 @@
-package cn.reghao.devops.mgr.mgr.vm;
+package cn.reghao.devops.mgr.mgr.machine.kvm;
 
 import org.libvirt.Connect;
 

+ 1 - 1
mgr/src/main/java/cn/reghao/devops/mgr/mgr/vm/Storage.java → mgr/src/main/java/cn/reghao/devops/mgr/mgr/machine/kvm/Storage.java

@@ -1,4 +1,4 @@
-package cn.reghao.devops.mgr.mgr.vm;
+package cn.reghao.devops.mgr.mgr.machine.kvm;
 
 import lombok.extern.slf4j.Slf4j;
 import org.dom4j.Document;

+ 108 - 0
mgr/src/main/java/cn/reghao/devops/mgr/mgr/machine/kvm/VirtualHost.java

@@ -0,0 +1,108 @@
+package cn.reghao.devops.mgr.mgr.machine.kvm;
+
+import lombok.extern.slf4j.Slf4j;
+import org.dom4j.Document;
+import org.dom4j.io.SAXReader;
+import org.libvirt.Connect;
+import org.libvirt.Domain;
+import org.libvirt.DomainInfo;
+import org.libvirt.LibvirtException;
+import org.springframework.stereotype.Service;
+
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 虚拟主机
+ *
+ * @author reghao
+ * @date 2020-10-28 18:48:52
+ */
+@Slf4j
+@Service
+public class VirtualHost {
+    private final String uri;
+
+    public VirtualHost() {
+        this.uri = "qemu:///system";
+    }
+
+    public Domain getDomain(String name) throws LibvirtException {
+        Connect conn = new Connect(uri, false);
+        Domain domain = conn.domainLookupByName(name);
+        return domain;
+    }
+
+    public void start(Domain domain) throws Exception {
+        domain.create();
+    }
+
+    public void restart(Domain domain) throws Exception {
+        domain.reboot(0);
+    }
+
+    public void stop(Domain domain) throws Exception {
+        domain.shutdown();
+    }
+
+    public Domain createDomain() throws Exception {
+        Connect conn = new Connect(uri, false);
+        String xml = "/home/reghao/data/os/vhost.xml";
+        Document doc = new SAXReader().read(new FileInputStream(xml));
+        return conn.domainDefineXML(doc.asXML());
+    }
+
+    public List<String> listDomain() {
+        List<String> list = new ArrayList<>();
+        try {
+            Connect conn = new Connect(uri, false);
+            String[] inactiveDomains = conn.listDefinedDomains();
+            for (String domainName : inactiveDomains) {
+                //list.add(conn.domainLookupByName(domainName));
+            }
+
+            int[] activeDomains = conn.listDomains();
+            for (int domainId : activeDomains) {
+                Domain domain = conn.domainLookupByID(domainId);
+                String name = domain.getName();
+                boolean autoStart = domain.getAutostart();
+                domain.getMaxVcpus();
+                domain.getVcpusInfo();
+                domain.getMaxMemory();
+                domain.memoryStats(1);
+                DomainInfo domainInfo = domain.getInfo();
+                String state = domainInfo.state.name();
+                list.add(domain.getName());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return list;
+    }
+
+    public static void main(String[] args) throws Exception {
+        VirtualHost vhost = new VirtualHost();
+        //Domain domain1 = vhost.createDomain();
+        List<String> domainNames = vhost.listDomain();
+        for (String name : domainNames) {
+            Domain domain = vhost.getDomain(name);
+            int active = domain.isActive();
+            if (active == 0) {
+                domain.create();
+                log.info("start {}", name);
+            } else {
+                //DomainInfo domainInfo = domain.getInfo();
+                domain.shutdown();
+                log.info("shutdown {}", name);
+            }
+            //domain.undefine();
+            //domain.free();
+
+            /*String xmlDesc = domain.getXMLDesc(0);
+            domain.detachDevice(xmlDesc);
+            domain.destroy();*/
+        }
+    }
+}

+ 0 - 85
mgr/src/main/java/cn/reghao/devops/mgr/mgr/vm/VirtualHost.java

@@ -1,85 +0,0 @@
-package cn.reghao.devops.mgr.mgr.vm;
-
-import lombok.extern.slf4j.Slf4j;
-import org.dom4j.Document;
-import org.dom4j.io.SAXReader;
-import org.libvirt.Connect;
-import org.libvirt.Domain;
-import org.libvirt.DomainInfo;
-
-import java.io.FileInputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 虚拟主机
- *
- * @author reghao
- * @date 2020-10-28 18:48:52
- */
-@Slf4j
-public class VirtualHost {
-    private final String uri;
-
-    public VirtualHost() {
-        this.uri = "qemu:///system";
-    }
-
-    public void start(Domain domain) throws Exception {
-        domain.create();
-    }
-
-    public void restart(Domain domain) throws Exception {
-        domain.reboot(0);
-    }
-
-    public void stop(Domain domain) throws Exception {
-        domain.shutdown();
-    }
-
-    public Domain createDomain() throws Exception {
-        Connect conn = new Connect(uri, false);
-        String xml = "/home/reghao/data/os/vhost.xml";
-        Document doc = new SAXReader().read(new FileInputStream(xml));
-        return conn.domainDefineXML(doc.asXML());
-    }
-
-    public List<Domain> listDomain() throws Exception {
-        Connect conn = new Connect(uri, false);
-        List<Domain> list = new ArrayList<>();
-        String[] domainNames = conn.listDefinedDomains();
-        for (String domainName : domainNames) {
-            list.add(conn.domainLookupByName(domainName));
-        }
-
-        int[] active = conn.listDomains();
-        for (int id : active) {
-            list.add(conn.domainLookupByID(id));
-        }
-        return list;
-    }
-
-    public static void main(String[] args) throws Exception {
-        VirtualHost vhost = new VirtualHost();
-        //Domain domain1 = vhost.createDomain();
-        List<Domain> domains = vhost.listDomain();
-        for (Domain domain : domains) {
-            String domainName = domain.getName();
-            DomainInfo domainInfo = domain.getInfo();
-            int active = domain.isActive();
-            if (active == 0) {
-                domain.create();
-                log.info("start {}", domainName);
-            } else {
-                //domain.shutdown();
-                log.info("shutdown {}", domainName);
-            }
-            //domain.undefine();
-            //domain.free();
-
-            /*String xmlDesc = domain.getXMLDesc(0);
-            domain.detachDevice(xmlDesc);
-            domain.destroy();*/
-        }
-    }
-}