Exemplo n.º 1
0
 def wrapped_f(*args, **kwargs):
     cloud_name = kwargs.pop('cloud_name', None)
     if not cloud_name:
         raise exceptions.SaltInvocationError(
             "No cloud_name specified. Please provide cloud_name "
             "parameter")
     adapter = get_raw_client(cloud_name)
     kwarg_keys = list(kwargs.keys())
     for k in kwarg_keys:
         if k.startswith('__'):
             kwargs.pop(k)
     url, request_kwargs = func(*args, **kwargs)
     try:
         response = getattr(adapter, method.lower())(url,
                                                     **request_kwargs)
     except Exception as e:
         log.exception("Error occured when executing request")
         return {
             "result": False,
             "comment": str(e),
             "status_code": getattr(e, "http_status", 500)
         }
     return {
         "result": True,
         "body": response.json() if response.content else {},
         "status_code": response.status_code
     }
Exemplo n.º 2
0
def _init(
        sid=None,
        inst=None,
        password=None):
    '''
    Returns an instance of the hana instance

    sid
        HANA system id (PRD for example)
    inst
        HANA instance number (00 for example)
    password
        HANA instance password
    '''
    if sid is None:
        sid = __salt__['config.option']('hana.sid', None)
    if inst is None:
        inst = __salt__['config.option']('hana.inst', None)
    if password is None:
        password = __salt__['config.option']('hana.password', None)

    try:
        return hana.HanaInstance(sid, inst, password)
    except TypeError as err:
        raise exceptions.SaltInvocationError(err)
Exemplo n.º 3
0
def get_raw_client(cloud_name):
    if not os_client_config:
        raise exceptions.SaltInvocationError(
            "Cannot load os-client-config. Please check your environment "
            "configuration.")
    service_type = 'metric'
    config = os_client_config.OpenStackConfig()
    cloud = config.get_one_cloud(cloud_name)
    api_version = '1'
    try:
        # NOTE(pas-ha) for Queens and later,
        # 'version' kwarg in absent for Pike and older
        adapter = cloud.get_session_client(service_type, version=api_version)
    except TypeError:
        adapter = cloud.get_session_client(service_type)
        adapter.version = api_version
    try:
        access_info = adapter.session.auth.get_access(adapter.session)
        endpoints = access_info.service_catalog.get_endpoints()
    except (AttributeError, ValueError) as exc:
        log.exception('%s' % exc)
        e = NoAuthPluginConfigured()
        log.exception('%s' % e)
        raise e
    if service_type not in endpoints:
        if not service_type:
            e = NoGnocchiEndpoint()
            log.error('%s' % e)
            raise e
    return adapter
Exemplo n.º 4
0
def get_raw_client(cloud_name):
    config = os_client_config.OpenStackConfig()
    cloud = config.get_one_cloud(cloud_name)
    adapter = cloud.get_session_client(SERVICE_KEY)
    adapter.version = '1'
    try:
        access_info = adapter.session.auth.get_access(adapter.session)
        endpoints = access_info.service_catalog.get_endpoints()
    except (AttributeError, ValueError) as exc:
        six.raise_from(exc, exceptions.SaltInvocationError(
            "Cannot load keystoneauth plugin. Please check your environment "
            "configuration."))
    if SERVICE_KEY not in endpoints:
        raise exceptions.SaltInvocationError("Cannot find heat endpoint in "
                                             "environment endpoint list.")
    return adapter
Exemplo n.º 5
0
def _init(sid=None, inst=None, password=None):
    '''
    Returns an instance of the netweaver instance

    sid
        Netweaver system id (PRD for example)
    inst
        Netweaver instance number (00 for example)
    password
        Netweaver instance password
    '''
    if sid is None:
        sid = __salt__['config.option']('netweaver.sid', None)
    if inst is None:
        inst = __salt__['config.option']('netweaver.inst', None)
    if password is None:
        password = __salt__['config.option']('netweaver.password', None)

    try:
        return netweaver.NetweaverInstance(sid, inst, password)
    except TypeError as err:
        raise exceptions.SaltInvocationError(err)
Exemplo n.º 6
0
def wait_for_startup(
        timeout=None):
    '''
    Mostly useful in scripts or automated workflows, this command will attempt
    to connect to the local cluster node repeatedly. The command will keep
    trying until the cluster node responds, or the timeout elapses.
    The timeout can be changed by supplying a value in seconds as an argument.

    timeout:
        Timeout to wait in seconds

    CLI Example:

    .. code-block:: bash

        salt '*' crm.wait_for_startup
    '''
    cmd = '{crm_command} cluster wait_for_startup'.format(crm_command=CRM_COMMAND)
    if timeout:
        if not isinstance(timeout, int):
            raise exceptions.SaltInvocationError('timeout must be integer type')
        cmd = '{cmd} {timeout}'.format(cmd=cmd, timeout=timeout)
    return __salt__['cmd.retcode'](cmd)
Exemplo n.º 7
0
 def wrapped_f(*args, **kwargs):
     cloud_name = kwargs.pop('cloud_name', None)
     connect_retries = 30
     connect_retry_delay = 1
     if not cloud_name:
         raise exceptions.SaltInvocationError(
             "No cloud_name specified. Please provide cloud_name "
             "parameter")
     adapter = get_raw_client(cloud_name)
     kwarg_keys = list(kwargs.keys())
     for k in kwarg_keys:
         if k.startswith('__'):
             kwargs.pop(k)
     url, request_kwargs = func(*args, **kwargs)
     response = None
     for i in range(connect_retries):
         try:
             response = getattr(adapter, method.lower())(
                 url, connect_retries=connect_retries, **request_kwargs)
         except Exception as e:
             if hasattr(e, 'http_status') and (e.http_status >= 500
                                               or e.http_status == 0):
                 msg = ("Got retriable exception when contacting "
                        "Cinder API. Sleeping for %ss. Attepmpts "
                        "%s of %s")
                 log.error(msg %
                           (connect_retry_delay, i, connect_retries))
                 time.sleep(connect_retry_delay)
                 continue
         break
     if not response or not response.content:
         return {}
     try:
         resp = response.json()
     except ValueError:
         resp = response.content
     return resp
Exemplo n.º 8
0
def _get_raw_client(cloud_name):
    if not os_client_config:
        raise exceptions.SaltInvocationError(
            "Cannot load os-client-config. Please check your environment "
            "configuration.")
    service_type = 'key-manager'
    config = os_client_config.OpenStackConfig()
    cloud = config.get_one_cloud(cloud_name)
    adapter = cloud.get_session_client(service_type)
    adapter.version = '1'
    try:
        access_info = adapter.session.auth.get_access(adapter.session)
        endpoints = access_info.service_catalog.get_endpoints()
    except (AttributeError, ValueError) as exc:
        log.exception('%s' % exc)
        e = NoAuthPluginConfigured()
        log.exception('%s' % e)
        raise e
    if service_type not in endpoints:
        if not service_type:
            e = NoBarbicanEndpoint()
            log.error('%s' % e)
            raise e
    return adapter