@alwaysai/device-agent 0.0.17 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/assets/docker-compose.yaml +8 -0
  2. package/lib/cloud-connection/messages.js +1 -1
  3. package/lib/cloud-connection/messages.js.map +1 -1
  4. package/lib/cloud-connection/passthrough-handler.d.ts.map +1 -1
  5. package/lib/cloud-connection/passthrough-handler.js +13 -3
  6. package/lib/cloud-connection/passthrough-handler.js.map +1 -1
  7. package/lib/cloud-connection/publisher.d.ts.map +1 -1
  8. package/lib/cloud-connection/publisher.js +0 -1
  9. package/lib/cloud-connection/publisher.js.map +1 -1
  10. package/lib/local-connection/rabbitmq-connection.d.ts +3 -1
  11. package/lib/local-connection/rabbitmq-connection.d.ts.map +1 -1
  12. package/lib/local-connection/rabbitmq-connection.js +32 -38
  13. package/lib/local-connection/rabbitmq-connection.js.map +1 -1
  14. package/lib/subcommands/index.d.ts +1 -4
  15. package/lib/subcommands/index.d.ts.map +1 -1
  16. package/lib/subcommands/index.js +3 -1
  17. package/lib/subcommands/index.js.map +1 -1
  18. package/lib/subcommands/rabbitmq-connection.d.ts +2 -0
  19. package/lib/subcommands/rabbitmq-connection.d.ts.map +1 -0
  20. package/lib/subcommands/rabbitmq-connection.js +14 -0
  21. package/lib/subcommands/rabbitmq-connection.js.map +1 -0
  22. package/lib/util/directories.d.ts +2 -0
  23. package/lib/util/directories.d.ts.map +1 -1
  24. package/lib/util/directories.js +3 -1
  25. package/lib/util/directories.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/cloud-connection/messages.ts +1 -1
  28. package/src/cloud-connection/passthrough-handler.ts +15 -3
  29. package/src/cloud-connection/publisher.ts +0 -1
  30. package/src/local-connection/rabbitmq-connection.ts +49 -36
  31. package/src/subcommands/index.ts +3 -1
  32. package/src/subcommands/rabbitmq-connection.ts +11 -0
  33. package/src/util/directories.ts +8 -0
@@ -0,0 +1,8 @@
1
+ services:
2
+ alwaysAIRabbitMQ:
3
+ container_name: alwaysAIRabbitMQContainer
4
+ image: rabbitmq:3.11
5
+ ports:
6
+ - 5672:5672
7
+ hostname: my-rabbit
8
+ restart: on-failure
@@ -7,7 +7,7 @@ const device_control_1 = require("../device-control/device-control");
7
7
  const agent_config_1 = require("../infrastructure/agent-config");
8
8
  async function getAppStateMessage() {
9
9
  const appStateMessage = [];
10
- const apps = await (0, agent_config_1.AgentConfigFile)().getReadyApps();
10
+ const apps = await (0, agent_config_1.AgentConfigFile)().getApps();
11
11
  for (const app of apps) {
12
12
  const projectId = app.projectId;
13
13
  const status = await (0, application_control_1.getAppStatus)({ projectId });
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/cloud-connection/messages.ts"],"names":[],"mappings":";;;AAAA,yEAIwC;AAExC,gEAAsD;AACtD,qEAI0C;AAC1C,iEAAiE;AAE1D,KAAK,UAAU,kBAAkB;IACtC,MAAM,eAAe,GAAqB,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,IAAA,8BAAe,GAAE,CAAC,YAAY,EAAE,CAAC;IACpD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,IAAA,kCAAY,EAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACjD,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC9B;IACD,MAAM,eAAe,GAAG;QACtB,WAAW,EAAE,iCAAU,CAAC,gBAAgB,CAAC,SAAS;QAClD,QAAQ,EAAE,eAAe;KAC1B,CAAC;IACF,OAAO,eAAe,CAAC;AACzB,CAAC;AAbD,gDAaC;AAEM,KAAK,UAAU,0BAA0B,CAC9C,MAA6B,EAC7B,OAAe,EACf,cAAsB;IAEtB,MAAM,uBAAuB,GAA4B;QACvD,WAAW,EAAE,iCAAU,CAAC,gBAAgB,CAAC,kBAAkB;QAC3D,gBAAgB,EAAE;YAChB,MAAM;YACN,OAAO;YACP,cAAc;SACf;KACF,CAAC;IACF,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAdD,gEAcC;AAEM,KAAK,UAAU,qBAAqB;IACzC,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAU,GAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAW,GAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAU,GAAE,CAAC;IAEnC,MAAM,kBAAkB,GAAG;QACzB,WAAW,EAAE,iCAAU,CAAC,gBAAgB,CAAC,YAAY;QACrD,WAAW,EAAE;YACX,QAAQ;YACR,QAAQ;YACR,oBAAoB,EAAE,OAAO;SAC9B;KACF,CAAC;IACF,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAdD,sDAcC"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/cloud-connection/messages.ts"],"names":[],"mappings":";;;AAAA,yEAIwC;AAExC,gEAAsD;AACtD,qEAI0C;AAC1C,iEAAiE;AAE1D,KAAK,UAAU,kBAAkB;IACtC,MAAM,eAAe,GAAqB,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,IAAA,8BAAe,GAAE,CAAC,OAAO,EAAE,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,IAAA,kCAAY,EAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACjD,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC9B;IACD,MAAM,eAAe,GAAG;QACtB,WAAW,EAAE,iCAAU,CAAC,gBAAgB,CAAC,SAAS;QAClD,QAAQ,EAAE,eAAe;KAC1B,CAAC;IACF,OAAO,eAAe,CAAC;AACzB,CAAC;AAbD,gDAaC;AAEM,KAAK,UAAU,0BAA0B,CAC9C,MAA6B,EAC7B,OAAe,EACf,cAAsB;IAEtB,MAAM,uBAAuB,GAA4B;QACvD,WAAW,EAAE,iCAAU,CAAC,gBAAgB,CAAC,kBAAkB;QAC3D,gBAAgB,EAAE;YAChB,MAAM;YACN,OAAO;YACP,cAAc;SACf;KACF,CAAC;IACF,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAdD,gEAcC;AAEM,KAAK,UAAU,qBAAqB;IACzC,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAU,GAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,IAAA,4BAAW,GAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAU,GAAE,CAAC;IAEnC,MAAM,kBAAkB,GAAG;QACzB,WAAW,EAAE,iCAAU,CAAC,gBAAgB,CAAC,YAAY;QACrD,WAAW,EAAE;YACX,QAAQ;YACR,QAAQ;YACR,oBAAoB,EAAE,OAAO;SAC9B;KACF,CAAC;IACF,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAdD,sDAcC"}
@@ -1 +1 @@
1
- {"version":3,"file":"passthrough-handler.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/passthrough-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,qBAAa,kBAAkB;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,MAAC;IACX,OAAO,MAAC;IACR,WAAW,MAAC;gBAEP,SAAS,EAAE,SAAS;IAInB,KAAK;CAUnB;AAsBD,wBAAsB,UAAU,CAAC,kBAAkB,EAAE,kBAAkB,iBAetE"}
1
+ {"version":3,"file":"passthrough-handler.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/passthrough-handler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,qBAAa,kBAAkB;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,MAAC;IACX,OAAO,MAAC;IACR,WAAW,MAAC;gBAEP,SAAS,EAAE,SAAS;IAInB,KAAK;CAsBnB;AAqBD,wBAAsB,UAAU,CAAC,kBAAkB,EAAE,kBAAkB,iBAetE"}
@@ -5,6 +5,7 @@ exports.runChannel = exports.PassthroughHandler = void 0;
5
5
  const amqp = require('amqplib');
