Skip to content

Commit

Permalink
Service Fabric Application commands (#10666)
Browse files Browse the repository at this point in the history
[Service Fabric] Add new commands to manage appliaction and services.
    - sf application-type
        - list
        - delete
        - show
        - create
    - sf application-type version
        - list
        - delete
        - show
        - create
    - sf application
        - list
        - delete
        - show
        - create
        - update
    - sf service
        - list
        - delete
        - show
        - create
  • Loading branch information
a-santamaria authored Jan 30, 2020
1 parent 9cdb8e2 commit 1715e4b
Show file tree
Hide file tree
Showing 27 changed files with 27,828 additions and 16,475 deletions.
11 changes: 10 additions & 1 deletion azure-cli.pyproj
Original file line number Diff line number Diff line change
Expand Up @@ -654,10 +654,15 @@
<Compile Include="command_modules\azure-cli-role\azure_bdist_wheel.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\commands.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\custom.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\tests\latest\test_sf_commands.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\operations\applications.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\tests\latest\test_util.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\tests\latest\test_sf_application.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\tests\latest\test_sf_cluster.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\_arm_deployment_utils.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\_client_factory.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\_help.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\_params.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\_validators.py" />
<Compile Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\__init__.py" />
<Compile Include="command_modules\azure-cli-servicefabric\setup.py" />
<Compile Include="command_modules\azure-cli-sql\azure\cli\command_modules\sql\commands.py" />
Expand Down Expand Up @@ -1065,8 +1070,10 @@
<Folder Include="command_modules\azure-cli-servicefabric\azure\cli\" />
<Folder Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\" />
<Folder Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\" />
<Folder Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\operations\" />
<Folder Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\template\" />
<Folder Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\template\linux\" />
<Folder Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\template\service\" />
<Folder Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\template\windows\" />
<Folder Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\tests\" />
<Folder Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\tests\latest\" />
Expand Down Expand Up @@ -1337,6 +1344,8 @@
<Content Include="command_modules\azure-cli-role\HISTORY.rst" />
<Content Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\template\linux\parameter.json" />
<Content Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\template\linux\template.json" />
<Content Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\template\service\parameter.json" />
<Content Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\template\service\template.json" />
<Content Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\template\windows\parameter.json" />
<Content Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\template\windows\template.json" />
<Content Include="command_modules\azure-cli-servicefabric\azure\cli\command_modules\servicefabric\tests\policy.json" />
Expand Down
13 changes: 12 additions & 1 deletion azure-cli2017.pyproj
Original file line number Diff line number Diff line change
Expand Up @@ -842,10 +842,15 @@
<Compile Include="azure-cli\azure\cli\command_modules\servicebus\__init__.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\commands.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\custom.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\tests\latest\test_sf_commands.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\operations\applications.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\tests\latest\test_util.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\tests\latest\test_sf_application.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\tests\latest\test_sf_cluster.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\_arm_deployment_utils.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\_client_factory.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\_help.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\_params.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\_validators.py" />
<Compile Include="azure-cli\azure\cli\command_modules\servicefabric\__init__.py" />
<Compile Include="azure-cli\azure\cli\command_modules\signalr\commands.py" />
<Compile Include="azure-cli\azure\cli\command_modules\signalr\custom.py" />
Expand Down Expand Up @@ -1167,9 +1172,13 @@
<Folder Include="azure-cli\azure\cli\command_modules\servicebus\tests\" />
<Folder Include="azure-cli\azure\cli\command_modules\servicebus\tests\latest\" />
<Folder Include="azure-cli\azure\cli\command_modules\servicefabric\" />
<Folder Include="azure-cli\azure\cli\command_modules\servicefabric\operations\" />
<Folder Include="azure-cli\azure\cli\command_modules\servicefabric\template\" />
<Folder Include="azure-cli\azure\cli\command_modules\servicefabric\template\linux\" />
<Folder Include="azure-cli\azure\cli\command_modules\servicefabric\template\service\" />
<Folder Include="azure-cli\azure\cli\command_modules\servicefabric\template\windows\" />
<Folder Include="azure-cli\azure\cli\command_modules\servicefabric\tests\" />
<Folder Include="azure-cli\azure\cli\command_modules\servicefabric\tests\latest\" />
<Folder Include="azure-cli\azure\cli\command_modules\signalr\" />
<Folder Include="azure-cli\azure\cli\command_modules\signalr\tests\" />
<Folder Include="azure-cli\azure\cli\command_modules\signalr\tests\latest\" />
Expand Down Expand Up @@ -1421,6 +1430,8 @@
<Content Include="azure-cli\azure\cli\command_modules\role\tests\latest\cert.pem" />
<Content Include="azure-cli\azure\cli\command_modules\servicefabric\template\linux\parameter.json" />
<Content Include="azure-cli\azure\cli\command_modules\servicefabric\template\linux\template.json" />
<Content Include="azure-cli\azure\cli\command_modules\servicefabric\template\service\parameter.json" />
<Content Include="azure-cli\azure\cli\command_modules\servicefabric\template\service\template.json" />
<Content Include="azure-cli\azure\cli\command_modules\servicefabric\template\windows\parameter.json" />
<Content Include="azure-cli\azure\cli\command_modules\servicefabric\template\windows\template.json" />
<Content Include="azure-cli\azure\cli\command_modules\servicefabric\tests\policy.json" />
Expand Down
25 changes: 25 additions & 0 deletions src/azure-cli/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,31 @@ Release History
* `az storage remove`: Change `--inlcude` and `--exclude` parameters to `--include-path`, `--include-pattern`, `--exclude-path` and`--exclude-pattern` parameters
* `az storage sync`: Add `--include-pattern`, `--exclude-path` and`--exclude-pattern` parameters

**ServiceFabric**

* Adding new commands to manage appliaction and services.
- sf application-type
- list
- delete
- show
- create
- sf application-type version
- list
- delete
- show
- create
- sf application
- list
- delete
- show
- create
- update
- sf service
- list
- delete
- show
- create

2.0.80
++++++

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------

import datetime

from azure.cli.core.util import CLIError, sdk_no_wait
from azure.cli.core.commands import LongRunningOperation
from azure.cli.core.profiles import ResourceType
from knack.log import get_logger
from ._client_factory import (resource_client_factory)

logger = get_logger(__name__)


def validate_and_deploy_arm_template(cmd, resource_group_name, template, parameters):
suffix = datetime.datetime.now().strftime("%Y%m%d%H%M")
deployment_name = 'AzurePSDeployment-' + suffix

logger.info("Validating the deployment")
validate_result = _deploy_arm_template_core(
cmd, resource_group_name, template, parameters, deployment_name, 'incremental', True)
if validate_result.error is not None:
errors_detailed = _build_detailed_error(validate_result.error, [])
errors_detailed.insert(0, "Error validating template. See below for more information.")
raise CLIError('\n'.join(errors_detailed))
logger.info("Deployment is valid, and begin to deploy")
_deploy_arm_template_core(cmd, resource_group_name, template,
parameters, deployment_name, 'incremental', False)


def _deploy_arm_template_core(cmd,
resource_group_name,
template,
parameters,
deployment_name=None,
mode='incremental',
validate_only=False,
no_wait=False):
DeploymentProperties = cmd.get_models('DeploymentProperties', resource_type=ResourceType.MGMT_RESOURCE_RESOURCES)
properties = DeploymentProperties(
template=template, template_link=None, parameters=parameters, mode=mode)
client = resource_client_factory(cmd.cli_ctx)
if validate_only:
return sdk_no_wait(no_wait, client.deployments.validate, resource_group_name, deployment_name, properties)

deploy_poll = sdk_no_wait(no_wait, client.deployments.create_or_update, resource_group_name,
deployment_name, properties)
result = LongRunningOperation(cmd.cli_ctx)(deploy_poll)
return result


def _build_detailed_error(top_error, output_list):
if output_list:
output_list.append(' Inner Error - Code: "{}" Message: "{}"'.format(top_error.code, top_error.message))
else:
output_list.append('Error - Code: "{}" Message: "{}"'.format(top_error.code, top_error.message))

if top_error.details:
for error in top_error.details:
_build_detailed_error(error, output_list)

return output_list
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,30 @@ def servicefabric_client_factory(cli_ctx, **_):
return get_mgmt_service_client(cli_ctx, ServiceFabricManagementClient)


def servicefabric_fabric_client_factory(cli_ctx, kwargs):
def servicefabric_client_factory_all(cli_ctx, kwargs):
return servicefabric_client_factory(cli_ctx, **kwargs)


def servicefabric_clusters_client_factory(cli_ctx, kwargs):
return servicefabric_client_factory(cli_ctx, **kwargs).clusters


def servicefabric_application_type_client_factory(cli_ctx, kwargs):
return servicefabric_client_factory(cli_ctx, **kwargs).application_types


def servicefabric_application_type_version_client_factory(cli_ctx, kwargs):
return servicefabric_client_factory(cli_ctx, **kwargs).application_type_versions


def servicefabric_application_client_factory(cli_ctx, kwargs):
return servicefabric_client_factory(cli_ctx, **kwargs).applications


def servicefabric_service_client_factory(cli_ctx, kwargs):
return servicefabric_client_factory(cli_ctx, **kwargs).services


def resource_client_factory(cli_ctx, **_):
from azure.cli.core.commands.client_factory import get_mgmt_service_client
from azure.cli.core.profiles import ResourceType
Expand Down
Loading

0 comments on commit 1715e4b

Please sign in to comment.