pcf.core package¶
Submodules¶
pcf.core.aws_resource module¶
-
class
pcf.core.aws_resource.AWSResource(particle_definition, resource_name, arn=None, session=None)¶ Bases:
pcf.core.particle.ParticleThe aws resource class inherits the particle class and adds the aws client. It takes as an input the resource_name (ie ec2) and the arn (if known)
-
_get_arn()¶ This gets the arn if it is not provided in the particle definition. This is implemented in each particle.
-
_get_client(session, **kwargs)¶
-
_get_resource(session, **kwargs)¶
-
apply(sync=True, cascade=False, validate_config=False, max_timeout=None, src_cascade=None, cache_ttl=15)¶ Triggers the state transition functions based on the state transition table.
Parameters: - sync (bool) – apply state transitions synchronously
- cascade (bool) – apply state transitions to all family members
- validate_config (bool) – specify whether or not to call particle config validation function
- max_timeout (int) – raise the max timeout exception after x(int) seconds reached, defaults to None
- src_cascade ("parent","child", or "none") – direction of cascade logic
- cache_ttl (int) – allows self.state_cache_ttl to be configured to any time interval
Returns: State transition response
-
arn¶ Returns arn (str): The particle’s arn
-
client¶
-
get_identifier()¶
-
get_label()¶
-
get_region()¶
-
id_replace()¶ Looks through the particle definition for $lookup and replaces them with specified resource with given name
-
lookup¶ alias of
pcf.util.aws.aws_lookup.AWSLookup
-
resource¶ Returns the aws resource object
-
set_region(session=None, region_name=None)¶
-
pcf.core.gcp_resource module¶
-
class
pcf.core.gcp_resource.GCPResource(particle_definition, resource)¶ Bases:
pcf.core.particle.ParticleThe gcp resource class inherits the particle class and adds the gcp client. It takes as an input the resource library (ie datastore)
-
_get_client(**kwargs)¶ Returns a new resource client
Parameters: kwargs – See google docs for valid arguments (https://googlecloudplatform.github.io/google-cloud-python/latest/datastore/client.html) Returns: Client
-
client¶ Client
Type: Returns
-
pcf.core.azure_resource module¶
-
class
pcf.core.azure_resource.AzureResource(particle_definition)¶ Bases:
pcf.core.particle.ParticleThe azure resource class inherits the particle class and handles the clients for azure resources
-
compute_client¶ Uses client from cli so that users can use az login to get their credentials
Returns: Compute Client
-
network_client¶ Uses client from cli so that users can use az login to get their credentials
Returns: Network Client
-
resource_client¶ Uses client from cli so that users can use az login to get their credentials
Returns: Resource Client
-
storage_client¶ Uses client from cli so that users can use az login to get their credentials
Returns: Storage Client
-
pcf.core.particle module¶
-
class
pcf.core.particle.Particle(particle_definition)¶ Bases:
object-
_set_unique_keys()¶ Logic that sets keys from state definition using dot notation that are used to uniquely identify the instance of this particle
-
_start()¶ Logic that starts the particle. This is implemented for each individual particle
-
_stop()¶ Logic that stops the particle. This is implemented for each individual particle
-
_terminate()¶ Logic that terminates the particle. This is implemented for each individual particle
-
_update()¶ Logic that updates the particle. This is implemented for each individual particle
-
_validate_config()¶ Custom logic that that validates particle’s configurations
-
apply(sync=True, cascade=False, validate_config=False, max_timeout=None, src_cascade=None, cache_ttl=15)¶ Triggers the state transition functions based on the state transition table.
Parameters: - sync (bool) – apply state transitions synchronously
- cascade (bool) – apply state transitions to all family members
- validate_config (bool) – specify whether or not to call particle config validation function
- max_timeout (int) – raise the max timeout exception after x(int) seconds reached, defaults to None
- src_cascade ("parent","child", or "none") – direction of cascade logic
- cache_ttl (int) – allows self.state_cache_ttl to be configured to any time interval
Returns: State transition response
-
apply_cascade(direction, desired_state=None, sync=True, src_cascade=None)¶ Parameters: - direction ("parent","child", or "none") – direction of cascade logic
- desired_state – the desired state of the particle
- sync (bool) – apply state transitions synchronously
- src_cascade ("parent","child", or "none") – direction of cascade logic
-
flavor= None¶ Type of particle
-
get_and_replace_parent_variables()¶ Checks the particles desired state definition and checks to see if there are values that dependent on one of its parents. The format should look like $flavor:pcf_name$key_in_parent_current_state_definition. If there are values then this function looks for the corresponding parents and adds those values to this particles desired_state_definition.
-
get_attribute_value(attribute_key, state_definition_to_use='c>d', default=None)¶
-
get_current_state_definition()¶ Returns: current_state_definition
-
get_desired_state_definition()¶ Returns: desired_state_definition
-
get_pcf_id()¶ generates an pcf id using the flavor and the pcf name
Returns: pcf id
-
get_state()¶ Calls sync state and afterward returns the current state. Uses cached state if available.
Returns: state
-
get_state_transition_function(start_state, end_state)¶ Gets the corresponding transition function
Parameters: - start_state – starting state of the transition
- end_state – ending state of the transition
-
is_state_definition_equivalent()¶ Determines if state definitions are equivalent
Returns: bool
-
is_state_equivalent(state1, state2)¶ Determines if states are equivalent.
Parameters: - state1 –
- state2 –
Returns: bool
-
link_relatives(pcf)¶ links children and parents to each other
Parameters: pcf – pcf field
-
link_to_child(pcf, child_pcf_id)¶ Adds child id to pcf children list and adds self to parent list
Parameters: - pcf – pcf field
- child_pcf_id – child pcf id
-
link_to_parent(pcf, parent_pcf_id)¶ Adds parent id to pcf parents list and adds self to children list
Parameters: - pcf – pcf field
- parent_pcf_id – parent pcf id
-
measure()¶
-
register_state_transition(start_state, end_state, transition_function)¶ Registers the correct transition function
Parameters: - start_state – starting state of the transition
- end_state – ending state of the transition
- transition_function – associated transition function
-
set_desired_state(desired_state)¶ Sets the particle’s desired state
- Arg:
- desired_state (str): one of running,stopped,terminated.
-
start(sync=True, cascade=False)¶ Calls sync state then calls _start()
Parameters: - sync (bool) – apply state transitions synchronously
- cascade (bool) – apply state transitions to all family members
-
stop(sync=True, cascade=False)¶ Calls sync state then calls _stop()
Parameters: - sync (bool) – apply state transitions synchronously
- cascade (bool) – apply state transitions to all family members
-
sync_state()¶ Logic that determines what the current state of the particle is. This is implemented for each individual particle
-
terminate(sync=True, cascade=False)¶ Calls sync state then calls _terminate()
Parameters: - sync (bool) – apply state transitions synchronously
- cascade (bool) – apply state transitions to all family members
-
update(sync=True, cascade=False)¶ Calls sync state then calls _update()
Parameters: - sync (bool) – apply state transitions synchronously
- cascade (bool) – apply state transitions to all family members
-
use_cached_state()¶ Returns true if the last cached time is greater than cache_ttl variable.
Returns: bool
-
validate_unique_id()¶ Throws an error if particle flavor or any unique identifiers are missing
-
wait()¶
-
pcf.core.particle_flavor_scanner module¶
-
exception
pcf.core.particle_flavor_scanner.InvalidInputException(flavor)¶ Bases:
Exception
-
exception
pcf.core.particle_flavor_scanner.ParticleFlavorNotFoundError(flavor)¶ Bases:
Exception
-
pcf.core.particle_flavor_scanner.get_particle_flavor(flavor: str)¶
-
pcf.core.particle_flavor_scanner.get_particle_flavor_registry()¶
pcf.core.pcf module¶
-
class
pcf.core.pcf.PCF(pcf_definition_json)¶ Bases:
object-
add_particle(particle)¶
-
add_particles(particles)¶
-
apply(sync=True, cascade=False, validate_config=False, max_timeout=None, particles_dict=None)¶
-
get_particle(flavor, pcf_name)¶
-
get_particle_from_pcf_id(pcf_id)¶
-
get_particles(flavor=None)¶
-
link_particles(particles_dict)¶
-
load_particle_definition(particle_definition)¶
-
load_pcf_definition(pcf_definition_json)¶
-
pcf.core.pcf_exceptions module¶
-
exception
pcf.core.pcf_exceptions.FlavorMissingException¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.InvalidCacheTTLException¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.InvalidConfigException(message='Particle config validation failed')¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.InvalidState(message='Attempted to set a state that is not valid')¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.InvalidTagsException(message='Tag validation failed')¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.InvalidUniqueKeysException(message='Particle unique keys validation failed')¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.InvalidUpdateParamException¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.InvalidValueReplaceException(message='Invalid inputs for definition variable replace ($)')¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.MaxTimeoutException(message='Max timeout reached while in apply()')¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.MissingException(message='Attempted to use missing value')¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.NoCallbackFunctionException¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.NoCodeException¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.NoResourceException¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.ParentRequiredException¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.ResourceLookupNotDefinedException(message='Resource lookup class not defined')¶ Bases:
Exception
-
exception
pcf.core.pcf_exceptions.TooManyResourceException¶ Bases:
Exception
pcf.core.quasiparticle module¶
-
class
pcf.core.quasiparticle.Quasiparticle(particle_definition)¶ Bases:
pcf.core.particle.Particle-
_fuse_particles()¶ This functions adds all particles to a pcf object (pcf_field). If a particle contains a multiplier field that number of particles are created with indexes appended to the particle’s unique identifier. If the quasiparticle has a parent, that parent is added to all particles in the quasiparticle. Finally link_particles is called on the pcf_field.
-
add_parents_to_particle(particle_definition)¶ Adds parents to particle_definition
Parameters: particle_definition – Returns: updated version Return type: particle_definition
-
apply(sync=True, cascade=True, validate_config=False, rollback=False, max_timeout=None)¶ Calls apply all particles via pcf_field.apply()
Parameters: - sync (bool) – sync or async mode. Defaults to True
- cascade (bool) – Defaults to True
- validate_config (bool) – specify whether or not to call particle config validation function
- rollback (bool) – If true then all particles will be terminated if there is an error during start. Defaults to False
- max_timeout (int) – raise the max timeout exception after x(int) seconds reached, defaults to None
-
flavor= 'quasiparticle'¶
-
fuse()¶ To override fuse() functionality reimplement _fuse_particles()
Returns: _fuse_particles()
-
get_particle(flavor, pcf_name)¶ Returns a particle from the quasiparticle
- Args:
- flavor (str): pcf_name (str):
Returns: Particle
-
get_state()¶ If all the particles are in the same state then the quasiparticle returns that state. Otherwise will return State.pending
Returns: self.state
-
set_desired_state(desired_state)¶ Sets the desired state for all particles in the quasiparticle.
Parameters: desired_state (str) – one of running,stopped,terminated.
-
set_particle_state(flavor, desired_state, pcf_name=None)¶ Sets the state of a particular particle.
Parameters: - flavor (str) –
- desired_state (State) –
- pcf_name (str) – default is None
-
sync_state()¶ Logic that determines what the current state of the particle is. This is implemented for each individual particle
-
update_particle_definition(particle_definition, base_particle)¶ Updates a particle’s definition with a previous definition. Replaces any fields that are specified.
Parameters: - particle_definition (dict) – new particle defintion (can be empty)
- base_particle (particle) – the particle that the new particle is inheriting from
Returns: updated_particle_definition
-