From 0bf0718fad275dd8fb3a00a454f4e75b076a8b0c Mon Sep 17 00:00:00 2001 From: Austin McKinley Date: Fri, 13 Apr 2018 11:25:41 -0700 Subject: [PATCH] Add isClusterDevice to Almanac query Summary: Ref T13076. This will be used by the metric collection system to iterate over the cluster devices. Test Plan: Created some cluster and non-cluster devices, searched and saw expected results. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Maniphest Tasks: T13076 Differential Revision: https://secure.phabricator.com/D19368 --- .../almanac/query/AlmanacDeviceQuery.php | 13 +++++++++++++ .../almanac/query/AlmanacDeviceSearchEngine.php | 11 +++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/applications/almanac/query/AlmanacDeviceQuery.php b/src/applications/almanac/query/AlmanacDeviceQuery.php index 29461bfbfd..0d38070e0b 100644 --- a/src/applications/almanac/query/AlmanacDeviceQuery.php +++ b/src/applications/almanac/query/AlmanacDeviceQuery.php @@ -8,6 +8,7 @@ final class AlmanacDeviceQuery private $names; private $namePrefix; private $nameSuffix; + private $isClusterDevice; public function withIDs(array $ids) { $this->ids = $ids; @@ -40,6 +41,11 @@ final class AlmanacDeviceQuery $ngrams); } + public function withIsClusterDevice($is_cluster_device) { + $this->isClusterDevice = $is_cluster_device; + return $this; + } + public function newResultObject() { return new AlmanacDevice(); } @@ -90,6 +96,13 @@ final class AlmanacDeviceQuery $this->nameSuffix); } + if ($this->isClusterDevice !== null) { + $where[] = qsprintf( + $conn, + 'device.isBoundToClusterService = %d', + (int)$this->isClusterDevice); + } + return $where; } diff --git a/src/applications/almanac/query/AlmanacDeviceSearchEngine.php b/src/applications/almanac/query/AlmanacDeviceSearchEngine.php index 6e28d7e5b8..1d0a1d8475 100644 --- a/src/applications/almanac/query/AlmanacDeviceSearchEngine.php +++ b/src/applications/almanac/query/AlmanacDeviceSearchEngine.php @@ -25,6 +25,13 @@ final class AlmanacDeviceSearchEngine ->setLabel(pht('Exact Names')) ->setKey('names') ->setDescription(pht('Search for devices with specific names.')), + id(new PhabricatorSearchThreeStateField()) + ->setLabel(pht('Cluster Device')) + ->setKey('isClusterDevice') + ->setOptions( + pht('Both Cluster and Non-cluster Devices'), + pht('Cluster Devices Only'), + pht('Non-cluster Devices Only')), ); } @@ -39,6 +46,10 @@ final class AlmanacDeviceSearchEngine $query->withNames($map['names']); } + if ($map['isClusterDevice'] !== null) { + $query->withIsClusterDevice($map['isClusterDevice']); + } + return $query; }