:return: save this NIC on Ariane server (create or update)

def save(self):
        """
        :return: save this NIC on Ariane server (create or update)
        """
        LOGGER.debug("NIC.save")
        post_payload = {}

        if self.id is not None:
            post_payload['nicID'] = self.id

        if self.name is not None:
            post_payload['nicName'] = self.name

        if self.mac_address is not None:
            post_payload['nicMacAddress'] = self.mac_address

        if self.duplex is not None:
            post_payload['nicDuplex'] = self.duplex

        if self.speed is not None:
            post_payload['nicSpeed'] = self.speed

        if self.mtu is not None:
            post_payload['nicMtu'] = self.mtu

        if self.nic_osi_id is not None:
            post_payload['nicOSInstanceID'] = self.nic_osi_id

        if self.nic_ipa_id is not None:
            post_payload['nicIPAddressID'] = self.nic_ipa_id

        args = {'http_operation': 'POST', 'operation_path': '', 'parameters': {'payload': json.dumps(post_payload)}}
        response = NICService.requester.call(args)
        if response.rc != 0:
            LOGGER.warning(
                'NIC.save - Problem while saving NIC ' + self.name +
                '. Reason: ' + str(response.response_content) + '-' + str(response.error_message) +
                " (" + str(response.rc) + ")"
            )
        else:
            self.id = response.response_content['nicID']

        self.sync()
        return self