This file is indexed.

/usr/share/gocode/src/github.com/JamesClonk/vultr/lib/plans.go is in golang-github-jamesclonk-vultr-dev 1.13.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package lib

import (
	"fmt"
	"sort"
	"strconv"
	"strings"
)

// Plan on Vultr
type Plan struct {
	ID        int    `json:"VPSPLANID,string"`
	Name      string `json:"name"`
	VCpus     int    `json:"vcpu_count,string"`
	RAM       string `json:"ram"`
	Disk      string `json:"disk"`
	Bandwidth string `json:"bandwidth"`
	Price     string `json:"price_per_month"`
	Regions   []int  `json:"available_locations"`
}

type plans []Plan

func (p plans) Len() int      { return len(p) }
func (p plans) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
func (p plans) Less(i, j int) bool {
	pa, _ := strconv.ParseFloat(strings.TrimSpace(p[i].Price), 64)
	pb, _ := strconv.ParseFloat(strings.TrimSpace(p[j].Price), 64)
	ra, _ := strconv.ParseInt(strings.TrimSpace(p[i].RAM), 10, 64)
	rb, _ := strconv.ParseInt(strings.TrimSpace(p[j].RAM), 10, 64)
	da, _ := strconv.ParseInt(strings.TrimSpace(p[i].Disk), 10, 64)
	db, _ := strconv.ParseInt(strings.TrimSpace(p[j].Disk), 10, 64)

	// sort order: price, vcpu, ram, disk
	if pa < pb {
		return true
	} else if pa > pb {
		return false
	}

	if p[i].VCpus < p[j].VCpus {
		return true
	} else if p[i].VCpus > p[j].VCpus {
		return false
	}

	if ra < rb {
		return true
	} else if ra > rb {
		return false
	}

	return da < db
}

// GetPlans returns a list of all available plans on Vultr account
func (c *Client) GetPlans() ([]Plan, error) {
	var planMap map[string]Plan
	if err := c.get(`plans/list`, &planMap); err != nil {
		return nil, err
	}

	var p plans
	for _, plan := range planMap {
		p = append(p, plan)
	}

	sort.Sort(plans(p))
	return p, nil
}

// GetAvailablePlansForRegion returns available plans for specified region
func (c *Client) GetAvailablePlansForRegion(id int) (planIDs []int, err error) {
	if err := c.get(fmt.Sprintf(`regions/availability?DCID=%v`, id), &planIDs); err != nil {
		return nil, err
	}
	return
}