Michael DeHaan wrote:
> Dan Guernsey wrote:
>
>> I am unable to test these at this time (I get an error from api.py
>> when it encounters:
>>
>> import acls
>>
>> What package/file does this come from?)
>>
>> Meanwhile, here are two patches. The first moves the builtins into
>> cheetah_macros and provides documentation. The second adds
>> cheetah_macros to setup.py and MANIFEST.in (you'll want to check my
>> work).
>>
>> I'll be as prompt as possible to help resolve any errors that this
>> untested code may (will) introduce.
>>
>> ~
>> Dan
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> cobbler mailing list
>> [email protected]
>> https://fedorahosted.org/mailman/listinfo/cobbler
>>
>
> Thanks!
>
> I tested this briefly with a doubly nested snippet and it looks good.
> I've additionally modified cobbler.spec so it can be packaged with the
> right permissions (and is marked "noreplace" so upgrades do not remove
> user changes).
>
OK, I'll remember that in any future patches
> I think the cheetah_macros file could still use considerable cleanup
> though this now it makes things much easier to edit.
>
> Points regarding the macro file:
> * Examples in things like "includeall" don't seem to be complete --
> perhaps have someone unfamiliar with what they do try to understand them?
>
I didn't mean to confuse anyone with all the wget and tar commands or
anything, but all it does is include all files in a given directory. The
result is basically the catenation of every file in the named directory.
> * Lack of indentation. #raw... #endraw might help with this.
>
I wanted to avoid any unexplained indentation in the resulting kickstart
file. I must admit I didn't do much experimentation with the indentation
(as far as what ends up in the result), but if I remember right, it
would have required a lot of #slurp commands.
> * Code for things like "set permissions" seems a bit weird (things like
> file[4] and repeated calls to chown, why not a loop?)
>
It does use a loop, (yes, the indentation -- rather lack of -- makes it
confusing, but a loop encompasses the entire function, the multiple
calls to chown represents the different ways of calling it (plain, 'p',
just calls chown. recursive, 'r', adds the -R flag. find, 'f', uses
'find' to call chown recursively with restrictions. The 'file' tuple is
basically just a set of parameters. Each tuple in the list passed to
set_permissions with be translated into a chown and/or chmod command:
the first element of the tuple specifies which form (discussed above),
the next are the owner, group, and mode. Finally is the file or
directory name. In the case a find statement ('f' form) is used, an
additional element is used to specify a pattern.
Note that it will only call chmod if a mode is specified. Likewise,
chown is used if an owner is specified, and chgrp is used if a group is
specified. If both are specified, just chown is used (i.e. chown
owner:group file). This did end up being more complicated than I
intended, but it works.
Maybe an example showing results will help:
$set_permissions([
('p', 'root', 'root', '600', 'my_file'),
])
yields:
chown root:root my_file
chmod 600 my_file
another:
$set_permissions([
('r', '', 'audio', '', '/usr/share/sounds'),
])
yields:
chgrp -R audio /usr/share/sounds
both with one call:
$set_permissions([
('p', 'root', 'root', '600', 'my_file'),
('r', '', ''audio', '', '/usr/share/sounds'),
])
yields:
chown root:root my_file
chmod 600 my_file
chgrp -R audio /usr/share/sounds
This encourages a central location for setting file permissions. Even if
permissions are scattered among several snippets, we can keep the
chown/chgrp/chmod commands centralized in the result:
among the snippets:
$my_permissions.append(('p', 'root', 'root', '600', 'my_file'))
later in the kickstart template:
$set_permissions($my_permissions)
also, because there is a predictable format for the list of tuples
(essentially a table), if the permissions are stored in a variable, they
can be checked for compliance by the server.
> * Lacking examples for some of the copy file functions
>
>
The operation of the two copy file functions is so similar, that I
provided an example only for one. I assume the difference between
truncating and appending files is well-understood by most system admins.
> It might actually be easier to start a Wiki page for documentation on
> the macros feature and explain those there, where there's more room for
> elaboration.
>
>
I'll see what time I have to work on it. Perhaps there I should show the
resulting kickstart alongside my examples.
> Anyhow, this is all applied in git devel now. Much appreciated!
>
> --Michael
>
>
>
> _______________________________________________
> cobbler mailing list
> [email protected]
> https://fedorahosted.org/mailman/listinfo/cobbler
>
Side note: do you have any suggestions for resolving the 'import acls'
issue I'm having?
~
Dan
_______________________________________________
cobbler mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/cobbler