Esempio n. 1
0
    def __init__(self, module):
        super(VMwareCluster, self).__init__(module)
        self.cluster_name = module.params['cluster_name']
        self.datacenter_name = module.params['datacenter']
        self.enable_ha = module.params['enable_ha']
        self.datacenter = None
        self.cluster = None
        self.host_isolation_response = getattr(vim.cluster.DasVmSettings.IsolationResponse, self.params.get('host_isolation_response'))

        if self.enable_ha and (
            self.params.get("slot_based_admission_control")
            or self.params.get("reservation_based_admission_control")
            or self.params.get("failover_host_admission_control")
        ):
            self.ha_admission_control = True
        else:
            self.ha_admission_control = False

        self.datacenter = find_datacenter_by_name(self.content, self.datacenter_name)
        if self.datacenter is None:
            self.module.fail_json(msg="Datacenter %s does not exist." % self.datacenter_name)

        self.cluster = self.find_cluster_by_name(cluster_name=self.cluster_name)
        if self.cluster is None:
            self.module.fail_json(msg="Cluster %s does not exist." % self.cluster_name)

        self.advanced_settings = self.params.get('advanced_settings')
        if self.advanced_settings:
            self.changed_advanced_settings = option_diff(self.advanced_settings, self.cluster.configurationEx.dasConfig.option)
        else:
            self.changed_advanced_settings = None
Esempio n. 2
0
    def __init__(self, module):
        super(VMwareCluster, self).__init__(module)
        self.cluster_name = module.params['cluster_name']
        self.datacenter_name = module.params['datacenter']
        self.enable_ha = module.params['enable']
        self.datacenter = None
        self.cluster = None
        self.host_isolation_response = getattr(vim.cluster.DasVmSettings.IsolationResponse, self.params.get('host_isolation_response'))

        if self.enable_ha and (
            self.params.get("slot_based_admission_control")
            or self.params.get("reservation_based_admission_control")
            or self.params.get("failover_host_admission_control")
        ):
            self.ha_admission_control = True
        else:
            self.ha_admission_control = False

        self.datacenter = find_datacenter_by_name(self.content, self.datacenter_name)
        if self.datacenter is None:
            self.module.fail_json(msg="Datacenter %s does not exist." % self.datacenter_name)

        self.cluster = self.find_cluster_by_name(cluster_name=self.cluster_name, datacenter_name=self.datacenter)
        if self.cluster is None:
            self.module.fail_json(msg="Cluster %s does not exist." % self.cluster_name)

        self.advanced_settings = self.params.get('advanced_settings')
        if self.advanced_settings:
            self.changed_advanced_settings = option_diff(self.advanced_settings, self.cluster.configurationEx.dasConfig.option, False)
        else:
            self.changed_advanced_settings = None

        self.module.warn("The default for enable will change from false to true in a future version to make the behavior more consistent with other modules."
                         "Please make sure your playbooks don't rely on the default being false so you don't run into problems.")
Esempio n. 3
0
    def __init__(self, module):
        super(VMwareCluster, self).__init__(module)
        self.cluster_name = module.params['cluster_name']
        self.datacenter_name = module.params['datacenter']
        self.enable_drs = module.params['enable']
        self.datacenter = None
        self.cluster = None

        self.datacenter = find_datacenter_by_name(self.content,
                                                  self.datacenter_name)
        if self.datacenter is None:
            self.module.fail_json(msg="Datacenter %s does not exist." %
                                  self.datacenter_name)

        self.cluster = self.find_cluster_by_name(
            cluster_name=self.cluster_name, datacenter_name=self.datacenter)
        if self.cluster is None:
            self.module.fail_json(msg="Cluster %s does not exist." %
                                  self.cluster_name)

        self.advanced_settings = self.params.get('advanced_settings')
        if self.advanced_settings:
            self.changed_advanced_settings = option_diff(
                self.advanced_settings,
                self.cluster.configurationEx.drsConfig.option)
        else:
            self.changed_advanced_settings = None
