diff options
author | Bob Gilligan <gilligan@vyatta.com> | 2009-07-30 13:53:48 -0700 |
---|---|---|
committer | Bob Gilligan <gilligan@vyatta.com> | 2009-07-30 13:53:48 -0700 |
commit | e500a9e4494649e0ecb523d36b28452f2e9dd326 (patch) | |
tree | 8e3eb9976e80685ce8fa02e9aa084d791398a3c2 /templates/system | |
parent | 976b969914ecb4e51d20bde2e446135927f7ee39 (diff) | |
download | vyatta-cfg-system-e500a9e4494649e0ecb523d36b28452f2e9dd326.tar.gz vyatta-cfg-system-e500a9e4494649e0ecb523d36b28452f2e9dd326.zip |
Bugfix 4700: Move processing to "end" field so that param modifications are handled.
In order to correctly handle cases where parameters are changed after a repository
configuration has been set up, we need to do the work in an "end" field instead
of a "create" field. The "create" field is only executed when the node itself
is created, not when nodes below it are modified.
Diffstat (limited to 'templates/system')
6 files changed, 36 insertions, 14 deletions
diff --git a/templates/system/package/auto-sync/node.def b/templates/system/package/auto-sync/node.def index 3d14ab04..299b43bf 100644 --- a/templates/system/package/auto-sync/node.def +++ b/templates/system/package/auto-sync/node.def @@ -1,12 +1,18 @@ # this will set APT::Periodic::Update-Package-Lists in /etc/apt/apt.conf # apt.conf is in turn read by the apt cron file loacted in /etc/cron.daily/apt # the /etc/crontab file must have the daily line for daily to be run + type: u32 + default: 1 + help: Set to update the the repository cache every n days (0 disables auto-update) + syntax:expression: $VAR(@) >= 0 && $VAR(@) < 32 ; "auto-sync must be between 0 and 32 days" + update:expression: "sudo sh -c \"touch /etc/apt/apt.conf && \ -sed -i '/APT::Periodic::Update-Package-Lists*/d' /etc/apt/apt.conf && \ -echo \\\"APT::Periodic::Update-Package-Lists \\\"$VAR(@)\\\";\\\" >> /etc/apt/apt.conf\" " + sed -i '/APT::Periodic::Update-Package-Lists*/d' /etc/apt/apt.conf && \ + echo \\\"APT::Periodic::Update-Package-Lists \\\"$VAR(@)\\\";\\\" >> /etc/apt/apt.conf\" " + delete:expression: "sudo sh -c \"touch /etc/apt/apt.conf && \ -sed -i '/APT::Periodic::Update-Package-Lists*/d' /etc/apt/apt.conf\" " + sed -i '/APT::Periodic::Update-Package-Lists*/d' /etc/apt/apt.conf\" " diff --git a/templates/system/package/repository/node.def b/templates/system/package/repository/node.def index 17d5d162..40504bf1 100644 --- a/templates/system/package/repository/node.def +++ b/templates/system/package/repository/node.def @@ -8,16 +8,25 @@ commit:expression: $VAR(./url/) != ""; "Must configure the repository URL" commit:expression: $VAR(./distribution/) != ""; "Must configure the repository distribution" commit:expression: $VAR(./components/) != ""; "Must configure the repository components" -create: sudo bash -c "touch /etc/apt/sources.list && \ - sed -i '\\!# $VAR(@) #!d' /etc/apt/sources.list && \ - echo \"deb $VAR(url/@) $VAR(distribution/@) $VAR(components/@) # $VAR(@) #\" >> /tmp/$$-sources.list && \ - if [ $VAR(password/@) ] || [ $VAR(username/@) ]; \ - then \ +end: + if [ ${COMMIT_ACTION} = 'SET' -o ${COMMIT_ACTION} = 'ACTIVE' ]; then + if [ ${COMMIT_ACTION} = 'SET' ]; then + echo "Adding new entry to /etc/apt/sources.list..." + else + echo "Updating /etc/apt/sources.list..." + fi + sudo bash -c "touch /etc/apt/sources.list && \ + sed -i '\\!# $VAR(@) #!d' /etc/apt/sources.list && \ + echo \"deb $VAR(url/@) $VAR(distribution/@) $VAR(components/@) # $VAR(@) #\" >> /tmp/$$-sources.list && \ + if [ $VAR(password/@) ] || [ $VAR(username/@) ]; \ + then \ sed -i "s!://.*@!://!" /tmp/$$-sources.list; \ sed -i "s!://!://$VAR(username/@):$VAR(password/@)@!" /tmp/$$-sources.list; \ - fi && \ - cat /tmp/$$-sources.list>>/etc/apt/sources.list ; \ - rm -f /tmp/$$-sources.list" - -delete: sudo sh -c "touch /etc/apt/sources.list && \ -sed -i '\\!# $VAR(@) #!d' /etc/apt/sources.list" + fi && \ + cat /tmp/$$-sources.list>>/etc/apt/sources.list ; \ + rm -f /tmp/$$-sources.list" + elif [ ${COMMIT_ACTION} = 'DELETE' ]; then + echo "Removing entry from /etc/apt/sources.list..." + sudo sh -c "touch /etc/apt/sources.list && \ + sed -i '\\!# $VAR(@) #!d' /etc/apt/sources.list" + fi diff --git a/templates/system/package/repository/node.tag/components/node.def b/templates/system/package/repository/node.tag/components/node.def index 60605b89..313ab614 100644 --- a/templates/system/package/repository/node.tag/components/node.def +++ b/templates/system/package/repository/node.tag/components/node.def @@ -1,4 +1,6 @@ type: txt + help: Set repository component names + # need to prohibit '!' in repo name (sed delimiter) syntax:expression: pattern $VAR(@) "^[^!]+$" ; "Do not use '!' in component name" diff --git a/templates/system/package/repository/node.tag/description/node.def b/templates/system/package/repository/node.tag/description/node.def index 8ebfacb0..613b0d28 100644 --- a/templates/system/package/repository/node.tag/description/node.def +++ b/templates/system/package/repository/node.tag/description/node.def @@ -1,2 +1,3 @@ type: txt + help: Set repository description diff --git a/templates/system/package/repository/node.tag/distribution/node.def b/templates/system/package/repository/node.tag/distribution/node.def index ce5219bc..353f59b6 100644 --- a/templates/system/package/repository/node.tag/distribution/node.def +++ b/templates/system/package/repository/node.tag/distribution/node.def @@ -1,4 +1,6 @@ type: txt + help: Set distribution name + # need to prohibit '!' in repo name (sed delimiter) syntax:expression: pattern $VAR(@) "^[^!]+$" ; "Do not use '!' in distribution name" diff --git a/templates/system/package/repository/node.tag/url/node.def b/templates/system/package/repository/node.tag/url/node.def index 07021671..3fad02e8 100644 --- a/templates/system/package/repository/node.tag/url/node.def +++ b/templates/system/package/repository/node.tag/url/node.def @@ -1,4 +1,6 @@ type: txt + help: Repository URL + # need to prohibit '!' in url (sed delimiter) syntax:expression: pattern $VAR(@) "^[^!]+$" ; "URL must not be null and must not contain '!'" |