diff --git a/extensions/arc/notebooks/arcDeployment/deploy.postgres.existing.arc.ipynb b/extensions/arc/notebooks/arcDeployment/deploy.postgres.existing.arc.ipynb index 2fca7b8679..aa9b329866 100644 --- a/extensions/arc/notebooks/arcDeployment/deploy.postgres.existing.arc.ipynb +++ b/extensions/arc/notebooks/arcDeployment/deploy.postgres.existing.arc.ipynb @@ -133,6 +133,11 @@ "source": [ "server_group_workers = os.environ[\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_WORKERS\"]\n", "server_group_port = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_PORT\")\n", + "server_group_engine_version = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_ENGINE_VERSION\")\n", + "server_group_extensions = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_EXTENSIONS\")\n", + "server_group_volume_size_data = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_VOLUME_SIZE_DATA\")\n", + "server_group_volume_size_logs = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_VOLUME_SIZE_LOGS\")\n", + "server_group_volume_size_backups = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_VOLUME_SIZE_BACKUPS\")\n", "server_group_cores_request = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_CORES_REQUEST\")\n", "server_group_cores_limit = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_CORES_LIMIT\")\n", "server_group_memory_request = os.environ.get(\"AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_MEMORY_REQUEST\")\n", @@ -161,13 +166,18 @@ "\n", "workers_option = f' -w {server_group_workers}' if server_group_workers else \"\"\n", "port_option = f' --port \"{server_group_port}\"' if server_group_port else \"\"\n", + "engine_version_option = f' -ev {server_group_engine_version}' if server_group_engine_version else \"\"\n", + "extensions_option = f' --extensions \"{server_group_extensions}\"' if server_group_extensions else \"\"\n", + "volume_size_data_option = f' -vsd {server_group_volume_size_data}Gi' if server_group_volume_size_data else \"\"\n", + "volume_size_logs_option = f' -vsl {server_group_volume_size_logs}Gi' if server_group_volume_size_logs else \"\"\n", + "volume_size_backups_option = f' -vsb {server_group_volume_size_backups}Gi' if server_group_volume_size_backups else \"\"\n", "cores_request_option = f' -cr \"{server_group_cores_request}\"' if server_group_cores_request else \"\"\n", "cores_limit_option = f' -cl \"{server_group_cores_limit}\"' if server_group_cores_limit else \"\"\n", "memory_request_option = f' -mr \"{server_group_memory_request}Mi\"' if server_group_memory_request else \"\"\n", "memory_limit_option = f' -ml \"{server_group_memory_limit}Mi\"' if server_group_memory_limit else \"\"\n", "\n", "os.environ[\"AZDATA_PASSWORD\"] = postgres_password\n", - "cmd = f'azdata arc postgres server create -n {server_group_name} -scd {postgres_storage_class_data} -scl {postgres_storage_class_logs} -scb {postgres_storage_class_backups}{workers_option}{port_option}{cores_request_option}{cores_limit_option}{memory_request_option}{memory_limit_option}'\n", + "cmd = f'azdata arc postgres server create -n {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", "out=run_command()" ], "metadata": { diff --git a/extensions/arc/package.json b/extensions/arc/package.json index 2bbb215f73..13ba8a17c2 100644 --- a/extensions/arc/package.json +++ b/extensions/arc/package.json @@ -745,6 +745,24 @@ "min": 1, "max": 65535 }, + { + "label": "%arc.postgres.server.group.engine.version%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_ENGINE_VERSION", + "type": "options", + "options" : ["11","12"], + "defaultValue": "12" + }, + { + "label": "%arc.postgres.server.group.extensions.label%", + "description": "%arc.postgres.server.group.extensions.description%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_EXTENSIONS", + "type": "text" + } + ] + }, + { + "title": "%arc.postgres.settings.storage.title%", + "fields": [ { "label": "%arc.storage-class.data.label%", "description": "%arc.postgres.storage-class.data.description%", @@ -752,6 +770,14 @@ "type": "kube_storage_class", "required": true }, + { + "label": "%arc.postgres.server.group.volume.size.data.label%", + "description": "%arc.postgres.server.group.volume.size.data.description%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_VOLUME_SIZE_DATA", + "type": "number", + "defaultValue": "5", + "min": 1 + }, { "label": "%arc.storage-class.logs.label%", "description": "%arc.postgres.storage-class.logs.description%", @@ -759,12 +785,28 @@ "type": "kube_storage_class", "required": true }, + { + "label": "%arc.postgres.server.group.volume.size.logs.label%", + "description": "%arc.postgres.server.group.volume.size.logs.description%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_VOLUME_SIZE_LOGS", + "type": "number", + "defaultValue": "5", + "min": 1 + }, { "label": "%arc.storage-class.backups.label%", "description": "%arc.postgres.storage-class.backups.description%", "variableName": "AZDATA_NB_VAR_POSTGRES_STORAGE_CLASS_BACKUPS", "type": "kube_storage_class", "required": true + }, + { + "label": "%arc.postgres.server.group.volume.size.backups.label%", + "description": "%arc.postgres.server.group.volume.size.backups.description%", + "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_VOLUME_SIZE_BACKUPS", + "type": "number", + "defaultValue": "5", + "min": 1 } ] }, @@ -773,27 +815,29 @@ "fields": [ { "label": "%arc.postgres.server.group.cores.request%", + "description": "%arc.postgres.server.group.cores.description%", "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_CORES_REQUEST", "type": "number", - "min": 0 + "min": 1 }, { "label": "%arc.postgres.server.group.cores.limit%", + "description": "%arc.postgres.server.group.cores.description%", "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_CORES_LIMIT", "type": "number", - "min": 0 + "min": 1 }, { "label": "%arc.postgres.server.group.memory.request%", "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_MEMORY_REQUEST", "type": "number", - "min": 0 + "min": 256 }, { "label": "%arc.postgres.server.group.memory.limit%", "variableName": "AZDATA_NB_VAR_POSTGRES_SERVER_GROUP_MEMORY_LIMIT", "type": "number", - "min": 0 + "min": 256 } ] } @@ -803,7 +847,7 @@ }, "requiredTools": [ { - "name": "azure-cli" + "name": "kubectl" }, { "name": "azdata", diff --git a/extensions/arc/package.nls.json b/extensions/arc/package.nls.json index 53a2f83107..1610e765d4 100644 --- a/extensions/arc/package.nls.json +++ b/extensions/arc/package.nls.json @@ -70,7 +70,7 @@ "resource.type.arc.sql.display.name": "Azure SQL managed instance - Azure Arc (preview)", - "resource.type.arc.postgres.display.name": "PostgreSQL server groups - Azure Arc (preview)", + "resource.type.arc.postgres.display.name": "PostgreSQL Hyperscale server groups - Azure Arc (preview)", "resource.type.arc.sql.description": "Managed SQL Instance service for app developers in a customer-managed environment", "resource.type.arc.postgres.description": "Deploy PostgreSQL server groups into an Azure Arc environment", "resource.type.picker.display.name": "Resource Type", @@ -100,12 +100,23 @@ "arc.postgres.new.dialog.title": "Deploy a PostgreSQL server group on Azure Arc (preview)", "arc.postgres.settings.section.title": "PostgreSQL server group settings", "arc.postgres.settings.resource.title": "PostgreSQL server group resource settings", + "arc.postgres.settings.storage.title": "PostgreSQL server group 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 10 characters or fewer in length.", "arc.postgres.server.group.workers": "Number of workers", "arc.postgres.server.group.port": "Port", + "arc.postgres.server.group.engine.version": "Engine Version", + "arc.postgres.server.group.extensions.label": "Extensions", + "arc.postgres.server.group.extensions.description": "A comma-separated list of the Postgres extensions that should be loaded on startup. Please refer to the postgres documentation for supported values.", + "arc.postgres.server.group.volume.size.data.label": "Volume Size GB (Data)", + "arc.postgres.server.group.volume.size.data.description": "Volume size for the storage class to be used for data", + "arc.postgres.server.group.volume.size.logs.label": "Volume Size GB (Logs)", + "arc.postgres.server.group.volume.size.logs.description": "Volume size for the storage class to be used for logs", + "arc.postgres.server.group.volume.size.backups.label": "Volume Size GB (Backups)", + "arc.postgres.server.group.volume.size.backups.description": "Volume size for the storage class to be used for backups", "arc.postgres.server.group.cores.request": "Min CPU cores (per node) to reserve", "arc.postgres.server.group.cores.limit": "Max CPU cores (per node) to allow", + "arc.postgres.server.group.cores.description": "Fractional cores are supported", "arc.postgres.server.group.memory.request": "Min memory MB (per node) to reserve", "arc.postgres.server.group.memory.limit": "Max memory MB (per node) to allow", "arc.agreement": "I accept {0}, {1} and {2}.",