Class: Yast::AutoinstClassClass
- Inherits:
-
Module
- Object
- Module
- Yast::AutoinstClassClass
- Includes:
- Logger
- Defined in:
- ../../src/modules/AutoinstClass.rb
Constant Summary
- MERGE_XSLT_PATH =
"/usr/share/autoinstall/xslt/merge.xslt"
Instance Method Summary (collapse)
-
- (Object) AutoinstClass
Constructor.
-
- (String) class_dir=(newdir)
Changes the directory of classes definitions.
-
- (Object) classDirChanged(newdir)
Changes the directory and reads the class definitions.
-
- (Object) Compat
we are doing some compatibility fixes here and move from one /etc/autoinstall/classes.xml to multiple classes.xml files, one for each repository.
-
- (Array<Hash>) Export
Exports configuration.
-
- (void) Files
Reads files from class directories.
-
- (String) findPath(name, class_)
Finds a profile path.
-
- (Object) Import(settings)
Imports configuration.
- - (Object) main
-
- (Object) MergeClasses(configuration, base_profile, resultFileName)
Merge classes.
-
- (Object) Read
Reads classes.
-
- (Object) Save
Saves classes definitions.
-
- (String) Summary
Builds the configuration summary.
Instance Method Details
- (Object) AutoinstClass
Constructor
107 108 109 110 111 112 |
# File '../../src/modules/AutoinstClass.rb', line 107 def AutoinstClass classSetup Compat() Read() nil end |
- (String) class_dir=(newdir)
Changes the directory of classes definitions.
AutoinstConfig#classDir= is called to set the new value in the configuration. It does not check if the directory exists or is accessible.
97 98 99 100 101 102 |
# File '../../src/modules/AutoinstClass.rb', line 97 def class_dir=(newdir) AutoinstConfig.classDir = newdir @classDir = newdir @classPath = File.join(@classDir, @class_file) newdir end |
- (Object) classDirChanged(newdir)
Changes the directory and reads the class definitions
83 84 85 86 87 88 |
# File '../../src/modules/AutoinstClass.rb', line 83 def classDirChanged(newdir) self.class_dir = newdir Compat() Read() nil end |
- (Object) Compat
we are doing some compatibility fixes here and move from one /etc/autoinstall/classes.xml to multiple classes.xml files, one for each repository
68 69 70 71 72 73 74 75 76 |
# File '../../src/modules/AutoinstClass.rb', line 68 def Compat if !class_file_exists? && compat_class_file_exists? log.info "Compat: #{@classPath} not found but #{compat_class_file} exists" new_classes_map = { "classes" => read_old_classes } log.info "creating #{new_classes_map}" XML.YCPToXMLFile(:class, new_classes_map, @classPath) end nil end |
- (Array<Hash>) Export
Exports configuration
177 178 179 |
# File '../../src/modules/AutoinstClass.rb', line 177 def Export deep_copy(@profile_conf) end |
- (void) Files
This method returns an undefined value.
Reads files from class directories
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File '../../src/modules/AutoinstClass.rb', line 135 def Files @confs = [] @Classes.each do |class_| class_name_ = class_["name"] || "xxx" files_path = File.join(@classDir, class_name_) files = Convert.convert(SCR.Read(path(".target.dir"), files_path), :from => "any", :to => "list <string>") next if files.nil? log.info "Files in class #{class_name_}: #{files}" new_confs = files.map { |f| { "class" => class_name_, "name" => f } } log.info "Configurations: #{new_confs}" @confs.concat(new_confs) end log.info "Configurations: #{@confs}" nil end |
- (String) findPath(name, class_)
Finds a profile path
47 48 49 50 51 |
# File '../../src/modules/AutoinstClass.rb', line 47 def findPath(name, class_) result = @confs.find { |c| c["name"] == name && c["class"] == class_ } result ||= { "class" => "", "name" => "default" } File.join(@classDir, result["class"], result["name"]) end |
- (Object) Import(settings)
Imports configuration
170 171 172 173 |
# File '../../src/modules/AutoinstClass.rb', line 170 def Import(settings) @profile_conf = deep_copy(settings) true end |
- (Object) main
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File '../../src/modules/AutoinstClass.rb', line 24 def main Yast.import "AutoinstConfig" Yast.import "XML" Yast.import "Summary" Yast.include self, "autoinstall/xml.rb" @classDir = AutoinstConfig.classDir @ClassConf = "/etc/autoinstall" @profile_conf = [] @Profiles = [] @Classes = [] @deletedClasses = [] @confs = [] @class_file = "classes.xml" @classPath = File.join(@classDir, @class_file) AutoinstClass() end |
- (Object) MergeClasses(configuration, base_profile, resultFileName)
Merge classes
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File '../../src/modules/AutoinstClass.rb', line 116 def MergeClasses(configuration, base_profile, resultFileName) dontmerge_str = "" AutoinstConfig.dontmerge.each_with_index do |dm, i| dontmerge_str << " --param dontmerge#{i+1} \"'#{dm}'\" " end merge_command = "/usr/bin/xsltproc --novalid --param replace \"'false'\" #{dontmerge_str} --param with " \ "\"'#{findPath(configuration["name"], configuration["class"])}'\" " \ "--output #{File.join(AutoinstConfig.tmpDir, resultFileName)} " \ "#{MERGE_XSLT_PATH} #{base_profile} " out = SCR.Execute(path(".target.bash_output"), merge_command, {}) log.info "Merge command: #{merge_command}" log.info "Merge stdout: #{out["stdout"]}, stderr: #{out["stderr"]}" out end |
- (Object) Read
Reads classes
54 55 56 57 58 59 60 61 62 63 |
# File '../../src/modules/AutoinstClass.rb', line 54 def Read if SCR.Read(path(".target.size"), @classPath) != -1 # TODO: use XML module classes_map = Convert.to_map(SCR.Read(path(".xml"), @classPath)) @Classes = (classes_map && classes_map["classes"]) || [] else @Classes = [] end nil end |
- (Object) Save
Saves classes definitions
155 156 157 158 159 160 161 162 163 164 |
# File '../../src/modules/AutoinstClass.rb', line 155 def Save @deletedClasses.each do |c| to_del = "/bin/rm -rf #{File.join(AutoinstConfig.classDir, c)}" SCR.Execute(path(".target.bash"), to_del) end @deletedClasses = [] tmp = { "classes" => @Classes } log.debug "saving classes: #{@classPath}" XML.YCPToXMLFile(:class, tmp, @classPath) end |
- (String) Summary
Builds the configuration summary
183 184 185 186 187 188 189 190 |
# File '../../src/modules/AutoinstClass.rb', line 183 def Summary summary = "" @profile_conf.each do |conf| summary = Summary.AddHeader(summary, conf["class_name"] || "None") summary = Summary.AddLine(summary, conf["configuration"] || "None") end summary.empty? ? Summary.NotConfigured : summary end |