Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add OVA provider and inventory #419

Merged
merged 2 commits into from
Jul 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ build --action_env=POPULATOR_CONTROLLER_IMAGE=quay.io/kubev2v/populator-controll
build --action_env=OPENSTACK_POPULATOR_IMAGE=quay.io/kubev2v/openstack-populator:latest
build --action_env=OVIRT_POPULATOR_IMAGE=quay.io/kubev2v/ovirt-populator:latest
build --action_env=OPERATOR_IMAGE=quay.io/kubev2v/forklift-operator:latest
build --action_env=OVA_PROVIDER_SERVER_IMAGE=quay.io/kubev2v/forklift-ova-provider-server:latest

# Appliance build
# container_run_and_extract() does not work inside Podman and Docker
Expand Down
2 changes: 2 additions & 0 deletions operator/config/manager/manager.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ spec:
value: ${OVIRT_POPULATOR_IMAGE}
- name: OPENSTACK_POPULATOR_IMAGE
value: ${OPENSTACK_POPULATOR_IMAGE}
- name: OVA_PROVIDER_SERVER_IMAGE
value: ${OVA_PROVIDER_SERVER_IMAGE}
livenessProbe:
httpGet:
path: /healthz
Expand Down
15 changes: 14 additions & 1 deletion operator/config/rbac/forklift-controller_role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ rules:
# PVs added for the populator(s) that uses the same role as forklift-controller
- persistentvolumes
- persistentvolumeclaims
- services
verbs:
- get
- list
Expand Down Expand Up @@ -121,4 +122,16 @@ rules:
- create
- update
- patch
- delete
- delete
- apiGroups:
- apps
resources:
- deployments
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
12 changes: 12 additions & 0 deletions operator/config/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,15 @@ rules:
- certificates
verbs:
- '*'
- apiGroups:
- security.openshift.io
resources:
- securitycontextconstraints
verbs:
- create
- delete
- get
- list
- watch
- update
- patch
2 changes: 2 additions & 0 deletions operator/roles/forkliftcontroller/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,5 @@ must_gather_image_fqin: "{{ lookup( 'env', 'MUST_GATHER_IMAGE') or lookup( 'env'
virt_v2v_image_fqin: "{{ lookup( 'env', 'VIRT_V2V_IMAGE') or lookup( 'env', 'RELATED_IMAGE_VIRT_V2V') }}"
virt_v2v_warm_image_fqin: "{{ lookup( 'env', 'VIRT_V2V_WARM_IMAGE') or lookup( 'env', 'RELATED_IMAGE_VIRT_V2V_WARM') }}"
virt_v2v_dont_request_kvm: "{{ lookup( 'env', 'VIRT_V2V_DONT_REQUEST_KVM') }}"

ova_provider_server_fqin: "{{ lookup( 'env', 'OVA_PROVIDER_SERVER_IMAGE') or lookup( 'env', 'RELATED_IMAGE_OVA_PROVIDER_SERVER') }}"
6 changes: 6 additions & 0 deletions operator/roles/forkliftcontroller/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@
definition: "{{ lookup('template', 'controller/route-inventory.yml.j2') }}"
when: not k8s_cluster|bool

- name: "Setup forklift-controller security context constraints"
k8s:
state: present
definition: "{{ lookup('template', 'controller/controller-scc.yml.j2') }}"
ahadas marked this conversation as resolved.
Show resolved Hide resolved
when: not k8s_cluster|bool

- when: feature_volume_populator|bool
block:
- name: "Setup populator controller deployment"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
kind: SecurityContextConstraints
apiVersion: security.openshift.io/v1
metadata:
name: forklift-controller-scc
users:
- system:serviceaccount:konveyor-forklift:forklift-controller
runAsUser:
type: RunAsAny
seLinuxContext:
type: RunAsAny
allowPrivilegedContainer: false
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,8 @@ spec:
value: '8082'
- name: SECRET_NAME
value: webhook-server-secret
- name: OVA_PROVIDER_SERVER_IMAGE
value: {{ ova_provider_server_fqin }}
{% if feature_validation|bool %}
- name: POLICY_AGENT_URL
value: "https://{{ validation_service_name }}.{{ app_namespace }}.svc.cluster.local:8181"
Expand Down
5 changes: 4 additions & 1 deletion pkg/apis/forklift/v1beta1/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,16 @@ const (
OVirt ProviderType = "ovirt"
// OpenStack
OpenStack ProviderType = "openstack"
// OVA
Ova ProviderType = "ova"
)

