public void RoundtripSerialization2()
        {
            var program = new ProgramInfo(1, 1, "carbon", "carbon", new SemanticVersion(1, 1, 1));

            var deployment = new DeploymentDetails(program, new[] {
                ManagedResource.Host(Borg, id: "1"),
                ManagedResource.Cluster(Borg, id: "2"),
                ManagedResource.Environment(Borg, id: "3")
            });

            Assert.Equal(@"{
  ""program"": {
    ""id"": 1,
    ""version"": ""1.1.1""
  },
  ""targets"": [
    {
      ""resource"": ""borg:host\/1""
    },
    {
      ""resource"": ""borg:cluster\/2""
    },
    {
      ""resource"": ""borg:environment\/3""
    }
  ]
}", JsonObject.FromObject(deployment).ToString());
        }
Пример #2
0
        public HostInfo(
            long id,
            long ownerId,
            int locationId,
            string[] addresses,
            long environmentId,
            long clusterId,
            long imageId,
            long machineTypeId,
            ManagedResource resource,
            HostType type     = HostType.Virtual,
            HostStatus status = HostStatus.Running)
        {
            Ensure.IsValidId(id);
            Ensure.IsValidId(ownerId, nameof(ownerId));

            Id            = id;
            OwnerId       = ownerId;
            Type          = type;
            Status        = status;
            Addresses     = addresses;
            ClusterId     = clusterId;
            EnvironmentId = environmentId;
            LocationId    = locationId;
            ImageId       = imageId;
            MachineTypeId = machineTypeId;
            ProviderId    = resource.ProviderId;
            ResourceId    = resource.ResourceId;
        }
Пример #3
0
        public async Task <VolumeInfo> GetAsync(
            ResourceProvider provider,
            string resourceId,
            IHost host = null)
        {
            Ensure.NotNull(resourceId, nameof(resourceId));

            var volume = await volumeService.FindAsync(provider, resourceId);;

            // If the volume isn't register, register it now...

            if (volume == null)
            {
                var ec2Volume = await ec2.DescribeVolumeAsync(resourceId);;

                var location = Locations.Get(provider, ec2Volume.AvailabilityZone);

                var registerRequest = new RegisterVolumeRequest(
                    size: ByteSize.FromGiB(ec2Volume.Size),
                    ownerId: 1,
                    resource: ManagedResource.Volume(location, ec2Volume.VolumeId)
                    );

                volume = await volumeService.RegisterAsync(registerRequest);;
            }

            return(volume);
        }
Пример #4
0
        private async Task <NetworkInfo> GetAsync(string vpcId)
        {
            var network = await networkService.FindAsync(Aws, vpcId);;

            if (network == null)
            {
                var vpc = await ec2Client.DescribeVpcAsync(vpcId)
                          ?? throw ResourceError.NotFound(Aws, ResourceTypes.Network, vpcId);

                var region = Locations.Get(Aws, ec2Client.Region.Name);

                var registerRequest = new RegisterNetworkRequest(
                    addressBlocks: new[] { vpc.CidrBlock },
                    resource: ManagedResource.Network(region, vpc.VpcId),
                    ownerId: 1
                    );

                // TODO: Sync the subnets & security groups

                // TODO: Support ipv6 address blocks

                // Register the network with the platform
                network = await networkService.RegisterAsync(registerRequest);;
            }

            return(network);
        }
Пример #5
0
        public async Task <SubnetInfo> GetSubnetAsync(ResourceProvider provider, string subnetId)
        {
            var subnet = await subnetService.FindAsync(provider, subnetId);;

            if (subnet == null)
            {
                var awsSubnet = await ec2Client.DescribeSubnetAsync(subnetId)
                                ?? throw ResourceError.NotFound(Aws, ResourceTypes.Subnet, subnetId);

                var location = Locations.Get(Aws, awsSubnet.AvailabilityZone);

                var network = await networkService.GetAsync(Aws, awsSubnet.VpcId);;

                var createRequest = new RegisterSubnetRequest(
                    addressBlocks: new[] { awsSubnet.CidrBlock },
                    networkId: network.Id,
                    resource: ManagedResource.Subnet(location, awsSubnet.SubnetId)
                    );

                // TODO: Include the ipv6 address blocks

                // Register the subnet with the platform
                subnet = await subnetService.RegisterAsync(createRequest);;
            }

            return(subnet);
        }
