Skip to content

Commit 2ffb33a

Browse files
Merge pull request #3067 from olucasfreitas/OCM-18528
OCM-18528 | fix: Discontinue UWM for ROSA HCP clusters
2 parents 13f8240 + efb249a commit 2ffb33a

File tree

8 files changed

+128
-73
lines changed

8 files changed

+128
-73
lines changed

cmd/create/cluster/cmd.go

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -700,10 +700,9 @@ func initFlags(cmd *cobra.Command) {
700700
&args.disableWorkloadMonitoring,
701701
"disable-workload-monitoring",
702702
false,
703-
"[DEPRECATED FOR ROSA HCP] Enables you to monitor your own projects in isolation from Red Hat Site "+
704-
"Reliability Engineer (SRE) platform metrics. \n\n"+
705-
"User workload monitoring is deprecated for Hosted Control Plane clusters, and will be removed in a future "+
706-
"version.",
703+
"Enables you to monitor your own projects in isolation from Red Hat Site "+
704+
"Reliability Engineer (SRE) platform metrics. "+
705+
"Not supported for Hosted Control Plane clusters.",
707706
)
708707

709708
flags.BoolVarP(
@@ -981,7 +980,8 @@ func run(cmd *cobra.Command, _ []string) {
981980
isHostedCP := args.hostedClusterEnabled
982981
if isHostedCP {
983982
if cmd.Flags().Changed("disable-workload-monitoring") {
984-
r.Reporter.Warnf(arguments.UwmDeprecationMessage)
983+
r.Reporter.Errorf(arguments.UwmNotSupportedMessage)
984+
os.Exit(1)
985985
}
986986
validateHcpFlags(cmd, r.Reporter)
987987
}
@@ -1112,9 +1112,6 @@ func run(cmd *cobra.Command, _ []string) {
11121112
r.Reporter.Errorf("Expected a valid --hosted-cp value: %s", err)
11131113
os.Exit(1)
11141114
}
1115-
if isHostedCP {
1116-
r.Reporter.Warnf(arguments.UwmDeprecationMessage)
1117-
}
11181115
}
11191116

11201117
if isHostedCP && r.Reporter.IsTerminal() {
@@ -2998,7 +2995,7 @@ func run(cmd *cobra.Command, _ []string) {
29982995
}
29992996

30002997
disableWorkloadMonitoring := args.disableWorkloadMonitoring
3001-
if interactive.Enabled() {
2998+
if interactive.Enabled() && !isHostedCP {
30022999
disableWorkloadMonitoring, err = interactive.GetBool(interactive.Input{
30033000
Question: "Disable Workload monitoring",
30043001
Help: cmd.Flags().Lookup("disable-workload-monitoring").Usage,
@@ -3008,9 +3005,6 @@ func run(cmd *cobra.Command, _ []string) {
30083005
_ = r.Reporter.Errorf("Expected a valid disable-workload-monitoring value: %v", err)
30093006
os.Exit(1)
30103007
}
3011-
if isHostedCP {
3012-
r.Reporter.Warnf(arguments.UwmDeprecationMessage)
3013-
}
30143008
}
30153009

30163010
// Cluster-wide proxy configuration
@@ -3408,7 +3402,6 @@ func run(cmd *cobra.Command, _ []string) {
34083402
Mode: mode,
34093403
Tags: tagsList,
34103404
KMSKeyArn: kmsKeyARN,
3411-
DisableWorkloadMonitoring: &disableWorkloadMonitoring,
34123405
Hypershift: ocm.Hypershift{
34133406
Enabled: isHostedCP,
34143407
},
@@ -3430,6 +3423,10 @@ func run(cmd *cobra.Command, _ []string) {
34303423
InfraMachineType: args.infraMachineType,
34313424
}
34323425

3426+
if !isHostedCP {
3427+
clusterConfig.DisableWorkloadMonitoring = &disableWorkloadMonitoring
3428+
}
3429+
34333430
if httpTokens != "" {
34343431
clusterConfig.Ec2MetadataHttpTokens = v1.Ec2MetadataHttpTokens(httpTokens)
34353432
}

cmd/describe/cluster/cmd.go

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -457,17 +457,13 @@ func run(cmd *cobra.Command, argv []string) {
457457
deleteProtection,
458458
cluster.CreationTimestamp().Format("Jan _2 2006 15:04:05 MST"))
459459

460-
uwmString := "%s" +
461-
"User Workload Monitoring: %s\n"
462-
if isHypershift {
463-
uwmString = "%s" +
464-
"[DEPRECATED] User Workload Monitoring: %s\n"
460+
if !isHypershift {
461+
str = fmt.Sprintf("%s"+
462+
"User Workload Monitoring: %s\n",
463+
str,
464+
getUseworkloadMonitoring(cluster.DisableUserWorkloadMonitoring()))
465465
}
466466

467-
str = fmt.Sprintf(uwmString,
468-
str,
469-
getUseworkloadMonitoring(cluster.DisableUserWorkloadMonitoring()))
470-
471467
if cluster.FIPS() {
472468
str = fmt.Sprintf("%s"+
473469
"FIPS mode: %s\n",
@@ -1046,7 +1042,7 @@ func getRolePolicyBindings(roleARN string, rolePolicyDetails map[string][]aws.Po
10461042
prefix string) (string, error) {
10471043
roleName, err := aws.GetResourceIdFromARN(roleARN)
10481044
if err != nil {
1049-
return "", fmt.Errorf("Failed to get role name from arn %s: %v", roleARN, err)
1045+
return "", fmt.Errorf("failed to get role name from arn %s: %v", roleARN, err)
10501046
}
10511047
str := ""
10521048
if rolePolicyDetails[roleName] != nil {
@@ -1061,7 +1057,7 @@ func getRolePolicyBindings(roleARN string, rolePolicyDetails map[string][]aws.Po
10611057
func getZeroEgressStatus(r *rosa.Runtime, cluster *cmv1.Cluster) (string, error) {
10621058
techPreviewMsg, err := r.OCMClient.GetTechnologyPreviewMessage("hcp-zero-egress", time.Now())
10631059
if err != nil {
1064-
return "", fmt.Errorf("Failed to get technology preview message for zero egress: %v", err)
1060+
return "", fmt.Errorf("failed to get technology preview message for zero egress: %v", err)
10651061
}
10661062
if techPreviewMsg != "" {
10671063
zeroEgressOutput := DisabledOutput

cmd/edit/cluster/cmd.go

Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,6 @@ var Cmd = &cobra.Command{
9494
Example: ` # Edit a cluster named "mycluster" to make it private
9595
rosa edit cluster -c mycluster --private
9696
97-
# Edit a cluster named "mycluster" to enable User Workload Monitoring
98-
rosa edit cluster -c mycluster --disable-workload-monitoring=false
99-
10097
# Edit all options interactively
10198
rosa edit cluster -c mycluster --interactive`,
10299
Run: run,
@@ -144,9 +141,9 @@ func init() {
144141
&args.disableWorkloadMonitoring,
145142
"disable-workload-monitoring",
146143
false,
147-
"[DEPRECATED FOR ROSA HCP] Enables you to monitor your own projects in isolation from Red Hat Site "+
148-
"Reliability Engineer (SRE) "+
149-
"platform metrics.",
144+
"Enables you to monitor your own projects in isolation from Red Hat Site "+
145+
"Reliability Engineer (SRE) platform metrics. "+
146+
"Not supported for Hosted Control Plane clusters.",
150147
)
151148
flags.StringVar(
152149
&args.httpProxy,
@@ -273,7 +270,8 @@ func run(cmd *cobra.Command, _ []string) {
273270
cluster := r.FetchCluster()
274271

275272
if aws.IsHostedCP(cluster) && cmd.Flags().Changed("disable-workload-monitoring") {
276-
r.Reporter.Warnf(arguments.UwmDeprecationMessage)
273+
r.Reporter.Errorf(arguments.UwmNotSupportedMessage)
274+
os.Exit(1)
277275
}
278276

279277
// Validate flags:
@@ -388,6 +386,7 @@ func run(cmd *cobra.Command, _ []string) {
388386

389387
var disableWorkloadMonitoring *bool
390388
var disableWorkloadMonitoringValue bool
389+
isHostedCP := aws.IsHostedCP(cluster)
391390

392391
if cmd.Flags().Changed("disable-workload-monitoring") {
393392
disableWorkloadMonitoringValue = args.disableWorkloadMonitoring
@@ -396,22 +395,18 @@ func run(cmd *cobra.Command, _ []string) {
396395
disableWorkloadMonitoringValue = cluster.DisableUserWorkloadMonitoring()
397396
}
398397

399-
if interactive.Enabled() {
398+
if interactive.Enabled() && !isHostedCP {
400399
disableWorkloadMonitoringValue, err = interactive.GetBool(interactive.Input{
401400
Question: "Disable Workload monitoring",
402401
Help: cmd.Flags().Lookup("disable-workload-monitoring").Usage,
403402
Default: disableWorkloadMonitoringValue,
404403
})
405404
if err != nil {
406-
_ = r.Reporter.Errorf("Expected a valid disable-workload-monitoring value: %v", err)
407405
_ = r.Reporter.Errorf("Expected a valid disable-workload-monitoring value: %v", err)
408406
os.Exit(1)
409407
}
410-
if aws.IsHostedCP(cluster) {
411-
r.Reporter.Warnf(arguments.UwmDeprecationMessage)
412-
}
413408
disableWorkloadMonitoring = &disableWorkloadMonitoringValue
414-
} else if disableWorkloadMonitoringValue {
409+
} else if disableWorkloadMonitoringValue && !isHostedCP {
415410
if !confirm.Confirm("disable workload monitoring for your cluster %s", clusterKey) {
416411
os.Exit(0)
417412
}
@@ -562,10 +557,7 @@ func run(cmd *cobra.Command, _ []string) {
562557
}
563558

564559
/******* AdditionalTrustBundle *******/
565-
updateAdditionalTrustBundle := false
566-
if additionalTrustBundleFile != nil {
567-
updateAdditionalTrustBundle = true
568-
}
560+
updateAdditionalTrustBundle := additionalTrustBundleFile != nil
569561
if useExistingVPC && !updateAdditionalTrustBundle && additionalTrustBundleFile == nil &&
570562
interactive.Enabled() {
571563
updateAdditionalTrustBundleValue, err := interactive.GetBool(interactive.Input{
@@ -620,10 +612,7 @@ func run(cmd *cobra.Command, _ []string) {
620612
}
621613

622614
/******* AdditionalAllowedPrincipals *******/
623-
updateAdditionalAllowedPrincipals := false
624-
if additionalAllowedPrincipals != nil {
625-
updateAdditionalAllowedPrincipals = true
626-
}
615+
updateAdditionalAllowedPrincipals := additionalAllowedPrincipals != nil
627616
if !updateAdditionalAllowedPrincipals && additionalAllowedPrincipals == nil &&
628617
interactive.Enabled() {
629618
updateAdditionalAllowedPrincipalsValue, err := interactive.GetBool(interactive.Input{
@@ -702,9 +691,13 @@ func run(cmd *cobra.Command, _ []string) {
702691
}
703692

704693
clusterConfig := ocm.Spec{
705-
Expiration: expiration,
706-
Private: private,
707-
DisableWorkloadMonitoring: disableWorkloadMonitoring,
694+
Expiration: expiration,
695+
Private: private,
696+
}
697+
698+
// Only set DisableWorkloadMonitoring for non-HCP clusters
699+
if !isHostedCP {
700+
clusterConfig.DisableWorkloadMonitoring = disableWorkloadMonitoring
708701
}
709702

710703
if httpProxy != nil {
@@ -1013,15 +1006,15 @@ func warnUserForOAuthHCPVisibility(r *rosa.Runtime, clusterKey string, cluster *
10131006
func validateExpiration() (expiration time.Time, err error) {
10141007
// Validate options
10151008
if len(args.expirationTime) > 0 && args.expirationDuration != 0 {
1016-
err = errors.New("At most one of 'expiration-time' or 'expiration' may be specified")
1009+
err = errors.New("at most one of 'expiration-time' or 'expiration' may be specified")
10171010
return
10181011
}
10191012

10201013
// Parse the expiration options
10211014
if len(args.expirationTime) > 0 {
10221015
t, err := parseRFC3339(args.expirationTime)
10231016
if err != nil {
1024-
err = fmt.Errorf("Failed to parse expiration-time: %s", err)
1017+
err = fmt.Errorf("failed to parse expiration-time: %s", err)
10251018
return expiration, err
10261019
}
10271020

@@ -1039,7 +1032,7 @@ func validateExpiration() (expiration time.Time, err error) {
10391032
func validateOvnInternalSubnetConfiguration() (ovnInternalSubnets map[string]string, err error) {
10401033
if len(args.ovnInternalSubnets) > 0 {
10411034
if args.networkType == "" {
1042-
err = fmt.Errorf("Expected a value for %s when supplying the flag %s", ocm.NetworkTypeFlagName,
1035+
err = fmt.Errorf("expected a value for %s when supplying the flag %s", ocm.NetworkTypeFlagName,
10431036
ocm.OvnInternalSubnetsFlagName)
10441037
return
10451038
}
@@ -1052,7 +1045,7 @@ func validateOvnInternalSubnetConfiguration() (ovnInternalSubnets map[string]str
10521045
func validateNetworkType() (networkConfig string, err error) {
10531046
if len(args.networkType) > 0 {
10541047
if args.networkType != ocm.NetworkTypeOvn && args.networkType != ocm.NetworkTypeOvnAlias {
1055-
err = fmt.Errorf("Incorrect network type '%s', please use '%s' or remove the flag",
1048+
err = fmt.Errorf("incorrect network type '%s', please use '%s' or remove the flag",
10561049
args.networkType, ocm.NetworkTypeOvn)
10571050
} else {
10581051
networkConfig = ocm.NetworkTypeOvn // allows use of alias (OVN-Kubernetes)- but sets it to correct value for API
@@ -1088,11 +1081,11 @@ func setAuditLogForwarding(r *rosa.Runtime, cmd *cobra.Command, cluster *cmv1.Cl
10881081
argValuePtr *string, err error) {
10891082
if cmd.Flags().Changed("audit-log-arn") {
10901083
if !aws.IsHostedCP(cluster) {
1091-
return nil, fmt.Errorf("Audit log forwarding to AWS CloudWatch is only supported for Hosted Control Plane clusters")
1084+
return nil, fmt.Errorf("audit log forwarding to AWS CloudWatch is only supported for Hosted Control Plane clusters")
10921085

10931086
}
10941087
if auditLogArn != "" && !aws.RoleArnRE.MatchString(auditLogArn) {
1095-
return nil, fmt.Errorf("Expected a valid value for audit-log-arn matching %s", aws.RoleArnRE.String())
1088+
return nil, fmt.Errorf("expected a valid value for audit-log-arn matching %s", aws.RoleArnRE.String())
10961089
}
10971090
argValuePtr := new(string)
10981091
*argValuePtr = auditLogArn
@@ -1129,7 +1122,7 @@ func auditLogInteractivePrompt(r *rosa.Runtime, cmd *cobra.Command, cluster *cmv
11291122
Required: true,
11301123
})
11311124
if err != nil {
1132-
return nil, fmt.Errorf("Expected a valid value: %s", err)
1125+
return nil, fmt.Errorf("expected a valid value: %s", err)
11331126
}
11341127
if requestAuditLogForwarding {
11351128

@@ -1146,7 +1139,7 @@ func auditLogInteractivePrompt(r *rosa.Runtime, cmd *cobra.Command, cluster *cmv
11461139
},
11471140
})
11481141
if err != nil {
1149-
return nil, fmt.Errorf("Expected a valid value for audit-log-arn: %s", err)
1142+
return nil, fmt.Errorf("expected a valid value for audit-log-arn: %s", err)
11501143
}
11511144
*auditLogRolePtr = auditLogRoleValue
11521145
return auditLogRolePtr, nil
@@ -1159,7 +1152,7 @@ func auditLogInteractivePrompt(r *rosa.Runtime, cmd *cobra.Command, cluster *cmv
11591152
Default: false,
11601153
})
11611154
if err != nil {
1162-
return nil, fmt.Errorf("Expected a valid value: %s", err)
1155+
return nil, fmt.Errorf("expected a valid value: %s", err)
11631156
}
11641157
if disableAuditLog {
11651158
*auditLogRolePtr = ""
@@ -1190,7 +1183,7 @@ func BuildClusterConfigWithRegistry(clusterConfig ocm.Spec, allowedRegistries []
11901183
ca, err := clusterregistryconfig.BuildAdditionalTrustedCAFromInputFile(additionalTrustedCa)
11911184
if err != nil {
11921185
return clusterConfig, fmt.Errorf(
1193-
"Failed to build the additional trusted ca from file %s, got error: %s",
1186+
"failed to build the additional trusted ca from file %s, got error: %s",
11941187
additionalTrustedCa, err)
11951188
}
11961189
clusterConfig.AdditionalTrustedCa = ca

cmd/edit/cluster/cmd_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ var _ = Describe("Edit cluster", func() {
108108
})
109109
It("KO: should fail with error if ca file does not exist", func() {
110110
_, err := BuildClusterConfigWithRegistry(clusterConfig, allowedRegistries, nil, nil, "not-exist", "", "")
111-
Expect(err).To(MatchError("Failed to build the additional trusted ca from file not-exist, " +
111+
Expect(err).To(MatchError("failed to build the additional trusted ca from file not-exist, " +
112112
"got error: expected a valid additional trusted certificate spec file:" +
113113
" open not-exist: no such file or directory"))
114114
})

pkg/arguments/arguments.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ var hasUnknownFlags bool
4444
var DisableRegionDeprecationFlagName = "disable-region-deprecation" // Temporary for region deprecation
4545
var DisableRegionDeprecationWarning = false // Temporary for region deprecation
4646

47-
var UwmDeprecationMessage = "[DEPRECATED FOR ROSA HCP] User workload monitoring (--disable-workload-monitoring)" +
48-
" has been deprecated for Hosted Control Plane clusters, and will be removed in a future version of ROSA CLI. " +
49-
"Please remove from your workflows to avoid future issues"
47+
var UwmNotSupportedMessage = "User Workload Monitoring configuration is not supported for Hosted Control Plane clusters"
5048

5149
// ParseUnknownFlags parses all flags from the CLI, including
5250
// unknown ones, and adds them to the current command tree
@@ -122,7 +120,7 @@ func ParseUnknownFlags(cmd *cobra.Command, argv []string) error {
122120
func ParseKnownFlags(cmd *cobra.Command, argv []string, failOnUnknown bool) error {
123121
flags := cmd.Flags()
124122

125-
var validArgs []string = []string{}
123+
var validArgs = []string{}
126124
var upcomingValue bool
127125
unknownFlags := ""
128126

@@ -176,7 +174,7 @@ func ParseKnownFlags(cmd *cobra.Command, argv []string, failOnUnknown bool) erro
176174
}
177175

178176
if failOnUnknown && unknownFlags != "" {
179-
return fmt.Errorf("Unknown flags passed: %s", unknownFlags[:len(unknownFlags)-2])
177+
return fmt.Errorf("unknown flags passed: %s", unknownFlags[:len(unknownFlags)-2])
180178
}
181179

182180
err := flags.Parse(validArgs)
@@ -226,7 +224,7 @@ func PreprocessUnknownFlagsWithId(cmd *cobra.Command, argv []string) error {
226224
// Upcoming value from a space-separated value
227225
case upcomingValue:
228226
if strings.HasPrefix(arg, "-") {
229-
return fmt.Errorf("No value given for flag '%s'", argv[i-1])
227+
return fmt.Errorf("no value given for flag '%s'", argv[i-1])
230228
}
231229
validArgs = append(validArgs, arg)
232230
upcomingValue = false
@@ -286,7 +284,7 @@ func PreprocessUnknownFlagsWithId(cmd *cobra.Command, argv []string) error {
286284

287285
func AddStringFlag(cmd *cobra.Command, flagName string) {
288286
flags := cmd.Flags()
289-
var pStrVal *string = new(string)
287+
var pStrVal = new(string)
290288
flags.StringVar(pStrVal, flagName, "", "")
291289
}
292290

pkg/arguments/arguments_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ var _ = Describe("Client", func() {
147147
It("Returns error with flag that has no value", func() {
148148
err := PreprocessUnknownFlagsWithId(cmd, []string{"test", "-c", "-c", "-c", "-c"})
149149
Expect(err).To(HaveOccurred())
150-
Expect(fmt.Sprint(err)).To(Equal("No value given for flag '-c'"))
150+
Expect(fmt.Sprint(err)).To(Equal("no value given for flag '-c'"))
151151
})
152152
})
153153
})

0 commit comments

Comments
 (0)