Skip to content

Commit

Permalink
Merge pull request #1 from Sneezry/zlhe/ent-custom-domain
Browse files Browse the repository at this point in the history
  • Loading branch information
Sneezry authored Nov 4, 2021
2 parents 2133e70 + 0d8d21b commit bd186fe
Show file tree
Hide file tree
Showing 17 changed files with 288 additions and 246 deletions.
21 changes: 13 additions & 8 deletions src/spring-cloud/azext_spring_cloud/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ def load_command_table(self, _):
client_factory=cf_spring_cloud_20210901preview
)

certificate_routing_util = CliCommandType(
operations_tmpl='azext_spring_cloud.tier_routing_certificate#{}',
client_factory=cf_spring_cloud_20210901preview
)

service_registry_cmd_group = CliCommandType(
operations_tmpl='azext_spring_cloud.service_registry#{}',
client_factory=cf_spring_cloud_enterprise
Expand Down Expand Up @@ -93,6 +98,7 @@ def load_command_table(self, _):
g.custom_command('start', 'app_start', supports_no_wait=True)
g.custom_command('stop', 'app_stop', supports_no_wait=True)
g.custom_command('restart', 'app_restart', supports_no_wait=True)
g.custom_command('append-loaded-public-certificate', 'app_append_loaded_public_certificate')

with self.command_group('spring-cloud app', client_factory=cf_spring_cloud_20210601preview,
exception_handler=handle_asc_exception) as g:
Expand All @@ -103,7 +109,6 @@ def load_command_table(self, _):
supports_no_wait=True)
g.custom_command('logs', 'app_tail_log')
g.custom_command('append-persistent-storage', 'app_append_persistent_storage')
g.custom_command('append-loaded-public-certificate', 'app_append_loaded_public_certificate')

with self.command_group('spring-cloud app identity', custom_command_type=app_routing_util,
exception_handler=handle_asc_exception) as g:
Expand Down Expand Up @@ -149,21 +154,21 @@ def load_command_table(self, _):
g.custom_command('remove', 'storage_remove')
g.custom_command('list-persistent-storage', "storage_list_persistent_storage", table_transformer=transform_app_table_output)