Пример #6
0
        private ManagedResource <resources.UITileSheetInfo, TileSheet> Preload(
            out TileSheet tileSheet,
            string name,
            bool isFont,
            float lineHeight  = float.NaN,
            float charSpacing = float.NaN,
            float lineOffset  = float.NaN)
        {
            var resource = ManagedResource <TileSheet> .Create(new resources.UITileSheetInfo(name, isFont));

            var entity = world.CreateEntity();

            entity.Set(resource);
            entity.Disable();
            tileSheet = entity.Get <TileSheet>();
            if (float.IsFinite(lineHeight))
            {
                tileSheet.LineHeight = lineHeight;
            }
            if (float.IsFinite(charSpacing))
            {
                tileSheet.CharSpacing = charSpacing;
            }
            if (float.IsFinite(lineOffset))
            {
                tileSheet.LineOffset = lineOffset;
            }
            return(resource);
        }
Пример #7
0
        // Register a managed resource via a project asset.
        public static void Register <T> (this ManagedResource <T> resource, T asset, long id = 0) where T : UnityEngine.Object
        {
            // Format the path to the asset so it starts at the root Resources directory and drops the extension.
            string assetPath = AssetDatabase.GetAssetPath(asset).Replace("Assets/Resources/", "");
            string extension = Path.GetExtension(assetPath);

            if (!string.IsNullOrEmpty(extension))
            {
                assetPath = assetPath.Replace(extension, "");
            }

            // Default to collection index -1.
            int collectionIndex = -1;

            // If the asset is a Sprite, check if it is a part of a collection and determine its index.
            Sprite sprite = asset as Sprite;

            if (sprite != null)
            {
                Object[] sprites = Resources.LoadAll(assetPath);
                for (int i = 0; i < sprites.Length; i++)
                {
                    if (sprites [i].GetInstanceID() == sprite.GetInstanceID())
                    {
                        collectionIndex = i;
                    }
                }
            }

            // Serialize the resource path.
            resource.SetResourcePath(assetPath, collectionIndex, id);
        }
Пример #8
0
        public RegisterHostRequest(
            long ownerId,
            string[] addresses,
            ILocation location,
            ICluster cluster,
            IImage image,
            IProgram program,
            IMachineType machineType,
            ManagedResource resource,
            HostStatus status = HostStatus.Pending,
            HostType type     = HostType.Virtual)
        {
            Ensure.IsValidId(ownerId, nameof(ownerId));
            Ensure.NotNull(cluster, nameof(cluster));
            Ensure.NotNull(location, nameof(location));
            Ensure.NotNull(image, nameof(image));
            Ensure.NotNull(machineType, nameof(machineType));

            OwnerId       = ownerId;
            Addresses     = addresses;
            LocationId    = location.Id;
            EnvironmentId = cluster.EnvironmentId;
            ClusterId     = cluster.Id;
            ImageId       = image.Id;

            MachineType = new MachineTypeDescriptor {
                Id   = machineType.Id,
                Name = machineType.Name
            };

            Status   = status;
            Resource = resource;
            Type     = type;
        }
Пример #9
0
        public PlayerTriggers(ITagContainer diContainer)
        {
            world                    = diContainer.GetTag <DefaultEcs.World>();
            playerControls           = diContainer.GetTag <PlayerControls>();
            zzContainer              = diContainer.GetTag <IZanzarahContainer>();
            zzContainer.OnMouseDown += HandleMouseDown;

            var game = diContainer.GetTag <Game>();

            cameraLocation     = diContainer.GetTag <rendering.Camera>().Location;
            playerLocationLazy = new Lazy <Location>(() => game.PlayerEntity.Get <Location>());

            npcMarker = world.CreateEntity();
            npcMarker.Set(new Location());
            npcMarker.Set(new components.behaviour.Rotate(Vector3.UnitY, 90f));
            npcMarker.Set(ManagedResource <ClumpBuffers> .Create(
                              new resources.ClumpInfo(resources.ClumpType.Model, "marker.dff")));
            ModelLoader.LoadMaterialsFor(npcMarker,
                                         zzio.scn.FOModelRenderType.Solid,
                                         zzio.IColor.Green,
                                         new zzio.SurfaceProperties(1f, 1f, 1f));
            var materials = npcMarker.Get <List <materials.BaseModelInstancedMaterial> >();

            foreach (var material in materials)
            {
                material.Uniforms.Ref.vertexColorFactor = 1f;
            }
        }
