Can't install operators outside of `openshift-marketplace` - kubernetes-operator

Attempting to install an Operator into a single namespace foobar results in the error:
Operator Group does not support single namespace installation mode.
Attempting to install an Operator into all namespaces into the openshift-operators namespace results in the error:
The namespace 'openshift-operators' does not support install modes for this operator
Configuring Operator Groups doesn't change anything.
In any case, operators can't be installed outside of openshift-marketplace

This issue (and many others) is caused by having multiple instances of the Operator Lifecycle Manager (OLM) installed.
OpenShift has an instance of OLM already installed, called openshift-operator-lifecycle-manager
This is an easy mistake to for beginners to Operators, because the operator-sdk olm command, which is recommended by the Operator SDK tutorials, can't seem to detect other forks of OLM.
Deleting the extra OLM will solve the problem.

Related

Using Ansible with Alibaba/Alicloud modules

I am relatively new to Ansible, and completely new to Alicloud. I am trying to figure out how I can use the list of modules found here: http://47.88.222.42:8080/ansible-alicloud/latest/modules/list_of_cloud_modules.html, or if there is, in fact, a way to do it.
Officially, it seems, Ansible supports only two modules of Alicloud (found here: https://docs.ansible.com/ansible/2.9/modules/list_of_cloud_modules.html), but the other modules I've seen on several websites before as part of tutorials, so I assume they are meant to be working. Can someone help me with this? I was specifically looking at this module: http://47.88.222.42:8080/ansible-alicloud/latest/modules/ali_vpc_module.html#ali-vpc-module
My current issue with it is that when running the playbook with the module, it gives me the error
ERROR! couldn't resolve module/action 'ali_vpc'. This often indicates a misspelling, missing collection, or incorrect module path.
Any help is appreciated.
Thanks in advance!
You need to install the modules by doing pip install ansible-alicloud.
Then you will be able to get the ali_vpc module from /home/cheshi/.local/lib/python3.8/site-packages/ansible/modules/cloud/alicloud/ali_vpc.py
https://pypi.org/project/ansible-alicloud/

Setting MIP and NLP solvers path using Pyomo MindtPySolver

I am using Pyomo 5.6.8 and trying to resolve a non linear optimization problem using MindtPySolver.
I have no issue on my local machine, simply calling the solve method with these arguments:
SolverFactory('mindtpy').solve(model, mip_solver='cbc', nlp_solver='ipopt')
However, when I go cloud on Azure, Pyomo doesn't get the path to the CBC and IPOPT solvers. When needing to resolve a problem that is linear, I can bypass the issue using the following command, by adding executable argument when creating SolverFactory instance with a LP solver:
SolverFactory("cbc", executable="/path/to/my/virtual/env/bin/cbc")
In my non-linear programming case, MindtpySolver doesn't accept additional argument. I looked at the doc & source code and couldn't find option to specify solver path, that is unfortunately not recognized by default on my Azure environment.
I tried to pass options using the "solver_args" options found on source code like this:
SolverFactory('mindtpy').solve(
model,
nlp_solver_args={
"executable": "/path/to/my/virtual/env/bin/ipopt"
},
mip_solver_args={
"executable": "/path/to/my/virtual/env/bin/cbc"
},
mip_solver='cbc', nlp_solver='ipopt',
)
But I'm still getting "WARNING: Could not locate the 'ipopt' executable, which is required for solver" like errors. I insist on the fact that all solvers (here cbc and ipopt) can be found in my virtual environment.
Is there a way to specify solvers path using MindtPySolver?
I may have same issue too, My optimize problem is Mixed-Integer Nonlinear Programs, and it have to using "SolverFactory('mindtpy').solve(model, mip_solver='glpk', nlp_solver='ipopt')" And the solver is in Django Framework with Apache2 WSGI Service which WSGIDaemonProcess : Conda Env.
When call api via Web Browser. It will rise error like cannot find "ipopt" solver. and "glpk" solver too. and SolverFactory allow us set only one Executable.
BTW, Already find out how to fix it.
After you install ipopt and plugin solver via Conda install.
Just going deep in python package and edit raw file.
My path are below:
/home/user/miniconda3/envs/py385/lib/python3.8/site-packages/pyomo/solvers/plugins/solvers/GLPK.py
/home/user/miniconda3/envs/py385/lib/python3.8/site-packages/pyomo/solvers/plugins/solvers/IPOPT.py
Find function below and change it.
def _default_executable(self):
executable = Executable('/home/user/miniconda3/envs/py385/bin/glpsol')
def _default_executable(self):
executable = Executable("/home/user/miniconda3/envs/py385/bin/ipopt")
You can find where is plugin solver located by type in terminal command
"which ipopt", "which glpsol"

elm-package.json constraints of 'repo_name/package_name' are probably letting too much stuff through

I get this error trying to use a github repository as a dependency using elm-install
Problem in dependency repo_name/package_name 1.0.0
The elm-package.json constraints of 'repo_name/package_name' are probably
letting too much stuff through.
What does this exactly mean?
(This answer courtesy of #ilias at Elm Slack channel)
It means that Elm couldn't compile the sources for that package in the context of your package.
Imagine for a minute I'm making a package my-fancy-package, and I have a dependency on a package foo/bar. So in my-fancy-package/elm-package.json, I could have a dependency like "foo/bar": "1.0.0 <= v < 2.0.0". Now, perhaps the most recent version of foo/bar while I'm developing my-fancy-package is 1.5.0. And in version 1.5.0, a new function was added that does exactly what I need in my-fancy-package, so I start using that function. The core issue is that there currently is no automated way to test that a package actually works with all the allowed versions of its dependencies. So now my-fancy-package says it depends on foo/bar at any version between 1.0.0 and 2.0.0, while in reality, it really needs to be at least 1.5.0 because I'm using a function from that package.
Now, imagine you're developing an application, and you're using foo/bar at version 1.2.3. According to the semver ranges of my-fancy-package, that means you should be able to use it, but if you were to actually try it, you'd receive this error: my-fancy-package is stating it is compatible with foo/bar#1.2.3 while it really needs 1.5.0.
The reason the error message doesn't simply say "it failed to compile" is because all the published packages are compiled before publishing. The most common reason for a package failing to compile in some context is that its dependencies aren't "accurate": they're letting too much stuff through.
In case of elm-install and packages from github, it's harder to say - it could actually be broken package.
Another common cause for this error is a rather silly one - conflicting definitions of infix operators. The associativity and precedence of infix ops can only be defined "globally", so if there are 2 packages that define the same infix operator, that could become a problem

Eclipse-Kepler, Java 8 compilation issue "syntax errors on tokens"

I am using Eclipse Kepler with jdk1.8.0.
I do not face any compilation problems in import statements related to java8 or collect construct. However I get the compilation issue in:- Dish::getName...it says.. Syntax errors on tokens, delete the tokens.
Just trying to run the following code:
List<String> dishNames = menu.stream()
.map(Dish::getName)
.collect(toList());
System.out.println(dishNames);
Dish is a java object with String property name.
I have installed JDK8, added the latest JRE in eclipse Java Build Path.
Java compiler compliance.
Any hints what something silly I am missing?
I think you missed installing support of java8 in eclipse kepler.
You can follow this link for detailed instructions.
https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler

Weblogic 12c HibernateValidator ClassLoading issue

Validation framework which has been rolled up as part of the JEE6 spec (WL12). Both the WL10 and WL12 versions of our application were deployed with the following open source libraries:
JSR-303 / validation-api.jar (version 1.0)
Hibernate Validator (version 4.2.0)
However, the libraries are also bundled with WL 12 (modules directory). Note that the Hibernate Validator version is slightly different.
modules.javax.validation_1.0.0.jar
hibernate.validator_4.1.0.jar
With our WL12 run we are getting below exception:
javax.validation.ValidationException: Unable to get available provider
Attempted Solutions
Our next attempt was to use the WebLogic FilteringClassLoader to prefer the libraries from our application (APP-INF/lib directory) by specifying them in the weblogic-application.xml file (i.e. choose our versions over WebLogic’s). We were already doing this for several other open source libraries in WL10:
<prefer-application-packages>
<package-name>com.google.common.*</package-name>
<package-name>org.apache.commons.lang.*</package-name>
<package-name>org.apache.commons.logging.*</package-name>
<package-name>org.apache.commons.beanutils.*</package-name>
<package-name>org.apache.commons.collections.*</package-name>
<package-name>antlr.*</package-name>
<package-name>javax.validation.*</package-name>
<package-name>org.hibernate.validator.*</package-name>
</prefer-application-packages>
After making that change, our application experienced the following run-time error trying to process any request that makes use of the validation framework:
javax.validation.ValidationException: Unable to get available provider resolvers.
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:259)
at web20.hibernate.validation.ValidatorFactoryConfigurator.getValidatorFactory(ValidatorFactoryConfigurator.java:39)
at web20.hibernate.validation.ValidationHandlerImpl.handleHibernateValidations(ValidationHandlerImpl.java:180)
at web20.hibernate.validation.ValidationHandlerImpl.performValidation(ValidationHandlerImpl.java:255)
at web20.hibernate.validation.ValidationHandlerImpl.validateAndFormatMessages(ValidationHandlerImpl.java:302)
at web20.hibernate.validation.ValidationHandlerImpl.validateUsingHibernateGroups(ValidationHandlerImpl.java:113)
at service.serviceapp.performValidations(serviceapp.java:392)
at service.serviceapp.performValidations(serviceapp.java:379)
at service.TransactionalServiceImpl.search(TransactionalServiceImpl.java:300)
Given that Bean Validation is part of the EE standard, I assume there is some code Bean Validation integration code which causes the problem. I see two potential solutions:
Patch the WL instance and upgrade to the Validator version you want to use
Try writing your own ValidationProvider. Internally it could just delegate to the Hibernate Validator classes. If you then add a validation.xml to your application, specifying your custom provider, WL should bootstrap this one. TBH, I don't know whether this will work. There are many unknowns and I don't know enough about the integration of WL and Bean Validation.
Personally, I think I would just try to upgrade the Validator version used in WL.