Esempio n. 4
0
    def __init__(self, module):
        super(VMwareCluster, self).__init__(module)
        self.cluster_name = module.params['cluster_name']
        self.datacenter_name = module.params['datacenter']
        self.enable_drs = module.params['enable']
        self.datacenter = None
        self.cluster = None

        self.datacenter = find_datacenter_by_name(self.content,
                                                  self.datacenter_name)
        if self.datacenter is None:
            self.module.fail_json(msg="Datacenter %s does not exist." %
                                  self.datacenter_name)

        self.cluster = self.find_cluster_by_name(
            cluster_name=self.cluster_name, datacenter_name=self.datacenter)
        if self.cluster is None:
            self.module.fail_json(msg="Cluster %s does not exist." %
                                  self.cluster_name)

        self.advanced_settings = self.params.get('advanced_settings')
        if self.advanced_settings:
            self.changed_advanced_settings = option_diff(
                self.advanced_settings,
                self.cluster.configurationEx.drsConfig.option)
        else:
            self.changed_advanced_settings = None

        self.module.warn(
            "The default for enable will change from false to true in a future version to make the behavior more consistent with other modules."
            "Please make sure your playbooks don't rely on the default being false so you don't run into problems."
        )
Esempio n. 5
0
    def ensure(self):
        """Manage settings for a vCenter server"""
        result = dict(changed=False, msg='')
        db_max_connections = self.params['database'].get('max_connections')
        db_task_cleanup = self.params['database'].get('task_cleanup')
        db_task_retention = self.params['database'].get('task_retention')
        db_event_cleanup = self.params['database'].get('event_cleanup')
        db_event_retention = self.params['database'].get('event_retention')

        # runtime default value
        runtime_unique_id = self.get_default_setting_value('instance.id')
        runtime_managed_address = self.get_default_setting_value(
            'VirtualCenter.ManagedIP')
        runtime_server_name = self.get_default_setting_value(
            'VirtualCenter.InstanceName')

        if self.params['runtime_settings']:
            if self.params['runtime_settings'].get('unique_id') is not None:
                runtime_unique_id = self.params['runtime_settings'].get(
                    'unique_id')
            if self.params['runtime_settings'].get(
                    'managed_address') is not None:
                runtime_managed_address = self.params['runtime_settings'].get(
                    'managed_address')
            if self.params['runtime_settings'].get(
                    'vcenter_server_name') is not None:
                runtime_server_name = self.params['runtime_settings'].get(
                    'vcenter_server_name')

        directory_timeout = self.params['user_directory'].get('timeout')
        directory_query_limit = self.params['user_directory'].get(
            'query_limit')
        directory_query_limit_size = self.params['user_directory'].get(
            'query_limit_size')
        directory_validation = self.params['user_directory'].get('validation')
        directory_validation_period = self.params['user_directory'].get(
            'validation_period')
        mail = self.params.get('mail') or {
            'mail': {
                'server': '',
                'sender': ''
            }
        }
        mail_server = mail.get('server', '')
        mail_sender = mail.get('sender', '')
        snmp_receiver_1_url = self.params['snmp_receivers'].get(
            'snmp_receiver_1_url')
        snmp_receiver_1_enabled = self.params['snmp_receivers'].get(
            'snmp_receiver_1_enabled')
        snmp_receiver_1_port = self.params['snmp_receivers'].get(
            'snmp_receiver_1_port')
        snmp_receiver_1_community = self.params['snmp_receivers'].get(
            'snmp_receiver_1_community')
        snmp_receiver_2_url = self.params['snmp_receivers'].get(
            'snmp_receiver_2_url')
        snmp_receiver_2_enabled = self.params['snmp_receivers'].get(
            'snmp_receiver_2_enabled')
        snmp_receiver_2_port = self.params['snmp_receivers'].get(
            'snmp_receiver_2_port')
        snmp_receiver_2_community = self.params['snmp_receivers'].get(
            'snmp_receiver_2_community')
        snmp_receiver_3_url = self.params['snmp_receivers'].get(
            'snmp_receiver_3_url')
        snmp_receiver_3_enabled = self.params['snmp_receivers'].get(
            'snmp_receiver_3_enabled')
        snmp_receiver_3_port = self.params['snmp_receivers'].get(
            'snmp_receiver_3_port')
        snmp_receiver_3_community = self.params['snmp_receivers'].get(
            'snmp_receiver_3_community')
        snmp_receiver_4_url = self.params['snmp_receivers'].get(
            'snmp_receiver_4_url')
        snmp_receiver_4_enabled = self.params['snmp_receivers'].get(
            'snmp_receiver_4_enabled')
        snmp_receiver_4_port = self.params['snmp_receivers'].get(
            'snmp_receiver_4_port')
        snmp_receiver_4_community = self.params['snmp_receivers'].get(
            'snmp_receiver_4_community')
        timeout_normal_operations = self.params['timeout_settings'].get(
            'normal_operations')
        timeout_long_operations = self.params['timeout_settings'].get(
            'long_operations')
        logging_options = self.params.get('logging_options')

        changed = False
        changed_list = []

        # Check all general settings, except statistics
        result['db_max_connections'] = db_max_connections
        result['db_task_cleanup'] = db_task_cleanup
        result['db_task_retention'] = db_task_retention
        result['db_event_cleanup'] = db_event_cleanup
        result['db_event_retention'] = db_event_retention
        result['runtime_unique_id'] = runtime_unique_id
        result['runtime_managed_address'] = runtime_managed_address
        result['runtime_server_name'] = runtime_server_name
        result['directory_timeout'] = directory_timeout
        result['directory_query_limit'] = directory_query_limit
        result['directory_query_limit_size'] = directory_query_limit_size
        result['directory_validation'] = directory_validation
        result['directory_validation_period'] = directory_validation_period
        result['mail_server'] = mail_server
        result['mail_sender'] = mail_sender
        result['timeout_normal_operations'] = timeout_normal_operations
        result['timeout_long_operations'] = timeout_long_operations
        result['logging_options'] = logging_options
        change_option_list = []

        # Initialize diff_config variable
        diff_config = dict(before={}, after={})
        for key in result.keys():
            if key != 'changed' and key != 'msg':
                diff_config['before'][key] = result[key]
                diff_config['after'][key] = result[key]
        for n in range(1, 5):
            exec(
                "diff_config['before']['snmp_receiver_%s_url'] = snmp_receiver_%s_url"
                % (n, n))
            exec(
                "diff_config['before']['snmp_receiver_%s_enabled'] = snmp_receiver_%s_enabled"
                % (n, n))
            exec(
                "diff_config['before']['snmp_receiver_%s_port'] = snmp_receiver_%s_port"
                % (n, n))
            exec(
                "diff_config['before']['snmp_receiver_%s_community'] = snmp_receiver_%s_community"
                % (n, n))
            exec(
                "diff_config['after']['snmp_receiver_%s_url'] = snmp_receiver_%s_url"
                % (n, n))
            exec(
                "diff_config['after']['snmp_receiver_%s_enabled'] = snmp_receiver_%s_enabled"
                % (n, n))
            exec(
                "diff_config['after']['snmp_receiver_%s_port'] = snmp_receiver_%s_port"
                % (n, n))
            exec(
                "diff_config['after']['snmp_receiver_%s_community'] = snmp_receiver_%s_community"
                % (n, n))
        result['diff'] = {}

        advanced_settings = self.params['advanced_settings']
        changed_advanced_settings = option_diff(advanced_settings,
                                                self.option_manager.setting,
                                                False)

        if changed_advanced_settings:
            changed = True
            change_option_list += changed_advanced_settings

        for advanced_setting in advanced_settings:
            result[advanced_setting] = advanced_settings[advanced_setting]
            diff_config['before'][advanced_setting] = result[advanced_setting]
            diff_config['after'][advanced_setting] = result[advanced_setting]

        for setting in self.option_manager.setting:
            # Database
            if setting.key == 'VirtualCenter.MaxDBConnection' and setting.value != db_max_connections:
                changed = True
                changed_list.append("DB max connections")
                result['db_max_connections_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='VirtualCenter.MaxDBConnection',
                                           value=db_max_connections))
                diff_config['before']['db_max_connections'] = setting.value
            if setting.key == 'task.maxAgeEnabled' and setting.value != db_task_cleanup:
                changed = True
                changed_list.append("DB task cleanup")
                result['db_task_cleanup_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='task.maxAgeEnabled',
                                           value=db_task_cleanup))
                diff_config['before']['db_task_cleanup'] = setting.value
            if setting.key == 'task.maxAge' and setting.value != db_task_retention:
                changed = True
                changed_list.append("DB task retention")
                result['db_task_retention_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='task.maxAge',
                                           value=db_task_retention))
                diff_config['before']['db_task_retention'] = setting.value
            if setting.key == 'event.maxAgeEnabled' and setting.value != db_event_cleanup:
                changed = True
                changed_list.append("DB event cleanup")
                result['db_event_cleanup_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='event.maxAgeEnabled',
                                           value=db_event_cleanup))
                diff_config['before']['db_event_cleanup'] = setting.value
            if setting.key == 'event.maxAge' and setting.value != db_event_retention:
                changed = True
                changed_list.append("DB event retention")
                result['db_event_retention_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='event.maxAge',
                                           value=db_event_retention))
                diff_config['before']['db_event_retention'] = setting.value
            # Runtime settings
            if setting.key == 'instance.id' and setting.value != runtime_unique_id:
                changed = True
                changed_list.append("Instance ID")
                result['runtime_unique_id_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='instance.id',
                                           value=runtime_unique_id))
                diff_config['before']['runtime_unique_id'] = setting.value
            if setting.key == 'VirtualCenter.ManagedIP' and setting.value != runtime_managed_address:
                changed = True
                changed_list.append("Managed IP")
                result['runtime_managed_address_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='VirtualCenter.ManagedIP',
                                           value=runtime_managed_address))
                diff_config['before'][
                    'runtime_managed_address'] = setting.value
            if setting.key == 'VirtualCenter.InstanceName' and setting.value != runtime_server_name:
                changed = True
                changed_list.append("Server name")
                result['runtime_server_name_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='VirtualCenter.InstanceName',
                                           value=runtime_server_name))
                diff_config['before']['runtime_server_name'] = setting.value
            # User directory
            if setting.key == 'ads.timeout' and setting.value != directory_timeout:
                changed = True
                changed_list.append("Directory timeout")
                result['directory_timeout_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='ads.timeout',
                                           value=directory_timeout))
                diff_config['before']['directory_timeout'] = setting.value
            if setting.key == 'ads.maxFetchEnabled' and setting.value != directory_query_limit:
                changed = True
                changed_list.append("Query limit")
                result['directory_query_limit_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='ads.maxFetchEnabled',
                                           value=directory_query_limit))
                diff_config['before']['directory_query_limit'] = setting.value
            if setting.key == 'ads.maxFetch' and setting.value != directory_query_limit_size:
                changed = True
                changed_list.append("Query limit size")
                result['directory_query_limit_size_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='ads.maxFetch',
                                           value=directory_query_limit_size))
                diff_config['before'][
                    'directory_query_limit_size'] = setting.value
            if setting.key == 'ads.checkIntervalEnabled' and setting.value != directory_validation:
                changed = True
                changed_list.append("Validation")
                result['directory_validation_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='ads.checkIntervalEnabled',
                                           value=directory_validation))
                diff_config['before']['directory_validation'] = setting.value
            if setting.key == 'ads.checkInterval' and setting.value != directory_validation_period:
                changed = True
                changed_list.append("Validation period")
                result['directory_validation_period_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='ads.checkInterval',
                                           value=directory_validation_period))
                diff_config['before'][
                    'directory_validation_period'] = setting.value
            # Mail
            if setting.key == 'mail.smtp.server' and setting.value != mail_server:
                changed = True
                changed_list.append("Mail server")
                result['mail_server_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='mail.smtp.server',
                                           value=mail_server))
                diff_config['before']['mail_server'] = setting.value
            if setting.key == 'mail.sender' and setting.value != mail_sender:
                changed = True
                changed_list.append("Mail sender")
                result['mail_sender_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='mail.sender',
                                           value=mail_sender))
                diff_config['before']['mail_sender'] = setting.value
            # SNMP receivers - SNMP receiver #1
            if setting.key == 'snmp.receiver.1.enabled' and setting.value != snmp_receiver_1_enabled:
                changed = True
                changed_list.append("SNMP-1-enabled")
                result['snmp_1_enabled_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.1.enabled',
                                           value=snmp_receiver_1_enabled))
                diff_config['before'][
                    'snmp_receiver_1_enabled'] = setting.value
            if setting.key == 'snmp.receiver.1.name' and setting.value != snmp_receiver_1_url:
                changed = True
                changed_list.append("SNMP-1-name")
                result['snmp_1_url_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.1.name',
                                           value=snmp_receiver_1_url))
                diff_config['before']['snmp_receiver_1_url'] = setting.value
            if setting.key == 'snmp.receiver.1.port' and setting.value != snmp_receiver_1_port:
                changed = True
                changed_list.append("SNMP-1-port")
                result['snmp_receiver_1_port_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.1.port',
                                           value=snmp_receiver_1_port))
                diff_config['before']['snmp_receiver_1_port'] = setting.value
            if setting.key == 'snmp.receiver.1.community' and setting.value != snmp_receiver_1_community:
                changed = True
                changed_list.append("SNMP-1-community")
                result['snmp_1_community_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.1.community',
                                           value=snmp_receiver_1_community))
                diff_config['before'][
                    'snmp_receiver_1_community'] = setting.value
            # SNMP receivers - SNMP receiver #2
            if setting.key == 'snmp.receiver.2.enabled' and setting.value != snmp_receiver_2_enabled:
                changed = True
                changed_list.append("SNMP-2-enabled")
                result['snmp_2_enabled_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.2.enabled',
                                           value=snmp_receiver_2_enabled))
                diff_config['before'][
                    'snmp_receiver_2_enabled'] = setting.value
            if setting.key == 'snmp.receiver.2.name' and setting.value != snmp_receiver_2_url:
                changed = True
                changed_list.append("SNMP-2-name")
                result['snmp_2_url_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.2.name',
                                           value=snmp_receiver_2_url))
                diff_config['before']['snmp_receiver_2_url'] = setting.value
            if setting.key == 'snmp.receiver.2.port' and setting.value != snmp_receiver_2_port:
                changed = True
                changed_list.append("SNMP-2-port")
                result['snmp_receiver_2_port_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.2.port',
                                           value=snmp_receiver_2_port))
                diff_config['before']['snmp_receiver_2_port'] = setting.value
            if setting.key == 'snmp.receiver.2.community' and setting.value != snmp_receiver_2_community:
                changed = True
                changed_list.append("SNMP-2-community")
                result['snmp_2_community_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.2.community',
                                           value=snmp_receiver_2_community))
                diff_config['before'][
                    'snmp_receiver_2_community'] = setting.value
            # SNMP receivers - SNMP receiver #3
            if setting.key == 'snmp.receiver.3.enabled' and setting.value != snmp_receiver_3_enabled:
                changed = True
                changed_list.append("SNMP-3-enabled")
                result['snmp_3_enabled_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.3.enabled',
                                           value=snmp_receiver_3_enabled))
                diff_config['before'][
                    'snmp_receiver_3_enabled'] = setting.value
            if setting.key == 'snmp.receiver.3.name' and setting.value != snmp_receiver_3_url:
                changed = True
                changed_list.append("SNMP-3-name")
                result['snmp_3_url_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.3.name',
                                           value=snmp_receiver_3_url))
                diff_config['before']['snmp_receiver_3_url'] = setting.value
            if setting.key == 'snmp.receiver.3.port' and setting.value != snmp_receiver_3_port:
                changed = True
                changed_list.append("SNMP-3-port")
                result['snmp_receiver_3_port_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.3.port',
                                           value=snmp_receiver_3_port))
                diff_config['before']['snmp_receiver_3_port'] = setting.value
            if setting.key == 'snmp.receiver.3.community' and setting.value != snmp_receiver_3_community:
                changed = True
                changed_list.append("SNMP-3-community")
                result['snmp_3_community_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.3.community',
                                           value=snmp_receiver_3_community))
                diff_config['before'][
                    'snmp_receiver_3_community'] = setting.value
            # SNMP receivers - SNMP receiver #4
            if setting.key == 'snmp.receiver.4.enabled' and setting.value != snmp_receiver_4_enabled:
                changed = True
                changed_list.append("SNMP-4-enabled")
                result['snmp_4_enabled_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.4.enabled',
                                           value=snmp_receiver_4_enabled))
                diff_config['before'][
                    'snmp_receiver_4_enabled'] = setting.value
            if setting.key == 'snmp.receiver.4.name' and setting.value != snmp_receiver_4_url:
                changed = True
                changed_list.append("SNMP-4-name")
                result['snmp_4_url_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.4.name',
                                           value=snmp_receiver_4_url))
                diff_config['before']['snmp_receiver_4_url'] = setting.value
            if setting.key == 'snmp.receiver.4.port' and setting.value != snmp_receiver_4_port:
                changed = True
                changed_list.append("SNMP-4-port")
                result['snmp_receiver_4_port_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.4.port',
                                           value=snmp_receiver_4_port))
                diff_config['before']['snmp_receiver_4_port'] = setting.value
            if setting.key == 'snmp.receiver.4.community' and setting.value != snmp_receiver_4_community:
                changed = True
                changed_list.append("SNMP-4-community")
                result['snmp_4_community_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='snmp.receiver.4.community',
                                           value=snmp_receiver_4_community))
                diff_config['before'][
                    'snmp_receiver_4_community'] = setting.value
            # Timeout settings
            if setting.key == 'client.timeout.normal' and setting.value != timeout_normal_operations:
                changed = True
                changed_list.append("Timeout normal")
                result['timeout_normal_operations_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='client.timeout.normal',
                                           value=timeout_normal_operations))
                diff_config['before'][
                    'timeout_normal_operations'] = setting.value
            if setting.key == 'client.timeout.long' and setting.value != timeout_long_operations:
                changed = True
                changed_list.append("Timout long")
                result['timeout_long_operations_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='client.timeout.long',
                                           value=timeout_long_operations))
                diff_config['before'][
                    'timeout_long_operations'] = setting.value
            # Logging settings
            if setting.key == 'log.level' and setting.value != logging_options:
                changed = True
                changed_list.append("Logging")
                result['logging_options_previous'] = setting.value
                change_option_list.append(
                    vim.option.OptionValue(key='log.level',
                                           value=logging_options))
                diff_config['before']['logging_options'] = setting.value

            # Advanced settings
            for advanced_setting in changed_advanced_settings:
                if setting.key == advanced_setting.key and setting.value != advanced_setting.value:
                    changed_list.append(advanced_setting.key)
                    result[advanced_setting.key +
                           '_previous'] = advanced_setting.value
                    diff_config['before'][
                        advanced_setting.key] = advanced_setting.value

        for advanced_setting in changed_advanced_settings:
            if advanced_setting.key not in changed_list:
                changed_list.append(advanced_setting.key)
                result[advanced_setting.key + '_previous'] = "N/A"
                diff_config['before'][advanced_setting.key] = "N/A"

        if changed:
            if self.module.check_mode:
                changed_suffix = ' would be changed'
            else:
                changed_suffix = ' changed'
            if len(changed_list) > 2:
                message = ', '.join(changed_list[:-1]) + ', and ' + str(
                    changed_list[-1])
            elif len(changed_list) == 2:
                message = ' and '.join(changed_list)
            elif len(changed_list) == 1:
                message = changed_list[0]
            message += changed_suffix
            if not self.module.check_mode:
                try:
                    self.option_manager.UpdateOptions(
                        changedValue=change_option_list)
                except (vmodl.fault.SystemError,
                        vmodl.fault.InvalidArgument) as invalid_argument:
                    self.module.fail_json(
                        msg=
                        "Failed to update option(s) as one or more OptionValue contains an invalid value: %s"
                        % to_native(invalid_argument.msg))
                except vim.fault.InvalidName as invalid_name:
                    self.module.fail_json(
                        msg=
                        "Failed to update option(s) as one or more OptionValue objects refers to a "
                        "non-existent option : %s" %
                        to_native(invalid_name.msg))
        else:
            message = "vCenter settings already configured properly"
        result['changed'] = changed
        result['msg'] = message

        result['diff']['before'] = OrderedDict(
            sorted(diff_config['before'].items()))
        result['diff']['after'] = OrderedDict(
            sorted(diff_config['after'].items()))

        self.module.exit_json(**result)
Esempio n. 6
0
def test_option_diff(test_options, test_current_options,
                     test_truthy_strings_as_bool):
    assert option_diff(
        test_options, test_current_options,
        test_truthy_strings_as_bool)[0].value == test_options["data"]