Switch all of the commands in YAML files to simple strings and

parse them into lists in the code that fetches commands from
the config.
This commit is contained in:
Doug Hellmann 2012-03-21 11:23:09 -04:00
parent 462eee3a99
commit cefd378401
9 changed files with 583 additions and 724 deletions

View File

@ -1,522 +1,498 @@
# Fedora 16 # Fedora 16
---
name: fedora-16 name: fedora-16
distro_pattern: fedora-16 distro_pattern: fedora-16
packager_name: devstack.packaging.yum:YumPackager
commands: commands:
pip: python-pip
apache: apache:
restart: ["service", "httpd", "restart"] restart: service httpd restart
start: ["service", "httpd", "start"]
stop: ["service", "httpd", "stop"]
status: ["service", "httpd", "status"]
settings: settings:
#ensure runs after wsgi.conf (naming wise)
conf-link-target: /etc/httpd/conf.d/wsgi-horizon-000-default.conf conf-link-target: /etc/httpd/conf.d/wsgi-horizon-000-default.conf
start: service httpd start
mysql: status: service httpd status
start: ["service", "mysql", 'start'] stop: service httpd stop
stop: ["service", 'mysql', "stop"]
status: ["service", 'mysql', "status"]
restart: ["service", 'mysql', "restart"]
#NOTE: we aren't stopping any sql injection...
set_pwd: ['mysql', '--user=%USER%', '--password=%OLD_PASSWORD%', '-e',
"\"USE mysql; UPDATE user SET password=PASSWORD('%NEW_PASSWORD%') WHERE User='%USER%'; FLUSH PRIVILEGES;\""]
create_db: ['mysql', '--user=%USER%', '--password=%PASSWORD%', '-e', 'CREATE DATABASE %DB%;']
drop_db: ['mysql', '--user=%USER%', '--password=%PASSWORD%', '-e', 'DROP DATABASE IF EXISTS %DB%;']
grant_all: ["mysql", "--user=%USER%", "--password=%PASSWORD%", '-e',
"\"GRANT ALL PRIVILEGES ON *.* TO '%USER%'@'%' IDENTIFIED BY '%PASSWORD%'; FLUSH PRIVILEGES;\""]
git: git:
checkout: checkout: git checkout
- git clone: git clone
- checkout pull: git pull
clone:
- git
- clone
pull:
- git
- pull
libvirt: libvirt:
restart: ['service', 'libvirtd', 'restart'] restart: service libvirtd restart
status: ['service', 'libvirtd', 'status'] status: service libvirtd status
mysql:
create_db: mysql --user=%USER% --password=%PASSWORD% -e "CREATE DATABASE %DB%;"
drop_db: mysql --user=%USER% --password=%PASSWORD% -e "DROP DATABASE IF EXISTS
%DB%;"
grant_all: mysql --user=%USER% --password=%PASSWORD% -e "GRANT ALL PRIVILEGES
ON *.* TO '%USER%'@'%' IDENTIFIED BY '%PASSWORD%'; FLUSH PRIVILEGES;"
restart: service mysqld restart
set_pwd: mysql --user=%USER% --password=%OLD_PASSWORD% -e "USE mysql; UPDATE
user SET password=PASSWORD('%NEW_PASSWORD%') WHERE User='%USER%'; FLUSH
PRIVILEGES;"
start: service mysqld start
status: service mysqld status
stop: service mysqld stop
pip: python-pip
rabbit-mq: rabbit-mq:
start: ['service', "rabbitmq-server", "start"] change_password: rabbitmqctl change_password guest
stop: ['service', "rabbitmq-server", "stop"] restart: service rabbitmq-server restart
status: ['service', "rabbitmq-server", "status"] start: service rabbitmq-server start
restart: ['service', "rabbitmq-server", "restart"] status: service rabbitmq-server status
change_password: ['rabbitmqctl', 'change_password', 'guest'] stop: service rabbitmq-server stop
components: components:
db: db:
packages: packages:
- name: mysql - name: mysql
removable: True removable: true
version: 5.5* version: 5.5*
- name: mysql-server - name: mysql-server
removable: True removable: true
version: 5.5* version: 5.5*
general: general:
packages: packages:
- name: curl - name: curl
removable: False removable: false
version: 7.21.7* version: 7.21.7*
- name: euca2ools - name: euca2ools
removable: False removable: false
version: 1.3.1* version: 1.3.1*
- name: gawk - name: gawk
removable: False removable: false
version: 4.0* version: 4.0*
- name: git - name: git
removable: False removable: false
version: 1.7* version: 1.7*
- name: iputils - name: iputils
removable: False removable: false
version: 20101006* version: 20101006*
- name: libxml2-devel - name: libxml2-devel
removable: False removable: false
version: 2.7* version: 2.7*
- name: libxslt-devel - name: libxslt-devel
removable: False removable: false
version: 1.1.26* version: 1.1.26*
- name: lsof - name: lsof
removable: False removable: false
version: 4.84* version: 4.84*
- name: mlocate - name: mlocate
removable: False removable: false
version: 0.24* version: 0.24*
- name: openssh-server - name: openssh-server
removable: False removable: false
version: 5.8* version: 5.8*
- name: psmisc - name: psmisc
removable: False removable: false
version: 22.13* version: 22.13*
- name: pylint - name: pylint
removable: False removable: false
version: 0.24* version: 0.24*
- name: python - name: python
removable: False removable: false
version: 2.7* version: 2.7*
- name: python-coverage - name: python-coverage
removable: False removable: false
version: 3.5* version: 3.5*
- name: python-devel - name: python-devel
removable: False removable: false
version: 2.7* version: 2.7*
- name: python-distutils-extra - name: python-distutils-extra
removable: False removable: false
version: 2.29* version: 2.29*
- name: python-mox - name: python-mox
removable: False removable: false
version: 0.5.3* version: 0.5.3*
- name: python-nose - name: python-nose
removable: False removable: false
version: 1.1* version: 1.1*
- name: python-pep8 - name: python-pep8
removable: False removable: false
version: 0.6* version: 0.6*
- name: python-pip - name: python-pip
removable: False removable: false
version: 0.8* version: 0.8*
- name: python-setuptools - name: python-setuptools
removable: False removable: false
version: 0.6.24* version: 0.6.24*
- name: python-unittest2 - name: python-unittest2
removable: False removable: false
version: 0.5.1* version: 0.5.1*
- name: python-virtualenv - name: python-virtualenv
removable: False removable: false
version: 1.7* version: 1.7*
- name: screen - name: screen
removable: False removable: false
version: 4.1.0* version: 4.1.0*
- name: sudo - name: sudo
removable: False removable: false
version: 1.8.3* version: 1.8.3*
- name: tcpdump - name: tcpdump
removable: False removable: false
version: 4.1* version: 4.1*
- name: unzip - name: unzip
removable: False removable: false
version: 6.0* version: 6.0*
- name: wget - name: wget
removable: False removable: false
version: 1.12* version: 1.12*
glance: glance:
packages: packages:
- name: MySQL-python - name: MySQL-python
removable: True removable: true
version: 1.2* version: 1.2*
- name: python-argparse - name: python-argparse
removable: True removable: true
version: 1.1* version: 1.1*
- name: python-dateutil - name: python-dateutil
removable: True removable: true
version: 1.5* version: 1.5*
- name: python-eventlet - name: python-eventlet
removable: True removable: true
version: 0.9* version: 0.9*
- name: python-greenlet - name: python-greenlet
removable: True removable: true
version: 0.3.1* version: 0.3.1*
- name: python-httplib2 - name: python-httplib2
removable: True removable: true
version: 0.6* version: 0.6*
- name: python-prettytable - name: python-prettytable
removable: True removable: true
version: 0.5* version: 0.5*
- name: python-routes - name: python-routes
removable: True removable: true
version: 1.12* version: 1.12*
- name: pyxattr - name: pyxattr
removable: True removable: true
version: 0.5* version: 0.5*
horizon: horizon:
packages: packages:
- name: Django - name: Django
removable: True removable: true
version: 1.3* version: 1.3*
- name: django-registration - name: django-registration
removable: True removable: true
version: 0.7* version: 0.7*
- name: httpd - name: httpd
removable: True removable: true
version: 2.2* version: 2.2*
- name: mod_wsgi - name: mod_wsgi
removable: True removable: true
version: 3.3* version: 3.3*
- name: python-cherrypy - name: python-cherrypy
removable: True removable: true
version: 3.2* version: 3.2*
- name: python-cloudfiles - name: python-cloudfiles
removable: True removable: true
version: 1.7.9* version: 1.7.9*
- name: python-dateutil - name: python-dateutil
removable: True removable: true
version: 1.5* version: 1.5*
- name: python-eventlet - name: python-eventlet
removable: True removable: true
version: 0.9* version: 0.9*
- name: python-kombu - name: python-kombu
removable: True removable: true
version: 1.1* version: 1.1*
- name: python-migrate - name: python-migrate
removable: True removable: true
version: 0.7* version: 0.7*
- name: python-paste - name: python-paste
removable: True removable: true
version: 1.7.5* version: 1.7.5*
- name: python-paste-deploy - name: python-paste-deploy
removable: True removable: true
version: 1.5.0* version: 1.5.0*
- name: python-routes - name: python-routes
removable: True removable: true
version: 1.12* version: 1.12*
- name: python-sphinx - name: python-sphinx
removable: True removable: true
version: 1.0.7* version: 1.0.7*
- name: python-sqlalchemy - name: python-sqlalchemy
removable: True removable: true
version: 0.7* version: 0.7*
- name: python-webob - name: python-webob
removable: True removable: true
version: 1.0* version: 1.0*
- name: pyxattr - name: pyxattr
removable: True removable: true
version: 0.5* version: 0.5*
keystone-client:
packages:
- name: python-argparse
removable: True
version: 1.1*
- name: python-prettytable
removable: True
version: 0.5*
keystone: keystone:
packages: packages:
- name: MySQL-python - name: MySQL-python
removable: True removable: true
version: 1.2* version: 1.2*
- name: cyrus-sasl-lib - name: cyrus-sasl-lib
removable: False removable: false
version: 2.1* version: 2.1*
- name: openldap - name: openldap
removable: False removable: false
version: 2.4* version: 2.4*
- name: python-argparse - name: python-argparse
removable: True removable: true
version: 1.1* version: 1.1*
- name: python-eventlet - name: python-eventlet
removable: True removable: true
version: 0.9* version: 0.9*
- name: python-greenlet - name: python-greenlet
removable: True removable: true
version: 0.3.1* version: 0.3.1*
- name: python-lxml - name: python-lxml
removable: True removable: true
version: 2.3* version: 2.3*
- name: python-migrate - name: python-migrate
removable: True removable: true
version: 0.7* version: 0.7*
- name: python-passlib - name: python-passlib
removable: True removable: true
version: 1.5* version: 1.5*
- name: python-paste - name: python-paste
removable: True removable: true
version: 1.7.5* version: 1.7.5*
- name: python-paste-deploy - name: python-paste-deploy
removable: True removable: true
version: 1.5* version: 1.5*
- name: python-paste-script - name: python-paste-script
removable: True removable: true
version: 1.7* version: 1.7*
- name: python-prettytable - name: python-prettytable
removable: True removable: true
version: 0.5* version: 0.5*
- name: python-routes - name: python-routes
removable: True removable: true
version: 1.12* version: 1.12*
- name: python-sqlalchemy - name: python-sqlalchemy
removable: True removable: true
version: 0.7* version: 0.7*
- name: python-sqlite2 - name: python-sqlite2
removable: True removable: true
version: 2.3* version: 2.3*
- name: python-webob - name: python-webob
removable: True removable: true
version: 1.0* version: 1.0*
- name: sqlite - name: sqlite
removable: False removable: false
version: 3.7* version: 3.7*
keystone-client:
melange:
packages: packages:
- name: python-argparse
removable: true
version: 1.1*
- name: python-prettytable
removable: true
version: 0.5*
melange:
packages: null
n-api: n-api:
packages: packages:
- name: python-dateutil - name: python-dateutil
removable: False removable: false
version: 1.5* version: 1.5*
n-cpu: n-cpu:
packages: packages:
- name: iscsi-initiator-utils - name: iscsi-initiator-utils
removable: True removable: true
version: 6.2* version: 6.2*
- name: libvirt - name: libvirt
removable: True removable: true
version: 0.9.6* version: 0.9.6*
- name: libvirt-client - name: libvirt-client
removable: True removable: true
version: 0.9.6* version: 0.9.6*
- name: libvirt-python - name: libvirt-python
removable: True removable: true
version: 0.9.6* version: 0.9.6*
- name: lvm2 - name: lvm2
removable: True removable: true
version: 2.02* version: 2.02*
- name: qemu-img - name: qemu-img
removable: True removable: true
version: 0.15* version: 0.15*
- name: qemu-system-x86 - name: qemu-system-x86
removable: True removable: true
version: 0.15* version: 0.15*
n-vnc: n-vnc:
packages: packages:
- name: numpy - name: numpy
removable: True removable: true
version: 1.6* version: 1.6*
n-vol: n-vol:
packages: packages:
- name: iscsi-initiator-utils - name: iscsi-initiator-utils
removable: True removable: true
version: 6.2* version: 6.2*
- name: lvm2 - name: lvm2
removable: True removable: true
version: 2.02* version: 2.02*
- name: scsi-target-utils - name: scsi-target-utils
removable: True removable: true
version: 1.0* version: 1.0*
nova-client:
packages:
- name: python-argparse
removable: True
version: 1.1*
- name: python-prettytable
removable: True
version: 0.5*
nova: nova:
packages: packages:
- name: MySQL-python - name: MySQL-python
removable: True removable: true
version: 1.2* version: 1.2*
- name: dnsmasq - name: dnsmasq
removable: False removable: false
version: 2.58* version: 2.58*
- name: ebtables - name: ebtables
removable: False removable: false
version: 2.0* version: 2.0*
- name: iptables - name: iptables
removable: False removable: false
version: 1.4* version: 1.4*
- name: iputils - name: iputils
removable: False removable: false
version: 20101006* version: 20101006*
- name: kpartx - name: kpartx
removable: False removable: false
version: 0.4* version: 0.4*
- name: libxml2-python - name: libxml2-python
removable: False removable: false
version: 2.7* version: 2.7*
- name: parted - name: parted
removable: False removable: false
version: 3.0* version: 3.0*
- name: python-boto - name: python-boto
removable: True removable: true
version: 2.0* version: 2.0*
- name: python-carrot - name: python-carrot
removable: True removable: true
version: 0.10* version: 0.10*
- name: python-cheetah - name: python-cheetah
removable: True removable: true
version: 2.4* version: 2.4*
- name: python-crypto - name: python-crypto
removable: False removable: false
version: 2.3* version: 2.3*
- name: python-eventlet - name: python-eventlet
removable: True removable: true
version: 0.9* version: 0.9*
- name: python-feedparser - name: python-feedparser
removable: True removable: true
version: 5.0* version: 5.0*
- name: python-gflags - name: python-gflags
removable: True removable: true
version: 1.5* version: 1.5*
- name: python-greenlet - name: python-greenlet
removable: True removable: true
version: 0.3.1* version: 0.3.1*
- name: python-kombu - name: python-kombu
removable: True removable: true
version: 1.1* version: 1.1*
- name: python-lockfile - name: python-lockfile
removable: True removable: true
version: 0.9* version: 0.9*
- name: python-lxml - name: python-lxml
removable: True removable: true
version: 2.3* version: 2.3*
- name: python-netaddr - name: python-netaddr
removable: True removable: true
version: 0.7* version: 0.7*
- name: python-paste - name: python-paste
removable: True removable: true
version: 1.7.5* version: 1.7.5*
- name: python-routes - name: python-routes
removable: True removable: true
version: 1.12* version: 1.12*
- name: python-suds - name: python-suds
removable: True removable: true
version: 0.4* version: 0.4*
- name: pyxattr - name: pyxattr
removable: True removable: true
version: 0.5* version: 0.5*
- name: socat - name: socat
removable: True removable: true
version: 1.7* version: 1.7*
- name: sqlite - name: sqlite
removable: False removable: false
version: 3.7* version: 3.7*
nova-client:
quantum-client:
packages: packages:
- name: python-gflags - name: python-argparse
removable: True removable: true
version: 1.5* version: 1.1*
- name: python-prettytable
quantum-openvswitch: removable: true
packages: version: 0.5*
- name: MySQL-python
removable: True
version: 1.2*
- name: python-sqlalchemy
removable: True
version: 0.7*
quantum: quantum:
packages: packages:
- name: python-eventlet - name: python-eventlet
removable: True removable: true
version: 0.9* version: 0.9*
- name: python-gflags - name: python-gflags
removable: True removable: true
version: 1.5* version: 1.5*
- name: python-greenlet - name: python-greenlet
removable: True removable: true
version: 0.3* version: 0.3*
- name: python-lxml - name: python-lxml
removable: True removable: true
version: 2.3* version: 2.3*
- name: python-paste - name: python-paste
removable: True removable: true
version: 1.7* version: 1.7*
- name: python-paste-deploy - name: python-paste-deploy
removable: True removable: true
version: 1.5* version: 1.5*
- name: python-routes - name: python-routes
removable: True removable: true
version: 1.12* version: 1.12*
quantum-client:
packages:
- name: python-gflags
removable: true
version: 1.5*
quantum-openvswitch:
packages:
- name: MySQL-python
removable: true
version: 1.2*
- name: python-sqlalchemy
removable: true
version: 0.7*
rabbit-mq: rabbit-mq:
packages: packages:
- name: rabbitmq-server - name: rabbitmq-server
pre-install: pre-install:
- cmd: ['service', 'qpidd', 'stop'] - cmd:
run_as_root: True - service
- cmd: ['chkconfig', 'qpidd', 'off'] - qpidd
run_as_root: True - stop
ignore_failure: True run_as_root: true
removable: True - cmd:
- chkconfig
- qpidd
- 'off'
ignore_failure: true
run_as_root: true
removable: true
version: 2.6* version: 2.6*
swift: swift:
packages: packages:
- name: memcached - name: memcached
removable: True removable: true
version: 1.4* version: 1.4*
- name: python-configobj - name: python-configobj
removable: True removable: true
version: 4.7* version: 4.7*
- name: python-eventlet - name: python-eventlet
removable: True removable: true
version: 0.9* version: 0.9*
- name: python-greenlet - name: python-greenlet
removable: True removable: true
version: 0.3* version: 0.3*
- name: python-netifaces - name: python-netifaces
removable: True removable: true
version: 0.5* version: 0.5*
- name: python-paste-deploy - name: python-paste-deploy
removable: True removable: true
version: 1.5* version: 1.5*
- name: python-webob - name: python-webob
removable: True removable: true
version: 1.0* version: 1.0*
- name: pyxattr - name: pyxattr
removable: True removable: true
version: 0.5* version: 0.5*
- name: sqlite - name: sqlite
removable: True removable: true
version: 3.7* version: 3.7*
packager_name: devstack.packaging.yum:YumPackager
...

