Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -76,14 +76,6 @@ public interface BucketApiService {
ConfigKey.Scope.Global,
null);

ConfigKey<Long> ObjectStorePresignedUrlExpirySeconds = new ConfigKey<Long>("Advanced", Long.class,
"objectstore.presigned.url.expiry.seconds",
"86400",
"The expiry time, in seconds, for object store presigned URLs generated by the UI.",
true,
ConfigKey.Scope.Global,
null);

/**
* Creates the database object for a Bucket based on the given criteria
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -506,18 +506,7 @@ private void enforceBaselineThenDeleteLastVersionIfNeeded(final CloudStackVersio
try {
final Connection conn = txn.getConnection();

// 0) DB 최신버전 == 코드버전이면 삭제/삽입 모두 스킵
final boolean sameAsCode = (dbLatestVersion != null
&& currentVersion != null
&& dbLatestVersion.compareTo(currentVersion) == 0);
if (sameAsCode) {
LOGGER.info("DB latest version equals code version (db={}, code={}). Skipping baseline insert and deletion.",
dbLatestVersion, currentVersion);
txn.commit();
return;
}

// 1) sameAsCode == false 인 경우에만 베이스라인 보장 (없으면 삽입)
// 1) 베이스라인 보장 (없으면 삽입)
final String insertIfMissingSql =
"INSERT INTO `cloud`.`version` (`version`, `step`, `updated`) " +
"SELECT ?, 'Complete', NOW() FROM DUAL " +
Expand All @@ -534,9 +523,8 @@ private void enforceBaselineThenDeleteLastVersionIfNeeded(final CloudStackVersio
}

// 2) 삭제 대상: dbLatestVersion 의 최신 1건 (단, 베이스라인이면 삭제 금지)
// DB 최신 버전과 코드 버전이 같아도 최신 버전 row를 삭제해 동일 버전 업그레이드를 재실행한다.
if (dbLatestVersion != null
&& currentVersion != null
&& dbLatestVersion.compareTo(currentVersion) != 0
&& !BASELINE_VERSION.equals(dbLatestVersion.toString())) {

final String deleteLatestOneSql =
Expand All @@ -554,7 +542,8 @@ private void enforceBaselineThenDeleteLastVersionIfNeeded(final CloudStackVersio
delLatest.setString(1, dbLatestVersion.toString());
int deleted = delLatest.executeUpdate();
if (deleted > 0) {
LOGGER.warn("Deleted {} latest row for version {}", deleted, dbLatestVersion.toString());
LOGGER.warn("Deleted {} latest row for DB version {} before upgrade check with code version {}",
deleted, dbLatestVersion.toString(), currentVersion);
txn.commit();
return;
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@ CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.console_session', 'console_endpoint_
CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.console_session', 'client_address', 'VARCHAR(45)');

CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.backup_schedule', 'uuid', 'VARCHAR(40) NOT NULL');
UPDATE `cloud`.`backup_schedule` SET uuid = UUID() WHERE uuid IS NULL;
UPDATE `cloud`.`backup_schedule` SET uuid = UUID() WHERE uuid IS NULL OR uuid = '';

-- Add columns name, description and backup_interval_type to backup table
CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.backups', 'name', 'VARCHAR(255) NULL COMMENT "name of the backup"');
UPDATE `cloud`.`backups` backup INNER JOIN `cloud`.`vm_instance` vm ON backup.vm_id = vm.id SET backup.name = vm.name;
UPDATE `cloud`.`backups` backup INNER JOIN `cloud`.`vm_instance` vm ON backup.vm_id = vm.id SET backup.name = vm.name WHERE backup.name IS NULL OR backup.name = '';
CALL `cloud`.`IDEMPOTENT_CHANGE_COLUMN`('cloud.backups','name','name','VARCHAR(255) NOT NULL');
CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.backups', 'description', 'VARCHAR(1024) COMMENT "description for the backup"');
CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.backups', 'backup_interval_type', 'int(5) COMMENT "type of backup, e.g. manual, recurring - hourly, daily, weekly or monthly"');
Expand Down Expand Up @@ -62,7 +62,8 @@ SET b.backed_volumes = (
FROM `cloud`.`volumes` v
LEFT JOIN `cloud`.`disk_offering` doff ON v.disk_offering_id = doff.id
WHERE v.instance_id = vm.id
);
)
WHERE b.backed_volumes IS NULL OR b.backed_volumes = '' OR b.backed_volumes NOT LIKE '%"diskOfferingId"%';

-- Add diskOfferingId, deviceId, minIops and maxIops to backup_volumes in vm_instance table
UPDATE `cloud`.`vm_instance` vm
Expand All @@ -87,7 +88,8 @@ SET vm.backup_volumes = (
LEFT JOIN `cloud`.`disk_offering` doff ON v.disk_offering_id = doff.id
WHERE v.instance_id = vm.id
)
WHERE vm.backup_offering_id IS NOT NULL;
WHERE vm.backup_offering_id IS NOT NULL
AND (vm.backup_volumes IS NULL OR vm.backup_volumes = '' OR vm.backup_volumes NOT LIKE '%"diskOfferingId"%');

-- Add column allocated_size to object_store table. Rename column 'used_bytes' to 'used_size'
CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.object_store', 'allocated_size', 'bigint unsigned COMMENT "allocated size in bytes"');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,7 @@ public ConfigKey<?>[] getConfigKeys() {
DefaultMaxProjectBuckets,
DefaultMaxProjectObjectStorage,
DefaultMaxDomainBuckets,
DefaultMaxDomainObjectStorage,
ObjectStorePresignedUrlExpirySeconds
DefaultMaxDomainObjectStorage
};
}

Expand Down
6 changes: 6 additions & 0 deletions ui/public/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -612,6 +612,7 @@
"label.copy": "Copy",
"label.copy.clipboard": "Copy to clipboard",
"label.copy.consoleurl": "Copy console URL to clipboard",
"label.copy.share.url": "Copy share URL",
"label.copyid": "Copy ID",
"label.copy.password": "Copy password",
"label.core": "Core",
Expand Down Expand Up @@ -687,6 +688,8 @@
"label.datetime.filter.up.to": "Up to <b>{endDate}</b>.",
"label.day": "Day",
"label.days": "Days",
"label.hours": "Hours",
"label.minutes": "Minutes",
"label.day.of.month": "Day of month",
"label.day.of.week": "Day of week",
"label.db.usage.metrics": "DB/Usage server",
Expand Down Expand Up @@ -1658,6 +1661,8 @@
"label.objectstoragelimit": "Object Storage Limits (GiB)",
"label.object.presigned.url": "Presigned URL",
"label.object.presigned.url.description": "Presigned URL of the object in order to access it without authentication.",
"label.object.presigned.url.expiry.description": "The copied share URL is valid only for the selected time.",
"label.object.open.url": "Open URL",
"label.object.url.description": "URL of the object",
"label.objectstore": "Object Storage",
"label.objectstore.search": "Prefix based search in current directory",
Expand Down Expand Up @@ -2078,6 +2083,7 @@
"label.scope": "Scope",
"label.scope.tooltip": "Primary Storage Pool Scope",
"label.search": "Search",
"label.seconds": "Seconds",
"label.secondary.isolated.vlan.type.isolated": "Isolated",
"label.secondary.isolated.vlan.type.promiscuous": "Promiscuous",
"label.secondary.storage": "Secondary storage",
Expand Down
36 changes: 21 additions & 15 deletions ui/public/locales/ko_KR.json
Original file line number Diff line number Diff line change
Expand Up @@ -125,11 +125,11 @@
"label.action.delete.template": "\ud15c\ud50c\ub9bf \uc0ad\uc81c",
"label.action.delete.tungsten.router.table": "\ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c Tungsten Fabric \uacbd\ub85c \ud14c\uc774\ube14 \uc81c\uac70",
"label.action.delete.user": "\uc0ac\uc6a9\uc790 \uc0ad\uc81c",
"label.action.delete.volume": "\ubcfc\ub968 \uc0ad\uc81c",
"label.action.delete.volume": "\ubcfc\ub968 \uc601\uad6c \uc0ad\uc81c",
"label.action.delete.zone": "Zone \uc0ad\uc81c",
"label.action.destroy.instance": "\uac00\uc0c1\uba38\uc2e0 \ud30c\uae30",
"label.action.destroy.instance": "\uac00\uc0c1\uba38\uc2e0 \uc0ad\uc81c",
"label.action.destroy.systemvm": "\uc2dc\uc2a4\ud15c VM \ud30c\uae30",
"label.action.destroy.volume": "\ubcfc\ub968 \ud30c\uae30",
"label.action.destroy.volume": "\ubcfc\ub968 \uc0ad\uc81c",
"label.action.detach.disk": "\ub514\uc2a4\ud06c \ubd84\ub9ac",
"label.action.detach.iso": "ISO \ubd84\ub9ac",
"label.action.disable.account": "\uacc4\uc815 \ube44\ud65c\uc131\ud654",
Expand Down Expand Up @@ -168,7 +168,7 @@
"label.action.enable.static.nat": "Static NAT \ud65c\uc131\ud654",
"label.action.enable.user": "\uc0ac\uc6a9\uc790 \ud65c\uc131\ud654",
"label.action.enable.zone": "Zone \ud65c\uc131\ud654",
"label.action.expunge.instance": "\uac00\uc0c1\uba38\uc2e0 \uc81c\uac70",
"label.action.expunge.instance": "\uac00\uc0c1\uba38\uc2e0 \uc601\uad6c \uc0ad\uc81c",
"label.action.force.reconnect": "\uac15\uc81c \uc7ac\uc5f0\uacb0",
"label.action.generate.keys": "\ud0a4 \uc0dd\uc131",
"label.action.generate.api.secret.keys": "API/Secret \ud0a4 \uc2e0\uaddc \uc0dd\uc131",
Expand Down Expand Up @@ -612,6 +612,7 @@
"label.copy": "\ubcf5\uc0ac",
"label.copy.clipboard": "\ud074\ub9bd\ubcf4\ub4dc\uc5d0 \ubcf5\uc0ac",
"label.copy.consoleurl": "\ucf58\uc194 URL \ubcf5\uc0ac",
"label.copy.share.url": "\uacf5\uc720 URL \ubcf5\uc0ac",
"label.copyid": "\uc544\uc774\ub514 \ubcf5\uc0ac",
"label.copy.password": "\ube44\ubc00\ubc88\ud638 \ubcf5\uc0ac",
"label.core": "Core",
Expand Down Expand Up @@ -687,6 +688,8 @@
"label.datetime.filter.up.to": "<b>{endDate}</b>\uae4c\uc9c0",
"label.day": "\uc77c",
"label.days": "\uc77c",
"label.hours": "\uc2dc\uac04",
"label.minutes": "\ubd84",
"label.day.of.month": "\uc77c\uc790",
"label.day.of.week": "\uc694\uc77c",
"label.db.usage.metrics": "DB/Usage \uc11c\ubc84",
Expand Down Expand Up @@ -989,10 +992,10 @@
"label.example.plugin": "\ud50c\ub7ec\uadf8\uc778 \uc608",
"label.existing": "\uae30\uc874",
"label.execute": "\uc2e4\ud589",
"label.expunge": "\uc81c\uac70",
"label.expunge": "\uc601\uad6c \uc0ad\uc81c",
"label.expunge.sharedfs": "\uacf5\uc720 \ud30c\uc77c \uc2dc\uc2a4\ud15c \uc0ad\uc81c",
"label.expungevmgraceperiod": "VM \uc0ad\uc81c \uc720\uc608 \uae30\uac04(\ucd08)",
"label.expunged": "\uc81c\uac70\ub428",
"label.expunged": "\uc601\uad6c \uc0ad\uc81c\ub428",
"label.expunging": "\uc81c\uac70\ud558\ub294 \uc911...",
"label.export.rules": "Export \uaddc\uce59",
"label.ext.hostname.tooltip": "\uc678\ubd80 \ud638\uc2a4\ud2b8 \uc774\ub984 \ub610\ub294 IP \uc8fc\uc18c",
Expand Down Expand Up @@ -1655,6 +1658,8 @@
"label.object.storage": "Object \uc2a4\ud1a0\ub9ac\uc9c0",
"label.object.presigned.url": "\ubbf8\ub9ac \uc11c\uba85\ub41c URL",
"label.object.presigned.url.description": "\uc778\uc99d \uc5c6\uc774 \uc811\uadfc\ud558\uae30 \uc704\ud55c Object\uc758 \ubbf8\ub9ac \uc11c\uba85\ub41c URL\uc785\ub2c8\ub2e4.",
"label.object.presigned.url.expiry.description": "\uc120\ud0dd\ud55c \uc2dc\uac04 \ub3d9\uc548\ub9cc \uacf5\uc720 URL\uc774 \uc720\ud6a8\ud569\ub2c8\ub2e4.",
"label.object.open.url": "URL \uc5f4\uae30",
"label.object.url.description": "Object\uc758 URL",
"label.objectstore": "Object \uc800\uc7a5\uc18c",
"label.objectstore.search": "\ud604\uc7ac \ub514\ub809\ud130\ub9ac\uc758 \uc811\ub450\uc0ac \uae30\ubc18 \uac80\uc0c9",
Expand Down Expand Up @@ -2075,6 +2080,7 @@
"label.scope": "\ubc94\uc704",
"label.scope.tooltip": "\uae30\ubcf8 \uc800\uc7a5\uc18c \ud480 \ubc94\uc704",
"label.search": "\uac80\uc0c9",
"label.seconds": "\ucd08",
"label.secondary.isolated.vlan.type.isolated": "isolated",
"label.secondary.isolated.vlan.type.promiscuous": "\ube44\uaddc\uce59",
"label.secondary.storage": "2\ucc28 \uc2a4\ud1a0\ub9ac\uc9c0",
Expand Down Expand Up @@ -2740,14 +2746,14 @@
"message.action.delete.snapshot": "\ud604\uc7ac \uc2a4\ub0c5\uc0f7\uc744 \uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"message.action.delete.template": "\ud604\uc7ac \ud15c\ud50c\ub9bf\uc744 \uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"message.action.delete.tungsten.router.table": "\uc774 \ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c \ub77c\uc6b0\ud305 \ud14c\uc774\ube14\uc744 \uc81c\uac70\ud560 \uac83\uc778\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.",
"message.action.delete.volume": "\ud604\uc7ac \ubcfc\ub968\uc744 \uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? \ucc38\uace0 : \uacf5\uc720 \ubcfc\ub968\uc778 \uacbd\uc6b0 \uc774\ubbf8\uc9c0\ub294 \uc0ad\uc81c\ub418\uc9c0 \uc54a\uc73c\uba70, \ubc18\ub4dc\uc2dc \uc218\ub3d9\uc73c\ub85c \uc0ad\uc81c\ud574\uc57c\ud569\ub2c8\ub2e4.",
"message.action.delete.volume": "\ud604\uc7ac \ubcfc\ub968\uc744 \uc601\uad6c \uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? \uc774 \uc791\uc5c5\uc740 \ub418\ub3cc\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<br>\ucc38\uace0: \uacf5\uc720 \ubcfc\ub968\uc778 \uacbd\uc6b0 \uc774\ubbf8\uc9c0\ub294 \uc0ad\uc81c\ub418\uc9c0 \uc54a\uc73c\uba70, \ubc18\ub4dc\uc2dc \uc218\ub3d9\uc73c\ub85c \uc0ad\uc81c\ud574\uc57c \ud569\ub2c8\ub2e4.",
"message.action.delete.vpn.user": "VPN \uc0ac\uc6a9\uc790\ub97c \uc0ad\uc81c\ud560 \uac83\uc778\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.",
"message.action.delete.zone": "\ud604\uc7ac Zone\uc744 \uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"message.action.destroy.sharedfs": "\uc774 \uacf5\uc720 \ud30c\uc77c \uc2dc\uc2a4\ud15c\uc744 \ud30c\uad34\ud560 \uac83\uc778\uc9c0 \ud655\uc778\ud574 \uc8fc\uc138\uc694.<br><b>\uc8fc\uc758: \uc774\ub807\uac8c \ud558\uba74 \uacf5\uc720 \ud30c\uc77c \uc2dc\uc2a4\ud15c\uc758 \ubaa8\ub4e0 \ub370\uc774\ud130\ub3c4 \uc0ad\uc81c\ub429\ub2c8\ub2e4.</b>",
"message.action.destroy.instance": "\ud604\uc7ac \uac00\uc0c1\uba38\uc2e0\uc744 \ud30c\uae30\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"message.action.destroy.instance.with.backups": "\uc778\uc2a4\ud134\uc2a4\ub97c \uc0ad\uc81c\ud560 \uac83\uc778\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624. \ud574\ub2f9 \uc778\uc2a4\ud134\uc2a4\uc640 \uc5f0\uacb0\ub41c \ubc31\uc5c5\uc774 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
"message.action.destroy.instance": "\ud604\uc7ac \uac00\uc0c1\uba38\uc2e0\uc744 \uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? \uc0ad\uc81c\ub41c \uac00\uc0c1\uba38\uc2e0\uc740 \ubcf5\uad6c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc601\uad6c \uc0ad\uc81c\ud558\ub824\uba74 \uc601\uad6c \uc0ad\uc81c \uc635\uc158\uc744 \uc120\ud0dd\ud558\uc138\uc694.",
"message.action.destroy.instance.with.backups": "\ud604\uc7ac \uac00\uc0c1\uba38\uc2e0\uc744 \uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? \uc0ad\uc81c\ub41c \uac00\uc0c1\uba38\uc2e0\uc740 \ubcf5\uad6c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc601\uad6c \uc0ad\uc81c\ud558\ub824\uba74 \uc601\uad6c \uc0ad\uc81c \uc635\uc158\uc744 \uc120\ud0dd\ud558\uc138\uc694. \ud574\ub2f9 \uac00\uc0c1\uba38\uc2e0\uacfc \uc5f0\uacb0\ub41c \ubc31\uc5c5\uc774 \uc788\uc744 \uc218 \uc788\uc73c\uba70, \ubc31\uc5c5\uc740 \uc0ad\uc81c\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",
"message.action.destroy.systemvm": "\ud604\uc7ac \uc2dc\uc2a4\ud15c VM\ub97c \ud30c\uae30\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"message.action.destroy.volume": "\uc774 \ubcfc\ub968\uc744 \uc81c\uac70 \ud560 \uac83\uc778\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624. \ucc38\uace0 : \uacf5\uc720 \ubcfc\ub968\uc778 \uacbd\uc6b0 \uc774\ubbf8\uc9c0\ub294 \uc0ad\uc81c\ub418\uc9c0 \uc54a\uc73c\uba70, \ubc18\ub4dc\uc2dc \uc218\ub3d9\uc73c\ub85c \uc0ad\uc81c\ud574\uc57c\ud569\ub2c8\ub2e4.",
"message.action.destroy.volume": "\ud604\uc7ac \ubcfc\ub968\uc744 \uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? \uc0ad\uc81c\ub41c \ubcfc\ub968\uc740 \ubcf5\uad6c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc601\uad6c \uc0ad\uc81c\ud558\ub824\uba74 \uc601\uad6c \uc0ad\uc81c \uc635\uc158\uc744 \uc120\ud0dd\ud558\uc138\uc694.<br>\ucc38\uace0: \uacf5\uc720 \ubcfc\ub968\uc778 \uacbd\uc6b0 \uc774\ubbf8\uc9c0\ub294 \uc0ad\uc81c\ub418\uc9c0 \uc54a\uc73c\uba70, \ubc18\ub4dc\uc2dc \uc218\ub3d9\uc73c\ub85c \uc0ad\uc81c\ud574\uc57c \ud569\ub2c8\ub2e4.",
"message.action.disable.2FA.user.auth": "\uc0ac\uc6a9\uc790 \uc774\uc911 \uc778\uc99d\uc744 \ube44\ud65c\uc131\ud654\ud560 \uac83\uc778\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.",
"message.action.about.mandate.and.disable.2FA.user.auth": "\uc0ac\uc6a9\uc790\uc5d0\uac8c 2\ub2e8\uacc4 \uc778\uc99d\uc774 \ud544\uc218\uc785\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc744 \ube44\ud65c\uc131\ud654\ud558\uba74 \uc774\uc81c \uc0ac\uc6a9\uc790\ub294 \ub2e4\uc74c \ub85c\uadf8\uc778 \uc2dc 2\ub2e8\uacc4 \uc778\uc99d\uc744 \ub2e4\uc2dc \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4. <br ><br>\ube44\ud65c\uc131\ud654\ud560 \uac83\uc778\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.",
"message.action.disable.cluster": "\ud604\uc7ac \ud074\ub7ec\uc2a4\ud130\ub97c \ube44\ud65c\uc131\ud654 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
Expand All @@ -2771,8 +2777,8 @@
"message.action.enable.pod": "\ud604\uc7ac Pod\ub97c \uc0ac\uc6a9 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"message.action.enable.zone": "\ud604\uc7ac Zone\uc744 \uc0ac\uc6a9 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"message.action.expunge.sharedfs": "\uc774 \uacf5\uc720 \ud30c\uc77c \uc2dc\uc2a4\ud15c\uc744 \uc0ad\uc81c\ud560\uc9c0 \ud655\uc778\ud574 \uc8fc\uc138\uc694.",
"message.action.expunge.instance": "\uc774 \uac00\uc0c1\uba38\uc2e0\uc744 \uc81c\uac70\ud560 \uac83\uc778\uc9c0 \ud655\uc778\ud558\uc138\uc694.",
"message.action.expunge.instance.with.backups": "\uc774 \uc778\uc2a4\ud134\uc2a4\ub97c \uc601\uad6c \uc0ad\uc81c\ud560 \uac83\uc778\uc9c0 \ud655\uc778\ud558\uc138\uc694. \ud574\ub2f9 \uc778\uc2a4\ud134\uc2a4\uc640 \uc5f0\uacb0\ub41c \ubc31\uc5c5\uc774 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
"message.action.expunge.instance": "\ud604\uc7ac \uac00\uc0c1\uba38\uc2e0\uc744 \uc601\uad6c \uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? \uc774 \uc791\uc5c5\uc740 \ub418\ub3cc\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
"message.action.expunge.instance.with.backups": "\ud604\uc7ac \uac00\uc0c1\uba38\uc2e0\uc744 \uc601\uad6c \uc0ad\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? \uc774 \uc791\uc5c5\uc740 \ub418\ub3cc\ub9b4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud574\ub2f9 \uac00\uc0c1\uba38\uc2e0\uacfc \uc5f0\uacb0\ub41c \ubc31\uc5c5\uc774 \uc788\uc744 \uc218 \uc788\uc73c\uba70, \ubc31\uc5c5\uc740 \uc0ad\uc81c\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",
"message.action.host.enable.maintenance.mode": "\uc720\uc9c0 \ubcf4\uc218 \ubaa8\ub4dc\ub97c \uc0ac\uc6a9\ud558\uba74, \uc774 \ud638\uc2a4\ud2b8\ub85c \uc2e4\ud589 \uc911\uc778 \ubaa8\ub4e0 \uac00\uc0c1\uba38\uc2e0\uc744 \ub2e4\ub978 \uc0ac\uc6a9 \uac00\ub2a5 \ud638\uc2a4\ud2b8\uc5d0\uac8c \uc2e4\uc2dc\uac04 \ub9c8\uc774\uadf8\ub808\uc774\uc158\ub429\ub2c8\ub2e4.",
"message.action.instance.reset.password": "\ud604\uc7ac \uac00\uc0c1\uba38\uc2e0 \ub8e8\ud2b8 \ube44\ubc00\ubc88\ud638\ub97c \ubcc0\uacbd\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"message.action.manage.cluster": "\ud074\ub7ec\uc2a4\ud130\ub97c \uad00\ub9ac \ub300\uc0c1\uc73c\ub85c \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
Expand Down Expand Up @@ -3833,8 +3839,8 @@
"message.volume.state.creating": "\ubcfc\ub968\uc774 \uc0dd\uc131\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4.",
"message.volume.state.destroy": "\ubcfc\ub968\uc774 \ud30c\uae30\ub418\uc5b4 \ubcf5\uad6c \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
"message.volume.state.destroying": "\ubcfc\ub968\uc774 \ud30c\uae30\ub418\uace0 \uc788\uc73c\uba70 \ubcf5\uad6c \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
"message.volume.state.expunged": "\ubcfc\ub968\uc774 \uc81c\uac70\ub418\uc5c8\uc2b5\ub2c8\ub2e4.",
"message.volume.state.expunging": "\ubcfc\ub968\uc774 \uc81c\uac70\uc911\uc785\ub2c8\ub2e4.",
"message.volume.state.expunged": "\ubcfc\ub968\uc774 \uc601\uad6c \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.",
"message.volume.state.expunging": "\ubcfc\ub968\uc744 \uc601\uad6c \uc0ad\uc81c\ud558\ub294 \uc911\uc785\ub2c8\ub2e4.",
"message.volume.state.migrating": "\ubcfc\ub968\uc774 \ub2e4\ub978 \uc2a4\ud1a0\ub9ac\uc9c0 \ud480\ub85c \ub9c8\uc774\uadf8\ub808\uc774\uc158 \uc911\uc785\ub2c8\ub2e4.",
"message.volume.state.notuploaded": "\ubcfc\ub968 \ud56d\ubaa9\uc774 DB\uc5d0 \uc0dd\uc131\ub418\uc5c8\uc9c0\ub9cc \uc544\uc9c1 \uc5c5\ub85c\ub4dc\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.",
"message.volume.state.ready": "\ubcfc\ub968\uc744 \uc0ac\uc6a9\ud560 \uc900\ube44\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4.",
Expand Down Expand Up @@ -4137,7 +4143,7 @@
"vm.migrate": "\uac00\uc0c1\uba38\uc2e0 \ub9c8\uc774\uadf8\ub808\uc774\uc158",
"vm.move": "\uac00\uc0c1\uba38\uc2e0 \uc774\ub3d9",
"vm.restore": "\uac00\uc0c1\uba38\uc2e0 \ubcf5\uc6d0",
"vm.expunge": "\uac00\uc0c1\uba38\uc2e0 \uc0ad\uc81c",
"vm.expunge": "\uac00\uc0c1\uba38\uc2e0 \uc601\uad6c \uc0ad\uc81c",
"vm.import": "\uac00\uc0c1\uba38\uc2e0 \uac00\uc838\uc624\uae30",
"vm.unmanage": "\uac00\uc0c1\uba38\uc2e0 \uad00\ub9ac\ud574\uc81c",
"vm.recover": "\uac00\uc0c1\uba38\uc2e0 \ubcf5\uad6c",
Expand Down
Loading
Loading