Skip to content

Commit 6900275

Browse files
committed
MB-63212 - Remove Memcached buckets from the UI
With the Morpheus release, Memcached buckets will no longer be supported, and upgrades will not be possible if any are present in a cluster. However, at the moment the backend still supports creating them, so they may still exist in some clusters until they are completelely removed by the backend. This change removes them from the UI, with the exception of three places (marked with "TODO") where removing them from the UI will break the UI on any Morpheus clusters that still have Memcached buckets. Those places can be updated once the backend guarantees that no more Memcached buckets exist. Change-Id: I1b569d5e827494cbe77a4c368a9a016742148443 Reviewed-on: https://review.couchbase.org/c/ns_server/+/216614 Well-Formed: Build Bot <[email protected]> Tested-by: Eben Haber <[email protected]> Reviewed-by: Pavel Blagodov <[email protected]>
1 parent db88eaa commit 6900275

10 files changed

+32
-59
lines changed

priv/public/ui/app/mn.bucket.dialog.component.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -355,8 +355,6 @@ class MnBucketDialogComponent extends MnLifeCycleHooksToStream {
355355
switch(bucketType) {
356356
case 'membase':
357357
return durabilityMinLevelOptionsComplete;
358-
case 'memcached':
359-
return durabilityMinLevelOptionsBasic;
360358
case 'ephemeral':
361359
return durabilityMinLevelOptionsBasic;
362360
}

priv/public/ui/app/mn.bucket.dialog.html

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -74,25 +74,12 @@ <h2>{{bucket ? 'Edit Bucket Settings' : 'Add Data Bucket'}}</h2>
7474
/>
7575
<label for="for-bucket-type-membase">Couchbase</label>
7676
<input
77-
type="radio"
78-
value="memcached"
79-
formControlName="bucketType"
80-
id="for-bucket-type-memcached"
81-
/>
82-
<label for="for-bucket-type-memcached">Memcached</label>
83-
<input
84-
type="radio"
85-
value="ephemeral"
86-
formControlName="bucketType"
87-
id="for-bucket-type-ephemeral"
88-
/>
89-
<label for="for-bucket-type-ephemeral">Ephemeral</label>
90-
<div
91-
class="error error-form"
92-
[hidden]="(bucketType | async) !== 'memcached'"
93-
>
94-
Warning: Memcached buckets are deprecated.
95-
</div>
77+
type="radio"
78+
value="ephemeral"
79+
formControlName="bucketType"
80+
id="for-bucket-type-ephemeral">
81+
<label
82+
for="for-bucket-type-ephemeral">Ephemeral</label>
9683
</div>
9784

9885
<div
@@ -152,10 +139,7 @@ <h2>{{bucket ? 'Edit Bucket Settings' : 'Add Data Bucket'}}</h2>
152139
</span>
153140
</div>
154141
<div [hidden]="!(showAdvancedSettings.state | async)">
155-
<div
156-
class="formrow checkbox-list"
157-
[hidden]="(bucketType | async) === 'memcached'"
158-
>
142+
<div class="formrow checkbox-list">
159143
<label>Replicas</label>
160144
<div class="row flex-left">
161145
<span class="column">
@@ -492,7 +476,7 @@ <h2>{{bucket ? 'Edit Bucket Settings' : 'Add Data Bucket'}}</h2>
492476
</div>
493477
</div>
494478

495-
<div [hidden]="(bucketType | async) === 'memcached'">
479+
<div>
496480
<label class="inline">Bucket Priority</label>
497481

498482
<ng-template #bucketPriorityTooltip>
@@ -530,7 +514,7 @@ <h2>{{bucket ? 'Edit Bucket Settings' : 'Add Data Bucket'}}</h2>
530514
</div>
531515
</div>
532516

533-
<div class="formrow" [hidden]="(bucketType | async) === 'memcached'">
517+
<div class="formrow">
534518
<div>
535519
<label class="inline">Minimum Durability Level</label>
536520

@@ -667,8 +651,6 @@ <h2>{{bucket ? 'Edit Bucket Settings' : 'Add Data Bucket'}}</h2>
667651
<label class="inline">Flush</label>
668652
<ng-template #flushTooltip>
669653
When flushed, ALL items in the bucket are removed as soon as possible.
670-
NOTE: This does not immediately show in item count statistics with
671-
memcached buckets.
672654
</ng-template>
673655
<span
674656
[ngbTooltip]="flushTooltip"

priv/public/ui/app/mn.bucket.item.component.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,7 @@ class MnBucketItemComponent extends MnLifeCycleHooksToStream {
128128
isScopesAndCollectionsLinkVisible([permissions, compat70]) {
129129
let bucketPerm = permissions.cluster.collection[this.bucket.name + ':.:.'];
130130

131-
return compat70 &&
132-
bucketPerm && bucketPerm.collections.read &&
133-
this.bucket.bucketType !== 'memcached';
131+
return compat70 && bucketPerm && bucketPerm.collections.read;
134132
}
135133

136134
isWarmUpProgressVisible([warmupProgress, permissions]) {

priv/public/ui/app/mn.bucket.item.details.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,18 @@
2727
{{bucket.basicStats.storageTotals.ram.quotaTotalPerNode |
2828
mnFormatQuantity}}
2929
</div>
30-
<div class="nowrap" *ngIf="bucket.bucketType !== 'memcached'">
30+
<div class="nowrap">
3131
<strong>Replicas:</strong>
3232
{{bucket.replicaNumber != 0 ? bucket.replicaNumber : 'disabled'}}
3333
</div>
3434
<div class="nowrap">
3535
<strong>Server Nodes: </strong> {{ bucket.nodes.length }}
3636
</div>
37-
<div class="nowrap" *ngIf="bucket.bucketType !== 'memcached'">
37+
<div class="nowrap">
3838
<strong>Ejection Method: </strong>
3939
{{ejectionMethod | async}}
4040
</div>
41-
<div class="nowrap" *ngIf="bucket.bucketType !== 'memcached'">
41+
<div class="nowrap">
4242
<strong>Conflict Resolution: </strong>
4343
<span
4444
>{{bucket.conflictResolutionType | mnConflictResolutionType}}</span
@@ -48,7 +48,7 @@
4848
<strong>Compaction:</strong>
4949
{{compactionProgress | async}}
5050
</div>
51-
<div class="nowrap initialcaps" *ngIf="bucket.bucketType !== 'memcached'">
51+
<div class="nowrap initialcaps">
5252
<strong>Compression:</strong>
5353
{{bucket.compressionMode}}
5454
</div>
@@ -60,13 +60,13 @@
6060
<strong>Storage Backend: </strong>
6161
{{storageBackend | async}}
6262
</div>
63-
<div class="nowrap" *ngIf="bucket.bucketType !== 'memcached'">
63+
<div class="nowrap">
6464
<strong>Minimum Durability Level:</strong>
6565
{{bucket.durabilityMinLevel}}
6666
</div>
6767
<div
6868
class="nowrap"
69-
*ngIf="bucket.bucketType !== 'memcached' && (compatVersion80 | async) && (isEnterprise | async)"
69+
*ngIf="(compatVersion80 | async) && (isEnterprise | async)"
7070
>
7171
<strong>Encryption At Rest:</strong>
7272
{{bucket.encryptionAtRestSecretId === -1 ? 'Disabled' : 'Enabled'}}

priv/public/ui/app/mn.bucket.item.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
</span>
5757
<span
5858
class="cbui-table-cell flex-grow-2-5 wrap text-right resp-hide-xsml">
59-
<span *ngIf="bucket.bucketType !== 'memcached'">
59+
<span>
6060
<a
6161
[hidden]="!(showDocumentsLink | async)"
6262
(click)="$event.stopPropagation()"

priv/public/ui/app/mn.helper.service.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,4 +336,3 @@ class MnHelperService {
336336
// })();
337337
// mn.pipes.MnIsMembase = mn.helper.createBucketTypePipe("membase")
338338
// mn.pipes.MnIsEphemeral = mn.helper.createBucketTypePipe("ephemeral");
339-
// mn.pipes.MnIsMemcached = mn.helper.createBucketTypePipe("memcached");

priv/public/ui/app/mn.permissions.service.js

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,18 @@ let bucketSpecificPermissions = [function (bucket) {
3939
"cluster.bucket[" + name + "].collections!write",
4040
"cluster.collection[" + name + ":.:.].stats!read",
4141
"cluster.collection[" + name + ":.:.].collections!read",
42-
"cluster.collection[" + name + ":.:.].collections!write"
42+
"cluster.collection[" + name + ":.:.].collections!write",
43+
"cluster.bucket[" + name + "].data!write",
44+
"cluster.bucket[" + name + "].data!read",
45+
"cluster.bucket[" + name + "].data.docs!read",
46+
"cluster.bucket[" + name + "].data.docs!write",
47+
"cluster.bucket[" + name + "].data.docs!upsert",
48+
"cluster.collection[" + name + ":.:.].data.docs!read",
49+
"cluster.collection[" + name + ":.:.].data.docs!write",
50+
"cluster.collection[" + name + ":.:.].data.docs!upsert",
51+
"cluster.collection[" + name + ":.:.].n1ql.index!read",
52+
"cluster.collection[" + name + ":.:.].n1ql.index!write",
53+
"cluster.collection[" + name + ":.:.].n1ql.select!execute"
4354
];
4455
if (bucket.name === "." || (bucket.bucketType === "membase")) {
4556
basePermissions = basePermissions.concat([
@@ -48,21 +59,6 @@ let bucketSpecificPermissions = [function (bucket) {
4859
"cluster.bucket[" + name + "].views!compact"
4960
]);
5061
}
51-
if (bucket.name === "." || (bucket.bucketType !== "memcached")) {
52-
basePermissions = basePermissions.concat([
53-
"cluster.bucket[" + name + "].data!write",
54-
"cluster.bucket[" + name + "].data!read",
55-
"cluster.bucket[" + name + "].data.docs!read",
56-
"cluster.bucket[" + name + "].data.docs!write",
57-
"cluster.bucket[" + name + "].data.docs!upsert",
58-
"cluster.collection[" + name + ":.:.].data.docs!read",
59-
"cluster.collection[" + name + ":.:.].data.docs!write",
60-
"cluster.collection[" + name + ":.:.].data.docs!upsert",
61-
"cluster.collection[" + name + ":.:.].n1ql.index!read",
62-
"cluster.collection[" + name + ":.:.].n1ql.index!write",
63-
"cluster.collection[" + name + ":.:.].n1ql.select!execute"
64-
]);
65-
}
6662

6763
return basePermissions;
6864
}];

priv/public/ui/app/mn.pipes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ class MnBucketsType {
373373
case "membase":
374374
return "Couchbase";
375375
case "ephemeral":
376-
case "memcached":
376+
case "memcached": // TODO: remove once backend no longer supports memcached buckets
377377
return type.charAt(0).toUpperCase() + type.slice(1);
378378
}
379379
}

priv/public/ui/app/mn_admin/mn_buckets_service.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,16 @@ function mnBucketsServiceFactory($q, mnBucketsStats) {
4949
}
5050
return mnBucketsStats.get(mnHttpParams).then(function (resp) {
5151
var bucketsDetails = resp.data;
52+
// TODO: remove memcached type once backend no longer supports them
5253
bucketsDetails.byType = {membase: [], memcached: [], ephemeral: []};
5354
bucketsDetails.byName = {};
5455
bucketsDetails.byType.membase.isMembase = true;
55-
bucketsDetails.byType.memcached.isMemcached = true;
5656
bucketsDetails.byType.ephemeral.isEphemeral = true;
5757
_.each(bucketsDetails, function (bucket) {
5858
bucketsDetails.byName[bucket.name] = bucket;
5959
bucketsDetails.byType[bucket.bucketType].push(bucket);
6060
bucket.isMembase = bucket.bucketType === 'membase';
6161
bucket.isEphemeral = bucket.bucketType === 'ephemeral';
62-
bucket.isMemcached = bucket.bucketType === 'memcached';
6362
});
6463
bucketsDetails.byType.names = _.pluck(bucketsDetails, 'name');
6564

priv/public/ui/app/mn_admin/mn_settings_notifications_service.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ angular.module('mnSettingsNotificationsService', [
160160
couchstore: bucketsList.byType.membase
161161
.filter((bucket) => bucket.storageBackend === "couchstore").length,
162162
membase: bucketsList.byType.membase.length,
163+
// TODO: remove when backend no longer supports memcached buckets
163164
memcached: bucketsList.byType.memcached.length,
164165
ephemeral: bucketsList.byType.ephemeral.length
165166
},

0 commit comments

Comments
 (0)