]> git.proxmox.com Git - pve-network.git/blob - PVE/Network/SDN/Vnets.pm
sdn: use .version and global lock
[pve-network.git] / PVE / Network / SDN / Vnets.pm
1 package PVE::Network::SDN::Vnets;
2
3 use strict;
4 use warnings;
5
6 use PVE::Cluster qw(cfs_read_file cfs_write_file cfs_lock_file);
7
8
9 use PVE::Network::SDN::VnetPlugin;
10 PVE::Network::SDN::VnetPlugin->register();
11 PVE::Network::SDN::VnetPlugin->init();
12
13 sub sdn_vnets_config {
14 my ($cfg, $id, $noerr) = @_;
15
16 die "no sdn vnet ID specified\n" if !$id;
17
18 my $scfg = $cfg->{ids}->{$id};
19 die "sdn vnet '$id' does not exist\n" if (!$noerr && !$scfg);
20
21 return $scfg;
22 }
23
24 sub config {
25 my $config = cfs_read_file("sdn/vnets.cfg");
26 }
27
28 sub write_config {
29 my ($cfg) = @_;
30
31 cfs_write_file("sdn/vnets.cfg", $cfg);
32 }
33
34 sub sdn_vnets_ids {
35 my ($cfg) = @_;
36
37 return keys %{$cfg->{ids}};
38 }
39
40 sub complete_sdn_vnet {
41 my ($cmdname, $pname, $cvalue) = @_;
42
43 my $cfg = PVE::Network::SDN::Vnets::config();
44
45 return $cmdname eq 'add' ? [] : [ PVE::Network::SDN::Vnets::sdn_vnet_ids($cfg) ];
46 }
47
48 sub get_vnet {
49 my ($vnetid) = @_;
50
51 my $cfg = PVE::Network::SDN::Vnets::config();
52 my $vnet = PVE::Network::SDN::Vnets::sdn_vnets_config($cfg, $vnetid, 1);
53 return $vnet;
54 }
55
56 1;