Esempio n. 1
0
 def __init__ ( self, config ) :
     global controller
     
     #self.base_uri = 'http://172.24.42.141/api'
     self.base_uri = config.SFA_CLAB_URL
     
     controller = Api(self.base_uri) #(config.CLAP_API_URL)
     try:
         controller.retrieve()
     except requests.exceptions.MissingSchema as e:
         raise MalformedURI(self.base_uri, e.message)
     except requests.exceptions.ConnectionError as e:
         raise UnexistingURI(self.base_uri, e.message)
     except ValueError:
         raise InvalidURI(self.base_uri)
         
     # Use of a default user for the C-Lab SFAWrap
     #self.username='******' 
     #self.password='******' 
     #self.groupname='vct' 
     
     self.username = config.SFA_CLAB_USER
     self.password = config.SFA_CLAB_PASSWORD 
     self.groupname = config.SFA_CLAB_GROUP
     controller.login(self.username, self.password)
     self.default_template = config.SFA_CLAB_DEFAULT_TEMPLATE
Esempio n. 2
0
 def test_retrieve_base(self):
     group = self.api.groups.retrieve()[0]
     name = 'RandomNode-%s' % random_ascii(10)
     self.test_login()
     node = self.api.nodes.create(name=name, group=group)
     controller = Api(node.uri)
     controller.retrieve()
     self.assertEqual(self.api, controller)
     self.assertEqual(self.api._data, controller._data)
Esempio n. 3
0
 def test_retrieve_base(self):
     group = self.api.groups.retrieve()[0]
     name = 'RandomNode-%s' % random_ascii(10)
     self.test_login()
     node = self.api.nodes.create(name=name, group=group)
     controller = Api(node.uri)
     controller.retrieve()
     self.assertEqual(self.api, controller)
     self.assertEqual(self.api._data, controller._data)
Esempio n. 4
0
class CouchBaseRetriever:
    
    def __init__(self):
        # connection to CouchBase DB
        self.cb = Couchbase.connect(bucket=config.COUCHBASE_BUCKET, host=config.COUCHBASE_HOST, port=config.COUCHBASE_PORT)
        # connection to C-Lab Controller API
        self.api = Api(config.CLAB_CONTROLLER_API)
        self.api.retrieve()
    
    def get_nodes_monitoring_metric(self, metric):
        view=View(self.cb, config.DESIGN_VIEW, config.VIEWS[metric], include_docs=True, full_set=True)
        nodes_info={}
        for v in view:
            node_name=v.value['node']
            nodes_info[node_name]=v.value
        if metric == 'availability':
            return self.get_nodes_availability(nodes_info)
        return collections.OrderedDict(sorted(nodes_info.items()))

    
    def get_nodes_availability(self, nodes_info):
        nodes = self.api.nodes.retrieve()
        nodes_availability = {}
        timestamp = current_epoch_timestamp()
        for node in nodes:
            addr = "[{0}]".format(node.mgmt_net.addr)
            current_state= nodes_info[node.name]['current_state'] if node.name in nodes_info else 'UNKNOWN'
            up = 1 if current_state=='production' else 0
            nodes_availability[node.name]={'node':unicode_normalize(node.name), 'node_addr':addr, 'timestamp':timestamp, 'up':up, 'current_state':current_state}
        return collections.OrderedDict(sorted(nodes_availability.items()))
    

    
    
    
        
