def process_links(info, callback): ''' Process link header, calls callback for every link header with the URL and relation as options. ''' if 'link' in info: link = info['link'] for url, relation in re.findall(r'<([^>]+)>;rel="(\w+)"', link): callback(unquote(url), relation)
def get_dvs_portgroup(self): pgroups = self.pgs pglist = [] for pg in pgroups: trunk = False pvlan = False vlanInfo = pg.config.defaultPortConfig.vlan cl1 = vim.dvs.VmwareDistributedVirtualSwitch.TrunkVlanSpec cl2 = vim.dvs.VmwareDistributedVirtualSwitch.PvlanSpec vlan_id_list = [] if isinstance(vlanInfo, cl1): trunk = True for item in vlanInfo.vlanId: if item.start == item.end: vlan_id_list.append(str(item.start)) else: vlan_id_list.append(str(item.start) + '-' + str(item.end)) elif isinstance(vlanInfo, cl2): pvlan = True vlan_id_list.append(str(vlanInfo.pvlanId)) else: vlan_id_list.append(str(vlanInfo.vlanId)) if self.cmp_vlans: if self.vlan_match(pg.config.uplink, self.module.params['show_uplink'], vlan_id_list): pglist.append(dict( name=unquote(pg.name), trunk=trunk, pvlan=pvlan, vlan_id=','.join(vlan_id_list), dvswitch=pg.config.distributedVirtualSwitch.name)) else: pglist.append(dict( name=unquote(pg.name), trunk=trunk, pvlan=pvlan, vlan_id=','.join(vlan_id_list), dvswitch=pg.config.distributedVirtualSwitch.name)) return pglist
def gather_cluster_info(self): """ Gather information about cluster """ results = dict(changed=False, clusters=dict()) if self.schema == 'summary': for cluster in self.cluster_objs: # Default values ha_failover_level = None ha_restart_priority = None ha_vm_tools_monitoring = None ha_vm_min_up_time = None ha_vm_max_failures = None ha_vm_max_failure_window = None ha_vm_failure_interval = None enabled_vsan = False vsan_auto_claim_storage = False hosts = [] # Hosts for host in cluster.host: hosts.append({ 'name': host.name, 'folder': self.get_vm_path(self.content, host), }) # HA das_config = cluster.configurationEx.dasConfig if das_config.admissionControlPolicy: ha_failover_level = das_config.admissionControlPolicy.failoverLevel if das_config.defaultVmSettings: ha_restart_priority = das_config.defaultVmSettings.restartPriority, ha_vm_tools_monitoring = das_config.defaultVmSettings.vmToolsMonitoringSettings.vmMonitoring, ha_vm_min_up_time = das_config.defaultVmSettings.vmToolsMonitoringSettings.minUpTime, ha_vm_max_failures = das_config.defaultVmSettings.vmToolsMonitoringSettings.maxFailures, ha_vm_max_failure_window = das_config.defaultVmSettings.vmToolsMonitoringSettings.maxFailureWindow, ha_vm_failure_interval = das_config.defaultVmSettings.vmToolsMonitoringSettings.failureInterval, # DRS drs_config = cluster.configurationEx.drsConfig # VSAN if hasattr(cluster.configurationEx, 'vsanConfigInfo'): vsan_config = cluster.configurationEx.vsanConfigInfo enabled_vsan = vsan_config.enabled vsan_auto_claim_storage = vsan_config.defaultConfig.autoClaimStorage tag_info = [] if self.params.get('show_tag'): vmware_client = VmwareRestClient(self.module) tag_info = vmware_client.get_tags_for_cluster( cluster_mid=cluster._moId) resource_summary = self.to_json(cluster.GetResourceUsage()) if '_vimtype' in resource_summary: del resource_summary['_vimtype'] results['clusters'][unquote(cluster.name)] = dict( hosts=hosts, enable_ha=das_config.enabled, ha_failover_level=ha_failover_level, ha_vm_monitoring=das_config.vmMonitoring, ha_host_monitoring=das_config.hostMonitoring, ha_admission_control_enabled=das_config. admissionControlEnabled, ha_restart_priority=ha_restart_priority, ha_vm_tools_monitoring=ha_vm_tools_monitoring, ha_vm_min_up_time=ha_vm_min_up_time, ha_vm_max_failures=ha_vm_max_failures, ha_vm_max_failure_window=ha_vm_max_failure_window, ha_vm_failure_interval=ha_vm_failure_interval, enabled_drs=drs_config.enabled, drs_enable_vm_behavior_overrides=drs_config. enableVmBehaviorOverrides, drs_default_vm_behavior=drs_config.defaultVmBehavior, drs_vmotion_rate=drs_config.vmotionRate, enabled_vsan=enabled_vsan, vsan_auto_claim_storage=vsan_auto_claim_storage, tags=tag_info, resource_summary=resource_summary, moid=cluster._moId, datacenter=get_parent_datacenter(cluster).name) else: for cluster in self.cluster_objs: results['clusters'][unquote(cluster.name)] = self.to_json( cluster, self.properties) self.module.exit_json(**results)
def gather_dvs_portgroup_info(self): dvs_lists = self.dvsls result = dict() for dvs in dvs_lists: result[dvs.name] = list() for dvs_pg in dvs.portgroup: network_policy = dict() teaming_policy = dict() port_policy = dict() vlan_info = dict() if self.module.params[ 'show_network_policy'] and dvs_pg.config.defaultPortConfig.securityPolicy: network_policy = dict( forged_transmits=dvs_pg.config.defaultPortConfig. securityPolicy.forgedTransmits.value, promiscuous=dvs_pg.config.defaultPortConfig. securityPolicy.allowPromiscuous.value, mac_changes=dvs_pg.config.defaultPortConfig. securityPolicy.macChanges.value) if self.module.params['show_teaming_policy']: # govcsim does not have uplinkTeamingPolicy, remove this check once # PR https://github.com/vmware/govmomi/pull/1524 merged. if dvs_pg.config.defaultPortConfig.uplinkTeamingPolicy: teaming_policy = dict( policy=dvs_pg.config.defaultPortConfig. uplinkTeamingPolicy.policy.value, inbound_policy=dvs_pg.config.defaultPortConfig. uplinkTeamingPolicy.reversePolicy.value, notify_switches=dvs_pg.config.defaultPortConfig. uplinkTeamingPolicy.notifySwitches.value, rolling_order=dvs_pg.config.defaultPortConfig. uplinkTeamingPolicy.rollingOrder.value, ) if self.params['show_port_policy']: # govcsim does not have port policy if dvs_pg.config.policy: port_policy = dict( block_override=dvs_pg.config.policy. blockOverrideAllowed, ipfix_override=dvs_pg.config.policy. ipfixOverrideAllowed, live_port_move=dvs_pg.config.policy. livePortMovingAllowed, network_rp_override=dvs_pg.config.policy. networkResourcePoolOverrideAllowed, port_config_reset_at_disconnect=dvs_pg.config. policy.portConfigResetAtDisconnect, security_override=dvs_pg.config.policy. securityPolicyOverrideAllowed, shaping_override=dvs_pg.config.policy. shapingOverrideAllowed, traffic_filter_override=dvs_pg.config.policy. trafficFilterOverrideAllowed, uplink_teaming_override=dvs_pg.config.policy. uplinkTeamingOverrideAllowed, vendor_config_override=dvs_pg.config.policy. vendorConfigOverrideAllowed, vlan_override=dvs_pg.config.policy. vlanOverrideAllowed) if self.params['show_vlan_info']: vlan_info = self.get_vlan_info( dvs_pg.config.defaultPortConfig.vlan) dvpg_details = dict( portgroup_name=unquote(dvs_pg.name), num_ports=dvs_pg.config.numPorts, dvswitch_name=dvs_pg.config.distributedVirtualSwitch.name, description=dvs_pg.config.description, type=dvs_pg.config.type, teaming_policy=teaming_policy, port_policy=port_policy, network_policy=network_policy, vlan_info=vlan_info, key=dvs_pg.key, ) result[dvs.name].append(dvpg_details) return result
def gather_dvs_portgroup_info(self): dvs_lists = self.dvsls result = dict() for dvs in dvs_lists: switch_supports_mac_learning = dvs_supports_mac_learning(dvs) result[dvs.name] = list() for dvs_pg in dvs.portgroup: mac_learning = dict() network_policy = dict() teaming_policy = dict() port_policy = dict() vlan_info = dict() active_uplinks = list() standby_uplinks = list() if dvs_pg.config.type == 'ephemeral': port_binding = 'ephemeral' else: port_binding = 'static' if dvs_pg.config.autoExpand is True: port_allocation = 'elastic' else: port_allocation = 'fixed' # If the dvSwitch supports MAC learning, it's a version where securityPolicy is deprecated if self.module.params['show_network_policy']: if switch_supports_mac_learning and dvs_pg.config.defaultPortConfig.macManagementPolicy: network_policy = dict( forged_transmits=dvs_pg.config.defaultPortConfig. macManagementPolicy.forgedTransmits, promiscuous=dvs_pg.config.defaultPortConfig. macManagementPolicy.allowPromiscuous, mac_changes=dvs_pg.config.defaultPortConfig. macManagementPolicy.macChanges) elif dvs_pg.config.defaultPortConfig.securityPolicy: network_policy = dict( forged_transmits=dvs_pg.config.defaultPortConfig. securityPolicy.forgedTransmits.value, promiscuous=dvs_pg.config.defaultPortConfig. securityPolicy.allowPromiscuous.value, mac_changes=dvs_pg.config.defaultPortConfig. securityPolicy.macChanges.value) if self.module.params[ 'show_mac_learning'] and switch_supports_mac_learning: macLearningPolicy = dvs_pg.config.defaultPortConfig.macManagementPolicy.macLearningPolicy mac_learning = dict( allow_unicast_flooding=macLearningPolicy. allowUnicastFlooding, enabled=macLearningPolicy.enabled, limit=macLearningPolicy.limit, limit_policy=macLearningPolicy.limitPolicy) if self.module.params['show_teaming_policy']: # govcsim does not have uplinkTeamingPolicy, remove this check once # PR https://github.com/vmware/govmomi/pull/1524 merged. if dvs_pg.config.defaultPortConfig.uplinkTeamingPolicy: teaming_policy = dict( policy=dvs_pg.config.defaultPortConfig. uplinkTeamingPolicy.policy.value, inbound_policy=dvs_pg.config.defaultPortConfig. uplinkTeamingPolicy.reversePolicy.value, notify_switches=dvs_pg.config.defaultPortConfig. uplinkTeamingPolicy.notifySwitches.value, rolling_order=dvs_pg.config.defaultPortConfig. uplinkTeamingPolicy.rollingOrder.value, ) if self.module.params['show_uplinks'] and \ dvs_pg.config.defaultPortConfig.uplinkTeamingPolicy and \ dvs_pg.config.defaultPortConfig.uplinkTeamingPolicy.uplinkPortOrder: active_uplinks = dvs_pg.config.defaultPortConfig.uplinkTeamingPolicy.uplinkPortOrder.activeUplinkPort standby_uplinks = dvs_pg.config.defaultPortConfig.uplinkTeamingPolicy.uplinkPortOrder.standbyUplinkPort if self.params['show_port_policy']: # govcsim does not have port policy if dvs_pg.config.policy: port_policy = dict( block_override=dvs_pg.config.policy. blockOverrideAllowed, ipfix_override=dvs_pg.config.policy. ipfixOverrideAllowed, live_port_move=dvs_pg.config.policy. livePortMovingAllowed, network_rp_override=dvs_pg.config.policy. networkResourcePoolOverrideAllowed, port_config_reset_at_disconnect=dvs_pg.config. policy.portConfigResetAtDisconnect, security_override=dvs_pg.config.policy. securityPolicyOverrideAllowed, shaping_override=dvs_pg.config.policy. shapingOverrideAllowed, traffic_filter_override=dvs_pg.config.policy. trafficFilterOverrideAllowed, uplink_teaming_override=dvs_pg.config.policy. uplinkTeamingOverrideAllowed, vendor_config_override=dvs_pg.config.policy. vendorConfigOverrideAllowed, vlan_override=dvs_pg.config.policy. vlanOverrideAllowed) if self.params['show_vlan_info']: vlan_info = self.get_vlan_info( dvs_pg.config.defaultPortConfig.vlan) dvpg_details = dict( portgroup_name=unquote(dvs_pg.name), num_ports=dvs_pg.config.numPorts, dvswitch_name=dvs_pg.config.distributedVirtualSwitch.name, description=dvs_pg.config.description, type=dvs_pg.config.type, port_binding=port_binding, port_allocation=port_allocation, teaming_policy=teaming_policy, port_policy=port_policy, mac_learning=mac_learning, network_policy=network_policy, vlan_info=vlan_info, key=dvs_pg.key, active_uplinks=active_uplinks, standby_uplinks=standby_uplinks, ) result[dvs.name].append(dvpg_details) return result