View File

@ -1,101 +1,42 @@
--- ---
# RedHat Enterprise Linux 6 # RedHat Enterprise Linux 6
distro_pattern: redhat-6(.*)
name: rhel-6 name: rhel-6
packager_name: devstack.distros.rhel6:YumPackager distro_pattern: redhat-6(.*)
commands: commands:
apache: apache:
restart: restart: service httpd restart
- service
- httpd
- restart
settings: settings:
# Ensure runs after wsgi.conf (file naming wise)
conf-link-target: /etc/httpd/conf.d/wsgi-horizon-000-default.conf conf-link-target: /etc/httpd/conf.d/wsgi-horizon-000-default.conf
start: start: service httpd start
- service status: service httpd status
- httpd stop: service httpd stop
- start
status:
- service
- httpd
- status
stop:
- service
- httpd
- stop
git: git:
checkout: checkout: git checkout
- git clone: git clone
- checkout pull: git pull
clone:
- git
- clone
pull:
- git
- pull
libvirt: libvirt:
restart: restart: service libvirtd restart
- service status: service libvirtd status
- libvirtd
- restart
status:
- service
- libvirtd
- status
mysql: mysql:
# NOTE: we aren't stopping any sql injection... create_db: mysql --user=%USER% --password=%PASSWORD% -e "CREATE DATABASE %DB%;"
create_db: drop_db: mysql --user=%USER% --password=%PASSWORD% -e "DROP DATABASE IF EXISTS
- mysql %DB%;"
- --user=%USER% grant_all: mysql --user=%USER% --password=%PASSWORD% -e "GRANT ALL PRIVILEGES
- --password=%PASSWORD% ON *.* TO '%USER%'@'%' IDENTIFIED BY '%PASSWORD%'; FLUSH PRIVILEGES;"
- -e restart: service mysqld restart
- CREATE DATABASE %DB%; set_pwd: mysql --user=%USER% --password=%OLD_PASSWORD% -e "USE mysql; UPDATE
drop_db: user SET password=PASSWORD('%NEW_PASSWORD%') WHERE User='%USER%'; FLUSH
- mysql PRIVILEGES;"
- --user=%USER% start: service mysqld start
- --password=%PASSWORD% status: service mysqld status
- -e stop: service mysqld stop
- DROP DATABASE IF EXISTS %DB%;
grant_all:
- mysql
- --user=%USER%
- --password=%PASSWORD%
- -e
- '"GRANT ALL PRIVILEGES ON *.* TO ''%USER%''@''%'' IDENTIFIED BY ''%PASSWORD%'';
FLUSH PRIVILEGES;"'
restart:
- service
- mysqld
- restart
set_pwd:
- mysql
- --user=%USER%
- --password=%OLD_PASSWORD%
- -e
- '"USE mysql; UPDATE user SET password=PASSWORD(''%NEW_PASSWORD%'') WHERE
User=''%USER%''; FLUSH PRIVILEGES;"'
start:
- service
- mysqld
- start
status:
- service
- mysqld
- status
stop:
- service
- mysqld
- stop
pip: pip-python pip: pip-python
rabbit-mq: rabbit-mq:
start: ['service', "rabbitmq-server", "start"] change_password: rabbitmqctl change_password guest
stop: ['service', "rabbitmq-server", "stop"] restart: service rabbitmq-server restart
status: ['service', "rabbitmq-server", "status"] start: service rabbitmq-server start
restart: ['service', "rabbitmq-server", "restart"] status: service rabbitmq-server status
change_password: ['rabbitmqctl', 'change_password', 'guest'] stop: service rabbitmq-server stop
components: components:
db: db:
install: devstack.distros.rhel6:DBInstaller install: devstack.distros.rhel6:DBInstaller
@ -702,5 +643,6 @@ components:
start: devstack.components.swift:SwiftRuntime start: devstack.components.swift:SwiftRuntime
stop: devstack.components.swift:SwiftRuntime stop: devstack.components.swift:SwiftRuntime
uninstall: devstack.components.swift:SwiftUninstaller uninstall: devstack.components.swift:SwiftUninstaller
packager_name: devstack.distros.rhel6:YumPackager
... ...

