Пример #1
0
 def test_if_all_methods_catch_exception(self):
     data = self.set_default_args()
     data['source_hostname'] = '10.10.10.10'
     data['source_volume'] = 'ansible'
     data['destination_volume'] = 'ansible2'
     set_module_args(data)
     my_obj = my_module()
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapmirror_fail')
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.snapmirror_get()
     assert 'Error fetching snapmirror info: ' in exc.value.args[0]['msg']
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.snapmirror_abort()
     assert 'Error aborting SnapMirror relationship :' in exc.value.args[0][
         'msg']
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.snapmirror_quiesce = Mock(return_value=None)
         my_obj.snapmirror_break()
     assert 'Error breaking SnapMirror relationship :' in exc.value.args[0][
         'msg']
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.snapmirror_get = Mock(
             return_value={'mirror_state': 'transferring'})
         my_obj.snapmirror_initialize()
     assert 'Error initializing SnapMirror :' in exc.value.args[0]['msg']
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.snapmirror_update('data_protection')
     assert 'Error updating SnapMirror :' in exc.value.args[0]['msg']
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.set_source_cluster_connection = Mock(return_value=True)
         my_obj.source_server = MockONTAPConnection('snapmirror_fail')
         my_obj.check_if_remote_volume_exists()
     assert 'Error fetching source volume details' in exc.value.args[0][
         'msg']
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.check_if_remote_volume_exists = Mock(return_value=True)
         my_obj.source_server = MockONTAPConnection()
         my_obj.snapmirror_create()
     assert 'Error creating SnapMirror ' in exc.value.args[0]['msg']
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.snapmirror_quiesce = Mock(return_value=None)
         my_obj.get_destination = Mock(return_value=None)
         my_obj.snapmirror_break = Mock(return_value=None)
         my_obj.delete_snapmirror(False, 'data_protection', None)
     assert 'Error deleting SnapMirror :' in exc.value.args[0]['msg']
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.snapmirror_modify({
             'policy': 'ansible2',
             'schedule': 'abc2'
         })
     assert 'Error modifying SnapMirror schedule or policy :' in exc.value.args[
         0]['msg']
Пример #2
0
 def test_successful_rest_create(self, mock_request):
     ''' creating snapmirror and testing idempotency '''
     data = self.set_default_args()
     data.pop('relationship_type')
     data['initialize'] = False      # the first get fails, as we pretend the relationship does not exist
     set_module_args(data)
     mock_request.side_effect = [
         SRR['is_rest'],             # REST support
         SRR['empty_good'],          # POST
         SRR['end_of_sequence']
     ]
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = self.server
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert exc.value.args[0]['changed']
     mock_request.assert_called_with('POST', 'snapmirror/relationships/', {'return_timeout': 60},
                                     json={'source': {'path': 'ansible:ansible'},
                                           'destination': {'path': 'ansible:ansible'},
                                           'policy': 'ansible'})
     # Idempotency, relationship already exists
     # to reset na_helper from remembering the previous 'changed' value
     data = self.set_default_args()
     data['update'] = False
     set_module_args(data)
     mock_request.side_effect = [
         SRR['is_rest'],             # REST support
         SRR['end_of_sequence']
     ]
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapmirror', 'snapmirrored', status='idle')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert not exc.value.args[0]['changed']
Пример #3
0
 def test_cluster_create_called(self, cluster_create, get_cl_id):
     ''' creating cluster'''
     get_cl_id.return_value = None
     module_args = {}
     module_args.update(self.set_default_args())
     set_module_args(module_args)
     my_obj = my_module()
     my_obj.autosupport_log = Mock(return_value=None)
     if not self.use_vsim:
         my_obj.server = MockONTAPConnection('cluster_success')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     print('Info: test_cluster_apply: %s' % repr(exc.value))
     cluster_create.assert_called_with()
