async function configure()

in components/vam-api/packages/vam-api/lib/controllers/appstream-fleets-controller.js [18:168]


async function configure(context) {
  const router = context.router();
  const wrap = context.wrap;

  // ===============================================================
  //  GET / (mounted to /api/appstream-fleets)
  // ===============================================================
  router.get(
    '/',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const list = await appstreamService.listFleets(requestContext);
      res.status(200).json(list);
    }),
  );

  router.get(
    '/:fleetName/get-link',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const fleetName = req.params.fleetName;
      const result = await appstreamService.getFleetTestLink(requestContext, { fleetName });
      res.status(200).json(result);
    }),
  );

  router.post(
    '/create',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const {
        fleetName,
        imageName,
        instanceType,
        fleetType,
        streamView,
        maxUserDurationInMinutes,
        disconnectTimeoutInMinutes,
        idleDisconnectTimeoutInMinutes,
        desiredCapacity,
      } = req.body;
      const result = await appstreamService.createFleet(requestContext, {
        fleetName,
        imageName,
        instanceType,
        fleetType,
        streamView,
        maxUserDurationInMinutes,
        disconnectTimeoutInMinutes,
        idleDisconnectTimeoutInMinutes,
        desiredCapacity,
      });
      res.status(200).json(result);
    }),
  );

  router.put(
    '/start',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const { fleetName } = req.body;
      const result = await appstreamService.startFleet(requestContext, { fleetName });
      res.status(200).json(result);
    }),
  );

  router.put(
    '/stop',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const { fleetName } = req.body;
      const result = await appstreamService.stopFleet(requestContext, { fleetName });
      res.status(200).json(result);
    }),
  );

  router.delete(
    '/:fleetName',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const fleetName = req.params.fleetName;
      const [appstreamService] = await context.service(['appstreamService']);
      const list = await appstreamService.deleteFleet(requestContext, { fleetName });
      res.status(200).json(list);
    }),
  );

  // ===============================================================
  //  PUT /:id/access (mounted to /api/appstream-fleets/)
  // ===============================================================
  router.put(
    '/:fleetName/access',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const fleetName = req.params.fleetName;
      const { groupId, groupName } = req.body;
      await appstreamService.grantFleetAccess(requestContext, { fleetName, groupId, groupName });
      const result = { id: groupId, name: groupName };
      res.status(200).json(result);
    }),
  );

  // ===============================================================
  //  DELETE /:id/access (mounted to /api/appstream-fleets/)
  // ===============================================================
  router.delete(
    '/:fleetName/access',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const fleetName = req.params.fleetName;
      const { groupId } = req.body;
      await appstreamService.revokeFleetAccess(requestContext, { fleetName, groupId });
      const result = { fleetName, groupId };
      res.status(200).json(result);
    }),
  );

  // ===============================================================
  //  PUT /:id/swap-image (mounted to /api/appstream-fleets/)
  // ===============================================================
  router.put(
    '/:fleetName/swap-image',
    wrap(async (req, res) => {
      logRequest(req);
      const requestContext = res.locals.requestContext;
      const [appstreamService] = await context.service(['appstreamService']);
      const fleetName = req.params.fleetName;
      const { imageName } = req.body;
      await appstreamService.swapFleetImage(requestContext, { fleetName, imageName });
      const result = { fleetName, imageName };
      res.status(200).json(result);
    }),
  );

  return router;
}