run-isolated - API reference
Top-level reexported definitions
run_isolated.ContainerVolume
dataclass
A single directory to be mounted within the container, if supported.
Source code in src/run_isolated/defs.py
external
instance-attribute
The full path to the directory on the host.
internal
instance-attribute
The path within the container that the directory will be mounted on.
readonly
instance-attribute
Mount the directory read-only.
run_isolated.Container
dataclass
Bases: ABC
A generic implementation of an isolated environment to run commands in.
Source code in src/run_isolated/defs.py
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 | |
copy_file_in(src, dst)
abstractmethod
Copy a file into the container.
The ownership and permissions of the file created within the container are implementation-dependent.
Source code in src/run_isolated/defs.py
copy_file_out(src, dst)
abstractmethod
Copy a file out of the container.
The ownership and permissions of the file created on the host filesystem are implementation-dependent.
Source code in src/run_isolated/defs.py
run_command(cmd, ugid=None, workdir=None)
abstractmethod
Run a command in the isolated environment, check for errors.
Source code in src/run_isolated/defs.py
run_command_output(cmd, ugid=None, workdir=None)
abstractmethod
Run a command in the isolated environment, capture its output, check for errors.
Source code in src/run_isolated/defs.py
start_container(cfg, container, *, name=None, volumes=None, workdir=None)
abstractmethod
classmethod
Initiaize an isolated environment, stop it when done.
Source code in src/run_isolated/defs.py
supports_file_copy()
abstractmethod
classmethod
Report whether this isolated environment supports copying files in and out.
supports_tar_files()
abstractmethod
classmethod
Report whether this isolated environment supports copying files using tar.
supports_volumes()
abstractmethod
classmethod
Report whether this isolated environment supports mounting volumes in.
tar_files_in(src, dst_parent, *, ugid=None)
abstractmethod
Use tar to copy a file or directory into the container.
The ownership and permissions of the files created within the container are implementation-dependent.
Source code in src/run_isolated/defs.py
tar_files_out(src, dst_parent, *, ugid=None)
abstractmethod
Use tar to copy a file or directory out of the container.
The ownership and permissions of the files created on the host filesystem are implementation-dependent.
Source code in src/run_isolated/defs.py
Common errors
run_isolated.Error
dataclass
Bases: Exception
An error that occurred while handling the Docker container.
Source code in src/run_isolated/defs.py
run_isolated.CommandError
dataclass
Bases: Error
An error related to running a command.
Source code in src/run_isolated/defs.py
cmd
instance-attribute
The command we tried to run.
cmdstr
property
Join the words of the command.
run_isolated.CommandRunError
dataclass
Bases: CommandError
An error that occurred while trying to run a command.
Source code in src/run_isolated/defs.py
run_isolated.CommandFailError
dataclass
Bases: CommandError
A command that we tried to run failed.
Source code in src/run_isolated/defs.py
err
instance-attribute
The error that occurred.
__str__()
Provide a human-readable error description.
run_isolated.CommandDecodeOutputError
dataclass
Bases: CommandError
A command that we tried to run failed.
Source code in src/run_isolated/defs.py
err
instance-attribute
The error that occurred.
run_isolated.ConfigNotConfigError
dataclass
Bases: Error, TypeError
The supplied cfg parameter was not an instance of the respective Config type.
Source code in src/run_isolated/defs.py
run_isolated.FileCopyError
dataclass
Bases: Error, OSError
Failed to copy a file.
Source code in src/run_isolated/defs.py
dst
instance-attribute
The destination path we tried to copy to.
err
instance-attribute
The error we got.
src
instance-attribute
The source path we tried to copy.
run_isolated.TarFilesError
dataclass
Bases: Error
Failed to copy a file.
Source code in src/run_isolated/defs.py
dst_parent
instance-attribute
The destination path we tried to copy to.
src
instance-attribute
The source path we tried to copy.
Run commands within a Docker container
run_isolated.rdocker.Config
dataclass
Bases: Config
Runtime configuration for the run-i-docker tool.
Source code in src/run_isolated/rdocker.py
docker_cmd = DEFAULT_DOCKER_CMD
class-attribute
instance-attribute
The Docker-like command-line tool to use.
gid
instance-attribute
The account group ID to use within the container.
uid
instance-attribute
The account user ID to use within the container.
run_isolated.rdocker.Container
dataclass
Bases: Container
A representation of a Docker container.
Source code in src/run_isolated/rdocker.py
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 | |
cfg
instance-attribute
The runtime configuration for the container.
cid
instance-attribute
The ID string of the container.
copy_file_in(src, dst)
Copy a file into the container.
The file created within the container will be owned by the user account that the container was started with.
Source code in src/run_isolated/rdocker.py
copy_file_out(src, dst)
Copy a file into the container.
The file created on the host filesystem will be owned by the user account that the current process is running under.
Source code in src/run_isolated/rdocker.py
run_command(cmd, ugid=None, workdir=None)
Run a command in the container, check for errors.
Source code in src/run_isolated/rdocker.py
run_command_output(cmd, ugid=None, workdir=None)
Run a command in the container, capture its output, check for errors.
Source code in src/run_isolated/rdocker.py
start_container(cfg, container, *, name=None, volumes=None, workdir=None)
classmethod
Start a Docker container, stop it when done.
Source code in src/run_isolated/rdocker.py
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | |
supports_file_copy()
classmethod
supports_tar_files()
classmethod
supports_volumes()
classmethod
tar_files_in(src, dst_parent, *, ugid=None)
Use tar to copy a file or directory into the container.
The files created within the container will be owned by the user account that the container was started with.
Source code in src/run_isolated/rdocker.py
tar_files_out(src, dst_parent, ugid=None)
Use tar to copy a file or directory out of the container.
The files created on the host filesystem will be owned by the user account that the current process is running under.
Source code in src/run_isolated/rdocker.py
Docker container errors
run_isolated.rdocker.DockerError
dataclass
Run commands within a schroot environment
run_isolated.rschroot.Config
dataclass
Bases: Config
Runtime configuration for the run-i-schroot tool.
Source code in src/run_isolated/rschroot.py
schroot_cmd = DEFAULT_SCHROOT_CMD
class-attribute
instance-attribute
The schroot command-line tool to use.
username
instance-attribute
The account username to use within the session.
run_isolated.rschroot.Session
dataclass
Bases: Container
A representation of a schroot session.
Source code in src/run_isolated/rschroot.py
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 | |
cfg
instance-attribute
The runtime configuration for the container.
mount_path
instance-attribute
The host directory where the schroot environment's root is mounted.
sess
instance-attribute
The name of the schroot session.
copy_file_in(src, dst)
Copy a file into the container.
The file created within the schroot environment will be owned by the user account that the current process is running under.
Source code in src/run_isolated/rschroot.py
copy_file_out(src, dst)
Copy a file into the container.
The file created on the host filesystem will be owned by the user account that the current process is running under.
Source code in src/run_isolated/rschroot.py
get_mount_path(cfg, sess)
classmethod
Query schroot for the environment's root directory.
Source code in src/run_isolated/rschroot.py
run_command(cmd, ugid=None, workdir=None)
Run a command in the schroot environment, check for errors.
Source code in src/run_isolated/rschroot.py
run_command_output(cmd, ugid=None, workdir=None)
Run a command in the schroot environment, capture its output, check for errors.
Source code in src/run_isolated/rschroot.py
start_container(cfg, chroot, *, name=None, volumes=None, workdir=None)
classmethod
Start a schroot session, stop it when done.
Source code in src/run_isolated/rschroot.py
supports_file_copy()
classmethod
supports_tar_files()
classmethod
supports_volumes()
classmethod
tar_files_in(src, dst_parent, *, ugid=None)
Use tar to copy a file or directory into the container.
The files created within the schroot environment will be owned by the user account that the current process is running under.
Source code in src/run_isolated/rschroot.py
tar_files_out(src, dst_parent, ugid=None)
Use tar to copy a file or directory out of the container.
The files created on the host filesystem will be owned by the user account that the current process is running under.
Source code in src/run_isolated/rschroot.py
Helper utility functions
run_isolated.util.DEFAULT_LOGGER_NAME = 'run_isolated'
module-attribute
The default name for the logger created by build_logger.
run_isolated.util.build_logger(*, name=DEFAULT_LOGGER_NAME, quiet=False, verbose=False)
cached
Build a logger that outputs to the standard output and error streams.
Messages of level WARNING and higher go to the standard error stream.
If quiet is false, messages of level INFO go to the standard error stream.
If verbose is true, messages of level DEBUG also go to the standard error stream.