ManagerConfig.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 # -*- coding: euc-jp -*-
3 
4 
16 
17 
18 import sys
19 import os
20 import re
21 import getopt
22 import platform
23 
24 import OpenRTM_aist
25 
26 
27 
83  """
84  """
85 
86 
92  config_file_path = ["./rtc.conf",
93  "/etc/rtc.conf",
94  "/etc/rtc/rtc.conf",
95  "/usr/local/etc/rtc.conf",
96  "/usr/local/etc/rtc/rtc.conf",
97  None]
98 
99 
100 
108  config_file_env = "RTC_MANAGER_CONFIG"
109 
110 
111 
131  def __init__(self, argv=None):
132 
133  self._configFile = ""
135  self._isMaster = False
136  if argv:
137  self.init(argv)
138 
139 
140 
169  def init(self, argv):
170  self.parseArgs(argv)
171  return
172 
173 
188  def configure(self, prop):
189  prop.setDefaults(OpenRTM_aist.default_config)
190  if self.findConfigFile():
191  try:
192  fd = file(self._configFile,"r")
193  prop.load(fd)
194  fd.close()
195  except:
196  print OpenRTM_aist.Logger.print_exception()
197 
198  self.setSystemInformation(prop)
199  if self._isMaster:
200  prop.setProperty("manager.is_master","YES")
201 
202  # Properties from arguments are marged finally
203  prop.mergeProperties(self._argprop)
204  return prop
205 
206 
207  #######
208  # @if jp
209  #
210  # @brief コンフィギュレーションを取得する(未実装)
211  #
212  # コンフィギュレーションを取得する。init()呼び出し前に呼ぶと、
213  # 静的に定義されたデフォルトのコンフィギュレーションを返す。
214  # init() 呼び出し後に呼ぶと、コマンドライン引数、環境変数等に # 基づいた初期化されたコンフィギュレーションを返す。 # # @else # # @brief Get configuration value. # # This operation returns default configuration statically defined, # when before calling init() function. When after calling init() function, # this operation returns initialized configuration value according to # command option, environment value and so on. # # @endif #def getConfig(self): #pass ## # @if jp # # @brief コマンド引数をパースする # # -f file : コンフィギュレーションファイルを指定する。<br> # -l module : ロードするモジュールを指定する。(未実装)<br> # -o options: その他オプションを指定する。<br> # -d : デフォルトのコンフィギュレーションを使う。<br> # # @param self # @param argv コマンドライン引数 # # @else # # @brief Parse command arguments # # -f file : Specify a configuration file. <br> # -l module : Specify modules to be loaded at the beginning. <br> # -o options: Other options. <br> # -d : Use default static configuration. <br> # # @endif def parseArgs(self, argv): try: opts, args = getopt.getopt(argv[1:], "adlf:o:p:") except getopt.GetoptError: print OpenRTM_aist.Logger.print_exception() return for opt, arg in opts: if opt == "-a": self._argprop.setProperty("manager.corba_servant","NO") if opt == "-f": self._configFile = arg if opt == "-l": pass if opt == "-o": pos = arg.find(":") if pos > 0: self._argprop.setProperty(arg[:pos],arg[pos+1:]) if opt == "-p": num = [-1] ret = OpenRTM_aist.stringTo(num, arg) if ret: arg_ = ":" + arg self._argprop.setProperty("corba.endpoints",arg_) if opt == "-d": self._isMaster = True pass return ## # @if jp # # @brief Configuration file の検索 # # Configuration file を検索し、設定する。 # 既に Configuration file が設定済みの場合は、ファイルの存在確認を行う。 # # Configuration file の優先順位
215  # 基づいた初期化されたコンフィギュレーションを返す。
216  #
217  # @else
218  #
219  # @brief Get configuration value.
220  #
221  # This operation returns default configuration statically defined,
222  # when before calling init() function. When after calling init() function,
223  # this operation returns initialized configuration value according to
224  # command option, environment value and so on.
225  #
226  # @endif
227  #def getConfig(self):
228  #pass
229 
230 
231 
254  def parseArgs(self, argv):
255  try:
256  opts, args = getopt.getopt(argv[1:], "adlf:o:p:")
257  except getopt.GetoptError:
258  print OpenRTM_aist.Logger.print_exception()
259  return
260 
261  for opt, arg in opts:
262  if opt == "-a":
263  self._argprop.setProperty("manager.corba_servant","NO")
264 
265  if opt == "-f":
266  self._configFile = arg
267 
268  if opt == "-l":
269  pass
270 
271  if opt == "-o":
272  pos = arg.find(":")
273  if pos > 0:
274  self._argprop.setProperty(arg[:pos],arg[pos+1:])
275 
276  if opt == "-p":
277  num = [-1]
278  ret = OpenRTM_aist.stringTo(num, arg)
279  if ret:
280  arg_ = ":" + arg
281  self._argprop.setProperty("corba.endpoints",arg_)
282 
283  if opt == "-d":
284  self._isMaster = True
285  pass
286 
287  return
288 
289 
290 
326  def findConfigFile(self):
327  if self._configFile != "":
328  if not self.fileExist(self._configFile):
329  print OpenRTM_aist.Logger.print_exception()
330  return False
331  return True
332 
333  env = os.getenv(self.config_file_env)
334  if env:
335  if self.fileExist(env):
336  self._configFile = env
337  return True
338 
339  i = 0
340  while (self.config_file_path[i]):
341  if self.fileExist(self.config_file_path[i]):
342  self._configFile = self.config_file_path[i]
343  return True
344  i += 1
345 
346  return False
347 
348 
349 
378  def setSystemInformation(self, prop):
379  if sys.platform == 'win32':
380  sysinfo = platform.uname()
381  else:
382  sysinfo = os.uname()
383 
384  prop.setProperty("manager.os.name", sysinfo[0])
385  prop.setProperty("manager.os.hostname", sysinfo[1])
386  prop.setProperty("manager.os.release", sysinfo[2])
387  prop.setProperty("manager.os.version", sysinfo[3])
388  prop.setProperty("manager.os.arch", sysinfo[4])
389  prop.setProperty("manager.pid", os.getpid())
390 
391  return prop
392 
393 
394 
415  def fileExist(self, filename):
416  try:
417  fp = open(filename)
418  except:
419  return False
420  else:
421  fp.close()
422  return True
423 
424  return False
425 
426 
def findConfigFile(self)
Find the configuration file.
def __init__(self, argv=None)
ManagerConfig constructor.
Manager configuration class.
The Properties class represents a persistent set of properties.
Definition: Properties.py:83
list config_file_path
The default configuration file path for manager.
string config_file_env
The environment variable to distinguish the default configuration file path.
def setSystemInformation(self, prop)
Set system information.
def configure(self, prop)
Specify the configuration information to the Property.
def parseArgs(self, argv)
Get configuration value.
def init(self, argv)
Initialization.
def fileExist(self, filename)
Check the file existence.


openrtm_aist_python
Author(s): Shinji Kurihara
autogenerated on Thu Jun 6 2019 19:11:34