diff --git a/defaults/main.yml b/defaults/main.yml index 04695f3..7562474 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -13,6 +13,18 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Name of the virtual env to deploy into +swift_venv_tag: untagged +swift_venv_bin: "/openstack/venvs/swift-{{ swift_venv_tag }}/bin" + +# Set this to enable or disable installing in a venv +swift_venv_enabled: true + +# The bin path defaults to the venv path however if installation in a +# venv is disabled the bin path will be dynamically set based on the +# system path used when the installing. +swift_bin: "{{ swift_venv_bin }}" + # Set the managed regions as a list of swift regions to manage # Use for global clusters, default when not set is all regions. # swift_managed_regions: diff --git a/tasks/main.yml b/tasks/main.yml index 84fe204..f16bced 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +- include: swift_command_check.yml + - include: swift_key_setup.yml tags: - swift-key diff --git a/tasks/swift_command_check.yml b/tasks/swift_command_check.yml new file mode 100644 index 0000000..56ac4bb --- /dev/null +++ b/tasks/swift_command_check.yml @@ -0,0 +1,30 @@ +--- +# Copyright 2015, Rackspace US, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +- name: Get swift command path + command: which swift + register: swift_command_path + when: + - not swift_venv_enabled | bool + tags: + - swift-command-bin + +- name: Set swift command path + set_fact: + swift_bin: "{{ swift_command_path.stdout | dirname }}" + when: + - not swift_venv_enabled | bool + tags: + - swift-command-bin diff --git a/tasks/swift_rings_build.yml b/tasks/swift_rings_build.yml index 1cc5320..65bdb15 100644 --- a/tasks/swift_rings_build.yml +++ b/tasks/swift_rings_build.yml @@ -14,8 +14,8 @@ # limitations under the License. - name: "Copy the swift_rings.py file" - copy: - src: swift_rings.py + template: + src: swift_rings.py.j2 dest: "/etc/swift/scripts/swift_rings.py" owner: "{{ swift_system_user_name }}" group: "{{ swift_system_group_name }}" diff --git a/tasks/swift_rings_post_distribution_check.yml b/tasks/swift_rings_post_distribution_check.yml index a8a36ee..371e9c8 100644 --- a/tasks/swift_rings_post_distribution_check.yml +++ b/tasks/swift_rings_post_distribution_check.yml @@ -33,8 +33,8 @@ - swift-ring-check - name: "Copy the swift_rings_check.py file" - copy: - src: swift_rings_check.py + template: + src: swift_rings_check.py.j2 dest: "/etc/swift/scripts/swift_rings_check.py" owner: "{{ swift_system_user_name }}" group: "{{ swift_system_group_name }}" diff --git a/files/swift_rings.py b/templates/swift_rings.py.j2 similarity index 97% rename from files/swift_rings.py rename to templates/swift_rings.py.j2 index f415a44..ad3cfb8 100644 --- a/files/swift_rings.py +++ b/templates/swift_rings.py.j2 @@ -16,6 +16,16 @@ from __future__ import print_function from optparse import OptionParser from os.path import exists + +import os + +{% if swift_venv_enabled | bool %} + +activate_this = os.path.expanduser("{{ swift_venv_bin }}/activate_this.py") +execfile(activate_this, dict(__file__=activate_this)) + +{% endif %} + from swift.cli.ringbuilder import main as rb_main import json diff --git a/files/swift_rings_check.py b/templates/swift_rings_check.py.j2 similarity index 97% rename from files/swift_rings_check.py rename to templates/swift_rings_check.py.j2 index 24cb296..827c05d 100644 --- a/files/swift_rings_check.py +++ b/templates/swift_rings_check.py.j2 @@ -17,6 +17,15 @@ from __future__ import print_function from optparse import OptionParser from os.path import exists +import os + +{% if swift_venv_enabled | bool %} + +activate_this = os.path.expanduser("{{ swift_venv_bin }}/activate_this.py") +execfile(activate_this, dict(__file__=activate_this)) + +{% endif %} + import json import pickle import sys