docs: def save(self):
          """
          :return: save this location on Ariane server (create or update)
              'locationID': self.id,
              'locationName': self.name,
              'locationDescription': self.description,
              'locationAddress': self.address,
              'locationZipCode': self.zip_code,
              'locationTown': self.town,
              'locationType': self.type,
              'locationCountry': self.country,
              'locationGPSLat': self.gpsLatitude,
              'locationGPSLng': self.gpsLongitude,
              'locationRoutingAreasID': self.routing_area_ids,
              'locationSubnetsID': self.subnet_ids
          """
          LOGGER.debug("Location.save")
          post_payload = {}
          consolidated_ra_id = []
          consolidated_sn_id = []
  
          if self.id is not None:
              post_payload['locationID'] = self.id
  
          if self.name is not None:
              post_payload['locationName'] = self.name
  
          if self.description is not None:
              post_payload['locationDescription'] = self.description
  
          if self.type is not None:
              post_payload['locationType'] = self.type
  
          if self.address is not None:
              post_payload['locationAddress'] = self.address
  
          if self.zip_code is not None:
              post_payload['locationZipCode'] = self.zip_code
  
          if self.town is not None:
              post_payload['locationTown'] = self.town
  
          if self.country is not None:
              post_payload['locationCountry'] = self.country
  
          if self.gpsLatitude is not None:
              post_payload['locationLatitude'] = self.gpsLatitude
  
          if self.gpsLongitude is not None:
              post_payload['locationLongitude'] = self.gpsLongitude
  
          if self.routing_area_ids is not None:
              consolidated_ra_id = copy.deepcopy(self.routing_area_ids)
          if self.routing_areas_2_rm is not None:
              for ra_2_rm in self.routing_areas_2_rm:
                  if ra_2_rm.id is None:
                      ra_2_rm.sync()
                  consolidated_ra_id.remove(ra_2_rm.id)
          if self.routing_areas_2_add is not None:
              for ra_2_add in self.routing_areas_2_add:
                  if ra_2_add.id is None:
                      ra_2_add.save()
                  consolidated_ra_id.append(ra_2_add.id)
          post_payload['locationRoutingAreasID'] = consolidated_ra_id
  
          if self.subnet_ids is not None:
              consolidated_sn_id = copy.deepcopy(self.subnet_ids)
          if self.subnets_2_rm is not None:
              for sn_2_rm in self.subnets_2_rm:
                  if sn_2_rm.id is None:
                      sn_2_rm.sync()
                  consolidated_sn_id.remove(sn_2_rm.id)
          if self.subnets_2_add is not None:
              for sn_2_add in self.subnets_2_add:
                  if sn_2_add.id is None:
                      sn_2_add.save()
                  consolidated_sn_id.append(sn_2_add.id)
          post_payload['locationSubnetsID'] = consolidated_sn_id
  
          args = {'http_operation': 'POST', 'operation_path': '', 'parameters': {'payload': json.dumps(post_payload)}}
          response = LocationService.requester.call(args)
          if response.rc != 0:
              LOGGER.warning('Location.save - Problem while saving location ' + self.name +
                             '. Reason: ' + str(response.response_content) + '-' + str(response.error_message) +
                             " (" + str(response.rc) + ")")
          else:
              self.id = response.response_content['locationID']
              if self.routing_areas_2_add is not None:
                  for ra_2_add in self.routing_areas_2_add:
                      ra_2_add.sync()
              if self.routing_areas_2_rm is not None:
                  for ra_2_rm in self.routing_areas_2_rm:
                      ra_2_rm.sync()
              if self.subnets_2_add is not None:
                  for sn_2_add in self.subnets_2_add:
                      sn_2_add.sync()
              if self.subnets_2_rm is not None:
                  for sn_2_rm in self.subnets_2_rm:
                      sn_2_rm.sync()
          self.routing_areas_2_rm.clear()
          self.routing_areas_2_add.clear()
          self.subnets_2_add.clear()
          self.subnets_2_rm.clear()
          self.sync()
          return self