Update the schema of CredentialIssuerConfig

- Move the current info from spec to status
- Add schema for new stuff that we will use in a future commit to status
- Regenerate the generated code
This commit is contained in:
Ryan Richard
2020-08-21 17:00:42 -07:00
parent ace01c86de
commit 6d43d7ba19
11 changed files with 333 additions and 124 deletions
+19 -16
View File
@@ -115,9 +115,12 @@ func (c *publisherController) Sync(ctx controller.Context) error {
Name: configName,
Namespace: c.namespace,
},
Spec: crdpinnipedv1alpha1.CredentialIssuerConfigSpec{
Server: server,
CertificateAuthorityData: certificateAuthorityData,
Status: crdpinnipedv1alpha1.CredentialIssuerConfigStatus{
Strategies: []crdpinnipedv1alpha1.CredentialIssuerConfigStrategy{},
KubeConfigInfo: &crdpinnipedv1alpha1.CredentialIssuerConfigKubeConfigInfo{
Server: server,
CertificateAuthorityData: certificateAuthorityData,
},
},
}
if err := c.createOrUpdateCredentialIssuerConfig(ctx.Context, &credentialIssuerConfig); err != nil {
@@ -129,34 +132,34 @@ func (c *publisherController) Sync(ctx controller.Context) error {
func (c *publisherController) createOrUpdateCredentialIssuerConfig(
ctx context.Context,
credentialIssuerConfig *crdpinnipedv1alpha1.CredentialIssuerConfig,
newCredentialIssuerConfig *crdpinnipedv1alpha1.CredentialIssuerConfig,
) error {
existingCredentialIssuerConfig, err := c.credentialIssuerConfigInformer.
Lister().
CredentialIssuerConfigs(c.namespace).
Get(credentialIssuerConfig.Name)
Get(newCredentialIssuerConfig.Name)
notFound := k8serrors.IsNotFound(err)
if err != nil && !notFound {
return fmt.Errorf("could not get credentialissuerconfig: %w", err)
}
credentialIssuerConfigs := c.pinnipedClient.
CrdV1alpha1().
CredentialIssuerConfigs(c.namespace)
credentialIssuerConfigsClient := c.pinnipedClient.CrdV1alpha1().CredentialIssuerConfigs(c.namespace)
if notFound {
if _, err := credentialIssuerConfigs.Create(
if _, err := credentialIssuerConfigsClient.Create(
ctx,
credentialIssuerConfig,
newCredentialIssuerConfig,
metav1.CreateOptions{},
); err != nil {
return fmt.Errorf("could not create credentialissuerconfig: %w", err)
}
} else if !equal(existingCredentialIssuerConfig, credentialIssuerConfig) {
} else if !equal(existingCredentialIssuerConfig, newCredentialIssuerConfig) {
// Update just the fields we care about.
existingCredentialIssuerConfig.Spec.Server = credentialIssuerConfig.Spec.Server
existingCredentialIssuerConfig.Spec.CertificateAuthorityData = credentialIssuerConfig.Spec.CertificateAuthorityData
newServer := newCredentialIssuerConfig.Status.KubeConfigInfo.Server
newCA := newCredentialIssuerConfig.Status.KubeConfigInfo.CertificateAuthorityData
existingCredentialIssuerConfig.Status.KubeConfigInfo.Server = newServer
existingCredentialIssuerConfig.Status.KubeConfigInfo.CertificateAuthorityData = newCA
if _, err := credentialIssuerConfigs.Update(
if _, err := credentialIssuerConfigsClient.Update(
ctx,
existingCredentialIssuerConfig,
metav1.UpdateOptions{},
@@ -169,6 +172,6 @@ func (c *publisherController) createOrUpdateCredentialIssuerConfig(
}
func equal(a, b *crdpinnipedv1alpha1.CredentialIssuerConfig) bool {
return a.Spec.Server == b.Spec.Server &&
a.Spec.CertificateAuthorityData == b.Spec.CertificateAuthorityData
return a.Status.KubeConfigInfo.Server == b.Status.KubeConfigInfo.Server &&
a.Status.KubeConfigInfo.CertificateAuthorityData == b.Status.KubeConfigInfo.CertificateAuthorityData
}
@@ -190,9 +190,12 @@ func TestSync(t *testing.T) {
Name: "pinniped-config",
Namespace: expectedNamespace,
},
Spec: crdpinnipedv1alpha1.CredentialIssuerConfigSpec{
Server: expectedServerURL,
CertificateAuthorityData: expectedCAData,
Status: crdpinnipedv1alpha1.CredentialIssuerConfigStatus{
Strategies: []crdpinnipedv1alpha1.CredentialIssuerConfigStrategy{},
KubeConfigInfo: &crdpinnipedv1alpha1.CredentialIssuerConfigKubeConfigInfo{
Server: expectedServerURL,
CertificateAuthorityData: expectedCAData,
},
},
}
return expectedCredentialIssuerConfigGVR, expectedCredentialIssuerConfig
@@ -324,7 +327,7 @@ func TestSync(t *testing.T) {
kubeServerURL,
caData,
)
expectedCredentialIssuerConfig.Spec.Server = "https://some-server-override"
expectedCredentialIssuerConfig.Status.KubeConfigInfo.Server = "https://some-server-override"
r.Equal(
[]coretesting.Action{
@@ -368,7 +371,7 @@ func TestSync(t *testing.T) {
kubeServerURL,
caData,
)
expectedCredentialIssuerConfig.Spec.Server = "https://some-other-server"
expectedCredentialIssuerConfig.Status.KubeConfigInfo.Server = "https://some-other-server"
r.NoError(pinnipedInformerClient.Tracker().Add(expectedCredentialIssuerConfig))
r.NoError(pinnipedAPIClient.Tracker().Add(expectedCredentialIssuerConfig))
})