Пример #10
0
        public UIPreloader(ITagContainer diContainer)
        {
            world    = diContainer.GetTag <DefaultEcs.World>();
            mappedDb = diContainer.GetTag <zzio.db.MappedDB>();

            Btn000 = Preload(out var tsBtn000, "btn000", isFont: false);
            Btn001 = Preload(out var tsBtn001, "btn001", isFont: false);
            Btn002 = Preload(out var tsBtn002, "btn002", isFont: false);
            Sld000 = Preload(out var tsSld000, "sld000", isFont: false);
            Tit000 = Preload(out var tsTit000, "tit000", isFont: false);
            Cur000 = Preload(out var tsCur000, "cur000", isFont: false);
            Dnd000 = Preload(out var tsDnd000, "dnd000", isFont: false);
            Wiz000 = Preload(out var tsWiz000, "wiz000", isFont: false);
            Itm000 = Preload(out var tsItm000, "itm000", isFont: false);
            Spl000 = Preload(out var tsSpl000, "spl000", isFont: false);
            Lne000 = Preload(out var tsLne000, "lne000", isFont: false);
            Fnt000 = Preload(out var tsFnt000, "fnt000", isFont: true, lineHeight: 14f, charSpacing: 1f);
            Fnt001 = Preload(out var tsFnt001, "fnt001", isFont: true, charSpacing: 1f);
            Fnt002 = Preload(out var tsFnt002, "fnt002", isFont: true, lineHeight: 17f, charSpacing: 1f, lineOffset: 2f);
            Fnt003 = Preload(out var tsFnt003, "fnt003", isFont: true, lineHeight: 14f, charSpacing: 1f);
            Fnt004 = Preload(out var tsFnt004, "fnt004", isFont: true, lineHeight: 14f, charSpacing: 1f);
            Fsp000 = Preload(out var tsFsp000, "fsp000", isFont: true);
            Inf000 = Preload(out var tsInf000, "inf000", isFont: false);
            Log000 = Preload(out var tsLog000, "log000", isFont: false);
            Cls000 = Preload(out var tsCls000, "cls000", isFont: false);
            Cls001 = Preload(out var tsCls001, "cls001", isFont: false);
            Map000 = Preload(out var tsMap000, "map000", isFont: false);

            tsFnt000.Alternatives.Add(tsFnt001);
            tsFnt000.Alternatives.Add(tsFnt002);
            tsFnt000.Alternatives.Add(tsFsp000);
            tsFnt000.Alternatives.Add(tsItm000);
            tsFnt000.Alternatives.Add(tsCls000);
            tsFnt000.Alternatives.Add(tsFnt003);
            tsFnt000.Alternatives.Add(tsLog000);
            tsFnt000.Alternatives.Add(tsCls001);
            tsFnt000.Alternatives.Add(tsFnt004);

            tsFnt001.Alternatives.Add(tsFnt002);
            tsFnt001.Alternatives.Add(tsInf000);
            tsFnt001.Alternatives.Add(tsFnt000);

            tsFnt002.Alternatives.Add(tsFnt001);
            tsFnt002.Alternatives.Add(tsInf000);
            tsFnt002.Alternatives.Add(tsFsp000);
            tsFnt002.Alternatives.Add(tsItm000);
            tsFnt002.Alternatives.Add(tsCls000);
            tsFnt002.Alternatives.Add(tsCls001);

            tsFnt003.Alternatives.Add(tsFnt001);
            tsFnt003.Alternatives.Add(tsFnt002);
            tsFnt003.Alternatives.Add(tsFsp000);
            tsFnt003.Alternatives.Add(tsItm000);
            tsFnt003.Alternatives.Add(tsFnt000);
            tsFnt003.Alternatives.Add(tsFnt000);
            tsFnt003.Alternatives.Add(tsLog000);
            tsFnt003.Alternatives.Add(tsCls001);
            tsFnt003.Alternatives.Add(tsFnt004);
        }
