import enum
from ...business.objects.event import EventEmitter
class UpdateStationRequest:
def __init__(
self,
station_id,
name=None,
description=None,
public=None,
allow_auto_join=None,
):
self.station_id = station_id
self.name = name
self.description = description
self.public = public
self.allow_auto_join = allow_auto_join
[docs]class EVolumeAccess(enum.Enum):
READ = "r"
READWRITE = "rw"
[docs]class VolumeHostPath:
[docs] def __init__(self, volume_hostpath_id, lz_id, host_path):
self.volume_hostpath_id = volume_hostpath_id
self.lz_id = lz_id
self.host_path = host_path
[docs]class Volume:
[docs] def __init__(
self,
station_id,
name,
mount_point,
access,
host_paths,
volume_id,
):
self.volume_id = volume_id
self.station_id = station_id
self.name = name
self.mount_point = mount_point
self.access = access
self.host_paths = host_paths
[docs]class EStationUserRole(enum.Enum):
OWNER = 0
ADMIN = 1
MEMBER = 2
PENDING = 3
INVITED = 4
BLOCKED = 5
[docs]class StationUser:
[docs] def __init__(
self,
stationuser_id,
user_id,
status=None,
station_id=None,
username=None,
role_id=None,
creation_timestamp=None,
updated_timestamp=None,
):
self.stationuser_id = stationuser_id
self.user_id = user_id
self.status = status
self.station_id = station_id
self.username = username
self.role_id = role_id
self.creation_timestamp = creation_timestamp
self.updated_timestamp = updated_timestamp
class PublicStation:
def __init__(
self,
name,
station_id,
description=None,
creation_timestamp=None,
updated_timestamp=None,
public=True,
allowed_mission_types=None,
allow_auto_join=None,
jobs_in_queue_count=None,
member_count=None,
lz_id_count=None,
resource_policy=None,
user_count=None,
user_status=None,
volume_count=None,
):
"""
Public Station Object
:param name: str: Human readable name of the Station
:param station_id: str: UUID of the Station
:param description: Optional[str]: Optional description of the Station
:param creation_timestamp: Optional[str]: Time the Station was created
:param updated_timestamp: Optional[str]: Time the Station was last updated
:param allow_auto_join: Optional[bool] Station automatically accepts user requests to join
:param public: Optional[bool]: Is station public or not (should always be public)
:param allowed_mission_types: Mission types allowed for this station
:param job_in_queue_count: [int]: Number of jobs in the queue
:param member_count: [int]: Number of members in the station
:param mid_count: [int]: Number of mids in the station
:param resource_policy: Resource policies for the station
:param user_count: [int]: Number of users in the station
:param user_status: Status of the user in the station
:param volume_count: Number of volumes in the station
"""
self.station_id = station_id
self.name = name
self.description = description
self.creation_timestamp = creation_timestamp
self.updated_timestamp = updated_timestamp
self.public = public
self.allow_auto_join = allow_auto_join
self.allowed_mission_types = allowed_mission_types
self.jobs_in_queue_count = jobs_in_queue_count
self.member_count = member_count
self.lz_id_count = lz_id_count
self.resource_policy = resource_policy
self.user_count = user_count
self.user_status = user_status
self.volume_count = volume_count
def __str__(self):
return "Public Station: {name} (autojoin:{allow_auto_join})".format(
name=self.name, allow_auto_join=self.allow_auto_join)
def __repr__(self):
return self.__str__()
[docs]class Station:
[docs] def __init__(
self,
station_id,
name,
description,
users,
allow_auto_join=None,
public=None,
lz_ids=None,
crew_ids=None,
machine_summaries=None,
volumes=None,
status=None,
universe_id=None,
creation_timestamp=None,
updated_timestamp=None,
autoscale_settings=None,
):
"""
Station Object
:param station_id: Optional[List[str]]: UUID of the Station
:param name: Optional[List[str]]: Human readable name of the Station
:param description: Optional[List[str]]: Optional description of the Station
:param users: Optional[int]: List of users that belong to the Station
:param lz_ids: Optional[int]: List of LZs that are accessible through the Station
:param volumes: Optional[List[str]]: Volumes declared in the Station
:param status: Optional[bool]: Station status (i.e. active or deactivated)
:param organization_id: Orgainization the Station is associated with, default if the Hypernet Orginization.
:param creation_timestamp: Time the Station was created
:param updated_timestamp: Time the Station was last updated
:param autoscale_settings: Currently not used
"""
self.station_id = station_id
self.name = name
self.description = description
self.users = users
self.lz_ids = lz_ids
self.crew_ids = crew_ids
self.volumes = volumes
self.status = status
self.universe_id = universe_id
self.creation_timestamp = creation_timestamp
self.updated_timestamp = updated_timestamp
self.autoscale_settings = autoscale_settings
self.machine_summaries = machine_summaries,
self.allow_auto_join = allow_auto_join
self.public = public
def __str__(self):
return "Station: {name} (autojoin:{allow_auto_join})".format(
name=self.name, allow_auto_join=self.allow_auto_join)
def __repr__(self):
return self.__str__()
[docs]class NewStationEvent:
[docs] def __init__(self, station):
self.station = station
[docs]class StationAdminInviteSentEvent:
[docs] def __init__(self, station_id, user_ids):
self.station_id = station_id
self.user_ids = user_ids
[docs]class StationUserInviteReceivedEvent:
[docs] def __init__(self, station):
self.station = station
[docs]class StationAdminInviteAcceptedEvent:
[docs] def __init__(self, station_id, user_id):
self.station_id = station_id
self.user_id = user_id
[docs]class StationMemberMemberEvent:
[docs] def __init__(self, station_id, user_id):
self.stationid = station_id
self.user_id = user_id
[docs]class StationUserInviteAcceptedEvent:
[docs] def __init__(self, station_id, user_id):
self.stationid = station_id
self.user_id = user_id
class StationAdminInviteRejectedEvent:
def __init__(self, station_id, user_ids):
self.station_id = station_id
self.user_ids = user_ids
[docs]class StationUserInviteRejectedEvent:
[docs] def __init__(self, station_id, user_ids):
self.stationid = station_id
self.user_ids = user_ids
[docs]class StationAdminRequestReceivedEvent:
[docs] def __init__(self, station_id, user_id):
self.station_id = station_id
self.user_id = user_id
[docs]class StationUserRequestSentEvent:
[docs] def __init__(self, station_id, user_id):
self.station_id = station_id
self.user_id = user_id
[docs]class StationAdminRequestAcceptedEvent:
[docs] def __init__(self, station_id, user_id):
self.station_id = station_id
self.user_id = user_id
[docs]class StationUserRequestAcceptedEvent:
[docs] def __init__(self, station_id):
self.station_id = station_id
[docs]class StationAdminRequestRejectedEvent:
[docs] def __init__(self, station_id, user_id):
self.station_id = station_id
self.user_id = user_id
[docs]class StationUserRequestRejectedEvent:
[docs] def __init__(self, station_id):
self.station_id = station_id
[docs]class StationAdminMemberRemovedEvent:
[docs] def __init__(self, station_id, user_ids):
self.station_id = station_id
self.user_ids = user_ids
[docs]class StationAdminLzRemovedEvent:
[docs] def __init__(self, station_id, lz_ids):
self.station_id = station_id
self.lz_ids = lz_ids
[docs]class StationMemberMemberRemovedEvent:
[docs] def __init__(self, station_id, user_id):
self.station_id = station_id
self.user_id = user_id
[docs]class StationMemberLzRemovedEvent:
[docs] def __init__(self, station_id, lz_ids):
self.station_id = station_id
self.lz_ids = lz_ids
[docs]class StationUserWithdrawnEvent:
[docs] def __init__(self, station_id, lz_ids):
self.stationid = station_id
self.lz_ids = lz_ids
[docs]class StationUserExpelledEvent:
[docs] def __init__(self, stationid):
self.stationid = stationid
[docs]class StationAdminDestroyedEvent:
[docs] def __init__(self, station_id):
self.station_id = station_id
[docs]class StationMemberDestroyedEvent:
[docs] def __init__(self, station_id):
self.station_id = station_id
[docs]class StationUserInviteDestroyedEvent:
[docs] def __init__(self, station_id):
self.station_id = station_id
[docs]class StationUserRequestDestroyedEvent:
[docs] def __init__(self, station_id):
self.station_id = station_id
[docs]class StationAdminLzAddedEvent:
[docs] def __init__(self, station_id, mids):
self.station_id = station_id
self.mids = mids
[docs]class StationMemberLzAddedEvent:
[docs] def __init__(self, station_id, mids):
self.station_id = station_id
self.mids = mids
[docs]class StationAdminVolumeAddedEvent:
[docs] def __init__(self, station_id, volumes):
self.station_id = station_id
self.volumes = volumes
[docs]class StationMemberVolumeAddedEvent:
[docs] def __init__(self, station_id, volumes):
self.station_id = station_id
self.volumes = volumes
[docs]class StationAdminVolumeHostPathAddedEvent:
[docs] def __init__(self, station_id, volumes):
self.station_id = station_id
self.volumes = volumes
[docs]class StationMemberVolumeHostPathAddedEvent:
[docs] def __init__(self, station_id, volumes):
self.station_id = station_id
self.volumes = volumes
[docs]class StationAdminVolumeHostPathRemovedEvent:
[docs] def __init__(self, station_id, volumes):
self.station_id = station_id
self.volumes = volumes
[docs]class StationMemberVolumeHostPathRemovedEvent:
[docs] def __init__(self, station_id, volumes):
self.station_id = station_id
self.volumes = volumes
[docs]class StationAdminVolumeRemovedEvent:
[docs] def __init__(self, station_id, volume_names):
self.station_id = station_id
self.volume_names = volume_names
[docs]class StationMemberVolumeRemovedEvent:
[docs] def __init__(self, station_id, volume_names):
self.station_id = station_id
self.volume_names = volume_names
class StationAdminStationUpdated:
def __init__(self, station):
self.station = station
class StationMemberStationUpdated:
def __init__(self, station):
self.station = station
class ResourcePolicy:
def __init__(
self,
id,
max_cpu_per_job,
max_memory_per_job,
max_gpu_per_job,
max_cpu_per_station,
max_memory_per_station,
max_gpu_per_station,
max_cpu_global,
max_memory_global,
max_gpu_global,
max_missions,
max_users_in_station,
max_stations,
max_mission_types,
max_cloud_storage_space,
max_spend_per_day,
max_spend_per_week,
max_spend_per_month,
max_spend_per_year,
cpu_credits_per_hour,
memory_credits_per_hour,
gpu_credits_per_hour,
creation_timestamp,
updated_timestamp,
):
"""
Resource Policy is a collection of the resource limits for a given role or station
:param id: UUID of the resource policy
:type id: str
:param max_cpu_per_job: Max cpu used per job
:type max_cpu_per_job: int
:param max_memory_per_job: Max memory used per job
:type max_memory_per_job: int
:param max_gpu_per_job: Max gpu used per job
:type max_gpu_per_job: int
:param max_cpu_per_station: Max cpu used per station
:type max_cpu_per_station: int
:param max_memory_per_station: Max memory used per station
:type max_memory_per_station: int
:param max_gpu_per_station: Max gpu usable per station
:type max_gpu_per_station: int
:param max_cpu_global: Max cpu used globally
:type max_cpu_global: int
:param max_memory_global: Max memory used globally
:type max_memory_global: int
:param max_gpu_global: Max gpu used globally
:type max_gpu_global: int
:param max_missions: Max number of missions allowed
:type max_missions: int
:param max_users_in_station: Max number of users in a station
:type max_users_in_station: int
:param max_stations: Max number of stations allowed
:type max_stations: int
:param max_mission_types: Max number of mission types allowed
:type max_mission_types: int
:param max_cloud_storage_space: Max amount of cloud storage space allowed
:type max_cloud_storage_space: int
:param max_spend_per_day: Max amount of credits spent per day
:type max_spend_per_day: number
:param max_spend_per_week: Max amount of credits spent per week
:type max_spend_per_week: number
:param max_spend_per_month: Max amount of credits spent per month
:type max_spend_per_month: number
:param max_spend_per_year: Max amount of credits spent per year
:type max_spend_per_year: number
:param cpu_credits_per_hour: cpu credits per hour
:type cpu_credits_per_hour: number
:param memory_credits_per_hour: memory credits per hour
:type memory_credits_per_hour: number
:param gpu_credits_per_hour: gpu credits per hour
:type gpu_credits_per_hour: number
:param creation_timestamp: Creation timestamp of the resource policy
:type creation_timestamp: str
:param updated_timestamp: Updated timestamp of the resource policy
:type updated_timestamp: str
"""
self.id = id
self.max_cpu_per_job = max_cpu_per_job
self.max_memory_per_job = max_memory_per_job
self.max_gpu_per_job = max_gpu_per_job
self.max_cpu_per_station = max_cpu_per_station
self.max_memory_per_station = max_memory_per_station
self.max_gpu_per_station = max_gpu_per_station
self.max_cpu_global = max_cpu_global
self.max_memory_global = max_memory_global
self.max_gpu_global = max_gpu_global
self.max_missions = max_missions
self.max_users_in_station = max_users_in_station
self.max_stations = max_stations
self.max_mission_types = max_mission_types
self.max_cloud_storage_space = max_cloud_storage_space
self.max_spend_per_day = max_spend_per_day
self.max_spend_per_week = max_spend_per_week
self.max_spend_per_month = max_spend_per_month
self.max_spend_per_year = max_spend_per_year
self.cpu_credits_per_hour = cpu_credits_per_hour
self.memory_credits_per_hour = memory_credits_per_hour
self.gpu_credits_per_hour = gpu_credits_per_hour
self.creation_timestamp = creation_timestamp
self.updated_timestamp = updated_timestamp
class UpdateResourcePolicyRequest:
def __init__(
self,
max_cpu_per_job=None,
max_memory_per_job=None,
max_gpu_per_job=None,
max_cpu_per_station=None,
max_memory_per_station=None,
max_gpu_per_station=None,
max_cpu_global=None,
max_memory_global=None,
max_gpu_global=None,
max_missions=None,
max_users_in_station=None,
max_stations=None,
max_mission_types=None,
max_cloud_storage_space=None,
max_spend_per_day=None,
max_spend_per_week=None,
max_spend_per_month=None,
max_spend_per_year=None,
cpu_credits_per_hour=None,
memory_credits_per_hour=None,
gpu_credits_per_hour=None,
):
"""
Update resource policy request
:param max_cpu_per_job: Max cpu used per job, defaults to None
:type max_cpu_per_job: int, optional
:param max_memory_per_job: Max memory used per job, defaults to None
:type max_memory_per_job: int, optional
:param max_gpu_per_job: Max gpu used per job, defaults to None
:type max_gpu_per_job: int, optional
:param max_cpu_per_station: Max cpu used per station, defaults to None
:type max_cpu_per_station: int, optional
:param max_memory_per_station: Max memory used per station, defaults to None
:type max_memory_per_station: int, optional
:param max_gpu_per_station: Max gpu usable per station, defaults to None
:type max_gpu_per_station: int, optional
:param max_cpu_global: Max cpu used globally, defaults to None
:type max_cpu_global: int, optional
:param max_memory_global: Max memory used globally , defaults to None
:type max_memory_global: int, optional
:param max_gpu_global: Max gpu used globally, defaults to None
:type max_gpu_global: int, optional
:param max_missions: Max number of missions allowed, defaults to None
:type max_missions: int, optional
:param max_users_in_station: Max number of users in a station, defaults to None
:type max_users_in_station: int, optional
:param max_stations: Max number of stations allowed, defaults to None
:type max_stations: int, optional
:param max_mission_types: Max number of mission types allowed, defaults to None
:type max_mission_types: int, optional
:param max_cloud_storage_space: Max amount of cloud storage space allowed, defaults to None
:type max_cloud_storage_space: int, optional
:param max_spend_per_day: Max amount of credits spent per day, defaults to None
:type max_spend_per_day: number, optional
:param max_spend_per_week: Max amount of credits spent per week, defaults to None
:type max_spend_per_week: number , optional
:param max_spend_per_month: Max amount of credits spent per month, defaults to None
:type max_spend_per_month: number, optional
:param max_spend_per_year: Max amount of credits spent per year, defaults to None
:type max_spend_per_year: number , optional
:param cpu_credits_per_hour: cpu credits per hour, defaults to None
:type cpu_credits_per_hour: number , optional
:param memory_credits_per_hour: memory credits per hour, defaults to None
:type memory_credits_per_hour: number, optional
:param gpu_credits_per_hour: gpu credits per hour, defaults to None
:type gpu_credits_per_hour: number, optional
"""
self.max_cpu_per_job = max_cpu_per_job
self.max_memory_per_job = max_memory_per_job
self.max_gpu_per_job = max_gpu_per_job
self.max_cpu_per_station = max_cpu_per_station
self.max_memory_per_station = max_memory_per_station
self.max_gpu_per_station = max_gpu_per_station
self.max_cpu_global = max_cpu_global
self.max_memory_global = max_memory_global
self.max_gpu_global = max_gpu_global
self.max_missions = max_missions
self.max_users_in_station = max_users_in_station
self.max_stations = max_stations
self.max_mission_types = max_mission_types
self.max_cloud_storage_space = max_cloud_storage_space
self.max_spend_per_day = max_spend_per_day
self.max_spend_per_week = max_spend_per_week
self.max_spend_per_month = max_spend_per_month
self.max_spend_per_year = max_spend_per_year
self.cpu_credits_per_hour = cpu_credits_per_hour
self.memory_credits_per_hour = memory_credits_per_hour
self.gpu_credits_per_hour = gpu_credits_per_hour
def __str__(self):
# Return a string of all the non None attributes
return "Update Resource Policy Request: " + ", ".join([
"{}={}".format(k, v)
for k, v in self.__dict__.items() if v is not None
])
class CreateStationRoleRequest:
def __init__(
self,
name,
description,
role_type=None,
protected_role=0,
edit_station_roles=0,
assign_user_roles=0,
assign_protected_user_roles=0,
launch_jobs=0,
invite_users=0,
remove_all_users=0,
remove_invited_users=0,
view_all_users=0,
edit_metadata=0,
add_lz=0,
remove_any_lz=0,
view_all_jobs=0,
control_all_jobs=0,
view_jobs_on_own_lzs=0,
control_jobs_on_own_lzs=0,
view_own_jobs=0,
control_own_jobs=0,
create_tunnels=None,
view_complete_activity=0,
edit_station_policy=0,
edit_own_lz_policy=0,
edit_lz_policy=0,
edit_user_policy=0,
edit_job_resource_limits=0,
add_autoscale=0,
edit_autoscale=0,
remove_autoscale=0,
manage_volumes=0,
reject_user_requests=0,
allowed_mission_types=None,
):
"""
Create a station role request
:param name: Name of the role
:type name: [type]
:param description: [description]
:type description: [type]
:param role_type: [description], defaults to None
:type role_type: [type], optional
:param protected_role: [description], defaults to 0
:type protected_role: int, optional
:param edit_station_roles: [description], defaults to 0
:type edit_station_roles: int, optional
:param assign_user_roles: [description], defaults to 0
:type assign_user_roles: int, optional
:param assign_protected_user_roles: [description], defaults to 0
:type assign_protected_user_roles: int, optional
:param launch_jobs: [description], defaults to 0
:type launch_jobs: int, optional
:param invite_users: [description], defaults to 0
:type invite_users: int, optional
:param remove_all_users: [description], defaults to 0
:type remove_all_users: int, optional
:param remove_invited_users: [description], defaults to 0
:type remove_invited_users: int, optional
:param view_all_users: [description], defaults to 0
:type view_all_users: int, optional
:param edit_metadata: [description], defaults to 0
:type edit_metadata: int, optional
:param add_lz: [description], defaults to 0
:type add_lz: int, optional
:param remove_any_lz: [description], defaults to 0
:type remove_any_lz: int, optional
:param view_all_jobs: [description], defaults to 0
:type view_all_jobs: int, optional
:param control_all_jobs: [description], defaults to 0
:type control_all_jobs: int, optional
:param view_jobs_on_own_lzs: [description], defaults to 0
:type view_jobs_on_own_lzs: int, optional
:param control_jobs_on_own_lzs: [description], defaults to 0
:type control_jobs_on_own_lzs: int, optional
:param view_own_jobs: [description], defaults to 0
:type view_own_jobs: int, optional
:param control_own_jobs: [description], defaults to 0
:type control_own_jobs: int, optional
:param create_tunnels: [description], defaults to None
:type create_tunnels: [type], optional
:param view_complete_activity: [description], defaults to 0
:type view_complete_activity: int, optional
:param edit_station_policy: [description], defaults to 0
:type edit_station_policy: int, optional
:param edit_own_lz_policy: [description], defaults to 0
:type edit_own_lz_policy: int, optional
:param edit_lz_policy: [description], defaults to 0
:type edit_lz_policy: int, optional
:param edit_user_policy: [description], defaults to 0
:type edit_user_policy: int, optional
:param edit_job_resource_limits: [description], defaults to 0
:type edit_job_resource_limits: int, optional
:param add_autoscale: [description], defaults to 0
:type add_autoscale: int, optional
:param edit_autoscale: [description], defaults to 0
:type edit_autoscale: int, optional
:param remove_autoscale: [description], defaults to 0
:type remove_autoscale: int, optional
:param manage_volumes: [description], defaults to 0
:type manage_volumes: int, optional
:param reject_user_requests: [description], defaults to 0
:type reject_user_requests: int, optional
:param allowed_mission_types: [description], defaults to None
:type allowed_mission_types: [type], optional
"""
self.name = name
self.description = description
self.role_type = role_type
self.protected_role = protected_role
self.edit_station_roles = edit_station_roles
self.assign_user_roles = assign_user_roles
self.assign_protected_user_roles = assign_protected_user_roles
self.launch_jobs = launch_jobs
self.invite_users = invite_users
self.remove_all_users = remove_all_users
self.remove_invited_users = remove_invited_users
self.view_all_users = view_all_users
self.edit_metadata = edit_metadata
self.add_lz = add_lz
self.remove_any_lz = remove_any_lz
self.view_all_jobs = view_all_jobs
self.control_all_jobs = control_all_jobs
self.view_jobs_on_own_lzs = view_jobs_on_own_lzs
self.control_jobs_on_own_lzs = control_jobs_on_own_lzs
self.view_own_jobs = view_own_jobs
self.control_own_jobs = control_own_jobs
self.view_complete_activity = view_complete_activity
self.edit_station_policy = edit_station_policy
self.edit_own_lz_policy = edit_own_lz_policy
self.edit_lz_policy = edit_lz_policy
self.edit_user_policy = edit_user_policy
self.edit_job_resource_limits = edit_job_resource_limits
self.add_autoscale = add_autoscale
self.edit_autoscale = edit_autoscale
self.remove_autoscale = remove_autoscale
self.manage_volumes = manage_volumes
self.reject_user_requests = reject_user_requests
self.create_tunnels = create_tunnels
self.allowed_mission_types = allowed_mission_types
def __str__(self):
return "Create Station Role Request: Name={name}".format(
name=self.name)
class UpdateStationRoleRequest(CreateStationRoleRequest, object):
def __init__(
self,
name=None,
description=None,
role_type=None,
protected_role=0,
edit_station_roles=0,
assign_user_roles=0,
assign_protected_user_roles=0,
launch_jobs=0,
invite_users=0,
remove_all_users=0,
remove_invited_users=0,
view_all_users=0,
edit_metadata=0,
add_lz=0,
remove_any_lz=0,
view_all_jobs=0,
control_all_jobs=0,
view_jobs_on_own_lzs=0,
control_jobs_on_own_lzs=0,
view_own_jobs=0,
control_own_jobs=0,
create_tunnels=None,
view_complete_activity=0,
edit_station_policy=0,
edit_own_lz_policy=0,
edit_lz_policy=0,
edit_user_policy=0,
edit_job_resource_limits=0,
add_autoscale=0,
edit_autoscale=0,
remove_autoscale=0,
manage_volumes=0,
reject_user_requests=0,
allowed_mission_types=None,
):
"""
Update a station role request
"""
super(UpdateStationRoleRequest, self).__init__(
name=name,
description=description,
role_type=role_type,
protected_role=protected_role,
edit_station_roles=edit_station_roles,
assign_user_roles=assign_user_roles,
assign_protected_user_roles=assign_protected_user_roles,
launch_jobs=launch_jobs,
invite_users=invite_users,
remove_all_users=remove_all_users,
remove_invited_users=remove_invited_users,
view_all_users=view_all_users,
edit_metadata=edit_metadata,
add_lz=add_lz,
remove_any_lz=remove_any_lz,
view_all_jobs=view_all_jobs,
control_all_jobs=control_all_jobs,
view_jobs_on_own_lzs=view_jobs_on_own_lzs,
control_jobs_on_own_lzs=control_jobs_on_own_lzs,
view_own_jobs=view_own_jobs,
create_tunnels=create_tunnels,
control_own_jobs=control_own_jobs,
view_complete_activity=view_complete_activity,
edit_station_policy=edit_station_policy,
edit_own_lz_policy=edit_own_lz_policy,
edit_lz_policy=edit_lz_policy,
edit_user_policy=edit_user_policy,
edit_job_resource_limits=edit_job_resource_limits,
add_autoscale=add_autoscale,
edit_autoscale=edit_autoscale,
remove_autoscale=remove_autoscale,
manage_volumes=manage_volumes,
reject_user_requests=reject_user_requests,
allowed_mission_types=allowed_mission_types,
)
def __str__(self):
# Return a string of all the non None attributes
return "Update Station Request: " + ", ".join([
"{}={}".format(k, v)
for k, v in self.__dict__.items() if v is not None
])
class AutoscaleSettings:
def __init__(
self,
id,
station_id,
creation_timestamp,
updated_timestamp,
increment_amount,
name_prefix,
computer_provider_id,
provision_count,
provision_count_min,
provision_count_max,
usage_threshold_up,
usage_threshold_down,
status,
):
"""
Autoscale settings
:param id: ID of the autoscale settings
:type id: str
:param station_id: ID of the station
:type station_id: str
:param creation_timestamp: The time the autoscale settings was created
:type creation_timestamp: str
:param updated_timestamp: Timestamp of the last update
:type updated_timestamp: str
:param increment_amount: Segment increment amount
:type increment_amount: number
:param name_prefix: Prefix for the autoscale names
:type name_prefix: str
:param computer_provider_id: Computer provider ID
:type computer_provider_id: str
:param provision_count: Provision count
:type provision_count: number
:param provision_count_min: Minimum provision count
:type provision_count_min: number
:param provision_count_max: Maximum provision count
:type provision_count_max: number
:param usage_threshold_up: Usage threshold up
:type usage_threshold_up: number
:param usage_threshold_down: Usage threshold down
:type usage_threshold_down: number
:param status: Status of the autoscale settings
:type status: str
"""
self.id = id
self.station_id = station_id
self.creation_timestamp = creation_timestamp
self.updated_timestamp = updated_timestamp
self.increment_amount = increment_amount
self.name_prefix = name_prefix
self.computer_provider_id = computer_provider_id
self.provision_count = provision_count
self.provision_count_min = provision_count_min
self.provision_count_max = provision_count_max
self.usage_threshold_up = usage_threshold_up
self.usage_threshold_down = usage_threshold_down
self.status = status
class StationRole:
def __init__(
self,
id,
station_id,
creation_timestamp,
updated_timestamp,
name,
description,
role_type,
protected_role,
edit_station_roles,
assign_user_roles,
assign_protected_user_roles,
launch_jobs,
invite_users,
remove_all_users,
remove_invited_users,
view_all_users,
edit_metadata,
add_lz,
remove_any_lz,
view_all_jobs,
control_all_jobs,
view_jobs_on_own_lzs,
control_jobs_on_own_lzs,
view_own_jobs,
control_own_jobs,
view_complete_activity,
edit_station_policy,
edit_own_lz_policy,
edit_lz_policy,
edit_user_policy,
edit_job_resource_limits,
manage_volumes,
reject_user_requests,
create_tunnels,
allowed_mission_types,
):
"""
Station role object
:param id: UUID of the station role
:type id: str
:param station_id: ID of the station
:type station_id: str
:param creation_timestamp: Timestamp of the creation of the station role
:type creation_timestamp: str
:param updated_timestamp: Timestamp of the last update of the station role
:type updated_timestamp: str
:param name: Name of the station role
:type name: str
:param description: Description of the station role
:type description: str
:param role_type: Role type of the station role
:type role_type: str
:param protected_role: Protected role of the station role
:type protected_role: bool
:param edit_station_roles: Ability to edit station roles
:type edit_station_roles: bool
:param assign_user_roles: Ability to assign user roles
:type assign_user_roles: bool
:param assign_protected_user_roles: Ability to assign protected user roles
:type assign_protected_user_roles: bool
:param launch_jobs: Ability to launch jobs
:type launch_jobs: bool
:param invite_users: Permission to invite users
:type invite_users: bool
:param remove_all_users: Permission to remove all users
:type remove_all_users: bool
:param remove_invited_users: Permission to remove invited users
:type remove_invited_users: bool
:param view_all_users: Permission to view all users
:type view_all_users: bool
:param edit_metadata: Ability to edit metadata
:type edit_metadata: bool
:param add_lz: Permission to add LZs
:type add_lz: bool
:param remove_any_lz: Permission to remove any LZ
:type remove_any_lz: bool
:param view_all_jobs: Permission to view all jobs
:type view_all_jobs: bool
:param control_all_jobs: Permission to control all jobs
:type control_all_jobs: bool
:param view_jobs_on_own_lzs: Permission to view jobs on own LZs
:type view_jobs_on_own_lzs: bool
:param control_jobs_on_own_lzs: Permission to control jobs on own LZs
:type control_jobs_on_own_lzs: bool
:param view_own_jobs: Permission to view own jobs
:type view_own_jobs: bool
:param control_own_jobs: Permission to control own jobs
:type control_own_jobs: bool
:param view_complete_activity: Permission to view complete activity
:type view_complete_activity: bool
:param edit_station_policy: Permission to edit station policy
:type edit_station_policy: bool
:param edit_own_lz_policy: Permission to edit own LZ policy
:type edit_own_lz_policy:bool
:param edit_lz_policy: Permission to edit LZ policy
:type edit_lz_policy: bool
:param edit_user_policy: Permission to edit user policy
:type edit_user_policy: bool
:param edit_job_resource_limits: Permission to edit job resource limits
:type edit_job_resource_limits: bool
:param manage_volumes: Permission to manage volumes
:type manage_volumes: bool
:param reject_user_requests: Ability to reject user requests
:type reject_user_requests: bool
:param create_tunnels: Permission to create tunnels
:type create_tunnels: bool
:param allowed_mission_types: List of allowed mission types
:type allowed_mission_types: list
""" """"""
self.id = id
self.station_id = station_id
self.creation_timestamp = creation_timestamp
self.updated_timestamp = updated_timestamp
self.name = name
self.description = description
self.role_type = role_type
self.protected_role = protected_role
self.edit_station_roles = edit_station_roles
self.assign_user_roles = assign_user_roles
self.assign_protected_user_roles = assign_protected_user_roles
self.launch_jobs = launch_jobs
self.invite_users = invite_users
self.remove_all_users = remove_all_users
self.remove_invited_users = remove_invited_users
self.view_all_users = view_all_users
self.edit_metadata = edit_metadata
self.add_lz = add_lz
self.remove_any_lz = remove_any_lz
self.view_all_jobs = view_all_jobs
self.control_all_jobs = control_all_jobs
self.view_jobs_on_own_lzs = view_jobs_on_own_lzs
self.control_jobs_on_own_lzs = control_jobs_on_own_lzs
self.view_own_jobs = view_own_jobs
self.control_own_jobs = control_own_jobs
self.view_complete_activity = view_complete_activity
self.edit_station_policy = edit_station_policy
self.edit_own_lz_policy = edit_own_lz_policy
self.edit_lz_policy = edit_lz_policy
self.edit_user_policy = edit_user_policy
self.edit_job_resource_limits = edit_job_resource_limits
self.manage_volumes = manage_volumes
self.reject_user_requests = reject_user_requests
self.create_tunnels = create_tunnels
self.allowed_mission_types = allowed_mission_types
def __str__(self):
return "{name} role for Station {station_id}".format(
name=self.name, station_id=self.station_id)
def __repr__(self):
return "Role {name}".format(name=self.name)
class StationsEvents:
def __init__(self):
self._event = EventEmitter()
def on_new_station(self, func):
self._event.on("new_station", func)
def new_station(self, event):
self._event.emit("new_station", event)
def on_station_admin_invite_sent(self, func):
self._event.on("station_admin_invite_sent", func)
def station_admin_invite_sent(self, event):
self._event.emit("station_admin_invite_sent", event)
def on_station_user_invite_received(self, func):
self._event.on("station_user_invite_received", func)
def station_user_invite_received(self, event):
self._event.emit("station_user_invite_received", event)
def on_station_admin_invite_accepted(self, func):
self._event.on("station_admin_invite_accepted", func)
def station_admin_invite_accepted(self, event):
self._event.emit("station_admin_invite_accepted", event)
def on_station_member_member_added(self, func):
self._event.on("station_member_member_added", func)
def station_member_member_added(self, event):
self._event.emit("station_member_member_added", event)
def on_station_user_invite_accepted(self, func):
self._event.on("station_user_invite_accepted", func)
def station_user_invite_accepted(self, event):
self._event.emit("station_user_invite_accept", event)
def on_station_admin_invite_rejected(self, func):
self._event.on("station_admin_invite_rejected", func)
def station_admin_invite_rejected(self, event):
self._event.emit("station_admin_invite_rejected", event)
def on_station_user_invite_rejected(self, func):
self._event.on("station_user_invite_rejected", func)
def station_user_invite_rejected(self, event):
self._event.emit("station_user_invite_rejected", event)
def on_station_admin_request_received(self, func):
self._event.on("station_admin_request_received", func)
def station_admin_request_received(self, event):
self._event.emit("station_admin_request_received", event)
def on_station_user_request_sent(self, func):
self._event.on("station_user_request_sent", func)
def station_user_request_sent(self, event):
self._event.emit("station_user_request_sent", event)
def on_station_admin_request_accepted(self, func):
self._event.on("station_admin_request_accepted", func)
def station_admin_request_accepted(self, event):
self._event.emit("station_admin_request_accepted", event)
def on_station_user_request_accepted(self, func):
self._event.on("station_user_request_accepted", func)
def station_user_request_accepted(self, event):
self._event.emit("station_user_request_accepted", event)
def on_station_admin_request_rejected(self, func):
self._event.on("station_admin_request_rejected", func)
def station_admin_request_rejected(self, event):
self._event.emit("station_admin_request_rejected", event)
def on_station_user_request_rejected(self, func):
self._event.on("station_user_request_rejected", func)
def station_user_request_rejected(self, event):
self._event.emit("station_user_request_rejected", event)
def on_station_admin_member_removed(self, func):
self._event.on("station_admin_member_removed", func)
def station_admin_member_removed(self, event):
self._event.emit("station_admin_member_removed", event)
def on_station_admin_machine_removed(self, func):
self._event.on("station_admin_machine_removed", func)
def station_admin_machine_removed(self, event):
self._event.emit("station_admin_machine_removed", event)
def on_station_member_member_removed(self, func):
self._event.on("station_member_member_removed", func)
def station_member_member_removed(self, event):
self._event.emit("station_member_member_removed", event)
def on_station_member_machine_removed(self, func):
self._event.on("station_member_machine_removed", func)
def station_member_machine_removed(self, event):
self._event.emit("station_member_machine_removed", event)
def on_station_user_withdrawn(self, func):
self._event.on("station_user_withdrawn", func)
def station_user_withdrawn(self, event):
self._event.emit("station_user_withdrawn", event)
def on_station_user_expelled(self, func):
self._event.on("station_user_expelled", func)
def station_user_expelled(self, event):
self._event.emit("station_user_expelled", event)
def on_station_admin_destroyed(self, func):
self._event.on("station_admin_destroyed", func)
def station_admin_destroyed(self, event):
self._event.emit("station_admin_destroyed", event)
def on_station_member_destroyed(self, func):
self._event.on("station_member_destroyed", func)
def station_member_destroyed(self, event):
self._event.emit("station_member_destroyed", event)
def on_station_user_invite_destroyed(self, func):
self._event.on("station_user_invite_destroyed", func)
def station_user_invite_destroyed(self, event):
self._event.emit("station_user_invite_destroyed", event)
def on_station_user_request_destroyed(self, func):
self._event.on("station_user_request_destroyed", func)
def station_user_request_destroyed(self, event):
self._event.emit("station_user_request_destroyed", event)
def on_station_admin_machine_added(self, func):
self._event.on("station_admin_machine_added", func)
def station_admin_machine_added(self, event):
self._event.emit("station_admin_machine_added", event)
def on_station_member_machine_added(self, func):
self._event.on("station_member_machine_added", func)
def station_member_machine_added(self, event):
self._event.emit("station_member_machine_added", event)
def on_station_admin_volume_added(self, func):
self._event.on("station_admin_volume_added", func)
def station_admin_volume_added(self, event):
self._event.emit("station_admin_volume_added", event)
def on_station_member_volume_added(self, func):
self._event.on("station_member_volume_added", func)
def station_member_volume_added(self, event):
self._event.emit("station_member_volume_added", event)
def on_station_admin_volume_host_path_added(self, func):
self._event.on("station_admin_volume_host_path_added", func)
def station_admin_volume_host_path_added(self, event):
self._event.emit("station_admin_volume_host_path_added", event)
def on_station_member_volume_host_path_added(self, func):
self._event.on("station_member_volume_host_path_added", func)
def station_member_volume_host_path_added(self, event):
self._event.emit("station_member_volume_host_path_added", event)
def on_station_admin_volume_host_path_removed(self, func):
self._event.on("station_admin_volume_host_path_removed", func)
def station_admin_volume_host_path_removed(self, event):
self._event.emit("station_admin_volume_host_path_removed", event)
def on_station_member_volume_host_path_removed(self, func):
self._event.on("station_member_volume_host_path_removed", func)
def station_member_volume_host_path_removed(self, event):
self._event.emit("station_member_volume_host_path_removed", event)
def on_station_admin_volume_removed(self, func):
self._event.on("station_admin_volume_removed", func)
def station_admin_volume_removed(self, event):
self._event.emit("station_admin_volume_removed", event)
def on_station_member_volume_removed(self, func):
self._event.on("station_member_volume_removed", func)
def station_member_volume_removed(self, event):
self._event.emit("station_member_volume_removed", event)
def on_station_admin_station_updated(self, func):
self._event.on("station_admin_station_updated", func)
def station_admin_station_updated(self, event):
self._event.emit("station_admin_station_updated", event)
def on_station_member_station_updated(self, func):
self._event.on("station_member_station_updated", func)
def station_member_station_updated(self, event):
self._event.emit("station_admin_station_updated", event)