Skip to content

Instantly share code, notes, and snippets.

@sameo
Last active March 30, 2019 14:23
Show Gist options
  • Save sameo/aa90da6af53edf319acf2091b2d7d49a to your computer and use it in GitHub Desktop.
Save sameo/aa90da6af53edf319acf2091b2d7d49a to your computer and use it in GitHub Desktop.

Sandbox Create

CreateSandbox
	createSandboxFromConfig
		createSandbox
			createAssets
			newSandbox
				newAgent
				newHypervisor
				newNetwork
				globalSandboxList.addSandbox
				sandbox.storage.createAllResources
				sandbox.hypervisor.init
					qemu.init
						newQemuArch
						RunningOnVMM
				sandbox.hypervisor.createSandbox
					qemu.createSandbox
						q.getQemuMachine
						q.qemuConfig = qemuConfig
				newAgentConfig
				sandbox.agent.init
					kata_agent.init
						kata_agent.generateVMSocket
						newProxy
						newShim
						sandbox.storage.fetchAgentState
			sandbox.storage.fetchSandboxNetwork
			sandbox.storage.fetchSandboxDevices
			deviceManager.NewDeviceManager
			sandbox.storage.fetchSandboxState
			sandbox.agent.createSandbox
				kata_agent.createSandbox
					kata_agent.configure
						if config != nil kata_agent.generateVMSocket
						hypervisor.addDevice (agent socket)
						hypervisor.addDevice (shared volume for all containers bundles)
			sandbox.setSandboxState
		sandbox.createNetwork
			sandbox.network.add
				default_network.add
					createEndpointsFromScan
					doNetNS
						endpoint.HotAttach
							OR
						endpoint.Attach
			sandbox.storage.storeSandboxNetwork
		sandbox.startVM
			sandbox.hypervisor.startSandbox
				qemu.startSandbox
					govmmQemu.LaunchQemu
			sandbox.hypervisor.waitSandbox
				qemu.waitSandbox
					govmmQemu.QMPStart
		sandbox.agent.startSandbox
			kata_agent.startSandbox
				kata_agent.startProxy
					kata_agent.agentURL
					kata_agent.proxy.start
						kata_proxy.start
							exec.Command
					kata_agent.setProxy	
				kata_agent.check
					kata_agent.sendReq(&grpc.CheckRequest{})
				kata_agent.updateInterfaces
				kata_agent.updateRoutes
		sandbox.createContainers
			for each container from the config: createContainer
				newContainer
				container.createContainersDirs
				if containerc.checkBlockDeviceSupport
					container.hotplugDrive				
				container.attachDevices
				container.addResources
				container.getSystemMountInfo
				container.storeDevices
				sandbox.agent.createContainer
				   	kata_agent.createContainer
				   		kata_agent.buildContainerRootfs
				   		container.mountSharedDirMounts
				   		kata_agent.handleEphemeralStorage
				   		kata_agent.appendDevices
				   		kata_agent.handleBlockVolumes
				   		kata_agent.replaceOCIMountsForStorages
				   		kata_agent.handlePidNamespace
				   		kata_agent.handleShm
				   		kata_agent.sendReq
				   			kata_agent.sendReq(&grpc.CreateContainerRequest)
				   		prepareAndStartShim
			   				shim.start
		   						newShimConfig
	   							startShim
   									exec.Command
			   						cmd.Start
	            container.GetAnnotations
				if container is sandbox
					sandbox.setSandboxPid
				container.storeProcess
				container.setContainerState
			for each container from the config: sandbox.addContainer
		sandbox.storeSandbox

Sandbox Start

StartSandbox
	fetchSandbox
	sandbox.Start
		sandbox.setSandboxState
		container.start (For all containers)
			container.checkSandboxRunning
			sandbox.agent.startContainer
				kata_agent.startContainer()
					kata_agent.sendReq(grpc.StartContainerRequest)
			container.setContainerState

Sandbox Run

RunSandbox
	createSandboxFromConfig
	sandbox.Start
		sandbox.setSandboxState
		container.start (For all containers)
			container.checkSandboxRunning
			sandbox.agent.startContainer
				kata_agent.sendReq(grpc.StartContainerRequest)
			container.setContainerState

Container Create

CreateContainer
	fetchSandbox
	sandbox.CreateContainer
		createContainer
			newContainer
			container.createContainersDirs
			if containerc.checkBlockDeviceSupport
			   	container.hotplugDrive				
		   	container.attachDevices
		   	container.addResources
			container.getSystemMountInfo
			container.storeDevices
			sandbox.agent.createContainer
			    kata_agent.createContainer
				   	kata_agent.buildContainerRootfs
				   	container.mountSharedDirMounts
				   	kata_agent.handleEphemeralStorage
				   	kata_agent.appendDevices
				   	kata_agent.handleBlockVolumes
				   	kata_agent.replaceOCIMountsForStorages
				   	kata_agent.handlePidNamespace
				   	kata_agent.handleShm
				   	kata_agent.sendReq
				   		kata_agent.sendReq(&grpc.CreateContainerRequest)
				   	prepareAndStartShim
			   			shim.start
		   					newShimConfig
	   						startShim
   								exec.Command
			   					cmd.Start
	        container.GetAnnotations
			if container is sandbox
				sandbox.setSandboxPid
			container.storeProcess
			container.setContainerState
		sandbox.addContainer
		container.storeContainer
		sandbox.storage.storeSandboxResource
		sandbox.setupCgroups

Container Start

StartContainer
	fetchSandbox
	sandox.StartContainer
		sandbox.findContainer
		container.start
			container.checkSandboxRunning
			sandbox.agent.startContainer
				kata_agent.sendReq(grpc.StartContainerRequest)
			container.setContainerState
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment