cancel
Showing results for 
Search instead for 
Did you mean: 

Is it possible to restart a snap via REST API or programmatically (C++) from another app?

Is it possible to restart a snap via REST API or programmatically (C++) from another app?

hbosnali
New Poster

Hi everyone, we are investigating if there is a way to restart a snap programmatically. 

According to our use case, user uploads a new configuration for the snap via UI, and it needs to be restarted for changes to take effect.

  • Is there any way to achieve this (restarting a snap alone) in the background with the help of an API call? 
  • If restarting the snap is not possible, is restarting the celix framework, which may also solve our issue, possible? 

We had already thought putting the ctrlX core in service mode->disable the app->enable the app ->putting the ctrlx core back in operating. And a complete a reboot of ctrlX core. But is there any direct approach than this?

We would be glad if you can help us or direct us to someone who can. Thanks in advance.

2 REPLIES 2

Sgilk
Contributor

Hi,

I think the best option here is REST API. There are endpoints available as part of the package-manager API to restart snap services.

Sgilk_0-1698686287097.png

I tried to run the bash command below from within a confined snap and permission is denied. Even with the snapd-control interface connected, this will not execute.

 

snap restart snap-name

 

Since all of the real-time applications on the CORE are integrated into the Celix framework, I don't believe there would be any way to restart the framework without restarting the entire system. @nickH please correct me if I'm wrong about this.

If you have SSH access on the system, you could of course programatically restart the snap from outside of the snap environment.

nickH
Community Moderator
Community Moderator

Because the celix framework is inside the Automation Core snap, you can restart celix if you restart the automation core snap. 

Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist