Skip to content

Commit

Permalink
Fixes for plugin-api 0.15.4
Browse files Browse the repository at this point in the history
  • Loading branch information
jsaardchit committed Oct 7, 2023
1 parent acac638 commit 13cd1fe
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 35 deletions.
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ org.gradle.jvmargs=-Xmx2g -Xms2g -Dfile.encoding=UTF-8
groovyVersion=3.0.7
spockVersion=1.3-groovy-2.5
slf4jVersion=1.7.26
morphPluginApiVersion=0.15.2
version=1.0.1
archiveVersion=1.0.1
morphPluginApiVersion=0.15.4-SNAPSHOT
version=1.1.0
archiveVersion=1.1.0
52 changes: 26 additions & 26 deletions src/main/groovy/com/morpheusdata/bigip/BigIpProvider.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -957,13 +957,13 @@ class BigIpProvider implements LoadBalancerProvider {
log.info("BigIP sync (${loadBalancer.name}) complete.")

// update status
morpheusContext.loadBalancer.updateLoadBalancerStatus(loadBalancer, 'ok', null)
morpheusContext.loadBalancer.clearLoadBalancerAlarm(loadBalancer)
morpheusContext.async.loadBalancer.updateLoadBalancerStatus(loadBalancer, 'ok', null)
morpheusContext.async.loadBalancer.clearLoadBalancerAlarm(loadBalancer)
rtn.success = true
}
else {
rtn.addError("F5 BigIP is unreachable")
morpheusContext.loadBalancer.updateLoadBalancerStatus(loadBalancer, 'offline', 'Load Balancer is unreachable.')
morpheusContext.async.loadBalancer.updateLoadBalancerStatus(loadBalancer, 'offline', 'Load Balancer is unreachable.')
}
}
catch (e) {
Expand Down Expand Up @@ -1384,7 +1384,7 @@ class BigIpProvider implements LoadBalancerProvider {
createRtn.success = true
}
if (loadBalancerProfile.serviceType == 'client-ssl') {
def certSvc = morpheus.loadBalancer.certificate
def certSvc = morpheus.async.loadBalancer.certificate
// if a morpheus or self signed cert is selected, it will need to be installed
if (loadBalancerProfile.sslCert.isNumber()) {
AccountCertificate cert
Expand Down Expand Up @@ -1479,7 +1479,7 @@ class BigIpProvider implements LoadBalancerProvider {

@Override
ServiceResponse createLoadBalancerHealthMonitor(NetworkLoadBalancerMonitor monitor) {
def monitorSvc = morpheus.loadBalancer.monitor
def monitorSvc = morpheus.async.loadBalancer.monitor
ServiceResponse rtn = ServiceResponse.prepare()
try {
//prep up the create call and pass it
Expand Down Expand Up @@ -1554,7 +1554,7 @@ class BigIpProvider implements LoadBalancerProvider {

@Override
ServiceResponse updateLoadBalancerHealthMonitor(NetworkLoadBalancerMonitor monitor) {
def monitorSvc = morpheus.loadBalancer.monitor
def monitorSvc = morpheus.async.loadBalancer.monitor
ServiceResponse rtn = ServiceResponse.error()
try {
//prep up the create call and pass it
Expand Down Expand Up @@ -2089,13 +2089,13 @@ class BigIpProvider implements LoadBalancerProvider {
//pool
virtualServerConfig.defaultPool = instanceConfig.defaultPool
if(instanceConfig.defaultPool) {
virtualServerConfig.pool = morpheus.loadBalancer.pool.listById([instanceConfig.defaultPool.toLong()]).blockingFirst()
virtualServerConfig.pool = morpheus.async.loadBalancer.pool.listById([instanceConfig.defaultPool.toLong()]).blockingFirst()
}
//get policies
virtualServerConfig.defaultPolicy = instanceConfig.defaultPolicy
virtualServerConfig.policies = []
if(instanceConfig.defaultPolicy) {
def policy = morpheus.loadBalancer.policy.listById([instanceConfig.defaultPolicy.toLong()]).blockingFirst()
def policy = morpheus.async.loadBalancer.policy.listById([instanceConfig.defaultPolicy.toLong()]).blockingFirst()
if(policy)
virtualServerConfig.policies << [name:policy.name]
}
Expand All @@ -2108,17 +2108,17 @@ class BigIpProvider implements LoadBalancerProvider {
virtualServerConfig.httpProfile = instanceConfig.httpProfile
virtualServerConfig.profiles = []
if(instanceConfig.httpProfile) {
def profile = morpheus.loadBalancer.profile.listById([instanceConfig.httpProfile.toLong()]).blockingFirst()
def profile = morpheus.async.loadBalancer.profile.listById([instanceConfig.httpProfile.toLong()]).blockingFirst()
if(profile)
virtualServerConfig.profiles << [name:profile.name]
}
if(instanceConfig.clientProfile) {
def profile = morpheus.loadBalancer.profile.listById([instanceConfig.clientProfile.toLong()]).blockingFirst()
def profile = morpheus.async.loadBalancer.profile.listById([instanceConfig.clientProfile.toLong()]).blockingFirst()
if(profile)
virtualServerConfig.profiles << [name:profile.name]
}
if(instanceConfig.serverProfile) {
def profile = morpheus.loadBalancer.profile.listById([instanceConfig.serverProfile.toLong()]).blockingFirst()
def profile = morpheus.async.loadBalancer.profile.listById([instanceConfig.serverProfile.toLong()]).blockingFirst()
if(profile)
virtualServerConfig.profiles << [name:profile.name]
}
Expand Down Expand Up @@ -2199,13 +2199,13 @@ class BigIpProvider implements LoadBalancerProvider {
//pool
virtualServerConfig.defaultPool = instanceConfig.defaultPool
if(instanceConfig.defaultPool) {
virtualServerConfig.pool = morpheus.loadBalancer.pool.listById([instanceConfig.defaultPool.toLong()]).blockingFirst()
virtualServerConfig.pool = morpheus.async.loadBalancer.pool.listById([instanceConfig.defaultPool.toLong()]).blockingFirst()
}
//get policies
virtualServerConfig.defaultPolicy = instanceConfig.defaultPolicy
virtualServerConfig.policies = []
if(instanceConfig.defaultPolicy) {
def policy = morpheus.loadBalancer.policy.listById([instanceConfig.defaultPolicy.toLong()]).blockingFirst()
def policy = morpheus.async.loadBalancer.policy.listById([instanceConfig.defaultPolicy.toLong()]).blockingFirst()
if(policy)
virtualServerConfig.policies << [name:policy.name, partition:policy.partition]
}
Expand All @@ -2220,17 +2220,17 @@ class BigIpProvider implements LoadBalancerProvider {
virtualServerConfig.httpProfile = instanceConfig.httpProfile
virtualServerConfig.profiles = []
if(instanceConfig.httpProfile) {
def profile = morpheus.loadBalancer.profile.listById([instanceConfig.httpProfile.toLong()]).blockingFirst()
def profile = morpheus.async.loadBalancer.profile.listById([instanceConfig.httpProfile.toLong()]).blockingFirst()
if(profile)
virtualServerConfig.profiles << [name:profile.name]
}
if(instanceConfig.clientProfile) {
def profile = morpheus.loadBalancer.profile.listById([instanceConfig.clientProfile.toLong()]).blockingFirst()
def profile = morpheus.async.loadBalancer.profile.listById([instanceConfig.clientProfile.toLong()]).blockingFirst()
if(profile)
virtualServerConfig.profiles << [name:profile.name]
}
if(instanceConfig.serverProfile) {
def profile = morpheus.loadBalancer.profile.listById([instanceConfig.serverProfile.toLong()]).blockingFirst()
def profile = morpheus.async.loadBalancer.profile.listById([instanceConfig.serverProfile.toLong()]).blockingFirst()
if(profile)
virtualServerConfig.profiles << [name:profile.name]
}
Expand Down Expand Up @@ -2269,7 +2269,7 @@ class BigIpProvider implements LoadBalancerProvider {

@Override
ServiceResponse validateLoadBalancerVirtualServer(NetworkLoadBalancerInstance instance) {
def policySvc = morpheus.loadBalancer.policy
def policySvc = morpheus.async.loadBalancer.policy
def rtn = ServiceResponse.prepare()
try {
//need a name
Expand Down Expand Up @@ -2520,7 +2520,7 @@ class BigIpProvider implements LoadBalancerProvider {
ServiceResponse updateInstance(NetworkLoadBalancerInstance instance) {
def rtn = ServiceResponse.prepare()
try {
def lbSvc = morpheus.loadBalancer
def lbSvc = morpheus.async.loadBalancer
def changeResults = instance.holder.changeResults
def opts = instance.holder.options
if(changeResults.changed == true) {
Expand Down Expand Up @@ -2571,7 +2571,7 @@ class BigIpProvider implements LoadBalancerProvider {
def rtn = [success:false]
try {
//prep up the create call and pass it
def lbSvc = morpheus.loadBalancer
def lbSvc = morpheus.async.loadBalancer
def loadBalancer = loadBalancerInstance.loadBalancer
def apiConfig = getConnectionBase(loadBalancer)
def poolConfig = [:] + apiConfig
Expand Down Expand Up @@ -2668,7 +2668,7 @@ class BigIpProvider implements LoadBalancerProvider {
def removeInstance(Map instanceConfig, Instance instance) {
def rtn = [success:false, deleted:false]
try {
def lbSvc = morpheus.loadBalancer
def lbSvc = morpheus.async.loadBalancer
def loadBalancer =
instanceConfig.loadBalancerInstance?.loadBalancer ?: lbSvc.getLoadBalancerById(instanceConfig.loadBalancer.id).blockingGet()
log.info("Removing VIP from LoadBalancer: {}", instanceConfig.loadBalancer?.name)
Expand Down Expand Up @@ -3399,7 +3399,7 @@ class BigIpProvider implements LoadBalancerProvider {
if (!keyExists(params)) {
def endpointPath = "${params.path}/tm/sys/crypto/key"
def data = [
fromUrl:"${morpheus.loadBalancer.applianceUrl}/certificate/info/key/${params.token.value}/${params.nlbi}",
fromUrl:"${morpheus.async.loadBalancer.applianceUrl}/certificate/info/key/${params.token.value}/${params.nlbi}",
command:'install',
name:params.keyName
]
Expand All @@ -3424,7 +3424,7 @@ class BigIpProvider implements LoadBalancerProvider {
}

def installSslCert(NetworkLoadBalancerInstance nlbi, AccountCertificate cert) {
def certSvc = morpheus.loadBalancer.certificate
def certSvc = morpheus.async.loadBalancer.certificate
def output = [success:true]
def token = certSvc.createCertInstallToken(cert, "${certSvc.sslInstallTokenName}.${nlbi.id}").blockingGet()
def apiConfig = getConnectionBase(nlbi.loadBalancer)
Expand Down Expand Up @@ -3452,7 +3452,7 @@ class BigIpProvider implements LoadBalancerProvider {
def installCert(Map params) {
if (!certExists(params)) {
def endpointPath = "${params.path}/tm/sys/crypto/cert".toString()
def url = morpheus.loadBalancer.applianceUrl
def url = morpheus.async.loadBalancer.applianceUrl
def data = [
fromUrl:"${url}${url.endsWith('/') ? '' : '/'}certificate/info/cert/${params.token.value}/${params.nlbi}".toString(),
command:'install',
Expand Down Expand Up @@ -3783,7 +3783,7 @@ class BigIpProvider implements LoadBalancerProvider {
return out
}
// add conditions to rule
def pool = morpheus.loadBalancer.pool.listById([config.pool.toLong()]).blockingSingle()
def pool = morpheus.async.loadBalancer.pool.listById([config.pool.toLong()]).blockingSingle()
endpointPath = "${auth.path}/tm/ltm/policy/~${policy.partition ?: BigIpUtility.BIGIP_PARTITION}~Drafts~${policy.name}/rules/${rule.name}"
// add action section to body
data = [
Expand Down Expand Up @@ -3881,7 +3881,7 @@ class BigIpProvider implements LoadBalancerProvider {
//add pools
for (action in item.actionsReference?.items) {
if(action.pool) {
def poolMatch = morpheus.loadBalancer.pool.findByLoadBalancerAndExternalId(loadBalancer, action.pool).blockingGet()
def poolMatch = morpheus.async.loadBalancer.pool.findByLoadBalancerAndExternalId(loadBalancer, action.pool).blockingGet()
if(poolMatch.isPresent()) {
add.pools.add(poolMatch.get())
}
Expand Down Expand Up @@ -4307,7 +4307,7 @@ class BigIpProvider implements LoadBalancerProvider {

protected getConnectionBase(NetworkLoadBalancer lb, Map opts = null) {
if (!lb.credentialLoaded)
morpheus.loadBalancer.loadLoadBalancerCredentials(lb)
morpheus.async.loadBalancer.loadLoadBalancerCredentials(lb)

def connectionBase = [
url:"https://${lb.sshHost}:${lb.apiPort}",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ abstract class BigIPEntitySync {
return false

// Check to see if our load balancer has been deleted
if (!morpheusContext.loadBalancer.getLoadBalancerById(loadBalancer.id).blockingGet())
if (!morpheusContext.async.loadBalancer.getLoadBalancerById(loadBalancer.id).blockingGet())
return false

return true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class CertificateSync extends BigIPEntitySync {

try {
// get the load balancer profile service to interact with database
def svc = morpheusContext.loadBalancer.certificate
def svc = morpheusContext.async.loadBalancer.certificate

// grab master items from the bigip api
def apiItems = plugin.provider.listCertificates(loadBalancer)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class HealthMonitorSync extends BigIPEntitySync {

try {
// get the load balancer health monitor service to interact with database
def svc = morpheusContext.loadBalancer.monitor
def svc = morpheusContext.async.loadBalancer.monitor

// grab master items from the bigip api
def apiItems = plugin.provider.listHealthMonitors(loadBalancer)
Expand Down Expand Up @@ -67,7 +67,7 @@ class HealthMonitorSync extends BigIPEntitySync {
add.setConfigMap(monitor)
adds << add
}
svc.create(adds).blockingGet()
svc.bulkCreate(adds).blockingGet()
}.onUpdate { List<SyncTask.UpdateItem<NetworkLoadBalancerMonitor, Map>> updateItems ->
List<NetworkLoadBalancerMonitor> itemsToUpdate = new ArrayList<NetworkLoadBalancerMonitor>()
for (update in updateItems) {
Expand All @@ -93,9 +93,9 @@ class HealthMonitorSync extends BigIPEntitySync {
if (doUpdate)
itemsToUpdate << existingMonitor
}
svc.save(itemsToUpdate).blockingGet()
svc.bulkSave(itemsToUpdate).blockingGet()
}.onDelete { List<LoadBalancerMonitorIdentityProjection> monitors ->
svc.remove(monitors).blockingGet()
svc.bulkRemove(monitors).blockingGet()
}.start()
log.info('bigip health monitor sync complete')
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import com.morpheusdata.model.NetworkLoadBalancerInstance
import com.morpheusdata.model.NetworkLoadBalancerPolicy
import com.morpheusdata.model.NetworkLoadBalancerProfile
import com.morpheusdata.model.NetworkLoadBalancerRule
import com.morpheusdata.model.ReferenceData
import com.morpheusdata.model.projection.LoadBalancerInstanceIdentityProjection
import com.morpheusdata.model.projection.LoadBalancerPolicyIdentityProjection
import groovy.util.logging.Slf4j
Expand Down Expand Up @@ -122,6 +123,8 @@ class InstanceSync extends BigIPEntitySync {
)
syncTask.addMatchFunction { NetworkLoadBalancerProfile existingItem, Map syncItem ->
return existingItem.externalId == syncItem.fullPath
}.withLoadObjectDetails { List<SyncTask.UpdateItemDto<NetworkLoadBalancerProfile, Map>> updateItems ->
return Observable.fromIterable(updateItems.collect { item -> item.existingItem })
}.onError { exception ->
log.error("Failed to syn virtual server profiles for ${existingVip.vipName}: ${exception.message}", exception)
}.onAdd { addItems ->
Expand All @@ -132,6 +135,8 @@ class InstanceSync extends BigIPEntitySync {
doUpdate = true
}
}
}.onUpdate { List<SyncTask.UpdateItem<NetworkLoadBalancerProfile, Map>> updateItems ->
// NOTE: no need to update the profiles themselves, only add or remove from the virtual server
}.onDelete { removeItems ->
def removeIds = removeItems.collect { return it.externalId }
existingVip.profiles?.removeAll { profile ->
Expand All @@ -158,6 +163,8 @@ class InstanceSync extends BigIPEntitySync {
)
syncTask.addMatchFunction { NetworkLoadBalancerPolicy existingItem, Map sourceItem ->
return existingItem.externalId == sourceItem.fullPath
}.withLoadObjectDetails { List<SyncTask.UpdateItemDto<NetworkLoadBalancerPolicy, Map>> updateItems ->
return Observable.fromIterable(updateItems.collect { item -> item.existingItem })
}.onAdd { addItems ->
for (item in addItems) {
def policy = policySvc.findByExternalIdAndLoadBalancer(item.fullPath, loadBalancer).blockingGet()
Expand All @@ -166,6 +173,8 @@ class InstanceSync extends BigIPEntitySync {
doUpdate = true
}
}
}.onUpdate { List<SyncTask.UpdateItem<NetworkLoadBalancerPolicy, Map>> updateItems ->
// NOTE: no need to update policies themselves, only add/remove from the virtual server
}.onDelete { removeItems ->
def removeIds = removeItems.collect { return it.externalId }
existingVip.policies?.removeAll { policy ->
Expand Down

0 comments on commit 13cd1fe

Please sign in to comment.