New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IBM Cloud Provider Scaffolding #4923
IBM Cloud Provider Scaffolding #4923
Conversation
Hi @BobbyRadford. Thanks for your PR. I'm waiting for a openshift member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
/assign @staebler |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This look generally good. Most of the comments are minor. By biggest concern is with how we are dealing with the OS image.
I'm going to slide in a commit to use some newer IBM Go SDKs. It will affect some things in the ibmcloud client. I think it's important to get these in the initial PR rather than later. From there, I will work through all of the review comments. Thanks @staebler |
217833e
to
804ffe8
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@BobbyRadford: 2 invalid OWNERS files
In response to this:
Initial scaffolding for the IBM Cloud provider
With this PR, a user should be able to:
openshift-install create install-config
and follow CLI prompts to generate a bare bones install-config.yamlopenshift-install create install-config --dir=./existing-config
where./existing-config
has a customized install-config.yaml with IBM Cloud platform and machine pool customizations.This connects with the following enhancement doc PR: openshift/enhancements#773 Details about the supported install config customizations can be found there.
CI has not yet been implemented for the IBM Cloud platform, so this PR should not be merged until that is complete. The scaffolding code proposed here is fairly comprehensive, already containing a suite of unit tests. However, it is not fully done. Some validation on customizations is not yet implemented, specifically around byo VPC and subnets. This byo VPC and subnets may not end up in an MVP for the IBM Cloud platform anyway.
With this PR, I hope that we can get some clarity on direction and verification that we are doing this the "right way." Hopefully that can happen prior to CI being fully implemented.
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@BobbyRadford: 2 invalid OWNERS files
In response to this:
Initial scaffolding for the IBM Cloud provider
With this PR, a user should be able to:
openshift-install create install-config
and follow CLI prompts to generate a bare bones install-config.yamlopenshift-install create install-config --dir=./existing-config
where./existing-config
has a customized install-config.yaml with IBM Cloud platform and machine pool customizations.This connects with the following enhancement doc PR: openshift/enhancements#773 Details about the supported install config customizations can be found there.
CI has not yet been implemented for the IBM Cloud platform, so this PR should not be merged until that is complete. The scaffolding code proposed here is fairly comprehensive, already containing a suite of unit tests. However, it is not fully done. Some validation on customizations is not yet implemented, specifically around byo VPC and subnets. This byo VPC and subnets may not end up in an MVP for the IBM Cloud platform anyway.
With this PR, I hope that we can get some clarity on direction and verification that we are doing this the "right way." Hopefully that can happen prior to CI being fully implemented.
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
I am going to drop in another commit here with some refactoring around resource groups. I don't want to just keep putting more and more into this PR, but I think this aligns with the mission of scaffolding. In the commit...
|
@staebler We were able to implement an automated way to upload and create an RHCOS image. Due to it depending on Terraform, which will come in a subsequent PR, is it OK for that automation piece to come later as well? |
My last commit adds a build tag to conditionally show |
/retest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good. My comments are almost all nits, except for the question about whether the CISInstanceCRN
field should be optional.
Please squash down the commits into one or a few commits.
/test e2e-aws-fips |
|
ibmcloud: add ibm cloud types support the new ibm cloud platform by adding required types ibmcloud: add initial assets Add ibmcloud assets to support the new ibmcloud platform. These changes are functional, but additional functionality will be built out over time ibmcloud: resolve linting issues ibmcloud: obtain the cisInstanceCRN for install-config The cisInstanceCRN field is derived from the user-provided baseDomain. It is needed for all DNS configuration. types: fix ibmcloud machinepool file name ibmcloud: rename platform ResourceGroupID field Rename the field `ResourceGroupID` in the Platform type to `ResourceGroup` ibmcloud: add initial metadata ibmcloud: add ClusterOSImage customization The ClusterOSImage field will allow the user to specify the custom RHCOS image to use for their cluster VSIs ibmcloud: add fields to Platform type Add the DefaultMachinePlatform, VPC, VPCResourceGroup, and Subnets fields to the Platform type. These are needed to fully define a cluster. ibmcloud: improve platform validation and tests Add in additional validation to the ibmcloud Platform. Also, add unit tests around that new validation. This is just a start and more validation and unit tests are required. ibmcloud: fix linting issues These issues were discovered using golangci-lint ibmcloud: use resource group name in install config Use the resource group name instead of ID in the install config. This will be more human friendly. The ID will also still be valid, but name will be preferred. ibmcloud: improve default resource group check Check for the default resource group based off of the 'default' field in the resource group struct. ibmcloud: fix typo ibmcloud: remove vpcResourceGroup and use vpc ID vpcResourceGroup is no longer needed if the vpc field holds the ID of the VPC instead of the name. ibmcloud: enforce clusterOSImage region The clusterOSImage refers to a custom image in a user's VPC. That image is regionally scoped and the region should be honored. Users should not be allowed to pick a custom image from a region that differes from the value of the region field in the install config. ibmcloud: use resourcev2 API The resourcev2 API should be used in place of v1. This is the most up-to-date and well supported version. ibmcloud: fix log message Co-Authored-By: Hidematsu Sueki <Hidematsu.Sueki@ibm.com> ibmcloud: add machinepool type and validation Add the MachinePool type for the IBM Cloud platform. Also include initial validation on the fields. ibmcloud: update survey version ibmcloud: use ibm go sdks instead of bluemix-go The ibm-go-sdk and corresponding service SDKs in the IBM GH org are more up-to-date and routinely supported. The old bluemix-go SDKs should no longer be used. update go mod update vendor fix: make validateVPCConfig a private function Co-authored-by: Matthew Staebler <staebler@redhat.com> fix: improve log message for resource group not found Co-authored-by: Matthew Staebler <staebler@redhat.com> fix: simplify subnet return statement Co-authored-by: Matthew Staebler <staebler@redhat.com> fix: improve log message for vpc not found Co-authored-by: Matthew Staebler <staebler@redhat.com> fix: images slice declaration Co-authored-by: Matthew Staebler <staebler@redhat.com> fix: improve images range loop Co-authored-by: Matthew Staebler <staebler@redhat.com> fix: typo in baseDomain help string Co-authored-by: Matthew Staebler <staebler@redhat.com> fix: clarify resource group help message fix: use platformPath as variable name Co-authored-by: Matthew Staebler <staebler@redhat.com> fix: ibmcloud platform reference Co-authored-by: Matthew Staebler <staebler@redhat.com> fix: remove unnecessary conditionals in validation fix: check encryptionKey exists before validation fix: improve zone validation message Co-authored-by: Matthew Staebler <staebler@redhat.com> fix: keep errors out of happy path fix: add index to subnets validation fix: create VPCResourceNotFoundError fix: use sets.String for contains fix: ibmcloud platform type comments fix: improve vpc config validation messages fix: add omitempty for encryptionKey Co-authored-by: Matthew Staebler <staebler@redhat.com> fix: improve BootVolume copying Co-authored-by: Matthew Staebler <staebler@redhat.com> fix: rename MachinePool.Type to InstanceType fix: remove validateRegion fix: remove unnecessary context from client fix: remove context timeout in ic Platform fix: remove superfluous edit fix: update unit tests fix: move types used by cilent to same package fix: update OWNERS and OWNERS_ALIASES fix: improve client call to load services fix: improve GetZoneIDByName range loop fix: whitepsace in OWNERS fix: populate ibmcloud OWNERS_ALIASES fix: make cisServiceID a const Co-authored-by: Matthew Staebler <staebler@redhat.com> ibmcloud: refactor resource groups Allow users to have VPC resources in a different resource group from the cluster creation. This will enable CI and E2E testing along with making it easier to destroy clusters. This commit also adds a "Name" suffix to resource groups to align with other platforms naming convention. fix: error message format fix: update unit test ibmcloud: move ibmcloud to hidden platforms The IBMCloud platform will be in a developer preview for 4.9. As a result we will move it to the list of hidden platforms. This commit does that by default, but allows for it to show up in the survey via a build flag: 'ibmcloud'. ibmcloud: remove cisInstanceCRN field The cisInstanceCRN platform field is not needed. Though it is possible to manage a single DNS zone with multiple CIS instances, only one zone can be in the "Active" state at a time. As a result, we know which CIS instance to use based off of its managed zone's state. fix: address pr comments update codegen
3a01f3e
to
49b4da9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: staebler The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/ok-to-test |
@BobbyRadford: The following tests failed, say
Full PR test history. Your PR dashboard. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
AWS is having issues with API throttling. I am overriding those tests and will use gcp success as the requirement instead. |
@staebler: Overrode contexts on behalf of staebler: ci/prow/e2e-aws, ci/prow/e2e-aws-upgrade In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
The e2e-gcp job passed. |
_, cancel := context.WithTimeout(ctx, 1*time.Minute) | ||
defer cancel() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@BobbyRadford, what's the purpose of creating a child context with a timeout and throwing that context away? I see this _, cancel
pattern repeated throughout this file, and I cannot figure out what its purpose is.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is just a remnant of early development work that I intended to come back to. The context can and should be passed on to the different API calls made through the various IBM Cloud SDKs.
Initial scaffolding for the IBM Cloud provider
With this PR, a user should be able to:
openshift-install create install-config
and follow CLI prompts to generate a bare bones install-config.yamlopenshift-install create install-config --dir=./existing-config
where./existing-config
has a customized install-config.yaml with IBM Cloud platform and machine pool customizations.This connects with the following enhancement doc PR: openshift/enhancements#773 Details about the supported install config customizations can be found there.
CI has not yet been implemented for the IBM Cloud platform, so this PR should not be merged until that is complete. The scaffolding code proposed here is fairly comprehensive, already containing a suite of unit tests. However, it is not fully done. Some validation on customizations is not yet implemented, specifically around byo VPC and subnets. This byo VPC and subnets may not end up in an MVP for the IBM Cloud platform anyway.
With this PR, I hope that we can get some clarity on direction and verification that we are doing this the "right way." Hopefully that can happen prior to CI being fully implemented.