mirror of
				https://github.com/prometheus/prometheus.git
				synced 2025-10-31 00:11:23 +01:00 
			
		
		
		
	* Add VM size label to azure service discovery (#11575) Signed-off-by: davidifr <davidfr.mail@gmail.com> * Add VM size label to azure service discovery (#11575) Signed-off-by: davidifr <davidfr.mail@gmail.com> * Add VM size label to azure service discovery (#11575) Signed-off-by: davidifr <davidfr.mail@gmail.com> Signed-off-by: davidifr <davidfr.mail@gmail.com>
		
			
				
	
	
		
			260 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			260 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2015 The Prometheus Authors
 | |
| // Licensed under the Apache License, Version 2.0 (the "License");
 | |
| // you may not use this file except in compliance with the License.
 | |
| // You may obtain a copy of the License at
 | |
| //
 | |
| // http://www.apache.org/licenses/LICENSE-2.0
 | |
| //
 | |
| // Unless required by applicable law or agreed to in writing, software
 | |
| // distributed under the License is distributed on an "AS IS" BASIS,
 | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| // See the License for the specific language governing permissions and
 | |
| // limitations under the License.
 | |
| 
 | |
| package azure
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-10-01/compute"
 | |
| 	"github.com/stretchr/testify/require"
 | |
| 	"go.uber.org/goleak"
 | |
| )
 | |
| 
 | |
| func TestMain(m *testing.M) {
 | |
| 	goleak.VerifyTestMain(m)
 | |
| }
 | |
| 
 | |