View File

@ -5,111 +5,41 @@ name: ubuntu-oneiric
packager_name: devstack.distros.oneiric:AptPackager packager_name: devstack.distros.oneiric:AptPackager
commands: commands:
apache: apache:
restart: restart: service apache2 restart
- service
- apache2
- restart
settings: settings:
conf-link-target: /etc/apache2/sites-enabled/000-default conf-link-target: /etc/apache2/sites-enabled/000-default
start: start: service apache2 start
- service status: service apache2 status
- apache2 stop: service apache2 stop
- start
status:
- service
- apache2
- status
stop:
- service
- apache2
- stop
git: git:
checkout: checkout: git checkout
- git clone: git clone
- checkout pull: git pull
clone:
- git
- clone
pull:
- git
- pull
iscsi: iscsi:
restart: restart: service tgt restart
- service start: service tgt start
- tgt status: service tgt status
- restart stop: service tgt stop
start:
- service
- tgt
- start
status:
- service
- tgt
- status
stop:
- service
- tgt
- stop
libvirt: libvirt:
restart: restart: service libvirt-bin restart
- service status: service libvirt-bin status
- libvirt-bin
- restart
status:
- service
- libvirt-bin
- status
mysql: mysql:
# NOTE: we aren't stopping any sql injection... # NOTE: we aren't stopping any sql injection...
create_db: create_db: mysql --user=%USER% --password=%PASSWORD% -e "CREATE DATABASE %DB%;"
- mysql drop_db: mysql --user=%USER% --password=%PASSWORD% -e "DROP DATABASE IF EXISTS %DB%;"
- --user=%USER% grant_all: mysql --user=%USER% --password=%PASSWORD% -e "GRANT ALL PRIVILEGES ON *.* TO '%USER%'@'%' IDENTIFIED BY '%PASSWORD%'; FLUSH PRIVILEGES;"
- --password=%PASSWORD% restart: service mysql restart
- -e set_pwd: mysql --user=%USER% --password=%OLD_PASSWORD% -e "USE mysql; UPDATE user SET password=PASSWORD('%NEW_PASSWORD%') WHERE User='%USER%'; FLUSH PRIVILEGES;"
- CREATE DATABASE %DB%; start: service mysql start
drop_db: status: service mysql status
- mysql stop: service mysql stop
- --user=%USER%
- --password=%PASSWORD%
- -e
- DROP DATABASE IF EXISTS %DB%;
grant_all:
- mysql
- --user=%USER%
- --password=%PASSWORD%
- -e
- '"GRANT ALL PRIVILEGES ON *.* TO ''%USER%''@''%'' IDENTIFIED BY ''%PASSWORD%'';
FLUSH PRIVILEGES;"'
restart:
- service
- mysql
- restart
set_pwd:
- mysql
- --user=%USER%
- --password=%OLD_PASSWORD%
- -e
- '"USE mysql; UPDATE user SET password=PASSWORD(''%NEW_PASSWORD%'') WHERE
User=''%USER%''; FLUSH PRIVILEGES;"'
start:
- service
- mysql
- start
status:
- service
- mysql
- status
stop:
- service
- mysql
- stop
pip: pip pip: pip
rabbit-mq: rabbit-mq:
start: ['service', "rabbitmq-server", "start"] start: service rabbitmq-server start
stop: ['service', "rabbitmq-server", "stop"] stop: service rabbitmq-server stop
status: ['service', "rabbitmq-server", "status"] status: service rabbitmq-server status
restart: ['service', "rabbitmq-server", "restart"] restart: service rabbitmq-server restart
change_password: ['rabbitmqctl', 'change_password', 'guest'] change_password: rabbitmqctl change_password guest
components: components:
db: db:

