]>
git.proxmox.com Git - qemu-defaults.git/blob - PVE/QemuDefaults.pm
1 package PVE
::QemuDefaults
;
7 use PVE
::Tools
qw(run_command);
8 use PVE
::JSONSchema
qw(get_standard_option);
9 use PVE
::Cluster
qw(cfs_register_file);
14 use base
qw(PVE::SectionConfig);
16 #cfs_register_file('qemu-defaults.cfg',
17 # sub { __PACKAGE__->parse_config(@_); },
18 # sub { __PACKAGE__->write_config(@_); });
20 # fixme: remove this, use cfs_register_file above
22 #my $filename = "/etc/pve/qemu-defaults.cfg";
23 my $filename = "./qemu-defaults.cfg";
24 my $raw = PVE
::Tools
::file_get_contents
($filename);
25 return __PACKAGE__-
>parse_config($filename, $raw);
31 description
=> "Section type.",
35 description
=> "User Group.",
36 type
=> 'string', format
=> 'pve-groupid',
45 sub parse_section_header
{
46 my ($class, $line) = @_;
48 if ($line =~ m/^((qm|storage):([^\s\:\@]*)(:([^\s\:\@]+))?)(\s+\@(\S+))?$/) {
49 my ($sid, $type, $pool, $subid, $group) = ($1, $2, $3, $5, $7);
50 my $errmsg = undef; # set if you want to skip whole section
51 my $config = {}; # to return additional attributes
52 $sid = "$sid\@$group" if defined($group);
56 __PACKAGE__-
>check_value($type, 'ostype', $subid, $sid);
57 $config->{ostype
} = $subid;
60 } elsif ($type eq 'storage') {
62 PVE
::JSONSchema
::parse_storage_id
($subid);
63 $config->{storage
} = $subid;
67 __PACKAGE__-
>check_value($type, 'group', $group, $sid);
68 $config->{group
} = $group;
72 $config->{pool
} = $pool if $pool;
73 return ($type, $sid, $errmsg, $config);
79 my ($class, $filename, $raw) = @_;
81 my $cfg = $class->SUPER::parse_config
($filename, $raw);
86 package PVE
::QemuDefaults
::qm
;
88 use PVE
::JSONSchema
qw(get_standard_option);
89 use base
qw(PVE::QemuDefaults);
91 my $option_list = ['ostype', 'memory', 'sockets', 'cores'];
100 description
=> "VM pool.",
101 type
=> 'string', format
=> 'pve-poolid',
105 foreach my $k (@$option_list) {
106 $props->{$k} = get_standard_option
("pve-qm-$k");
114 group
=> { optional
=> 1 },
115 pool
=> { optional
=> 1 },
118 foreach my $k (@$option_list) {
119 $opts->{$k} = { optional
=> 1 };
125 __PACKAGE__-
>register();
127 package PVE
::QemuDefaults
::storage
;
129 use PVE
::JSONSchema
qw(get_standard_option);
130 use base
qw(PVE::QemuDefaults);
138 storage
=> get_standard_option
('pve-storage-id'),
144 group
=> { optional
=> 1 },
145 pool
=> { optional
=> 1 },
146 storage
=> { optional
=> 1 },
150 __PACKAGE__-
>register();
153 PVE
::QemuDefaults-
>init();