Skip to content

Commit 6466044

Browse files
committed
support for getting instsance values yaml (spec), add create and get instance scripts
1 parent f7dc359 commit 6466044

File tree

4 files changed

+71
-3
lines changed

4 files changed

+71
-3
lines changed

ckan_cloud_operator/providers/ckan/instance/cli.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,15 @@ def update(instance_id_or_name, override_spec_json, persist_overrides, wait_read
5050
@instance.command()
5151
@click.argument('INSTANCE_ID_OR_NAME')
5252
@click.argument('ATTR', required=False)
53-
def get(instance_id_or_name, attr):
53+
@click.option('--with-spec', is_flag=True)
54+
def get(instance_id_or_name, attr, with_spec):
5455
"""Get detailed information about an instance, optionally returning only a single get attribute
5556
5657
Example: ckan-cloud-operator ckan instance get <INSTANCE_ID_OR_NAME> deployment
5758
"""
58-
logs.print_yaml_dump(manager.get(instance_id_or_name, attr), exit_success=True)
59+
if attr == 'spec':
60+
with_spec = True
61+
logs.print_yaml_dump(manager.get(instance_id_or_name, attr, with_spec=with_spec), exit_success=True)
5962

6063

6164
@instance.command('list')

ckan_cloud_operator/providers/ckan/instance/manager.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ def create(instance_type, instance_id=None, instance_name=None, values=None, val
3535
), dry_run=dry_run)
3636
if instance_name:
3737
set_name(instance_id, instance_name, dry_run=dry_run)
38+
return instance_id
3839

3940

4041
def update(instance_id_or_name, override_spec=None, persist_overrides=False, wait_ready=False, skip_deployment=False):
@@ -79,11 +80,16 @@ def wait_instance_ready(instance_id_or_name):
7980
time.sleep(2)
8081

8182

82-
def get(instance_id_or_name, attr=None, exclude_attr=None):
83+
def get(instance_id_or_name, attr=None, exclude_attr=None, with_spec=False):
8384
"""Get detailed information about the instance and related components"""
8485
instance, instance_id, instance_type = _get_instance_id_and_type(instance_id_or_name)
86+
if not exclude_attr:
87+
exclude_attr = []
88+
if not with_spec:
89+
exclude_attr.append('spec')
8590
gets = {
8691
'deployment': lambda: deployment_manager.get(instance_id, instance_type, instance),
92+
'spec': lambda: instance['spec']
8793
}
8894
if exclude_attr:
8995
gets = {k: v for k, v in gets.items() if k not in exclude_attr}

scripts/create helm instance.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import os
2+
import yaml
3+
from ckan_cloud_operator import kubectl
4+
from ckan_cloud_operator.providers.ckan.instance import manager as ckan_instance_manager
5+
6+
7+
instance_type = 'helm'
8+
9+
instance_id = os.environ.get('INSTANCE_ID')
10+
11+
instance_name = os.environ.get('INSTANCE_NAME')
12+
13+
values_yaml = os.environ.get('VALUES_YAML')
14+
assert values_yaml
15+
values = yaml.load(values_yaml)
16+
17+
exists_ok = os.environ.get('EXISTS_OK')
18+
exists_ok = exists_ok == 'yes'
19+
20+
dry_run = os.environ.get('DRY_RUN')
21+
dry_run = dry_run == 'yes'
22+
23+
update = os.environ.get('UPDATE')
24+
update = update == 'yes'
25+
26+
wait_ready = os.environ.get('WAIT_READY')
27+
wait_ready = wait_ready == 'yes'
28+
29+
30+
instance_id = ckan_instance_manager.create(
31+
instance_type=instance_type, instance_id=instance_id, instance_name=instance_name,
32+
values=values, exists_ok=exists_ok, dry_run=dry_run
33+
)
34+
35+
36+
if update:
37+
if dry_run:
38+
raise Exception('dry run is not supported with update')
39+
else:
40+
ckan_instance_manager.update(instance_id, wait_ready=wait_ready)

scripts/get instance.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import os
2+
import yaml
3+
from ckan_cloud_operator import kubectl
4+
from ckan_cloud_operator import logs
5+
from ckan_cloud_operator.providers.ckan.instance import manager as ckan_instance_manager
6+
7+
8+
instance_id_or_name = os.environ.get('INSTANCE_ID_OR_NAME')
9+
10+
attr = os.environ.get('ATTR')
11+
12+
with_spec = os.environ.get('WITH_SPEC')
13+
with_spec = with_spec == 'yes'
14+
15+
16+
logs.print_yaml_dump(
17+
ckan_instance_manager.get(instance_id_or_name=instance_id_or_name, attr=attr, with_spec=with_spec),
18+
exit_success=True
19+
)

0 commit comments

Comments
 (0)