View File

@ -53,12 +53,12 @@ class DBUninstaller(comp.PkgUninstallComponent):
def pre_uninstall(self): def pre_uninstall(self):
dbtype = self.cfg.get("db", "type") dbtype = self.cfg.get("db", "type")
dbactions = self.distro.get_command(dbtype, quiet=True) dbactions = self.distro.get_command_config(dbtype, quiet=True)
try: try:
if dbactions: if dbactions:
LOG.info(("Attempting to reset your db password to \"%s\" so" LOG.info(("Attempting to reset your db password to \"%s\" so"
" that we can set it the next time you install.") % (RESET_BASE_PW)) " that we can set it the next time you install.") % (RESET_BASE_PW))
pwd_cmd = dbactions.get('set_pwd') pwd_cmd = self.distro.get_command(dbtype, 'set_pwd')
if pwd_cmd: if pwd_cmd:
LOG.info("Ensuring your database is started before we operate on it.") LOG.info("Ensuring your database is started before we operate on it.")
self.runtime.restart() self.runtime.restart()
@ -68,7 +68,7 @@ class DBUninstaller(comp.PkgUninstallComponent):
'USER': self.cfg.getdefaulted("db", "sql_user", 'root'), 'USER': self.cfg.getdefaulted("db", "sql_user", 'root'),
} }
cmds = [{'cmd': pwd_cmd}] cmds = [{'cmd': pwd_cmd}]
utils.execute_template(*cmds, params=params, shell=True) utils.execute_template(*cmds, params=params)
except IOError: except IOError:
LOG.warn(("Could not reset the database password. You might have to manually " LOG.warn(("Could not reset the database password. You might have to manually "
"reset the password to \"%s\" before the next install") % (RESET_BASE_PW)) "reset the password to \"%s\" before the next install") % (RESET_BASE_PW))
@ -111,12 +111,12 @@ class DBInstaller(comp.PkgInstallComponent):
# Extra actions to ensure we are granted access # Extra actions to ensure we are granted access
dbtype = self.cfg.get("db", "type") dbtype = self.cfg.get("db", "type")
dbactions = self.distro.get_command(dbtype, quiet=True) dbactions = self.distro.get_command_config(dbtype, quiet=True)
# Set your password # Set your password
try: try:
if dbactions: if dbactions:
pwd_cmd = dbactions.get('set_pwd') pwd_cmd = self.distro.get_command(dbtype, 'set_pwd')
if pwd_cmd: if pwd_cmd:
LOG.info(("Attempting to set your db password" LOG.info(("Attempting to set your db password"
" just incase it wasn't set previously.")) " just incase it wasn't set previously."))
@ -128,14 +128,14 @@ class DBInstaller(comp.PkgInstallComponent):
'OLD_PASSWORD': RESET_BASE_PW, 'OLD_PASSWORD': RESET_BASE_PW,
} }
cmds = [{'cmd': pwd_cmd}] cmds = [{'cmd': pwd_cmd}]
utils.execute_template(*cmds, params=params, shell=True) utils.execute_template(*cmds, params=params)
except IOError: except IOError:
LOG.warn(("Couldn't set your db password. It might have already been " LOG.warn(("Couldn't set your db password. It might have already been "
"set by a previous process.")) "set by a previous process."))
# Ensure access granted # Ensure access granted
if dbactions: if dbactions:
grant_cmd = dbactions.get('grant_all') grant_cmd = self.distro.get_command(dbtype, 'grant_all')
if grant_cmd: if grant_cmd:
user = self.cfg.getdefaulted("db", "sql_user", 'root') user = self.cfg.getdefaulted("db", "sql_user", 'root')
LOG.info("Updating the DB to give user '%s' full control of all databases." % (user)) LOG.info("Updating the DB to give user '%s' full control of all databases." % (user))
@ -148,7 +148,7 @@ class DBInstaller(comp.PkgInstallComponent):
cmds = [{'cmd': grant_cmd}] cmds = [{'cmd': grant_cmd}]
# Shell seems to be needed here # Shell seems to be needed here
# since python escapes this to much... # since python escapes this to much...
utils.execute_template(*cmds, params=params, shell=True) utils.execute_template(*cmds, params=params)
class DBRuntime(comp.EmptyRuntime): class DBRuntime(comp.EmptyRuntime):
@ -158,11 +158,11 @@ class DBRuntime(comp.EmptyRuntime):
def _get_run_actions(self, act, exception_cls): def _get_run_actions(self, act, exception_cls):
dbtype = self.cfg.get("db", "type") dbtype = self.cfg.get("db", "type")
distro_options = self.distro.get_command(dbtype) distro_options = self.distro.get_command_config(dbtype)
if distro_options is None: if distro_options is None:
msg = BASE_ERROR % (act, dbtype) msg = BASE_ERROR % (act, dbtype)
raise NotImplementedError(msg) raise NotImplementedError(msg)
return distro_options.get(act) return self.distro.get_command(dbtype, act)
def start(self): def start(self):
if self.status() != comp.STATUS_STARTED: if self.status() != comp.STATUS_STARTED:
@ -217,9 +217,8 @@ class DBRuntime(comp.EmptyRuntime):
def drop_db(cfg, pw_gen, distro, dbname): def drop_db(cfg, pw_gen, distro, dbname):
dbtype = cfg.get("db", "type") dbtype = cfg.get("db", "type")
dbactions = distro.get_command(dbtype) dropcmd = distro.get_command(dbtype, 'drop_db', silent=True)
if dbactions and dbactions.get('drop_db'): if dropcmd:
dropcmd = dbactions.get('drop_db')
params = dict() params = dict()
params['PASSWORD'] = pw_gen.get_password("sql", PASSWORD_PROMPT) params['PASSWORD'] = pw_gen.get_password("sql", PASSWORD_PROMPT)
params['USER'] = cfg.getdefaulted("db", "sql_user", 'root') params['USER'] = cfg.getdefaulted("db", "sql_user", 'root')
@ -237,9 +236,8 @@ def drop_db(cfg, pw_gen, distro, dbname):
def create_db(cfg, pw_gen, distro, dbname): def create_db(cfg, pw_gen, distro, dbname):
dbtype = cfg.get("db", "type") dbtype = cfg.get("db", "type")
dbactions = distro.get_command(dbtype) createcmd = distro.get_command(dbtype, 'create_db', silent=True)
if dbactions and dbactions.get('create_db'): if createcmd:
createcmd = dbactions.get('create_db')
params = dict() params = dict()
params['PASSWORD'] = pw_gen.get_password("sql", PASSWORD_PROMPT) params['PASSWORD'] = pw_gen.get_password("sql", PASSWORD_PROMPT)
params['USER'] = cfg.getdefaulted("db", "sql_user", 'root') params['USER'] = cfg.getdefaulted("db", "sql_user", 'root')

