Changed default property values shown and added --all and --long flags.

Jira-Issue: OPENSTACK-558
This commit is contained in:
Borne Mace 2015-12-15 15:33:58 -08:00
parent 5ff4aaaaed
commit 5995838d10
4 changed files with 82 additions and 12 deletions

View File

@ -11,15 +11,19 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import logging
import traceback
import kollacli.i18n as u
from kollacli.common import properties
from kollacli.common import utils
from cliff.command import Command
from cliff.lister import Lister
LOG = logging.getLogger(__name__)
class PropertySet(Command):
"Property Set"
@ -65,14 +69,52 @@ class PropertyClear(Command):
class PropertyList(Lister):
"""List all properties"""
def get_parser(self, prog_name):
parser = super(PropertyList, self).get_parser(prog_name)
parser.add_argument('--all', action='store_true',
help=u._('List all properties'))
parser.add_argument('--long', action='store_true',
help=u._('Show all property attributes'))
return parser
def take_action(self, parsed_args):
ansible_properties = properties.AnsibleProperties()
property_list = ansible_properties.get_all_unique()
list_all = False
if parsed_args.all:
list_all = True
list_long = False
if parsed_args.long:
list_long = True
property_length = utils.get_property_list_length()
data = []
if property_list:
for value in property_list:
data.append((value.name, value.value))
else:
data.append(('', ''))
for prop in property_list:
include_prop = False
if (prop.value is not None and
len(str(prop.value)) > property_length):
if list_all:
include_prop = True
else:
include_prop = True
return ((u._('Property Name'), u._('Property Value')), data)
if include_prop:
if list_long:
data.append((prop.name, prop.value, prop.overrides,
prop.orig_value))
else:
data.append((prop.name, prop.value))
else:
if list_long:
data.append(('', '', '', ''))
else:
data.append(('', ''))
if list_long:
return ((u._('Property Name'), u._('Property Value'),
u._('Overrides'), u._('Original Value')), data)
else:
return ((u._('Property Name'), u._('Property Value')), data)

View File

@ -61,7 +61,6 @@ class AnsibleProperties(object):
with open(file_name) as service_file:
service_contents = yaml.safe_load(service_file)
self.file_contents[file_name] = service_contents
service_contents = self.filter_jinja2(service_contents)
prop_file_name = service_name + ':main.yml'
for key, value in service_contents.items():
ansible_property = AnsibleProperty(key, value,
@ -76,10 +75,15 @@ class AnsibleProperties(object):
with open(self.allvars_path) as allvars_file:
allvars_contents = yaml.safe_load(allvars_file)
self.file_contents[self.allvars_path] = allvars_contents
allvars_contents = self.filter_jinja2(allvars_contents)
for key, value in allvars_contents.items():
overrides = False
orig_value = None
if key in self.unique_properties:
overrides = True
orig_value = self.unique_properties[key].value
ansible_property = AnsibleProperty(key, value,
'group_vars/all.yml')
'group_vars/all.yml',
overrides, orig_value)
self.properties.append(ansible_property)
self.unique_properties[key] = ansible_property
except Exception as e:
@ -90,10 +94,15 @@ class AnsibleProperties(object):
globals_data = sync_read_file(self.globals_path)
globals_contents = yaml.safe_load(globals_data)
self.file_contents[self.globals_path] = globals_contents
globals_contents = self.filter_jinja2(globals_contents)
for key, value in globals_contents.items():
overrides = False
orig_value = None
if key in self.unique_properties:
overrides = True
orig_value = self.unique_properties[key].value
ansible_property = AnsibleProperty(key, value,
GLOBALS_FILENAME)
GLOBALS_FILENAME,
overrides, orig_value)
self.properties.append(ansible_property)
self.unique_properties[key] = ansible_property
except Exception as e:
@ -115,6 +124,9 @@ class AnsibleProperties(object):
unique_list.append(value)
return sorted(unique_list, key=lambda x: x.name)
# TODO -- if this isn't used for 2.1.x it should be removed
# property listing is still being tweaked so leaving for
# the time being in case we want to use it
def filter_jinja2(self, contents):
new_contents = {}
for key, value in contents.items():
@ -150,7 +162,10 @@ class AnsibleProperties(object):
class AnsibleProperty(object):
def __init__(self, name, value, file_name):
def __init__(self, name, value, file_name, overrides=False,
orig_value=None):
self.name = name
self.value = value
self.file_name = file_name
self.overrides = overrides
self.orig_value = orig_value

View File

@ -66,6 +66,19 @@ def get_kolla_log_file_size():
return size
def get_property_list_length():
envvar = 'KOLLA_PROP_LIST_LENGTH'
length_str = os.environ.get(envvar, '50')
try:
length = int(length_str)
except Exception:
raise CommandError(
u._('Environmental variable ({env_var}) is not an '
'integer ({prop_length}).')
.format(env_var=envvar, prop_length=length_str))
return length
def get_admin_user():
return os.environ.get("KOLLA_CLI_ADMIN_USER", "kolla")

View File

@ -2,7 +2,7 @@ ansible>=1.9.2
Babel>=0.9.6
cliff>=1.13.0 # Apache-2.0
cliff-tablib>=1.1
docker-py>=1.3.1
docker-py==1.3.1
jsonpickle>=0.9
oslo.i18n>=1.3.0 # Apache-2.0
oslo.utils!=2.6.0,>=2.4.0 # Apache-2.0