예제 #1
0
    def post(self):
        # TODO: Currently all Heat parameters are hardcoded in
        #       template.
        params = {}
        rcs = pecan.request.dbapi.get_heat_data()
        heat = heat_client()
        nova_utils = NovaClient()

        template_body = render(
            'overcloud.yaml', dict(resource_classes=rcs, nova_util=nova_utils))
        if heat.validate_template(template_body):

            if heat.exists_stack():
                res = heat.update_stack(template_body, params)
            else:
                res = heat.create_stack(template_body, params)

            if res:
                for rc in rcs:
                    [
                        pecan.request.dbapi.update_rack_state(
                            r, 'CREATE_IN_PROGRESS') for r in rc.racks
                    ]

                pecan.response.status_code = 202
                return {}
            else:
                raise wsme.exc.ClientSideError(
                    _("Cannot update the Heat overcloud template"))
        else:
            raise wsme.exc.ClientSideError(
                _("The overcloud Heat template" + "could not be validated"))
예제 #2
0
    def post(self):
        # TODO(): Currently all Heat parameters are hardcoded in
        #       template.
        params = {}
        rcs = pecan.request.dbapi.get_heat_data()
        heat = heat_client()
        nova_utils = NovaClient()

        template_body = render('overcloud.yaml', dict(resource_classes=rcs,
            nova_util=nova_utils))
        if heat.validate_template(template_body):

            if heat.exists_stack():
                res = heat.update_stack(template_body, params)
            else:
                res = heat.create_stack(template_body, params)

            if res:
                for rc in rcs:
                    [pecan.request.dbapi.update_rack_state(
                        r, 'CREATE_IN_PROGRESS') for r in rc.racks]

                pecan.response.status_code = 202
                return {}
            else:
                raise wsme.exc.ClientSideError(_(
                    "Cannot update the Heat overcloud template"
                ))
        else:
            raise wsme.exc.ClientSideError(_("The overcloud Heat template"
                                             "could not be validated"))
예제 #3
0
    def post(self):
        # TODO(): Currently all Heat parameters are hardcoded in
        #       template.
        params = {}
        params['AdminToken']=CONF.overcloud['OVERCLOUD_ADMIN_TOKEN']
        params['AdminPassword']=CONF.overcloud['OVERCLOUD_ADMIN_PASSWORD']
        params['CinderPassword']=CONF.overcloud['OVERCLOUD_CINDER_PASSWORD']
        params['GlancePassword']=CONF.overcloud['OVERCLOUD_GLANCE_PASSWORD']
        params['HeatPassword']=CONF.overcloud['OVERCLOUD_HEAT_PASSWORD']
        params['NeutronPassword']=CONF.overcloud['OVERCLOUD_NEUTRON_PASSWORD']
        params['NovaPassword']=CONF.overcloud['OVERCLOUD_NOVA_PASSWORD']
        params['NovaComputeLibvirtType']=CONF.overcloud['OVERCLOUD_LIBVIRT_TYPE']

        rcs = pecan.request.dbapi.get_heat_data()
        heat = heat_client()
        nova_utils = NovaClient()

        for resource in rcs:
            service_type = resource.service_type
            image_id = getattr(resource, "image_id", None)

            if image_id:
                if service_type == 'compute':
                    params['NovaImage'] = image_id
                elif service_type in ('not_compute', 'controller'):
                    params['notcomputeImage'] = image_id

        template_body = render('overcloud.yaml', dict(resource_classes=rcs,
            nova_util=nova_utils))
        if heat.validate_template(template_body):

            if heat.exists_stack():
                res = heat.update_stack(template_body, params)
            else:
                res = heat.create_stack(template_body, params)

            if res:
                for rc in rcs:
                    [pecan.request.dbapi.update_rack_state(
                        r, 'CREATE_IN_PROGRESS') for r in rc.racks]

                pecan.response.status_code = 202
                return {}
            else:
                raise wsme.exc.ClientSideError(_(
                    "Cannot update the Heat overcloud template"
                ))
        else:
            raise wsme.exc.ClientSideError(_("The overcloud Heat template"
                                             "could not be validated"))
예제 #4
0
 def template(self):
     rcs = pecan.request.dbapi.get_heat_data()
     nova_utils = NovaClient()
     return render('overcloud.yaml', dict(resource_classes=rcs,
                                          nova_util=nova_utils))
예제 #5
0
 def template(self):
     rcs = pecan.request.dbapi.get_heat_data()
     nova_utils = NovaClient()
     return render('overcloud.yaml',
                   dict(resource_classes=rcs, nova_util=nova_utils))