Пример #4
0
 def test_ensure_apply_for_cluster_called(self, get_cl_id):
     ''' creating cluster and checking idempotency '''
     get_cl_id.return_value = None
     module_args = {}
     module_args.update(self.set_default_args())
     set_module_args(module_args)
     my_obj = my_module()
     my_obj.autosupport_log = Mock(return_value=None)
     if not self.use_vsim:
         my_obj.server = MockONTAPConnection('cluster')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     print('Info: test_cluster_apply: %s' % repr(exc.value))
     assert exc.value.args[0]['changed']
Пример #5
0
 def get_ucadapter_mock_object(self, kind=None, data=None):
     """
     Helper method to return an na_ontap_unix_user object
     :param kind: passes this param to MockONTAPConnection()
     :return: na_ontap_unix_user object
     """
     obj = ucadapter_module()
     obj.autosupport_log = Mock(return_value=None)
     params = self.mock_ucadapter
     if data is not None:
         for k, v in data.items():
             params[k] = v
     obj.server = MockONTAPConnection(kind=kind, data=params)
     return obj
Пример #6
0
 def test_disk_firmware_upgrade(self, get_mock):
     ''' Test disk firmware upgrade '''
     module_args = {}
     module_args.update(self.set_default_args())
     module_args.update({'firmware_type': 'disk'})
     set_module_args(module_args)
     my_obj = my_module()
     my_obj.autosupport_log = Mock(return_value=None)
     if not self.use_vsim:
         my_obj.server = self.server
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     print('Info: test_firmware_upgrade_apply: %s' % repr(exc.value))
     assert exc.value.args[0]['changed']
 def test_successful_create(self, snapmirror_create):
     ''' creating snapmirror and testing idempotency '''
     data = self.set_default_args()
     data['schedule'] = 'abc'
     data['identity_preserve'] = True
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = self.server
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert exc.value.args[0]['changed']
     snapmirror_create.assert_called_with()
     # to reset na_helper from remembering the previous 'changed' value
     set_module_args(self.set_default_args())
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapmirror', 'snapmirrored', status='idle')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert not exc.value.args[0]['changed']
Пример #8
0
 def test_snapmirror_resume(self, snapmirror_resume):
     ''' resuming snapmirror '''
     data = self.set_default_args()
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapmirror',
                                             status='quiesced',
                                             parm='snapmirrored')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert exc.value.args[0]['changed']
     snapmirror_resume.assert_called_with()
 def test_cluster_join_called(self, cluster_join):
     ''' creating cluster_join'''
     data = self.set_default_args()
     del data['cluster_name']
     data['cluster_ip_address'] = '10.10.10.10'
     set_module_args(data)
     my_obj = my_module()
     my_obj.autosupport_log = Mock(return_value=None)
     if not self.use_vsim:
         my_obj.server = MockONTAPConnection('cluster_add')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     print('Info: test_cluster_apply: %s' % repr(exc.value))
     cluster_join.assert_called_with()
