Skip to content

Commit

Permalink
feat: misc enhancements
Browse files Browse the repository at this point in the history
* properly support host.status
* add Service resource type
* extend label examples
* use labels in generated docs
* refactor html generation
* enhance generated doc nav (only link to supported types)
* bump linkorb/graph to 1.2.1 for bugfix on missing labels
  • Loading branch information
joostfaassen committed Aug 22, 2020
1 parent 8501f77 commit 8eed4ed
Show file tree
Hide file tree
Showing 40 changed files with 1,462 additions and 370 deletions.
1,254 changes: 991 additions & 263 deletions composer.lock

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions example/resources/GitRepository/github.com__linkorb__infra.yaml
@@ -1,10 +1,10 @@
---
kind: GitRepository
metadata:
name: github.com__linkorb__infra
description: "INFRA: your infrastructure as a GraphQL service"
labels:
"infra.linkorb.com/code/license": "MIT"
"infra.linkorb.com/code/language": "php"
name: github.com__linkorb__infra
description: "INFRA: your infrastructure as a GraphQL service"
labels:
infra.linkorb.com/code/license: MIT
infra.linkorb.com/code/language: php
spec:
url: "git@github.com:linkorb/infra.git"
url: "git@github.com:linkorb/infra.git"
@@ -1,7 +1,10 @@
---
kind: GitRepository
metadata:
name: github.com__linkorb__schemata
description: 'Schemata: database schema powertools'
name: github.com__linkorb__schemata
description: 'Schemata: database schema powertools'
labels:
"infra.linkorb.com/code/license": "MIT"
"infra.linkorb.com/code/language": "php"
spec:
url: 'git@github.com:linkorb/schemata.git'
url: 'git@github.com:linkorb/schemata.git'
6 changes: 6 additions & 0 deletions example/resources/Host/app1.yaml
Expand Up @@ -3,8 +3,14 @@ kind: Host
metadata:
name: app1
description: First cool application server
labels:
provider: aws
costPrice: $40
costFrequency: monthly

spec:
os: xenial
publicIp: 192.168.1.1
privateIp: 10.0.1.1
hostGroups: prod-west, app
status: active
4 changes: 4 additions & 0 deletions example/resources/Host/app2.yaml
Expand Up @@ -3,6 +3,10 @@ kind: Host
metadata:
name: app2
description: Second cool application server
labels:
provider: aws
costPrice: $40
costFrequency: monthly
spec:
os: xenial
publicIp: 192.168.1.2
Expand Down
4 changes: 4 additions & 0 deletions example/resources/Host/db1m.yaml
Expand Up @@ -3,6 +3,10 @@ kind: Host
metadata:
name: db1m
description: Database master in the db1 cluster
labels:
provider: digital-ocean
costPrice: $80
costFrequency: monthly
spec:
os: xenial
publicIp: 192.168.2.1
Expand Down
4 changes: 4 additions & 0 deletions example/resources/Host/db1s.yaml
Expand Up @@ -3,6 +3,10 @@ kind: Host
metadata:
name: db1s
description: Database slave in the db1 cluster
labels:
provider: digital-ocean
costPrice: $80
costFrequency: monthly
spec:
os: xenial
publicIp: 192.168.2.2
Expand Down
4 changes: 4 additions & 0 deletions example/resources/Host/docker-engine-host1.yaml
Expand Up @@ -3,6 +3,10 @@ kind: Host
metadata:
name: docker-engine-host1
description: Docker Engine One
labels:
provider: google-cloud
costPrice: $75
costFrequency: monthly
spec:
os: xenial
publicIp: 192.168.1.2
Expand Down
2 changes: 1 addition & 1 deletion example/resources/HostGroup/prod.yaml
Expand Up @@ -5,4 +5,4 @@ metadata:
description: All hosts in the production environment
labels:
color: green
spec: []
spec: []
10 changes: 10 additions & 0 deletions example/resources/Service/mysql1.yaml
@@ -0,0 +1,10 @@
---
kind: Service
metadata:
name: mysql1
description: Main mysql service
labels:
environment: staging
spec:
hosts: db1m, db1s
# hostGroups: prod-west, app
79 changes: 78 additions & 1 deletion scripts/doc/html
Expand Up @@ -16,49 +16,71 @@ $generator->checkDirectory();
$generator->deleteObsoleteFiles();
$generator->generateIndex();

echo "Hosts\n";
$hosts = getHosts();
$generator->generateHosts($hosts);

echo "HostGroups\n";
$hostGroups = getHostGroups();
$generator->generateHostGroups($hostGroups);

echo "Services\n";
$services = getServices();
$generator->generateServices($services);

echo "OsReleases\n";
$osReleases = getOsReleases();
$generator->generateOsReleases($osReleases);

echo "FirewallRules\n";
$firewallRules = getFirewallRules();
$generator->generateFirewallRules($firewallRules);

echo "Repositories\n";
$repositories = getRepositories();
$generator->generateRepositories($repositories);

echo "Users\n";
$users = getUsers();
$generator->generateUsers($users);

echo "DnsDomains\n";
$domains = getDnsDomains();
$generator->generateDnsDomains($domains);