6
6
  const rabbitmq_connection_1 = require("../local-connection/rabbitmq-connection");
7
7
  const logger_1 = require("../util/logger");
8
+ const sleep_1 = require("../util/sleep");
8
9
  const messageQueue = [];
9
10
  const ackQueue = [];
10
11
  class PassthroughHandler {
@@ -13,8 +14,18 @@ class PassthroughHandler {
13
14
  }
14
15
  async setup() {
15
16
  await (0, rabbitmq_connection_1.setupRabbitMQContainer)();
16
- this.connection = await amqp.connect('amqp://localhost');
17
- this.channel = await this.connection.createChannel();
17
+ let connectAttempts = 0;
18
+ while (connectAttempts < 5 && this.connection === undefined) {
19
+ try {
20
+ this.connection = await amqp.connect('amqp://localhost');
21
+ this.channel = await this.connection.createChannel();
22
+ }
23
+ catch (e) {
24
+ logger_1.logger.debug(`Attempting to connection to Local Connection ${connectAttempts}`);
25
+ await (0, sleep_1.default)(1000 + 1000 * connectAttempts);
26
+ connectAttempts += 1;
27
+ }
28
+ }
18
29
  this.channel.prefetch(1); // This ensures we only get one packet at a time! This appears to have prevented throttling
19
30
  this.packetQueue = 'edgeiq-analytics-publish';
20
31
  await this.channel.assertQueue(this.packetQueue, {
@@ -30,7 +41,6 @@ function processPublish(passthroughHandler) {
30
41
  ackQueue.push(msg);
31
42
  // FIXME: put real topic here
32
43
  passthroughHandler.publisher.publishToCloudWithAck(packet, (errOrResp) => {
33
- logger_1.logger.debug('packet published to cloud?', errOrResp);
34
44
  while (ackQueue.length > 0) {
35
45
  const msg = ackQueue.shift();
36
46
  if (errOrResp === true) {
@@ -1 +1 @@
1
- {"version":3,"file":"passthrough-handler.js","sourceRoot":"","sources":["../../src/cloud-connection/passthrough-handler.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC,iFAAiF;AACjF,2CAAwC;AAGxC,MAAM,YAAY,GAAU,EAAE,CAAC;AAC/B,MAAM,QAAQ,GAAU,EAAE,CAAC;AAE3B,MAAa,kBAAkB;IAM7B,YAAY,SAAoB;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAA,4CAAsB,GAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,2FAA2F;QACrH,IAAI,CAAC,WAAW,GAAG,0BAA0B,CAAC;QAC9C,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE;YAC/C,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;CACF;AApBD,gDAoBC;AAED,SAAS,cAAc,CAAC,kBAAsC;IAC5D,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC9B,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,6BAA6B;QAC7B,kBAAkB,CAAC,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE;YACvE,eAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;YACtD,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,SAAS,KAAK,IAAI,EAAE;oBACtB,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,sCAAsC;iBAC5E;qBAAM,IAAI,SAAS,KAAK,KAAK,EAAE;oBAC9B,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB;iBACpE;aACF;QACH,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,kBAAsC;IACrE,eAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC7C,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAChC,kBAAkB,CAAC,WAAW,EAC9B,UAAU,GAAG;QACX,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClD,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACnC,cAAc,CAAC,kBAAkB,CAAC,CAAC;SACpC;IACH,CAAC,EACD;QACE,KAAK,EAAE,KAAK,CAAC,gEAAgE;KAC9E,CACF,CAAC;AACJ,CAAC;AAfD,gCAeC"}
1
+ {"version":3,"file":"passthrough-handler.js","sourceRoot":"","sources":["../../src/cloud-connection/passthrough-handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,yBAAyB,EAG1B,MAAM,gCAAgC,CAAC;AAGxC,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM;IAOzC,OAAO,CAAC,kBAAkB;IAanB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAWtC,qBAAqB,CAC1B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,gBAAgB;IAmB5B,yBAAyB,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB;IAU7B,eAAe,CAAC,OAAO,EAAE,yBAAyB;IAIlD,cAAc,CAAC,OAAO,EAAE,yBAAyB;CAGzD"}
1
+ {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,yBAAyB,EAG1B,MAAM,gCAAgC,CAAC;AAGxC,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM;IAOzC,OAAO,CAAC,kBAAkB;IAanB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAWtC,qBAAqB,CAC1B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,gBAAgB;IAkB5B,yBAAyB,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB;IAU7B,eAAe,CAAC,OAAO,EAAE,yBAAyB;IAIlD,cAAc,CAAC,OAAO,EAAE,yBAAyB;CAGzD"}
@@ -29,7 +29,6 @@ class Publisher {
29
29
  }
30
30
  publishToCloudWithAck(payload, ackNackCallback) {
31
31
  const topic = this.toCloudTopic;
32
- logger_1.logger.debug('payload received to publishWithAck', payload);
33
32
  this.client.publish(topic, payload, { qos: 1 }, (err, resp) => {
34
33
  if (err) {
35
34
  logger_1.logger.error(`Error publishing message: \nTopic: ${topic}\nMessage: ${payload}\nError: ${err}`);
@@ -1 +1 @@
1
- {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/cloud-connection/publisher.ts"],"names":[],"mappings":";;;AAAA,yEAKwC;AACxC,2CAAwC;AAExC,MAAa,SAAS;IAMpB,YAAY,MAAW,EAAE,QAAgB;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAA,qCAAc,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,IAAA,oCAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAEO,kBAAkB,CACxB,KAAa,EACb,OAAkC;QAElC,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK;YACL,OAAO;SACR,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,OAAO,CAAC,KAAa,EAAE,OAAe;QAC3C,yBAAyB;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC/C,IAAI,GAAG,EAAE;gBACP,eAAM,CAAC,KAAK,CACV,sCAAsC,KAAK,cAAc,OAAO,YAAY,GAAG,EAAE,CAClF,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,qBAAqB,CAC1B,OAAe,EACf,eAAiC;QAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,eAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAQ,EAAE,IAAS,EAAE,EAAE;YACtE,IAAI,GAAG,EAAE;gBACP,eAAM,CAAC,KAAK,CACV,sCAAsC,KAAK,cAAc,OAAO,YAAY,GAAG,EAAE,CAClF,CAAC;gBACF,eAAe,CAAC,KAAK,CAAC,CAAC;aACxB;iBAAM,IAAI,IAAI,EAAE;gBACf,eAAM,CAAC,KAAK,CACV,4CAA4C,KAAK,cAAc,OAAO,EAAE,CACzE,CAAC;gBACF,eAAe,CAAC,IAAI,CAAC,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,yBAAyB,CAC9B,KAAa,EACb,OAAkC;QAElC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzC,eAAM,CAAC,KAAK,CACV,wBAAwB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACrE,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;IAEM,eAAe,CAAC,OAAkC;QACvD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAEM,cAAc,CAAC,OAAkC;QACtD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;CACF;AA7ED,8BA6EC"}
1
+ {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../../src/cloud-connection/publisher.ts"],"names":[],"mappings":";;;AAAA,yEAKwC;AACxC,2CAAwC;AAExC,MAAa,SAAS;IAMpB,YAAY,MAAW,EAAE,QAAgB;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAA,qCAAc,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,IAAA,oCAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAEO,kBAAkB,CACxB,KAAa,EACb,OAAkC;QAElC,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK;YACL,OAAO;SACR,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,OAAO,CAAC,KAAa,EAAE,OAAe;QAC3C,yBAAyB;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC/C,IAAI,GAAG,EAAE;gBACP,eAAM,CAAC,KAAK,CACV,sCAAsC,KAAK,cAAc,OAAO,YAAY,GAAG,EAAE,CAClF,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,qBAAqB,CAC1B,OAAe,EACf,eAAiC;QAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAQ,EAAE,IAAS,EAAE,EAAE;YACtE,IAAI,GAAG,EAAE;gBACP,eAAM,CAAC,KAAK,CACV,sCAAsC,KAAK,cAAc,OAAO,YAAY,GAAG,EAAE,CAClF,CAAC;gBACF,eAAe,CAAC,KAAK,CAAC,CAAC;aACxB;iBAAM,IAAI,IAAI,EAAE;gBACf,eAAM,CAAC,KAAK,CACV,4CAA4C,KAAK,cAAc,OAAO,EAAE,CACzE,CAAC;gBACF,eAAe,CAAC,IAAI,CAAC,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,yBAAyB,CAC9B,KAAa,EACb,OAAkC;QAElC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzC,eAAM,CAAC,KAAK,CACV,wBAAwB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACrE,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACjC,CAAC;IAEM,eAAe,CAAC,OAAkC;QACvD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAEM,cAAc,CAAC,OAAkC;QACtD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;CACF;AA5ED,8BA4EC"}
@@ -1,4 +1,6 @@
1
- export declare function checkRabbitMQContainerRunning(): Promise<string>;
1
+ export declare const rabbitMQServiceName = "alwaysAIRabbitMQ";
2
+ export declare const rabbitMQContainerName = "alwaysAIRabbitMQContainer";
3
+ export declare function checkRabbitMQContainerRunning(): Promise<boolean | undefined>;
2
4
  export declare function setupRabbitMQContainer(): Promise<void>;
3
5
  export declare function stopRabbitMQContainer(): Promise<void>;
4
6
  //# sourceMappingURL=rabbitmq-connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rabbitmq-connection.d.ts","sourceRoot":"","sources":["../../src/local-connection/rabbitmq-connection.ts"],"names":[],"mappings":"AAIA,wBAAsB,6BAA6B,oBAMlD;AAED,wBAAsB,sBAAsB,kBAwB3C;AAED,wBAAsB,qBAAqB,kBAc1C"}
1
+ {"version":3,"file":"rabbitmq-connection.d.ts","sourceRoot":"","sources":["../../src/local-connection/rabbitmq-connection.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,qBAAqB,8BAA8B,CAAC;AAEjE,wBAAsB,6BAA6B,iCAelD;AAED,wBAAsB,sBAAsB,kBAqB3C;AAED,wBAAsB,qBAAqB,kBAc1C"}
@@ -1,57 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stopRabbitMQContainer = exports.setupRabbitMQContainer = exports.checkRabbitMQContainerRunning = void 0;
4
- const util_1 = require("alwaysai/lib/util");
3
+ exports.stopRabbitMQContainer = exports.setupRabbitMQContainer = exports.checkRabbitMQContainerRunning = exports.rabbitMQContainerName = exports.rabbitMQServiceName = void 0;
5
4
  const logger_1 = require("../util/logger");
6
5
  const sleep_1 = require("../util/sleep");
6
+ const docker_compose_1 = require("docker-compose");
7
+ const directories_1 = require("../util/directories");
8
+ exports.rabbitMQServiceName = 'alwaysAIRabbitMQ';
9
+ exports.rabbitMQContainerName = 'alwaysAIRabbitMQContainer';
7
10
  async function checkRabbitMQContainerRunning() {
8
- const spawner = (0, util_1.JsSpawner)();
9
- return await spawner.run({
10
- exe: 'docker',
11
- args: ['ps', '-q', '--filter', 'ancestor=rabbitmq']
12
- });
11
+ logger_1.logger.debug('Checking alwaysAI Local Connection Container status');
12
+ const containerData = await docker_compose_1.default.ps({ cwd: directories_1.ASSETS_PATH });
13
+ if (!(containerData === undefined)) {
14
+ const rabbitmqService = containerData.data.services[0];
15
+ if (rabbitmqService.name === exports.rabbitMQContainerName &&
16
+ rabbitmqService.state === 'Up') {
17
+ logger_1.logger.debug('alwaysAI Local Connection is running');
18
+ return true;
19
+ }
20
+ logger_1.logger.debug('alwaysAI Local Connection is not running');
21
+ return false;
22
+ }
13
23
  }
14
24
  exports.checkRabbitMQContainerRunning = checkRabbitMQContainerRunning;
15
25
  async function setupRabbitMQContainer() {
16
- const spawner = (0, util_1.JsSpawner)();
17
- const rabbitMqContainerRunning = await checkRabbitMQContainerRunning();
18
- logger_1.logger.debug('Checking for running RabbitMQ container');
19
- if (!rabbitMqContainerRunning) {
20
- logger_1.logger.debug('Setting up RabbitMQ container');
21
- await spawner.run({
22
- exe: 'docker',
23
- args: [
24
- 'run',
25
- '--rm',
26
- '-p',
27
- '5672:5672',
28
- '-d',
29
- '--hostname',
30
- 'my-rabbit',
31
- 'rabbitmq'
32
- ]
26
+ logger_1.logger.debug('Attempting to start the alwaysAI Local Connection Container');
27
+ try {
28
+ const upOut = await docker_compose_1.default.upAll({
29
+ cwd: directories_1.ASSETS_PATH
33
30
  });
34
- await (0, sleep_1.default)(8000);
31
+ logger_1.logger.debug(`Docker compose up for alwaysAI Local Connection:\n${JSON.stringify(upOut)}`);
32
+ // check if the container is up
35
33
  while (!(await checkRabbitMQContainerRunning())) {
36
- await (0, sleep_1.default)(5000);
34
+ await (0, sleep_1.default)(10);
37
35
  }
38
36
  }
37
+ catch (e) {
38
+ logger_1.logger.debug('Unable to start alwaysAI Device Agent Local Connection Container', e.message);
39
+ }
39
40
  }
40
41
  exports.setupRabbitMQContainer = setupRabbitMQContainer;
41
42
  async function stopRabbitMQContainer() {
42
- const spawner = (0, util_1.JsSpawner)();
43
- const rabbitMqContainer = await spawner.run({
44
- exe: 'docker',
45
- args: ['ps', '-q', '--filter', 'ancestor=rabbitmq']
46
- });
47
- if (!rabbitMqContainer) {
48
- logger_1.logger.debug('No RabbitMQ container running');
43
+ try {
44
+ const downOut = await docker_compose_1.default.down({ cwd: directories_1.ASSETS_PATH });
45
+ logger_1.logger.debug(`Docker compose down for alwaysAI Local Connection:\n${JSON.stringify(downOut)}`);
49
46
  }
50
- else {
51
- await spawner.run({
52
- exe: 'docker',
53
- args: ['stop', `${rabbitMqContainer}`]
54
- });
47
+ catch (e) {
48
+ logger_1.logger.debug('Unable to stop alwaysAI Device Agent Local Connection Container', e.message);
55
49
  }
56
50
  }
57
51
  exports.stopRabbitMQContainer = stopRabbitMQContainer;
@@ -1 +1 @@
1
- {"version":3,"file":"rabbitmq-connection.js","sourceRoot":"","sources":["../../src/local-connection/rabbitmq-connection.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAC9C,2CAAwC;AACxC,yCAAkC;AAE3B,KAAK,UAAU,6BAA6B;IACjD,MAAM,OAAO,GAAG,IAAA,gBAAS,GAAE,CAAC;IAC5B,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC;QACvB,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,CAAC;KACpD,CAAC,CAAC;AACL,CAAC;AAND,sEAMC;AAEM,KAAK,UAAU,sBAAsB;IAC1C,MAAM,OAAO,GAAG,IAAA,gBAAS,GAAE,CAAC;IAC5B,MAAM,wBAAwB,GAAG,MAAM,6BAA6B,EAAE,CAAC;IACvE,eAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACxD,IAAI,CAAC,wBAAwB,EAAE;QAC7B,eAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC9C,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE;gBACJ,KAAK;gBACL,MAAM;gBACN,IAAI;gBACJ,WAAW;gBACX,IAAI;gBACJ,YAAY;gBACZ,WAAW;gBACX,UAAU;aACX;SACF,CAAC,CAAC;QACH,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,CAAC,MAAM,6BAA6B,EAAE,CAAC,EAAE;YAC/C,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;SACnB;KACF;AACH,CAAC;AAxBD,wDAwBC;AAEM,KAAK,UAAU,qBAAqB;IACzC,MAAM,OAAO,GAAG,IAAA,gBAAS,GAAE,CAAC;IAC5B,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1C,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,CAAC;KACpD,CAAC,CAAC;IACH,IAAI,CAAC,iBAAiB,EAAE;QACtB,eAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAC/C;SAAM;QACL,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;SACvC,CAAC,CAAC;KACJ;AACH,CAAC;AAdD,sDAcC"}
1
+ {"version":3,"file":"rabbitmq-connection.js","sourceRoot":"","sources":["../../src/local-connection/rabbitmq-connection.ts"],"names":[],"mappings":";;;AAEA,2CAAwC;AACxC,yCAAkC;AAClC,mDAAqC;AAErC,qDAAkD;AAErC,QAAA,mBAAmB,GAAG,kBAAkB,CAAC;AACzC,QAAA,qBAAqB,GAAG,2BAA2B,CAAC;AAE1D,KAAK,UAAU,6BAA6B;IACjD,eAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,MAAM,wBAAO,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,yBAAW,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,CAAC,aAAa,KAAK,SAAS,CAAC,EAAE;QAClC,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvD,IACE,eAAe,CAAC,IAAI,KAAK,6BAAqB;YAC9C,eAAe,CAAC,KAAK,KAAK,IAAI,EAC9B;YACA,eAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;SACb;QACD,eAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAfD,sEAeC;AAEM,KAAK,UAAU,sBAAsB;IAC1C,eAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC5E,IAAI;QACF,MAAM,KAAK,GAAG,MAAM,wBAAO,CAAC,KAAK,CAAC;YAChC,GAAG,EAAE,yBAAW;SACjB,CAAC,CAAC;QACH,eAAM,CAAC,KAAK,CACV,qDAAqD,IAAI,CAAC,SAAS,CACjE,KAAK,CACN,EAAE,CACJ,CAAC;QACF,+BAA+B;QAC/B,OAAO,CAAC,CAAC,MAAM,6BAA6B,EAAE,CAAC,EAAE;YAC/C,MAAM,IAAA,eAAK,EAAC,EAAE,CAAC,CAAC;SACjB;KACF;IAAC,OAAO,CAAC,EAAE;QACV,eAAM,CAAC,KAAK,CACV,kEAAkE,EAClE,CAAC,CAAC,OAAO,CACV,CAAC;KACH;AACH,CAAC;AArBD,wDAqBC;AAEM,KAAK,UAAU,qBAAqB;IACzC,IAAI;QACF,MAAM,OAAO,GAAG,MAAM,wBAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,yBAAW,EAAE,CAAC,CAAC;QACzD,eAAM,CAAC,KAAK,CACV,uDAAuD,IAAI,CAAC,SAAS,CACnE,OAAO,CACR,EAAE,CACJ,CAAC;KACH;IAAC,OAAO,CAAC,EAAE;QACV,eAAM,CAAC,KAAK,CACV,iEAAiE,EACjE,CAAC,CAAC,OAAO,CACV,CAAC;KACH;AACH,CAAC;AAdD,sDAcC"}
@@ -1,7 +1,4 @@
1
- export declare const subcommands: (import("@alwaysai/alwayscli/lib/types").CliBranch | import("@alwaysai/alwayscli/lib/types").CliLeaf<import("@alwaysai/alwayscli").CliInput<undefined, false>, {
2
- email: import("@alwaysai/alwayscli").CliInput<string, true>;
3
- password: import("@alwaysai/alwayscli").CliInput<string, true>;
4
- }, import("@alwaysai/alwayscli").CliInput<undefined, false>> | import("@alwaysai/alwayscli/lib/types").CliLeaf<import("@alwaysai/alwayscli").CliInput<string, true>, {
1
+ export declare const subcommands: (import("@alwaysai/alwayscli/lib/types").CliBranch | import("@alwaysai/alwayscli/lib/types").CliLeaf<import("@alwaysai/alwayscli").CliInput<undefined, false>, {}, import("@alwaysai/alwayscli").CliInput<undefined, false>> | import("@alwaysai/alwayscli/lib/types").CliLeaf<import("@alwaysai/alwayscli").CliInput<string, true>, {
5
2
  version: import("@alwaysai/alwayscli").CliInput<number | undefined, boolean>;
6
3
  path: import("@alwaysai/alwayscli").CliInput<string | undefined, false>;
7
4
  }, import("@alwaysai/alwayscli").CliInput<undefined, false>>)[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/subcommands/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW;;;;;;+DAKvB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/subcommands/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW;;;+DAMvB,CAAC"}
@@ -5,10 +5,12 @@ const app_1 = require("./app");
5
5
  const device_1 = require("./device");
6
6
  const login_1 = require("./login");
7
7
  const get_model_package_1 = require("./get-model-package");
8
+ const rabbitmq_connection_1 = require("./rabbitmq-connection");
8
9
  exports.subcommands = [
9
10
  login_1.loginCliLeaf,
10
11
  app_1.appCliBranch,
11
12
  device_1.deviceCliBranch,
12
- get_model_package_1.getModelPackageCliLeaf
13
+ get_model_package_1.getModelPackageCliLeaf,
14
+ rabbitmq_connection_1.stopRabbitMQContainerCliLeaf
13
15
  ];
14
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/subcommands/index.ts"],"names":[],"mappings":";;;AAAA,+BAAqC;AACrC,qCAA2C;AAC3C,mCAAuC;AACvC,2DAA6D;AAEhD,QAAA,WAAW,GAAG;IACzB,oBAAY;IACZ,kBAAY;IACZ,wBAAe;IACf,0CAAsB;CACvB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/subcommands/index.ts"],"names":[],"mappings":";;;AAAA,+BAAqC;AACrC,qCAA2C;AAC3C,mCAAuC;AACvC,2DAA6D;AAC7D,+DAAqE;AAExD,QAAA,WAAW,GAAG;IACzB,oBAAY;IACZ,kBAAY;IACZ,wBAAe;IACf,0CAAsB;IACtB,kDAA4B;CAC7B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const stopRabbitMQContainerCliLeaf: import("@alwaysai/alwayscli/lib/types").CliLeaf<import("@alwaysai/alwayscli").CliInput<undefined, false>, {}, import("@alwaysai/alwayscli").CliInput<undefined, false>>;
2
+ //# sourceMappingURL=rabbitmq-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rabbitmq-connection.d.ts","sourceRoot":"","sources":["../../src/subcommands/rabbitmq-connection.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,4BAA4B,yKAOvC,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stopRabbitMQContainerCliLeaf = void 0;
4
+ const alwayscli_1 = require("@alwaysai/alwayscli");
5
+ const rabbitmq_connection_1 = require("../local-connection/rabbitmq-connection");
6
+ exports.stopRabbitMQContainerCliLeaf = (0, alwayscli_1.CliLeaf)({
7
+ name: 'stop-analytics-pass-through',
8
+ description: 'Stop the Device Agent connection to edgeIQ',
9
+ hidden: true,
10
+ async action(_, opts) {
11
+ await (0, rabbitmq_connection_1.stopRabbitMQContainer)();
12
+ }
13
+ });
14
+ //# sourceMappingURL=rabbitmq-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rabbitmq-connection.js","sourceRoot":"","sources":["../../src/subcommands/rabbitmq-connection.ts"],"names":[],"mappings":";;;AAAA,mDAA8C;AAC9C,iFAAgF;AAEnE,QAAA,4BAA4B,GAAG,IAAA,mBAAO,EAAC;IAClD,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,4CAA4C;IACzD,MAAM,EAAE,IAAI;IACZ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,IAAA,2CAAqB,GAAE,CAAC;IAChC,CAAC;CACF,CAAC,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export declare const APP_ROOT: string;
2
+ export declare const ASSETS_PATH: string;
3
+ export declare const DEVICE_AGENT_DOCKER_COMPOSE_PATH: string;
2
4
  export declare const CREDENTIALS_FILE_PATH: string;
3
5
  export declare const AWS_ROOT_CERTIFICATE_FILE_NAME = "AmazonRootCA1.pem";
4
6
  export declare const AWS_ROOT_CERTIFICATE_FILE_PATH: string;
@@ -1 +1 @@
1
- {"version":3,"file":"directories.d.ts","sourceRoot":"","sources":["../../src/util/directories.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,QAAQ,QAAqC,CAAC;AAE3D,eAAO,MAAM,qBAAqB,QAGjC,CAAC;AAEF,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAClE,eAAO,MAAM,8BAA8B,QAG1C,CAAC;AAEF,eAAO,MAAM,eAAe,yCAU3B,CAAC;AAMF,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,+BAA+B,cACU,CAAC;AACvD,eAAO,MAAM,+BAA+B,cACG,CAAC;AAChD,eAAO,MAAM,sBAAsB,cACW,CAAC;AAC/C,eAAO,MAAM,qCAAqC,oCACf,CAAC;AAEpC,eAAO,MAAM,+BAA+B,cACM,CAAC;AAEnD,eAAO,MAAM,+BAA+B,cAKzC,CAAC;AAEJ,eAAO,MAAM,+BAA+B,cAKzC,CAAC;AAEJ,eAAO,MAAM,sBAAsB,cACyC,CAAC;AAM7E,eAAO,MAAM,4BAA4B,mCAAmC,CAAC;AAC7E,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AACtE,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D,eAAO,MAAM,4BAA4B,QAGxC,CAAC;AAEF,eAAO,MAAM,4BAA4B,QAGxC,CAAC"}
1
+ {"version":3,"file":"directories.d.ts","sourceRoot":"","sources":["../../src/util/directories.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,QAAQ,QAAqC,CAAC;AAE3D,eAAO,MAAM,WAAW,QAAsB,CAAC;AAE/C,eAAO,MAAM,gCAAgC,QAG5C,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAGjC,CAAC;AAEF,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAClE,eAAO,MAAM,8BAA8B,QAG1C,CAAC;AAEF,eAAO,MAAM,eAAe,yCAU3B,CAAC;AAMF,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,+BAA+B,cACU,CAAC;AACvD,eAAO,MAAM,+BAA+B,cACG,CAAC;AAChD,eAAO,MAAM,sBAAsB,cACW,CAAC;AAC/C,eAAO,MAAM,qCAAqC,oCACf,CAAC;AAEpC,eAAO,MAAM,+BAA+B,cACM,CAAC;AAEnD,eAAO,MAAM,+BAA+B,cAKzC,CAAC;AAEJ,eAAO,MAAM,+BAA+B,cAKzC,CAAC;AAEJ,eAAO,MAAM,sBAAsB,cACyC,CAAC;AAM7E,eAAO,MAAM,4BAA4B,mCAAmC,CAAC;AAC7E,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AACtE,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D,eAAO,MAAM,4BAA4B,QAGxC,CAAC;AAEF,eAAO,MAAM,4BAA4B,QAGxC,CAAC"}
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEVICE_CERTIFICATE_FILE_PATH = exports.DEVICE_PRIVATE_KEY_FILE_PATH = exports.DEVICE_ID_FILE_NAME = exports.DEVICE_CERTIFICATE_FILE_NAME = exports.DEVICE_PRIVATE_KEY_FILE_NAME = exports.BOOTSTRAP_ID_FILE_PATH = exports.BOOTSTRAP_CERTIFICATE_FILE_PATH = exports.BOOTSTRAP_PRIVATE_KEY_FILE_PATH = exports.BOOTSTRAP_CERTIFICATES_DIR_PATH = exports.CERTIFICATE_OWNERSHIP_TOKEN_FILE_NAME = exports.BOOTSTRAP_ID_FILE_NAME = exports.BOOTSTRAP_CERTIFICATE_FILE_NAME = exports.BOOTSTRAP_PRIVATE_KEY_FILE_NAME = exports.BOOTSTRAP_DIR_NAME = exports.shortenSystemId = exports.AWS_ROOT_CERTIFICATE_FILE_PATH = exports.AWS_ROOT_CERTIFICATE_FILE_NAME = exports.CREDENTIALS_FILE_PATH = exports.APP_ROOT = void 0;
3
+ exports.DEVICE_CERTIFICATE_FILE_PATH = exports.DEVICE_PRIVATE_KEY_FILE_PATH = exports.DEVICE_ID_FILE_NAME = exports.DEVICE_CERTIFICATE_FILE_NAME = exports.DEVICE_PRIVATE_KEY_FILE_NAME = exports.BOOTSTRAP_ID_FILE_PATH = exports.BOOTSTRAP_CERTIFICATE_FILE_PATH = exports.BOOTSTRAP_PRIVATE_KEY_FILE_PATH = exports.BOOTSTRAP_CERTIFICATES_DIR_PATH = exports.CERTIFICATE_OWNERSHIP_TOKEN_FILE_NAME = exports.BOOTSTRAP_ID_FILE_NAME = exports.BOOTSTRAP_CERTIFICATE_FILE_NAME = exports.BOOTSTRAP_PRIVATE_KEY_FILE_NAME = exports.BOOTSTRAP_DIR_NAME = exports.shortenSystemId = exports.AWS_ROOT_CERTIFICATE_FILE_PATH = exports.AWS_ROOT_CERTIFICATE_FILE_NAME = exports.CREDENTIALS_FILE_PATH = exports.DEVICE_AGENT_DOCKER_COMPOSE_PATH = exports.ASSETS_PATH = exports.APP_ROOT = void 0;
4
4
  const constants_1 = require("alwaysai/lib/constants");
5
5
  const path_1 = require("path");
6
6
  const system_id_1 = require("../infrastructure/system-id");
7
7
  const path = require("path");
8
8
  exports.APP_ROOT = path.join(constants_1.AAI_DIR, 'applications');
9
+ exports.ASSETS_PATH = path.join('assets');
10
+ exports.DEVICE_AGENT_DOCKER_COMPOSE_PATH = path.join(exports.ASSETS_PATH, constants_1.DOCKER_COMPOSE_FILE);
9
11
  exports.CREDENTIALS_FILE_PATH = (0, path_1.join)(constants_1.LOCAL_AAI_CFG_DIR, constants_1.DEVICE_TOKEN_FILE_NAME);
10
12
  exports.AWS_ROOT_CERTIFICATE_FILE_NAME = 'AmazonRootCA1.pem';
11
13
  exports.AWS_ROOT_CERTIFICATE_FILE_PATH = (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.AWS_ROOT_CERTIFICATE_FILE_NAME);
@@ -1 +1 @@
1
- {"version":3,"file":"directories.js","sourceRoot":"","sources":["../../src/util/directories.ts"],"names":[],"mappings":";;;AAAA,sDAKgC;AAChC,+BAA4B;AAC5B,2DAA0D;AAC1D,6BAA6B;AAEhB,QAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAO,EAAE,cAAc,CAAC,CAAC;AAE9C,QAAA,qBAAqB,GAAG,IAAA,WAAI,EACvC,6BAAiB,EACjB,kCAAsB,CACvB,CAAC;AAEW,QAAA,8BAA8B,GAAG,mBAAmB,CAAC;AACrD,QAAA,8BAA8B,GAAG,IAAA,WAAI,EAChD,kCAAsB,EACtB,sCAA8B,CAC/B,CAAC;AAEK,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,GAAG,IAAA,uBAAW,GAAE,CAAC;IACzB,QAAQ,EAAE,EAAE;QACV,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC;QACf,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd,KAAK,YAAY;YACf,OAAO,MAAM,CAAC;KACjB;AACH,CAAC,CAAC;AAVW,QAAA,eAAe,mBAU1B;AAEF;;qEAEqE;AAExD,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AACpD,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,yBAAyB,IAAA,uBAAe,GAAE,UAAU,CAAC;AAD1C,QAAA,+BAA+B,mCACW;AAChD,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,kBAAkB,IAAA,uBAAe,GAAE,UAAU,CAAC;AADnC,QAAA,+BAA+B,mCACI;AACzC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,qBAAqB,IAAA,uBAAe,GAAE,MAAM,CAAC;AADlC,QAAA,sBAAsB,0BACY;AAClC,QAAA,qCAAqC,GAChD,iCAAiC,CAAC;AAE7B,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,IAAA,WAAI,EAAC,kCAAsB,EAAE,0BAAkB,CAAC,CAAC;AADtC,QAAA,+BAA+B,mCACO;AAE5C,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,IAAA,WAAI,EACF,kCAAsB,EACtB,0BAAkB,EAClB,IAAA,uCAA+B,GAAE,CAClC,CAAC;AALS,QAAA,+BAA+B,mCAKxC;AAEG,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,IAAA,WAAI,EACF,kCAAsB,EACtB,0BAAkB,EAClB,IAAA,uCAA+B,GAAE,CAClC,CAAC;AALS,QAAA,+BAA+B,mCAKxC;AAEG,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,IAAA,WAAI,EAAC,kCAAsB,EAAE,0BAAkB,EAAE,IAAA,8BAAsB,GAAE,CAAC,CAAC;AADhE,QAAA,sBAAsB,0BAC0C;AAE7E;;qEAEqE;AAExD,QAAA,4BAA4B,GAAG,gCAAgC,CAAC;AAChE,QAAA,4BAA4B,GAAG,yBAAyB,CAAC;AACzD,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAE/C,QAAA,4BAA4B,GAAG,IAAA,WAAI,EAC9C,kCAAsB,EACtB,oCAA4B,CAC7B,CAAC;AAEW,QAAA,4BAA4B,GAAG,IAAA,WAAI,EAC9C,kCAAsB,EACtB,oCAA4B,CAC7B,CAAC"}
1
+ {"version":3,"file":"directories.js","sourceRoot":"","sources":["../../src/util/directories.ts"],"names":[],"mappings":";;;AAAA,sDAMgC;AAChC,+BAA4B;AAC5B,2DAA0D;AAC1D,6BAA6B;AAEhB,QAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAO,EAAE,cAAc,CAAC,CAAC;AAE9C,QAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAElC,QAAA,gCAAgC,GAAG,IAAI,CAAC,IAAI,CACvD,mBAAW,EACX,+BAAmB,CACpB,CAAC;AAEW,QAAA,qBAAqB,GAAG,IAAA,WAAI,EACvC,6BAAiB,EACjB,kCAAsB,CACvB,CAAC;AAEW,QAAA,8BAA8B,GAAG,mBAAmB,CAAC;AACrD,QAAA,8BAA8B,GAAG,IAAA,WAAI,EAChD,kCAAsB,EACtB,sCAA8B,CAC/B,CAAC;AAEK,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,GAAG,IAAA,uBAAW,GAAE,CAAC;IACzB,QAAQ,EAAE,EAAE;QACV,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC;QACf,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd,KAAK,YAAY;YACf,OAAO,MAAM,CAAC;KACjB;AACH,CAAC,CAAC;AAVW,QAAA,eAAe,mBAU1B;AAEF;;qEAEqE;AAExD,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AACpD,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,yBAAyB,IAAA,uBAAe,GAAE,UAAU,CAAC;AAD1C,QAAA,+BAA+B,mCACW;AAChD,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,kBAAkB,IAAA,uBAAe,GAAE,UAAU,CAAC;AADnC,QAAA,+BAA+B,mCACI;AACzC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,qBAAqB,IAAA,uBAAe,GAAE,MAAM,CAAC;AADlC,QAAA,sBAAsB,0BACY;AAClC,QAAA,qCAAqC,GAChD,iCAAiC,CAAC;AAE7B,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,IAAA,WAAI,EAAC,kCAAsB,EAAE,0BAAkB,CAAC,CAAC;AADtC,QAAA,+BAA+B,mCACO;AAE5C,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,IAAA,WAAI,EACF,kCAAsB,EACtB,0BAAkB,EAClB,IAAA,uCAA+B,GAAE,CAClC,CAAC;AALS,QAAA,+BAA+B,mCAKxC;AAEG,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,IAAA,WAAI,EACF,kCAAsB,EACtB,0BAAkB,EAClB,IAAA,uCAA+B,GAAE,CAClC,CAAC;AALS,QAAA,+BAA+B,mCAKxC;AAEG,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,IAAA,WAAI,EAAC,kCAAsB,EAAE,0BAAkB,EAAE,IAAA,8BAAsB,GAAE,CAAC,CAAC;AADhE,QAAA,sBAAsB,0BAC0C;AAE7E;;qEAEqE;AAExD,QAAA,4BAA4B,GAAG,gCAAgC,CAAC;AAChE,QAAA,4BAA4B,GAAG,yBAAyB,CAAC;AACzD,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAE/C,QAAA,4BAA4B,GAAG,IAAA,WAAI,EAC9C,kCAAsB,EACtB,oCAA4B,CAC7B,CAAC;AAEW,QAAA,4BAA4B,GAAG,IAAA,WAAI,EAC9C,kCAAsB,EACtB,oCAA4B,CAC7B,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@alwaysai/device-agent",
3
3
  "description": "The alwaysAI Device Agent",
4
- "version": "0.0.17",
4
+ "version": "0.0.19",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "publishConfig": {
@@ -14,7 +14,7 @@ import { AgentConfigFile } from '../infrastructure/agent-config';
14
14
 
15
15
  export async function getAppStateMessage() {
16
16
  const appStateMessage: AppStatePacket[] = [];
17
- const apps = await AgentConfigFile().getReadyApps();
17
+ const apps = await AgentConfigFile().getApps();
18
18
  for (const app of apps) {
19
19
  const projectId = app.projectId;
20
20
  const status = await getAppStatus({ projectId });
@@ -2,6 +2,7 @@
2
2
  const amqp = require('amqplib');
3
3
  import { setupRabbitMQContainer } from '../local-connection/rabbitmq-connection';
4
4
  import { logger } from '../util/logger';
5
+ import sleep from '../util/sleep';
5
6
  import { Publisher } from './publisher';
6
7
 
7
8
  const messageQueue: any[] = [];
@@ -19,8 +20,20 @@ export class PassthroughHandler {
19
20
 
20
21
  public async setup() {
21
22
  await setupRabbitMQContainer();
22
- this.connection = await amqp.connect('amqp://localhost');
23
- this.channel = await this.connection.createChannel();
23
+ let connectAttempts = 0;
24
+ while (connectAttempts < 5 && this.connection === undefined) {
25
+ try {
26
+ this.connection = await amqp.connect('amqp://localhost');
27
+ this.channel = await this.connection.createChannel();
28
+ } catch (e) {
29
+ logger.debug(
30
+ `Attempting to connection to Local Connection ${connectAttempts}`
31
+ );
32
+ await sleep(1000 + 1000 * connectAttempts);
33
+ connectAttempts += 1;
34
+ }
35
+ }
36
+
24
37
  this.channel.prefetch(1); // This ensures we only get one packet at a time! This appears to have prevented throttling
25
38
  this.packetQueue = 'edgeiq-analytics-publish';
26
39
  await this.channel.assertQueue(this.packetQueue, {
@@ -36,7 +49,6 @@ function processPublish(passthroughHandler: PassthroughHandler) {
36
49
  ackQueue.push(msg);
37
50
  // FIXME: put real topic here
38
51
  passthroughHandler.publisher.publishToCloudWithAck(packet, (errOrResp) => {
39
- logger.debug('packet published to cloud?', errOrResp);
40
52
  while (ackQueue.length > 0) {
41
53
  const msg = ackQueue.shift();
42
54
  if (errOrResp === true) {
@@ -48,7 +48,6 @@ export class Publisher {
48
48
  ackNackCallback: CallableFunction
49
49
  ) {
50
50
  const topic = this.toCloudTopic;
51
- logger.debug('payload received to publishWithAck', payload);
52
51
  this.client.publish(topic, payload, { qos: 1 }, (err: any, resp: any) => {
53
52
  if (err) {
54
53
  logger.error(
@@ -1,53 +1,66 @@
1
+ import { stringify } from 'yaml';
1
2
  import { JsSpawner } from 'alwaysai/lib/util';
2
3
  import { logger } from '../util/logger';
3
4
  import sleep from '../util/sleep';
5
+ import compose from 'docker-compose';
6
+
7
+ import { ASSETS_PATH } from '../util/directories';
8
+
9
+ export const rabbitMQServiceName = 'alwaysAIRabbitMQ';
10
+ export const rabbitMQContainerName = 'alwaysAIRabbitMQContainer';
4
11
 
5
12
  export async function checkRabbitMQContainerRunning() {
6
- const spawner = JsSpawner();
7
- return await spawner.run({
8
- exe: 'docker',
9
- args: ['ps', '-q', '--filter', 'ancestor=rabbitmq']
10
- });
13
+ logger.debug('Checking alwaysAI Local Connection Container status');
14
+ const containerData = await compose.ps({ cwd: ASSETS_PATH });
15
+ if (!(containerData === undefined)) {
16
+ const rabbitmqService = containerData.data.services[0];
17
+ if (
18
+ rabbitmqService.name === rabbitMQContainerName &&
19
+ rabbitmqService.state === 'Up'
20
+ ) {
21
+ logger.debug('alwaysAI Local Connection is running');
22
+ return true;
23
+ }
24
+ logger.debug('alwaysAI Local Connection is not running');
25
+ return false;
26
+ }
11
27
  }
12
28
 
13
29
  export async function setupRabbitMQContainer() {
14
- const spawner = JsSpawner();
15
- const rabbitMqContainerRunning = await checkRabbitMQContainerRunning();
16
- logger.debug('Checking for running RabbitMQ container');
17
- if (!rabbitMqContainerRunning) {
18
- logger.debug('Setting up RabbitMQ container');
19
- await spawner.run({
20
- exe: 'docker',
21
- args: [
22
- 'run',
23
- '--rm',
24
- '-p',
25
- '5672:5672',
26
- '-d',
27
- '--hostname',
28
- 'my-rabbit',
29
- 'rabbitmq'
30
- ]
30
+ logger.debug('Attempting to start the alwaysAI Local Connection Container');
31
+ try {
32
+ const upOut = await compose.upAll({
33
+ cwd: ASSETS_PATH
31
34
  });
32
- await sleep(8000);
35
+ logger.debug(
36
+ `Docker compose up for alwaysAI Local Connection:\n${JSON.stringify(
37
+ upOut
38
+ )}`
39
+ );
40
+ // check if the container is up
33
41
  while (!(await checkRabbitMQContainerRunning())) {
34
- await sleep(5000);
42
+ await sleep(10);
35
43
  }
44
+ } catch (e) {
45
+ logger.debug(
46
+ 'Unable to start alwaysAI Device Agent Local Connection Container',
47
+ e.message
48
+ );
36
49
  }
37
50
  }
38
51
 
39
52
  export async function stopRabbitMQContainer() {
40
- const spawner = JsSpawner();
41
- const rabbitMqContainer = await spawner.run({
42
- exe: 'docker',
43
- args: ['ps', '-q', '--filter', 'ancestor=rabbitmq']
44
- });
45
- if (!rabbitMqContainer) {
46
- logger.debug('No RabbitMQ container running');
47
- } else {
48
- await spawner.run({
49
- exe: 'docker',
50
- args: ['stop', `${rabbitMqContainer}`]
51
- });
53
+ try {
54
+ const downOut = await compose.down({ cwd: ASSETS_PATH });
55
+ logger.debug(
56
+ `Docker compose down for alwaysAI Local Connection:\n${JSON.stringify(
57
+ downOut
58
+ )}`
59
+ );
60
+ } catch (e) {
61
+ logger.debug(
62
+ 'Unable to stop alwaysAI Device Agent Local Connection Container',
63
+ e.message
64
+ );
52
65
  }
53
66
  }
@@ -2,10 +2,12 @@ import { appCliBranch } from './app';
2
2
  import { deviceCliBranch } from './device';
3
3
  import { loginCliLeaf } from './login';
4
4
  import { getModelPackageCliLeaf } from './get-model-package';
5
+ import { stopRabbitMQContainerCliLeaf } from './rabbitmq-connection';
5
6
 
6
7
  export const subcommands = [
7
8
  loginCliLeaf,
8
9
  appCliBranch,
9
10
  deviceCliBranch,
10
- getModelPackageCliLeaf
11
+ getModelPackageCliLeaf,
12
+ stopRabbitMQContainerCliLeaf
11
13
  ];
@@ -0,0 +1,11 @@
1
+ import { CliLeaf } from '@alwaysai/alwayscli';
2
+ import { stopRabbitMQContainer } from '../local-connection/rabbitmq-connection';
3
+
4
+ export const stopRabbitMQContainerCliLeaf = CliLeaf({
5
+ name: 'stop-analytics-pass-through',
6
+ description: 'Stop the Device Agent connection to edgeIQ',
7
+ hidden: true,
8
+ async action(_, opts) {
9
+ await stopRabbitMQContainer();
10
+ }
11
+ });
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  AAI_DIR,
3
3
  DEVICE_TOKEN_FILE_NAME,
4
+ DOCKER_COMPOSE_FILE,
4
5
  LOCAL_AAI_CFG_DIR,
5
6
  LOCAL_CERT_AND_KEY_DIR
6
7
  } from 'alwaysai/lib/constants';
@@ -10,6 +11,13 @@ import * as path from 'path';
10
11
 
11
12
  export const APP_ROOT = path.join(AAI_DIR, 'applications');
12
13
 
14
+ export const ASSETS_PATH = path.join('assets');
15
+
16
+ export const DEVICE_AGENT_DOCKER_COMPOSE_PATH = path.join(
17
+ ASSETS_PATH,
18
+ DOCKER_COMPOSE_FILE
19
+ );
20
+
13
21
  export const CREDENTIALS_FILE_PATH = join(
14
22
  LOCAL_AAI_CFG_DIR,
15
23
  DEVICE_TOKEN_FILE_NAME