Пример #10
0
 def test_cluster_create_old_api(self, get_cl_id, sleep_mock):
     ''' creating cluster'''
     get_cl_id.return_value = None
     module_args = {}
     module_args.update(self.set_default_args())
     set_module_args(module_args)
     my_obj = my_module()
     my_obj.autosupport_log = Mock(return_value=None)
     if not self.use_vsim:
         my_obj.server = MockONTAPConnection('cluster_extra_input')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     print('Info: test_cluster_apply: %s' % repr(exc.value))
     assert exc.value.args[0]['changed']
 def get_snaplock_mock_object(self, kind=None):
     """
     Helper method to return an na_ontap_volume_snaplock object
     :param kind: passes this param to MockONTAPConnection()
     :return: na_ontap_volume_snaplock object
     """
     snaplock_obj = snaplock_module()
     netapp_utils.ems_log_event = Mock(return_value=None)
     if kind is None:
         snaplock_obj.server = MockONTAPConnection()
     else:
         snaplock_obj.server = MockONTAPConnection(kind=kind,
                                                   data=self.mock_snaplock)
     return snaplock_obj
 def test_successful_create_with_rest(self, snapmirror_create_policy):
     ''' creating snapmirror_policy and testing idempotency '''
     data = self.set_default_args()
     data['use_rest'] = 'Always'
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     my_obj.get_snapmirror_policy = Mock(return_value=None)
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert exc.value.args[0]['changed']
     snapmirror_create_policy.assert_called_with()
     # to reset na_helper from remembering the previous 'changed' value
     data = self.set_default_args(use_rest='Never')
     data['use_rest'] = 'Always'
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     my_obj.get_snapmirror_policy = Mock(
         return_value=SRR['get_snapmirror_policy'])
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert not exc.value.args[0]['changed']
 def test_successful_enable_policy(self, modify_snapshot):
     ''' enabling snapshot policy and testing idempotency '''
     data = self.set_default_args()
     data['enabled'] = True
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapshot_policy_info_policy_disabled')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert exc.value.args[0]['changed']
     current = self.set_default_current()
     current['enabled'] = False
     modify_snapshot.assert_called_with(current)
     # to reset na_helper from remembering the previous 'changed' value
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('policy')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert not exc.value.args[0]['changed']
 def test_successful_modify_schedules(self, modify_snapshot):
     ''' modifying snapshot policy schedule counts and testing idempotency '''
     data = self.set_default_args()
     data['schedule'] = ['hourly', 'daily', 'weekly']
     data['count'] = [10, 50, 100]
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('policy')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert exc.value.args[0]['changed']
     current = self.set_default_current()
     modify_snapshot.assert_called_with(current)
     # to reset na_helper from remembering the previous 'changed' value
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapshot_policy_info_modified_schedule_counts')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert not exc.value.args[0]['changed']
 def test_successful_create_with_rules_via_rest(self, snapmirror_create_policy, send_request):
     ''' creating snapmirror policy with rules via rest and testing idempotency '''
     data = self.set_default_args(use_rest='Always', with_rules=True)
     set_module_args(data)
     send_request.side_effect = [SRR['is_rest'], SRR['empty_good'], SRR['empty_good'], SRR['end_of_sequence']]
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     my_obj.get_snapmirror_policy = Mock()
     my_obj.get_snapmirror_policy.side_effect = [None, SRR['get_snapmirror_policy']]
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert exc.value.args[0]['changed']
     snapmirror_create_policy.assert_called_with()
     # to reset na_helper from remembering the previous 'changed' value
     data = self.set_default_args(use_rest='Always', with_rules=True)
     set_module_args(data)
     send_request.side_effect = [SRR['is_rest'], SRR['end_of_sequence']]
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     my_obj.get_snapmirror_policy = Mock(return_value=SRR['get_snapmirror_policy_with_rules'])
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert not exc.value.args[0]['changed']
Пример #16
0
 def get_mock_object(self, kind=None):
     """
     Helper method to return an na_ontap_firewall_policy object
     :param kind: passes this param to MockONTAPConnection()
     :return: na_ontap_firewall_policy object
     """
     obj = fp_module()
     obj.autosupport_log = Mock(return_value=None)
     if kind is None:
         obj.server = MockONTAPConnection()
     else:
         mock_data = self.mock_config if kind == 'config' else self.mock_policy
         obj.server = MockONTAPConnection(kind=kind, data=mock_data)
     return obj
 def get_net_route_mock_object(self, kind=None, data=None, type='zapi'):
     """
     Helper method to return an na_ontap_net_route object
     :param kind: passes this param to MockONTAPConnection()
     :param data: passes this data to  MockONTAPConnection()
     :param type: differentiates zapi and rest procedure
     :return: na_ontap_net_route object
     """
     net_route_obj = net_route_module()
     if type == 'zapi':
         net_route_obj.ems_log_event = Mock(return_value=None)
         net_route_obj.cluster = Mock()
         net_route_obj.cluster.invoke_successfully = Mock()
         if kind is None:
             net_route_obj.server = MockONTAPConnection()
         else:
             if data is None:
                 net_route_obj.server = MockONTAPConnection(
                     kind='net_route', data=self.mock_net_route)
             else:
                 net_route_obj.server = MockONTAPConnection(
                     kind='net_route', data=data)
     return net_route_obj
 def test_successful_delete(self, delete_snapmirror):
     ''' deleting snapmirror and testing idempotency '''
     data = self.set_default_args()
     data['state'] = 'absent'
     data['source_hostname'] = '10.10.10.10'
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     my_obj.get_destination = Mock(return_value=True)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapmirror', status='idle')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert exc.value.args[0]['changed']
     delete_snapmirror.assert_called_with(False, 'data_protection', None)
     # to reset na_helper from remembering the previous 'changed' value
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = self.server
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert not exc.value.args[0]['changed']
 def test_successful_initialize(self, snapmirror_initialize):
     ''' initialize snapmirror and testing idempotency '''
     data = self.set_default_args()
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapmirror', status='idle', parm='uninitialized')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert exc.value.args[0]['changed']
     snapmirror_initialize.assert_called_with()
     # to reset na_helper from remembering the previous 'changed' value
     data = self.set_default_args()
     data['update'] = False
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapmirror', status='idle', parm='snapmirrored')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert not exc.value.args[0]['changed']
Пример #20
0
 def get_interface_mock_object(self, kind=None):
     """
     Helper method to return an na_ontap_interface object
     :param kind: passes this param to MockONTAPConnection()
     :return: na_ontap_interface object
     """
     interface_obj = interface_module()
     interface_obj.autosupport_log = Mock(return_value=None)
     if kind is None:
         interface_obj.server = MockONTAPConnection()
     else:
         interface_obj.server = MockONTAPConnection(
             kind=kind, data=self.mock_interface)
     return interface_obj
 def test_failure_break(self):
     ''' breaking snapmirror to test quiesce time-delay failure '''
     data = self.set_default_args()
     data['relationship_state'] = 'broken'
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapmirror', 'snapmirrored', status='idle', quiesce_status='InProgress')
     with pytest.raises(AnsibleFailJson) as exc:
         # replace time.sleep with a noop
         with patch('time.sleep', lambda a: None):
             my_obj.apply()
     assert 'Taking a long time to Quiescing SnapMirror, try again later' in exc.value.args[0]['msg']
