Skip to content
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

Add missing TypeMeta in --dry-run while syncing CRDs and bugfixes #244

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions cmd/kubectl-direct_csi/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ func registerCRDs(ctx context.Context, identity string) error {
if !errors.IsNotFound(err) {
return err
}
if err := setConversionWebhook(&crdObj, identity); err != nil {
if err := setConversionWebhook(ctx, &crdObj, identity); err != nil {
return err
}
if dryRun {
Expand Down Expand Up @@ -112,11 +112,12 @@ func syncCRD(ctx context.Context, existingCRD *apiextensions.CustomResourceDefin

existingCRD.Spec.Versions = append(existingCRD.Spec.Versions, latestVersionObject)

if err := setConversionWebhook(existingCRD, identity); err != nil {
if err := setConversionWebhook(ctx, existingCRD, identity); err != nil {
return err
}

if dryRun {
existingCRD.TypeMeta = newCRD.TypeMeta
if err := utils.LogYAML(existingCRD); err != nil {
Praveenrajmani marked this conversation as resolved.
Show resolved Hide resolved
return err
}
Expand All @@ -133,7 +134,7 @@ func syncCRD(ctx context.Context, existingCRD *apiextensions.CustomResourceDefin
return nil
}

func setConversionWebhook(crdObj *apiextensions.CustomResourceDefinition, identity string) error {
func setConversionWebhook(ctx context.Context, crdObj *apiextensions.CustomResourceDefinition, identity string) error {

name := installer.SanitizeName(identity)
getServiceRef := func() *apiextensions.ServiceReference {
Expand All @@ -156,7 +157,7 @@ func setConversionWebhook(crdObj *apiextensions.CustomResourceDefinition, identi
}

getWebhookClientConfig := func() (*apiextensions.WebhookClientConfig, error) {
caBundle, err := installer.GetConversionCABundle()
caBundle, err := installer.GetConversionCABundle(ctx, identity, dryRun)
if err != nil {
return nil, err
}
Expand Down
5 changes: 5 additions & 0 deletions cmd/kubectl-direct_csi/uninstall.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,11 @@ func uninstall(ctx context.Context, args []string) error {
return err
}
}
if err := installer.DeleteConversionWebhookCertsSecret(ctx, identity); err != nil {
Praveenrajmani marked this conversation as resolved.
Show resolved Hide resolved
if !errors.IsNotFound(err) {
return err
}
}
glog.Infof("'%s' conversion deployment deleted", utils.Bold(identity))
}

Expand Down
26 changes: 21 additions & 5 deletions pkg/utils/installer/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -1036,13 +1036,13 @@ func CreateConversionDeployment(ctx context.Context, identity string, directCSIC
if certErr != nil {
return certErr
}
conversionWebhookCaBundle = caCertBytes

if err := CreateConversionSecret(ctx, identity, publicCertBytes, privateKeyBytes, dryRun); err != nil {
if !kerr.IsAlreadyExists(err) {
return err
}
}
conversionWebhookCaBundle = caCertBytes

if err := CreateConversionCASecret(ctx, identity, caCertBytes, dryRun); err != nil {
if !kerr.IsAlreadyExists(err) {
Expand Down Expand Up @@ -1107,11 +1107,27 @@ func CreateConversionDeployment(ctx context.Context, identity string, directCSIC
return nil
}

func GetConversionCABundle() ([]byte, error) {
if len(conversionWebhookCaBundle) == 0 {
return []byte{}, ErrEmptyCABundle
func GetConversionCABundle(ctx context.Context, identity string, dryRun bool) ([]byte, error) {

if dryRun {
if len(conversionWebhookCaBundle) == 0 {
return []byte{}, ErrEmptyCABundle
}
return conversionWebhookCaBundle, nil
}
return conversionWebhookCaBundle, nil

secret, err := utils.GetKubeClient().CoreV1().Secrets(sanitizeName(identity)).Get(ctx, conversionWebhookCertsSecret, metav1.GetOptions{})
Praveenrajmani marked this conversation as resolved.
Show resolved Hide resolved
if err != nil {
return []byte{}, err
}

for key, value := range secret.Data {
if key == caCertFileName {
return value, nil
}
}

return []byte{}, ErrEmptyCABundle
}

func GetConversionServiceName() string {
Expand Down
7 changes: 7 additions & 0 deletions pkg/utils/installer/uninstall.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,3 +172,10 @@ func DeleteConversionSecret(ctx context.Context, identity string) error {
}
return nil
}

func DeleteConversionWebhookCertsSecret(ctx context.Context, identity string) error {
if err := utils.GetKubeClient().CoreV1().Secrets(sanitizeName(identity)).Delete(ctx, conversionWebhookCertsSecret, metav1.DeleteOptions{}); err != nil {
return err
}
return nil
}