Implement swift venv support

This commit conditionally allows the os_swift role to
install build and deploy within a venv. This is the new
default behavior of the role however the functionality
can be disabled.

In this PR, like all of the other venv related PRs, the 
`is_metal` flag was removed from the role however unlike 
some of the other PRs this removal required moving some 
of the `is_metal` logic out of the role and into the 
play. This was done for consistency as well as making 
the role more standalone. The only thing that the role 
should care about, in terms of installation, is whether 
or not to install in a venv.

Change-Id: I6f5b883a853611659567bd12e8bcf572189854b7
Implements: blueprint enable-venv-support-within-the-roles
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
This commit is contained in:
Kevin Carter 2015-10-03 01:33:27 -05:00
parent 6f8d14aa19
commit eae366558a
7 changed files with 67 additions and 4 deletions

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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 }}"

View File

@ -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 }}"

View File

@ -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

View File

@ -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