Ejemplo n.º 1
0
 def get_metadata(self, name=None):
     if not name:
         name = self.get_device_name()
     request_url = self.bigip.icr_url + '/cm/device/~Common~'
     request_url += name + '?$select=name,description'
     response = self.bigip.icr_session.get(request_url,
                                           timeout=const.CONNECTION_TIMEOUT)
     str_comment = None
     if response.status_code < 400:
         response_obj = json.loads(response.text)
         if response_obj['name'] == name:
             if 'description' in response_obj:
                 str_comment = response_obj['description']
     elif response.status_code != 404:
         Log.error('device', response.text)
         raise exceptions.DeviceQueryException(response.text)
     if str_comment:
         try:
             return json.loads(base64.decodestring(str_comment))
         except:
             try:
                 return base64.decodestring(str_comment)
             except:
                 return str_comment
     return None
Ejemplo n.º 2
0
 def get_failover_state(self):
     request_url = self.bigip.icr_url + '/cm/device/~Common'
     request_url += '~' + self.get_device_name()
     request_url += '/?$select=failoverState'
     response = self.bigip.icr_session.get(request_url,
                                           timeout=const.CONNECTION_TIMEOUT)
     if response.status_code < 400:
         response_obj = json.loads(response.text)
         return response_obj['failoverState']
     else:
         Log.error('device', response.text)
         raise exceptions.DeviceQueryException(response.text)
     return None
Ejemplo n.º 3
0
 def get_configsync_addr(self):
     """ Get device config sync ip """
     request_url = self.bigip.icr_url + '/cm/device/~Common'
     request_url += '~' + self.get_device_name()
     request_url += '/?$select=configsyncIp'
     response = self.bigip.icr_session.get(request_url,
                                           timeout=const.CONNECTION_TIMEOUT)
     if response.status_code < 400:
         response_obj = json.loads(response.text)
         return response_obj['configsyncIp']
     else:
         Log.error('device', response.text)
         raise exceptions.DeviceQueryException(response.text)
         return None
Ejemplo n.º 4
0
 def get_mgmt_addr_by_device(self, devicename):
     request_url = self.bigip.icr_url + '/cm/device'
     request_url += '/?$select=managementIp,name'
     response = self.bigip.icr_session.get(request_url,
                                           timeout=const.CONNECTION_TIMEOUT)
     if response.status_code < 400:
         response_obj = json.loads(response.text)
         if 'items' in response_obj:
             for device in response_obj['items']:
                 if device['name'] == devicename:
                     return device['managementIp']
     else:
         Log.error('device', response.text)
         raise exceptions.DeviceQueryException(response.text)
     return None
Ejemplo n.º 5
0
 def get_all_mgmt_addrs(self):
     request_url = self.bigip.icr_url + '/cm/device'
     request_url += '/?$select=managementIp'
     response = self.bigip.icr_session.get(request_url,
                                           timeout=const.CONNECTION_TIMEOUT)
     if response.status_code < 400:
         response_obj = json.loads(response.text)
         if 'items' in response_obj:
             mgmt_addrs = []
             for device in response_obj['items']:
                 mgmt_addrs.append(device['managementIp'])
         return mgmt_addrs
     else:
         Log.error('device', response.text)
         raise exceptions.DeviceQueryException(response.text)
     return None
Ejemplo n.º 6
0
 def get_secondary_mirror_addr(self):
     request_url = self.bigip.icr_url + '/cm/device/~Common'
     request_url += '~' + self.get_device_name()
     request_url += '/?$select=mirrorSecondaryIp'
     response = self.bigip.icr_session.get(request_url,
                                           timeout=const.CONNECTION_TIMEOUT)
     if response.status_code < 400:
         response_obj = json.loads(response.text)
         secondary = response_obj['mirrorSecondaryIp']
         if secondary == 'any6':
             return None
         else:
             return secondary
     else:
         Log.error('device', response.text)
         raise exceptions.DeviceQueryException(response.text)
     return None
Ejemplo n.º 7
0
 def get_all_device_names(self):
     request_url = self.bigip.icr_url + '/cm/device'
     request_filter = '/?$select=name&filter partition eq Common'
     request_url += request_filter
     response = self.bigip.icr_session.get(request_url,
                                           timeout=const.CONNECTION_TIMEOUT)
     if response.status_code < 400:
         response_obj = json.loads(response.text)
         if 'items' in response_obj:
             devices = response_obj['items']
             device_names = []
             for device in devices:
                 device_names.append(device['name'])
             return device_names
     else:
         Log.error('device', response.text)
         raise exceptions.DeviceQueryException(response.text)
     return []
Ejemplo n.º 8
0
 def set_configsync_addr(self, ip_address=None, folder='/Common'):
     dev_name = self.get_device_name()
     request_url = self.bigip.icr_url + '/cm/device/'
     request_url += '~Common~' + dev_name
     payload = dict()
     if not ip_address:
         payload['configsyncIp'] = None
     else:
         payload['configsyncIp'] = ip_address
     response = self.bigip.icr_session.put(request_url,
                                           data=json.dumps(payload),
                                           timeout=const.CONNECTION_TIMEOUT)
     if response.status_code < 400:
         return True
     else:
         Log.error('device', response.text)
         raise exceptions.DeviceQueryException(response.text)
     return False
Ejemplo n.º 9
0
 def get_device_name(self):
     if not self.devicename:
         request_url = self.bigip.icr_url + '/cm/device'
         request_filter = '/?$select=name,selfDevice'
         request_filter += '&filter partition eq Common'
         request_url += request_filter
         response = self.bigip.icr_session.get(
             request_url, timeout=const.CONNECTION_TIMEOUT)
         if response.status_code < 400:
             response_obj = json.loads(response.text)
             if 'items' in response_obj:
                 devices = response_obj['items']
                 for device in devices:
                     if device['selfDevice'] == 'true':
                         self.devicename = device['name']
         else:
             Log.error('device', response.text)
             raise exceptions.DeviceQueryException(response.text)
     return self.devicename
Ejemplo n.º 10
0
 def get_device_group(self):
     request_url = self.bigip.icr_url + '/cm/device-group'
     request_url += '/?$select=name,type'
     response = self.bigip.icr_session.get(request_url,
                                           timeout=const.CONNECTION_TIMEOUT)
     if response.status_code < 400:
         response_obj = json.loads(response.text)
         if 'items' in response_obj:
             dsgs = response_obj['items']
             for dsg in dsgs:
                 if dsg['type'] == 'sync-failover':
                     return dsg['name']
             return None
     elif response.status_code == 404:
         return None
     else:
         Log.error('device-group', response.text)
         raise exceptions.DeviceQueryException(response.text)
     return None
Ejemplo n.º 11
0
 def get_failover_addrs(self):
     request_url = self.bigip.icr_url + '/cm/device/~Common'
     request_url += '~' + self.get_device_name()
     request_url += '/?$select=unicastAddress'
     response = self.bigip.icr_session.get(request_url,
                                           timeout=const.CONNECTION_TIMEOUT)
     if response.status_code < 400:
         response_obj = json.loads(response.text)
         return_addresses = []
         if 'unicastAddress' in response_obj:
             uas = response_obj['unicastAddress']
             for ua in uas:
                 return_addresses.append(ua['ip'])
             return return_addresses
         else:
             return []
     else:
         Log.error('device', response.text)
         raise exceptions.DeviceQueryException(response.text)
     return []