adding business hosts programmatically to a pre-existing production.
Hello Guys, can you help me with a issue? I think it is a beginning question, but here goes, how do I add a new business host to production programmatically? for example a new business service or business process.
I've been looking at the documentation for the classes Ens.Config.Production, Ens.Config.Item and Ens.Director and I haven't found any method to add, maybe the name is a little bit different.
The idea is to create a class that will "deploy" or "configurate" a new project components in a pre-existing production.
Best,
Fernando.
Comments
Add a new Business Host. If you want to add several, call CallProductionUpdateAndSaveToClass method once at the end.
Include Ensemble
Class test.prod
{
Parameter DOMAIN = "Ensemble";
/// Add new Business Host.
/// productionName - name of production class
/// name - name of item you want to add
/// class - class name of the item you want to add
/// w $System.Status.GetErrorText(##class(test.prod).add())
ClassMethod add(productionName As %Dictionary.CacheClassname = "isc.py.test.Production", name As %String = "MyOperation", class As %Dictionary.CacheClassname = "isc.py.ens.Operation")
{
Set production = ##class(Ens.Config.Production).%OpenId(productionName)
Set item = ##class(Ens.Config.Item).%New()
Set item.PoolSize = 1
Set item.Name = name
Set item.ClassName = class
Set:item.Name="" item.Name = item.ClassName
Set item.Enabled = $$$YES
Set sc = production.Items.Insert(item)
Quit:$$$ISERR(sc) sc
Set sc = $$$AuditModifyProductionConfig(production.Name,item.Name,$$$Text("Item added to production using generator in " _ $classname()))
Quit:$$$ISERR(sc) sc
Set sc = ##class(EnsPortal.Template.prodConfigSCPage).CallProductionUpdateAndSaveToClass(production,"","SaveProduction")
Quit sc
}
}Thanks @Eduard Lebedyuk this is just what I was looking for!
Hi Fernando,
Check out this other developer community article: How to Export and Import Ensemble Components and Productions
It includes a link to the documentation on deploying a production.
If you need to do this programmatically you'll want to review the Ens.Deployment.Utils class reference.
Hi Vic, this is a very interesting approach to deploy production mainly in terms of ease of rollback. I confess I never did it that way.
Thank you for sharing the article.
If you're interested in rollback, check this series of articles on deploying with GitLab.
Thank You Eduard!
I'll see the articles.
I agree this approach looks good.