View File

@ -80,8 +80,9 @@ class HorizonInstaller(comp.PythonInstallComponent):
def _get_symlinks(self): def _get_symlinks(self):
links = comp.PythonInstallComponent._get_symlinks(self) links = comp.PythonInstallComponent._get_symlinks(self)
link_tgt = self.distro.get_command('apache', 'settings', link_tgt = self.distro.get_command_config(
'conf-link-target', quiet=True) 'apache', 'settings', 'conf-link-target',
quiet=True)
if link_tgt: if link_tgt:
src = self._get_target_config_name(HORIZON_APACHE_CONF) src = self._get_target_config_name(HORIZON_APACHE_CONF)
links[src] = link_tgt links[src] = link_tgt

View File

@ -49,6 +49,8 @@ RSYNC_SERVICE_RESTART = ['service', 'rsync', 'restart']
RSYSLOG_SERVICE_RESTART = ['service', 'rsyslog', 'restart'] RSYSLOG_SERVICE_RESTART = ['service', 'rsyslog', 'restart']
RSYNC_ON_OFF_RE = re.compile(r'^\s*RSYNC_ENABLE\s*=\s*(.*)$', re.I) RSYNC_ON_OFF_RE = re.compile(r'^\s*RSYNC_ENABLE\s*=\s*(.*)$', re.I)
# FIXME: This should come from the persona, if we really expect
# people to change it.
# Defines our auth service type # Defines our auth service type
AUTH_SERVICE = 'keystone' AUTH_SERVICE = 'keystone'