var ProviderTypes = []ProviderType{
OpenShift,
VSphere,
OVirt,
OpenStack,
Ova,
}

func (t ProviderType) String() string {
Expand Down Expand Up @@ -164,5 +167,5 @@ func (p *Provider) HasReconciled() bool {

// This provider requires VM guest conversion.
func (p *Provider) RequiresConversion() bool {
return p.Type() == VSphere
return p.Type() == VSphere || p.Type() == Ova
}
1 change: 1 addition & 0 deletions pkg/controller/host/handler/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ go_library(
"//pkg/apis/forklift/v1beta1",
"//pkg/controller/host/handler/ocp",
"//pkg/controller/host/handler/openstack",
"//pkg/controller/host/handler/ova",
"//pkg/controller/host/handler/ovirt",
"//pkg/controller/host/handler/vsphere",
"//pkg/controller/watch/handler",
Expand Down
6 changes: 6 additions & 0 deletions pkg/controller/host/handler/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
api "github.com/konveyor/forklift-controller/pkg/apis/forklift/v1beta1"
"github.com/konveyor/forklift-controller/pkg/controller/host/handler/ocp"
"github.com/konveyor/forklift-controller/pkg/controller/host/handler/openstack"
"github.com/konveyor/forklift-controller/pkg/controller/host/handler/ova"
"github.com/konveyor/forklift-controller/pkg/controller/host/handler/ovirt"
"github.com/konveyor/forklift-controller/pkg/controller/host/handler/vsphere"
"github.com/konveyor/forklift-controller/pkg/controller/watch/handler"
Expand Down Expand Up @@ -47,6 +48,11 @@ func New(
client,
channel,
provider)
case api.Ova:
h, err = ova.New(
client,
channel,
provider)
default:
err = liberr.New("provider not supported.")
}
Expand Down
17 changes: 17 additions & 0 deletions pkg/controller/host/handler/ova/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
load("@io_bazel_rules_go//go:def.bzl", "go_library")

go_library(
name = "ova",
srcs = [
"doc.go",
"handler.go",
],
importpath = "github.com/konveyor/forklift-controller/pkg/controller/host/handler/ova",
visibility = ["//visibility:public"],
deps = [
"//pkg/apis/forklift/v1beta1",
"//pkg/controller/watch/handler",
"//vendor/sigs.k8s.io/controller-runtime/pkg/client",
"//vendor/sigs.k8s.io/controller-runtime/pkg/event",
],
)
22 changes: 22 additions & 0 deletions pkg/controller/host/handler/ova/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package ova

import (
api "github.com/konveyor/forklift-controller/pkg/apis/forklift/v1beta1"
"github.com/konveyor/forklift-controller/pkg/controller/watch/handler"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/event"
)

// Handler factory.
func New(
client client.Client,
channel chan event.GenericEvent,
provider *api.Provider) (h *Handler, err error) {
//
b, err := handler.New(client, channel, provider)
if err != nil {
return
}
h = &Handler{Handler: b}
return
}
15 changes: 15 additions & 0 deletions pkg/controller/host/handler/ova/handler.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ova

import (
"github.com/konveyor/forklift-controller/pkg/controller/watch/handler"
)

// Provider watch event handler.
type Handler struct {
*handler.Handler
}

// Ensure watch on hosts.
func (r *Handler) Watch(watch *handler.WatchManager) (err error) {
return
}
18 changes: 18 additions & 0 deletions pkg/controller/map/storage/handler/ova/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
load("@io_bazel_rules_go//go:def.bzl", "go_library")

go_library(
name = "ova",
srcs = [
"doc.go",
"handler.go",
],
importpath = "github.com/konveyor/forklift-controller/pkg/controller/map/storage/handler/ova",
visibility = ["//visibility:public"],
deps = [
"//pkg/apis/forklift/v1beta1",
"//pkg/controller/watch/handler",
"//pkg/lib/logging",
"//vendor/sigs.k8s.io/controller-runtime/pkg/client",
"//vendor/sigs.k8s.io/controller-runtime/pkg/event",
],
)
22 changes: 22 additions & 0 deletions pkg/controller/map/storage/handler/ova/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package ova

import (
api "github.com/konveyor/forklift-controller/pkg/apis/forklift/v1beta1"
"github.com/konveyor/forklift-controller/pkg/controller/watch/handler"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/event"
)

// Handler factory.
func New(
client client.Client,
channel chan event.GenericEvent,
provider *api.Provider) (h *Handler, err error) {
//
b, err := handler.New(client, channel, provider)
if err != nil {
return
}
h = &Handler{Handler: b}
return
}
14 changes: 14 additions & 0 deletions pkg/controller/map/storage/handler/ova/handler.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package ova

import (
"github.com/konveyor/forklift-controller/pkg/controller/watch/handler"
"github.com/konveyor/forklift-controller/pkg/lib/logging"
)

// Package logger.
var log = logging.WithName("storageMap|ova")

// Provider watch event handler.
type Handler struct {
*handler.Handler
}
1 change: 1 addition & 0 deletions pkg/controller/plan/handler/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ go_library(
"//pkg/apis/forklift/v1beta1",
"//pkg/controller/plan/handler/ocp",
"//pkg/controller/plan/handler/openstack",
"//pkg/controller/plan/handler/ova",
"//pkg/controller/plan/handler/ovirt",
"//pkg/controller/plan/handler/vsphere",
"//pkg/controller/watch/handler",
Expand Down
6 changes: 6 additions & 0 deletions pkg/controller/plan/handler/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
api "github.com/konveyor/forklift-controller/pkg/apis/forklift/v1beta1"
"github.com/konveyor/forklift-controller/pkg/controller/plan/handler/ocp"
"github.com/konveyor/forklift-controller/pkg/controller/plan/handler/openstack"
"github.com/konveyor/forklift-controller/pkg/controller/plan/handler/ova"
"github.com/konveyor/forklift-controller/pkg/controller/plan/handler/ovirt"
"github.com/konveyor/forklift-controller/pkg/controller/plan/handler/vsphere"
"github.com/konveyor/forklift-controller/pkg/controller/watch/handler"
Expand Down Expand Up @@ -47,6 +48,11 @@ func New(
client,
channel,
provider)
case api.Ova:
h, err = ova.New(
client,
channel,
provider)
default:
err = liberr.New("provider not supported.")
}
Expand Down
22 changes: 22 additions & 0 deletions pkg/controller/plan/handler/ova/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
load("@io_bazel_rules_go//go:def.bzl", "go_library")

go_library(
name = "ova",
srcs = [
"doc.go",
"handler.go",
],
importpath = "github.com/konveyor/forklift-controller/pkg/controller/plan/handler/ova",
visibility = ["//visibility:public"],
deps = [
"//pkg/apis/forklift/v1beta1",
"//pkg/controller/provider/web/ova",
"//pkg/controller/watch/handler",
"//pkg/lib/error",
"//pkg/lib/inventory/web",
"//pkg/lib/logging",
"//vendor/golang.org/x/net/context",
"//vendor/sigs.k8s.io/controller-runtime/pkg/client",
"//vendor/sigs.k8s.io/controller-runtime/pkg/event",
],
)
22 changes: 22 additions & 0 deletions pkg/controller/plan/handler/ova/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package ova

import (
api "github.com/konveyor/forklift-controller/pkg/apis/forklift/v1beta1"
"github.com/konveyor/forklift-controller/pkg/controller/watch/handler"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/event"
)

// Handler factory.
func New(
client client.Client,
channel chan event.GenericEvent,
provider *api.Provider) (h *Handler, err error) {
//
b, err := handler.New(client, channel, provider)
if err != nil {
return
}
h = &Handler{Handler: b}
return
}
Loading
Loading