Commit 8895622f authored by Kostis Trantzas's avatar Kostis Trantzas Committed by Christos Tranoris
Browse files

added some documentation under #2

parents 9ceb63c1 e172b97d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2,5 +2,5 @@ FROM ibm-semeru-runtimes:open-17.0.7_7-jdk
MAINTAINER openslice.io
RUN mkdir /opt/shareclasses
RUN mkdir -p /opt/openslice/lib/
COPY target/org.etsi.osl.cridge-1.2.0-SNAPSHOT-exec.jar /opt/openslice/lib/
CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/openslice/lib/org.etsi.osl.cridge-1.2.0-SNAPSHOT-exec.jar"]
COPY target/org.etsi.osl.cridge-1.0.0-SNAPSHOT-exec.jar /opt/openslice/lib/
CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/openslice/lib/org.etsi.osl.cridge-1.0.0-SNAPSHOT-exec.jar"]

docs/K8aas_example.md

0 → 100644
+92 −0
Original line number Diff line number Diff line
@startuml
actor Participant as caller
boundary    OSLAPI    as oslapirest
control     OSLC     as oslapi
control     OSOM     as osom
control     CRIDGE     as cridge
control     MGMK8S     as mgtk8s
control     ARGOCD     as argo
control     K8SaaSCRD     as k88ascrd

caller -> oslapirest : Create Service Order for K8SaaS spec\n (With ACKNOWLEDGED state)
oslapirest -> oslapi: Create\nService\nOrder
osom -> oslapi: Fetch ACK\norders
activate osom
osom -> osom: Process orders
osom -> cridge: Deploy CR App
note right
 This CR is matched with equivalent
 Resource in RI (ref resourceId)
end note
cridge -// mgtk8s: Create CR
note right
 here we label this CR with resourceId
end note
cridge -> cridge: Start watching\nSO namespace
cridge -> osom: response OK
osom -> oslapi: Order is INPROGRESS \n (services are created\nin RESERVED)

mgtk8s -> argo: Create CR
argo -> k88ascrd: Create CR
argo -// mgtk8s: CR status
mgtk8s -// cridge: CRs watch
group sync and reconciliation
 cridge -// oslapi: Update equivalent resource in RI of this CR\n(ref resourceId)
 oslapi -> oslapi: EVENT_RESOURCE_STATE_CHANGED
 mgtk8s -// cridge: Secrets watch
 cridge -// oslapi: Add/Update equivalent secret resource in RI of this CR\n(ref resourceId)
 note right
 org.etsi.osl.* labels are added
 so this resource can be managed by OSL
 end note
 oslapi -> oslapi: EVENT_RESOURCE_STATE_CHANGED
 note left
 SIM638 needs to take this event in case 
 this Resource is related 
 to a specific supporting resource
 (see resourceStateChangedEvent() and
 updateResourceFromKubernetesLabel() )
 Any resources that has characteristic org.etsi.osl.serviceId equals to a service
 are automatically added as supportingResources of this Service
 end note
end

osom -> osom: Wait all Active or Failures
note left
Wait for all services and
underlying resources
to be Active or Failed
end note
osom -> osom: Order is COMPLETED
osom -> oslapi: Order is COMPLETED
deactivate osom

group sync and reconciliation (continuous process)
 mgtk8s -// cridge: CRs watch
 cridge -// oslapi: Update equivalent resource in RI of this CR\n(ref resourceId)
 oslapi -> oslapi: EVENT_RESOURCE_STATE_CHANGED
 mgtk8s -// cridge: Secrets watch
 cridge -// oslapi: Add/Update equivalent secret resource in RI of this CR\n(ref resourceId)
 oslapi -> oslapi: EVENT_RESOURCE_STATE_CHANGED
end



caller -> oslapirest : request Service Order (by id)
activate caller
caller <- oslapirest : Service Order
caller -> caller : examine supportingService list
caller -> oslapirest : request Service (by id)
activate caller #FFDDDD
group focus only on the Resource Facing Service
caller -> caller : examine supportingResource list of this RFS
caller -> oslapirest : request Resource (by id) (tf-output@...) 
caller <- oslapirest : Resource from Inventory
caller -> caller :get characteristics kubeconf
caller -> oslapirest : request Resource (by id) (tfstate-...) 
caller <- oslapirest : Resource from Inventory
caller -> caller :get characteristic tfstate
end
deactivate caller
deactivate caller
@enduml
+43 −0
Original line number Diff line number Diff line
@startuml
participant "WatcherService" as Watcher
participant "SharedInformerFactory" as InformerFactory
participant "SharedIndexInformer<CRD>" as IndexInformer
participant "CustomResourceDefinition" as CRD
participant "ResourceEventHandler<CRD>" as EventHandler
database "CatalogClient" as Catalog

