func()

in pkg/controller/ingress/ingress_controller.go [671:715]


func (r *ReconcileIngress) update(instance *extensionsv1beta1.Ingress) error {
	network, err := r.fetchNetworkingInfo(instance)
	if err != nil {
		r.log.Error("unable to fetch networking info", zap.Error(err))
		return err
	}

	r.log.Info("updating proxy")
	svc, err := r.updateReverseProxy(instance)
	if err != nil {
		r.log.Error("error creating proxy resources", zap.Error(err))
		return err
	}

	cfnTemplate := cfn.BuildApiGatewayTemplateFromIngressRule(&cfn.TemplateConfig{
		Rule:             instance.Spec.Rules[0],
		Network:          network,
		Arns:             getArns(instance),
		StageName:        getStageName(instance),
		NodePort:         int(svc.Spec.Ports[0].NodePort),
		CustomDomainName: getCustomDomainName(instance),
		CertificateArn:   getCertificateArn(instance),
	})
	b, err := cfnTemplate.YAML()
	if err != nil {
		return err
	}

	if _, err := r.cfnSvc.UpdateStack(&cloudformation.UpdateStackInput{
		TemplateBody: aws.String(string(b)),
		StackName:    aws.String(instance.GetObjectMeta().GetName()),
		Capabilities: aws.StringSlice([]string{"CAPABILITY_IAM"}),
		Tags: []*cloudformation.Tag{
			{
				Key:   aws.String("managedBy"),
				Value: aws.String("aws-apigateway-ingress-controller"),
			},
		},
	}); err != nil {
		r.log.Error("unable to fetch proxy service", zap.Error(err))
		return err
	}

	return nil
}