pyhaystack.client.ops.vendor package

Submodules

pyhaystack.client.ops.vendor.niagara module

Niagara AX operation implementations.

class pyhaystack.client.ops.vendor.niagara.NiagaraAXAuthenticateOperation(session, retries=0)

Bases: pyhaystack.util.state.HaystackOperation

An implementation of the log-in procedure for Niagara AX. The procedure is as follows:

  1. Do a request of the log-in URL, without credentials. This sets session cookies in the client. Response should be code 200.
  2. Pick up the session cookie named ‘niagara_session’, submit this in a GET request for the login URL with a number of other parameters. Response should NOT include the word ‘login’.

Future requests should include the basic authentication credentials.

Attempt to log in to the Niagara AX server.

Parameters:
  • session – Haystack HTTP session object.
  • uri – Possibly partial URI relative to the server base address to perform a query. No arguments shall be given here.
  • expect_format – Request that the grid be sent in the given format.
  • args – Dictionary of key-value pairs to be given as arguments.
  • multi_grid – Boolean indicating if we are to expect multiple grids or not. If True, then the operation will _always_ return a list, otherwise, it will _always_ return a single grid.
  • raw_response – Boolean indicating if we should try to parse the result. If True, then we should just pass back the raw HTTPResponse object.
  • retries – Number of retries permitted in case of failure.
go()

Start the request.

pyhaystack.client.ops.vendor.skyspark module

Skyspark operation implementations.

class pyhaystack.client.ops.vendor.skyspark.SkysparkAuthenticateOperation(session, retries=2)

Bases: pyhaystack.util.state.HaystackOperation

An implementation of the log-in procedure for Skyspark. The procedure is as follows:

  1. Retrieve the log-in URL (GET request).
  2. Parse the key-values pairs returned, pick up ‘username’, ‘userSalt’ and ‘nonce’.
  3. Compute
    mac = Base64(HMAC_SHA1(key=password, msg=”${username}:${userSalt}”))
  4. Compute
    digest = Base64(SHA1(“${mac}:${nonce}”))
  5. POST to log-in URL:
    nonce: ${nonce} digest: ${digest}
  6. Stash received cookies given in the returned body.

Future requests should the cookies returned.

Attempt to log in to the Skyspark server.

Parameters:
  • session – Haystack HTTP session object.
  • retries – Number of retries permitted in case of failure.
go()

Start the request.

pyhaystack.client.ops.vendor.skyspark.binary_encoding(string, encoding='utf-8')

This helper function will allow compatibility with Python 2 and 3

pyhaystack.client.ops.vendor.skyspark.get_digest_info(param)

pyhaystack.client.ops.vendor.widesky module

VRT WideSky operation implementations.

class pyhaystack.client.ops.vendor.widesky.CreateEntityOperation(session, entities, single)

Bases: pyhaystack.client.ops.entity.EntityRetrieveOperation

Operation for creating entity instances.

Parameters:
  • session – Haystack HTTP session object.
  • entities – A list of entities to create.
go()

Start the request, preprocess and submit create request.

class pyhaystack.client.ops.vendor.widesky.WideSkyHasFeaturesOperation(session, features, **kwargs)

Bases: pyhaystack.client.ops.feature.HasFeaturesOperation

class pyhaystack.client.ops.vendor.widesky.WideSkyPasswordChangeOperation(session, new_password, **kwargs)

Bases: pyhaystack.client.ops.grid.BaseAuthOperation

The Password Change operation implements the logic required to change a user’s password.

go()

Start the request.

class pyhaystack.client.ops.vendor.widesky.WideskyAuthenticateOperation(session, retries=0)

Bases: pyhaystack.util.state.HaystackOperation

An implementation of the log-in procedure for WideSky. WideSky uses a M2M variant of OAuth2.0 to authenticate users.

Attempt to log in to the VRT WideSky server. The procedure is as follows:

POST to auth_dir URI:
Headers:
Accept: application/json Authorization: Basic [BASE64:”[ID]:[SECRET]”] Content-Type: application/json
Body: {
username: “[USER]”, password: “[PASSWORD]”, grant_type: “password”

}

EXPECT reply:
Headers:
Content-Type: application/json
Body:
{
access_token: …, refresh_token: …, expires_in: …, token_type: …

}

Parameters:
  • session – Haystack HTTP session object.
  • retries – Number of retries permitted in case of failure.
go()

Start the request.

Module contents