示例#1
0
        private static void AddConfigurationServices(IServiceCollection services)
        {
            services.AddSingleton(configuration);
            services.AddSingleton <TeamsConfiguration>(ctx =>
            {
                var t = new TeamsConfiguration();
                configuration.Bind("Teams", t);
                return(t);
            });

            services.AddSingleton <BackupOptions>(ctx =>
            {
                var t = new BackupOptions();
                configuration.Bind("Backup", t);
                return(t);
            });

            services.AddSingleton <MySqlOptions>(ctx =>
            {
                var t = new MySqlOptions();
                configuration.Bind("MySql", t);
                return(t);
            });

            services.AddSingleton <RetentionOptions>(ctx =>
            {
                var t = new RetentionOptions();
                configuration.Bind("Retention", t);
                return(t);
            });

            services.AddSingleton <SlackConfiguration>(ctx =>
            {
                var t = new SlackConfiguration();
                configuration.Bind("Slack", t);
                return(t);
            });

            services.AddSingleton <AzureConfiguration>(ctx =>
            {
                var t = new AzureConfiguration();
                configuration.Bind("Azure", t);
                return(t);
            });

            services.AddSingleton <S3Configuration>(ctx =>
            {
                var t = new S3Configuration();
                configuration.Bind("S3", t);
                return(t);
            });

            services.AddSingleton <PhysicalConfiguration>(ctx =>
            {
                var t = new PhysicalConfiguration();
                configuration.Bind("Physical", t);
                return(t);
            });
        }
        public void DeployLinuxServerS3(string BuildVersion)
        {
            string BuildBaseDir = CommandUtils.CombinePaths(
                BuildPatchToolStagingInfo.GetBuildRootPath(),
                GameName,
                BuildVersion
                );
            string LinuxServerBaseDir = CommandUtils.CombinePaths(BuildBaseDir, "LinuxServer");
            string ServerZipFilePath  = CommandUtils.CombinePaths(BuildBaseDir, "LinuxServer.zip");

            if (CommandUtils.FileExists_NoExceptions(ServerZipFilePath))
            {
                CommandUtils.Log("Skipping creating server zip file {0}, as it already exists.", ServerZipFilePath);
            }
            else
            {
                CommandUtils.Log("Compressing Linux server binaries to {0}", ServerZipFilePath);
                CommandUtils.ZipFiles(ServerZipFilePath, LinuxServerBaseDir, new FileFilter(FileFilterType.Include));
                CommandUtils.Log("Completed compressing Linux server binaries.");
            }

            S3Configuration  S3Config = new S3Configuration(this);
            CloudStorageBase S3       = S3Config.GetConnection();

            string S3Filename = string.Format("LinuxServer-{0}.zip", Changelist);
            bool   bSuccess   = false;
            int    Retries    = 0;
            int    MaxRetries = 5;

            do
            {
                CommandUtils.Log("Uploading server binaries zip file to Amazon S3 bucket {0}.", S3BucketName);
                bSuccess = S3.PostFile(S3BucketName, S3Filename, ServerZipFilePath, "application/zip").bSuccess;
                if (!bSuccess)
                {
                    bool bDoRetry = Retries + 1 < MaxRetries;
                    CommandUtils.LogWarning("Failed to post server binaries to S3 (attempt {0} of {1}). {2}.",
                                            Retries + 1,
                                            MaxRetries,
                                            bDoRetry ? "Sleeping for ten seconds before retrying" : "Not retrying"
                                            );
                    if (bDoRetry)
                    {
                        Thread.Sleep(10000);
                    }
                }
            } while (!bSuccess && Retries++ < MaxRetries);

            if (!bSuccess)
            {
                throw new AutomationException("Could not upload server binaries to S3.");
            }

            CommandUtils.Log("Server binaries uploaded successfully to S3.");
        }
示例#3
0
 private static void StartServer(S3Configuration s3Configuration)
 {
     using (S3Server = new S3Server(s3Configuration))
     {
         S3Server.Start();
         Console.WriteLine("S3Emulator is started");
         Console.WriteLine("Service url : {0}", s3Configuration.ServiceUrl);
         Console.WriteLine("Press <Enter> to stop");
         Console.ReadLine();
     }
 }
示例#4
0
        public S3ObjectModule(S3Configuration configuration, IS3Storage storage, IS3Responder responder)
        {
            this.configuration = configuration;
            this.storage       = storage;
            this.responder     = responder;

            Get["/{bucket}/{key}"]    = x => GetObject(x.bucket, x.key);
            Put["/{bucket}/{key}"]    = x => AddObject(x.bucket, x.key, Request.Body);
            Delete["/{bucket}/{key}"] = x => DeleteObject(x.bucket, x.key);
            Post["/{bucket}"]         = x => CheckDelete(x.bucket);
        }
示例#5
0
        public Bootstrapper(S3Configuration s3Configuration)
        {
            this.s3Configuration = s3Configuration;
            documentStore        = new EmbeddableDocumentStore
            {
                DataDirectory = s3Configuration.DataDirectory,
                RunInMemory   = s3Configuration.RunInMemory
            };

            documentStore.Initialize();
            Raven.Client.Indexes.IndexCreation.CreateIndexes(typeof(S3Object_Search).Assembly, documentStore);
        }
示例#6
0
        public S3Provider(IOptions <S3Configuration> s3Configuration)
        {
            _s3Configuration = s3Configuration.Value;

            var configAmazonS3 = new AmazonS3Config
            {
                UseAccelerateEndpoint = false,
                ServiceURL            = _s3Configuration.Endpoint,
                ForcePathStyle        = true
            };

            _amazonS3 = new AmazonS3Client(_s3Configuration.AccessKey, _s3Configuration.SecretKey, configAmazonS3);
        }
示例#7
0
        private static S3Configuration GetDefaultConfiguration()
        {
            var s3Configuration = new S3Configuration
            {
                ServiceUrl        = "s3.amazonaws.com",
                HostPort          = 8878,
                ProxyPort         = 8877,
                IsProxyEnabled    = true,
                DataDirectory     = "Data",
                MaxBytesPerSecond = ThrottledStream.Infinite
            };

            return(s3Configuration);
        }
示例#8
0
        private static S3Server CreateS3Server()
        {
            var s3Configuration = new S3Configuration
            {
                ServiceUrl        = ServiceUrl,
                HostPort          = HostPort,
                ProxyPort         = ProxyPort,
                IsProxyEnabled    = IsProxyEnabled,
                DataDirectory     = "Data",
                RunInMemory       = true,
                MaxBytesPerSecond = ThrottledStream.Infinite
            };

            var s3Server = new S3Server(s3Configuration);

            return(s3Server);
        }
示例#9
0
 public S3StorageProviderTests(ITestOutputHelper outputHelper) : base(outputHelper)
 {
     _s3Configuration = BindConfiguration <S3Configuration>("S3Configuration");
     outputHelper.WriteLine($"AWS bucket name: {_s3Configuration.BucketName}");
 }
示例#10
0
 public S3Repository(S3Configuration s3Configuration)
 {
     _s3Configuration = s3Configuration;
     _amazonS3Client  = new AmazonS3Client(_s3Configuration.AwsAccessKeyId, _s3Configuration.AwsSecretAccessKey, RegionEndpoint.SAEast1);
 }
示例#11
0
 public S3Server(S3Configuration s3Configuration)
 {
     this.s3Configuration = s3Configuration;
 }