with self.command_group('spring-cloud certificate', client_factory=cf_spring_cloud_20210901preview,
with self.command_group('spring-cloud certificate', custom_command_type=certificate_routing_util,
exception_handler=handle_asc_exception) as g:
g.custom_command('add', 'certificate_add')
g.custom_show_command('show', 'certificate_show', table_transformer=transform_spring_cloud_certificate_output)
g.custom_command('list', 'certificate_list', table_transformer=transform_spring_cloud_certificate_output)
g.custom_command('remove', 'certificate_remove')
g.custom_command('list-reference-app', 'certificate_list_reference_app', table_transformer=transform_app_table_output)

with self.command_group('spring-cloud app custom-domain', client_factory=cf_spring_cloud,
with self.command_group('spring-cloud app custom-domain', custom_command_type=app_routing_util,
exception_handler=handle_asc_exception) as g:
g.custom_command('bind', 'domain_bind')
g.custom_show_command('show', 'domain_show', table_transformer=transform_spring_cloud_custom_domain_output)
g.custom_command('list', 'domain_list', table_transformer=transform_spring_cloud_custom_domain_output)
g.custom_command('update', 'domain_update')
g.custom_command('unbind', 'domain_unbind')
g.custom_command('bind', 'app_domain_bind')
g.custom_show_command('show', 'app_domain_show', table_transformer=transform_spring_cloud_custom_domain_output)
g.custom_command('list', 'app_domain_list', table_transformer=transform_spring_cloud_custom_domain_output)
g.custom_command('update', 'app_domain_update')
g.custom_command('unbind', 'app_domain_unbind')

with self.command_group('spring-cloud app-insights',
client_factory=cf_spring_cloud_20201101preview,
Expand Down
24 changes: 12 additions & 12 deletions src/spring-cloud/azext_spring_cloud/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -911,7 +911,7 @@ def app_unset_deployment(cmd, client, resource_group, service, name):
return client.apps.begin_update(resource_group, service, name, app_resource)


def app_append_loaded_public_certificate(cmd, client, resource_group, service, name, certificate_name, load_trust_store):
def app_append_loaded_public_certificate(cmd, client, resource_group, service, name, certificate_name, load_trust_store, models=None):
app_resource = client.apps.get(resource_group, service, name)
certificate_resource = client.certificates.get(resource_group, service, certificate_name)
certificate_resource_id = certificate_resource.id
Expand All @@ -925,7 +925,7 @@ def app_append_loaded_public_certificate(cmd, client, resource_group, service, n
if loaded_certificate.resource_id == certificate_resource.id:
raise ClientRequestError("This certificate has already been loaded.")

loaded_certificates.append(models_20210901preview.
loaded_certificates.append(models.
LoadedCertificate(resource_id=certificate_resource_id,
load_trust_store=load_trust_store))

Expand Down Expand Up @@ -1835,7 +1835,7 @@ def storage_list_persistent_storage(client, resource_group, service, name):
return reference_apps


def certificate_add(cmd, client, resource_group, service, name, only_public_cert=None,
def certificate_add(cmd, client, resource_group, service, name, models=None, only_public_cert=None,
vault_uri=None, vault_certificate_name=None, public_certificate_file=None):
if vault_uri is None and public_certificate_file is None:
raise InvalidArgumentValueError("One of --vault-uri and --public-certificate-file should be provided")
Expand All @@ -1848,7 +1848,7 @@ def certificate_add(cmd, client, resource_group, service, name, only_public_cert
if vault_uri is not None:
if only_public_cert is None:
only_public_cert = False
properties = models_20210901preview.KeyVaultCertificateProperties(
properties = models.KeyVaultCertificateProperties(
type="KeyVaultCertificate",
vault_uri=vault_uri,
key_vault_cert_name=vault_certificate_name,
Expand All @@ -1864,14 +1864,14 @@ def certificate_add(cmd, client, resource_group, service, name, only_public_cert
raise FileOperationError('Failed to decode file {} - unknown decoding'.format(public_certificate_file))
else:
raise FileOperationError("public_certificate_file %s could not be found", public_certificate_file)
properties = models_20210901preview.ContentCertificateProperties(
properties = models.ContentCertificateProperties(
type="ContentCertificate",
content=content
)
certificate_resource = models_20210901preview.CertificateResource(properties=properties)
certificate_resource = models.CertificateResource(properties=properties)

def callback(pipeline_response, deserialized, headers):
return models_20210901preview.CertificateResource.deserialize(json.loads(pipeline_response.http_response.text()))
return models.CertificateResource.deserialize(json.loads(pipeline_response.http_response.text()))

return client.certificates.begin_create_or_update(
resource_group_name=resource_group,
Expand Down Expand Up @@ -1920,7 +1920,7 @@ def certificate_list_reference_app(cmd, client, resource_group, service, name):
return reference_apps


def domain_bind(cmd, client, resource_group, service, app,
def app_domain_bind(cmd, client, models, resource_group, service, app,
domain_name,
certificate=None,
enable_end_to_end_tls=None):
Expand Down Expand Up @@ -1956,17 +1956,17 @@ def _update_app_e2e_tls(cmd, resource_group, service, app, enable_end_to_end_tls
return poller.result()


def domain_show(cmd, client, resource_group, service, app, domain_name):
def app_domain_show(cmd, client, resource_group, service, app, domain_name):
_check_active_deployment_exist(client, resource_group, service, app)
return client.custom_domains.get(resource_group, service, app, domain_name)


def domain_list(cmd, client, resource_group, service, app):
def app_domain_list(cmd, client, resource_group, service, app):
_check_active_deployment_exist(client, resource_group, service, app)
return client.custom_domains.list(resource_group, service, app)


def domain_update(cmd, client, resource_group, service, app,
def app_domain_update(cmd, client, models, resource_group, service, app,
domain_name,
certificate=None,
enable_end_to_end_tls=None):
Expand All @@ -1986,7 +1986,7 @@ def domain_update(cmd, client, resource_group, service, app,
domain_name, custom_domain_resource)


def domain_unbind(cmd, client, resource_group, service, app, domain_name):
def app_domain_unbind(cmd, client, resource_group, service, app, domain_name):
client.custom_domains.get(resource_group, service, app, domain_name)
return client.custom_domains.begin_delete(resource_group, service, app, domain_name)

Expand Down
65 changes: 59 additions & 6 deletions src/spring-cloud/azext_spring_cloud/tier_routing_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,16 @@
app_start as app_start_standard, app_stop as app_stop_standard,
app_identity_assign as identity_assign,
app_identity_remove as identity_remove,
app_identity_show as identity_show)
app_identity_show as identity_show,
app_domain_bind as domain_bind,
app_domain_show as domain_show,
app_domain_list as domain_list,
app_domain_update as domain_update,
app_domain_unbind as domain_unbind,
app_append_loaded_public_certificate as append_loaded_public_certificate)
from knack.log import get_logger
from .vendored_sdks.appplatform.v2022_05_01_preview import models as models_20220501preview
from .vendored_sdks.appplatform.v2021_06_01_preview import models as models_20210601preview
from .vendored_sdks.appplatform.v2021_09_01_preview import models as models_20210901preview

logger = get_logger(__name__)

Expand Down Expand Up @@ -143,6 +149,7 @@ def app_scale(cmd, client, resource_group, service, name,
def app_deploy(cmd, client, resource_group, service, name,
version=None,
deployment=None,
disable_validation=None,
artifact_path=None,
builder=None,
target_module=None,
Expand All @@ -160,20 +167,20 @@ def app_deploy(cmd, client, resource_group, service, name,
else:
# config_file_patterns not support
return app_deploy_standard(cmd, client, resource_group, service, name,
version, deployment, artifact_path, target_module, runtime_version,
version, deployment, disable_validation, artifact_path, target_module, runtime_version,
jvm_options, main_entry, env, no_wait)


def app_identity_assign(cmd, client, resource_group, service, name, role=None, scope=None):
models = models_20210601preview
models = models_20210901preview
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
models = models_20220501preview
return identity_assign(cmd, client, models, resource_group, service, name, role, scope)


def app_identity_remove(cmd, client, resource_group, service, name):
models = models_20210601preview
models = models_20210901preview
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
models = models_20220501preview
Expand All @@ -182,4 +189,50 @@ def app_identity_remove(cmd, client, resource_group, service, name):

def app_identity_show(cmd, client, resource_group, service, name):
client = get_client(cmd) if is_enterprise_tier(cmd, resource_group, service) else client
return identity_show(cmd, client, resource_group, service, name)
return identity_show(cmd, client, resource_group, service, name)


def app_domain_bind(cmd, client, resource_group, service, app, domain_name,
certificate=None,
enable_end_to_end_tls=None):
models = models_20210901preview
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
models = models_20220501preview
return domain_bind(cmd, client, models, resource_group, service, app, domain_name, certificate, enable_end_to_end_tls)


def app_domain_show(cmd, client, resource_group, service, app, domain_name):
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
return domain_show(cmd, client, resource_group, service, app, domain_name)


def app_domain_list(cmd, client, resource_group, service, app):
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
return domain_list(cmd, client, resource_group, service, app)


def app_domain_update(cmd, client, resource_group, service, app, domain_name,
certificate=None,
enable_end_to_end_tls=None):
models = models_20210901preview
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
models = models_20220501preview
return domain_update(cmd, client, models, resource_group, service, app, domain_name, certificate, enable_end_to_end_tls)


def app_domain_unbind(cmd, client, resource_group, service, app, domain_name):
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
return domain_unbind(cmd, client, resource_group, service, app, domain_name)


def app_append_loaded_public_certificate(cmd, client, resource_group, service, name, certificate_name, load_trust_store):
models = models_20210901preview
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
models = models_20220501preview
return append_loaded_public_certificate(cmd, client, resource_group, service, name, certificate_name, load_trust_store, models)
51 changes: 51 additions & 0 deletions src/spring-cloud/azext_spring_cloud/tier_routing_certificate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------

# pylint: disable=wrong-import-order
from ._util_enterprise import (is_enterprise_tier, get_client)
from .custom import (certificate_add as custom_certificate_add,
certificate_show as custom_certificate_show,
certificate_list as custom_certificate_list,
certificate_remove as custom_certificate_remove,
certificate_list_reference_app as custom_certificate_list_reference_app)
from knack.log import get_logger
from .vendored_sdks.appplatform.v2022_05_01_preview import models as models_20220501preview
from .vendored_sdks.appplatform.v2021_09_01_preview import models as models_20210901preview

logger = get_logger(__name__)


def certificate_add(cmd, client, resource_group, service, name, only_public_cert=None,
vault_uri=None, vault_certificate_name=None, public_certificate_file=None):
models = models_20210901preview
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
models = models_20220501preview
return custom_certificate_add(cmd, client, resource_group, service, name, models, only_public_cert,
vault_uri, vault_certificate_name, public_certificate_file)


def certificate_show(cmd, client, resource_group, service, name):
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
return custom_certificate_show(cmd, client, resource_group, service, name)


def certificate_list(cmd, client, resource_group, service, certificate_type=None):
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
return custom_certificate_list(cmd, client, resource_group, service, certificate_type)


def certificate_remove(cmd, client, resource_group, service, name):
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
return custom_certificate_remove(cmd, client, resource_group, service, name)


def certificate_list_reference_app(cmd, client, resource_group, service, name):
if is_enterprise_tier(cmd, resource_group, service):
client = get_client(cmd)
return custom_certificate_list_reference_app(cmd, client, resource_group, service, name)
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ def deployment_delete(cmd, client, resource_group, service, app, name):
def deployment_create(cmd, client, resource_group, service, app, name,
skip_clone_settings=False,
version=None,
disable_validation=None,
artifact_path=None,
builder=None,
target_module=None,
Expand All @@ -55,5 +56,5 @@ def deployment_create(cmd, client, resource_group, service, app, name,
jvm_options, cpu, memory, instance_count, env, config_file_patterns, no_wait)
else:
return deployment_create_standard(cmd, client, resource_group, service, app, name,
skip_clone_settings, version, artifact_path, target_module, runtime_version,
skip_clone_settings, version, disable_validation, artifact_path, target_module, runtime_version,
jvm_options, main_entry, cpu, memory, instance_count, env, no_wait)
Loading

0 comments on commit bd186fe

Please sign in to comment.