summaryrefslogtreecommitdiff
path: root/src/host/VyOSElasticModernHost.php
diff options
context:
space:
mode:
authorYuriy Andamasov <yuriy@vyos.io>2026-05-22 10:43:48 +0300
committerYuriy Andamasov <yuriy@vyos.io>2026-05-22 10:43:48 +0300
commit77fdd523554e18abc3a834bbd52527f015bc4aa8 (patch)
tree379777dc790c25af69e7710b60d3bb8e891ac531 /src/host/VyOSElasticModernHost.php
parentea323c862121e2b309f526d5027a511b8d61e906 (diff)
downloadphorge-elasticsearch-modern-77fdd523554e18abc3a834bbd52527f015bc4aa8.tar.gz
phorge-elasticsearch-modern-77fdd523554e18abc3a834bbd52527f015bc4aa8.zip
Add VyOSElasticModernHost + placeholder engine stub
Host class mirrors PhabricatorElasticsearchHost's surface. Engine is a stub providing only getEngineIdentifier() and getHostType() so the host's tests can construct an engine instance; real engine implementation lands in subsequent commits. All six abstract methods of PhabricatorFulltextStorageEngine are implemented (four as throwing stubs to be replaced in E7/E8). .arcconfig gains "src/" in the load list so arc unit can discover the extension library; test case extends PhutilTestCase (no DB needed for pure-PHP host property assertions). 🤖 Generated by [robots](https://vyos.io)
Diffstat (limited to 'src/host/VyOSElasticModernHost.php')
-rw-r--r--src/host/VyOSElasticModernHost.php89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/host/VyOSElasticModernHost.php b/src/host/VyOSElasticModernHost.php
new file mode 100644
index 0000000..8bbd29e
--- /dev/null
+++ b/src/host/VyOSElasticModernHost.php
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * Host subclass for the phorge-elasticsearch-modern extension.
+ *
+ * Mirrors PhabricatorElasticsearchHost's surface area; differs only in
+ * the display name and (in future versions) the auth config fields.
+ */
+final class VyOSElasticModernHost extends PhabricatorSearchHost {
+
+ private $version = 7;
+ private $path = 'phabricator/';
+ private $protocol = 'http';
+
+ const KEY_REFS = 'search.elasticmodern.refs';
+
+ public function setConfig($config) {
+ $this->setRoles(idx($config, 'roles', $this->getRoles()))
+ ->setHost(idx($config, 'host', $this->host))
+ ->setPort(idx($config, 'port', $this->port))
+ ->setProtocol(idx($config, 'protocol', $this->protocol))
+ ->setPath(idx($config, 'path', $this->path))
+ ->setVersion(idx($config, 'version', $this->version));
+ return $this;
+ }
+
+ public function getDisplayName() {
+ return pht('Elasticsearch (modern)');
+ }
+
+ public function getStatusViewColumns() {
+ return array(
+ pht('Protocol') => $this->getProtocol(),
+ pht('Host') => $this->getHost(),
+ pht('Port') => $this->getPort(),
+ pht('Index Path') => $this->getPath(),
+ pht('Version') => $this->getVersion(),
+ pht('Roles') => implode(', ', array_keys($this->getRoles())),
+ );
+ }
+
+ public function setProtocol($protocol) {
+ $this->protocol = $protocol;
+ return $this;
+ }
+
+ public function getProtocol() {
+ return $this->protocol;
+ }
+
+ public function setPath($path) {
+ $this->path = $path;
+ return $this;
+ }
+
+ public function getPath() {
+ return $this->path;
+ }
+
+ public function setVersion($version) {
+ $this->version = $version;
+ return $this;
+ }
+
+ public function getVersion() {
+ return $this->version;
+ }
+
+ /**
+ * @return PhutilURI
+ */
+ public function getURI($to_path = null) {
+ $uri = id(new PhutilURI('http://'.$this->getHost()))
+ ->setProtocol($this->getProtocol())
+ ->setPort($this->getPort())
+ ->setPath($this->getPath());
+
+ if ($to_path) {
+ $uri->appendPath($to_path);
+ }
+ return $uri;
+ }
+
+ public function getConnectionStatus() {
+ $status = $this->getEngine()->indexIsSane($this);
+ return $status ? parent::STATUS_OKAY : parent::STATUS_FAIL;
+ }
+
+}