Hello community, here is the log from the commit of package salt-shaptools for openSUSE:Factory checked in at 2020-09-15 16:31:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/salt-shaptools (Old) and /work/SRC/openSUSE:Factory/.salt-shaptools.new.4249 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "salt-shaptools" Tue Sep 15 16:31:07 2020 rev:18 rq:834517 version:0.3.9+git.1600151923.c265ba1 Changes: -------- --- /work/SRC/openSUSE:Factory/salt-shaptools/salt-shaptools.changes 2020-06-11 14:52:32.674884170 +0200 +++ /work/SRC/openSUSE:Factory/.salt-shaptools.new.4249/salt-shaptools.changes 2020-09-15 16:31:27.466778748 +0200 @@ -1,0 +2,5 @@ +Fri Sep 11 14:09:09 UTC 2020 - Xabier Arbulu <xarb...@suse.com> + +- Add cloud_grains_present state + +------------------------------------------------------------------- Old: ---- salt-shaptools-0.3.9+git.1591860067.782f9ce.tar.gz New: ---- salt-shaptools-0.3.9+git.1600151923.c265ba1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ salt-shaptools.spec ++++++ --- /var/tmp/diff_new_pack.2k6Rte/_old 2020-09-15 16:31:28.378779621 +0200 +++ /var/tmp/diff_new_pack.2k6Rte/_new 2020-09-15 16:31:28.382779625 +0200 @@ -19,7 +19,7 @@ # See also https://en.opensuse.org/openSUSE:Specfile_guidelines Name: salt-shaptools -Version: 0.3.9+git.1591860067.782f9ce +Version: 0.3.9+git.1600151923.c265ba1 Release: 0 Summary: Salt modules and states for SAP Applications and SLE-HA components management ++++++ _service ++++++ --- /var/tmp/diff_new_pack.2k6Rte/_old 2020-09-15 16:31:28.414779655 +0200 +++ /var/tmp/diff_new_pack.2k6Rte/_new 2020-09-15 16:31:28.414779655 +0200 @@ -5,7 +5,7 @@ <param name="exclude">.git</param> <param name="filename">salt-shaptools</param> <param name="versionformat">0.3.9+git.%ct.%h</param> - <param name="revision">782f9ce5394989bd01af7e2f1cd65cc90e47fef1</param> + <param name="revision">c265ba1fc2e0f6f4c6bca2c4a8d8dbac61e93f13</param> </service> <service name="recompress" mode="disabled"> ++++++ salt-shaptools-0.3.9+git.1591860067.782f9ce.tar.gz -> salt-shaptools-0.3.9+git.1600151923.c265ba1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/salt-shaptools-0.3.9+git.1591860067.782f9ce/salt/states/crmshmod.py new/salt-shaptools-0.3.9+git.1600151923.c265ba1/salt/states/crmshmod.py --- old/salt-shaptools-0.3.9+git.1591860067.782f9ce/salt/states/crmshmod.py 2020-06-11 09:21:07.000000000 +0200 +++ new/salt-shaptools-0.3.9+git.1600151923.c265ba1/salt/states/crmshmod.py 2020-09-15 08:38:43.000000000 +0200 @@ -548,3 +548,55 @@ ret['comment'] = 'Cluster op_defaults configured' ret['result'] = True return ret + + +def cloud_grains_present( + name): + """ + Set the required cloud providers data in the grains. + + These grains are used by the `habootstrap-formula` to identify if the current + execution is being done in the cloud, and if this is the case, set the information + regarding the current cloud provider that is used later to run certain states and + populate the configuration templates. + + All providers: cloud_provider + Only gcp: gcp_instance_id, gcp_instance_name + + name: + This parameter is ignored + """ + + changes = {} + ret = {'name': name, + 'changes': changes, + 'result': False, + 'comment': ''} + + if __opts__['test']: + ret['result'] = None + ret['comment'] = 'Cloud grains would be set' + ret['changes'] = changes + return ret + + cloud_provider = __salt__['crm.detect_cloud']() + __salt__['grains.set']('cloud_provider', cloud_provider) + changes['cloud_provider'] = cloud_provider + + if cloud_provider == 'google-cloud-platform': + gcp_instance_id = __salt__['http.query']( + url='http://metadata.google.internal/computeMetadata/v1/instance/id', + header_dict={"Metadata-Flavor": "Google"})['body'] + __salt__['grains.set']('gcp_instance_id', gcp_instance_id) + changes['gcp_instance_id'] = gcp_instance_id + + gcp_instance_name = __salt__['http.query']( + url='http://metadata.google.internal/computeMetadata/v1/instance/name', + header_dict={"Metadata-Flavor": "Google"})['body'] + __salt__['grains.set']('gcp_instance_name', gcp_instance_name) + changes['gcp_instance_name'] = gcp_instance_name + + ret['changes'] = changes + ret['comment'] = 'Cloud grains set' + ret['result'] = True + return ret diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/salt-shaptools-0.3.9+git.1591860067.782f9ce/salt/states/hanamod.py new/salt-shaptools-0.3.9+git.1600151923.c265ba1/salt/states/hanamod.py --- old/salt-shaptools-0.3.9+git.1591860067.782f9ce/salt/states/hanamod.py 2020-06-11 09:21:07.000000000 +0200 +++ new/salt-shaptools-0.3.9+git.1600151923.c265ba1/salt/states/hanamod.py 2020-09-15 08:38:43.000000000 +0200 @@ -70,6 +70,20 @@ TMP_HDB_PWD_FILE = '/root/hdb_passwords.xml' INI_PARAM_PRELOAD_CS = {'section_name': 'system_replication', 'parameter_name': 'preload_column_tables'} INI_PARAM_GAL = {'section_name': 'memorymanager', 'parameter_name': 'global_allocation_limit'} +# This keys are retrieved from the xml passwords file created by hdbclm +PASSWORD_KEYS = [ + 'root_password', + 'sapadm_password', + 'master_password', + 'sapadm_password', + 'password', + 'system_user_password', + 'lss_user_password', + 'lss_backup_password', + 'streaming_cluster_manager_password', + 'ase_user_password', + 'org_manager_password' +] def __virtual__(): # pragma: no cover @@ -239,12 +253,16 @@ __salt__['file.move']( src=pwd_file, dst=TMP_HDB_PWD_FILE) + + extra_keys = _parse_dict(extra_parameters) + extra_keys = {key: value for (key, value) in extra_keys.items() if key in PASSWORD_KEYS} hdb_pwd_file = __salt__['hana.update_hdb_pwd_file']( hdb_pwd_file=TMP_HDB_PWD_FILE, root_password=root_password, password=password, sapadm_password=sapadm_password, - system_user_password=system_user_password) + system_user_password=system_user_password, + **extra_keys) ret['changes']['hdb_pwd_file'] = 'new' if config_file: __salt__['cp.get_file']( @@ -261,9 +279,10 @@ ret['changes']['config_file'] = 'new' if extra_parameters: extra_parameters = _parse_dict(extra_parameters) + extra_parameters = {key: value for (key, value) in extra_parameters.items() if key not in PASSWORD_KEYS} config_file = __salt__['hana.update_conf_file']( conf_file=config_file, - extra_parameters=extra_parameters) + **extra_parameters) __salt__['hana.install']( software_path=software_path, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/salt-shaptools-0.3.9+git.1591860067.782f9ce/salt-shaptools.changes new/salt-shaptools-0.3.9+git.1600151923.c265ba1/salt-shaptools.changes --- old/salt-shaptools-0.3.9+git.1591860067.782f9ce/salt-shaptools.changes 2020-06-11 09:21:07.000000000 +0200 +++ new/salt-shaptools-0.3.9+git.1600151923.c265ba1/salt-shaptools.changes 2020-09-15 08:38:43.000000000 +0200 @@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Fri Sep 11 14:09:09 UTC 2020 - Xabier Arbulu <xarb...@suse.com> + +- Add cloud_grains_present state + +------------------------------------------------------------------- Tue Jun 9 13:08:47 UTC 2020 - Xabier Arbulu <xarb...@suse.com> - Version 0.3.9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/salt-shaptools-0.3.9+git.1591860067.782f9ce/tests/unit/states/test_crmshmod.py new/salt-shaptools-0.3.9+git.1600151923.c265ba1/tests/unit/states/test_crmshmod.py --- old/salt-shaptools-0.3.9+git.1591860067.782f9ce/tests/unit/states/test_crmshmod.py 2020-06-11 09:21:07.000000000 +0200 +++ new/salt-shaptools-0.3.9+git.1600151923.c265ba1/tests/unit/states/test_crmshmod.py 2020-09-15 08:38:43.000000000 +0200 @@ -968,3 +968,68 @@ mock.call(option='data1', value='value1'), mock.call(option='data2', value='value2') ]) + + def test_cloud_grains_present_test(self): + ''' + Test to check cloud_grains_present in test mode + ''' + + ret = {'name': 'name', + 'changes': {}, + 'result': None, + 'comment': 'Cloud grains would be set'} + + with patch.dict(crmshmod.__opts__, {'test': True}): + assert crmshmod.cloud_grains_present('name') == ret + + def test_cloud_grains_present(self): + ''' + Test to check cloud_grains_present + ''' + + ret = {'name': 'name', + 'changes': {'cloud_provider': 'mycloud'}, + 'result': True, + 'comment': 'Cloud grains set'} + + mock_detect_cloud = MagicMock(return_value='mycloud') + mock_set_grains = MagicMock() + with patch.dict(crmshmod.__salt__, {'crm.detect_cloud': mock_detect_cloud, + 'grains.set': mock_set_grains}): + assert crmshmod.cloud_grains_present(name='name') == ret + mock_detect_cloud.assert_called_once_with() + mock_set_grains.assert_called_once_with('cloud_provider', 'mycloud') + + def test_cloud_grains_present_gcp(self): + ''' + Test to check cloud_grains_present for gcp + ''' + + ret = {'name': 'name', + 'changes': {'cloud_provider': 'google-cloud-platform', + 'gcp_instance_id': 'm_id', + 'gcp_instance_name': 'm_name'}, + 'result': True, + 'comment': 'Cloud grains set'} + + mock_detect_cloud = MagicMock(return_value='google-cloud-platform') + mock_set_grains = MagicMock() + mock_http_query = MagicMock(side_effect=[{'body': 'm_id'}, {'body': 'm_name'}]) + with patch.dict(crmshmod.__salt__, {'crm.detect_cloud': mock_detect_cloud, + 'grains.set': mock_set_grains, + 'http.query': mock_http_query}): + assert crmshmod.cloud_grains_present(name='name') == ret + mock_detect_cloud.assert_called_once_with() + mock_http_query.assert_has_calls([ + mock.call( + url='http://metadata.google.internal/computeMetadata/v1/instance/id', + header_dict={"Metadata-Flavor": "Google"}), + mock.call( + url='http://metadata.google.internal/computeMetadata/v1/instance/name', + header_dict={"Metadata-Flavor": "Google"}) + ]) + mock_set_grains.assert_has_calls([ + mock.call('cloud_provider', 'google-cloud-platform'), + mock.call('gcp_instance_id', 'm_id'), + mock.call('gcp_instance_name', 'm_name') + ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/salt-shaptools-0.3.9+git.1591860067.782f9ce/tests/unit/states/test_hanamod.py new/salt-shaptools-0.3.9+git.1600151923.c265ba1/tests/unit/states/test_hanamod.py --- old/salt-shaptools-0.3.9+git.1591860067.782f9ce/tests/unit/states/test_hanamod.py 2020-06-11 09:21:07.000000000 +0200 +++ new/salt-shaptools-0.3.9+git.1600151923.c265ba1/tests/unit/states/test_hanamod.py 2020-09-15 08:38:43.000000000 +0200 @@ -158,7 +158,7 @@ 'prd', '00', 'pass', '/software', 'root', config_file='hana.conf', root_password='Test1234', sapadm_password='Test1234', system_user_password='Test1234', - extra_parameters=[{'hostname': 'hana01'}]) == ret + extra_parameters=[{'hostname': 'hana01', 'org_manager_password': 'pass'}]) == ret mock_create_xml.assert_called_once_with( software_path='/software', @@ -170,13 +170,14 @@ dst=hanamod.TMP_HDB_PWD_FILE) mock_update_xml.assert_called_once_with( hdb_pwd_file=hanamod.TMP_HDB_PWD_FILE, root_password='Test1234', - password='pass', sapadm_password='Test1234', system_user_password='Test1234') + password='pass', sapadm_password='Test1234', system_user_password='Test1234', + org_manager_password='pass') mock_cp.assert_called_once_with( path='hana.conf', dest=hanamod.TMP_CONFIG_FILE) mock_update.assert_called_once_with( conf_file=hanamod.TMP_CONFIG_FILE, - extra_parameters={u'hostname': u'hana01'}) + hostname='hana01') mock_install.assert_called_once_with( software_path='/software', conf_file='hana_updated.conf', @@ -228,7 +229,7 @@ root_user='root'), mock.call( conf_file='hana_updated.conf', - extra_parameters={u'hostname': u'hana01'}) + hostname='hana01') ]) mock_install.assert_called_once_with(