From a695cd97e6c72f1a9ac49a437597d04d8dc84e6e Mon Sep 17 00:00:00 2001 From: Christy Norman Date: Wed, 6 Oct 2021 12:56:53 -0500 Subject: [PATCH 1/5] terraform changes for Power VS Signed-off-by: Christy Norman --- OWNERS_ALIASES | 10 ++ data/data/powervs/bootstrap/main.tf | 12 +-- data/data/powervs/iaas/power-iaas.tf | 12 +-- data/data/powervs/iaas/variables.tf | 4 +- data/data/powervs/loadbalancer/alb.tf | 4 +- data/data/powervs/loadbalancer/sg.tf | 6 +- data/data/powervs/main.tf | 31 +++--- data/data/powervs/master/main.tf | 6 +- data/data/powervs/master/outputs.tf | 2 +- data/data/powervs/topology/pi_network.tf | 10 +- data/data/powervs/variables-powervs.tf | 11 +- go.mod | 2 +- pkg/asset/cluster/tfvars.go | 46 +-------- pkg/rhcos/powervs_regions.go | 124 +++++++++++++---------- pkg/tfvars/powervs/powervs.go | 51 +++++----- 15 files changed, 163 insertions(+), 168 deletions(-) diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES index e372db08593..f40850eeea5 100644 --- a/OWNERS_ALIASES +++ b/OWNERS_ALIASES @@ -35,6 +35,16 @@ aliases: - mandre - mdbooth - pierreprinetti + powervs-approvers: + - Prashanth684 + - clnperez + - mkumatag + powervs-reviewers: + - 23TNC + - clnperez + - mjturek + - mkumatag + - Prashanth684 vsphere-approvers: - dav1x - jcpowermac diff --git a/data/data/powervs/bootstrap/main.tf b/data/data/powervs/bootstrap/main.tf index 36a0d2a0d36..c9496bd6bb7 100644 --- a/data/data/powervs/bootstrap/main.tf +++ b/data/data/powervs/bootstrap/main.tf @@ -14,7 +14,7 @@ data "ibm_pi_image" "bootstrap_image" { data "ignition_config" "bootstrap" { merge { - source = ibms3presign.bootstrap_ignition.presigned_url + source = ibms3presign.bootstrap_ignition.presigned_url } } @@ -47,12 +47,12 @@ resource "ibm_resource_key" "cos_service_cred" { } resource "ibms3presign" "bootstrap_ignition" { - access_key_id = ibm_resource_key.cos_service_cred.credentials["cos_hmac_keys.access_key_id"] + access_key_id = ibm_resource_key.cos_service_cred.credentials["cos_hmac_keys.access_key_id"] secret_access_key = ibm_resource_key.cos_service_cred.credentials["cos_hmac_keys.secret_access_key"] - bucket_name = "${var.cluster_id}-bootstrap-ign" - key = "bootstrap.ign" - region_location = ibm_cos_bucket.ignition.region_location - storage_class = ibm_cos_bucket.ignition.storage_class + bucket_name = "${var.cluster_id}-bootstrap-ign" + key = "bootstrap.ign" + region_location = ibm_cos_bucket.ignition.region_location + storage_class = ibm_cos_bucket.ignition.storage_class } # Place the bootstrap ignition file in the ignition COS bucket diff --git a/data/data/powervs/iaas/power-iaas.tf b/data/data/powervs/iaas/power-iaas.tf index 06b3d8db234..071535e415b 100644 --- a/data/data/powervs/iaas/power-iaas.tf +++ b/data/data/powervs/iaas/power-iaas.tf @@ -1,5 +1,5 @@ provider "ibm" { - ibmcloud_api_key = var.powervs_api_key + ibmcloud_api_key = var.powervs_api_key } data "ibm_resource_group" "group" { @@ -7,11 +7,11 @@ data "ibm_resource_group" "group" { } resource "ibm_resource_instance" "resource_instance" { - name = "${var.cluster_id}-power-iaas" - service = "power-iaas" - plan = "power-virtual-server-group" - location = var.powervs_region - tags = concat( var.service_tags, [ "${var.cluster_id}-power-iaas", "${var.cluster_id}" ] ) + name = "${var.cluster_id}-power-iaas" + service = "power-iaas" + plan = "power-virtual-server-group" + location = var.powervs_region + tags = concat(var.service_tags, ["${var.cluster_id}-power-iaas", "${var.cluster_id}"]) resource_group_id = data.ibm_resource_group.group.id timeouts { diff --git a/data/data/powervs/iaas/variables.tf b/data/data/powervs/iaas/variables.tf index 1e0ba5f21d7..c9569ff8808 100644 --- a/data/data/powervs/iaas/variables.tf +++ b/data/data/powervs/iaas/variables.tf @@ -17,8 +17,8 @@ variable "powervs_region" { } variable "cluster_id" { - type = string - default = "" + type = string + default = "" } variable "service_tags" { diff --git a/data/data/powervs/loadbalancer/alb.tf b/data/data/powervs/loadbalancer/alb.tf index b7671b95cbe..3dfec80e94c 100644 --- a/data/data/powervs/loadbalancer/alb.tf +++ b/data/data/powervs/loadbalancer/alb.tf @@ -11,7 +11,7 @@ data "ibm_resource_group" "resource_group" { resource "ibm_is_lb" "load_balancer" { name = "${var.cluster_id}-loadbalancer" - resource_group = data.ibm_resource_group.resource_group.id + resource_group = data.ibm_resource_group.resource_group.id subnets = [var.vpc_subnet_id] security_groups = [ibm_is_security_group.ocp_security_group.id] tags = [var.cluster_id, "${var.cluster_id}-loadbalancer"] @@ -20,7 +20,7 @@ resource "ibm_is_lb" "load_balancer" { resource "ibm_is_lb" "load_balancer_int" { name = "${var.cluster_id}-loadbalancer-int" - resource_group = data.ibm_resource_group.resource_group.id + resource_group = data.ibm_resource_group.resource_group.id subnets = [var.vpc_subnet_id] security_groups = [ibm_is_security_group.ocp_security_group.id] tags = [var.cluster_id, "${var.cluster_id}-loadbalancer-int"] diff --git a/data/data/powervs/loadbalancer/sg.tf b/data/data/powervs/loadbalancer/sg.tf index 9c363a2a818..ca32b52ba37 100644 --- a/data/data/powervs/loadbalancer/sg.tf +++ b/data/data/powervs/loadbalancer/sg.tf @@ -6,10 +6,10 @@ data "ibm_is_vpc" "vpc" { } resource "ibm_is_security_group" "ocp_security_group" { - name = "${var.cluster_id}-ocp-sec-group" + name = "${var.cluster_id}-ocp-sec-group" resource_group = data.ibm_resource_group.resource_group.id - vpc = data.ibm_is_vpc.vpc.id - tags = [var.cluster_id] + vpc = data.ibm_is_vpc.vpc.id + tags = [var.cluster_id] } resource "ibm_is_security_group_rule" "inbound_ports" { diff --git a/data/data/powervs/main.tf b/data/data/powervs/main.tf index 7322ce3eb54..081ef3e59eb 100644 --- a/data/data/powervs/main.tf +++ b/data/data/powervs/main.tf @@ -1,7 +1,8 @@ provider "ibm" { - alias = "vpc" - ibmcloud_api_key = var.powervs_api_key - region = var.powervs_vpc_region + alias = "vpc" + ibmcloud_api_key = var.powervs_api_key + region = var.powervs_vpc_region + zone = var.powervs_vpc_zone } provider "ibm" { @@ -11,7 +12,7 @@ provider "ibm" { } resource "ibm_pi_key" "cluster_key" { - provider = ibm.powervs + provider = ibm.powervs pi_key_name = "${var.cluster_id}-key" pi_ssh_key = var.powervs_ssh_key pi_cloud_instance_id = var.powervs_cloud_instance_id @@ -62,18 +63,18 @@ module "master" { data "ibm_is_subnet" "vpc_subnet" { provider = ibm.vpc - name = var.powervs_vpc_subnet_name + name = var.powervs_vpc_subnet_name } data "ibm_pi_image" "boot_image" { - provider = ibm.powervs - pi_image_name = var.powervs_image_name + provider = ibm.powervs + pi_image_name = var.powervs_image_name pi_cloud_instance_id = var.powervs_cloud_instance_id } data "ibm_pi_network" "pvs_net" { - provider = ibm.powervs - pi_network_name = var.powervs_network_name + provider = ibm.powervs + pi_network_name = var.powervs_network_name pi_cloud_instance_id = var.powervs_cloud_instance_id } @@ -83,12 +84,12 @@ module "loadbalancer" { } source = "./loadbalancer" - cluster_id = var.cluster_id - vpc_name = var.powervs_vpc_name - vpc_subnet_id = data.ibm_is_subnet.vpc_subnet.id - bootstrap_ip = module.bootstrap.bootstrap_ip - master_ips = module.master.master_ips - resource_group = var.powervs_resource_group + cluster_id = var.cluster_id + vpc_name = var.powervs_vpc_name + vpc_subnet_id = data.ibm_is_subnet.vpc_subnet.id + bootstrap_ip = module.bootstrap.bootstrap_ip + master_ips = module.master.master_ips + resource_group = var.powervs_resource_group } diff --git a/data/data/powervs/master/main.tf b/data/data/powervs/master/main.tf index ba66965a5da..568526cd027 100644 --- a/data/data/powervs/master/main.tf +++ b/data/data/powervs/master/main.tf @@ -24,9 +24,9 @@ resource "ibm_pi_instance" "master" { pi_cloud_instance_id = var.cloud_instance_id pi_network_ids = [data.ibm_pi_network.network.id] - pi_user_data = base64encode(var.ignition) - pi_key_pair_name = var.key_id - pi_health_status = "WARNING" + pi_user_data = base64encode(var.ignition) + pi_key_pair_name = var.key_id + pi_health_status = "WARNING" } data "ibm_pi_instance_ip" "master_ip" { diff --git a/data/data/powervs/master/outputs.tf b/data/data/powervs/master/outputs.tf index 56ba77e90a2..910e18ebb0b 100644 --- a/data/data/powervs/master/outputs.tf +++ b/data/data/powervs/master/outputs.tf @@ -1,3 +1,3 @@ output "master_ips" { - value = data.ibm_pi_instance_ip.master_ip.*.ip + value = data.ibm_pi_instance_ip.master_ip.*.ip } diff --git a/data/data/powervs/topology/pi_network.tf b/data/data/powervs/topology/pi_network.tf index a633e85c139..5f5e3a5f7c9 100644 --- a/data/data/powervs/topology/pi_network.tf +++ b/data/data/powervs/topology/pi_network.tf @@ -5,9 +5,9 @@ ## And since they're optional, use the count = construct to conditionally create them if the tf ## vars are unset. -# Note, the following are incomplete placeholders to be tested and reviewed later when the TF -support for these has been added to the ibmcloud terraform provider (which is now forked into -https://github.com/openshift/terraform-provider-ibm) +## Note, the following are incomplete placeholders to be tested and reviewed later when the TF +## support for these has been added to the ibmcloud terraform provider (which is now forked into +## https://github.com/openshift/terraform-provider-ibm) #resource "ibm_direct_link" "ocp_direct_link" { # TODO @@ -15,8 +15,8 @@ https://github.com/openshift/terraform-provider-ibm) #resource "ibm_pi_network" "ocp_network" { # provider = ibm.powervs -# count = var.powervs_network_id == "" ? 1 : 0 -# pi_network_name = "pvs_net_${var.cluster_id}" +# count = var.powervs_network_name == "" ? 1 : 0 +# pi_network_name = "pvs-net-${var.cluster_id}" # pi_cloud_instance_id = "powervs_cloud_instance_id" # pi_network_type = "dhcp" # pi_cidr = "192.168.0.0/24" diff --git a/data/data/powervs/variables-powervs.tf b/data/data/powervs/variables-powervs.tf index 8e144f23fa4..d172530f49d 100644 --- a/data/data/powervs/variables-powervs.tf +++ b/data/data/powervs/variables-powervs.tf @@ -11,7 +11,11 @@ variable "powervs_vpc_region" { type = string description = "The IBM Cloud region where you want to create the resources" default = "eu-gb" - ##default = "eu-gb" +} + +variable "powervs_vpc_zone" { + type = string + description = "The IBM Cloud zone associated with the VPC region you're using" } variable "powervs_region" { @@ -20,6 +24,11 @@ variable "powervs_region" { default = "lon" } +variable "powervs_zone" { + type = string + description = "The IBM Cloud zone associated with the region you're using" +} + variable "powervs_resource_group" { type = string description = "The cloud instance resource group" diff --git a/go.mod b/go.mod index 4f9669e4f95..a14961d82f4 100644 --- a/go.mod +++ b/go.mod @@ -71,7 +71,7 @@ require ( github.com/openshift/cluster-api-provider-ibmcloud v0.0.0-20210702173623-676faba9895d github.com/openshift/cluster-api-provider-libvirt v0.2.1-0.20191219173431-2336783d4603 github.com/openshift/cluster-api-provider-ovirt v0.1.1-0.20210817084941-2262c7c6cece - github.com/openshift/cluster-api-provider-powervs v0.0.2-0.20210621075832-a5ccc9c865e7 + github.com/openshift/cluster-api-provider-powervs v0.0.2-0.20210928133618-8eb5ebcb07a1 github.com/openshift/library-go v0.0.0-20210408164723-7a65fdb398e2 github.com/openshift/machine-api-operator v0.2.1-0.20210505133115-b7ef098180db github.com/openshift/machine-config-operator v0.0.0 diff --git a/pkg/asset/cluster/tfvars.go b/pkg/asset/cluster/tfvars.go index 9c3e6643417..00ea69647c1 100644 --- a/pkg/asset/cluster/tfvars.go +++ b/pkg/asset/cluster/tfvars.go @@ -610,49 +610,9 @@ func (t *TerraformVariables) Generate(parents asset.Parents) error { Filename: fmt.Sprintf(TfPlatformVarsFileName, platform), Data: data, }) - case powervs.Name: - session, err := powervsconfig.GetSession() - if err != nil { - return err - } - - masters, err := mastersAsset.Machines() - if err != nil { - return err - } - - // Get CISInstanceCRN from InstallConfig metadata - crn, err := installConfig.PowerVS.CISInstanceCRN(ctx) - if err != nil { - return err - } - - masterConfigs := make([]*powervsprovider.PowerVSMachineProviderConfig, len(masters)) - for i, m := range masters { - masterConfigs[i] = m.Spec.ProviderSpec.Value.Object.(*powervsprovider.PowerVSMachineProviderConfig) - } - - data, err = powervstfvars.TFVars( - powervstfvars.TFVarsSources{ - MasterConfigs: masterConfigs, - PowerVSZone: session.Session.Zone, - APIKey: session.Session.IAMToken, - SSHKey: installConfig.Config.SSHKey, - PowerVSResourceGroup: installConfig.Config.PowerVS.PowerVSResourceGroup, - NetworkName: installConfig.Config.PowerVS.PVSNetworkName, - ImageName: installConfig.Config.PowerVS.ImageName, - CISInstanceCRN: crn, - VPCSubnetName: installConfig.Config.PowerVS.Subnets[0], - VPCName: installConfig.Config.PowerVS.VPC, - }, - ) - if err != nil { - return errors.Wrapf(err, "failed to get %s Terraform variables", platform) - } - t.FileList = append(t.FileList, &asset.File{ - Filename: fmt.Sprintf(TfPlatformVarsFileName, platform), - Data: data, - }) + //case powervs.Name: + // @TODO: Omitting for now to keep PRs seperate as this will pull in + // installconfig, types, and assets case vsphere.Name: controlPlanes, err := mastersAsset.Machines() diff --git a/pkg/rhcos/powervs_regions.go b/pkg/rhcos/powervs_regions.go index 3883818a927..66678b1dff4 100644 --- a/pkg/rhcos/powervs_regions.go +++ b/pkg/rhcos/powervs_regions.go @@ -1,70 +1,86 @@ package rhcos -// TODO(cklokman): This entire file should be programatically generated similar to aws +// Since there is no API to query these, we have to hard-code them here. -// PowerVSZones holds the zones cooresponding to each region found in PowerVS Regions -// TODO(cklokman): These are fictional zones for testing -var PowerVSZones = map[string][]string{ - "eu-de": []string{ - "eu-de-1", - "eu-de-2", - }, - "dal": []string{"dal12"}, - "lon": []string{ - "lon04", - "lon06", - }, - "mon": []string{"mon01"}, - "osa": []string{"osa21"}, - "syd": []string{"syd04"}, - "sao": []string{"sao01"}, - "tor": []string{"tor01"}, - "tok": []string{"tok04"}, - "us-east": []string{"us-east"}, +// PowerVSRegion describes resources associated with a region in Power VS. +// We're using a few items from the IBM Cloud VPC offering. The region names +// for VPC are different so another function of this is to correlate those. +type PowerVSRegion struct { + Name string + Description string + VPCRegion string + Zones []string } // PowerVSRegions holds the regions for IBM Power VS, and descriptions used during the survey -// TODO(cklokman): These are fictional regtions for testing -var PowerVSRegions = []map[string]string{ - map[string]string{ - "name": "dal", - "description": "Dallas, USA", - }, - map[string]string{ - "name": "eu-de", - "description": "Frankfurt, Germany", +var PowerVSRegions = map[string]PowerVSRegion{ + "dal": { + Name: "dal", + Description: "Dallas, USA", + VPCRegion: "us-south", + Zones: []string{"dal12"}, }, - map[string]string{ - "name": "lon", - "description": "London, UK.", + "eu-de": { + Name: "eu-de", + Description: "Frankfurt, Germany", + VPCRegion: "eu-de", + Zones: []string{ + "eu-de-1", + "eu-de-2", + }, }, - map[string]string{ - "name": "mon", - "description": "Montreal, Canada", + "lon": { + Name: "lon", + Description: "London, UK.", + VPCRegion: "eu-gb", + Zones: []string{ + "lon04", + "lon06", + }, }, - - map[string]string{ - "name": "osa", - "description": "Osaka, Japan", + "osa": { + Name: "osa", + Description: "Osaka, Japan", + VPCRegion: "jp-osa", + Zones: []string{"osa21"}, }, - map[string]string{ - "name": "syd", - "description": "Sydney, Australia", + "syd": { + Name: "syd", + Description: "Sydney, Australia", + VPCRegion: "au-syd", + Zones: []string{"syd04"}, }, - map[string]string{ - "name": "sao", - "description": "São Paulo, Brazil", + "sao": { + Name: "sao", + Description: "São Paulo, Brazil", + VPCRegion: "br-sao", + Zones: []string{"sao01"}, }, - map[string]string{ - "name": "tor", - "description": "Toronto, Canada", + "tor": { + Name: "tor", + Description: "Toronto, Canada", + VPCRegion: "ca-tor", + Zones: []string{"tor01"}, }, - map[string]string{ - "name": "tok", - "description": "Tokyo, Japan", + "tok": { + Name: "tok", + Description: "Tokyo, Japan", + VPCRegion: "jp-tok", + Zones: []string{"tok04"}, }, - map[string]string{ - "name": "us-east", - "description": "Washington DC, USA", + "us-east": { + Name: "us-east", + Description: "Washington DC, USA", + VPCRegion: "us-east", + Zones: []string{"us-east"}, }, } + +// PowerVSZones retrieves a slice of all zones in Power VS +func PowerVSZones() []string { + var zones []string + for _, r := range PowerVSRegions { + zones = append(zones, r.Zones...) + } + return zones +} diff --git a/pkg/tfvars/powervs/powervs.go b/pkg/tfvars/powervs/powervs.go index 82302adb5dd..66cdbe83db7 100644 --- a/pkg/tfvars/powervs/powervs.go +++ b/pkg/tfvars/powervs/powervs.go @@ -3,27 +3,14 @@ package powervs import ( "encoding/json" + "fmt" + "math/rand" + "time" "github.com/openshift/cluster-api-provider-powervs/pkg/apis/powervsprovider/v1alpha1" + "github.com/openshift/installer/pkg/rhcos" ) -// powervsRegionToVPCRegion based on: -// https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-creating-power-virtual-server&locale=en#creating-service -// https://github.com/ocp-power-automation/ocp4-upi-powervs/blob/master/docs/var.tfvars-doc.md -var powervsRegionToIBMRegion = map[string]string{ - "dal": "us-south", - "us-east": "us-east", - "sao": "br-sao", - "tor": "ca-tor", - "mon": "ca-mon", - "eu-de-1": "eu-de", - "eu-de-2": "eu-de", - "lon": "eu-gb", - "syd": "au-syd", - "tok": "jp-tok", - "osa": "jp-osa", -} - type config struct { ServiceInstanceID string `json:"powervs_cloud_instance_id"` APIKey string `json:"powervs_api_key"` @@ -31,12 +18,12 @@ type config struct { PowerVSRegion string `json:"powervs_region"` PowerVSZone string `json:"powervs_zone"` VPCRegion string `json:"powervs_vpc_region"` + VPCZone string `json:"powervs_vpc_zone"` PowerVSResourceGroup string `json:"powervs_resource_group"` CISInstanceCRN string `json:"powervs_cis_crn"` ImageName string `json:"powervs_image_name"` ImageID string `json:"powervs_image_id"` NetworkName string `json:"powervs_network_name"` - NetworkIDs string `json:"powervs_network_id"` VPCName string `json:"powervs_vpc_name"` VPCSubnetName string `json:"powervs_vpc_subnet_name"` BootstrapMemory string `json:"powervs_bootstrap_memory"` @@ -52,10 +39,12 @@ type TFVarsSources struct { MasterConfigs []*v1alpha1.PowerVSMachineProviderConfig APIKey string SSHKey string - PowerVSZone string + Region string + Zone string NetworkName string ImageName string PowerVSResourceGroup string + VPCZone string CISInstanceCRN string VPCName string VPCSubnetName string @@ -64,21 +53,31 @@ type TFVarsSources struct { // TFVars generates Power VS-specific Terraform variables launching the cluster. func TFVars(sources TFVarsSources) ([]byte, error) { masterConfig := sources.MasterConfigs[0] + // TODO(mjturek): Allow user to specify vpcRegion in install config like we're doing for vpcZone + vpcRegion := rhcos.PowerVSRegions[sources.Region].VPCRegion + + vpcZone := sources.VPCZone + if vpcZone == "" { + // Randomly select a zone in the VPC region. + // @TODO: Align this with a region later. + rand.Seed(time.Now().UnixNano()) + // All supported Regions are MZRs and have Zones named "region-[1-3]" + vpcZone = fmt.Sprintf("%s-%d", vpcRegion, rand.Intn(3)) + } //@TODO: Add resource group to platform cfg := &config{ ServiceInstanceID: masterConfig.ServiceInstanceID, APIKey: sources.APIKey, SSHKey: sources.SSHKey, - PowerVSRegion: masterConfig.Region, - PowerVSZone: sources.PowerVSZone, - VPCRegion: powervsRegionToIBMRegion[masterConfig.Region], + PowerVSRegion: sources.Region, + PowerVSZone: sources.Zone, + VPCRegion: vpcRegion, + VPCZone: vpcZone, PowerVSResourceGroup: sources.PowerVSResourceGroup, CISInstanceCRN: sources.CISInstanceCRN, - ImageName: sources.ImageName, - ImageID: masterConfig.ImageID, - NetworkName: sources.NetworkName, - NetworkIDs: masterConfig.NetworkIDs[0], + ImageName: *masterConfig.Image.Name, + NetworkName: *masterConfig.Network.Name, VPCName: sources.VPCName, VPCSubnetName: sources.VPCSubnetName, BootstrapMemory: masterConfig.Memory, From cc814b42a9700cb9b5dbc3da2fc159390ce56896 Mon Sep 17 00:00:00 2001 From: Christy Norman Date: Fri, 8 Oct 2021 14:31:30 -0500 Subject: [PATCH 2/5] Power VS Support: powervs types Signed-off-by: Christy Norman --- .../install.openshift.io_installconfigs.yaml | 129 ++++++++++++++++++ pkg/types/installconfig.go | 1 + pkg/types/powervs/platform.go | 22 ++- pkg/types/validation/installconfig_test.go | 6 +- 4 files changed, 142 insertions(+), 16 deletions(-) diff --git a/data/data/install.openshift.io_installconfigs.yaml b/data/data/install.openshift.io_installconfigs.yaml index d2f3c8cf0bd..456622d3f0f 100644 --- a/data/data/install.openshift.io_installconfigs.yaml +++ b/data/data/install.openshift.io_installconfigs.yaml @@ -450,6 +450,30 @@ spec: - high_performance type: string type: object + powervs: + description: PowerVS is the configuration used when installing + on IBM Power VS. + properties: + memory: + description: Memory defines the memory in GB for the instance. + type: integer + procType: + description: ProcType defines the processor sharing model + for the instance. + type: string + processors: + description: Processors defines the processing units for + the instance. + sysType: + description: SysType defines the system type for instance. + type: string + volumeIDs: + description: VolumeIDs is the list of volumes attached to + the instance. + items: + type: string + type: array + type: object vsphere: description: VSphere is the configuration used when installing on vSphere. @@ -891,6 +915,30 @@ spec: - high_performance type: string type: object + powervs: + description: PowerVS is the configuration used when installing + on IBM Power VS. + properties: + memory: + description: Memory defines the memory in GB for the instance. + type: integer + procType: + description: ProcType defines the processor sharing model + for the instance. + type: string + processors: + description: Processors defines the processing units for the + instance. + sysType: + description: SysType defines the system type for instance. + type: string + volumeIDs: + description: VolumeIDs is the list of volumes attached to + the instance. + items: + type: string + type: array + type: object vsphere: description: VSphere is the configuration used when installing on vSphere. @@ -2089,6 +2137,87 @@ spec: - ovirt_cluster_id - ovirt_storage_domain_id type: object + powervs: + description: PowerVS is the configuration used when installing on + Power VS. + properties: + APIKey: + description: APIKey is the API key for the user's IBM Cloud account. + type: string + clusterOSImage: + description: ClusterOSImage is a pre-created Power VS boot image + that overrides the default image for cluster nodes. + type: string + defaultMachinePlatform: + description: DefaultMachinePlatform is the default configuration + used when installing on Power VS for machine pools which do + not define their own platform configuration. + properties: + memory: + description: Memory defines the memory in GB for the instance. + type: integer + procType: + description: ProcType defines the processor sharing model + for the instance. + type: string + processors: + description: Processors defines the processing units for the + instance. + sysType: + description: SysType defines the system type for instance. + type: string + volumeIDs: + description: VolumeIDs is the list of volumes attached to + the instance. + items: + type: string + type: array + type: object + powervsResourceGroup: + description: PowerVSResourceGroup is the resource group for creating + Power VS resources. + type: string + pvsNetworkName: + description: PVSNetworkName specifies an existing network within + the Power VS Service Instance. + type: string + region: + description: Region specifies the IBM Cloud region where the cluster + will be created. + type: string + serviceInstance: + description: ServiceInstanceID is the ID of the Power IAAS instance + created from the IBM Cloud Catalog + type: string + subnets: + description: Subnets specifies existing subnets (by ID) where + cluster resources will be created. Leave unset to have the + installer create subnets in a new VPC on your behalf. + items: + type: string + type: array + userID: + description: UserID is the login for the user's IBM Cloud account. + type: string + vpc: + description: VPC is a VPC inside IBM Cloud. Needed in order to + create VPC Load Balancers. + type: string + vpcRegion: + description: Zone in the region used to create VPC resources. + Leave unset to allow installer to randomly select a zone. + type: string + zone: + description: Zone specifies the IBM Cloud colo region where the + cluster will be created. Required for multi-zone regions. + type: string + required: + - powervsResourceGroup + - region + - serviceInstance + - userID + - zone + type: object vsphere: description: VSphere is the configuration used when installing on vSphere. diff --git a/pkg/types/installconfig.go b/pkg/types/installconfig.go index 8965019d46f..48a92f8808e 100644 --- a/pkg/types/installconfig.go +++ b/pkg/types/installconfig.go @@ -49,6 +49,7 @@ var ( baremetal.Name, ibmcloud.Name, none.Name, + powervs.Name, } // OKD is a setting to enable community-only modifications diff --git a/pkg/types/powervs/platform.go b/pkg/types/powervs/platform.go index efe9185408f..163f78e7bf5 100644 --- a/pkg/types/powervs/platform.go +++ b/pkg/types/powervs/platform.go @@ -20,12 +20,16 @@ type Platform struct { // Required for multi-zone regions. Zone string `json:"zone"` + // Zone in the region used to create VPC resources. Leave unset + // to allow installer to randomly select a zone. + // + // +optional + VPCZone string `json:"vpcRegion,omitempty"` + // UserID is the login for the user's IBM Cloud account. UserID string `json:"userID"` // APIKey is the API key for the user's IBM Cloud account. - // - // +optional APIKey string `json:"APIKey,omitempty"` // SSHKeyName is the name of an SSH key stored in the Service Instance. @@ -33,13 +37,12 @@ type Platform struct { // VPC is a VPC inside IBM Cloud. Needed in order to create VPC Load Balancers. // - // @TODO: make this +optional when we have TF support + // +optional VPC string `json:"vpc,omitempty"` // Subnets specifies existing subnets (by ID) where cluster // resources will be created. Leave unset to have the installer // create subnets in a new VPC on your behalf. - // @TODO: Rename VPCSubnetID & make into string // // @TODO: make this +optional when we have TF support Subnets []string `json:"subnets,omitempty"` @@ -71,18 +74,11 @@ type Platform struct { // @TODO: make this +optional when we have TF support ImageName string `json:"imageName,omitempty"` - // BootstrapOSImage is a URL to override the default OS image + // ClusterOSImage is a URL to override the default OS image // for the bootstrap node. The URL must contain a sha256 hash of the image // e.g https://mirror.example.com/images/image.ova.gz?sha256=a07bd... // - // @TODO: make this +optional when we have TF support - BootstrapOSImage string `json:"bootstrapOSImage,omitempty"` - - // ClusterOSImage is a URL to override the default OS image - // for cluster nodes. The URL must contain a sha256 hash of the image - // e.g https://mirror.example.com/images/powervs.ova.gz?sha256=3b5a8... - // - // @TODO: make this +optional when we have TF support + // +optional ClusterOSImage string `json:"clusterOSImage,omitempty"` // DefaultMachinePlatform is the default configuration used when diff --git a/pkg/types/validation/installconfig_test.go b/pkg/types/validation/installconfig_test.go index 9ba2403b9c2..6610c4d2e28 100644 --- a/pkg/types/validation/installconfig_test.go +++ b/pkg/types/validation/installconfig_test.go @@ -522,7 +522,7 @@ func TestValidateInstallConfig(t *testing.T) { c.Platform = types.Platform{} return c }(), - expectedError: `^platform: Invalid value: "": must specify one of the platforms \(alibabacloud, aws, azure, baremetal, gcp, ibmcloud, none, openstack, ovirt, vsphere\)$`, + expectedError: `^platform: Invalid value: "": must specify one of the platforms \(alibabacloud, aws, azure, baremetal, gcp, ibmcloud, none, openstack, ovirt, powervs, vsphere\)$`, }, { name: "multiple platforms", @@ -553,7 +553,7 @@ func TestValidateInstallConfig(t *testing.T) { } return c }(), - expectedError: `^platform: Invalid value: "libvirt": must specify one of the platforms \(alibabacloud, aws, azure, baremetal, gcp, ibmcloud, none, openstack, ovirt, vsphere\)$`, + expectedError: `^platform: Invalid value: "libvirt": must specify one of the platforms \(alibabacloud, aws, azure, baremetal, gcp, ibmcloud, none, openstack, ovirt, powervs, vsphere\)$`, }, { name: "invalid libvirt platform", @@ -565,7 +565,7 @@ func TestValidateInstallConfig(t *testing.T) { c.Platform.Libvirt.URI = "" return c }(), - expectedError: `^\[platform: Invalid value: "libvirt": must specify one of the platforms \(alibabacloud, aws, azure, baremetal, gcp, ibmcloud, none, openstack, ovirt, vsphere\), platform\.libvirt\.uri: Invalid value: "": invalid URI "" \(no scheme\)]$`, + expectedError: `^\[platform: Invalid value: "libvirt": must specify one of the platforms \(alibabacloud, aws, azure, baremetal, gcp, ibmcloud, none, openstack, ovirt, powervs, vsphere\), platform\.libvirt\.uri: Invalid value: "": invalid URI "" \(no scheme\)]$`, }, { name: "valid none platform", From b27f55573645c03848206f685db72cf0b3681ab5 Mon Sep 17 00:00:00 2001 From: Christy Norman Date: Fri, 8 Oct 2021 17:00:57 -0500 Subject: [PATCH 3/5] Power VS Support: assets only Signed-off-by: Christy Norman --- go.mod | 4 +- pkg/asset/cluster/tfvars.go | 48 ++++++++++++++++++++-- pkg/asset/installconfig/powervs/regions.go | 4 +- pkg/asset/machines/powervs/machines.go | 3 +- pkg/asset/machines/worker_test.go | 6 ++- pkg/asset/manifests/infrastructure.go | 1 - 6 files changed, 55 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index a14961d82f4..d222486b965 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( github.com/Azure/go-ntlmssp v0.0.0-20191115210519-2b2be6cc8ed4 // indirect github.com/ChrisTrenkamp/goxpath v0.0.0-20190607011252-c5096ec8773d // indirect github.com/IBM-Cloud/bluemix-go v0.0.0-20210611051827-cdc80c935c05 - github.com/IBM-Cloud/power-go-client v1.0.56 + github.com/IBM-Cloud/power-go-client v1.0.72 github.com/IBM-Cloud/terraform-provider-ibm v1.26.2 github.com/IBM/go-sdk-core/v5 v5.4.3 github.com/IBM/networking-go-sdk v0.14.0 @@ -164,3 +164,5 @@ replace ( google.golang.org/genproto => google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 google.golang.org/grpc => google.golang.org/grpc v1.29.1 ) + +replace github.com/openshift/machine-api-operator => github.com/openshift-powervs/machine-api-operator v0.2.1-0.20210809115935-a9fd8f5d2767 diff --git a/pkg/asset/cluster/tfvars.go b/pkg/asset/cluster/tfvars.go index 00ea69647c1..427227a4746 100644 --- a/pkg/asset/cluster/tfvars.go +++ b/pkg/asset/cluster/tfvars.go @@ -610,9 +610,51 @@ func (t *TerraformVariables) Generate(parents asset.Parents) error { Filename: fmt.Sprintf(TfPlatformVarsFileName, platform), Data: data, }) - //case powervs.Name: - // @TODO: Omitting for now to keep PRs seperate as this will pull in - // installconfig, types, and assets + case powervs.Name: + // @TODO: Can we just use the install config for all these values? + session, err := powervsconfig.GetSession() + if err != nil { + return err + } + + masters, err := mastersAsset.Machines() + if err != nil { + return err + } + + // Get CISInstanceCRN from InstallConfig metadata + crn, err := installConfig.PowerVS.CISInstanceCRN(ctx) + if err != nil { + return err + } + + masterConfigs := make([]*powervsprovider.PowerVSMachineProviderConfig, len(masters)) + for i, m := range masters { + masterConfigs[i] = m.Spec.ProviderSpec.Value.Object.(*powervsprovider.PowerVSMachineProviderConfig) + } + + data, err = powervstfvars.TFVars( + powervstfvars.TFVarsSources{ + MasterConfigs: masterConfigs, + Region: installConfig.Config.Platform.PowerVS.Region, + Zone: installConfig.Config.Platform.PowerVS.Zone, + VPCZone: installConfig.Config.Platform.PowerVS.VPCZone, + APIKey: session.Session.IAMToken, + SSHKey: installConfig.Config.SSHKey, + PowerVSResourceGroup: installConfig.Config.PowerVS.PowerVSResourceGroup, + NetworkName: installConfig.Config.PowerVS.PVSNetworkName, + CISInstanceCRN: crn, + VPCSubnetName: installConfig.Config.PowerVS.Subnets[0], + VPCName: installConfig.Config.PowerVS.VPC, + }, + ) + if err != nil { + return errors.Wrapf(err, "failed to get %s Terraform variables", platform) + } + t.FileList = append(t.FileList, &asset.File{ + Filename: fmt.Sprintf(TfPlatformVarsFileName, platform), + Data: data, + }) case vsphere.Name: controlPlanes, err := mastersAsset.Machines() diff --git a/pkg/asset/installconfig/powervs/regions.go b/pkg/asset/installconfig/powervs/regions.go index 25961796e2b..af96a02139e 100644 --- a/pkg/asset/installconfig/powervs/regions.go +++ b/pkg/asset/installconfig/powervs/regions.go @@ -16,7 +16,7 @@ func knownRegions() map[string]string { regions := make(map[string]string) for _, region := range rhcos.PowerVSRegions { - regions[region["name"]] = region["description"] + regions[region.Name] = region.Description } return regions } @@ -32,7 +32,7 @@ func IsKnownRegion(region string) bool { // Todo(cklokman): Need some form of error handing in this function... func knownZones(region string) []string { - return rhcos.PowerVSZones[region] + return rhcos.PowerVSRegions[region].Zones } // IsKnownZone return true is a specified zone is Known to the installer. diff --git a/pkg/asset/machines/powervs/machines.go b/pkg/asset/machines/powervs/machines.go index 1e9b45e9929..0d3212c8f29 100644 --- a/pkg/asset/machines/powervs/machines.go +++ b/pkg/asset/machines/powervs/machines.go @@ -6,10 +6,10 @@ import ( corev1 "k8s.io/api/core/v1" + machineapi "github.com/openshift/api/machine/v1beta1" powervsprovider "github.com/openshift/cluster-api-provider-powervs/pkg/apis/powervsprovider/v1alpha1" "github.com/openshift/installer/pkg/types" "github.com/openshift/installer/pkg/types/powervs" - machineapi "github.com/openshift/api/machine/v1beta1" "github.com/pkg/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -85,7 +85,6 @@ func provider(clusterID string, platform *powervs.Platform, mpool *powervs.Machi APIVersion: powervsprovider.GroupVersion.String(), }, ObjectMeta: metav1.ObjectMeta{}, - Region: platform.Region, ServiceInstanceID: platform.ServiceInstanceID, ImageID: mpool.ImageID, UserDataSecret: &corev1.LocalObjectReference{Name: userDataSecret}, diff --git a/pkg/asset/machines/worker_test.go b/pkg/asset/machines/worker_test.go index 32ae3381edb..ff96afda867 100644 --- a/pkg/asset/machines/worker_test.go +++ b/pkg/asset/machines/worker_test.go @@ -4,6 +4,8 @@ import ( powervstypes "github.com/openshift/installer/pkg/types/powervs" "testing" + powervstypes "github.com/openshift/installer/pkg/types/powervs" + "github.com/stretchr/testify/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/utils/pointer" @@ -252,7 +254,7 @@ func TestComputeIsNotModified(t *testing.T) { } func TestPowerVSWorker(t *testing.T) { - t.Log("Testing powerVS platform worker") + t.Log("Testing Power VS platform worker") parents := asset.Parents{} parents.Add( &installconfig.ClusterID{ @@ -276,7 +278,7 @@ func TestPowerVSWorker(t *testing.T) { Platform: types.MachinePoolPlatform{ PowerVS: &powervstypes.MachinePool{ ServiceInstance: "dummy-service-instance", - ImageID: "dummy-image-id", + ImageName: "dummy-image-name", NetworkIDs: []string{"dummy-network"}, KeyPairName: "dummy-keypair", }, diff --git a/pkg/asset/manifests/infrastructure.go b/pkg/asset/manifests/infrastructure.go index a3f5c33e4b4..657d3ef9845 100644 --- a/pkg/asset/manifests/infrastructure.go +++ b/pkg/asset/manifests/infrastructure.go @@ -218,7 +218,6 @@ func (i *Infrastructure) Generate(dependencies asset.Parents) error { Region: installConfig.Config.Platform.PowerVS.Region, Zone: installConfig.Config.Platform.PowerVS.Zone, } - default: config.Spec.PlatformSpec.Type = configv1.NonePlatformType } From e77452ac20a550cf48b8ec4191e5ba860d2fa9dc Mon Sep 17 00:00:00 2001 From: Christy Norman Date: Tue, 12 Oct 2021 16:54:24 -0500 Subject: [PATCH 4/5] install config simplification Signed-off-by: Christy Norman --- pkg/asset/installconfig/powervs/platform.go | 1 - pkg/asset/machines/powervs/machines.go | 36 ++++++++++++--------- pkg/asset/machines/powervs/machinesets.go | 22 ++++++------- pkg/asset/machines/worker.go | 2 +- 4 files changed, 31 insertions(+), 30 deletions(-) diff --git a/pkg/asset/installconfig/powervs/platform.go b/pkg/asset/installconfig/powervs/platform.go index f18296cb8f3..a05c15c2fb4 100644 --- a/pkg/asset/installconfig/powervs/platform.go +++ b/pkg/asset/installconfig/powervs/platform.go @@ -16,7 +16,6 @@ func Platform() (*powervs.Platform, error) { var p powervs.Platform if osOverride := os.Getenv("OPENSHIFT_INSTALL_OS_IMAGE_OVERRIDE"); len(osOverride) != 0 { - p.BootstrapOSImage = osOverride p.ClusterOSImage = osOverride } diff --git a/pkg/asset/machines/powervs/machines.go b/pkg/asset/machines/powervs/machines.go index 0d3212c8f29..e6c334bfdb8 100644 --- a/pkg/asset/machines/powervs/machines.go +++ b/pkg/asset/machines/powervs/machines.go @@ -23,22 +23,22 @@ func Machines(clusterID string, config *types.InstallConfig, pool *types.Machine platform := config.Platform.PowerVS mpool := pool.Platform.PowerVS + var ( + image, network string + ) + // Only the service instance is guaranteed to exist and be passed via the install config // The other two, we should standardize a name including the cluster id. - if platform.SSHKeyName != "" { - mpool.KeyPairName = platform.SSHKeyName - } else { - mpool.KeyPairName = fmt.Sprintf("%s-key", clusterID) - } - if platform.PVSNetworkID != "" { - mpool.NetworkIDs = append([]string{platform.PVSNetworkID}) - } if platform.ClusterOSImage != "" { - mpool.ImageID = platform.ClusterOSImage + image = platform.ClusterOSImage + } else { + image = fmt.Sprintf("rhcos-%s", clusterID) } - if mpool.ImageID == "" { - mpool.ImageID = fmt.Sprintf("rhcos-%s", clusterID) + if platform.PVSNetworkName != "" { + network = platform.PVSNetworkName + } else { + network = fmt.Sprintf("pvs-net-%s", clusterID) } total := int64(1) @@ -47,7 +47,7 @@ func Machines(clusterID string, config *types.InstallConfig, pool *types.Machine } var machines []machineapi.Machine for idx := int64(0); idx < total; idx++ { - provider, err := provider(clusterID, platform, mpool, userDataSecret, platform.UserTags) + provider, err := provider(clusterID, platform, mpool, userDataSecret, image, network) if err != nil { return nil, errors.Wrap(err, "failed to create provider") } @@ -76,7 +76,11 @@ func Machines(clusterID string, config *types.InstallConfig, pool *types.Machine return machines, nil } -func provider(clusterID string, platform *powervs.Platform, mpool *powervs.MachinePool, userDataSecret string, userTags map[string]string) (*powervsprovider.PowerVSMachineProviderConfig, error) { +func provider(clusterID string, platform *powervs.Platform, mpool *powervs.MachinePool, userDataSecret string, image string, network string) (*powervsprovider.PowerVSMachineProviderConfig, error) { + + if clusterID == "" || platform == nil || mpool == nil || userDataSecret == "" || image == "" || network == "" { + return nil, fmt.Errorf("invalid value passed to provider") + } //Setting only the mandatory parameters config := &powervsprovider.PowerVSMachineProviderConfig{ @@ -86,15 +90,15 @@ func provider(clusterID string, platform *powervs.Platform, mpool *powervs.Machi }, ObjectMeta: metav1.ObjectMeta{}, ServiceInstanceID: platform.ServiceInstanceID, - ImageID: mpool.ImageID, + Image: powervsprovider.PowerVSResourceReference{Name: &image}, UserDataSecret: &corev1.LocalObjectReference{Name: userDataSecret}, CredentialsSecret: &corev1.LocalObjectReference{Name: "powervs-credentials"}, SysType: mpool.SysType, ProcType: mpool.ProcType, Processors: fmt.Sprintf("%f", mpool.Processors), Memory: fmt.Sprintf("%d", mpool.Memory), - NetworkIDs: mpool.NetworkIDs, - KeyPairName: &mpool.KeyPairName, + Network: powervsprovider.PowerVSResourceReference{Name: &network}, + KeyPairName: fmt.Sprintf("%s-key", clusterID), } return config, nil } diff --git a/pkg/asset/machines/powervs/machinesets.go b/pkg/asset/machines/powervs/machinesets.go index 93fb3d0cc86..9ab3e7948aa 100644 --- a/pkg/asset/machines/powervs/machinesets.go +++ b/pkg/asset/machines/powervs/machinesets.go @@ -15,7 +15,7 @@ import ( ) // MachineSets returns a list of machinesets for a machinepool. -func MachineSets(clusterID string, config *types.InstallConfig, pool *types.MachinePool, role, userDataSecret string, userTags map[string]string) ([]*machineapi.MachineSet, error) { +func MachineSets(clusterID string, config *types.InstallConfig, pool *types.MachinePool, role, userDataSecret string) ([]*machineapi.MachineSet, error) { if configPlatform := config.Platform.Name(); configPlatform != powervs.Name { return nil, fmt.Errorf("non-powerVS configuration: %q", configPlatform) } @@ -23,22 +23,20 @@ func MachineSets(clusterID string, config *types.InstallConfig, pool *types.Mach return nil, fmt.Errorf("non-powerVS machine-pool: %q", poolPlatform) } + var ( + image, network string + ) + platform := config.Platform.PowerVS mpool := pool.Platform.PowerVS - if platform.SSHKeyName != "" { - mpool.KeyPairName = platform.SSHKeyName - } else { - mpool.KeyPairName = fmt.Sprintf("%s-key", clusterID) - } - if platform.PVSNetworkID != "" { - mpool.NetworkIDs = append([]string{platform.PVSNetworkID}) - } if platform.ClusterOSImage != "" { mpool.ImageID = platform.ClusterOSImage } - if mpool.ImageID == "" { - mpool.ImageID = fmt.Sprintf("rhcos-%s", clusterID) + if platform.PVSNetworkName != "" { + network = platform.PVSNetworkName + } else { + network = fmt.Sprintf("pvs-net-%s", clusterID) } total := int32(0) @@ -46,7 +44,7 @@ func MachineSets(clusterID string, config *types.InstallConfig, pool *types.Mach total = int32(*pool.Replicas) } var machinesets []*machineapi.MachineSet - provider, err := provider(clusterID, platform, mpool, userDataSecret, userTags) + provider, err := provider(clusterID, platform, mpool, userDataSecret, image, network) if err != nil { return nil, errors.Wrap(err, "failed to create provider") } diff --git a/pkg/asset/machines/worker.go b/pkg/asset/machines/worker.go index ce6f914199f..182b8113818 100644 --- a/pkg/asset/machines/worker.go +++ b/pkg/asset/machines/worker.go @@ -480,7 +480,7 @@ func (w *Worker) Generate(dependencies asset.Parents) error { mpool.Set(ic.Platform.PowerVS.DefaultMachinePlatform) mpool.Set(pool.Platform.PowerVS) pool.Platform.PowerVS = &mpool - sets, err := powervs.MachineSets(clusterID.InfraID, ic, &pool, "worker", "worker-user-data", installConfig.Config.Platform.PowerVS.UserTags) + sets, err := powervs.MachineSets(clusterID.InfraID, ic, &pool, "worker", "worker-user-data") if err != nil { return errors.Wrap(err, "failed to create worker machine objects for powervs provider") } From afe67d0bf90f1925596fb9441270714e366c73c7 Mon Sep 17 00:00:00 2001 From: Christy Norman Date: Tue, 9 Nov 2021 15:46:08 -0600 Subject: [PATCH 5/5] go.sum in lieu of complete vendoring Signed-off-by: Christy Norman --- go.sum | 47 ++++++---------------------------------------- vendor/modules.txt | 12 ++++++++++-- 2 files changed, 16 insertions(+), 43 deletions(-) diff --git a/go.sum b/go.sum index 35d8fd6e972..10c1b9d43d9 100644 --- a/go.sum +++ b/go.sum @@ -122,8 +122,8 @@ github.com/IBM-Cloud/bluemix-go v0.0.0-20210611051827-cdc80c935c05 h1:b/epmuvf99 github.com/IBM-Cloud/bluemix-go v0.0.0-20210611051827-cdc80c935c05/go.mod h1:kqTYO0mts71aa8PVwviaKlCKYud/NbEkFIqU8aHH3/g= github.com/IBM-Cloud/ibm-cloud-cli-sdk v0.5.3/go.mod h1:RiUvKuHKTBmBApDMUQzBL14pQUGKcx/IioKQPIcRQjs= github.com/IBM-Cloud/power-go-client v1.0.55/go.mod h1:I4r5tCrA8mV5GFqGAJG4/Tn+/JpR+XLnDCLLNVKJxuI= -github.com/IBM-Cloud/power-go-client v1.0.56 h1:zm1fjEbwc3JSnaCQIWmCMjFWrHmAUht/HKGtwJIjHz0= -github.com/IBM-Cloud/power-go-client v1.0.56/go.mod h1:I4r5tCrA8mV5GFqGAJG4/Tn+/JpR+XLnDCLLNVKJxuI= +github.com/IBM-Cloud/power-go-client v1.0.72 h1:5qoU8JPnFL5dRVR6oimGtAlcnSSDrD9KWs8Co9hAdMs= +github.com/IBM-Cloud/power-go-client v1.0.72/go.mod h1:I4r5tCrA8mV5GFqGAJG4/Tn+/JpR+XLnDCLLNVKJxuI= github.com/IBM/apigateway-go-sdk v0.0.0-20210714141226-a5d5d49caaca h1:crniVcf+YcmgF03NmmfonXwSQ73oJF+IohFYBwknMxs= github.com/IBM/apigateway-go-sdk v0.0.0-20210714141226-a5d5d49caaca/go.mod h1:IjXrnOcTe92Q4pEBHmui3H/GM1hw5Pd0zXA5cw5/iZU= github.com/IBM/appconfiguration-go-admin-sdk v0.1.0 h1:9rdOk32VQFnMqsBB7cTpkZbD7/b0EnwrU3VNN8vuUYc= @@ -435,12 +435,10 @@ github.com/containers/libtrust v0.0.0-20190913040956-14b96171aa3b/go.mod h1:9rfv github.com/containers/ocicrypt v1.0.2/go.mod h1:nsOhbP19flrX6rE7ieGFvBlr7modwmNjsqWarIUce4M= github.com/containers/storage v1.20.2/go.mod h1:oOB9Ie8OVPojvoaKWEGSEtHbXUAs+tSyr7RO7ZGteMc= github.com/coreos/bbolt v1.3.0/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/container-linux-config-transpiler v0.9.0/go.mod h1:SlcxXZQ2c42knj8pezMiQsM1f+ADxFMjGetuMKR/YSQ= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.15+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/fcct v0.5.0/go.mod h1:cbE+j77YSQwFB2fozWVB3qsI2Pi3YiVEbDz/b6Yywdo= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-json v0.0.0-20170920214419-6a2fe990e083/go.mod h1:FmxyHfvrCFfCsXRylD4QQRlQmvzl+DG6iTHyEEykPfU= @@ -1196,7 +1194,6 @@ github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -1498,14 +1495,14 @@ github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.m github.com/opencontainers/selinux v1.5.2/go.mod h1:yTcKuYAh6R95iDpefGLQaPaRwJFwyzAJufJyiTt7s0g= github.com/openshift-metal3/terraform-provider-ironic v0.2.6 h1:R48DOxq2z6NpFkRs/OHzbkWA8aLZMIXljMK2aq1VvbM= github.com/openshift-metal3/terraform-provider-ironic v0.2.6/go.mod h1:ux2W6gsCIYsY/fX5N0V0ZgwFEBNN7P8g6RlH6ACi97k= +github.com/openshift-powervs/machine-api-operator v0.2.1-0.20210809115935-a9fd8f5d2767 h1:HjHocKp0/sxuNiNHbTkGzbp30YEsTovjEu7x5YFK1lk= +github.com/openshift-powervs/machine-api-operator v0.2.1-0.20210809115935-a9fd8f5d2767/go.mod h1:+b/AyRJ/X/1Hceap+ybH/L/wq558FCYm3JPEbh5xALs= github.com/openshift/api v0.0.0-20200326160804-ecb9283fe820/go.mod h1:RKMJ5CBnljLfnej+BJ/xnOWc3kZDvJUaIAEq2oKSPtE= -github.com/openshift/api v0.0.0-20200424083944-0422dc17083e/go.mod h1:VnbEzX8SAaRj7Yfl836NykdQIlbEjfL6/CD+AaJQg5Q= github.com/openshift/api v0.0.0-20200827090112-c05698d102cf/go.mod h1:M3xexPhgM8DISzzRpuFUy+jfPjQPIcs9yqEYj17mXV8= github.com/openshift/api v0.0.0-20200829102639-8a3a835f1acf/go.mod h1:M3xexPhgM8DISzzRpuFUy+jfPjQPIcs9yqEYj17mXV8= github.com/openshift/api v0.0.0-20200901182017-7ac89ba6b971/go.mod h1:M3xexPhgM8DISzzRpuFUy+jfPjQPIcs9yqEYj17mXV8= github.com/openshift/api v0.0.0-20200929171550-c99a4deebbe5/go.mod h1:Si/I9UGeRR3qzg01YWPmtlr0GeGk2fnuggXJRmjAZ6U= github.com/openshift/api v0.0.0-20201019163320-c6a5ec25f267/go.mod h1:RDvBcRQMGLa3aNuDuejVBbTEQj/2i14NXdpOLqbNBvM= -github.com/openshift/api v0.0.0-20201214114959-164a2fb63b5f/go.mod h1:aqU5Cq+kqKKPbDMqxo9FojgDeSpNJI7iuskjXjtojDg= github.com/openshift/api v0.0.0-20201216151826-78a19e96f9eb/go.mod h1:aqU5Cq+kqKKPbDMqxo9FojgDeSpNJI7iuskjXjtojDg= github.com/openshift/api v0.0.0-20210331193751-3acddb19d360/go.mod h1:dZ4kytOo3svxJHNYd0J55hwe/6IQG5gAUHUE0F3Jkio= github.com/openshift/api v0.0.0-20210412212256-79bd8cfbbd59/go.mod h1:dZ4kytOo3svxJHNYd0J55hwe/6IQG5gAUHUE0F3Jkio= @@ -1518,7 +1515,6 @@ github.com/openshift/baremetal-operator v0.0.0-20210706141527-5240e42f012a/go.mo github.com/openshift/baremetal-operator/apis v0.0.0-20210706141527-5240e42f012a h1:oXPw/sck0Lr0yAarZZCOCFE/3+9+UziPIIhREzhE2SU= github.com/openshift/baremetal-operator/apis v0.0.0-20210706141527-5240e42f012a/go.mod h1:b2uTLrpVxUWaXRhQeaONl8jOjPxSjtdmjCNKlgsoGI0= github.com/openshift/build-machinery-go v0.0.0-20200211121458-5e3d6e570160/go.mod h1:1CkcsT3aVebzRBzVTSbiKSkJMsC/CASqxesfqEMfJEc= -github.com/openshift/build-machinery-go v0.0.0-20200424080330-082bf86082cc/go.mod h1:1CkcsT3aVebzRBzVTSbiKSkJMsC/CASqxesfqEMfJEc= github.com/openshift/build-machinery-go v0.0.0-20200819073603-48aa266c95f7/go.mod h1:b1BuldmJlbA/xYtdZvKi+7j5YGB44qJUJDZ9zwiNCfE= github.com/openshift/build-machinery-go v0.0.0-20200917070002-f171684f77ab/go.mod h1:b1BuldmJlbA/xYtdZvKi+7j5YGB44qJUJDZ9zwiNCfE= github.com/openshift/build-machinery-go v0.0.0-20210209125900-0da259a2c359/go.mod h1:b1BuldmJlbA/xYtdZvKi+7j5YGB44qJUJDZ9zwiNCfE= @@ -1536,10 +1532,6 @@ github.com/openshift/cluster-api-provider-azure v0.1.0-alpha.3.0.20210626224711- github.com/openshift/cluster-api-provider-azure v0.1.0-alpha.3.0.20210626224711-5d94c794092f/go.mod h1:GR+ocB8I+Z7JTSBdO+DMu/diBfH66lRlRpnc1KWysUM= github.com/openshift/cluster-api-provider-baremetal v0.0.0-20190821174549-a2a477909c1d h1:6+XwaVvSMPHm3nFdZW3g+iXiOHpf0Y2ajY5/Zr66Dt0= github.com/openshift/cluster-api-provider-baremetal v0.0.0-20190821174549-a2a477909c1d/go.mod h1:S+wtA0Rm2FZ5ccC9zNQXUWUDesR6Jsdn5eb6HjAR+Gs= -github.com/openshift/cluster-api-provider-gcp v0.0.1-0.20200701112720-3a7d727c9a10/go.mod h1:wgkZrOlcIMWTzo8khB4Js2PoDJDlIUUdzCBm7BuDdqw= -github.com/openshift/cluster-api-provider-gcp v0.0.1-0.20200713133651-5c8a640669ac/go.mod h1:XVYX9JE339nKbDDa/W481XD+1GTeqeaBm8bDPr7WE7I= -github.com/openshift/cluster-api-provider-gcp v0.0.1-0.20200901173901-9056dbc8c9b9/go.mod h1:rcwAydGZX+z4l91wtOdbq+fqDwuo6iu0YuFik3UUc+8= -github.com/openshift/cluster-api-provider-gcp v0.0.1-0.20201002065957-9854f7420570/go.mod h1:7NRECVE26rvP1/fs1CbhfY5gsgnnFQNhb9txTFzWmUw= github.com/openshift/cluster-api-provider-gcp v0.0.1-0.20201201000827-1117a4fc438c/go.mod h1:21N0wWjiTQypZ7WosEYhcGJHr9JoDR1RBFztE0NvdYM= github.com/openshift/cluster-api-provider-gcp v0.0.1-0.20201203141909-4dc702fd57a5 h1:75U75i/GfStAartlsP/F9v3Gv3MwzuLwqdLTjP1vPeE= github.com/openshift/cluster-api-provider-gcp v0.0.1-0.20201203141909-4dc702fd57a5/go.mod h1:/XjFaKnqBc8K/jcRXHO7tau39CmzNinqmpxYaQGRvnE= @@ -1551,30 +1543,15 @@ github.com/openshift/cluster-api-provider-openstack v0.0.0-20210302164104-849824 github.com/openshift/cluster-api-provider-openstack v0.0.0-20210302164104-8498241fa4bd/go.mod h1:ONl4R7ziQtgnsBjR59fcZbOLjBEPVeZ69C1TPKevynw= github.com/openshift/cluster-api-provider-ovirt v0.1.1-0.20210817084941-2262c7c6cece h1:w32C7hy52lkIpDvJqz/tRyYCIZmhE/8bSIVt+L0c9Mg= github.com/openshift/cluster-api-provider-ovirt v0.1.1-0.20210817084941-2262c7c6cece/go.mod h1:lrKTKMpd3OERMlQgVJi6VKcE57EvtUORGSFIoE7BEAs= -github.com/openshift/cluster-api-provider-powervs v0.0.2-0.20210621075832-a5ccc9c865e7 h1:xSb1HWSXjLfZT9CR7nkaxiHL4EXFWQ7bqH+qcJhti94= -github.com/openshift/cluster-api-provider-powervs v0.0.2-0.20210621075832-a5ccc9c865e7/go.mod h1:uVmfaEVW8m3dkvNqZY/Z071Ea8H++HpuZIO8kvYBKAg= +github.com/openshift/cluster-api-provider-powervs v0.0.2-0.20210928133618-8eb5ebcb07a1 h1:fFRg32p+RR2Li1ynhl74RtSvEFstYEQ+QQufdE6plx8= +github.com/openshift/cluster-api-provider-powervs v0.0.2-0.20210928133618-8eb5ebcb07a1/go.mod h1:J5ynCgpZbdXNBPF9ukQXWeEt5ruMn8BEPSq/h55NfLo= github.com/openshift/cluster-autoscaler-operator v0.0.0-20190521201101-62768a6ba480/go.mod h1:/XmV44Fh28Vo3Ye93qFrxAbcFJ/Uy+7LPD+jGjmfJYc= github.com/openshift/hashicorp-terraform-plugin-sdk v1.14.0-openshift h1:CuH9qNELLH3y0QoSaLchdG+7We75AO4kNBy6P3+oLug= github.com/openshift/hashicorp-terraform-plugin-sdk v1.14.0-openshift/go.mod h1:t62Xy+m7Zjq5tA2vrs8Wuo/TQ0sc9Mx9MjXL3+7MHBQ= github.com/openshift/library-go v0.0.0-20191003152030-97c62d8a2901/go.mod h1:NBttNjZpWwup/nthuLbPAPSYC8Qyo+BBK5bCtFoyYjo= -github.com/openshift/library-go v0.0.0-20200512120242-21a1ff978534/go.mod h1:2kWwXTkpoQJUN3jZ3QW88EIY1hdRMqxgRs2hheEW/pg= github.com/openshift/library-go v0.0.0-20200831114015-2ab0c61c15de/go.mod h1:6vwp+YhYOIlj8MpkQKkebTTSn2TuYyvgiAFQ206jIEQ= -github.com/openshift/library-go v0.0.0-20200909173121-1d055d971916/go.mod h1:6vwp+YhYOIlj8MpkQKkebTTSn2TuYyvgiAFQ206jIEQ= -github.com/openshift/library-go v0.0.0-20201109112824-093ad3cf6600/go.mod h1:1xYaYQcQsn+AyCRsvOU+Qn5z6GGiCmcblXkT/RZLVfo= -github.com/openshift/library-go v0.0.0-20201215165635-4ee79b1caed5/go.mod h1:udseDnqxn5ON8i+NBjDp00fBTK0JRu1/6Y6tf6EivDE= github.com/openshift/library-go v0.0.0-20210408164723-7a65fdb398e2 h1:eYdrmOSwRqHhfuPK8bhCSkBRUmCNYkgkOLgnImnz3Rs= github.com/openshift/library-go v0.0.0-20210408164723-7a65fdb398e2/go.mod h1:pnz961veImKsbn7pQcuFbcVpCQosYiC1fUOjzEDeOLU= -github.com/openshift/machine-api-operator v0.0.0-20190312153711-9650e16c9880/go.mod h1:7HeAh0v04zQn1L+4ItUjvpBQYsm2Nf81WaZLiXTcnkc= -github.com/openshift/machine-api-operator v0.2.1-0.20200611014855-9a69f85c32dd/go.mod h1:6vMi+R3xqznBdq5rgeal9N3ak3sOpy50t0fdRCcQXjE= -github.com/openshift/machine-api-operator v0.2.1-0.20200701225707-950912b03628/go.mod h1:cxjy/RUzv5C2T5FNl1KKXUgtakWsezWQ642B/CD9VQA= -github.com/openshift/machine-api-operator v0.2.1-0.20200722104429-f4f9b84df9b7/go.mod h1:XDsNRAVEJtkI00e51SAZ/PnqNJl1zv0rHXSdl9L1oOY= -github.com/openshift/machine-api-operator v0.2.1-0.20200926044412-b7d860f8074c/go.mod h1:cp/wPVzxHZeLUjOLkNPNqrk4wyyW6HuHd3Kz9+hl5xw= -github.com/openshift/machine-api-operator v0.2.1-0.20201002104344-6abfb5440597/go.mod h1:+oAfoCl+TUd2TM79/6NdqLpFUHIJpmqkKdmiHe2O7mw= -github.com/openshift/machine-api-operator v0.2.1-0.20201203125141-79567cb3368e/go.mod h1:Vxdx8K+8sbdcGozW86hSvcVl5JgJOqNFYhLRRhEM9HY= -github.com/openshift/machine-api-operator v0.2.1-0.20210104142355-8e6ae0acdfcf/go.mod h1:U5eAHChde1XvtQy3s1Zcr7ll4X7heb0SzYpaiAwxmQc= -github.com/openshift/machine-api-operator v0.2.1-0.20210504014029-a132ec00f7dd/go.mod h1:DFZBMPtC2TYZH5NE9+2JQIpbZAnruqc9F26QmbOm9pw= -github.com/openshift/machine-api-operator v0.2.1-0.20210505133115-b7ef098180db h1:uxSkm3BCC6jkrygfCxjm0iEJqJvNL8zDTXWQv2gmyZI= -github.com/openshift/machine-api-operator v0.2.1-0.20210505133115-b7ef098180db/go.mod h1:DFZBMPtC2TYZH5NE9+2JQIpbZAnruqc9F26QmbOm9pw= github.com/openshift/machine-config-operator v0.0.1-0.20201009041932-4fe8559913b8 h1:C4gCipkWTDp0B9jb0wZdLgB+HWC7EzVVwQOeNaKnTRA= github.com/openshift/machine-config-operator v0.0.1-0.20201009041932-4fe8559913b8/go.mod h1:fjKreLaKEeUKsyIkT4wlzIQwUVJ2ZKDUh3CI73ckYIY= github.com/openshift/runtime-utils v0.0.0-20200415173359-c45d4ff3f912/go.mod h1:0OXNy7VoqFexkxKqyQbHJLPwn1MFp1/CxRJAgKHM+/o= @@ -2145,7 +2122,6 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= @@ -2557,8 +2533,6 @@ k8s.io/api v0.22.2/go.mod h1:y3ydYpLJAaDI+BbSe2xmGcqxiWHmWjkEeIbiwHvnPR8= k8s.io/apiextensions-apiserver v0.18.0-beta.2/go.mod h1:Hnrg5jx8/PbxRbUoqDGxtQkULjwx8FDW4WYJaKNK+fk= k8s.io/apiextensions-apiserver v0.18.2/go.mod h1:q3faSnRGmYimiocj6cHQ1I3WpLqmDgJFlKL37fC4ZvY= k8s.io/apiextensions-apiserver v0.19.0/go.mod h1:znfQxNpjqz/ZehvbfMg5N6fvBJW5Lqu5HVLTJQdP4Fs= -k8s.io/apiextensions-apiserver v0.19.2/go.mod h1:EYNjpqIAvNZe+svXVx9j4uBaVhTB4C94HkY3w058qcg= -k8s.io/apiextensions-apiserver v0.20.0/go.mod h1:ZH+C33L2Bh1LY1+HphoRmN1IQVLTShVcTojivK3N9xg= k8s.io/apiextensions-apiserver v0.21.0-beta.1/go.mod h1:vluMqsJ5+hPgM9UtBhkFSGrfD86KUac9yeKVqpGBZz0= k8s.io/apiextensions-apiserver v0.21.0-rc.0 h1:gxeak4PvTBhuiZagZRFv9WyNnAdG39/VCmI9XTwVCRk= k8s.io/apiextensions-apiserver v0.21.0-rc.0/go.mod h1:ItIoMBJU1gy93Qwr/B2699r4b0VmZqAOU+15BvozxMY= @@ -2586,8 +2560,6 @@ k8s.io/apiserver v0.18.0-beta.2/go.mod h1:bnblMkMoCFnIfVnVftd0SXJPzyvrk3RtaqSbbl k8s.io/apiserver v0.18.2/go.mod h1:Xbh066NqrZO8cbsoenCwyDJ1OSi8Ag8I2lezeHxzwzw= k8s.io/apiserver v0.19.0/go.mod h1:XvzqavYj73931x7FLtyagh8WibHpePJ1QwWrSJs2CLk= k8s.io/apiserver v0.19.1/go.mod h1:iRxYIjA0X2XEyoW8KslN4gDhasfH4bWcjj6ckVeZX28= -k8s.io/apiserver v0.19.2/go.mod h1:FreAq0bJ2vtZFj9Ago/X0oNGC51GfubKK/ViOKfVAOA= -k8s.io/apiserver v0.20.0/go.mod h1:6gRIWiOkvGvQt12WTYmsiYoUyYW0FXSiMdNl4m+sxY8= k8s.io/apiserver v0.21.0-beta.1/go.mod h1:nl/H4DPS1abtRhCj8bhosbyU9XOgnMt0QFK3fAFEhSE= k8s.io/apiserver v0.21.0-rc.0/go.mod h1:QlW7+1CZTZtAcKvJ34/n4DIb8sC93FeQpkd1KSU+Sok= k8s.io/apiserver v0.21.0/go.mod h1:w2YSn4/WIwYuxG5zJmcqtRdtqgW/J2JRgFAqps3bBpg= @@ -2612,8 +2584,6 @@ k8s.io/component-base v0.18.0-beta.2/go.mod h1:HVk5FpRnyzQ/MjBr9//e/yEBjTVa2qjGX k8s.io/component-base v0.18.2/go.mod h1:kqLlMuhJNHQ9lz8Z7V5bxUUtjFZnrypArGl58gmDfUM= k8s.io/component-base v0.19.0/go.mod h1:dKsY8BxkA+9dZIAh2aWJLL/UdASFDNtGYTCItL4LM7Y= k8s.io/component-base v0.19.1/go.mod h1:b0vDKYa8EdJJ8dHUA6fGPj4z8taqGks5mfZvp3p/jVo= -k8s.io/component-base v0.19.2/go.mod h1:g5LrsiTiabMLZ40AR6Hl45f088DevyGY+cCE2agEIVo= -k8s.io/component-base v0.20.0/go.mod h1:wKPj+RHnAr8LW2EIBIK7AxOHPde4gme2lzXwVSoRXeA= k8s.io/component-base v0.21.0-beta.1/go.mod h1:WPMZyV0sNk3ruzA8cWt1EO2KWAnLDK2docEC14JWbTM= k8s.io/component-base v0.21.0-rc.0/go.mod h1:XlP0bM7QJFWRGZYPc5NmphkvsYQ+o7804HWH3GTGjDY= k8s.io/component-base v0.21.0 h1:tLLGp4BBjQaCpS/KiuWh7m2xqvAdsxLm4ATxHSe5Zpg= @@ -2641,11 +2611,8 @@ k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.9.0 h1:D7HV+n1V57XeZ0m6tdRkfknthUaM06VFbWldOFh8kzM= k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/kube-aggregator v0.18.0-beta.2/go.mod h1:O3Td9mheraINbLHH4pzoFP2gRzG0Wk1COqzdSL4rBPk= -k8s.io/kube-aggregator v0.18.2/go.mod h1:ijq6FnNUoKinA6kKbkN6svdTacSoQVNtKqmQ1+XJEYQ= k8s.io/kube-aggregator v0.19.0/go.mod h1:1Ln45PQggFAG8xOqWPIYMxUq8WNtpPnYsbUJ39DpF/A= k8s.io/kube-aggregator v0.19.1/go.mod h1:oAj1kWeSDCh7sdzUOs6XXPn/jbzJY+yGGxDd0QyLJC8= -k8s.io/kube-aggregator v0.19.2/go.mod h1:wVsjy6OTeUrWkgG9WVsGftnjpm8JIY0vJV7LH2j4nhM= -k8s.io/kube-aggregator v0.20.0/go.mod h1:3Is/gzzWmhhG/rA3CpA1+eVye87lreBQDFGcAGT7gzo= k8s.io/kube-aggregator v0.21.0-rc.0 h1:PxnBqTgEQHCOhWl3J6EX2OKbfx0epwgKF4phlhgNyFA= k8s.io/kube-aggregator v0.21.0-rc.0/go.mod h1:M+whOmsAeQf8ObJ0/eO9Af1Dz2UQEB9OW9BWmt9b2sU= k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= @@ -2665,7 +2632,6 @@ k8s.io/metrics v0.21.0-rc.0/go.mod h1:iCF67TNbrhChr/eb99uHt0H1hE7Rd1EC2Ic/yknzIE k8s.io/utils v0.0.0-20190529001817-6999998975a7/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200229041039-0a110f9eb7ab/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200327001022-6496210b90e8/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20200821003339-5e75c0163111/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= @@ -2691,7 +2657,6 @@ rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/controller-runtime v0.9.0-alpha.1 h1:yIYTxDHQfcrYWO1hjZvHhjkGY1fYFo1k07FzlTono4E= sigs.k8s.io/controller-runtime v0.9.0-alpha.1/go.mod h1:BARxVvgj+8Ihw9modUvYh7/OJmjxuBtLK8P36jdf7rY= diff --git a/vendor/modules.txt b/vendor/modules.txt index c3e192a1b67..fcd30b89842 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -240,8 +240,10 @@ github.com/IBM-Cloud/bluemix-go/rest github.com/IBM-Cloud/bluemix-go/session github.com/IBM-Cloud/bluemix-go/trace github.com/IBM-Cloud/bluemix-go/utils -# github.com/IBM-Cloud/power-go-client v1.0.55 +# github.com/IBM-Cloud/power-go-client v1.0.72 +## explicit github.com/IBM-Cloud/power-go-client/clients/instance +github.com/IBM-Cloud/power-go-client/errors github.com/IBM-Cloud/power-go-client/helpers github.com/IBM-Cloud/power-go-client/ibmpisession github.com/IBM-Cloud/power-go-client/power/client @@ -257,6 +259,7 @@ github.com/IBM-Cloud/power-go-client/power/client/p_cloud_images github.com/IBM-Cloud/power-go-client/power/client/p_cloud_instances github.com/IBM-Cloud/power-go-client/power/client/p_cloud_networks github.com/IBM-Cloud/power-go-client/power/client/p_cloud_p_vm_instances +github.com/IBM-Cloud/power-go-client/power/client/p_cloud_placement_groups github.com/IBM-Cloud/power-go-client/power/client/p_cloud_s_a_p github.com/IBM-Cloud/power-go-client/power/client/p_cloud_snapshots github.com/IBM-Cloud/power-go-client/power/client/p_cloud_storage_capacity @@ -1552,11 +1555,15 @@ github.com/openshift/cluster-api-provider-libvirt/pkg/apis/libvirtproviderconfig ## explicit github.com/openshift/cluster-api-provider-ovirt/pkg/apis github.com/openshift/cluster-api-provider-ovirt/pkg/apis/ovirtprovider/v1beta1 +# github.com/openshift/cluster-api-provider-powervs v0.0.2-0.20210928133618-8eb5ebcb07a1 +## explicit +github.com/openshift/cluster-api-provider-powervs/pkg/apis +github.com/openshift/cluster-api-provider-powervs/pkg/apis/powervsprovider/v1alpha1 # github.com/openshift/library-go v0.0.0-20210408164723-7a65fdb398e2 ## explicit github.com/openshift/library-go/pkg/config/clusteroperator/v1helpers github.com/openshift/library-go/pkg/route/routeapihelpers -# github.com/openshift/machine-api-operator v0.2.1-0.20210505133115-b7ef098180db +# github.com/openshift/machine-api-operator v0.2.1-0.20210505133115-b7ef098180db => github.com/openshift-powervs/machine-api-operator v0.2.1-0.20210809115935-a9fd8f5d2767 ## explicit github.com/openshift/machine-api-operator/pkg/apis/machine github.com/openshift/machine-api-operator/pkg/apis/machine/v1beta1 @@ -3086,3 +3093,4 @@ sigs.k8s.io/yaml # google.golang.org/api => google.golang.org/api v0.25.0 # google.golang.org/genproto => google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 # google.golang.org/grpc => google.golang.org/grpc v1.29.1 +# github.com/openshift/machine-api-operator => github.com/openshift-powervs/machine-api-operator v0.2.1-0.20210809115935-a9fd8f5d2767