Skip to content

Commit

Permalink
renamed underscore variables and fixed a typo
Browse files Browse the repository at this point in the history
  • Loading branch information
Mike Liebsch committed Apr 27, 2017
1 parent 4856b75 commit 96fc6e0
Showing 1 changed file with 47 additions and 47 deletions.
94 changes: 47 additions & 47 deletions vsphere-influxdb.go
Expand Up @@ -80,7 +80,7 @@ type MetricDef struct {
}

// Metrics description in config
var vm_refs []types.ManagedObjectReference
var vmRefs []types.ManagedObjectReference
var debug bool

type Metric struct {
Expand Down Expand Up @@ -244,41 +244,41 @@ func (vcenter *VCenter) Query(config Configuration, InfluxDBClient influxclient.
mors = append(mors, containerView.View...)
}
// Create MORS for each object type
vm_refs := []types.ManagedObjectReference{}
host_refs := []types.ManagedObjectReference{}
cluster_refs := []types.ManagedObjectReference{}
vmRefs := []types.ManagedObjectReference{}
hostRefs := []types.ManagedObjectReference{}
clusterRefs := []types.ManagedObjectReference{}

new_mors := []types.ManagedObjectReference{}
newMors := []types.ManagedObjectReference{}

spew.Dump(mors)
// Assign each MORS type to a specific array
for _, mor := range mors {
if mor.Type == "VirtualMachine" {
vm_refs = append(vm_refs, mor)
new_mors = append(new_mors, mor)
vmRefs = append(vmRefs, mor)
newMors = append(newMors, mor)
} else if mor.Type == "HostSystem" {
host_refs = append(host_refs, mor)
new_mors = append(new_mors, mor)
hostRefs = append(hostRefs, mor)
newMors = append(newMors, mor)
} else if mor.Type == "ClusterComputeResource" {
cluster_refs = append(cluster_refs, mor)
clusterRefs = append(clusterRefs, mor)
}
}
// Copy the mors without the clusters
mors = new_mors
mors = newMors

pc := property.DefaultCollector(client.Client)

// Retrieve properties for all vms
var vmmo []mo.VirtualMachine
err = pc.Retrieve(ctx, vm_refs, []string{"summary"}, &vmmo)
err = pc.Retrieve(ctx, vmRefs, []string{"summary"}, &vmmo)
if err != nil {
fmt.Println(err)
return
}

// Retrieve properties for hosts
var hsmo []mo.HostSystem
err = pc.Retrieve(ctx, host_refs, []string{"summary"}, &hsmo)
err = pc.Retrieve(ctx, hostRefs, []string{"summary"}, &hsmo)
if err != nil {
fmt.Println(err)
return
Expand All @@ -288,12 +288,12 @@ func (vcenter *VCenter) Query(config Configuration, InfluxDBClient influxclient.
vmToCluster := make(map[types.ManagedObjectReference]string)

// Retrieve properties for clusters, if any
if len(cluster_refs) > 0 {
if len(clusterRefs) > 0 {
if debug == true {
stdlog.Println("going inside clusters")
}
var clmo []mo.ClusterComputeResource
err = pc.Retrieve(ctx, cluster_refs, []string{"name", "configuration"}, &clmo)
err = pc.Retrieve(ctx, clusterRefs, []string{"name", "configuration"}, &clmo)
if err != nil {
fmt.Println(err)
return
Expand All @@ -302,7 +302,7 @@ func (vcenter *VCenter) Query(config Configuration, InfluxDBClient influxclient.
if debug == true {
stdlog.Println("---cluster name - you should see every cluster here---")
stdlog.Println(cl.Name)
stdlog.Println("You should see the cluster object, clsuter configuration object, and cluster configuration dasvmconfig which should contain all VMs")
stdlog.Println("You should see the cluster object, cluster configuration object, and cluster configuration dasvmconfig which should contain all VMs")
spew.Dump(cl)
spew.Dump(cl.Configuration)
spew.Dump(cl.Configuration.DasVmConfig)
Expand All @@ -319,32 +319,32 @@ func (vcenter *VCenter) Query(config Configuration, InfluxDBClient influxclient.
}

// Retrieve properties for the hosts
host_summary := make(map[types.ManagedObjectReference]map[string]string)
host_extra_metrics := make(map[types.ManagedObjectReference]map[string]int64)
hostSummary := make(map[types.ManagedObjectReference]map[string]string)
hostExtraMetrics := make(map[types.ManagedObjectReference]map[string]int64)

for _, host := range hsmo {
host_summary[host.Self] = make(map[string]string)
host_summary[host.Self]["name"] = host.Summary.Config.Name
host_extra_metrics[host.Self] = make(map[string]int64)
host_extra_metrics[host.Self]["cpu_corecount_total"] = int64(host.Summary.Hardware.NumCpuThreads)
hostSummary[host.Self] = make(map[string]string)
hostSummary[host.Self]["name"] = host.Summary.Config.Name
hostExtraMetrics[host.Self] = make(map[string]int64)
hostExtraMetrics[host.Self]["cpu_corecount_total"] = int64(host.Summary.Hardware.NumCpuThreads)
}

// Initialize the map that will hold all extra tags
vm_summary := make(map[types.ManagedObjectReference]map[string]string)
vmSummary := make(map[types.ManagedObjectReference]map[string]string)

// Assign extra details per VM in vm_summary
// Assign extra details per VM in vmSummary
for _, vm := range vmmo {
vm_summary[vm.Self] = make(map[string]string)
vmSummary[vm.Self] = make(map[string]string)
// Ugly way to extract datastore value
re, err := regexp.Compile(`\[(.*?)\]`)
if err != nil {
fmt.Println(err)
}
vm_summary[vm.Self]["datastore"] = strings.Replace(strings.Replace(re.FindString(fmt.Sprintln(vm.Summary.Config)), "[", "", -1), "]", "", -1)
vmSummary[vm.Self]["datastore"] = strings.Replace(strings.Replace(re.FindString(fmt.Sprintln(vm.Summary.Config)), "[", "", -1), "]", "", -1)
if vmToCluster[vm.Self] != "" {
vm_summary[vm.Self]["cluster"] = vmToCluster[vm.Self]
vmSummary[vm.Self]["cluster"] = vmToCluster[vm.Self]
}
vm_summary[vm.Self]["esx"] = host_summary[*vm.Summary.Runtime.Host]["name"]
vmSummary[vm.Self]["esx"] = hostSummary[*vm.Summary.Runtime.Host]["name"]
}

// get object names
Expand Down Expand Up @@ -446,19 +446,19 @@ func (vcenter *VCenter) Query(config Configuration, InfluxDBClient influxclient.
tags := map[string]string{"host": vcName, "name": name}

// Add extra per VM tags
if summary, ok := vm_summary[pem.Entity]; ok {
if summary, ok := vmSummary[pem.Entity]; ok {
for key, tag := range summary {
tags[key] = tag
}
}
if summary, ok := host_summary[pem.Entity]; ok {
if summary, ok := hostSummary[pem.Entity]; ok {
for key, tag := range summary {
tags[key] = tag
}
}

special_fields := make(map[string]map[string]map[string]map[string]interface{})
special_tags := make(map[string]map[string]map[string]map[string]string)
specialFields := make(map[string]map[string]map[string]map[string]interface{})
specialTags := make(map[string]map[string]map[string]map[string]string)
nowTime := time.Now()
for _, baseserie := range pem.Value {
serie := baseserie.(*types.PerfMetricIntSeries)
Expand Down Expand Up @@ -488,34 +488,34 @@ func (vcenter *VCenter) Query(config Configuration, InfluxDBClient influxclient.
fields[influxMetricName] = value
} else {
// init maps
if special_fields[measurementName] == nil {
special_fields[measurementName] = make(map[string]map[string]map[string]interface{})
special_tags[measurementName] = make(map[string]map[string]map[string]string)
if specialFields[measurementName] == nil {
specialFields[measurementName] = make(map[string]map[string]map[string]interface{})
specialTags[measurementName] = make(map[string]map[string]map[string]string)

}

if special_fields[measurementName][tags["name"]] == nil {
special_fields[measurementName][tags["name"]] = make(map[string]map[string]interface{})
special_tags[measurementName][tags["name"]] = make(map[string]map[string]string)
if specialFields[measurementName][tags["name"]] == nil {
specialFields[measurementName][tags["name"]] = make(map[string]map[string]interface{})
specialTags[measurementName][tags["name"]] = make(map[string]map[string]string)
}

if special_fields[measurementName][tags["name"]][instanceName] == nil {
special_fields[measurementName][tags["name"]][instanceName] = make(map[string]interface{})
special_tags[measurementName][tags["name"]][instanceName] = make(map[string]string)
if specialFields[measurementName][tags["name"]][instanceName] == nil {
specialFields[measurementName][tags["name"]][instanceName] = make(map[string]interface{})
specialTags[measurementName][tags["name"]][instanceName] = make(map[string]string)

}

special_fields[measurementName][tags["name"]][instanceName][influxMetricName] = value
specialFields[measurementName][tags["name"]][instanceName][influxMetricName] = value

for k, v := range tags {
special_tags[measurementName][tags["name"]][instanceName][k] = v
specialTags[measurementName][tags["name"]][instanceName][k] = v
}
special_tags[measurementName][tags["name"]][instanceName]["instance"] = instanceName
specialTags[measurementName][tags["name"]][instanceName]["instance"] = instanceName

}
}

if metrics, ok := host_extra_metrics[pem.Entity]; ok {
if metrics, ok := hostExtraMetrics[pem.Entity]; ok {
for key, value := range metrics {
fields[key] = value
}
Expand All @@ -528,10 +528,10 @@ func (vcenter *VCenter) Query(config Configuration, InfluxDBClient influxclient.
}
bp.AddPoint(pt)

for measurement, v := range special_fields {
for measurement, v := range specialFields {
for name, metric := range v {
for instance, value := range metric {
pt2, err := influxclient.NewPoint(measurement, special_tags[measurement][name][instance], value, time.Now())
pt2, err := influxclient.NewPoint(measurement, specialTags[measurement][name][instance], value, time.Now())
if err != nil {
errlog.Println(err)
}
Expand Down

0 comments on commit 96fc6e0

Please sign in to comment.