def setup_asset()

in functions/source/asset-model-converter/asset_converter.py [0:0]


    def setup_asset(self, obj_type, external_id, name, model_name, hierarchy_name, datastream_descriptions={}):
        record_id = self.__dynamo_record_id(obj_type, external_id)
        dynamo_record = self.assets_cache.get(record_id)

        if dynamo_record:
            if dynamo_record['AssetName'] != name:
                self.sitewise_client.update_asset(dynamo_record['AssetId'], name)
                dynamo_record['AssetName'] = name
                self.assets_cache.save(dynamo_record)

            asset_description = self.sitewise_client.describe_asset(dynamo_record['AssetId'])
            properties_to_update = self.__asset_properties(obj_type, external_id, asset_description, datastream_descriptions)
            self.sitewise_client.update_asset_properties(asset_description['assetId'], properties_to_update)

            return dynamo_record

        model_id = self.__sitewise_model_id(model_name)
        if model_id is None:
            logger.info(f'No cached model {model_name} found')
            return None

        asset_description = self.sitewise_client.create_asset(name, model_id)

        if asset_description is None:
            return None

        properties_to_update = self.__asset_properties(obj_type, external_id, asset_description, datastream_descriptions)
        self.sitewise_client.update_asset_properties(asset_description['assetId'], properties_to_update)
            
        dynamo_item = SitewiseAssetsCache.item(record_id, asset_description['assetId'], name, hierarchy_name)
        self.assets_cache.save(dynamo_item)

        return dynamo_item