Watcher -> InformerFactory : getKubernetesClient().informers()
activate InformerFactory
InformerFactory --> Watcher : sharedInformerFactory
deactivate InformerFactory

Watcher -> IndexInformer : sharedInformerFactory.sharedIndexInformerFor(CRD, 30 * 1000L)
activate IndexInformer
IndexInformer --> Watcher : shixInformer
deactivate IndexInformer

Watcher -> IndexInformer : addEventHandler(new ResourceEventHandler<CRD>())
activate IndexInformer
IndexInformer -> EventHandler : onAdd(CRD)
activate EventHandler
EventHandler -> Catalog : createOrUpdateResourceSpecByNameCategoryVersion()
EventHandler -> Catalog : createOrUpdateResourceByNameCategoryVersion()
activate Catalog
Catalog --> EventHandler : Response
deactivate Catalog
EventHandler --> IndexInformer : onAdd Completed
EventHandler -> Watcher : createCRDSharedIndexInformer
deactivate EventHandler

IndexInformer -> EventHandler : onUpdate(oldCRD, newCRD)
activate EventHandler
EventHandler --> IndexInformer : onUpdate Completed
deactivate EventHandler

IndexInformer -> EventHandler : onDelete(CRD, deletedFinalStateUnknown)
activate EventHandler
EventHandler --> IndexInformer : onDelete Completed
deactivate EventHandler

deactivate IndexInformer
@enduml
 No newline at end of file
+53 −0
Original line number Diff line number Diff line
@startuml
queue MQ
control "KubernetesClientResource" as KubeClientResource
participant "KubernetesClient" as KubeClient
entity "GenericKubernetesResource" as ResourceObj
participant "Namespace" as NamespaceDB

MQ -> KubeClientResource : deployCR(headers, crspec)

alt check if this cridge can handle the CRSPEC\ncurrentContextCluster, clusterMasterURL
	
	KubeClientResource --> MQ : Response (SEE OTHER)
end

activate KubeClientResource

KubeClientResource -> KubeClient : new KubernetesClientBuilder()
activate KubeClient
KubeClient --> KubeClientResource : k8s
deactivate KubeClient


KubeClientResource -> NamespaceDB : Try creating Namespace
activate NamespaceDB
NamespaceDB --> KubeClientResource : Namespace Created / Exists
deactivate NamespaceDB

KubeClientResource -> KubeClientResource : createWatchersFornamespace()


activate KubeClientResource


KubeClientResource -> SharedInformer : KubernetesClient.secrets().inNamespace(nameSpacename).inform(new ResourceEventHandler<>())

loop For each Secret Event
    SharedInformer -> EventHandler : onAdd()/onUpdate()/onDelete()
    activate EventHandler
    EventHandler -> KubeClientResource : updateKubernetesSecretResourceInOSLCatalog
    deactivate EventHandler
end

deactivate KubeClientResource


KubeClientResource -> ResourceObj : k8s.resource(gkr)
activate ResourceObj
ResourceObj --> KubeClientResource : Creation Response
deactivate ResourceObj

KubeClientResource --> MQ : Response (OK / FAIL)
deactivate KubeClientResource
@enduml
+3 −3
Original line number Diff line number Diff line
@@ -9,8 +9,8 @@
		<relativePath>../org.etsi.osl.main</relativePath>
	</parent>

	<artifactId>org.etsi.osl.cridge</artifactId>

	<artifactId>org.etsi.osl.cridge</artifactId>
	<name>org.etsi.osl.cridge</name>
	<url>http://openslice.io</url>

@@ -103,12 +103,12 @@
		<dependency>
			<groupId>org.etsi.osl</groupId>
			<artifactId>org.etsi.osl.model.tmf</artifactId>
			<version>${project.version}</version>
			<version>${org.etsi.osl.model.tmf.version}</version>
		</dependency>
		<dependency>
			<groupId>org.etsi.osl</groupId>
			<artifactId>org.etsi.osl.model.k8s</artifactId>
			<version>${project.version}</version>
			<version>${org.etsi.osl.model.k8s.version}</version>
		</dependency>
		
		
Loading