You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.8 KiB
118 lines
3.8 KiB
autorequire:
|
|
- objects defined in type manifests should be automatically prerequisites of the current object
|
|
- __foo/some-id
|
|
__other other-id --state present
|
|
=> require="__other/other-id" __foo/some-id
|
|
|
|
|
|
metaparameters:
|
|
- steal the metaparameters from puppet:
|
|
|
|
# I have to be there before the other one
|
|
__directory /etc/ssh \
|
|
--before __file/etc/ssh/sshd_config
|
|
|
|
# the other one has to be there before me
|
|
__file /etc/ssh/sshd_config \
|
|
--after __directory/etc/ssh
|
|
|
|
# if I change, tell the other one about it
|
|
__file /etc/ssh/sshd_config \
|
|
--notify __init_script/etc/rc.d/sshd
|
|
|
|
# whenever the other one changes, I want to know
|
|
__init_script /etc/rc.d/sshd \
|
|
--subscribe __file/etc/ssh/sshd_config
|
|
|
|
- how does a type react to a received 'event'?
|
|
- maybe something like:
|
|
__some_type/
|
|
manifest
|
|
...
|
|
gencode-refresh
|
|
...
|
|
- gencode-refresh -> code-refresh -> ssh $target sh -e code-refresh
|
|
|
|
|
|
|
|
|
|
logging:
|
|
- logging from type emulator without clobbering stdout
|
|
maybe implement logging server as described here [1]
|
|
[1] http://docs.python.org/py3k/howto/logging-cookbook.html#configuration-server-example
|
|
|
|
- use different logger to limit output to current area of interest,
|
|
e.g.
|
|
explorer.$target_host: explorer related messages for the run for $target_host
|
|
manifest.$target_host: manifest related messages for the run for $target_host
|
|
...
|
|
then one could filter e.g. on explorer.*
|
|
|
|
- more granular debug output,
|
|
[2] http://blog.ooz.ie/2011/03/python-logging-extending-standard.html
|
|
|
|
|
|
|
|
tests:
|
|
|
|
__init__():
|
|
- sets up env: __target_host
|
|
|
|
run_initial_manifest():
|
|
- parameter is actually used (from __init__)
|
|
- ensure changing the manifest actually runs a different manifest
|
|
-> give ConfigInstall Constructor different manifest
|
|
-> different manifest is executed.
|
|
- test all submitted (from core to type manifest) variables:
|
|
- ENVIRONMENT
|
|
- they are set
|
|
- they contain the correct values
|
|
|
|
run_type_manifest():
|
|
- test all submitted (from core to type manifest) variables:
|
|
- ENVIRONMENT
|
|
- they are set
|
|
- they contain the correct values
|
|
- same tests as for test_initial_manifest_*?
|
|
|
|
run_manifest():
|
|
- test all submitted variables:
|
|
- ENVIRONMENT
|
|
- including __debug, if debug
|
|
- they are set
|
|
- they contain the correct values
|
|
- does $require work?
|
|
- check that exception raised, if manifest is not existent
|
|
|
|
object_run():
|
|
- ensure no object is run twice
|
|
- ensure requirements are taken into account?
|
|
- and order of run is adjusted
|
|
- check (from extern?) that all needed variables are setup
|
|
- ensure no code-{local, remote} is created,
|
|
if gencode is not producing code
|
|
- ensure THAT code-{local, remote} contains what gencode created
|
|
- abort if gencode-* fails
|
|
- abort if code-* fails
|
|
- abort == raise(FooException)
|
|
- gencode-*: ensure ENVIRONMENT is setup correctly
|
|
|
|
run_type_explorer()
|
|
- ensure ALL type explores have been run
|
|
- ensure output is saved to correct path
|
|
- ensure a type with {0,1,2} explorers works ?
|
|
- none, one, multiple
|
|
- ensure ENVIRONMENT is setup correctly
|
|
- fails if ANY of the given explorer fails
|
|
|
|
run_global_explorers():
|
|
- ensure ALL type explores have been run
|
|
- ensure output is saved to correct path
|
|
- ensure a type with {0,1,2} explorers works ?
|
|
- none, one, multiple
|
|
- ensure ENVIRONMENT is setup correctly
|
|
- fails if ANY of the given explorer fails
|
|
|
|
Code fixes needed:
|
|
|
|
- shutil, os.mkdir, etc. everywhere: catch/reraise exceptions correctly
|
|
|