diff --git a/extensions/arc/notebooks/arcDeployment/deploy.postgres.existing.arc.ipynb b/extensions/arc/notebooks/arcDeployment/deploy.postgres.existing.arc.ipynb index eae4b1f6eb..bd04f28227 100644 --- a/extensions/arc/notebooks/arcDeployment/deploy.postgres.existing.arc.ipynb +++ b/extensions/arc/notebooks/arcDeployment/deploy.postgres.existing.arc.ipynb @@ -139,10 +139,10 @@ "volume_size_data_option = f' -vsd {postgres_server_group_volume_size_data}Gi' if postgres_server_group_volume_size_data else \"\"\n", "volume_size_logs_option = f' -vsl {postgres_server_group_volume_size_logs}Gi' if postgres_server_group_volume_size_logs else \"\"\n", "volume_size_backups_option = f' -vsb {postgres_server_group_volume_size_backups}Gi' if postgres_server_group_volume_size_backups else \"\"\n", - "cores_request_option = f' -cr \"{postgres_server_group_cores_request}\"' if postgres_server_group_cores_request else \"\"\n", - "cores_limit_option = f' -cl \"{postgres_server_group_cores_limit}\"' if postgres_server_group_cores_limit else \"\"\n", - "memory_request_option = f' -mr \"{postgres_server_group_memory_request}Gi\"' if postgres_server_group_memory_request else \"\"\n", - "memory_limit_option = f' -ml \"{postgres_server_group_memory_limit}Gi\"' if postgres_server_group_memory_limit else \"\"\n", + "cores_request_option = f' -cr \"c={postgres_server_group_coordinator_cores_request},w={postgres_server_group_workers_cores_request}\"' if postgres_server_group_coordinator_cores_request and postgres_server_group_workers_cores_request else f' -cr \"c={postgres_server_group_coordinator_cores_request}\"' if postgres_server_group_coordinator_cores_request else f' -cr \"w={postgres_server_group_workers_cores_request}\"' if postgres_server_group_workers_cores_request else \"\"\n", + "cores_limit_option = f' -cl \"c={postgres_server_group_coordinator_cores_limit},w={postgres_server_group_workers_cores_limit}\"' if postgres_server_group_coordinator_cores_limit and postgres_server_group_workers_cores_limit else f' -cl \"c={postgres_server_group_coordinator_cores_limit}\"' if postgres_server_group_coordinator_cores_limit else f' -cl \"w={postgres_server_group_workers_cores_limit}\"' if postgres_server_group_workers_cores_limit else \"\"\n", + "memory_request_option = f' -mr \"c={postgres_server_group_coordinator_memory_request}Gi,w={postgres_server_group_workers_memory_request}Gi\"' if postgres_server_group_coordinator_memory_request and postgres_server_group_workers_memory_request else f' -mr \"c={postgres_server_group_coordinator_memory_request}Gi\"' if postgres_server_group_coordinator_memory_request else f' -mr \"w={postgres_server_group_workers_memory_request}Gi\"' if postgres_server_group_workers_memory_request else \"\"\n", + "memory_limit_option = f' -ml \"c={postgres_server_group_coordinator_memory_limit}Gi,w={postgres_server_group_workers_memory_limit}Gi\"' if postgres_server_group_coordinator_memory_limit and postgres_server_group_workers_memory_limit else f' -ml \"c={postgres_server_group_coordinator_memory_limit}Gi\"' if postgres_server_group_coordinator_memory_limit else f' -ml \"w={postgres_server_group_workers_memory_limit}Gi\"' if postgres_server_group_workers_memory_limit else \"\"\n", "\n", "os.environ[\"AZDATA_PASSWORD\"] = os.environ[\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_PASSWORD\"]\n", "cmd = f'azdata arc postgres server create -n {postgres_server_group_name} -scd {postgres_storage_class_data} -scl {postgres_storage_class_logs} -scb {postgres_storage_class_backups}{workers_option}{port_option}{engine_version_option}{extensions_option}{volume_size_data_option}{volume_size_logs_option}{volume_size_backups_option}{cores_request_option}{cores_limit_option}{memory_request_option}{memory_limit_option}'\n", diff --git a/extensions/arc/package.json b/extensions/arc/package.json index 5af8dd7637..1751abcc6b 100644 --- a/extensions/arc/package.json +++ b/extensions/arc/package.json @@ -652,6 +652,128 @@ } ] }, + { + "title": "%arc.postgres.settings.resource.worker.title%", + "fields": [ + { + "label": "%arc.postgres.server.group.workers.cores.request.label%", + "description": "%arc.postgres.server.group.workers.cores.request.description%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_WORKERS_CORES_REQUEST", + "type": "number", + "min": 1, + "validations": [ + { + "type": "<=", + "target": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_WORKERS_CORES_LIMIT", + "description": "%requested.cores.less.than.or.equal.to.cores.limit%" + } + ] + }, + { + "label": "%arc.postgres.server.group.workers.cores.limit.label%", + "description": "%arc.postgres.server.group.workers.cores.limit.description%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_WORKERS_CORES_LIMIT", + "type": "number", + "min": 1, + "validations": [ + { + "type": ">=", + "target": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_WORKERS_CORES_REQUEST", + "description": "%cores.limit.greater.than.or.equal.to.requested.cores%" + } + ] + }, + { + "label": "%arc.postgres.server.group.workers.memory.request.label%", + "description": "%arc.postgres.server.group.workers.memory.request.description%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_WORKERS_MEMORY_REQUEST", + "type": "number", + "min": 0.25, + "validations": [ + { + "type": "<=", + "target": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_WORKERS_MEMORY_LIMIT", + "description": "%requested.memory.less.than.or.equal.to.memory.limit%" + } + ] + }, + { + "label": "%arc.postgres.server.group.workers.memory.limit.label%", + "description": "%arc.postgres.server.group.workers.memory.limit.description%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_WORKERS_MEMORY_LIMIT", + "type": "number", + "min": 0.25, + "validations": [ + { + "type": ">=", + "target": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_WORKERS_MEMORY_REQUEST", + "description": "%memory.limit.greater.than.or.equal.to.requested.memory%" + } + ] + } + ] + }, + { + "title": "%arc.postgres.settings.resource.coordinator.title%", + "fields": [ + { + "label": "%arc.postgres.server.group.coordinator.cores.request.label%", + "description": "%arc.postgres.server.group.coordinator.cores.request.description%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_COORDINATOR_CORES_REQUEST", + "type": "number", + "min": 1, + "validations": [ + { + "type": "<=", + "target": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_COORDINATOR_CORES_LIMIT", + "description": "%requested.cores.less.than.or.equal.to.cores.limit%" + } + ] + }, + { + "label": "%arc.postgres.server.group.coordinator.cores.limit.label%", + "description": "%arc.postgres.server.group.coordinator.cores.limit.description%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_COORDINATOR_CORES_LIMIT", + "type": "number", + "min": 1, + "validations": [ + { + "type": ">=", + "target": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_COORDINATOR_CORES_REQUEST", + "description": "%cores.limit.greater.than.or.equal.to.requested.cores%" + } + ] + }, + { + "label": "%arc.postgres.server.group.coordinator.memory.request.label%", + "description": "%arc.postgres.server.group.coordinator.memory.request.description%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_COORDINATOR_MEMORY_REQUEST", + "type": "number", + "min": 0.25, + "validations": [ + { + "type": "<=", + "target": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_COORDINATOR_MEMORY_LIMIT", + "description": "%requested.memory.less.than.or.equal.to.memory.limit%" + } + ] + }, + { + "label": "%arc.postgres.server.group.coordinator.memory.limit.label%", + "description": "%arc.postgres.server.group.coordinator.memory.limit.description%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_COORDINATOR_MEMORY_LIMIT", + "type": "number", + "min": 0.25, + "validations": [ + { + "type": ">=", + "target": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_COORDINATOR_MEMORY_REQUEST", + "description": "%memory.limit.greater.than.or.equal.to.requested.memory%" + } + ] + } + ] + }, { "title": "%arc.postgres.settings.storage.title%", "fields": [ @@ -701,67 +823,6 @@ "min": 1 } ] - }, - { - "title": "%arc.postgres.settings.resource.title%", - "fields": [ - { - "label": "%arc.postgres.server.group.cores.request.label%", - "description": "%arc.postgres.server.group.cores.request.description%", - "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_CORES_REQUEST", - "type": "number", - "min": 1, - "validations": [ - { - "type": "<=", - "target": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_CORES_LIMIT", - "description": "%requested.cores.less.than.or.equal.to.cores.limit%" - } - ] - }, - { - "label": "%arc.postgres.server.group.cores.limit.label%", - "description": "%arc.postgres.server.group.cores.limit.description%", - "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_CORES_LIMIT", - "type": "number", - "min": 1, - "validations": [ - { - "type": ">=", - "target": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_CORES_REQUEST", - "description": "%cores.limit.greater.than.or.equal.to.requested.cores%" - } - ] - }, - { - "label": "%arc.postgres.server.group.memory.request.label%", - "description": "%arc.postgres.server.group.memory.request.description%", - "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_MEMORY_REQUEST", - "type": "number", - "min": 0.25, - "validations": [ - { - "type": "<=", - "target": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_MEMORY_LIMIT", - "description": "%requested.memory.less.than.or.equal.to.memory.limit%" - } - ] - }, - { - "label": "%arc.postgres.server.group.memory.limit.label%", - "description": "%arc.postgres.server.group.memory.limit.description%", - "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_MEMORY_LIMIT", - "type": "number", - "min": 0.25, - "validations": [ - { - "type": ">=", - "target": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_MEMORY_REQUEST", - "description": "%memory.limit.greater.than.or.equal.to.requested.memory%" - } - ] - } - ] } ] } diff --git a/extensions/arc/package.nls.json b/extensions/arc/package.nls.json index bb5ad23635..14067db4d0 100644 --- a/extensions/arc/package.nls.json +++ b/extensions/arc/package.nls.json @@ -111,7 +111,8 @@ "arc.postgres.wizard.title": "Deploy an Azure Arc-enabled PostgreSQL Hyperscale server group (Preview)", "arc.postgres.wizard.page1.title": "Provide Azure enabled PostgreSQL Hyperscale server group parameters", "arc.postgres.settings.section.title": "General settings", - "arc.postgres.settings.resource.title": "Resource settings", + "arc.postgres.settings.resource.worker.title": "Worker Nodes Compute Configuration", + "arc.postgres.settings.resource.coordinator.title": "Coordinator Node Compute Configuration", "arc.postgres.settings.storage.title": "Storage settings", "arc.postgres.server.group.name": "Server group name", "arc.postgres.server.group.name.validation.description": "Server group name must consist of lower case alphanumeric characters or '-', start with a letter, end with an alphanumeric character, and be 11 characters or fewer in length.", @@ -127,14 +128,22 @@ "arc.postgres.server.group.volume.size.logs.description": "The size of the storage volume to be used for logs in GB.", "arc.postgres.server.group.volume.size.backups.label": "Volume Size GB (Backups)", "arc.postgres.server.group.volume.size.backups.description": "The size of the storage volume to be used for backups in GB.", - "arc.postgres.server.group.cores.request.label": "CPU request (cores per node)", - "arc.postgres.server.group.cores.request.description": "The minimum number of CPU cores that must be available per node to schedule the service. Fractional cores are supported.", - "arc.postgres.server.group.cores.limit.label": "CPU limit (cores per node)", - "arc.postgres.server.group.cores.limit.description": "The maximum number of CPU cores for the Postgres instance that can be used per node. Fractional cores are supported.", - "arc.postgres.server.group.memory.request.label": "Memory request (GB per node)", - "arc.postgres.server.group.memory.request.description": "The memory request of the Postgres instance per node in GB.", - "arc.postgres.server.group.memory.limit.label": "Memory limit (GB per node)", - "arc.postgres.server.group.memory.limit.description": "The memory limit of the Postgres instance per node in GB.", + "arc.postgres.server.group.workers.cores.request.label": "CPU request (cores per node)", + "arc.postgres.server.group.workers.cores.request.description": "The minimum number of CPU cores that must be available per node to schedule the service. Fractional cores are supported.", + "arc.postgres.server.group.workers.cores.limit.label": "CPU limit (cores per node)", + "arc.postgres.server.group.workers.cores.limit.description": "The maximum number of CPU cores for the Postgres instance that can be used per node. Fractional cores are supported.", + "arc.postgres.server.group.workers.memory.request.label": "Memory request (GB per node)", + "arc.postgres.server.group.workers.memory.request.description": "The memory request of the Postgres instance per node in GB.", + "arc.postgres.server.group.workers.memory.limit.label": "Memory limit (GB per node)", + "arc.postgres.server.group.workers.memory.limit.description": "The memory limit of the Postgres instance per node in GB.", + "arc.postgres.server.group.coordinator.cores.request.label": "CPU request", + "arc.postgres.server.group.coordinator.cores.request.description": "The minimum number of CPU cores that must be available on the coordinator node to schedule the service. Fractional cores are supported.", + "arc.postgres.server.group.coordinator.cores.limit.label": "CPU limit", + "arc.postgres.server.group.coordinator.cores.limit.description": "The maximum number of CPU cores for the Postgres instance that can be used on the coordinator node. Fractional cores are supported.", + "arc.postgres.server.group.coordinator.memory.request.label": "Memory request (GB)", + "arc.postgres.server.group.coordinator.memory.request.description": "The memory request of the Postgres instance on the coordinator node in GB.", + "arc.postgres.server.group.coordinator.memory.limit.label": "Memory limit (GB)", + "arc.postgres.server.group.coordinator.memory.limit.description": "The memory limit of the Postgres instance on the coordinator node in GB.", "arc.agreement": "I accept {0} and {1}.", "arc.agreement.sql.terms.conditions": "Azure SQL managed instance - Azure Arc terms and conditions", "arc.agreement.postgres.terms.conditions": "Azure Arc-enabled PostgreSQL Hyperscale terms and conditions",