View File

@ -18,6 +18,7 @@
import glob import glob
import platform import platform
import re import re
import shlex
import yaml import yaml
@ -84,7 +85,7 @@ class Distro(object):
self._commands = commands self._commands = commands
self._components = components self._components = components
def get_command(self, key, *more_keys, **kargs): def get_command_config(self, key, *more_keys, **kargs):
""" Gets a end object for a given set of keys """ """ Gets a end object for a given set of keys """
root = self._commands root = self._commands
acutal_keys = [key] + list(more_keys) acutal_keys = [key] + list(more_keys)
@ -105,9 +106,18 @@ class Distro(object):
end_value = root[end_key] end_value = root[end_key]
else: else:
end_value = root.get(end_key) end_value = root.get(end_key)
LOG.debug("Retrieved end command: %s", end_value) LOG.debug("Retrieved end command config: %s", end_value)
return end_value return end_value
def get_command(self, key, *more_keys, **kargs):
"""Retrieves a string for running a command from the setup
and splits it to return a list.
"""
val = self.get_command_config(key, *more_keys, **kargs)
ret_val = shlex.split(val) if val else []
LOG.debug("Parsed configured command: %s", ret_val)
return ret_val
def known_component(self, name): def known_component(self, name):
return name in self._components return name in self._components

