Пример #1
0
def main():
    argument_spec = vmware_argument_spec()
    argument_spec.update(
        dict(
            extension_key=dict(type='str', required=True),
            version=dict(type='str', required=True),
            email=dict(type='str', required=False),
            description=dict(type='str', required=False),
            company=dict(type='str', required=False),
            name=dict(type='str', required=False),
            url=dict(type='str', required=False),
            ssl_thumbprint=dict(type='str', required=False),
            client_type=dict(type='str',
                             default='vsphere-client-serenity',
                             required=False),
            server_type=dict(type='str',
                             default='vsphere-client-serenity',
                             required=False),
            visible=dict(type='bool', default='True', required=False),
            state=dict(type='str',
                       default='present',
                       choices=['absent', 'present']),
        ))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False,
                           required_if=[[
                               'state', 'present',
                               [
                                   'email', 'description', 'company', 'name',
                                   'url', 'ssl_thumbprint', 'server_type',
                                   'client_type'
                               ]
                           ]])

    state = module.params['state']
    extension_key = module.params['extension_key']
    version = module.params['version']
    email = module.params['email']
    desc = module.params['description']
    name = module.params['name']
    company = module.params['company']
    client_type = module.params['client_type']
    server_type = module.params['server_type']
    url = module.params['url']
    visible = module.params['visible']
    thumbprint = module.params['ssl_thumbprint']

    content = connect_to_api(module, False)
    em = content.extensionManager
    key_check = em.FindExtension(extension_key)
    results = dict(changed=False, installed=dict())

    if state == 'present' and key_check:
        results['changed'] = False
        results['installed'] = "'%s' is already installed" % (extension_key)

    elif state == 'present' and not key_check:
        extension = vim.Extension()
        extension.key = extension_key
        extension.company = company
        extension.version = version
        extension.lastHeartbeatTime = datetime.datetime.now()
        description = vim.Description()
        description.label = name
        description.summary = desc
        extension.description = description
        extension.shownInSolutionManager = visible

        client = vim.Extension.ClientInfo()
        client.company = company
        client.version = version
        client.description = description
        client.type = client_type
        client.url = url
        extension.client = [client]

        server = vim.Extension.ServerInfo()
        server.company = company
        server.description = description
        server.type = server_type
        server.adminEmail = email
        server.serverThumbprint = thumbprint
        server.url = url
        extension.server = [server]

        em.RegisterExtension(extension)
        results['changed'] = True
        results['installed'] = "'%s' installed." % (extension_key)

    elif state == 'absent' and key_check:
        em.UnregisterExtension(extension_key)
        results['changed'] = True
        results['installed'] = "'%s' uninstalled." % (extension_key)

    elif state == 'absent' and not key_check:
        results['changed'] = False
        results['installed'] = "'%s' is not installed." % (extension_key)

    module.exit_json(**results)
Пример #2
0
    def get_extension(self, vcp_url, fingerprint):
        try:
            cp = configparser.ConfigParser()
            cp.read(self.middleware.call_sync('vcenter.property_file_path'))
            version = self.middleware.call_sync('vcenter.get_plugin_version')

            description = vim.Description()
            description.label = cp.get('RegisterParam', 'label')
            description.summary = cp.get('RegisterParam', 'description')

            ext = vim.Extension()
            ext.company = cp.get('RegisterParam', 'company')
            ext.version = version
            ext.key = cp.get('RegisterParam', 'key')
            ext.description = description
            ext.lastHeartbeatTime = datetime.now()

            server_info = vim.Extension.ServerInfo()
            server_info.serverThumbprint = fingerprint
            server_info.type = vcp_url.split(':')[0].upper()  # sysgui protocol
            server_info.url = vcp_url
            server_info.description = description
            server_info.company = cp.get('RegisterParam', 'company')
            server_info.adminEmail = ['ADMIN EMAIL']
            ext.server = [server_info]

            client = vim.Extension.ClientInfo()
            client.url = vcp_url
            client.company = cp.get('RegisterParam', 'company')
            client.version = version
            client.description = description
            client.type = "vsphere-client-serenity"
            ext.client = [client]

            event_info = []
            for e in cp.get('RegisterParam', 'events').split(","):
                ext_event_type_info = vim.Extension.EventTypeInfo()
                ext_event_type_info.eventID = e
                event_info.append(ext_event_type_info)

            task_info = []
            for t in cp.get('RegisterParam', 'tasks').split(","):
                ext_type_info = vim.Extension.TaskTypeInfo()
                ext_type_info.taskID = t
                task_info.append(ext_type_info)

            # Register custom privileges required for vcp RBAC
            priv_info = []
            for priv in cp.get('RegisterParam', 'auth').split(","):
                ext_type_info = vim.Extension.PrivilegeInfo()
                ext_type_info.privID = priv
                ext_type_info.privGroupName = self.PRIVATE_GROUP_NAME
                priv_info.append(ext_type_info)

            ext.taskList = task_info
            ext.eventList = event_info
            ext.privilegeList = priv_info

            resource_list = self.create_event_keyvalue_pairs()
            ext.resourceList = resource_list

            return ext
        except configparser.NoOptionError as e:
            raise ValidationError('vcenter_update.get_extension',
                                  f'Property Missing : {e}')