Esempio n. 5
0
class ApiTests(unittest.TestCase):
    def setUp(self):
        self.api = Api(os.environ['CONFINE_SERVER_API'])

    def test_attributes(self):
        self.assertEqual(['uri'], self.api._data.keys())

    def test_self_retrieve(self):
        self.api.retrieve()
        self.assertEqual(3, len(self.api._data))

    def test_managers(self):
        self.api.nodes
        with self.assertRaises(AttributeError):
            self.api.rata

    def test_login(self):
        self.assertRaises(self.api.ResponseStatusError, self.api.login)
        self.api.username = os.environ['CONFINE_USER']
        self.api.password = os.environ['CONFINE_PASSWORD']
        self.api.login()
        auth_header = self.api.DEFAULT_HEADERS['authorization']
        self.assertLess(20, auth_header)

    def test_login_providing_credentials(self):
        username = os.environ['CONFINE_USER']
        password = os.environ['CONFINE_PASSWORD']
        self.api.login(username=username, password=password)
        self.assertEqual(self.api.username, username)
        self.assertEqual(self.api.password, password)
        auth_header = self.api.DEFAULT_HEADERS['authorization']
        self.assertLess(20, auth_header)

    def test_logout(self):
        self.test_login()
        self.api.logout()
        self.assertNotIn('authorization', self.api.DEFAULT_HEADERS)

    def test_retrieve_base(self):
        group = self.api.groups.retrieve()[0]
        name = 'RandomNode-%s' % random_ascii(10)
        self.test_login()
        node = self.api.nodes.create(name=name, group=group)
        controller = Api(node.uri)
        controller.retrieve()
        self.assertEqual(self.api, controller)
        self.assertEqual(self.api._data, controller._data)

    def test_caching(self):
        api = Api(os.environ['CONFINE_SERVER_API'], cache=True)
        api.nodes.retrieve()
        self.assertEqual(0, api.cache.hits)
        self.assertEqual(2, api.cache.misses)
        nodes = api.nodes.retrieve()
        self.assertEqual(1, api.cache.hits)
        self.assertEqual(2, api.cache.misses)
        for node in nodes:
            node.retrieve()
        self.assertEqual(len(nodes) + 2, api.cache.misses)
        self.assertEqual(1, api.cache.hits)
        for node in nodes:
            node.retrieve()
        self.assertEqual(len(nodes) + 1, api.cache.hits)
        self.assertEqual(len(nodes) + 2, api.cache.misses)
        api.cache.invalidate()
        self.assertEqual(0, api.stats['conditional'])
        for node in nodes:
            node.retrieve()
        self.assertEqual(len(nodes), api.stats['conditional'])
        api.cache.remove()
        for node in nodes:
            node.retrieve()
        self.assertEqual(len(nodes), api.stats['conditional'])
        self.assertEqual((2 * len(nodes)) + 1, api.cache.hits)
        self.assertEqual((2 * len(nodes)) + 2, api.cache.misses)
Esempio n. 6
0
class ApiTests(unittest.TestCase):
    def setUp(self):
        self.api = Api(os.environ['CONFINE_SERVER_API'])
    
    def test_attributes(self):
        self.assertEqual(['uri'], self.api._data.keys())
    
    def test_self_retrieve(self):
        self.api.retrieve()
        self.assertEqual(3, len(self.api._data))
    
    def test_managers(self):
        self.api.nodes
        with self.assertRaises(AttributeError):
            self.api.rata
    
    def test_login(self):
        self.assertRaises(self.api.ResponseStatusError, self.api.login)
        self.api.username = os.environ['CONFINE_USER']
        self.api.password = os.environ['CONFINE_PASSWORD']
        self.api.login()
        auth_header = self.api.DEFAULT_HEADERS['authorization']
        self.assertLess(20, auth_header)
    
    def test_login_providing_credentials(self):
        username = os.environ['CONFINE_USER']
        password = os.environ['CONFINE_PASSWORD']
        self.api.login(username=username, password=password)
        self.assertEqual(self.api.username, username)
        self.assertEqual(self.api.password, password)
        auth_header = self.api.DEFAULT_HEADERS['authorization']
        self.assertLess(20, auth_header)
    
    def test_logout(self):
        self.test_login()
        self.api.logout()
        self.assertNotIn('authorization', self.api.DEFAULT_HEADERS)
    
    def test_retrieve_base(self):
        group = self.api.groups.retrieve()[0]
        name = 'RandomNode-%s' % random_ascii(10)
        self.test_login()
        node = self.api.nodes.create(name=name, group=group)
        controller = Api(node.uri)
        controller.retrieve()
        self.assertEqual(self.api, controller)
        self.assertEqual(self.api._data, controller._data)
    
    def test_caching(self):
        api = Api(os.environ['CONFINE_SERVER_API'], cache=True)
        api.nodes.retrieve()
        self.assertEqual(0, api.cache.hits)
        self.assertEqual(2, api.cache.misses)
        nodes = api.nodes.retrieve()
        self.assertEqual(1, api.cache.hits)
        self.assertEqual(2, api.cache.misses)
        for node in nodes:
            node.retrieve()
        self.assertEqual(len(nodes)+2, api.cache.misses)
        self.assertEqual(1, api.cache.hits)
        for node in nodes:
            node.retrieve()
        self.assertEqual(len(nodes)+1, api.cache.hits)
        self.assertEqual(len(nodes)+2, api.cache.misses)
        api.cache.invalidate()
        self.assertEqual(0, api.stats['conditional'])
        for node in nodes:
            node.retrieve()
        self.assertEqual(len(nodes), api.stats['conditional'])
        api.cache.remove()
        for node in nodes:
            node.retrieve()
        self.assertEqual(len(nodes), api.stats['conditional'])
        self.assertEqual((2*len(nodes))+1, api.cache.hits)
        self.assertEqual((2*len(nodes))+2, api.cache.misses)