| func TestMapFromVMWithEmptyTags(t *testing.T) {
 | |
| 	id := "test"
 | |
| 	name := "name"
 | |
| 	size := "size"
 | |
| 	vmType := "type"
 | |
| 	location := "westeurope"
 | |
| 	computerName := "computer_name"
 | |
| 	networkProfile := compute.NetworkProfile{
 | |
| 		NetworkInterfaces: &[]compute.NetworkInterfaceReference{},
 | |
| 	}
 | |
| 	properties := &compute.VirtualMachineProperties{
 | |
| 		OsProfile: &compute.OSProfile{
 | |
| 			ComputerName: &computerName,
 | |
| 		},
 | |
| 		StorageProfile: &compute.StorageProfile{
 | |
| 			OsDisk: &compute.OSDisk{
 | |
| 				OsType: "Linux",
 | |
| 			},
 | |
| 		},
 | |
| 		NetworkProfile: &networkProfile,
 | |
| 		HardwareProfile: &compute.HardwareProfile{
 | |
| 			VMSize: compute.VirtualMachineSizeTypes(size),
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	testVM := compute.VirtualMachine{
 | |
| 		ID:                       &id,
 | |
| 		Name:                     &name,
 | |
| 		Type:                     &vmType,
 | |
| 		Location:                 &location,
 | |
| 		Tags:                     nil,
 | |
| 		VirtualMachineProperties: properties,
 | |
| 	}
 | |
| 
 | |
| 	expectedVM := virtualMachine{
 | |
| 		ID:                id,
 | |
| 		Name:              name,
 | |
| 		ComputerName:      computerName,
 | |
| 		Type:              vmType,
 | |
| 		Location:          location,
 | |
| 		OsType:            "Linux",
 | |
| 		Tags:              map[string]*string{},
 | |
| 		NetworkInterfaces: []string{},
 | |
| 		Size:              size,
 | |
| 	}
 | |
| 
 | |
| 	actualVM := mapFromVM(testVM)
 | |
| 
 | |
| 	require.Equal(t, expectedVM, actualVM)
 | |
| }
 | |
| 
 | |
| func TestMapFromVMWithTags(t *testing.T) {
 | |
| 	id := "test"
 | |
| 	name := "name"
 | |
| 	size := "size"
 | |
| 	vmType := "type"
 | |
| 	location := "westeurope"
 | |
| 	computerName := "computer_name"
 | |
| 	tags := map[string]*string{
 | |
| 		"prometheus": new(string),
 | |
| 	}
 | |
| 	networkProfile := compute.NetworkProfile{
 | |
| 		NetworkInterfaces: &[]compute.NetworkInterfaceReference{},
 | |
| 	}
 | |
| 	properties := &compute.VirtualMachineProperties{
 | |
| 		OsProfile: &compute.OSProfile{
 | |
| 			ComputerName: &computerName,
 | |
| 		},
 | |
| 		StorageProfile: &compute.StorageProfile{
 | |
| 			OsDisk: &compute.OSDisk{
 | |
| 				OsType: "Linux",
 | |
| 			},
 | |
| 		},
 | |
| 		NetworkProfile: &networkProfile,
 | |
| 		HardwareProfile: &compute.HardwareProfile{
 | |
| 			VMSize: compute.VirtualMachineSizeTypes(size),
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	testVM := compute.VirtualMachine{
 | |
| 		ID:                       &id,
 | |
| 		Name:                     &name,
 | |
| 		Type:                     &vmType,
 | |
| 		Location:                 &location,
 | |
| 		Tags:                     tags,
 | |
| 		VirtualMachineProperties: properties,
 | |
| 	}
 | |
| 
 | |
| 	expectedVM := virtualMachine{
 | |
| 		ID:                id,
 | |
| 		Name:              name,
 | |
| 		ComputerName:      computerName,
 | |
| 		Type:              vmType,
 | |
| 		Location:          location,
 | |
| 		OsType:            "Linux",
 | |
| 		Tags:              tags,
 | |
| 		NetworkInterfaces: []string{},
 | |
| 		Size:              size,
 | |
| 	}
 | |
| 
 | |
| 	actualVM := mapFromVM(testVM)
 | |
| 
 | |
| 	require.Equal(t, expectedVM, actualVM)
 | |
| }
 | |
| 
 | |
| func TestMapFromVMScaleSetVMWithEmptyTags(t *testing.T) {
 | |
| 	id := "test"
 | |
| 	name := "name"
 | |
| 	size := "size"
 | |
| 	vmType := "type"
 | |
| 	location := "westeurope"
 | |
| 	computerName := "computer_name"
 | |
| 	networkProfile := compute.NetworkProfile{
 | |
| 		NetworkInterfaces: &[]compute.NetworkInterfaceReference{},
 | |
| 	}
 | |
| 	properties := &compute.VirtualMachineScaleSetVMProperties{
 | |
| 		OsProfile: &compute.OSProfile{
 | |
| 			ComputerName: &computerName,
 | |
| 		},
 | |
| 		StorageProfile: &compute.StorageProfile{
 | |
| 			OsDisk: &compute.OSDisk{
 | |
| 				OsType: "Linux",
 | |
| 			},
 | |
| 		},
 | |
| 		NetworkProfile: &networkProfile,
 | |
| 		HardwareProfile: &compute.HardwareProfile{
 | |
| 			VMSize: compute.VirtualMachineSizeTypes(size),
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	testVM := compute.VirtualMachineScaleSetVM{
 | |
| 		ID:                                 &id,
 | |
| 		Name:                               &name,
 | |
| 		Type:                               &vmType,
 | |
| 		Location:                           &location,
 | |
| 		Tags:                               nil,
 | |
| 		VirtualMachineScaleSetVMProperties: properties,
 | |
| 	}
 | |
| 
 | |
| 	scaleSet := "testSet"
 | |
| 	expectedVM := virtualMachine{
 | |
| 		ID:                id,
 | |
| 		Name:              name,
 | |
| 		ComputerName:      computerName,
 | |
| 		Type:              vmType,
 | |
| 		Location:          location,
 | |
| 		OsType:            "Linux",
 | |
| 		Tags:              map[string]*string{},
 | |
| 		NetworkInterfaces: []string{},
 | |
| 		ScaleSet:          scaleSet,
 | |
| 		Size:              size,
 | |
| 	}
 | |
| 
 | |
| 	actualVM := mapFromVMScaleSetVM(testVM, scaleSet)
 | |
| 
 | |
| 	require.Equal(t, expectedVM, actualVM)
 | |
| }
 | |
| 
 | |
| func TestMapFromVMScaleSetVMWithTags(t *testing.T) {
 | |
| 	id := "test"
 | |
| 	name := "name"
 | |
| 	size := "size"
 | |
| 	vmType := "type"
 | |
| 	location := "westeurope"
 | |
| 	computerName := "computer_name"
 | |
| 	tags := map[string]*string{
 | |
| 		"prometheus": new(string),
 | |
| 	}
 | |
| 	networkProfile := compute.NetworkProfile{
 | |
| 		NetworkInterfaces: &[]compute.NetworkInterfaceReference{},
 | |
| 	}
 | |
| 	properties := &compute.VirtualMachineScaleSetVMProperties{
 | |
| 		OsProfile: &compute.OSProfile{
 | |
| 			ComputerName: &computerName,
 | |
| 		},
 | |
| 		StorageProfile: &compute.StorageProfile{
 | |
| 			OsDisk: &compute.OSDisk{
 | |
| 				OsType: "Linux",
 | |
| 			},
 | |
| 		},
 | |
| 		NetworkProfile: &networkProfile,
 | |
| 		HardwareProfile: &compute.HardwareProfile{
 | |
| 			VMSize: compute.VirtualMachineSizeTypes(size),
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	testVM := compute.VirtualMachineScaleSetVM{
 | |
| 		ID:                                 &id,
 | |
| 		Name:                               &name,
 | |
| 		Type:                               &vmType,
 | |
| 		Location:                           &location,
 | |
| 		Tags:                               tags,
 | |
| 		VirtualMachineScaleSetVMProperties: properties,
 | |
| 	}
 | |
| 
 | |
| 	scaleSet := "testSet"
 | |
| 	expectedVM := virtualMachine{
 | |
| 		ID:                id,
 | |
| 		Name:              name,
 | |
| 		ComputerName:      computerName,
 | |
| 		Type:              vmType,
 | |
| 		Location:          location,
 | |
| 		OsType:            "Linux",
 | |
| 		Tags:              tags,
 | |
| 		NetworkInterfaces: []string{},
 | |
| 		ScaleSet:          scaleSet,
 | |
| 		Size:              size,
 | |
| 	}
 | |
| 
 | |
| 	actualVM := mapFromVMScaleSetVM(testVM, scaleSet)
 | |
| 
 | |
| 	require.Equal(t, expectedVM, actualVM)
 | |
| }
 | |
| 
 | |
| func TestNewAzureResourceFromID(t *testing.T) {
 | |
| 	for _, tc := range []struct {
 | |
| 		id       string
 | |
| 		expected azureResource
 | |
| 	}{
 | |
| 		{
 | |
| 			id:       "/a/b/c/group/d/e/f/name",
 | |
| 			expected: azureResource{"name", "group"},
 | |
| 		},
 | |
| 		{
 | |
| 			id:       "/a/b/c/group/d/e/f/name/g/h",
 | |
| 			expected: azureResource{"name", "group"},
 | |
| 		},
 | |
| 	} {
 | |
| 		actual, _ := newAzureResourceFromID(tc.id, nil)
 | |
| 		require.Equal(t, tc.expected, actual)
 | |
| 	}
 | |
| }
 |