forked from cloudfoundry/bosh_exporter
-
Notifications
You must be signed in to change notification settings - Fork 1
/
deployments_filter.go
42 lines (35 loc) · 1.11 KB
/
deployments_filter.go
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
package filters
import (
"errors"
"fmt"
"github.com/cloudfoundry/bosh-cli/director"
"github.com/prometheus/common/log"
)
type DeploymentsFilter struct {
filters []string
boshClient director.Director
}
func NewDeploymentsFilter(filters []string, boshClient director.Director) *DeploymentsFilter {
return &DeploymentsFilter{filters: filters, boshClient: boshClient}
}
func (f *DeploymentsFilter) GetDeployments() ([]director.Deployment, error) {
var err error
var deployments []director.Deployment
if len(f.filters) > 0 {
log.Debugf("Filtering deployments by `%v`...", f.filters)
for _, deploymentName := range f.filters {
deployment, err := f.boshClient.FindDeployment(deploymentName)
if err != nil {
return deployments, errors.New(fmt.Sprintf("Error while reading deployment `%s`: %v", deploymentName, err))
}
deployments = append(deployments, deployment)
}
} else {
log.Debugf("Reading deployments...")
deployments, err = f.boshClient.Deployments()
if err != nil {
return deployments, errors.New(fmt.Sprintf("Error while reading deployments: %v", err))
}
}
return deployments, nil
}