Пример #11
0
 public HealthCheck(
     long id,
     long ownerId,
     Uri url,
     ManagedResource resource)
     : this(id, ownerId, url.Host, url.AbsolutePath, url.Port, NetworkProtocal.TCP, resource)
 {
 }
Пример #12
0
 public Router(long id, string name, ManagedResource resource)
 {
     Id         = id;
     Name       = name ?? throw new ArgumentNullException(nameof(name));
     ProviderId = resource.ProviderId;
     LocationId = resource.LocationId;
     ResourceId = resource.ResourceId;
 }
Пример #13
0
        public RegisterVolumeRequest(long ownerId, ByteSize size, ManagedResource resource)
        {
            Ensure.IsValidId(ownerId, nameof(ownerId));

            OwnerId  = ownerId;
            Size     = size;
            Resource = resource;
        }
Пример #14
0
        public RegisterLoadBalancer(long ownerId, string name, ManagedResource resource)
        {
            Ensure.IsValidId(ownerId, nameof(ownerId));
            Ensure.NotNullOrEmpty(nameof(name), name);

            Name     = name;
            OwnerId  = ownerId;
            Resource = resource;
        }
Пример #15
0
 public RegisterNetworkRequest(
     string[] addressBlocks,
     long ownerId,
     ManagedResource resource)
 {
     AddressBlocks = addressBlocks ?? throw new ArgumentNullException(nameof(addressBlocks));
     OwnerId       = ownerId;
     Resource      = resource;
 }
Пример #16
0
        public NetworkSecurityGroup(long id, string name, ManagedResource resource)
        {
            Ensure.IsValidId(id);
            Ensure.NotNullOrEmpty(name, nameof(name));

            Id         = id;
            Name       = name;
            ProviderId = resource.ProviderId;
            ResourceId = resource.ResourceId;
        }
Пример #17
0
        public RegisterSubnetRequest(
            string[] addressBlocks,
            long networkId,
            ManagedResource resource)
        {
            Ensure.IsValidId(networkId, nameof(networkId));

            AddressBlocks = addressBlocks ?? throw new ArgumentNullException(nameof(addressBlocks));
            NetworkId     = networkId;
            Resource      = resource;
        }
Пример #18
0
        /// <summary>
        /// Serializes all data within the provided resources.
        /// </summary>
        /// <param name="obj">Resource to serialize.</param>
        /// <returns>Object containing serialized data.</returns>
        public static SerializedObject Create(ManagedResource obj)
        {
            if (obj == null)
            {
                return(null);
            }

            IntPtr resourcePtr = obj.GetCachedPtr();

            return(Internal_CreateResource(resourcePtr));
        }
 public RegisterNetworkInterfaceRequest(
     MacAddress mac,
     long subnetId,
     long[] securityGroupIds,
     ManagedResource resource)
 {
     Mac              = mac;
     SubnetId         = subnetId;
     SecurityGroupIds = securityGroupIds;
     Resource         = resource;
 }
Пример #20
0
        public RegisterNetworkSecurityGroupRequest(
            string name,
            long networkId,
            ManagedResource resource)
        {
            Ensure.NotNull(name, nameof(name));
            Ensure.IsValidId(networkId, nameof(networkId));

            Name      = name;
            NetworkId = networkId;
            Resource  = resource;
        }
Пример #21
0
        public DatabaseCluster(long id, string name, ManagedResource resource, JsonObject properties = null)
        {
            Ensure.IsValidId(id, nameof(id));
            Ensure.NotNullOrEmpty(name, nameof(name));

            Id         = id;
            Name       = name;
            ResourceId = resource.ResourceId;
            ProviderId = resource.ProviderId;
            LocationId = resource.LocationId;
            Properties = properties ?? new JsonObject();
        }