Пример #22
0
 def test_successful_delete_check_get_destination(self):
     ''' check required parameter source cluster hostname deleting snapmirror'''
     data = self.set_default_args()
     data['state'] = 'absent'
     data['source_hostname'] = '10.10.10.10'
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapmirror', status='idle')
         my_obj.source_server = MockONTAPConnection('snapmirror',
                                                    status='idle')
     res = my_obj.get_destination()
     assert res is True
 def test_valid_schedule_count(self):
     ''' validate when schedule has same number of elements '''
     data = self.set_default_args()
     data['schedule'] = ['hourly', 'daily', 'weekly', 'monthly', '5min']
     data['count'] = [1, 2, 3, 4, 5]
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = self.server
     my_obj.create_snapshot_policy()
     create_xml = my_obj.server.xml_in
     assert data['count'][2] == int(create_xml['count3'])
     assert data['schedule'][4] == create_xml['schedule5']
Пример #24
0
 def test_successful_rest_create_with_create_destination_new_style(
         self, mock_request, mock_get_policy):
     ''' creating snapmirror and testing idempotency '''
     data = self.set_default_args()
     data.pop('relationship_type')
     data.pop('use_rest')
     data.pop('destination_path')
     data.pop('source_path')
     data.pop('destination_vserver')
     data.pop('source_vserver')
     data['create_destination'] = dict(tiering=dict(policy='all'))
     data['destination_endpoint'] = dict(path='ansible_svm:ansible')
     data['source_endpoint'] = dict(path='ansible:ansible')
     data['source_endpoint'] = dict(path='ansible:ansible')
     set_module_args(data)
     mock_request.side_effect = [
         SRR['is_rest'],  # REST support
         SRR['empty_good'],  # POST to create snapmirror relationship
         SRR['end_of_sequence']
     ]
     mock_get_policy.return_value = 'async', None
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = self.server
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert exc.value.args[0]['changed']
     mock_request.assert_called_with('POST',
                                     'snapmirror/relationships/',
                                     {'return_timeout': 60},
                                     json={
                                         'source': {
                                             'path': 'ansible:ansible'
                                         },
                                         'destination': {
                                             'path': 'ansible_svm:ansible'
                                         },
                                         'create_destination': {
                                             'enabled': True,
                                             'tiering': {
                                                 'policy': 'all'
                                             }
                                         },
                                         'policy': 'ansible_policy',
                                         'state': 'snapmirrored'
                                     })
     # print(mock_get_policy.mock_calls)
     mock_get_policy.assert_called_with('ansible_policy', 'ansible_svm')
 def get_asup_mock_object(self, kind=None, enabled='false'):
     """
     Helper method to return an na_ontap_volume object
     :param kind: passes this param to MockONTAPConnection()
     :return: na_ontap_volume object
     """
     asup_obj = asup_module()
     asup_obj.autosupport_log = Mock(return_value=None)
     if kind is None:
         asup_obj.server = MockONTAPConnection()
     else:
         data = self.mock_asup
         data['is_enabled'] = enabled
         asup_obj.server = MockONTAPConnection(kind='asup', data=data)
     return asup_obj
    def test_successful_modify(self, modify_security_config):
        ''' modifying security_config and testing idempotency '''
        data = self.set_default_args(use_rest='Never')
        data['is_fips_enabled'] = True  # Modify to True
        set_module_args(data)
        my_obj = security_config_module()
        my_obj.ems_log_event = Mock(return_value=None)

        if not self.onbox:
            my_obj.server = MockONTAPConnection('security_config')
        with pytest.raises(AnsibleExitJson) as exc:
            my_obj.apply()
        assert exc.value.args[0]['changed']

        #  reset na_helper from remembering the previous 'changed' value
        data['is_fips_enabled'] = False
        set_module_args(data)
        my_obj = security_config_module()
        my_obj.ems_log_event = Mock(return_value=None)
        if not self.onbox:
            my_obj.server = MockONTAPConnection('security_config')
        with pytest.raises(AnsibleExitJson) as exc:
            my_obj.apply()
        assert not exc.value.args[0]['changed']
