Exemplo n.º 1
0
 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))
Exemplo n.º 3
0
 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
Exemplo n.º 6
0
 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')
Exemplo n.º 12
0
 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))
Exemplo n.º 16
0
 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)