Skip to content

Commit cb60def

Browse files
Merge pull request #2756 from dtantsur/require-2024.1
⚠️ Remove support for Ironic before 2024.1
2 parents d13c3c5 + a14541b commit cb60def

File tree

6 files changed

+13
-103
lines changed

6 files changed

+13
-103
lines changed

pkg/provisioner/ironic/clients/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ func IronicClient(ironicEndpoint string, auth AuthConfig, tls TLSConfig) (client
9191
return
9292
}
9393

94-
client.Microversion = baseline
94+
client.Microversion = baselineVersionString
9595

9696
err = updateHTTPClient(client, tls)
9797
return

pkg/provisioner/ironic/clients/features.go

Lines changed: 9 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,19 @@ type AvailableFeatures struct {
1919
// conservative when updating this value since doing so unconditionally breaks
2020
// operators of older Ironic, even if the feature we need is optional.
2121
// Update docs/configuration.md when updating the version.
22-
// Version 1.81 allows retrival of Node inventory.
23-
const baseline = "1.81"
22+
// Version 1.89 allows attaching and detaching virtual media.
23+
const baseline = 89
24+
25+
var baselineVersionString = fmt.Sprintf("1.%d", baseline)
2426

2527
func GetAvailableFeatures(ctx context.Context, client *gophercloud.ServiceClient) (features AvailableFeatures, err error) {
2628
mvs, err := utils.GetSupportedMicroversions(ctx, client)
2729
if err != nil {
2830
return
2931
}
3032

31-
if mvs.MaxMajor != 1 || mvs.MaxMinor < 81 {
32-
err = fmt.Errorf("ironic API 1.81 or newer is required, got %d.%d", mvs.MaxMajor, mvs.MaxMinor)
33+
if mvs.MaxMajor != 1 || mvs.MaxMinor < baseline {
34+
err = fmt.Errorf("ironic API 1.%d or newer is required, got %d.%d", baseline, mvs.MaxMajor, mvs.MaxMinor)
3335
return
3436
}
3537

@@ -42,20 +44,8 @@ func (af AvailableFeatures) Log(logger logr.Logger) {
4244
logger.Info("supported Ironic API features",
4345
"maxVersion", fmt.Sprintf("1.%d", af.MaxVersion),
4446
"chosenVersion", af.ChooseMicroversion(),
45-
"firmwareUpdates", af.HasFirmwareUpdates(),
46-
"dataImage", af.HasDataImage())
47-
}
48-
49-
func (af AvailableFeatures) HasFirmwareUpdates() bool {
50-
return af.MaxVersion >= 86 //nolint:mnd
51-
}
52-
53-
func (af AvailableFeatures) HasServicing() bool {
54-
return af.MaxVersion >= 87 //nolint:mnd
55-
}
56-
57-
func (af AvailableFeatures) HasDataImage() bool {
58-
return af.MaxVersion >= 89 //nolint:mnd
47+
"virtualMediaGET", af.HasVirtualMediaGetAPI(),
48+
"disablePowerOff", af.HasDisablePowerOff())
5949
}
6050

6151
func (af AvailableFeatures) HasVirtualMediaGetAPI() bool {
@@ -75,17 +65,5 @@ func (af AvailableFeatures) ChooseMicroversion() string {
7565
return "1.93"
7666
}
7767

78-
if af.HasDataImage() {
79-
return "1.89"
80-
}
81-
82-
if af.HasServicing() {
83-
return "1.87"
84-
}
85-
86-
if af.HasFirmwareUpdates() {
87-
return "1.86"
88-
}
89-
90-
return baseline
68+
return baselineVersionString
9169
}

pkg/provisioner/ironic/clients/features_test.go

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ func TestAvailableFeatures_ChooseMicroversion(t *testing.T) {
1616
want string
1717
}{
1818
{
19-
name: fmt.Sprintf("MaxVersion < %d return microversion %s", 89, baseline),
19+
name: fmt.Sprintf("MaxVersion < %d return microversion %s", 89, baselineVersionString),
2020
feature: fields{
2121
MaxVersion: 50,
2222
},
23-
want: baseline,
23+
want: baselineVersionString,
2424
},
2525
{
2626
name: fmt.Sprintf("MaxVersion = %d return %s", 89, microVersion),
@@ -48,47 +48,3 @@ func TestAvailableFeatures_ChooseMicroversion(t *testing.T) {
4848
})
4949
}
5050
}
51-
52-
func TestAvailableFeatures_HasFirmwareUpdates(t *testing.T) {
53-
maxVersion := 86
54-
type fields struct {
55-
MaxVersion int
56-
}
57-
tests := []struct {
58-
name string
59-
feature fields
60-
want bool
61-
}{
62-
{
63-
name: fmt.Sprintf("Firmware < %d", maxVersion),
64-
feature: fields{
65-
MaxVersion: 50,
66-
},
67-
want: false,
68-
},
69-
{
70-
name: fmt.Sprintf("Firmware = %d", maxVersion),
71-
feature: fields{
72-
MaxVersion: 86,
73-
},
74-
want: true,
75-
},
76-
{
77-
name: fmt.Sprintf("Firmware > %d", maxVersion),
78-
feature: fields{
79-
MaxVersion: 100,
80-
},
81-
want: true,
82-
},
83-
}
84-
for _, tt := range tests {
85-
t.Run(tt.name, func(t *testing.T) {
86-
af := AvailableFeatures{
87-
MaxVersion: tt.feature.MaxVersion,
88-
}
89-
if got := af.HasFirmwareUpdates(); got != tt.want {
90-
t.Errorf("HasFirmwareUpdates() = %v, want %v", got, tt.want)
91-
}
92-
})
93-
}
94-
}

pkg/provisioner/ironic/ironic.go

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -756,10 +756,6 @@ func (p *ironicProvisioner) GetFirmwareComponents() ([]metal3api.FirmwareCompone
756756
return nil, fmt.Errorf("could not get node to retrieve firmware components: %w", err)
757757
}
758758

759-
if !p.availableFeatures.HasFirmwareUpdates() {
760-
return nil, errors.New("current ironic version does not support firmware updates")
761-
}
762-
763759
// We support bmc, bios, and multiple NICs components. Starting with 3 slots.
764760
componentsInfo := make([]metal3api.FirmwareComponentStatus, 0, 3) //nolint:mnd
765761

@@ -1833,12 +1829,6 @@ func (p *ironicProvisioner) GetDataImageStatus() (isImageAttached bool, err erro
18331829
}
18341830

18351831
func (p *ironicProvisioner) AttachDataImage(url string) (err error) {
1836-
// Check if Ironic API version supports DataImage API
1837-
// Needs version >= 1.89
1838-
if !p.availableFeatures.HasDataImage() {
1839-
return fmt.Errorf("ironic version=%d doesn't support DataImage API, needs version>=1.89", p.availableFeatures.MaxVersion)
1840-
}
1841-
18421832
err = nodes.AttachVirtualMedia(p.ctx, p.client, p.nodeID, nodes.AttachVirtualMediaOpts{
18431833
DeviceType: nodes.VirtualMediaCD,
18441834
ImageURL: url,
@@ -1851,12 +1841,6 @@ func (p *ironicProvisioner) AttachDataImage(url string) (err error) {
18511841
}
18521842

18531843
func (p *ironicProvisioner) DetachDataImage() (err error) {
1854-
// Check if Ironic API version supports DataImage API
1855-
// Needs version >= 1.89
1856-
if !p.availableFeatures.HasDataImage() {
1857-
return fmt.Errorf("ironic version=%d doesn't support DataImage API, needs version>=1.89", p.availableFeatures.MaxVersion)
1858-
}
1859-
18601844
err = nodes.DetachVirtualMedia(p.ctx, p.client, p.nodeID, nodes.DetachVirtualMediaOpts{
18611845
DeviceTypes: []nodes.VirtualMediaDeviceType{nodes.VirtualMediaCD},
18621846
}).ExtractErr()

pkg/provisioner/ironic/register.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ func (p *ironicProvisioner) enrollNode(data provisioner.ManagementAccessData, bm
244244
BootInterface: bmcAccess.BootInterface(),
245245
Name: ironicNodeName(p.objectMeta),
246246
DriverInfo: driverInfo,
247+
FirmwareInterface: bmcAccess.FirmwareInterface(),
247248
DeployInterface: p.deployInterface(data),
248249
InspectInterface: defaultInspectInterface,
249250
ManagementInterface: bmcAccess.ManagementInterface(),
@@ -257,10 +258,6 @@ func (p *ironicProvisioner) enrollNode(data provisioner.ManagementAccessData, bm
257258
},
258259
}
259260

260-
if p.availableFeatures.HasFirmwareUpdates() {
261-
nodeCreateOpts.FirmwareInterface = bmcAccess.FirmwareInterface()
262-
}
263-
264261
ironicNode, err = nodes.Create(p.ctx, p.client, nodeCreateOpts).Extract()
265262
if err == nil {
266263
p.publisher("Registered", "Registered new host")

pkg/provisioner/ironic/servicing.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,6 @@ func (p *ironicProvisioner) startServicing(bmcAccess bmc.AccessDetails, ironicNo
7777
}
7878

7979
func (p *ironicProvisioner) Service(data provisioner.ServicingData, unprepared, restartOnFailure bool) (result provisioner.Result, started bool, err error) {
80-
if !p.availableFeatures.HasServicing() {
81-
result, err = operationFailed(fmt.Sprintf("servicing not supported: requires API version 1.87, available is 1.%d", p.availableFeatures.MaxVersion))
82-
return result, started, err
83-
}
84-
8580
bmcAccess, err := p.bmcAccess()
8681
if err != nil {
8782
result, err = transientError(err)

0 commit comments

Comments
 (0)