def get_default_zone(self): backends = self.get_default_environment().json()['backends'] zones = [bk for bk in backends if bk['isDefault'] == True] if len(zones): zoneId = zones[-1]['id'] return self.get_zone(id=zoneId) raise exceptions.NotFoundError('Unable to get default zone')
def find(self, item, description='', event_type=''): """ Find regexp in activitylog find record as if type are in description. """ # TODO: should be refactored, dumb logic if ': ' in item: splited = item.split(': ', 1) if splited[0] in self.TYPES: description = item.split(': ')[1] event_type = item.split(': ')[0] else: description = item else: if not description: description = item if event_type: found = [ x['time'] for x in self.log if re.search(description, x['description']) and x['eventTypeText'] == event_type ] else: found = [ x['time'] for x in self.log if re.search(description, x['description']) ] if len(found): return found raise exceptions.NotFoundError( "Item '{}' is not found with (description='{}', event_type='{}')". format(item, description, event_type))
def json(self): resp = self._router.get_users(org_id=self.organizationId).json() ids = [x for x in resp if x['id'] == self.id] if len(ids): return ids[0] else: raise exceptions.NotFoundError('User with email: %s not found' % self.email)
def json(self): url = self.context.api+'/api/1/organizations' resp = requests.get(url, auth=(self.context.user, self.context.password), verify=False) log.debug(resp.text) if resp.status_code == 200: org = [x for x in resp.json() if x['id'] == self.organizationId] if len(org)>0: return org[0] raise exceptions.NotFoundError('Unable to get organization by id: %s' % self.organizationId) raise exceptions.ApiError('Unable to get organization by id: %s, got error: %s' % (self.organizationId, resp.text))
def __getattr__(self, key): if key in [ 'instanceId', ]: raise exceptions.NotFoundError( 'Unable to get instance property: %s' % key) if key == 'ready': log.debug('Checking instance status') return self.ready() #TODO: FIXME: old API support: remove when its support will be removed on server elif key in ['scheduledWorkflows', 'availableWorkflows']: log.debug('Getting instance workflow attribute: %s' % key) j = self.json() api_value = j.get('workflowsInfo', {}).get(key, False) atr = api_value or [] log.debug(atr) return atr elif key == 'workflowHistory': log.debug('Getting instance workflow attribute: %s' % key) j = self.json() old_api_value = j.get('workflowsInfo', {}).get(key, False) if not old_api_value: new_api_value = self._router.get_instance_workflowhistory( org_id=self.organizationId, instance_id=self.instanceId).json() else: new_api_value = False atr = new_api_value or old_api_value or [] log.debug(atr) return atr elif key == 'workflowsInfo': log.debug('Getting instance attribute: %s' % key) j = self.json() api_value = j.get('workflowsInfo', False) old_workflowHistory = api_value.get('workflowHistory', False) if not old_workflowHistory: api_value[ 'workflowHistory'] = self._router.get_instance_workflowhistory( org_id=self.organizationId, instance_id=self.instanceId).json() atr = api_value or {} log.debug(atr) return atr else: log.debug('Getting instance attribute: %s' % key) atr = self.json()[key] log.debug(atr) return atr
def get(router, organization, email): """ :rtype: User """ log.info("Getting user: %s" % email) resp = router.get_users(org_id=organization.id).json() ids = [x['id'] for x in resp if x['email'] == email] if len(ids): user = User(organization, ids[0]).init_router(router) return user else: raise exceptions.NotFoundError('User with email: %s not found' % email)
def __getitem__(self, item): self._id_name_list() if isinstance(item, int): return self._get_item(self._list[item]) elif isinstance(item, slice): return [self._get_item(i) for i in self._list[item]] found = [ x for x in self._list if (is_bson_id(item) and x.id == item) or x.name == item ] if len(found) is 0: raise exceptions.NotFoundError("None of '{1}' in {0}".format( self.__class__.__name__, item)) return self._get_item(found[-1])
def provider(self, id=None, name=None, parameters=None): """ Smart object. Will create provider or pick one, if exists""" if name: provs = [prov for prov in self.list_providers() if prov['name'] == name] # provider found by name if len(provs): return self.get_provider(provs[0]['id']) # pick first elif parameters: return self.create_provider(name=name, parameters=parameters) else: name = 'generated-provider' if id: return self.get_provider(id) elif parameters: return self.create_provider(name=name, parameters=parameters) raise exceptions.NotFoundError('Provider not found or not enough parameters to create provider: %s' % name)
def service(self, id=None, name=None, type=None, parameters={}, zone=None): """ Smart object. Will create service or pick one, if exists""" if name: servs = [srv for srv in self.list_services() if srv['name'] == name] # service found by name if len(servs): return self.get_service(servs[0]['id']) # pick first elif type: return self.create_service(name, type, parameters, zone) else: name = 'generated-service' if id: return self.get_service(id) elif type: return self.create_service(name, type, parameters, zone) raise exceptions.NotFoundError('Service not found or not enough parameters to create service: %s' % name)
def __getattr__(self, key): if key in ['instanceId', ]: raise exceptions.NotFoundError('Unable to get instance property: %s' % key) if key == 'ready': log.debug('Checking instance status') return self.ready() #TODO: FIXME: old API support: remove when its support will be removed on server elif key in ['workflowHistory', 'scheduledWorkflows', 'availableWorkflows']: log.debug('Getting instance workflow attribute: %s' % key) j = self.json() old_api_value = j.get(key) new_api_value = j.get('workflowsInfo', {}).get(key, False) atr = new_api_value or old_api_value or [] log.debug(atr) return atr else: log.debug('Getting instance attribute: %s' % key) atr = self.json()[key] log.debug(atr) return atr
def default(self): """ Returns environment marked as default. When Zone is set marked default makes no sense, special env with proper Zone is returned. """ if ZONE_NAME: log.info( "Getting or creating default environment for zone with name '{0}'" .format(DEFAULT_ENV_NAME())) zone_id = self.organization.zones[ZONE_NAME].id return self.organization.get_or_create_environment( name=DEFAULT_ENV_NAME(), zone=zone_id) def_envs = [env_j["id"] for env_j in self.json() if env_j["isDefault"]] if len(def_envs) > 1: log.warning( 'Found more than one default environment. Picking last.') return self[def_envs[-1]] elif len(def_envs) == 1: return self[def_envs[0]] raise exceptions.NotFoundError('Unable to get default environment')
def __getattr__(self, key): resp = self.json() if not resp.has_key(key): raise exceptions.NotFoundError('Cannot get property %s' % key) return resp[key] or False
def not_found(hint=''): raise exceptions.NotFoundError( 'Activitylog interval not found: [{} , {}], due to {}'.format( start_text, end_text, hint))
def not_found(hint=''): raise exceptions.NotFoundError( "Activitylog item not found: '{}', due to {}".format( item, hint))
def instance_not_found_pretty(): return exceptions.NotFoundError( "Instance with '{0}' not found in organization {1}".format( name, organization.name))
def __getattr__(self, key): resp = self.json() if key in resp: return resp[key] or False raise exceptions.NotFoundError('Cannot get revision property %s' % key)