echo "MonitoringChecks\n";
$monitoringChecks = getMonitoringChecks();
$generator->generateMonitoringChecks($monitoringChecks);

echo "DockerEngines\n";
$dockerEngines = getDockerEngines();
$generator->generateDockerEngines($dockerEngines);


function getHosts()
{
$query = <<<GRAPHQL
query {
hosts: allHosts {
name
labels {
key
value
}
osRelease {
name
displayName
}
fqdn
publicIp
privateIp
status
memberships: hostGroups {
name
}
services {
name
}
}
}
GRAPHQL;
Expand All @@ -79,6 +101,10 @@ query {
hostGroups: allHostGroups {
name
description
labels {
key
value
}
parentHostGroup {
name
}
Expand All @@ -90,7 +116,6 @@ query {
GRAPHQL;

$data = Utils::query($query);

if (!empty($data['errors'][0])) {
throw new RuntimeException($data['errors'][0]['message']);
}
Expand All @@ -105,6 +130,10 @@ query {
osReleases: allOsReleases {
name
displayName
labels {
key
value
}
hosts {
name
}
Expand Down Expand Up @@ -155,6 +184,10 @@ query {
repositories: allGitRepositories {
name
description
labels {
key
value
}
owner: repositoryOwnerName
viewUrl
}
Expand All @@ -179,6 +212,10 @@ query {
githubLink
hasSshPublicKey
sshPublicKey
labels {
key
value
}
hosts {
name
publicIp
Expand All @@ -202,6 +239,10 @@ function getDnsDomains()
query {
domains: allDnsDomains {
name
labels {
key
value
}
dnsAccount
dnsRecords {
name
Expand All @@ -227,6 +268,10 @@ function getMonitoringChecks()
query {
allMonitoringChecks {
name
labels {
key
value
}
command
interval
}
Expand All @@ -250,6 +295,10 @@ query {
name
address
port
labels {
key
value
}
apps {
name
}
Expand All @@ -265,3 +314,31 @@ GRAPHQL;

return $data['data']['allDockerEngines'];
}


function getServices()
{
$query = <<<GRAPHQL
query {
allServices {
name
description
labels {
key
value
}
hosts {
name
}
}
}
GRAPHQL;

$data = Utils::query($query);

if (!empty($data['errors'][0])) {
throw new RuntimeException($data['errors'][0]['message']);
}

return $data['data']['allServices'];
}
3 changes: 2 additions & 1 deletion src/Infra.php
Expand Up @@ -39,6 +39,7 @@ public function __construct(Graph $graph)
$graph->registerType(Resource\DockerAppResource::class);
$graph->registerType(Resource\QueryResource::class);
$graph->registerType(Resource\BackupRuleResource::class);
$graph->registerType(Resource\ServiceResource::class);

$graph->init($this);
}
Expand Down Expand Up @@ -151,5 +152,5 @@ public function copyTemplate(HostResource $host, $template, $destination)
unlink($tmpfile);
}


}
4 changes: 4 additions & 0 deletions src/Resource/DnsDomainResource.php
Expand Up @@ -36,6 +36,10 @@ public static function getConfig(Graph $graph): array
'fields' => function () use (&$graph) {
return [
'name' => Type::id(),
'labels' => [
'type' => Type::listOf($graph->getType('Label')),
'description' => 'Returns all labels',
],
'dnsAccount' => [
'type' => Type::string(),
'description' => 'DNS account',
Expand Down
4 changes: 4 additions & 0 deletions src/Resource/DockerEngineResource.php
Expand Up @@ -42,6 +42,10 @@ public static function getConfig(Graph $graph): array
'type' => Type::string(),
'description' => 'Description',
],
'labels' => [
'type' => Type::listOf($graph->getType('Label')),
'description' => 'Returns all labels',
],
'address' => [
'type' => Type::string(),
'description' => 'Docker Engine IP address',
Expand Down
4 changes: 4 additions & 0 deletions src/Resource/FirewallRuleResource.php
Expand Up @@ -51,6 +51,10 @@ public static function getConfig(Graph $graph)
'type' => Type::string(),
'description' => 'Description',
],
'labels' => [
'type' => Type::listOf($graph->getType('Label')),
'description' => 'Returns all labels',
],
'template' => [
'type' => Type::string(),
'description' => 'iptables template',
Expand Down
5 changes: 4 additions & 1 deletion src/Resource/GitRepositoryResource.php
Expand Up @@ -70,7 +70,10 @@ public static function getConfig(Graph $graph)
'sshUrl' => Type::string(),
'httpUrl' => Type::string(),
'viewUrl' => Type::string(),

'labels' => [
'type' => Type::listOf($graph->getType('Label')),
'description' => 'Returns all labels',
],
],
];
}
Expand Down
4 changes: 4 additions & 0 deletions src/Resource/HostGroupResource.php
Expand Up @@ -72,6 +72,10 @@ public static function getConfig(Graph $graph)
'type' => Type::string(),
'description' => 'Description',
],
'labels' => [
'type' => Type::listOf($graph->getType('Label')),
'description' => 'Returns all labels',
],
'parentHostGroup' => [
'type' => $graph->getType('HostGroup'),
'description' => 'Parent host group',
Expand Down

0 comments on commit 8eed4ed

Please sign in to comment.