Skip to content
Commits on Source (2)
...@@ -37,6 +37,10 @@ func (app *CLI) SetDefaults() { ...@@ -37,6 +37,10 @@ func (app *CLI) SetDefaults() {
app.RestartPolicy = corev1.RestartPolicyOnFailure app.RestartPolicy = corev1.RestartPolicyOnFailure
} }
if len(app.Settings) == 0 {
app.Settings = []string{"app"}
}
app.ObjectMeta.SetComponent("cli") app.ObjectMeta.SetComponent("cli")
// TODO TOFIX // TODO TOFIX
......
...@@ -25,7 +25,7 @@ import ( ...@@ -25,7 +25,7 @@ import (
) )
var ( var (
wwwDataUserID int64 = 33 wwwDataUserID int64 = 82
) )
func (o *Nextcloud) GetOwner() interfaces.Object { return o } func (o *Nextcloud) GetOwner() interfaces.Object { return o }
...@@ -150,4 +150,8 @@ func (app *Nextcloud) SetDefaults() { ...@@ -150,4 +150,8 @@ func (app *Nextcloud) SetDefaults() {
app.Spec.Settings.SetDefaults() app.Spec.Settings.SetDefaults()
app.Spec.Settings.SetDefaults() app.Spec.Settings.SetDefaults()
// TODO TOFIX
if len(app.Spec.Settings.AppSettings.General.Version.Value) == 0 || len(app.Spec.Settings.AppSettings.General.Version.Ref) == 0 {
app.Spec.Settings.AppSettings.General.Version.Value = app.Spec.Version
}
} }
...@@ -14,7 +14,7 @@ type AppSettings struct { ...@@ -14,7 +14,7 @@ type AppSettings struct {
SMTP SMTP `json:"smtp,omitempty"` SMTP SMTP `json:"smtp,omitempty"`
General General `json:"general,omitempty"` General General `json:"general,omitempty"`
ObjectStore ObjectStore `json:"objectStore,omitempty"` ObjectStore ObjectStore `json:"objectStore,omitempty"`
Redis Redis `json:"cache,omitempty"` Redis Redis `json:"redis,omitempty"`
} }
func (s *AppSettings) GetMeta() meta.Instance { return s.CreateOptions.CommonMeta } func (s *AppSettings) GetMeta() meta.Instance { return s.CreateOptions.CommonMeta }
......
...@@ -30,5 +30,7 @@ func (d *Redis) SetDefaults() { ...@@ -30,5 +30,7 @@ func (d *Redis) SetDefaults() {
} }
func (s *Redis) GetParameters() *parameters.Parameters { func (s *Redis) GetParameters() *parameters.Parameters {
return &parameters.Parameters{} params, _ := parameters.Marshal(*s)
return &params
} }
...@@ -22,20 +22,20 @@ type Database struct { ...@@ -22,20 +22,20 @@ type Database struct {
Host parameters.Parameter `json:"host,omitempty" env:"DB_HOST"` Host parameters.Parameter `json:"host,omitempty" env:"DB_HOST"`
Port parameters.Parameter `json:"port,omitempty" env:"DB_PORT"` Port parameters.Parameter `json:"port,omitempty" env:"DB_PORT"`
Type parameters.Parameter `json:"type,omitempty" env:"DB_TYPE"` Type parameters.Parameter `json:"type,omitempty" env:"DB_TYPE"`
Username parameters.Parameter `json:"username,omitempty" env:"DB_USERNAME"` Username parameters.Parameter `json:"username,omitempty" env:"DB_USER"`
Password parameters.Parameter `json:"password,omitempty" env:"DB_PASSWORD"` Password parameters.Parameter `json:"password,omitempty" env:"DB_PASSWORD"`
} }
func (s *Database) SetDefaults() { func (s *Database) SetDefaults() {
if len(s.Database.Value) == 0 || len(s.Database.ValueFrom.Ref) == 0 { if len(s.Database.Value) == 0 && len(s.Database.ValueFrom.Ref) == 0 {
s.Database.Value = "nextcloud" s.Database.Value = "nextcloud"
} }
if len(s.Port.Value) == 0 || len(s.Port.ValueFrom.Ref) == 0 { if len(s.Port.Value) == 0 && len(s.Port.ValueFrom.Ref) == 0 {
s.Port.Value = "5425" s.Port.Value = "5425"
} }
if len(s.Type.Value) == 0 || len(s.Type.ValueFrom.Ref) == 0 { if len(s.Type.Value) == 0 && len(s.Type.ValueFrom.Ref) == 0 {
s.Type.Value = "pgsql" s.Type.Value = "pgsql"
} }
} }
......
...@@ -16,6 +16,8 @@ limitations under the License. ...@@ -16,6 +16,8 @@ limitations under the License.
package v1alpha1 package v1alpha1
import ( import (
"fmt"
"k8s.libre.sh/application/settings/parameters" "k8s.libre.sh/application/settings/parameters"
) )
...@@ -49,34 +51,40 @@ type GlobalSettings struct { ...@@ -49,34 +51,40 @@ type GlobalSettings struct {
Debug parameters.Parameter `json:"debug,omitempty" env:"DEBUG"` Debug parameters.Parameter `json:"debug,omitempty" env:"DEBUG"`
ReadOnly parameters.Parameter `json:"readOnly,omitempty" env:"CONFIG_READONLY"` ReadOnly parameters.Parameter `json:"readOnly,omitempty" env:"CONFIG_READONLY"`
UpdateChecker parameters.Parameter `json:"updateChecker,omitempty" env:"UPDATE_CHECKER"` UpdateChecker parameters.Parameter `json:"updateChecker,omitempty" env:"UPDATE_CHECKER"`
UpdateURL parameters.Parameter `json:"udpateURL,omitempty" env:"OVERWRITECLI"` UpdateURL parameters.Parameter `json:"udpateURL,omitempty" env:"UPDATE_URL"`
UpdateChannel parameters.Parameter `json:"updateChannel,omitempty" env:"UPDATE_URL"` UpdateChannel parameters.Parameter `json:"updateChannel,omitempty" env:"UPDATE_CHANNEL"`
UpdateDisable parameters.Parameter `json:"updateDisable,omitempty" env:"UPDATE_CHANNEL"` UpdateDisable parameters.Parameter `json:"updateDisable,omitempty" env:"UPDATE_DISABLE_WEB"`
BruteForce parameters.Parameter `json:"bruteforce,omitempty" env:"UPDATE_DISABLE_WEB"` BruteForce parameters.Parameter `json:"bruteforce,omitempty" env:"BRUTEFORCE"`
Version parameters.Parameter `json:"version,omitempty" env:"VERSION"`
} }
func (s *GlobalSettings) GetParameters() *parameters.Parameters { func (s *GlobalSettings) GetParameters() *parameters.Parameters {
params, _ := parameters.Marshal(*s) params, _ := parameters.Marshal(*s)
// for _, p := range params {
// fmt.Println(p)
// }
return &params return &params
} }
func (s *GlobalSettings) SetDefaults() { func (s *GlobalSettings) SetDefaults() {
if len(s.ReadOnly.Value) == 0 || len(s.ReadOnly.ValueFrom.Ref) == 0 { if len(s.ReadOnly.Value) == 0 && len(s.ReadOnly.ValueFrom.Ref) == 0 {
s.ReadOnly.Value = "true" s.ReadOnly.Value = "true"
} }
if len(s.DataDirectory.Value) == 0 || len(s.DataDirectory.ValueFrom.Ref) == 0 { if len(s.DataDirectory.Value) == 0 && len(s.DataDirectory.ValueFrom.Ref) == 0 {
s.DataDirectory.Value = "/var/www/html/data" s.DataDirectory.Value = "/var/www/html/data"
} }
if len(s.UpdateChecker.Value) == 0 || len(s.UpdateChecker.ValueFrom.Ref) == 0 { if len(s.UpdateChecker.Value) == 0 && len(s.UpdateChecker.ValueFrom.Ref) == 0 {
s.UpdateChecker.Value = "false" s.UpdateChecker.Value = "false"
} }
if len(s.UpdateDisable.Value) == 0 || len(s.UpdateDisable.ValueFrom.Ref) == 0 { if len(s.UpdateDisable.Value) == 0 && len(s.UpdateDisable.ValueFrom.Ref) == 0 {
s.UpdateDisable.Value = "true" s.UpdateDisable.Value = "true"
} }
if len(s.Domains.Value) == 0 || len(s.Domains.ValueFrom.Ref) == 0 { if len(s.Domains.Value) == 0 && len(s.Domains.ValueFrom.Ref) == 0 {
s.Domains.Value = "{{ .settings.app.INSTANCE_ID }}" fmt.Println("YYYYYYYYYYYYYYYYYYYYYYYYYY")
s.Domains.Generate = parameters.GenerateTemplate fmt.Println(s.Domains)
s.Domains.Type = parameters.SecretParameter /* s.Domains.Value = "{{ .components.web.network.hostname }}"
s.Domains.Generate = parameters.GenerateTemplate
s.Domains.Type = parameters.SecretParameter */
} }
} }
...@@ -84,25 +92,25 @@ type GlobalSecrets struct { ...@@ -84,25 +92,25 @@ type GlobalSecrets struct {
InstanceID parameters.Parameter `json:"instanceID,omitempty" env:"INSTANCE_ID"` InstanceID parameters.Parameter `json:"instanceID,omitempty" env:"INSTANCE_ID"`
PasswordSalt parameters.Parameter `json:"passwordSalt,omitempty" env:"PASSWORD_SALT"` PasswordSalt parameters.Parameter `json:"passwordSalt,omitempty" env:"PASSWORD_SALT"`
Secret parameters.Parameter `json:"secret,omitempty" env:"SECRET"` Secret parameters.Parameter `json:"secret,omitempty" env:"SECRET"`
AdminPassword parameters.Parameter `json:"adminPassword,omitempty" env:"ADMIN_PASSWORD"` AdminPassword parameters.Parameter `json:"adminPassword,omitempty" env:"NEXTCLOUD_ADMIN_PASSWORD"`
AdminUsername parameters.Parameter `json:"adminUsername,omitempty" env:"ADMIN_USERNAME"` AdminUsername parameters.Parameter `json:"adminUsername,omitempty" env:"NEXTCLOUD_ADMIN_USER"`
} }
func (s *GlobalSecrets) SetDefaults() { func (s *GlobalSecrets) SetDefaults() {
// TODO return warning if value is defined and ignore it. Or use secretParameter type to enforce no values // TODO return warning if value is defined and ignore it. Or use secretParameter type to enforce no values
if len(s.InstanceID.Value) > 0 || len(s.InstanceID.ValueFrom.Ref) == 0 { if len(s.InstanceID.Value) > 0 && len(s.InstanceID.ValueFrom.Ref) == 0 {
s.InstanceID.Generate = parameters.GenerateRand12 s.InstanceID.Generate = parameters.GenerateRand12
} }
if len(s.PasswordSalt.Value) == 0 || len(s.PasswordSalt.ValueFrom.Ref) == 0 { if len(s.PasswordSalt.Value) == 0 && len(s.PasswordSalt.ValueFrom.Ref) == 0 {
s.PasswordSalt.Generate = parameters.GenerateRand12 s.PasswordSalt.Generate = parameters.GenerateRand12
} }
if len(s.Secret.Value) == 0 || len(s.Secret.ValueFrom.Ref) == 0 { if len(s.Secret.Value) == 0 && len(s.Secret.ValueFrom.Ref) == 0 {
s.Secret.Generate = parameters.GenerateRand12 s.Secret.Generate = parameters.GenerateRand12
} }
if len(s.AdminPassword.Value) == 0 || len(s.AdminPassword.ValueFrom.Ref) == 0 { if len(s.AdminPassword.Value) == 0 && len(s.AdminPassword.ValueFrom.Ref) == 0 {
s.AdminPassword.Generate = parameters.GenerateRand12 s.AdminPassword.Generate = parameters.GenerateRand12
} }
if len(s.AdminUsername.Value) == 0 || len(s.AdminUsername.ValueFrom.Ref) == 0 { if len(s.AdminUsername.Value) == 0 && len(s.AdminUsername.ValueFrom.Ref) == 0 {
s.AdminUsername.Value = "admin" s.AdminUsername.Value = "admin"
} }
} }
......
...@@ -16,6 +16,8 @@ limitations under the License. ...@@ -16,6 +16,8 @@ limitations under the License.
package v1alpha1 package v1alpha1
import ( import (
"fmt"
"k8s.libre.sh/application/settings" "k8s.libre.sh/application/settings"
"k8s.libre.sh/application/settings/parameters" "k8s.libre.sh/application/settings/parameters"
"k8s.libre.sh/meta" "k8s.libre.sh/meta"
...@@ -25,6 +27,7 @@ import ( ...@@ -25,6 +27,7 @@ import (
const nginxConf = ` const nginxConf = `
user www-data; user www-data;
events { events {
worker_connections 768; worker_connections 768;
} }
...@@ -33,12 +36,12 @@ const nginxConf = ` ...@@ -33,12 +36,12 @@ const nginxConf = `
upstream backend { upstream backend {
server {{ .components.app.service.meta.name }}:{{ .components.app.service.port.port }}; server {{ .components.app.service.meta.name }}:{{ .components.app.service.port.port }};
} }
include /etc/nginx/mime.types include /etc/nginx/mime.types;
default_type application/octet-stream; default_type application/octet-stream;
server { server {
listen 80; listen 80;
# Add headers to serve security related headers # Add headers to serve security related headers
add_header X-Content-Type-Options nosniff; add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block"; add_header X-XSS-Protection "1; mode=block";
...@@ -66,15 +69,15 @@ const nginxConf = ` ...@@ -66,15 +69,15 @@ const nginxConf = `
fastcgi_buffers 64 4K; fastcgi_buffers 64 4K;
gzip off; # handled at haproxy level gzip off; # handled at haproxy level
location / { location / {
rewrite ^ /index.php; rewrite ^ /index.php;
} }
location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ { location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
deny all; deny all;
} }
location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) { location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all; deny all;
} }
...@@ -142,7 +145,7 @@ func (s *WebSettings) SetDefaults() { ...@@ -142,7 +145,7 @@ func (s *WebSettings) SetDefaults() {
// s.CreateOptions.Init() // s.CreateOptions.Init()
// s.CreateOptions.CommonMeta.Labels["app.kubernetes.io/component"] = "web" // s.CreateOptions.CommonMeta.Labels["app.kubernetes.io/component"] = "web"
if len(s.ConfTemplate.Value) > 0 || len(s.ConfTemplate.ValueFrom.Ref) == 0 { if len(s.ConfTemplate.Value) == 0 && len(s.ConfTemplate.ValueFrom.Ref) == 0 {
s.ConfTemplate.Value = nginxConf s.ConfTemplate.Value = nginxConf
s.ConfTemplate.Generate = parameters.GenerateTemplate s.ConfTemplate.Generate = parameters.GenerateTemplate
s.ConfTemplate.MountType = parameters.MountEnvFile s.ConfTemplate.MountType = parameters.MountEnvFile
...@@ -150,18 +153,21 @@ func (s *WebSettings) SetDefaults() { ...@@ -150,18 +153,21 @@ func (s *WebSettings) SetDefaults() {
s.ConfTemplate.MountType = parameters.MountFile s.ConfTemplate.MountType = parameters.MountFile
s.ConfTemplate.MountPath.Path = "/etc/nginx/nginx.conf" s.ConfTemplate.MountPath.Path = "/etc/nginx/nginx.conf"
s.ConfTemplate.MountPath.SubPath = "nginx.conf" s.ConfTemplate.MountPath.SubPath = "nginx.conf"
s.ConfTemplate.Key = "nginx-conf"
} }
fmt.Println(s.ConfTemplate)
} }
func (s *WebSettings) GetConfig() settings.Config { func (s *WebSettings) GetConfig() settings.Config {
params, _ := parameters.Marshal(*s) // params, _ := parameters.Marshal(*s)
params := parameters.Parameters{}
params = append(params, &s.ConfTemplate)
settings := &settings.ConfigSpec{ settings := &settings.ConfigSpec{
Parameters: &params, Parameters: &params,
Sources: s.Sources, Sources: s.Sources,
} }
return settings return settings
} }
......
...@@ -183,6 +183,7 @@ func (in *GlobalSettings) DeepCopyInto(out *GlobalSettings) { ...@@ -183,6 +183,7 @@ func (in *GlobalSettings) DeepCopyInto(out *GlobalSettings) {
out.UpdateChannel = in.UpdateChannel out.UpdateChannel = in.UpdateChannel
out.UpdateDisable = in.UpdateDisable out.UpdateDisable = in.UpdateDisable
out.BruteForce = in.BruteForce out.BruteForce = in.BruteForce
out.Version = in.Version
} }
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalSettings. // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalSettings.
......
...@@ -17,18 +17,18 @@ package controllers ...@@ -17,18 +17,18 @@ package controllers
import ( import (
"context" "context"
"fmt"
"github.com/go-logr/logr" "github.com/go-logr/logr"
"github.com/presslabs/controller-util/syncer" "github.com/presslabs/controller-util/syncer"
appsv1 "k8s.io/api/apps/v1" appsv1 "k8s.io/api/apps/v1"
apierrs "k8s.io/apimachinery/pkg/api/errors" apierrs "k8s.io/apimachinery/pkg/api/errors"
"k8s.libre.sh/application" "k8s.libre.sh/application"
"k8s.libre.sh/application/settings/parameters"
"k8s.libre.sh/objects" "k8s.libre.sh/objects"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
appsv1alpha1 "git.indie.host/operators/nextcloud-operator/api/v1alpha1" appsv1alpha1 "k8s.libre.sh/apps/nextcloud/api/v1alpha1"
"git.indie.host/operators/nextcloud-operator/util" "k8s.libre.sh/apps/nextcloud/util"
oplib "github.com/redhat-cop/operator-utils/pkg/util" oplib "github.com/redhat-cop/operator-utils/pkg/util"
) )
...@@ -52,6 +52,9 @@ func (r *NextcloudReconciler) GetLogger() logr.Logger { return r.Log } ...@@ -52,6 +52,9 @@ func (r *NextcloudReconciler) GetLogger() logr.Logger { return r.Log }
// +kubebuilder:rbac:groups=apps.libre.sh,resources=nextclouds/status,verbs=get;update;patch // +kubebuilder:rbac:groups=apps.libre.sh,resources=nextclouds/status,verbs=get;update;patch
// +kubebuilder:rbac:groups=batch,resources=jobs,verbs=get;list;watch;create;update;patch;delete // +kubebuilder:rbac:groups=batch,resources=jobs,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=batch,resources=jobs/status,verbs=get // +kubebuilder:rbac:groups=batch,resources=jobs/status,verbs=get
// +kubebuilder:rbac:groups=,resources=secrets;configmaps;services;events,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=networking.k8s.io,resources=ingresses,verbs=get;list;watch;create;update;patch;delete
func (r *NextcloudReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { func (r *NextcloudReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
ctx := context.Background() ctx := context.Background()
log := r.Log.WithValues("nextcloud", req.NamespacedName) log := r.Log.WithValues("nextcloud", req.NamespacedName)
...@@ -104,18 +107,22 @@ func (r *NextcloudReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { ...@@ -104,18 +107,22 @@ func (r *NextcloudReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
switch phase { switch phase {
case appsv1alpha1.PhaseInstalling: case appsv1alpha1.PhaseInstalling:
cpts["cli"].(*appsv1alpha1.CLI).Job.Args = []string{"install"} cpts["cli"].(*appsv1alpha1.CLI).Job.Args = []string{"/install.sh"}
fmt.Println(cpts["cli"].(*appsv1alpha1.CLI).Job.Args)
case appsv1alpha1.PhaseUpgrading: case appsv1alpha1.PhaseUpgrading:
cpts["cli"].(*appsv1alpha1.CLI).Job.Args = []string{"upgrade"} cpts["cli"].(*appsv1alpha1.CLI).Job.Args = []string{"/upgrade.sh"}
default: default:
installParam := &parameters.Parameter{
Value: "true",
Key: "INSTALLED",
MountType: parameters.MountLiteral,
}
*cpts["app"].(*appsv1alpha1.App).Deployment.Parameters = append(*cpts["app"].(*appsv1alpha1.App).Deployment.Parameters, installParam)
delete(cpts, "cli") delete(cpts, "cli")
} }
// Components Object Syncers // Components Object Syncers
for _, c := range cpts { for _, c := range cpts {
syncers[c.GetComponent()] = application.NewObjectSyncersFromComponent(c, r, app) syncers[c.GetComponent()] = application.NewObjectSyncersFromComponent(c, r, app)
} }
cptsOrder := app.GetComponentsSyncOrder() cptsOrder := app.GetComponentsSyncOrder()
......
...@@ -22,9 +22,9 @@ import ( ...@@ -22,9 +22,9 @@ import (
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
appsv1alpha1 "git.indie.host/operators/nextcloud-operator/api/v1alpha1"
"k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/rest" "k8s.io/client-go/rest"
appsv1alpha1 "k8s.libre.sh/apps/nextcloud/api/v1alpha1"
"sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/envtest" "sigs.k8s.io/controller-runtime/pkg/envtest"
"sigs.k8s.io/controller-runtime/pkg/envtest/printer" "sigs.k8s.io/controller-runtime/pkg/envtest/printer"
......
module git.indie.host/operators/nextcloud-operator module k8s.libre.sh/apps/nextcloud
go 1.13 go 1.13
...@@ -9,7 +9,6 @@ require ( ...@@ -9,7 +9,6 @@ require (
github.com/onsi/gomega v1.9.0 github.com/onsi/gomega v1.9.0
github.com/presslabs/controller-util v0.2.2 github.com/presslabs/controller-util v0.2.2
github.com/redhat-cop/operator-utils v0.2.4 github.com/redhat-cop/operator-utils v0.2.4
golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0 // indirect
k8s.io/api v0.18.2 k8s.io/api v0.18.2
k8s.io/apimachinery v0.18.2 k8s.io/apimachinery v0.18.2
k8s.io/client-go v12.0.0+incompatible k8s.io/client-go v12.0.0+incompatible
...@@ -17,7 +16,7 @@ require ( ...@@ -17,7 +16,7 @@ require (
sigs.k8s.io/controller-runtime v0.6.0 sigs.k8s.io/controller-runtime v0.6.0
) )
replace git.indie.host/operators/nextcloud-operator => ./ replace k8s.libre.sh/apps/nextcloud => ./
replace k8s.libre.sh => ./../application/ replace k8s.libre.sh => ./../application/
......
...@@ -980,6 +980,7 @@ golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLL ...@@ -980,6 +980,7 @@ golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0 h1:Jcxah/M+oLZ/R4/z5RzfPzGbPXnVDPkEDtf2JnuxN+U= golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0 h1:Jcxah/M+oLZ/R4/z5RzfPzGbPXnVDPkEDtf2JnuxN+U=
golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
...@@ -1044,6 +1045,7 @@ golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7w ...@@ -1044,6 +1045,7 @@ golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So=
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
......
...@@ -19,14 +19,14 @@ import ( ...@@ -19,14 +19,14 @@ import (
"flag" "flag"
"os" "os"
appsv1alpha1 "git.indie.host/operators/nextcloud-operator/api/v1alpha1"
"git.indie.host/operators/nextcloud-operator/controllers"
batchv1 "k8s.io/api/batch/v1" batchv1 "k8s.io/api/batch/v1"
networking "k8s.io/api/networking/v1beta1" networking "k8s.io/api/networking/v1beta1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
clientgoscheme "k8s.io/client-go/kubernetes/scheme" clientgoscheme "k8s.io/client-go/kubernetes/scheme"
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp" _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
"k8s.libre.sh/application" "k8s.libre.sh/application"
appsv1alpha1 "k8s.libre.sh/apps/nextcloud/api/v1alpha1"
"k8s.libre.sh/apps/nextcloud/controllers"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/log/zap" "sigs.k8s.io/controller-runtime/pkg/log/zap"
// +kubebuilder:scaffold:imports // +kubebuilder:scaffold:imports
......
package util package util
import ( import (
appsv1alpha1 "git.indie.host/operators/nextcloud-operator/api/v1alpha1"
version "github.com/hashicorp/go-version" version "github.com/hashicorp/go-version"
appsv1alpha1 "k8s.libre.sh/apps/nextcloud/api/v1alpha1"
) )
//. TOFIX get install status and desired status, if status =! nil ?? //. TOFIX get install status and desired status, if status =! nil ??
......