Esempio n. 1
0
 def renew_user_authorization_rbac(cls,
                                   https_client=get_gremlin_httpclient(),
                                   *args,
                                   **kwargs):
     method = 'GET'
     email = cls._error_if_not_email(**kwargs)
     company_id = kwargs.get('companyId', None)
     team_id = cls._error_if_not_param('teamnId', **kwargs)
     renew_token = kwargs.get('renewToken', None)
     if not company_id:
         error_msg = f'orgId required parameter not supplied: {kwargs}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     if not renew_token:
         error_msg = f'renewToken required parameter not supplied: {kwargs}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     data = {
         'email': email,
         'companyId': company_id,
         'teamId': team_id,
         'renewToken': renew_token
     }
     endpoint = f'/users/renew/rbac'
     payload = cls._payload(**{
         'headers': https_client.header(),
         'data': data
     })
     (resp, body) = https_client.api_call(method, endpoint, **payload)
     return body
Esempio n. 2
0
 def _error_if_not_json_body(cls, **kwargs):
     body = cls._warn_if_not_json_body(**kwargs)
     if not body:
         error_msg = f'JSON Body not supplied: {kwargs}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     return body
Esempio n. 3
0
 def _error_if_not_param(cls, parameter_name, **kwargs):
     param = cls._info_if_not_param(parameter_name, **kwargs)
     if not param:
         error_msg = f'{parameter_name} not supplied: {kwargs}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     return param
 def delay(self, _delay):
     if isinstance(_delay, int) and _delay >= 1:
         self._delay = _delay
     else:
         error_msg = f'delay expects a positive integer {type(int)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
 def command(self, _command=None):
     if _command and issubclass(type(_command), GremlinAttackCommandHelper):
         self._command = _command
     else:
         error_msg = f'command expects a GremlinAttackCommandHelper {type(GremlinAttackCommandHelper)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
 def target(self, _target=None):
     if _target and issubclass(type(_target), GremlinAttackTargetHelper):
         self._target = _target
     else:
         error_msg = f'target expects a GremlinAttackTargetHelper {type(GremlinAttackTargetHelper)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
 def add_step(self, _step=None):
     if not issubclass(type(_step), GremlinScenarioStep):
         error_msg = f'The step must extend from {type(GremlinScenarioStep)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     _cur_step_obj = json.loads(str(_step))
     if len(self._steps) > 0:
         log.debug('checking last step')
         _last_step_obj = self._steps[-1]
         last_attack_type = _last_step_obj['attacks'][0]['attackType']
         last_target_type = _last_step_obj['attacks'][0][
             'targetDefinition']['targetType']
         last_command_type = _last_step_obj['attacks'][0][
             'impactDefinition']['commandType']
         cur_attack_type = _cur_step_obj['attacks'][0]['attackType']
         cur_target_type = _cur_step_obj['attacks'][0]['targetDefinition'][
             'targetType']
         cur_command_type = _cur_step_obj['attacks'][0]['impactDefinition'][
             'commandType']
         if not last_attack_type == cur_attack_type:
             error_msg = f'Each step must target the same attackType'
             log.fatal(error_msg)
             raise GremlinCommandTargetError(error_msg)
         if not last_target_type == cur_target_type:
             error_msg = f'Each step must target the same primitive typeset'
             log.fatal(error_msg)
             raise GremlinCommandTargetError(error_msg)
         if not last_command_type == cur_command_type:
             error_msg = f'Each step must use the same command type'
             log.fatal(error_msg)
             raise GremlinCommandTargetError(error_msg)
         self._steps.append(_cur_step_obj)
     else:
         log.debug('fist step, just adding')
         self._steps.append(_cur_step_obj)
 def name(self, _name=None):
     if isinstance(_name, str):
         self._name = _name
     else:
         error_msg = f'name expects type {type(str)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
Esempio n. 9
0
 def _error_if_not_valid_role_statement(cls, **kwargs):
     role = kwargs.get('role', None)
     if not role:
         error_msg = f'Role object not passed to users endpoint: {kwargs}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     return role
 def evaluation_response_body_evaluation(
         self, _evaluation_response_body_evaluation=None):
     if not _evaluation_response_body_evaluation:
         error_msg = f'evaluation_response_body_evaluation expects an argument, none provided'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._evaluation_response_body_evaluation = _evaluation_response_body_evaluation
 def _validate_type(self, _node=None):
     _caller = inspect.stack()[2][3]
     if not issubclass(type(_node), GremlinScenarioNode):
         error_msg = f'{_caller} expects node to be a subclass of GremlinScenarioNode, received {type(_node)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     return True
Esempio n. 12
0
 def _user_report_endpoint(cls, endpoint, **kwargs):
     email = cls._error_if_not_param('teamId', **kwargs)
     if not email:
         error_msg = f'userEmail not supplied to reports.security endpoint: {kwargs}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     endpoint += cls._report_endpoint(endpoint, **kwargs) + f'&userEmail={email}'
     return endpoint
Esempio n. 13
0
 def _error_if_not_email(cls, **kwargs):
     email = cls._info_if_not_param('email', **kwargs)
     if not email:
         error_msg = f'email address not passed: {kwargs}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     # Do some email regex validation here...
     return email
 def get_node(self, _index=None):
     if not isinstance(_index, int):
         error_msg = f'get_node expects index as integer, received {type(_index)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     node = self.head
     for idx in range(_index):
         node = node.next
         if node == self.head:
             return None
     return node
Esempio n. 15
0
 def _list_endpoint(cls, endpoint, *args, **kwargs):
     if not endpoint:
         error_msg = f'endpoint not passed correctly: {args} :: {kwargs}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     source = cls._warn_if_not_param('source', **kwargs)
     page_size = cls._warn_if_not_param('pageSize', **kwargs)
     if source or page_size:
         endpoint += '/?'
         if source and (source.lower() == 'adhoc' or source.lower() == 'scenario'):
             endpoint += f'source={source}&'
         if page_size and isinstance(page_size, int):
             endpoint += f'pageSize={page_size}&'
     return cls._optional_team_endpoint(endpoint, **kwargs)
Esempio n. 16
0
 def _build_query_string_endpoint(cls, endpoint, params, **kwargs):
     if not endpoint:
         error_msg = 'expected endpoint, received nothing'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     if not params or type(params) != type(list()):
         error_msg = f'Expected list of params, received {type(params)}'
         log.fatal(error_msg)
         raise (error_msg)
     for param_name in params:
         endpoint = cls._add_query_param(
             endpoint, param_name,
             cls._error_if_not_param(param_name, **kwargs))
     return endpoint
 def uuid(self):
     if not self.name:
         error_msg = f'Node Name is required to build a scenario node, please set a node name'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     return f'{self.name}-{self.id}'
 def attack_type(self, _attack_type=None):
     if not isinstance(_attack_type, str):
         error_msg = f'attack_type expects string {type(str)}, received {type(_attack_type)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._attack_type = _attack_type
 def command(self, _command=None):
     if not issubclass(type(_command), GremlinAttackCommandHelper):
         error_msg = f'impact_definition expects a GremlinAttackCommandHelper, received {type(_command)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._command = _command
 def target(self, _target=None):
     if not issubclass(type(_target), GremlinAttackTargetHelper):
         error_msg = f'target_definition expects a GremlinAttackTargetHelper, received {type(_target)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._target = _target
 def delay(self, _duration=None):
     if not isinstance(_duration, int):
         error_msg = f'delay expects int type {type(int)}, received {type(_duration)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._delay = _duration
 def add_node(self, _node=None):
     if not issubclass(type(_node), GremlinScenarioNode):
         error_msg = f'add_node expects GremlinScenarioNode (or None), received {type(_node)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._nodes.append(_node)
 def evaluation_ok_status_codes(self, _status_codes=None):
     if not isinstance(_status_codes, list):
         error_msg = f'evaluation_ok_status_codes expects a list of integers or strings, received {type(_status_codes)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._evaluation_ok_status_codes = _status_codes
 def name(self, _name=None):
     if not isinstance(_name, str):
         error_msg = f'Name expects string {type(str())}, received {type(_name)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._name = _name
 def hypothesis(self, _hypothesis=None):
     if not isinstance(_hypothesis, str):
         error_msg = f'Hypothesis expects string {type(str())}, received {type(_hypothesis)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._hypothesis = _hypothesis
 def id(self, _id=None):
     if not isinstance(_id, str):
         error_msg = f'id expects a string {type(str)}, received {type(str)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._id = _id
 def description(self, _description=None):
     if not isinstance(_description, str):
         error_msg = f'Description expects string {type(str())}, received {type(_description)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._description = _description
 def previous(self, _node=None):
     if not issubclass(type(_node), GremlinScenarioNode):
         error_msg = f'previous expects a GremlinScenarioNode, received {type(_node)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._previous = _node
 def endpoint_url(self, _url=None):
     if not isinstance(_url, str):
         error_msg = f'url expects a valid url string, received {type(_url)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._endpoint_url = _url
 def evaluation_ok_latency_max(self, _latency=None):
     if not isinstance(_latency, int):
         error_msg = f'evaluation_ok_latency_max expects an int, received {type(_latency)}'
         log.fatal(error_msg)
         raise GremlinParameterError(error_msg)
     self._evaluation_ok_latency_max = _latency