File: extension_manager.py

package info (click to toggle)
azure-functions-devops-build 0.0.22-6
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 556 kB
  • sloc: python: 2,422; sh: 12; makefile: 8
file content (35 lines) | stat: -rw-r--r-- 1,649 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------

from ..base.base_manager import BaseManager

class ExtensionManager(BaseManager):
    """ Manage DevOps Extensions

    Install a new extension within an organization or view existing extensions.

    Attributes:
        See BaseManager
    """

    def __init__(self, organization_name="", creds=None):
        """Inits ExtensionManager as per BaseManager"""
        super(ExtensionManager, self).__init__(creds, organization_name=organization_name)

    def create_extension(self, extension_name, publisher_name):
        """Installs an extension in Azure DevOps if it does not already exist"""
        extensions = self.list_extensions()
        extension = next((extension for extension in extensions
                          if (extension.publisher_id == publisher_name)
                          and (extension.extension_id == extension_name)), None)
        # If the extension wasn't in the installed extensions than we know we need to install it
        if extension is None:
            extension = self._extension_management_client.install_extension_by_name(publisher_name, extension_name)

        return extension

    def list_extensions(self):
        """Lists an extensions already installed in Azure DevOps"""
        return self._extension_management_client.get_installed_extensions()