View File

@ -32,7 +32,7 @@ def _make_pip_name(name, version):
def install(pip, distro): def install(pip, distro):
name = pip['name'] name = pip['name']
root_cmd = distro.get_command('pip') root_cmd = distro.get_command_config('pip')
LOG.audit("Installing python package (%s) using pip command (%s)" % (name, root_cmd)) LOG.audit("Installing python package (%s) using pip command (%s)" % (name, root_cmd))
name_full = _make_pip_name(name, pip.get('version')) name_full = _make_pip_name(name, pip.get('version'))
real_cmd = [root_cmd, 'install'] + PIP_INSTALL_CMD_OPTS real_cmd = [root_cmd, 'install'] + PIP_INSTALL_CMD_OPTS

View File

@ -101,9 +101,9 @@ def execute(*cmd, **kwargs):
execute_cmd = str_cmd.strip() execute_cmd = str_cmd.strip()
if not shell: if not shell:
LOG.audit('Running cmd: %s' % (execute_cmd)) LOG.audit('Running cmd: %r' % (execute_cmd))
else: else:
LOG.audit('Running shell cmd: %s' % (execute_cmd)) LOG.audit('Running shell cmd: %r' % (execute_cmd))
if process_input is not None: if process_input is not None:
LOG.audit('With stdin: %s' % (process_input)) LOG.audit('With stdin: %s' % (process_input))