Пример #27
0
 def test_elementsw_source_path_format(self):
     ''' test element_source_path_format_matches '''
     data = self.set_default_args()
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapmirror',
                                             status='idle',
                                             parm='snapmirrored')
     match = my_obj.element_source_path_format_matches('1.1.1.1:dummy')
     assert match is None
     match = my_obj.element_source_path_format_matches(
         '10.10.10.10:/lun/10')
     assert match is not None
Пример #28
0
 def test_check_elementsw_params_negative(self):
     ''' check elementsw parameters for source negative testing '''
     data = self.set_default_args()
     del data['source_path']
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = MockONTAPConnection('snapmirror',
                                             status='idle',
                                             parm='snapmirrored')
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.check_elementsw_parameters('source')
     assert 'Error: Missing required parameter source_path' in exc.value.args[
         0]['msg']
Пример #29
0
 def test_successful_create_without_initialize(self):
     ''' creating snapmirror and testing idempotency '''
     data = self.set_default_args()
     data['schedule'] = 'abc'
     data['identity_preserve'] = True
     data['initialize'] = False
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     my_obj.server = MockONTAPConnection('snapmirror',
                                         'Uninitialized',
                                         status='idle')
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     assert exc.value.args[0]['changed']
 def test_invalid_schedule_count_with_snapmirror_labels(self):
     ''' validate error when schedule with snapmirror labels does not have same number of elements '''
     data = self.set_default_args()
     data['schedule'] = ['s1', 's2', 's3']
     data['count'] = [1, 2, 3]
     data['snapmirror_label'] = ['sm1', 'sm2']
     set_module_args(data)
     my_obj = my_module()
     my_obj.asup_log_for_cserver = Mock(return_value=None)
     if not self.onbox:
         my_obj.server = self.server
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.create_snapshot_policy()
     msg = 'Error: Each Snapshot Policy schedule must have an accompanying SnapMirror Label'
     assert exc.value.args[0]['msg'] == msg