Пример #3
0
 def _new_extension(self):
     description = vim.Description(label=self.DESCRIPTION, summary='')
     return vim.Extension(description=description,
                          key=self._key,
                          lastHeartbeatTime=self._get_heartbeat(),
                          version=self.VERSION)
Пример #4
0
    def get_extension(self, vcp_url, thumb_print):
        try:
            cp = SafeConfigParser()
            cp.read(self.property_file_path)
            company = cp.get('RegisterParam', 'company')
            descr = cp.get('RegisterParam', 'description')
            key = cp.get('RegisterParam', 'key')
            events = cp.get('RegisterParam', 'events').split(",")
            tasks = cp.get('RegisterParam', 'tasks').split(",")
            version = utils.get_plugin_version()
            if 'Not available' in version:
                return version
            label = cp.get('RegisterParam', 'label')
            sys_guiprotocol = vcp_url.split(':')[0]

            description = vim.Description()
            description.label = label
            description.summary = descr
            ext = vim.Extension()
            ext.company = company
            ext.version = version
            ext.key = key
            ext.description = description
            ext.lastHeartbeatTime = datetime.datetime.now()

            server_info = vim.Extension.ServerInfo()
            server_info.serverThumbprint = thumb_print
            server_info.type = sys_guiprotocol.upper()
            server_info.url = vcp_url
            server_info.description = description
            server_info.company = company
            server_info.adminEmail = ['ADMIN EMAIL']
            ext.server = [server_info]

            client = vim.Extension.ClientInfo()
            client.url = vcp_url
            client.company = company
            client.version = version
            client.description = description
            client.type = "vsphere-client-serenity"
            ext.client = [client]

            event_info = []
            for e in events:
                ext_event_type_info = vim.Extension.EventTypeInfo()
                ext_event_type_info.eventID = e
                event_info.append(ext_event_type_info)

            task_info = []
            for t in tasks:
                ext_type_info = vim.Extension.TaskTypeInfo()
                ext_type_info.taskID = t
                task_info.append(ext_type_info)

            ext.taskList = task_info
            ext.eventList = event_info
            resource_list = self.create_event_keyvalue_pairs()
            if isinstance(resource_list, str):
                return resource_list
            ext.resourceList = resource_list

            return ext
        except ConfigParser.NoOptionError as ex:
            return 'Property Missing : ' + str(ex)
        except Exception as ex:
            return str(ex).replace("'", "").replace("<", "").replace(">", "")
def main():
    argument_spec = vmware_argument_spec()
    argument_spec.update(
        dict(
            extension_key=dict(type="str", required=True),
            version=dict(type="str", required=True),
            email=dict(type="str", required=False),
            description=dict(type="str", required=False),
            company=dict(type="str", required=False),
            name=dict(type="str", required=False),
            url=dict(type="str", required=False),
            ssl_thumbprint=dict(type="str", required=False),
            client_type=dict(
                type="str", default="vsphere-client-serenity", required=False
            ),
            server_type=dict(
                type="str", default="vsphere-client-serenity", required=False
            ),
            visible=dict(type="bool", default="True", required=False),
            state=dict(
                type="str", default="present", choices=["absent", "present"]
            ),
        )
    )

    module = AnsibleModule(
        argument_spec=argument_spec,
        supports_check_mode=False,
        required_if=[
            [
                "state",
                "present",
                [
                    "email",
                    "description",
                    "company",
                    "name",
                    "url",
                    "ssl_thumbprint",
                    "server_type",
                    "client_type",
                ],
            ]
        ],
    )

    state = module.params["state"]
    extension_key = module.params["extension_key"]
    version = module.params["version"]
    email = module.params["email"]
    desc = module.params["description"]
    name = module.params["name"]
    company = module.params["company"]
    client_type = module.params["client_type"]
    server_type = module.params["server_type"]
    url = module.params["url"]
    visible = module.params["visible"]
    thumbprint = module.params["ssl_thumbprint"]

    content = connect_to_api(module, False)
    em = content.extensionManager
    key_check = em.FindExtension(extension_key)
    results = dict(changed=False, installed=dict())

    if state == "present" and key_check:
        results["changed"] = False
        results["installed"] = "'%s' is already installed" % (extension_key)

    elif state == "present" and not key_check:
        extension = vim.Extension()
        extension.key = extension_key
        extension.company = company
        extension.version = version
        extension.lastHeartbeatTime = datetime.datetime.now()
        description = vim.Description()
        description.label = name
        description.summary = desc
        extension.description = description
        extension.shownInSolutionManager = visible

        client = vim.Extension.ClientInfo()
        client.company = company
        client.version = version
        client.description = description
        client.type = client_type
        client.url = url
        extension.client = [client]

        server = vim.Extension.ServerInfo()
        server.company = company
        server.description = description
        server.type = server_type
        server.adminEmail = email
        server.serverThumbprint = thumbprint
        server.url = url
        extension.server = [server]

        em.RegisterExtension(extension)
        results["changed"] = True
        results["installed"] = "'%s' installed." % (extension_key)

    elif state == "absent" and key_check:
        em.UnregisterExtension(extension_key)
        results["changed"] = True
        results["installed"] = "'%s' uninstalled." % (extension_key)

    elif state == "absent" and not key_check:
        results["changed"] = False
        results["installed"] = "'%s' is not installed." % (extension_key)

    module.exit_json(**results)