840
840
openstack.git_src_dir(openstack_origin_git, 'keystone')
841
841
join.assert_called_with('/mnt/openstack-git', 'keystone')
843
def test_incomplete_relation_data(self):
844
configs = MagicMock()
845
configs.complete_contexts.return_value = ['pgsql-db', 'amqp']
846
required_interfaces = {
847
'database': ['shared-db', 'pgsql-db'],
848
'message': ['amqp', 'zeromq-configuration'],
849
'identity': ['identity-service']}
850
expected_result = 'identity'
852
result = openstack.incomplete_relation_data(configs, required_interfaces)
853
self.assertTrue(expected_result in result.keys())
855
@patch('charmhelpers.contrib.openstack.utils.status_set')
856
def test_set_os_workload_status_complete(self, status_set):
857
configs = MagicMock()
858
configs.complete_contexts.return_value = ['shared-db',
861
required_interfaces = {
862
'database': ['shared-db', 'pgsql-db'],
863
'message': ['amqp', 'zeromq-configuration'],
864
'identity': ['identity-service']}
866
openstack.set_os_workload_status(configs, required_interfaces)
867
status_set.assert_called_with('active', 'Unit is ready')
869
@patch('charmhelpers.contrib.openstack.utils.incomplete_relation_data',
870
return_value={'identity': {'identity-service': {'related': True}}})
871
@patch('charmhelpers.contrib.openstack.utils.status_set')
872
def test_set_os_workload_status_related_incomplete(self, status_set,
873
incomplete_relation_data):
874
configs = MagicMock()
875
configs.complete_contexts.return_value = ['shared-db', 'amqp']
876
required_interfaces = {
877
'database': ['shared-db', 'pgsql-db'],
878
'message': ['amqp', 'zeromq-configuration'],
879
'identity': ['identity-service']}
881
openstack.set_os_workload_status(configs, required_interfaces)
882
status_set.assert_called_with('waiting',
883
"Incomplete relations: identity")
885
@patch('charmhelpers.contrib.openstack.utils.incomplete_relation_data',
886
return_value={'identity': {'identity-service': {'related': False}}})
887
@patch('charmhelpers.contrib.openstack.utils.status_set')
888
def test_set_os_workload_status_absent(self, status_set,
889
incomplete_relation_data):
890
configs = MagicMock()
891
configs.complete_contexts.return_value = ['shared-db', 'amqp']
892
required_interfaces = {
893
'database': ['shared-db', 'pgsql-db'],
894
'message': ['amqp', 'zeromq-configuration'],
895
'identity': ['identity-service']}
897
openstack.set_os_workload_status(configs, required_interfaces)
898
status_set.assert_called_with('blocked',
899
'Missing relations: identity')
901
@patch('charmhelpers.contrib.openstack.utils.hook_name',
902
return_value='identity-service-relation-broken')
903
@patch('charmhelpers.contrib.openstack.utils.incomplete_relation_data',
904
return_value={'identity': {'identity-service': {'related': True}}})
905
@patch('charmhelpers.contrib.openstack.utils.status_set')
906
def test_set_os_workload_status_related_broken(self, status_set,
907
incomplete_relation_data,
909
configs = MagicMock()
910
configs.complete_contexts.return_value = ['shared-db', 'amqp']
911
required_interfaces = {
912
'database': ['shared-db', 'pgsql-db'],
913
'message': ['amqp', 'zeromq-configuration'],
914
'identity': ['identity-service']}
916
openstack.set_os_workload_status(configs, required_interfaces)
917
status_set.assert_called_with('blocked',
918
"Missing relations: identity")
920
@patch('charmhelpers.contrib.openstack.utils.incomplete_relation_data',
921
return_value={'identity':
922
{'identity-service': {'related': True}},
925
{'amqp': {'missing_data': ['rabbitmq-password'],
929
{'shared-db': {'related': False}}
931
@patch('charmhelpers.contrib.openstack.utils.status_set')
932
def test_set_os_workload_status_mixed(self, status_set, incomplete_relation_data):
933
configs = MagicMock()
934
configs.complete_contexts.return_value = ['shared-db', 'amqp']
935
required_interfaces = {
936
'database': ['shared-db', 'pgsql-db'],
937
'message': ['amqp', 'zeromq-configuration'],
938
'identity': ['identity-service']}
940
openstack.set_os_workload_status(configs, required_interfaces)
941
status_set.assert_called_with('blocked',
942
"Missing relations: database; "
943
"incomplete relations: message, "
843
946
if __name__ == '__main__':