コード例 #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
コード例 #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.")
コード例 #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
コード例 #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."
        )
コード例 #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)
コード例 #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"]