150 lines
5.6 KiB
Python
150 lines
5.6 KiB
Python
# Copyright(c) 2016, Oracle and/or its affiliates. All Rights Reserved.
|
|
#
|
|
# 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.
|
|
#
|
|
import os
|
|
import unittest
|
|
|
|
import kolla_cli.api.properties
|
|
|
|
from kolla_cli.api.client import ClientApi
|
|
from kolla_cli.tests.functional.common import KollaCliTest
|
|
|
|
CLIENT = ClientApi()
|
|
|
|
|
|
class TestFunctional(KollaCliTest):
|
|
|
|
def test_config_reset(self):
|
|
# test global property reset
|
|
# set a property and make sure it was set correctly
|
|
property_dict = {'test': 'test'}
|
|
CLIENT.property_set(property_dict)
|
|
fetched_properties = CLIENT.property_get()
|
|
fetched_dict = self._properties_to_dict(fetched_properties)
|
|
self.assertIs(self._in_dict(property_dict, fetched_dict), True,
|
|
'property set failed')
|
|
|
|
# now clear the config and make sure the property we just
|
|
# set is now gone
|
|
CLIENT.config_reset()
|
|
fetched_properties = CLIENT.property_get()
|
|
fetched_dict = self._properties_to_dict(fetched_properties)
|
|
self.assertIs(self._in_dict(property_dict, fetched_dict), False,
|
|
'global property reset config failed')
|
|
|
|
# test host property reset
|
|
host_list = ['test']
|
|
CLIENT.host_add(host_list)
|
|
CLIENT.property_set(property_dict,
|
|
kolla_cli.api.properties.HOST_TYPE)
|
|
fetched_properties = CLIENT.property_get(
|
|
kolla_cli.api.properties.HOST_TYPE, host_list)
|
|
fetched_dict = self._properties_to_dict(fetched_properties)
|
|
self.assertIs(self._in_dict(property_dict, fetched_dict), True,
|
|
'host property set failed')
|
|
|
|
CLIENT.config_reset()
|
|
# need to add back in the host 'test' or the property
|
|
# get call will fail after a reset
|
|
CLIENT.host_add(host_list)
|
|
fetched_properties = CLIENT.property_get(
|
|
kolla_cli.api.properties.HOST_TYPE, host_list)
|
|
fetched_dict = self._properties_to_dict(fetched_properties)
|
|
self.assertIs(self._in_dict(property_dict, fetched_dict), False,
|
|
'host property reset config failed')
|
|
|
|
# test group property reset
|
|
group_list = ['control']
|
|
CLIENT.property_set(property_dict,
|
|
kolla_cli.api.properties.GROUP_TYPE)
|
|
fetched_properties = CLIENT.property_get(
|
|
kolla_cli.api.properties.GROUP_TYPE, group_list)
|
|
fetched_dict = self._properties_to_dict(fetched_properties)
|
|
self.assertIs(self._in_dict(property_dict, fetched_dict), True,
|
|
'group property set failed')
|
|
|
|
CLIENT.config_reset()
|
|
fetched_properties = CLIENT.property_get(
|
|
kolla_cli.api.properties.GROUP_TYPE, group_list)
|
|
fetched_dict = self._properties_to_dict(fetched_properties)
|
|
self.assertIs(self._in_dict(property_dict, fetched_dict), False,
|
|
'group property reset config failed')
|
|
|
|
# test host reset
|
|
# add a host and make sure it was added correctly
|
|
host_list = ['test']
|
|
CLIENT.host_add(host_list)
|
|
fetched_hosts = CLIENT.host_get_all()
|
|
fetched_list = self._hosts_to_list(fetched_hosts)
|
|
self.assertIs(set(host_list).issubset(fetched_list), True,
|
|
'host set failed')
|
|
|
|
# now clear the config and make sure the host we just
|
|
# added is now gone
|
|
CLIENT.config_reset()
|
|
fetched_hosts = CLIENT.host_get_all()
|
|
fetched_list = self._hosts_to_list(fetched_hosts)
|
|
self.assertIs(set(host_list).issubset(fetched_list), False,
|
|
'inventory reset config failed')
|
|
|
|
# need to populate the password file or many other tests will fail
|
|
CLIENT.password_init()
|
|
|
|
def test_config_import_inventory(self):
|
|
# test config import of a different inventory file
|
|
expected_group_names = ['chipmunk', 'aardvark']
|
|
test_inventory_path = os.path.join(
|
|
os.getcwd(), 'kolla_cli', 'tests', 'functional',
|
|
'inventory_test_file')
|
|
CLIENT.config_import_inventory(file_path=test_inventory_path)
|
|
groups = CLIENT.group_get_all()
|
|
self.assertEqual(len(groups), len(expected_group_names))
|
|
for group in groups:
|
|
self.assertIn(group.name, expected_group_names)
|
|
|
|
# need to reset the inventory back to its defaults
|
|
CLIENT.config_reset()
|
|
|
|
@staticmethod
|
|
def _properties_to_dict(props):
|
|
property_dict = {}
|
|
for prop in props:
|
|
property_dict[prop.name] = prop.value
|
|
return property_dict
|
|
|
|
@staticmethod
|
|
def _hosts_to_list(hosts):
|
|
host_list = []
|
|
for host in hosts:
|
|
host_list.append(host.name)
|
|
return host_list
|
|
|
|
@staticmethod
|
|
def _in_dict(base, target):
|
|
base_keys = base.keys()
|
|
target_keys = target.keys()
|
|
if set(base_keys).issubset(target_keys) is False:
|
|
return False
|
|
|
|
for key in base.keys():
|
|
target_value = target.get(key, None)
|
|
if target_value != base[key]:
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|