Пример #22
0
        // 1 | aws:vpc1

        public async Task <NetworkInfo> GetAsync(string name)
        {
            if (long.TryParse(name, out var id))
            {
                return(await GetAsync(id));
            }

            var(provider, resourceId) = ResourceName.Parse(name);

            return(await FindAsync(provider, resourceId)
                   ?? throw ResourceError.NotFound(ManagedResource.Network(provider, name)));
        }
Пример #23
0
        public RegisterDatabaseInstanceRequest(
            long databaseId,
            ManagedResource resource,
            int priority        = 1,
            DatabaseFlags flags = DatabaseFlags.Primary)
        {
            Ensure.IsValidId(databaseId, nameof(databaseId));

            DatabaseId = databaseId;
            Resource   = resource;
            Priority   = priority;
            Flags      = flags;
        }
        public RegisterDatabaseClusterRequest(
            string name,
            ManagedResource resource,
            RegisterDatabaseInstanceRequest[] instances,
            RegisterDatabaseEndpointRequest[] endpoints)
        {
            Ensure.NotNullOrEmpty(name, nameof(name));

            Name      = name;
            Resource  = resource;
            Instances = instances;
            Endpoints = endpoints;
        }
Пример #25
0
        public async Task <VolumeInfo> GetAsync(string name)
        {
            Ensure.NotNullOrEmpty(name, nameof(name));

            if (long.TryParse(name, out var id))
            {
                return(await GetAsync(id));
            }

            var(provider, resourceId) = ResourceName.Parse(name);

            return(await FindAsync(provider, resourceId)
                   ?? throw ResourceError.NotFound(ManagedResource.Volume(provider, name)));
        }
Пример #26
0
        public SubnetInfo(
            long id,
            string[] addressBlocks,
            ManagedResource resource)
        {
            Ensure.IsValidId(id);
            Ensure.NotNull(addressBlocks, nameof(addressBlocks));

            Id            = id;
            AddressBlocks = addressBlocks;
            ProviderId    = resource.ProviderId;
            LocationId    = resource.LocationId;
            ResourceId    = resource.ResourceId;
        }
Пример #27
0
        public RegisterBucketRequest(long ownerId, string name, ManagedResource resource)
        {
            Ensure.IsValidId(ownerId, nameof(ownerId));
            Ensure.NotNullOrEmpty(name, nameof(name));

            if (name.Length > 63)
            {
                throw new ArgumentException("Must be 63 characters or fewer", nameof(name));
            }

            Name     = name;
            Resource = resource;
            OwnerId  = ownerId;
        }
Пример #28
0
 public DatabaseInstance(
     long id,
     long clusterId,
     DatabaseFlags flags,
     int priority,
     ManagedResource resource)
 {
     Id         = id;
     Flags      = flags;
     ClusterId  = clusterId;
     Priority   = priority;
     ProviderId = resource.ProviderId;
     LocationId = resource.LocationId;
     ResourceId = resource.ResourceId;
 }
Пример #29
0
        public RegisterImageRequest(
            long ownerId,
            string name,
            ManagedResource resource,
            ImageType type        = ImageType.Machine,
            JsonObject properties = null)
        {
            Ensure.IsValidId(ownerId, nameof(ownerId));
            Ensure.NotNullOrEmpty(name, nameof(name));

            Name       = name;
            OwnerId    = ownerId;
            Resource   = resource;
            Type       = type;
            Properties = properties;
        }
Пример #30
0
        public NetworkAddress(
            long id,
            IPAddress address,
            ManagedResource resource,
            long?hostId             = null,
            long?networkInterfaceId = null)
        {
            Ensure.IsValidId(id);
            Ensure.NotNull(address, nameof(address));

            Id                 = id;
            Address            = address;
            ProviderId         = resource.ProviderId;
            ResourceId         = resource.ResourceId;
            HostId             = hostId;
            NetworkInterfaceId = networkInterfaceId;
        }