Skip to content

Commit

Permalink
code-refactoring: add component controller mocks (#1204)
Browse files Browse the repository at this point in the history
* fix: don't set phase to available during host reconciliation  (#918)

* upgrade golangci-lint

Signed-off-by: Jaideep Rao <[email protected]>

* fix phase reconciliation during host reconciliation

Signed-off-by: Jaideep Rao <[email protected]>

* address review comment

Signed-off-by: Jaideep Rao <[email protected]>

* set phase to pending if ingress not found

Signed-off-by: Jaideep Rao <[email protected]>

---------

Signed-off-by: Jaideep Rao <[email protected]>

* update owners file (#953)

* Move to only adding two roles for managed namespaces (#954)

* Move to only adding two roles for managed namespaces
---------

Signed-off-by: Salem Elrahal <[email protected]>
Co-authored-by: Salem Elrahal <[email protected]>

* feat: expose operator metrics  (#928)

Track and expose custom operator performance metrics 
---------

Signed-off-by: Jaideep Rao <[email protected]>

* add build.os config for readthedocs (#967)

* setup 0.8.0 (#966)

* feat: Add conversion webhook for ArgoCD v1alpha1 to v1beta1 migration (#964)

* Add ArgoCD v1beta1 & deprecate v1alpha1

- Add new ArgoCD v1beta1 api
- Mark ArgoCD v1alpha1 as deprecated & add back the removed sso fields
- Use server side validation for "kubectl apply" as client side results into
  failure due to exceeding annotation size limit.

Signed-off-by: Siddhesh Ghadi <[email protected]>

Add funcs for ArgoCD alpha to beta conversion

Signed-off-by: Siddhesh Ghadi <[email protected]>

Add conversion webhook

- Create webhook & setup webhook server on 9443
- Disable operator namespaced install via OLM so that OLM can handle certs for webhook server
- For manual install, user needs to explicitly configure cert manager to inject certs and enable
  webhook server in operator by setting env ENABLE_CONVERSION_WEBHOOK="true"

Signed-off-by: Siddhesh Ghadi <[email protected]>

Resolve local build issues

Signed-off-by: Siddhesh Ghadi <[email protected]>

Tweak webhook configs

Signed-off-by: Siddhesh Ghadi <[email protected]>

Update operator installation docs

Signed-off-by: Siddhesh Ghadi <[email protected]>

Add e2e tests

Signed-off-by: Siddhesh Ghadi <[email protected]>

Minor updates

Signed-off-by: Siddhesh Ghadi <[email protected]>

Fix go-lint ci failure

Signed-off-by: Siddhesh Ghadi <[email protected]>

Update docs

Signed-off-by: Siddhesh Ghadi <[email protected]>

Remove webhook from 0.7.0 bundle

Signed-off-by: Siddhesh Ghadi <[email protected]>

Add spaces in bundle

Signed-off-by: Siddhesh Ghadi <[email protected]>

* update 0.8.0 bundle

Signed-off-by: Siddhesh Ghadi <[email protected]>

---------

Signed-off-by: Siddhesh Ghadi <[email protected]>

* chore(deps): bump pygments from 2.7.4 to 2.15.0 in /docs (#950)

Bumps [pygments](https://github.com/pygments/pygments) from 2.7.4 to 2.15.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](pygments/pygments@2.7.4...2.15.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: upgrade RH-SSO from 7.5 to 7.6 (#977)

* upgrade RH-SSO from 7.5 to 7.6

Signed-off-by: iam-veeramalla <[email protected]>

* fix: failing tests

Signed-off-by: iam-veeramalla <[email protected]>

* fix: failing tests

Signed-off-by: iam-veeramalla <[email protected]>

---------

Signed-off-by: iam-veeramalla <[email protected]>

* refactor: Remove dead code (#979)

* Remove dead code

Signed-off-by: Siddhesh Ghadi <[email protected]>

* Fix import

Signed-off-by: Siddhesh Ghadi <[email protected]>

* Fix imports

Signed-off-by: Siddhesh Ghadi <[email protected]>

---------

Signed-off-by: Siddhesh Ghadi <[email protected]>

* Replace ArgoCD v1alpha1 references with v1beta1 (#975)

Signed-off-by: Siddhesh Ghadi <[email protected]>

* refactor: Remove deprecated .spec.resourceCustomizations (#973)

* Remove .spec.resourceCustomizations code

Signed-off-by: Siddhesh Ghadi <[email protected]>

* Update docs

Signed-off-by: Siddhesh Ghadi <[email protected]>

* Update docs

Signed-off-by: Siddhesh Ghadi <[email protected]>

* Address review comments

Signed-off-by: Siddhesh Ghadi <[email protected]>

* Fix typo

Signed-off-by: Siddhesh Ghadi <[email protected]>

---------

Signed-off-by: Siddhesh Ghadi <[email protected]>

* upgrade ArgoCD version to 2.8.2 and update the CRDs (#984)

* upgrade ArgoCD version to 2.8.2 and update the CRDs

Signed-off-by: ishitasequeira <[email protected]>

* Update argocd image

Signed-off-by: ishitasequeira <[email protected]>

---------

Signed-off-by: ishitasequeira <[email protected]>

* chore: Update ArgoCD v1alpha1 deprecation message (#988)

* Update ArgoCD v1alpha1 deprecation message

Signed-off-by: Siddhesh Ghadi <[email protected]>

* Run code gen

Signed-off-by: Siddhesh Ghadi <[email protected]>

---------

Signed-off-by: Siddhesh Ghadi <[email protected]>

* Add support for tls self signed certs in AppSet Gitlab SCM Provider (#985)

* add support for tls self signed certs in AppSet Gitlab SCM Provider

Signed-off-by: ishitasequeira <[email protected]>

* add e2e test

Signed-off-by: ishitasequeira <[email protected]>

* add unit tests

Signed-off-by: ishitasequeira <[email protected]>

* renamed field ScmRootCaPath to SCMRootCaPath

Signed-off-by: ishitasequeira <[email protected]>

* Add documentation and address comments

Signed-off-by: ishitasequeira <[email protected]>

* Address comments

Signed-off-by: ishitasequeira <[email protected]>

---------

Signed-off-by: ishitasequeira <[email protected]>

* chore(deps): bump github.com/argoproj/argo-cd/v2 from 2.8.2 to 2.8.3 (#992)

Bumps [github.com/argoproj/argo-cd/v2](https://github.com/argoproj/argo-cd) from 2.8.2 to 2.8.3.
- [Release notes](https://github.com/argoproj/argo-cd/releases)
- [Changelog](https://github.com/argoproj/argo-cd/blob/master/CHANGELOG.md)
- [Commits](argoproj/argo-cd@v2.8.2...v2.8.3)

---
updated-dependencies:
- dependency-name: github.com/argoproj/argo-cd/v2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: pick up argo cd v2.8.3 (#993)

Signed-off-by: iam-veeramalla <[email protected]>

* fix: replace deprecated syntax in kustomization.yaml (#1000)

Signed-off-by: minchao <[email protected]>

* Missing syntax-highlighting, toggle button for screen mode in argocd-operator docs (#1002)

* Update requirements.txt

added markdown= 3.3.7 and  markdown-include=0.6.0

Signed-off-by: Surajyadav <[email protected]>

* Delete docs/assets/extra.css

deleted extra.css

Signed-off-by: Surajyadav <[email protected]>

* Update mkdocs.yml

added markdown_extension  markdown_include with  codehighlight and toggle for screen mode

Signed-off-by: Surajyadav <[email protected]>

* Update mkdocs.yml

Signed-off-by: Surajyadav <[email protected]>

---------

Signed-off-by: Surajyadav <[email protected]>

* fix: keycloak probes failure and intermittent perforamance issues (#1007)

* fix: keycloak probes failure results in pod crash

Signed-off-by: iam-veeramalla <[email protected]>

* fix: use latest keycloak image to handle performance issue

Signed-off-by: iam-veeramalla <[email protected]>

---------

Signed-off-by: iam-veeramalla <[email protected]>

* bug: fix heathcheck subkey generation for resources with no group  (#1013)

* account for empty group during resource customization config subkey generation

---------

Signed-off-by: Jaideep Rao <[email protected]>

* chore(deps): bump golang.org/x/net from 0.11.0 to 0.17.0 (#1019)

Bumps [golang.org/x/net](https://github.com/golang/net) from 0.11.0 to 0.17.0.
- [Commits](golang/net@v0.11.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add labelSelector option to filter the ArgoCD instances for reconciliation (#961)

* Added labelselector string to map conversion

Signed-off-by: Raghavi Shirur <[email protected]>

* Changed data-type for labelSelector to parse string

Signed-off-by: Raghavi Shirur <[email protected]>

* Added code to reconcile selected ArgoCD instances based on label selector

Signed-off-by: Raghavi Shirur <[email protected]>

* remove comments

Signed-off-by: Raghavi Shirur <[email protected]>

* Updated argoCD label fetch, renamed env var

Signed-off-by: Raghavi Shirur <[email protected]>

* Updated unit test and yaml

Signed-off-by: Raghavi Shirur <[email protected]>

* Updated unit test

Signed-off-by: Raghavi Shirur <[email protected]>

* Fix yaml env ValueFrom field

Signed-off-by: Raghavi Shirur <[email protected]>

* Added comments and labelSelector check in main.go

Signed-off-by: Raghavi Shirur <[email protected]>

* removed label-selector option from manifest

Signed-off-by: Raghavi Shirur <[email protected]>

* updated label-selector format in manifests

Signed-off-by: Raghavi Shirur <[email protected]>

* added label selector logs

Signed-off-by: Raghavi Shirur <[email protected]>

* go mod tidy

Signed-off-by: Raghavi Shirur <[email protected]>

* added e2e tests for label-selector

Signed-off-by: Raghavi Shirur <[email protected]>

* restructured kuttl files and added operator patch file

Signed-off-by: Raghavi Shirur <[email protected]>

* go mod tidy

Signed-off-by: Raghavi Shirur <[email protected]>

* corrected kuttl tests for cm failure

Signed-off-by: Raghavi Shirur <[email protected]>

* Added documentation for Environment Variable ARGOCD_LABEL_SELECTOR

Signed-off-by: Raghavi Shirur <[email protected]>

* cleanup

Signed-off-by: Raghavi Shirur <[email protected]>

* improved unit tests and some minor changes

Signed-off-by: Raghavi Shirur <[email protected]>

* kuttl rerun

Signed-off-by: Raghavi Shirur <[email protected]>

* removed env var

Signed-off-by: Raghavi Shirur <[email protected]>

* misc modifications

Signed-off-by: Raghavi Shirur <[email protected]>

* argocd-operator csv correction

Signed-off-by: Raghavi Shirur <[email protected]>

* fix bundle error

Signed-off-by: Raghavi Shirur <[email protected]>

* fix bundle error

Signed-off-by: Raghavi Shirur <[email protected]>

* fix manifests build

Signed-off-by: Raghavi Shirur <[email protected]>
Signed-off-by: Ishita Sequeira <[email protected]>
Signed-off-by: Raghavi Shirur <[email protected]>

* Added more unit test cases

Signed-off-by: Raghavi Shirur <[email protected]>

* rebase

Signed-off-by: Raghavi Shirur <[email protected]>

* removed excess reconcilers

Signed-off-by: Raghavi Shirur <[email protected]>

* minor fix

Signed-off-by: Raghavi Shirur <[email protected]>

* removed extraneous test case and cleaned manager.yaml

Signed-off-by: Raghavi Shirur <[email protected]>

* cleaned manager.yaml

Signed-off-by: Raghavi Shirur <[email protected]>

* fix make bundle issue

Signed-off-by: Raghavi Shirur <[email protected]>

* fix make bundle issue

Signed-off-by: Raghavi Shirur <[email protected]>

---------

Signed-off-by: Raghavi Shirur <[email protected]>
Signed-off-by: Ishita Sequeira <[email protected]>
Co-authored-by: ishitasequeira <[email protected]>

* fix: address CVE-2023-39325 (#1022)

*address CVE-2023-39325
- upgrade to golang v1.20.10 
- disable http/2 for webhook and metrics server, use http/1.1 by default but make it a configurable flag
- upgarde k8s library packages to v0.28.3
- Add new structs for keycloak API that were previously part of the (now deprecated) keycloak-operator repo 
- upgrade to controller-runtime to v0.16.3
- refactor all unit tests 

---------

Signed-off-by: Jaideep Rao <[email protected]>

* Add gcp cherry-pick bot config (#1023)

Signed-off-by: Siddhesh Ghadi <[email protected]>

* Add .github/dependabot.yml to enable auto dependency version updates (#1025)

* feat(dex): add optional env field (#1005)

* feat(dex): add optional env field

Signed-off-by: Robert Deusser <[email protected]>

* fix: remove non-default configuration

Signed-off-by: Robert Deusser <[email protected]>

* fix: v1alpha1 is deprecated

Signed-off-by: Robert Deusser <[email protected]>

* fix: convert dex spec between api versions

Signed-off-by: Robert Deusser <[email protected]>

* fix: ensure there is no diff in the bundle

Signed-off-by: Robert Deusser <[email protected]>

---------

Signed-off-by: Robert Deusser <[email protected]>

* fix: replace deprecated AddToScheme with Install, and deprecated SchemeGroupVersion with GroupVersion. (#1066)

Signed-off-by: Cheng Fang <[email protected]>

* allow enabling ArgoCD workloads independently (#1021)

* allow enabling ArgoCD core workloads independently

Signed-off-by: ishitasequeira <[email protected]>

* fix lint

Signed-off-by: ishitasequeira <[email protected]>

* check for dependent component urls if dependent components are disabled

Signed-off-by: ishitasequeira <[email protected]>

* fix build

Signed-off-by: ishitasequeira <[email protected]>

* fix make bundle

Signed-off-by: ishitasequeira <[email protected]>

* fix tests

Signed-off-by: ishitasequeira <[email protected]>

* Update flags for each component

Signed-off-by: ishitasequeira <[email protected]>

* Update configuration using remote flag

Signed-off-by: ishitasequeira <[email protected]>

* fix CI

Signed-off-by: ishitasequeira <[email protected]>

* Address comments

Signed-off-by: ishitasequeira <[email protected]>

* Addressed feedback

Signed-off-by: ishitasequeira <[email protected]>

* update conversion webhook

Signed-off-by: ishitasequeira <[email protected]>

* fix make build

Signed-off-by: ishitasequeira <[email protected]>

---------

Signed-off-by: ishitasequeira <[email protected]>

* chore(deps): bump argoproj/argocd in /build/util (#1080)

Bumps argoproj/argocd from `d40da8f` to `644c386`.

---
updated-dependencies:
- dependency-name: argoproj/argocd
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: upgrade Argo CD for release v.9.0 (#1082)

* feat: upgrade Argo CD for release v.9.0

Signed-off-by: iam-veeramalla <[email protected]>

* fix: unit test failures

Signed-off-by: iam-veeramalla <[email protected]>

---------

Signed-off-by: iam-veeramalla <[email protected]>

* fix the logic for applicationset resources reconcilation when spec.applicationset.enabled is false (#1089)

* fix the logic for applicationset resources reconciliation when spec.applicationset.enabled is false

Signed-off-by: ishitasequeira <[email protected]>
Signed-off-by: Raghavi Shirur <[email protected]>
Signed-off-by: ishitasequeira <[email protected]>

* fix tests

Signed-off-by: ishitasequeira <[email protected]>
Signed-off-by: Raghavi Shirur <[email protected]>
Signed-off-by: ishitasequeira <[email protected]>

* delete repo server when repo.enabled is set to false

Signed-off-by: ishitasequeira <[email protected]>
Signed-off-by: Raghavi Shirur <[email protected]>
Signed-off-by: ishitasequeira <[email protected]>

* Update status.Phase based on component enabled flag

Signed-off-by: ishitasequeira <[email protected]>
Signed-off-by: Raghavi Shirur <[email protected]>
Signed-off-by: ishitasequeira <[email protected]>

* Added kuttl tests

Signed-off-by: Raghavi Shirur <[email protected]>
Signed-off-by: ishitasequeira <[email protected]>

* Added namespace creation step

Signed-off-by: Raghavi Shirur <[email protected]>
Signed-off-by: ishitasequeira <[email protected]>

* delete services created for resources

Signed-off-by: ishitasequeira <[email protected]>

* delete server deployment when enabled flag set to false

Signed-off-by: ishitasequeira <[email protected]>

* fix e2e test

Signed-off-by: ishitasequeira <[email protected]>

* fix log message

Signed-off-by: ishitasequeira <[email protected]>

* revert kuttl test timeout

Signed-off-by: ishitasequeira <[email protected]>

* Added test for reverse scenario

Signed-off-by: Raghavi Shirur <[email protected]>

* Dir rename

Signed-off-by: Raghavi Shirur <[email protected]>

* Added e2e test for ha mode

Signed-off-by: Raghavi Shirur <[email protected]>

---------

Signed-off-by: ishitasequeira <[email protected]>
Signed-off-by: Raghavi Shirur <[email protected]>
Co-authored-by: Raghavi Shirur <[email protected]>

* docs: enabling/disabling individual argocd core components (#1098)

* Add documentation for enabling/disabling argocd core components

Signed-off-by: ishitasequeira <[email protected]>

* rephrase doc

Signed-off-by: ishitasequeira <[email protected]>

* Address comments

Signed-off-by: ishitasequeira <[email protected]>

---------

Signed-off-by: ishitasequeira <[email protected]>

* fix: Proper reference to where to find default admin password (#1094)

Signed-off-by: ikegentz <[email protected]>

* adding applicationsets in server rbac policy rule (#1140)

Signed-off-by: Mangaal <[email protected]>

* remove extra argoutils

Signed-off-by: Jaideep Rao <[email protected]>

* fix logic to allow processor operation to be less than default value (#1146)

* fix logic to allow operation processors to be less than default value

---------

Signed-off-by: Anand Kumar Singh <[email protected]>

* Use correct repo-server address for notification controller (#1125)

Signed-off-by: Siddhesh Ghadi <[email protected]>

* remove notifs files

Signed-off-by: Jaideep Rao <[email protected]>

* add mocks for component controllers

Signed-off-by: Jaideep Rao <[email protected]>

---------

Signed-off-by: Jaideep Rao <[email protected]>
Signed-off-by: Salem Elrahal <[email protected]>
Signed-off-by: Siddhesh Ghadi <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: iam-veeramalla <[email protected]>
Signed-off-by: ishitasequeira <[email protected]>
Signed-off-by: minchao <[email protected]>
Signed-off-by: Surajyadav <[email protected]>
Signed-off-by: Raghavi Shirur <[email protected]>
Signed-off-by: Ishita Sequeira <[email protected]>
Signed-off-by: Robert Deusser <[email protected]>
Signed-off-by: Cheng Fang <[email protected]>
Signed-off-by: ikegentz <[email protected]>
Signed-off-by: Mangaal <[email protected]>
Signed-off-by: Anand Kumar Singh <[email protected]>
Co-authored-by: Regina Scott <[email protected]>
Co-authored-by: Salem Elrahal <[email protected]>
Co-authored-by: Salem Elrahal <[email protected]>
Co-authored-by: Siddhesh Ghadi <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Abhishek Veeramalla <[email protected]>
Co-authored-by: Ishita Sequeira <[email protected]>
Co-authored-by: Minchao <[email protected]>
Co-authored-by: Suraj yadav <[email protected]>
Co-authored-by: Raghavi <[email protected]>
Co-authored-by: ishitasequeira <[email protected]>
Co-authored-by: Cheng Fang <[email protected]>
Co-authored-by: Robert Deusser <[email protected]>
Co-authored-by: Isaac Gentz <[email protected]>
Co-authored-by: Mangaal <[email protected]>
Co-authored-by: Anand Kumar Singh <[email protected]>
  • Loading branch information
17 people authored Feb 5, 2024
1 parent a050f9f commit a1aeb83
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 0 deletions.
27 changes: 27 additions & 0 deletions tests/mock/appcontroller.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package mock

import (
"github.com/argoproj-labs/argocd-operator/controllers/argocd/argocdcommon"
"github.com/argoproj-labs/argocd-operator/pkg/util"
"sigs.k8s.io/controller-runtime/pkg/client"
)

type Appcontroller struct {
Client client.Client
Logger *util.Logger
Name string
Namespace string
}

func NewAppController(name, namespace string, client client.Client) *Appcontroller {
return &Appcontroller{
Client: client,
Logger: util.NewLogger("app-controller"),
Name: name,
Namespace: namespace,
}
}

func (ac *Appcontroller) TriggerRollout(key string) error {
return argocdcommon.TriggerStatefulSetRollout(ac.Name, ac.Namespace, key, ac.Client)
}
43 changes: 43 additions & 0 deletions tests/mock/redis.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package mock

import (
"github.com/argoproj-labs/argocd-operator/pkg/util"
"sigs.k8s.io/controller-runtime/pkg/client"
)

type Redis struct {
Client client.Client
Logger *util.Logger
Name string
Namespace string
}

var (
useTLS = false
redisServerAddress = ""
)

func NewRedis(name, namespace string, client client.Client) *Redis {
return &Redis{
Client: client,
Logger: util.NewLogger("redis"),
Name: name,
Namespace: namespace,
}
}

func (r *Redis) SetUseTLS(val bool) {
useTLS = val
}

func (r *Redis) SetServerAddress(val string) {
redisServerAddress = val
}

func (r *Redis) UseTLS() bool {
return useTLS
}

func (r *Redis) GetServerAddress() string {
return redisServerAddress
}
39 changes: 39 additions & 0 deletions tests/mock/reposerver.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package mock

import (
"github.com/argoproj-labs/argocd-operator/controllers/argocd/argocdcommon"
"github.com/argoproj-labs/argocd-operator/pkg/util"
"sigs.k8s.io/controller-runtime/pkg/client"
)

type Reposerver struct {
Client client.Client
Logger *util.Logger
Name string
Namespace string
}

var (
reposerveraddress = ""
)

func (r *Reposerver) SetServerAddress(val string) {
reposerveraddress = val
}

func NewRepoServer(name, namespace string, client client.Client) *Reposerver {
return &Reposerver{
Client: client,
Logger: util.NewLogger("repo-server"),
Name: name,
Namespace: namespace,
}
}

func (r *Reposerver) TriggerRollout(key string) error {
return argocdcommon.TriggerDeploymentRollout(r.Name, r.Namespace, key, r.Client)
}

func (r *Reposerver) GetServerAddress() string {
return reposerveraddress
}
27 changes: 27 additions & 0 deletions tests/mock/server.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package mock

import (
"github.com/argoproj-labs/argocd-operator/controllers/argocd/argocdcommon"
"github.com/argoproj-labs/argocd-operator/pkg/util"
"sigs.k8s.io/controller-runtime/pkg/client"
)

type Server struct {
Client client.Client
Logger *util.Logger
Name string
Namespace string
}

func NewServer(name, namespace string, client client.Client) *Server {
return &Server{
Client: client,
Logger: util.NewLogger("server"),
Name: name,
Namespace: namespace,
}
}

func (s *Server) TriggerRollout(key string) error {
return argocdcommon.TriggerDeploymentRollout(s.Name, s.Namespace, key, s.Client)
}

0 comments on commit a1aeb83

Please sign in to comment.