diff --git a/discovery/openstack/loadbalancer.go b/discovery/openstack/loadbalancer.go index 7bdf1d2fdf..b3c05fada5 100644 --- a/discovery/openstack/loadbalancer.go +++ b/discovery/openstack/loadbalancer.go @@ -33,14 +33,15 @@ import ( ) const ( - openstackLabelLoadBalancerID = openstackLabelPrefix + "loadbalancer_id" - openstackLabelLoadBalancerName = openstackLabelPrefix + "loadbalancer_name" - openstackLabelLoadBalancerStatus = openstackLabelPrefix + "loadbalancer_status" - openstackLabelLoadBalancerAvailabilityZone = openstackLabelPrefix + "loadbalancer_availability_zone" - openstackLabelLoadBalancerFloatingIP = openstackLabelPrefix + "loadbalancer_floating_ip" - openstackLabelLoadBalancerVIP = openstackLabelPrefix + "loadbalancer_vip" - openstackLabelLoadBalancerProvider = openstackLabelPrefix + "loadbalancer_provider" - openstackLabelLoadBalancerTags = openstackLabelPrefix + "loadbalancer_tags" + openstackLabelLoadBalancerID = openstackLabelPrefix + "loadbalancer_id" + openstackLabelLoadBalancerName = openstackLabelPrefix + "loadbalancer_name" + openstackLabelLoadBalancerOperatingStatus = openstackLabelPrefix + "loadbalancer_operating_status" + openstackLabelLoadBalancerProvisioningStatus = openstackLabelPrefix + "loadbalancer_provisioning_status" + openstackLabelLoadBalancerAvailabilityZone = openstackLabelPrefix + "loadbalancer_availability_zone" + openstackLabelLoadBalancerFloatingIP = openstackLabelPrefix + "loadbalancer_floating_ip" + openstackLabelLoadBalancerVIP = openstackLabelPrefix + "loadbalancer_vip" + openstackLabelLoadBalancerProvider = openstackLabelPrefix + "loadbalancer_provider" + openstackLabelLoadBalancerTags = openstackLabelPrefix + "loadbalancer_tags" ) // LoadBalancerDiscovery discovers OpenStack load balancers. @@ -174,7 +175,8 @@ func (i *LoadBalancerDiscovery) refresh(ctx context.Context) ([]*targetgroup.Gro labels[model.AddressLabel] = model.LabelValue(addr) labels[openstackLabelLoadBalancerID] = model.LabelValue(lb.ID) labels[openstackLabelLoadBalancerName] = model.LabelValue(lb.Name) - labels[openstackLabelLoadBalancerStatus] = model.LabelValue(lb.ProvisioningStatus) + labels[openstackLabelLoadBalancerOperatingStatus] = model.LabelValue(lb.OperatingStatus) + labels[openstackLabelLoadBalancerProvisioningStatus] = model.LabelValue(lb.ProvisioningStatus) labels[openstackLabelLoadBalancerAvailabilityZone] = model.LabelValue(lb.AvailabilityZone) labels[openstackLabelLoadBalancerVIP] = model.LabelValue(lb.VipAddress) labels[openstackLabelLoadBalancerProvider] = model.LabelValue(lb.Provider) diff --git a/discovery/openstack/loadbalancer_test.go b/discovery/openstack/loadbalancer_test.go index 45c9d1024d..c0719437d7 100644 --- a/discovery/openstack/loadbalancer_test.go +++ b/discovery/openstack/loadbalancer_test.go @@ -70,49 +70,53 @@ func TestOpenstackSDLoadBalancerRefresh(t *testing.T) { for i, lbls := range []model.LabelSet{ { - "__address__": model.LabelValue("10.0.0.32:9273"), - "__meta_openstack_loadbalancer_id": model.LabelValue("ef079b0c-e610-4dfb-b1aa-b49f07ac48e5"), - "__meta_openstack_loadbalancer_name": model.LabelValue("lb1"), - "__meta_openstack_loadbalancer_status": model.LabelValue("ACTIVE"), - "__meta_openstack_loadbalancer_availability_zone": model.LabelValue("az1"), - "__meta_openstack_loadbalancer_floating_ip": model.LabelValue("192.168.1.2"), - "__meta_openstack_loadbalancer_vip": model.LabelValue("10.0.0.32"), - "__meta_openstack_loadbalancer_provider": model.LabelValue("amphora"), - "__meta_openstack_loadbalancer_tags": model.LabelValue("tag1,tag2"), - "__meta_openstack_project_id": model.LabelValue("fcad67a6189847c4aecfa3c81a05783b"), + "__address__": model.LabelValue("10.0.0.32:9273"), + "__meta_openstack_loadbalancer_id": model.LabelValue("ef079b0c-e610-4dfb-b1aa-b49f07ac48e5"), + "__meta_openstack_loadbalancer_name": model.LabelValue("lb1"), + "__meta_openstack_loadbalancer_operating_status": model.LabelValue("ONLINE"), + "__meta_openstack_loadbalancer_provisioning_status": model.LabelValue("ACTIVE"), + "__meta_openstack_loadbalancer_availability_zone": model.LabelValue("az1"), + "__meta_openstack_loadbalancer_floating_ip": model.LabelValue("192.168.1.2"), + "__meta_openstack_loadbalancer_vip": model.LabelValue("10.0.0.32"), + "__meta_openstack_loadbalancer_provider": model.LabelValue("amphora"), + "__meta_openstack_loadbalancer_tags": model.LabelValue("tag1,tag2"), + "__meta_openstack_project_id": model.LabelValue("fcad67a6189847c4aecfa3c81a05783b"), }, { - "__address__": model.LabelValue("10.0.2.78:8080"), - "__meta_openstack_loadbalancer_id": model.LabelValue("d92c471e-8d3e-4b9f-b2b5-9c72a9e3ef54"), - "__meta_openstack_loadbalancer_name": model.LabelValue("lb3"), - "__meta_openstack_loadbalancer_status": model.LabelValue("ACTIVE"), - "__meta_openstack_loadbalancer_availability_zone": model.LabelValue("az3"), - "__meta_openstack_loadbalancer_floating_ip": model.LabelValue("192.168.3.4"), - "__meta_openstack_loadbalancer_vip": model.LabelValue("10.0.2.78"), - "__meta_openstack_loadbalancer_provider": model.LabelValue("amphora"), - "__meta_openstack_loadbalancer_tags": model.LabelValue("tag5,tag6"), - "__meta_openstack_project_id": model.LabelValue("ac57f03dba1a4fdebff3e67201bc7a85"), + "__address__": model.LabelValue("10.0.2.78:8080"), + "__meta_openstack_loadbalancer_id": model.LabelValue("d92c471e-8d3e-4b9f-b2b5-9c72a9e3ef54"), + "__meta_openstack_loadbalancer_name": model.LabelValue("lb3"), + "__meta_openstack_loadbalancer_operating_status": model.LabelValue("ONLINE"), + "__meta_openstack_loadbalancer_provisioning_status": model.LabelValue("ACTIVE"), + "__meta_openstack_loadbalancer_availability_zone": model.LabelValue("az3"), + "__meta_openstack_loadbalancer_floating_ip": model.LabelValue("192.168.3.4"), + "__meta_openstack_loadbalancer_vip": model.LabelValue("10.0.2.78"), + "__meta_openstack_loadbalancer_provider": model.LabelValue("amphora"), + "__meta_openstack_loadbalancer_tags": model.LabelValue("tag5,tag6"), + "__meta_openstack_project_id": model.LabelValue("ac57f03dba1a4fdebff3e67201bc7a85"), }, { - "__address__": model.LabelValue("10.0.3.99:9090"), - "__meta_openstack_loadbalancer_id": model.LabelValue("f5c7e918-df38-4a5a-a7d4-d9c27ab2cf67"), - "__meta_openstack_loadbalancer_name": model.LabelValue("lb4"), - "__meta_openstack_loadbalancer_status": model.LabelValue("ACTIVE"), - "__meta_openstack_loadbalancer_availability_zone": model.LabelValue("az1"), - "__meta_openstack_loadbalancer_floating_ip": model.LabelValue("192.168.4.5"), - "__meta_openstack_loadbalancer_vip": model.LabelValue("10.0.3.99"), - "__meta_openstack_loadbalancer_provider": model.LabelValue("amphora"), - "__meta_openstack_project_id": model.LabelValue("fa8c372dfe4d4c92b0c4e3a2d9b3c9fa"), + "__address__": model.LabelValue("10.0.3.99:9090"), + "__meta_openstack_loadbalancer_id": model.LabelValue("f5c7e918-df38-4a5a-a7d4-d9c27ab2cf67"), + "__meta_openstack_loadbalancer_name": model.LabelValue("lb4"), + "__meta_openstack_loadbalancer_operating_status": model.LabelValue("ONLINE"), + "__meta_openstack_loadbalancer_provisioning_status": model.LabelValue("ACTIVE"), + "__meta_openstack_loadbalancer_availability_zone": model.LabelValue("az1"), + "__meta_openstack_loadbalancer_floating_ip": model.LabelValue("192.168.4.5"), + "__meta_openstack_loadbalancer_vip": model.LabelValue("10.0.3.99"), + "__meta_openstack_loadbalancer_provider": model.LabelValue("amphora"), + "__meta_openstack_project_id": model.LabelValue("fa8c372dfe4d4c92b0c4e3a2d9b3c9fa"), }, { - "__address__": model.LabelValue("10.0.4.88:9876"), - "__meta_openstack_loadbalancer_id": model.LabelValue("e83a6d92-7a3e-4567-94b3-20c83b32a75e"), - "__meta_openstack_loadbalancer_name": model.LabelValue("lb5"), - "__meta_openstack_loadbalancer_status": model.LabelValue("ACTIVE"), - "__meta_openstack_loadbalancer_availability_zone": model.LabelValue("az4"), - "__meta_openstack_loadbalancer_vip": model.LabelValue("10.0.4.88"), - "__meta_openstack_loadbalancer_provider": model.LabelValue("amphora"), - "__meta_openstack_project_id": model.LabelValue("a5d3b2e1e6f34cd9a5f7c2f01a6b8e29"), + "__address__": model.LabelValue("10.0.4.88:9876"), + "__meta_openstack_loadbalancer_id": model.LabelValue("e83a6d92-7a3e-4567-94b3-20c83b32a75e"), + "__meta_openstack_loadbalancer_name": model.LabelValue("lb5"), + "__meta_openstack_loadbalancer_operating_status": model.LabelValue("ONLINE"), + "__meta_openstack_loadbalancer_provisioning_status": model.LabelValue("ACTIVE"), + "__meta_openstack_loadbalancer_availability_zone": model.LabelValue("az4"), + "__meta_openstack_loadbalancer_vip": model.LabelValue("10.0.4.88"), + "__meta_openstack_loadbalancer_provider": model.LabelValue("amphora"), + "__meta_openstack_project_id": model.LabelValue("a5d3b2e1e6f34cd9a5f7c2f01a6b8e29"), }, } { t.Run(fmt.Sprintf("item %d", i), func(t *testing.T) { diff --git a/docs/configuration/configuration.md b/docs/configuration/configuration.md index 3749681977..99146254fb 100644 --- a/docs/configuration/configuration.md +++ b/docs/configuration/configuration.md @@ -1209,6 +1209,8 @@ The following meta labels are available on targets during [relabeling](#relabel_ * `__meta_openstack_loadbalancer_name`: the OpenStack load balancer name. * `__meta_openstack_loadbalancer_provider`: the Octavia provider of the OpenStack load balancer. * `__meta_openstack_loadbalancer_status`: the status of the OpenStack load balancer. +* `__meta_openstack_loadbalancer_operating_status`: the operating status of the OpenStack load balancer. +* `__meta_openstack_loadbalancer_provisioning_status`: the provisioning status of the OpenStack load balancer. * `__meta_openstack_loadbalancer_tags`: comma separated list of the OpenStack load balancer. * `__meta_openstack_loadbalancer_vip`: the VIP of the OpenStack load balancer. * `__meta_openstack_project_id`: the project (tenant) owning this load balancer.