summaryrefslogtreecommitdiff
path: root/src/caas/services/patchservice.py
blob: c98605146afe00ac8183edd191e4997ada8315a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import datetime
from ..models import Cluster, WrInstallSchedule, PatchSchedule, WrBatch
from django.conf import settings
from .helpers import Jinja
from .ansibleservice import AnsibleService


class PatchService(AnsibleService):
    """
    target == ilo_host_address, later becomes cluster_name
    """
    def __init__(self, target, git, branch, playbook, zmq):
        super().__init__("patch", target, git, branch, playbook, zmq)

    def schedule_install(self):
        pass
        # try:
        #     patchbatch_kwargs = {"ilo_host_address": self.target}
        #     # repurpose WrBatch
        #     patchbatch = WrBatch.objects.get(**patchbatch_kwargs)
        # except WrBatch.DoesNotExist:
        #     return "FAILED: while scheduling Wind River installation: cannot find wrbatch with ilo_host_address: %s" % self.target
        # try:
        #     cluster_kwargs = {"pk": patchbatch.cluster_id}
        #     cluster = Cluster.objects.get(**cluster_kwargs)
        # except Cluster.DoesNotExist:
        #     return "FAILED: while scheduling Wind River installation: cannot find cluster associated with wrbatch with ilo_host_address: %s" % patchbatch.ilo_host_address
        # patch_kwargs = {"cluster_id": cluster.pk}
        # patch, patch_created = PatchSchedule.objects.get_or_create(**patch_kwargs)
        # if patch.date_scheduled is None:
        #     patch.date_scheduled = datetime.datetime.now()
        # if patch.kirke_ticket_number is None:
        #     # TODO bealer: create KIRKE ticket
        #     pass
        # patch.save()
        # # one playbook per cluster
        # self.target = cluster.cluster_name
        # with tempfile.TemporaryDirectory() as tempdir:
        #     builddir = "%s/%s" % (tempdir, self.repo_name)
        #     self.clone_repo(builddir)
        #     # host_vars file
        #     patch_config = {"wr_vendor_name": patchbatch.vendor_name,
        #                  "wr_region_name": cluster.cluster_name,
        #                  "wr_central_p": False if patchbatch.parent_oam_vip_hostname else True,
        #                  "wr_bmc_controller_0_address": patchbatch.ilo_host_address,
        #                  "wr_mgmt_controller_0_mac": patchbatch.pxe_mac_address,
        #                  "wr_oam_floating_address": patchbatch.oam_vip_address,
        #                  "wr_oam_node_0_address": patchbatch.oam_host_address,
        #                  "wr_oam_gateway_address": patchbatch.oam_default_gateway,
        #                  "wr_mgmt_start_address": patchbatch.mgmt_address_range_start,
        #                  "wr_mgmt_end_address": patchbatch.mgmt_address_range_end,
        #                  "wr_mgmt_gateway_address": patchbatch.mgmt_default_gateway,
        #                  "wr_mgmt_subnet": patchbatch.mgmt_subnet,
        #                  "wr_central_mgmt_start_address": patchbatch.parent_mgmt_address_range_start,
        #                  "wr_central_mgmt_default_gateway": patchbatch.parent_mgmt_default_gateway,
        #                  "wr_host_vlan": patchbatch.host_vlan,
        #                  "wr_oam_vlan": patchbatch.oam_vlan,
        #                  "wr_mgmt_vlan": patchbatch.mgmt_vlan,
        #                  "wr_bmc_username": patchbatch.bmc_username,
        #                  "wr_bmc_password": patchbatch.bmc_password,
        #                  "wr_dns_servers": settings.DNS_SERVERS,
        #                  "wr_ntp_servers": settings.NTP_SERVERS,
        #                  "wr_registry_server": settings.WR_REGISTRY_SERVER,
        #                  "wr_registry_username": settings.WR_REGISTRY_USERNAME,
        #                  "wr_registry_password": settings.WR_REGISTRY_PASSWORD,
        #                  "wr_webdav_server": settings.WR_WEBDAV_SERVER,
        #                  "wr_webdav_username": settings.WR_WEBDAV_USERNAME,
        #                  "wr_webdav_password": settings.WR_WEBDAV_PASSWORD,
        #                  "wr_docker_http_proxy": settings.WR_DOCKER_HTTP_PROXY,
        #                  "wr_docker_https_proxy": settings.WR_DOCKER_HTTPS_PROXY,
        #                  "wr_docker_no_proxy": settings.WR_DOCKER_NO_PROXY,
        #                  "wr_ssl_ca_cert": settings.WR_SSL_CA_CERT}
        #     content = Jinja.render("patch_host_vars.j2", **patch_config)
        #     filename = "%s/host_vars/%s" % (builddir, patchbatch.oam_hostname)
        #     with AnsibleVaultFile(filename) as f:
        #         f.write(content)
        #     # inventory file
        #     patch_config = {"central_target": patchbatch.parent_cluster_name,
        #                  "central_target_ip": patchbatch.parent_oam_vip_address,
        #                  "remote_target": patchbatch.oam_hostname,
        #                  "remote_target_ip": patchbatch.oam_vip_address}
        #     content = Jinja.render("patch_inventory.j2", **patch_config)
        #     filename = "%s/inventory/%s.yaml" % (builddir, cluster.cluster_name)
        #     with open(filename, "w") as f:
        #         f.write(content)
        #     self.push()

    def deploy(self):
        pass
        # kirke_inprocess = PatchSchedule.objects.filter(kirke_ticket_number__isnull = False,
        #                                                    kirke_ticket_completed__isnull = True)
        # for rec in kirke_inprocess:
        #     # TODO bealer: query KIRKE and update status
        #     rec.save()
        # patch_schedule_kwargs = {"kirke_ticket_completed__isnull": False,
        #                       "date_completed__isnull": True}
        # patch_schedule_ready = PatchSchedule.objects.filter(**patch_schedule_kwargs)
        # for sched in patch_schedule_ready:
        #     try:
        #         patchbatch_kwargs = {"cluster_id": sched.cluster.pk,
        #                           "intel_nic_firmware_version": settings.INTEL_NIC_FIRMWARE_VERSION}
        #         patchbatch = WrBatch.objects.filter(**patchbatch_kwargs)
        #     except WrBatch.DoesNotExist:
        #         return "FAILED: while running PATCH batch playbook: failed to look up wrbatch"
        #     self.target = patchbatch.cluster_name
        #     self.run_playbook()