Exemplo n.º 1
0
        public async Task CloneTemplate(HypervisorNode node, int templateId, int vmId, string srcNode = null)
        {
            var sourceNode = srcNode ?? HypervisorNode.Name;

            await LoginIfNotLoggedIn();
            await PerformRequest(() => client.Nodes[sourceNode].Qemu[templateId].Clone.CloneVm(vmId, target: node.Name));
        }
Exemplo n.º 2
0
        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            Badge.OnModelCreating(builder);
            User.OnModelCreating(builder);

            // module section
            Module.OnModelCreating(builder);
            Lab.OnModelCreating(builder);
            LabVm.OnModelCreating(builder);
            UserModule.OnModelCreating(builder);
            // user module section
            UserModule.OnModelCreating(builder);
            UserLab.OnModelCreating(builder);
            UserLabVm.OnModelCreating(builder);
            // hypervisor
            Hypervisor.OnModelCreating(builder);
            HypervisorNode.OnModelCreating(builder);
            // configure many to many relationship
            UserUserModule.OnModelCreating(builder);
            ContactEmail.OnModelCreating(builder);
            BridgeInstance.OnModelCreating(builder);
            VmInterfaceTemplate.OnModelCreating(builder);
            VmInterfaceInstance.OnModelCreating(builder);
            BridgeTemplate.OnModelCreating(builder);
            VmTemplate.OnModelCreating(builder);
        }
Exemplo n.º 3
0
        public async Task <int> CloneTemplate(HypervisorNode node, int vmId, string srcNode = null)
        {
            await LoginIfNotLoggedIn();

            var newVmId = await GetNextAvailableVmId();

            await CloneTemplate(node, vmId, newVmId);

            return(newVmId);
        }
Exemplo n.º 4
0
        public override async Task Run(AddHypervisorNodeOptions options)
        {
            var hypervisorNode = new HypervisorNode
            {
                Name         = options.Name,
                HypervisorId = options.HypervisorId
            };

            _context.HypervisorNodes.Add(hypervisorNode);
            await _context.SaveChangesAsync();

            System.Console.WriteLine("Added Hypervisor Node:");
            System.Console.WriteLine(JsonConvert.SerializeObject(hypervisorNode));
        }
Exemplo n.º 5
0
        public void Setup()
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json", false, true);

            IConfiguration configuration = builder.Build();
            var            apiSection    = configuration.GetSection("Api");

            _hypervisorNode = new HypervisorNode
            {
                Name       = apiSection["Node"],
                Hypervisor = new Hypervisor
                {
                    Host     = apiSection["Host"],
                    UserName = apiSection["Username"],
                    Password = apiSection["Password"]
                }
            };
            _vmId  = int.Parse(apiSection["VmId"]);
            client = new ProxmoxApi(_hypervisorNode, apiSection["Password"]);
        }
Exemplo n.º 6
0
        public async Task <NodeStatus> GetNodeStatus(HypervisorNode node = null)
        {
            if (node == null)
            {
                node = HypervisorNode;
            }
            await LoginIfNotLoggedIn();

            var response = await PerformRequest(() => this.client.Nodes[node.Name].Status.Status());

            var data       = response.Response.data;
            var nodeStatus = new NodeStatus
            {
                CpuUsage    = data.cpu * 100,
                MemoryUsage = new MemoryUsage
                {
                    Free  = data.memory.free,
                    Used  = data.memory.used,
                    Total = data.memory.total
                }
            };

            return(nodeStatus);
        }
Exemplo n.º 7
0
        public ProxmoxApi GetProxmoxApi(HypervisorNode node)
        {
            var password = Cryptography.DecryptString(node.Hypervisor.Password, _encryptionKey);

            return(new ProxmoxApi(node, password));
        }
Exemplo n.º 8
0
 public HypervisorVmTemplate GetTemplateWithNode(HypervisorNode node)
 {
     return(VmTemplate.HypervisorVmTemplates.First(t => t.HypervisorNode == node));
 }
Exemplo n.º 9
0
 public ProxmoxApi(HypervisorNode hypervisorNode, string password)
 {
     client         = new PveClient(hypervisorNode.Hypervisor.Host);
     HypervisorNode = hypervisorNode;
     _password      = password;
 }
        public async Task LinkVmToBridgesAndAddInstances(UserLab userLab, UserLabVm vm, ProxmoxApi api, HypervisorNode node)
        {
            await LinkVmToBridges(userLab, vm, api, node);

            foreach (var templateInterface in vm.LabVm.TemplateInterfaces)
            {
                var bridge = userLab.BridgeInstances.First(b => b.BridgeTemplate == templateInterface.BridgeTemplate);
                vm.InterfaceInstances.Add(new VmInterfaceInstance
                {
                    BridgeInstance = bridge,
                    Template       = templateInterface
                });
            }
        }
 public async Task LinkVmToBridges(UserLab userLab, UserLabVm vm, ProxmoxApi api, HypervisorNode node)
 {
     foreach (var templateInterface in vm.LabVm.TemplateInterfaces)
     {
         var bridge = userLab.BridgeInstances.First(b => b.BridgeTemplate == templateInterface.BridgeTemplate);
         await api.AddBridgeToVm(vm.ProxmoxVmId, bridge.HypervisorInterfaceId, templateInterface.InterfaceNumber, node.Name);
     }
 }