Skip to content

Commit 7600a38

Browse files
authored
add build pool size parameter (#37)
1 parent c7c6499 commit 7600a38

File tree

5 files changed

+64
-5
lines changed

5 files changed

+64
-5
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# --------------------------------------------------------------------------------------------
2+
# Copyright (c) Microsoft Corporation. All rights reserved.
3+
# Licensed under the MIT License. See License.txt in the project root for license information.
4+
# --------------------------------------------------------------------------------------------
5+
6+
# pylint: disable=too-few-public-methods, unused-argument, redefined-builtin
7+
8+
from .vendored_sdks.appplatform.v2022_01_01_preview import models as models_20220101preview
9+
10+
DEFAULT_BUILD_SERVICE_NAME = "default"
11+
DEFAULT_BUILD_AGENT_POOL_NAME = "default"
12+
13+
14+
def _update_default_build_agent_pool(cmd, client, resource_group, name, build_pool_size=None):
15+
if build_pool_size is not None:
16+
build_properties = models_20220101preview.BuildServiceAgentPoolProperties(
17+
pool_size=models_20220101preview.BuildServiceAgentPoolSizeProperties(
18+
name=build_pool_size))
19+
agent_pool_resource = models_20220101preview.BuildServiceAgentPoolResource(
20+
properties=build_properties)
21+
client.build_service_agent_pool.begin_update_put(
22+
resource_group, name, DEFAULT_BUILD_SERVICE_NAME, DEFAULT_BUILD_AGENT_POOL_NAME, agent_pool_resource)

src/spring-cloud/azext_spring_cloud/_enterprise.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ def _queue_build(cmd, client, resource_group, service, name, relative_path, buil
274274
try:
275275
return client.build_service.create_or_update_build(resource_group,
276276
service,
277-
builder,
277+
DEFAULT_BUILD_SERVICE_NAME,
278278
name,
279279
build).properties.triggered_build_result.id
280280
except (AttributeError, CloudError) as e:

src/spring-cloud/azext_spring_cloud/_params.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
validate_buildpacks_binding_properties,
1919
validate_buildpacks_binding_secrets, only_support_enterprise,
2020
validate_buildpacks_binding_not_exist, validate_buildpacks_binding_exist,
21-
validate_git_uri, validate_acs_patterns)
21+
validate_git_uri, validate_acs_patterns, validate_builder,
22+
validate_build_pool_size)
2223
from ._app_validator import (fulfill_deployment_param, active_deployment_exist, active_deployment_exist_under_app, ensure_not_active_deployment)
2324
from ._utils import ApiType
2425

@@ -78,6 +79,12 @@ def load_arguments(self, _):
7879
"--app-insights-key or --app-insights, "
7980
"will create a new Application Insights instance in the same resource group.",
8081
validator=validate_tracing_parameters_asc_create)
82+
c.argument('build_pool_size',
83+
arg_type=get_enum_type(['S1', 'S2', 'S3', 'S4', 'S5']),
84+
validator=validate_build_pool_size,
85+
default='S1',
86+
is_preview=True,
87+
help='Only support in enterprise tier now. Size of build agent pool.')
8188

8289
with self.argument_context('spring-cloud update') as c:
8390
c.argument('sku', arg_type=get_enum_type(['Basic', 'Standard', 'Enterprise']), validator=validate_sku, help='Name of SKU.')
@@ -104,6 +111,10 @@ def load_arguments(self, _):
104111
deprecate_info=c.deprecate(target='az spring-cloud update --disable-app-insights',
105112
redirect='az spring-cloud app-insights update --disable',
106113
hide=True))
114+
c.argument('build_pool_size',
115+
arg_type=get_enum_type(['S1', 'S2', 'S3', 'S4', 'S5']),
116+
is_preview=True,
117+
help='Only support in enterprise tier now. Size of build agent pool.')
107118

