Package actions :: Module Modes
[hide private]
[frames] | no frames]

Source Code for Module actions.Modes

  1  # 
  2  # Copyright (c) 2008--2016 Red Hat, Inc. 
  3  # 
  4  # This software is licensed to you under the GNU General Public License, 
  5  # version 2 (GPLv2). There is NO WARRANTY for this software, express or 
  6  # implied, including the implied warranties of MERCHANTABILITY or FITNESS 
  7  # FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 
  8  # along with this software; if not, see 
  9  # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 
 10  # 
 11  # Red Hat trademarks are not licensed under GPLv2. No permission is 
 12  # granted to use or replicate Red Hat trademarks that are incorporated 
 13  # in this software or its documentation. 
 14  # 
 15   
 16  import os 
 17   
 18  #Base class for all modes. 
19 -class BaseMode:
20 - def __init__(self):
21 self.state = False 22 self.name = ""
23
24 - def on(self):
25 self.state = True
26
27 - def off(self):
28 self.state = False
29
30 - def is_on(self):
31 if self.state: 32 return True 33 else: 34 return False
35
36 - def is_off(self):
37 if not self.state: 38 return True 39 else: 40 return False
41
42 - def set_name(self, name):
43 self.name = name
44
45 - def get_name(self):
46 return self.name
47 48 #Contains the directory and file manipulation stuff
49 -class PathHandler:
50 - def __init__(self):
51 self.rhn_root = "/etc/sysconfig/rhn/allowed-actions/configfiles"
52 53 #Set the rhn_root variable.
54 - def set_rhn_root(self, rhn_root):
55 self.rhn_root = rhn_root
56 57 #Creates the self.rhn_root directories if they don't already exist. This allows subclasses to implement modes in different locations.
58 - def _create_rhnconfig_path(self):
59 if not os.path.exists(self.rhn_root): 60 os.makedirs(self.rhn_root, int('0770', 8))
61 62 #Create the file if it doesn't already exist.
63 - def add_file(self, filename):
64 self._create_rhnconfig_path() 65 if not self.check_for_file(filename): 66 try: 67 f = open(os.path.join(self.rhn_root, filename), "w") 68 f.close() 69 except Exception: 70 raise
71 72 #remove the file if it's present.
73 - def remove_file(self, filename):
74 self._create_rhnconfig_path() 75 if self.check_for_file(filename): 76 try: 77 os.remove(os.path.join(self.rhn_root, filename)) 78 except Exception: 79 raise
80 81 #Returns True if filename exists in /etc/sysconfig/rhn/allowed-actions/configfiles
82 - def check_for_file(self, filename):
83 self._create_rhnconfig_path() 84 return os.path.exists(os.path.join(self.rhn_root, filename))
85 86 87 #Stuff that's common to the Mode subclasses.
88 -class ConfigFilesBaseMode(BaseMode):
89 - def __init__(self):
90 BaseMode.__init__(self) 91 self.ph = PathHandler() 92 self.name = None #Must be set in subclass
93
94 - def on(self):
95 self.ph.add_file(self.name) 96 self.state = True
97
98 - def off(self):
99 self.ph.remove_file(self.name) 100 self.state = False
101 102 #Could probably just check the value of state...
103 - def is_on(self):
104 return self.ph.check_for_file(self.name)
105
106 - def is_off(self):
107 if self.ph.check_for_file(self.name): 108 return False 109 elif not self.ph.check_for_file(self.name): 110 return True
111
112 -class RunMode(ConfigFilesBaseMode):
113 - def __init__(self):
114 ConfigFilesBaseMode.__init__(self) 115 self.name = "run" 116 self.ph.set_rhn_root("/etc/sysconfig/rhn/allowed-actions/script")
117
118 -class RunAllMode(ConfigFilesBaseMode):
119 - def __init__(self):
120 ConfigFilesBaseMode.__init__(self) 121 self.name = "all" 122 self.ph.set_rhn_root("/etc/sysconfig/rhn/allowed-actions/script")
123
124 -class AllMode(ConfigFilesBaseMode):
125 - def __init__(self):
126 ConfigFilesBaseMode.__init__(self) 127 self.name = "all"
128
129 -class DeployMode(ConfigFilesBaseMode):
130 - def __init__(self):
131 ConfigFilesBaseMode.__init__(self) 132 self.name = "deploy"
133
134 -class DiffMode(ConfigFilesBaseMode):
135 - def __init__(self):
136 ConfigFilesBaseMode.__init__(self) 137 self.name = "diff"
138
139 -class UploadMode(ConfigFilesBaseMode):
140 - def __init__(self):
141 ConfigFilesBaseMode.__init__(self) 142 self.name = "upload"
143
144 -class MTimeUploadMode(ConfigFilesBaseMode):
145 - def __init__(self):
146 ConfigFilesBaseMode.__init__(self) 147 self.name = "mtime_upload"
148 149 #Solaris Specific Modes
150 -class SolarisRunMode(ConfigFilesBaseMode):
151 - def __init__(self):
152 ConfigFilesBaseMode.__init__(self) 153 self.name = "run" 154 self.ph.set_rhn_root("/opt/redhat/rhn/solaris/etc/sysconfig/rhn/allowed-actions/script")
155
156 -class SolarisAllRunMode(ConfigFilesBaseMode):
157 - def __init__(self):
158 ConfigFilesBaseMode.__init__(self) 159 self.name = "all" 160 self.ph.set_rhn_root("/opt/redhat/rhn/solaris/etc/sysconfig/rhn/allowed-actions/script")
161
162 -class SolarisAllMode(ConfigFilesBaseMode):
163 - def __init__(self):
164 ConfigFilesBaseMode.__init__(self) 165 self.name = "all" 166 self.ph.set_rhn_root("/opt/redhat/rhn/solaris/etc/sysconfig/rhn/allowed-actions/configfiles")
167
168 -class SolarisDeployMode(ConfigFilesBaseMode):
169 - def __init__(self):
170 ConfigFilesBaseMode.__init__(self) 171 self.name = "deploy" 172 self.ph.set_rhn_root("/opt/redhat/rhn/solaris/etc/sysconfig/rhn/allowed-actions/configfiles")
173
174 -class SolarisDiffMode(ConfigFilesBaseMode):
175 - def __init__(self):
176 ConfigFilesBaseMode.__init__(self) 177 self.name = "diff" 178 self.ph.set_rhn_root("/opt/redhat/rhn/solaris/etc/sysconfig/rhn/allowed-actions/configfiles")
179
180 -class SolarisUploadMode(ConfigFilesBaseMode):
181 - def __init__(self):
182 ConfigFilesBaseMode.__init__(self) 183 self.name = "upload" 184 self.ph.set_rhn_root("/opt/redhat/rhn/solaris/etc/sysconfig/rhn/allowed-actions/configfiles")
185
186 -class SolarisMTimeUploadMode(ConfigFilesBaseMode):
187 - def __init__(self):
188 ConfigFilesBaseMode.__init__(self) 189 self.name = "mtime_upload" 190 self.ph.set_rhn_root("/opt/redhat/rhn/solaris/etc/sysconfig/rhn/allowed-actions/configfiles")
191