108119
for scope in ['spring-cloud create', 'spring-cloud update']:
109120
with self.argument_context(scope) as c:
@@ -237,7 +248,7 @@ def prepare_logs_argument(c):
237248
'main_entry', options_list=[
238249
'--main-entry', '-m'], help="A string containing the path to the .NET executable relative to zip root.")
239250
c.argument(
240-
'builder', help="The name of builder.", default="default")
251+
'builder', help="Only support in enterprise tier now. The name of builder.", default="default", validator=validate_builder, is_preview=True)
241252
c.argument(
242253
'target_module', help='Child module to be deployed, required for multiple jar packages built from source code.')
243254
c.argument(

src/spring-cloud/azext_spring_cloud/_validators_enterprise.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
from ._util_enterprise import (
1818
is_enterprise_tier, get_client
1919
)
20+
from .vendored_sdks.appplatform.v2022_01_01_preview.models import _app_platform_management_client_enums as AppPlatformEnums
21+
from ._validators import _parse_sku_name
2022

2123

2224
logger = get_logger(__name__)
@@ -121,3 +123,18 @@ def validate_buildpacks_binding_exist(cmd, namespace):
121123
namespace.service,
122124
DEFAULT_BUILD_SERVICE_NAME,
123125
namespace.name)
126+
127+
128+
def validate_builder(cmd, namespace):
129+
client = get_client(cmd)
130+
builder = client.build_service_builder.get(namespace.resource_group,
131+
namespace.service,
132+
DEFAULT_BUILD_SERVICE_NAME,
133+
namespace.builder)
134+
if builder.properties.provisioning_state != AppPlatformEnums.BuilderProvisioningState.SUCCEEDED:
135+
raise CLIError('The provision state of builder {} is not succeeded, please choose a succeeded builder.'
136+
.format(namespace.builder))
137+
138+
def validate_build_pool_size(namespace):
139+
if _parse_sku_name(namespace.sku) != 'enterprise':
140+
namespace.build_pool_size = None

src/spring-cloud/azext_spring_cloud/custom.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from .vendored_sdks.appplatform.v2020_11_01_preview import models as models_20201101preview
2323
from .vendored_sdks.appplatform.v2021_06_01_preview import models as models_20210601preview
2424
from .vendored_sdks.appplatform.v2021_09_01_preview import models as models_20210901preview
25+
from .vendored_sdks.appplatform.v2022_01_01_preview import models as models_20220101preview
2526
from .vendored_sdks.appplatform.v2020_07_01.models import _app_platform_management_client_enums as AppPlatformEnums
2627
from .vendored_sdks.appplatform.v2020_11_01_preview import (
2728
AppPlatformManagementClient as AppPlatformManagementClient_20201101preview
@@ -48,6 +49,7 @@
4849
import json
4950
import base64
5051
from collections import defaultdict
52+
from ._build_service import _update_default_build_agent_pool
5153

5254
logger = get_logger(__name__)
5355
DEFAULT_DEPLOYMENT_NAME = "default"
@@ -60,13 +62,14 @@
6062
DELETE_PRODUCTION_DEPLOYMENT_WARNING = "You are going to delete production deployment, the app will be inaccessible after this operation."
6163
LOG_RUNNING_PROMPT = "This command usually takes minutes to run. Add '--verbose' parameter if needed."
6264

65+
DEFAULT_BUILD_SERVICE_NAME = "default"
6366

6467
def spring_cloud_create(cmd, client, resource_group, name, location=None,
6568
vnet=None, service_runtime_subnet=None, app_subnet=None, reserved_cidr_range=None,
6669
service_runtime_network_resource_group=None, app_network_resource_group=None,
6770
app_insights_key=None, app_insights=None, sampling_rate=None,
6871
disable_app_insights=None, enable_java_agent=None,
69-
sku=None, tags=None, no_wait=False):
72+
sku=None, tags=None, build_pool_size=None, no_wait=False):
7073
"""
7174
If app_insights_key, app_insights and disable_app_insights are all None,
7275
will still create an application insights and enable application insights.
@@ -101,6 +104,9 @@ def spring_cloud_create(cmd, client, resource_group, name, location=None,
101104
_update_application_insights_asc_create(cmd, resource_group, name, location,
102105
app_insights_key, app_insights, sampling_rate,
103106
disable_app_insights, no_wait)
107+
_update_default_build_agent_pool(
108+
cmd, client, resource_group, name, build_pool_size)
109+
104110
return poller
105111

106112

@@ -127,7 +133,7 @@ def _update_application_insights_asc_create(cmd, resource_group, name, location,
127133

128134

129135
def spring_cloud_update(cmd, client, resource_group, name, app_insights_key=None, app_insights=None,
130-
disable_app_insights=None, sku=None, tags=None, no_wait=False):
136+
disable_app_insights=None, sku=None, tags=None, build_pool_size=None, no_wait=False):
131137
"""
132138
TODO (jiec) app_insights_key, app_insights and disable_app_insights are marked as deprecated.
133139
Will be decommissioned in future releases.
@@ -149,6 +155,9 @@ def spring_cloud_update(cmd, client, resource_group, name, app_insights_key=None
149155
_update_application_insights_asc_update(cmd, resource_group, name, location,
150156
app_insights_key, app_insights, disable_app_insights, no_wait)
151157

158+
_update_default_build_agent_pool(
159+
cmd, client, resource_group, name, build_pool_size)
160+
152161
# update service tags
153162
if tags is not None:
154163
updated_resource.tags = tags

0 commit comments

Comments
 (0)